Merge "Reduced some master queries by adding flags to Revision functions."
authorTim Starling <tstarling@wikimedia.org>
Thu, 28 Jun 2012 05:11:04 +0000 (05:11 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 28 Jun 2012 05:11:04 +0000 (05:11 +0000)
663 files changed:
CREDITS
RELEASE-NOTES-1.19 [deleted file]
RELEASE-NOTES-1.20
api.php
api.php5
docs/distributors.txt
docs/export-0.1.xsd
docs/export-0.2.xsd
docs/export-0.3.xsd
docs/export-0.4.xsd
docs/export-0.5.xsd
docs/export-0.6.xsd
docs/export-0.7.xsd [new file with mode: 0644]
docs/export-demo.xml
docs/hooks.txt
extensions/README
img_auth.php
img_auth.php5
includes/Action.php
includes/AjaxDispatcher.php
includes/AjaxResponse.php
includes/Article.php
includes/AuthPlugin.php
includes/AutoLoader.php
includes/Block.php
includes/CategoryPage.php
includes/CategoryViewer.php
includes/ChangesList.php
includes/DefaultSettings.php
includes/DeviceDetection.php [deleted file]
includes/EditPage.php
includes/Exception.php
includes/Export.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/ImageGallery.php
includes/ImagePage.php
includes/Linker.php
includes/LinksUpdate.php
includes/MagicWord.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/Revision.php
includes/RevisionList.php
includes/Setup.php
includes/SiteConfiguration.php
includes/SiteStats.php
includes/Skin.php
includes/SkinLegacy.php
includes/SkinTemplate.php
includes/SpecialPage.php
includes/Title.php
includes/User.php
includes/WebRequest.php
includes/Wiki.php
includes/WikiPage.php
includes/actions/CachedAction.php
includes/actions/HistoryAction.php
includes/actions/RawAction.php
includes/actions/ViewAction.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiComparePages.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiEmailUser.php
includes/api/ApiExpandTemplates.php
includes/api/ApiFileRevert.php
includes/api/ApiFormatXml.php
includes/api/ApiImport.php
includes/api/ApiLogin.php
includes/api/ApiLogout.php
includes/api/ApiMain.php
includes/api/ApiMove.php
includes/api/ApiOptions.php
includes/api/ApiPageSet.php
includes/api/ApiParamInfo.php
includes/api/ApiPatrol.php
includes/api/ApiProtect.php
includes/api/ApiPurge.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryInfo.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryExternalLinks.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryIWBacklinks.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryImages.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLangBacklinks.php
includes/api/ApiQueryLangLinks.php
includes/api/ApiQueryLinks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryProtectedTitles.php
includes/api/ApiQueryQueryPage.php
includes/api/ApiQueryRandom.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySearch.php
includes/api/ApiQueryStashImageInfo.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiQueryWatchlistRaw.php
includes/api/ApiRollback.php
includes/api/ApiTokens.php
includes/api/ApiUnblock.php
includes/api/ApiUndelete.php
includes/api/ApiUpload.php
includes/api/ApiWatch.php
includes/cache/HTMLFileCache.php
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseIbm_db2.php
includes/db/DatabaseMysql.php
includes/db/DatabasePostgres.php
includes/db/IORMRow.php [new file with mode: 0644]
includes/db/IORMTable.php [new file with mode: 0644]
includes/db/ORMIterator.php [new file with mode: 0644]
includes/db/ORMResult.php
includes/db/ORMRow.php
includes/db/ORMTable.php
includes/debug/Debug.php
includes/diff/DifferenceEngine.php
includes/filerepo/FileRepo.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/backend/FileBackend.php
includes/filerepo/backend/FileBackendMultiWrite.php
includes/filerepo/backend/FileBackendStore.php
includes/filerepo/backend/FileOp.php
includes/filerepo/backend/SwiftFileBackend.php
includes/filerepo/backend/TempFSFile.php
includes/filerepo/backend/lockmanager/FSLockManager.php
includes/filerepo/backend/lockmanager/LSLockManager.php
includes/filerepo/backend/lockmanager/LockManager.php
includes/filerepo/backend/lockmanager/LockManagerGroup.php
includes/filerepo/backend/lockmanager/MemcLockManager.php [new file with mode: 0644]
includes/filerepo/file/File.php
includes/filerepo/file/ForeignAPIFile.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/installer/CliInstaller.php
includes/installer/Installer.i18n.php
includes/installer/LocalSettingsGenerator.php
includes/installer/WebInstaller.php
includes/interwiki/Interwiki.php
includes/job/Job.php [new file with mode: 0644]
includes/job/JobQueue.php [deleted file]
includes/json/FormatJson.php
includes/libs/CSSMin.php
includes/logging/LogEventsList.php
includes/mobile/DeviceDetection.php [new file with mode: 0644]
includes/normal/UtfNormalDefines.php
includes/normal/UtfNormalTest2.php
includes/objectcache/BagOStuff.php
includes/objectcache/DBABagOStuff.php
includes/objectcache/MemcachedPeclBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/parser/Parser.php
includes/parser/Preprocessor.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderLanguageDataModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/revisiondelete/RevisionDelete.php
includes/specials/SpecialBlock.php
includes/specials/SpecialCachedPage.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialLog.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialPopularpages.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialShortpages.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialTags.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUnwatchedpages.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWatchlist.php
includes/upload/UploadBase.php
includes/upload/UploadFromChunks.php
includes/upload/UploadFromFile.php
includes/upload/UploadFromStash.php
includes/upload/UploadFromUrl.php
includes/upload/UploadStash.php
index.php5
languages/Language.php
languages/Names.php
languages/classes/LanguageAm.php
languages/classes/LanguageAr.php
languages/classes/LanguageAz.php
languages/classes/LanguageBe.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageBg.php
languages/classes/LanguageBh.php
languages/classes/LanguageBs.php
languages/classes/LanguageCs.php
languages/classes/LanguageCu.php
languages/classes/LanguageCy.php
languages/classes/LanguageDsb.php
languages/classes/LanguageEo.php
languages/classes/LanguageEt.php
languages/classes/LanguageFi.php
languages/classes/LanguageFr.php
languages/classes/LanguageGa.php
languages/classes/LanguageGan.php
languages/classes/LanguageGd.php
languages/classes/LanguageGv.php
languages/classes/LanguageHe.php
languages/classes/LanguageHi.php
languages/classes/LanguageHr.php
languages/classes/LanguageHsb.php
languages/classes/LanguageHu.php
languages/classes/LanguageHy.php
languages/classes/LanguageIu.deps.php [deleted file]
languages/classes/LanguageIu.php
languages/classes/LanguageJa.php
languages/classes/LanguageKaa.php
languages/classes/LanguageKk.deps.php [deleted file]
languages/classes/LanguageKk.php
languages/classes/LanguageKk_cyrl.php
languages/classes/LanguageKm.php
languages/classes/LanguageKsh.php
languages/classes/LanguageKu.deps.php [deleted file]
languages/classes/LanguageKu.php
languages/classes/LanguageKu_ku.php
languages/classes/LanguageLa.php
languages/classes/LanguageLn.php
languages/classes/LanguageLt.php
languages/classes/LanguageLv.php
languages/classes/LanguageMg.php
languages/classes/LanguageMk.php
languages/classes/LanguageMl.php
languages/classes/LanguageMo.php
languages/classes/LanguageMt.php
languages/classes/LanguageMy.php
languages/classes/LanguageNso.php
languages/classes/LanguageOs.php
languages/classes/LanguagePl.php
languages/classes/LanguageQqx.php
languages/classes/LanguageRo.php
languages/classes/LanguageRu.php
languages/classes/LanguageSe.php
languages/classes/LanguageSgs.php
languages/classes/LanguageSh.php
languages/classes/LanguageShi.deps.php [deleted file]
languages/classes/LanguageShi.php
languages/classes/LanguageSk.php
languages/classes/LanguageSl.php
languages/classes/LanguageSma.php
languages/classes/LanguageSr.deps.php [deleted file]
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php
languages/classes/LanguageSr_el.php
languages/classes/LanguageTg.php
languages/classes/LanguageTi.php
languages/classes/LanguageTl.php
languages/classes/LanguageTr.php
languages/classes/LanguageTyv.php
languages/classes/LanguageUk.php
languages/classes/LanguageWa.php
languages/classes/LanguageYue.php
languages/classes/LanguageZh.deps.php [deleted file]
languages/classes/LanguageZh.php
languages/classes/LanguageZh_hans.php
languages/messages/MessagesAce.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.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/MessagesBa.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCkb.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/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFit.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/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGn.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/MessagesHr.php
languages/messages/MessagesHsb.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/MessagesIo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.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/MessagesLmo.php
languages/messages/MessagesLo.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.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/MessagesMy.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNds.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesNo.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPrg.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/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSei.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.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/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.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/MessagesTr.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/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVo.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
load.php
load.php5
maintenance/attachLatest.php
maintenance/benchmarks/bench_utf8_title_check.php [new file with mode: 0644]
maintenance/changePassword.php
maintenance/checkAutoLoader.php
maintenance/checkBadRedirects.php
maintenance/checkImages.php
maintenance/checkSyntax.php
maintenance/checkUsernames.php
maintenance/cleanupSpam.php
maintenance/convertLinks.php
maintenance/convertUserOptions.php
maintenance/copyFileBackend.php
maintenance/createAndPromote.php
maintenance/deleteArchivedFiles.inc
maintenance/deleteArchivedFiles.php
maintenance/deleteArchivedRevisions.php
maintenance/doMaintenance.php
maintenance/formatInstallDoc.php
maintenance/importSiteScripts.php
maintenance/install.php
maintenance/language/generateCollationData.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/locking/LockServerDaemon.php
maintenance/mwdocgen.php
maintenance/nextJobDB.php
maintenance/populateImageSha1.php
maintenance/populateRevisionSha1.php
maintenance/proxy_check.php
maintenance/purgeParserCache.php
maintenance/purgeStaleMemcachedText.php
maintenance/refreshLinks.php
maintenance/runJobs.php
maintenance/storage/checkStorage.php
maintenance/term/MWTerm.php
mw-config/index.php
mw-config/overrides.php [new file with mode: 0644]
opensearch_desc.php
opensearch_desc.php5
redirect.php
redirect.php5
resources/Resources.php
resources/jquery.effects/jquery.effects.blind.js
resources/jquery.effects/jquery.effects.bounce.js
resources/jquery.effects/jquery.effects.clip.js
resources/jquery.effects/jquery.effects.core.js
resources/jquery.effects/jquery.effects.drop.js
resources/jquery.effects/jquery.effects.explode.js
resources/jquery.effects/jquery.effects.fade.js
resources/jquery.effects/jquery.effects.fold.js
resources/jquery.effects/jquery.effects.highlight.js
resources/jquery.effects/jquery.effects.pulsate.js
resources/jquery.effects/jquery.effects.scale.js
resources/jquery.effects/jquery.effects.shake.js
resources/jquery.effects/jquery.effects.slide.js
resources/jquery.effects/jquery.effects.transfer.js
resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js
resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js
resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js [new file with mode: 0644]
resources/jquery.ui/jquery.ui.accordion.js
resources/jquery.ui/jquery.ui.autocomplete.js
resources/jquery.ui/jquery.ui.button.js
resources/jquery.ui/jquery.ui.core.js
resources/jquery.ui/jquery.ui.datepicker.js
resources/jquery.ui/jquery.ui.dialog.js
resources/jquery.ui/jquery.ui.draggable.js
resources/jquery.ui/jquery.ui.droppable.js
resources/jquery.ui/jquery.ui.mouse.js
resources/jquery.ui/jquery.ui.position.js
resources/jquery.ui/jquery.ui.progressbar.js
resources/jquery.ui/jquery.ui.resizable.js
resources/jquery.ui/jquery.ui.selectable.js
resources/jquery.ui/jquery.ui.slider.js
resources/jquery.ui/jquery.ui.sortable.js
resources/jquery.ui/jquery.ui.tabs.js
resources/jquery.ui/jquery.ui.widget.js
resources/jquery.ui/themes/default/jquery.ui.accordion.css
resources/jquery.ui/themes/default/jquery.ui.autocomplete.css
resources/jquery.ui/themes/default/jquery.ui.button.css
resources/jquery.ui/themes/default/jquery.ui.core.css
resources/jquery.ui/themes/default/jquery.ui.datepicker.css
resources/jquery.ui/themes/default/jquery.ui.dialog.css
resources/jquery.ui/themes/default/jquery.ui.progressbar.css
resources/jquery.ui/themes/default/jquery.ui.resizable.css
resources/jquery.ui/themes/default/jquery.ui.selectable.css
resources/jquery.ui/themes/default/jquery.ui.slider.css
resources/jquery.ui/themes/default/jquery.ui.tabs.css
resources/jquery.ui/themes/default/jquery.ui.theme.css
resources/jquery/jquery.byteLimit.js
resources/jquery/jquery.qunit.completenessTest.js
resources/jquery/jquery.qunit.css
resources/jquery/jquery.qunit.js
resources/mediawiki.action/mediawiki.action.watch.ajax.js [deleted file]
resources/mediawiki.api/mediawiki.api.js
resources/mediawiki.language/languages/ar.js
resources/mediawiki.language/languages/bs.js
resources/mediawiki.language/languages/dsb.js
resources/mediawiki.language/languages/fi.js [new file with mode: 0644]
resources/mediawiki.language/languages/ga.js
resources/mediawiki.language/languages/he.js
resources/mediawiki.language/languages/hsb.js
resources/mediawiki.language/languages/hu.js [new file with mode: 0644]
resources/mediawiki.language/languages/hy.js
resources/mediawiki.language/languages/la.js [new file with mode: 0644]
resources/mediawiki.language/languages/nl.js [deleted file]
resources/mediawiki.language/languages/os.js [new file with mode: 0644]
resources/mediawiki.language/languages/pt-br.js [deleted file]
resources/mediawiki.language/languages/pt.js [deleted file]
resources/mediawiki.language/languages/ru.js
resources/mediawiki.language/languages/sl.js
resources/mediawiki.language/languages/uk.js
resources/mediawiki.language/mediawiki.language.init.js [new file with mode: 0644]
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki.page/mediawiki.page.watch.ajax.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.search.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.util.js
skins/Chick.deps.php [deleted file]
skins/Chick.php
skins/CologneBlue.php
skins/Modern.deps.php [deleted file]
skins/Modern.php
skins/MonoBook.deps.php [deleted file]
skins/MonoBook.php
skins/MySkin.deps.php [deleted file]
skins/MySkin.php
skins/Nostalgia.php
skins/Simple.deps.php [deleted file]
skins/Simple.php
skins/Vector.deps.php [deleted file]
skins/Vector.php
tests/TestsAutoLoader.php
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/DeviceDetectionTest.php [deleted file]
tests/phpunit/includes/GlobalFunctions/wfGetCallerTest.php [new file with mode: 0644]
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/WebRequestTest.php
tests/phpunit/includes/WikiPageTest.php
tests/phpunit/includes/api/ApiBlockTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/db/ORMRowTest.php [new file with mode: 0644]
tests/phpunit/includes/db/TestORMRowTest.php [new file with mode: 0644]
tests/phpunit/includes/debug/MWDebugTest.php
tests/phpunit/includes/filerepo/FileBackendTest.php
tests/phpunit/includes/libs/CSSMinTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/JavaScriptMinifierTest.php
tests/phpunit/includes/mobile/DeviceDetectionTest.php [new file with mode: 0644]
tests/phpunit/includes/parser/ParserMethodsTest.php [new file with mode: 0644]
tests/phpunit/includes/upload/UploadFromUrlTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/backupPrefetchTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/phpunit/maintenance/fetchTextTest.php
tests/phpunit/maintenance/getSlaveServerTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js [new file with mode: 0644]
thumb.php
thumb.php5
thumb_handler.php
thumb_handler.php5

diff --git a/CREDITS b/CREDITS
index dcd4a43..fd86da8 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -109,6 +109,7 @@ following names for their contribution to the product.
 * David Baumgarten
 * Denny Vrandecic
 * Edward Z. Yang
+* Elvis Stansvik
 * Erwin Dokter
 * FunPika
 * fomafix
@@ -174,6 +175,7 @@ following names for their contribution to the product.
 * rgcjonas
 * Robert Treat
 * RockMFR
+* Russell Blau
 * Rusty Burchfield
 * Salvatore Ingala
 * Scott Colcord
diff --git a/RELEASE-NOTES-1.19 b/RELEASE-NOTES-1.19
deleted file mode 100644 (file)
index 6c7fa6d..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-= MediaWiki release notes =
-
-Security reminder: MediaWiki does not require PHP's register_globals
-setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
-
-== MediaWiki 1.19 ==
-
-MediaWiki 1.19 is a large release that contains many new features and bug
-fixes. This is a summary of the major changes of interest to users.
-You can consult the RELEASE-NOTES-1.19 file for the full list of changes in
-this version.
-
-Our thanks go to everyone who helped to improve MediaWiki by testing the beta
-release and submitting bug reports.
-
-=== Changes since 1.19 beta 2 ===
-* Special:Watchlist no longer sets links to feed when the user is anonymous.
-* (bug 35961) Hash comparison should always be strict.
-* Fix broken email confirmation expiration caused by MWCryptRand changes.
-* (bug 35671) PHP Notice: Undefined index: gettoken in includes/api/ApiMain.php
-  on line 598.
-* (bug 36042) 'show' causes a fatal in blocks API.
-
-=== Changes since 1.19 beta 1 ===
-* (bug 35014) Including a special page no longer sets the page's title to the
-  included page
-* (bug 35019) Edit summaries are no longer transformed in notification e-mails
-* (bug 35152) Help message for e-mail is shown again in user preferences
-* (bug 34887) $3 and $4 parameters are now substituted correctly in message
-  "movepage-moved"
-* (bug 34841) Edit links are no longer displayed when display old page versions
-* (bug 34889) User name should be normalized on Special:Contributions
-* (bug 35051) If heading has a trailing space after == then its name is not 
-  preloaded into edit summary on section edit
-* (bug 31417) New ID mw-content-text around the actual page text, without categories,
-  contentSub, ... The same div often also contains the class mw-content-ltr/rtl.
-* (bug 35303) Proxy and DNS blacklist blocking works again
-* (bug 22555) Remove or skip strip markers from tag hooks like &lt;nowiki&gt; in 
-  core parser functions which operate on strings, such as padleft.
-* (bug 18295) Don't expose strip markers when a tag appears inside a link 
-  inside a heading.
-* (bug 34212) ApiBlock/ApiUnblock allow action to take place without a token
-  parameter present.
-* (bug 34907) Fixed exposure of tokens through load.php that could have facilitated
-  CSRF attacks.
-* (bug 35317) CSRF in Special:Upload.
-
-=== Configuration changes in 1.19 ===
-* Removed SkinTemplateSetupPageCss hook; use BeforePageDisplay instead.
-* (bug 27132) movefile right granted by default to registered users.
-* Default cookie lifetime ($wgCookieExpiration) is increased to 180 days.
-* (bug 31204) Removed old user.user_options.
-* $wgMaxImageArea now applies to jpeg files if they are not scaled with
-  ImageMagick.
-* Introduced $wgQueryPageDefaultLimit (defaults to 50) for the number of
-  items to show by default on query pages (special pages such as Whatlinkshere).
-* (bug 32470) Increase the length of ug_group.
-* (bug 32239) Removed $wgEnableTooltipsAndAccesskeys.
-* Removed $wgVectorShowVariantName.
-* Removed $wgExtensionAliasesFiles. Use $wgExtensionMessagesFiles.
-* Removed $wgResourceLoaderInlinePrivateModules , now always enabled.
-
-=== New features in 1.19 ===
-* (bug 19838) Add ability to get all interwiki prefixes also if the interwiki
-  cache is used.
-* $wgDnsBlacklistUrls now accepts an array with url and key as the
-  elements to work with DNSBLs that require keys, such as
-  Project Honeypot.
-* (bug 30022) Add support for custom loadScript sources to ResourceLoader.
-* (bug 19052) Unicode space separator characters (Zs) now terminates external
-  links and images links.
-* (bug 30160) Add public method to mw.loader to get module names from registry.
-* (bug 15558) Parameters to special pages included in wikitext can now be passed
-  as with templates.
-* Installer now issues a warning if mod_security is present.
-* (bug 29455) Add support for a filter callback function in jQuery byteLimit
-  plugin.
-* Added two new GetLocalURL hooks to better serve extensions working on a
-  limited type of titles.
-* Added a --no-updates flag to importDump.php that skips updating the links
-  tables.
-* Most presentational html attributes like valign are now converted to inline
-  css style rules. These attributes were removed from html5 and so we clean
-  them up when $wgHtml5 is enabled. This can be disabled using
-  $wgCleanupPresentationalAttributes.
-* Magic words (time and number-formatting ones, plus DIRECTIONMARK, but not
-  NAMESPACE) now depend on the page content language instead of the site
-  language. In theory this sets the right magic words in system messages,
-  although they are not used there.
-* (bug 30451) Add page_props to RefreshLinks::deleteLinksFromNonexistent.
-* (bug 30450) Clear page_props table on page deletion.
-* Hook added to check for exempt from account creation throttle.
-* (bug 30344) Add configuration variable for setting custom priorities when
-  generating sitemaps.
-* (bug 96170) Add array support for space-separated list attributes (like
-  'class') in the Html helper class.
-* (bug 26470) Add checkered background image on hover on files pages.
-* (bug 30774) mediawiki.html: Add support for numbers and booleans in the
-  attribute values and element contents.
-* Conversion script between Tifinagh and Latin for the Tachelhit language.
-* (bug 16755) Add options 'noreplace' and 'noerror' to {{DEFAULTSORT:...}}
-  to stop it from replace an already existing default sort, and suppress error.
-* (bug 18578) Rewrote revision delete related messages to allow better
-  localisation.
-* (bug 30364) LanguageConverter now depends on the page content language
-  instead of the wiki content language.
-* Jump links will now be usable in CSS-capable browsers instead of only
-  in outdated text browsers.
-* New common*.css files usable by skins instead of having to copy piles
-  of generic styles from MonoBook or Vector's css.
-* Some deprecated presentational html attributes will now be automatically
-  converted to css.
-* (bug 31297) Add support for namespaces in Special:RecentChanges subpage filter
-  syntax.
-* The default user signature now contains a talk link in addition to the user link.
-* (bug 25306) Add link of old page title to MediaWiki:Delete_and_move_reason.
-* Added hook BitmapHandlerCheckImageArea.
-* (bug 30062) Add $wgDBprefix option to cli installer.
-* getUserPermissionsErrors and getUserPermissionsErrorsExpensive hooks are now
-  also called when checking for 'read' permission.
-* Introduce $wgEnableSearchContributorsByIP which controls whether searching
-  for an IP address redirects to the contributions list for that IP.
-* (bug 8859) Database::update should take array of tables too.
-* (bug 19698) Add "Inverse namespaces" option to Special:Contributions.
-* (bug 24037) Add byte length of revision to Special:Contributions.
-* (bug 1672) Added $wgDisableUploadScriptChecks to allow uploading of files
-  containing HTML or JS. DISABLING THESE CHECKS IS VERY DANGEROUS.
-* New path mappings can be added using the WebRequestPathInfoRouter hook
-  and adding paths to the PathRouter.
-* (bug 32666) Special:ActiveUsers now allows a subpage to be used as value for the
-  "target" query parameter (eg. Special:ActiveUsers/Username).
-* New JavaScript variable wgPageContentLanguage.
-* Added new debugging toolbar, enabled with $wgDebugToolbar.
-* Differences in the history page now uses slightly better colors for people
-  perceiving colors differently.
-* (bug 32879) Upgrade jQuery to 1.7.1.
-* jQuery UI upgraded to 1.8.17.
-* Extensions can use the 'Language::getMessagesFileName' hook to define new
-  languages using messages files outside of core.
-* (bug 32512) Add 'Associated namespace' checkbox to Special:Contributions.
-* Added $wgSend404Code, true by default, which can be set to false to send a 
-  200 status code instead of 404 for nonexistent articles.
-* (bug 33447) Link to the broken image tracking category from Special:Wantedfiles.
-* (bug 27724) Add timestamp to job queue.
-* (bug 30339) Implement SpecialPage for running javascript tests. Disabled by default, due to
-  tests potentially being harmful, not to be run on a production wiki.
-  Enable by setting $wgEnableJavaScriptTest to true.
-* Extensions can use the RequestContextCreateSkin hook to override what skin is
-  loaded in some contexts.
-* (bug 33456) Show $wgQueryCacheLimit on cached query pages.
-* (bug 10574) Add an option to allow all pages to be exported by Special:Export.
-* mediawiki.js Message object constructor is now publicly available as mw.Message.
-* (bug 29309) Allow CSS class per tooltip (tipsy).
-* (bug 33565) Add accesskey/tooltip to submit buttons on Special:EditWatchlist.
-* (bug 17959) Inline rendering/thumbnailing for Gimp XCF images.
-* (bug 27775) Namespace has it's own XML tag in the XML dump file.
-* (bug 30513) Redirect tag is now resolved in XML dump file.
-* sha1 xml tag added to XML dump file.
-* (bug 33646) Badtitle error page now emits a 400 HTTP status.
-* Special:MovePage now has a dropdown menu for namespaces.
-* (bug 34420) Special:Version now shows git HEAD sha1 when available.
-* (bug 33952) Refactor mw.toolbar to allow dynamic additions at any time.
-
-=== Bug fixes in 1.19 ===
-* $wgUploadNavigationUrl should be used for file redlinks if.
-  $wgUploadMissingFileUrl is not set. The first was used for this
-  until the second was introduced in 1.17.
-* BREAKING CHANGE:  Style rules for wikitable are now more specific and prevent
-  inheritance to nested tables which caused various issues (bug 30485 and bug
-  33434). If your wiki has overriden rules for ".wikitable", please revise them and
-  adjust where neccecary. For comparison, use the "table.wikitable" section in
-  skins/common/shared.css as base.
-* $wgUploadNavigationUrl is now used for file redlinks if
-  $wgUploadMissingFileUrl is not set. The former was used for this until the
-  second was introduced in 1.17.
-* (bug 27894) Move 'editondblclick' event listener down from body to
-  div#bodyContent.
-* (bug 30172) The check for posix_isatty() in maintenance scripts did not detect
-  when the function exists but is disabled. Introduced
-  Maintenance::posix_isatty().
-* (bug 30264) Changed installer-generated LocalSettings.php to use
-  require_once() instead require() for included extensions.
-* Do not convert text in the user interface language to another script.
-* (bug 26283) Previewing user JS/CSS pages didn't load other user JS/CSS pages.
-* (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
-  warnings/notices to be thrown.
-* (bug 30335) Fix for HTMLForms using GET that were breaking when non-friendly
-  URLs are used.
-* (bug 28649) Preventing half truncated multi-byte unicode characters when
-  truncating log comments.
-* Show --batch-size option in help of maintenance scripts that support it.
-* (bug 4381) Magic quotes cleaning was not comprehensive, key strings were not
-  unescaped.
-* (bug 23057) Importers no longer can 'edit' or 'create' a fully-protected page by
-  importing a new revision into it.
-* Allow moving the associated talk pages of subpages even if the base page
-  has no subpage.
-* Per page edit-notices now work in namespaces without subpages enabled.
-* (bug 31081) $wgEnotifUseJobQ is no longer unconditionally enqueueing jobs.
-* (bug 30202) File names are now restricted on upload to 240 bytes, because of
-  restrictions on some of the database fields.
-* Timezones are now recognised in user preferences when offset is different
-  due to DST.
-* (bug 31692) "summary" parameter now also works when undoing revisions.
-* (bug 18823) "move succeeded" text displayed bluelinks even when redirect was
-  suppressed.
-* (bug 19186) Special:UserLogin's title on Special:SpecialPages now says
-  "create account" when the user cannot create an account.
-* (bug 31818) 'usercreated' message now supports GENDER.
-* (bug 32022) Our phpunit.php script can now be executed from another directory.
-* (bug 26020) Setting $wgEmailConfirmToEdit to true no longer removes diffs.
-  from recent changes feeds.
-* (bug 30232) add current time to message wlnote on Special:Watchlist.
-* (bug 29110) $wgFeedDiffCutoff did not affect new pages.
-* (bug 32168) Add wfRemoveDotSegments for use in wfExpandUrl.
-* (bug 32358) Do not display "No higher resolution available" for dimensionless
-  files (like audio files).
-* (bug 32168) Add wfAssembleUrl for use in wfExpandUrl.
-* (bug 32168) fixed - wfExpandUrl expands dot segments now.
-* (bug 31535) Upload comments now truncated properly, and don't have brackets.
-* (bug 32086) Special:PermanentLink now show an error message when no subpage
-  was specified.
-* (bug 30368) Special:Newpages now shows the new page name for moved pages.
-* (bug 1697) The way to search blocked usernames in block log should be clearer.
-* (bug 29747) eAccelerator shared memory caching has been removed since it is
-  now disabled by default and is buggy. APC, XCache and WinCache are not affected.
-* Installer now refuses to install if php was not compiled with Ctype support.
-* (bug 29475) Remove "trackback" feature entirely from core.
-* (bug 32665) Special:BlockList prefills the username in the input field if
-  using the Special:BlockList/username URL.
-* (bug 27721) Make JavaScript variables wgSeparatorTransformTable and
-  wgDigitTransformTable depend on page content language so the sort script
-  sorts correctly more often.
-* (bug 32230) Expose wgRedirectedFrom in JavaScript.
-* (bug 31212) History tab not collapsed when the screen is narrow.
-* (bug 15521) Use new section summary when the action of adding a new section
-  also happens to create the page.
-* (bug 32960) Remove EmailAuthenticationTimestamp from database when a
-  email address is removed.
-* (bug 32414) Empty page get a empty bytes attribute in Export/Dump.
-* (bug 33101) Viewing a User or User talk of username resembling IP ending
-  with .xxx causes Internal error.
-* Warning about undefined index in certain situations when $wgLogRestrictions
-  causes the first log type requested to be removed but not the others.
-* Use separate message ('prefixindex-namespace') for title of
-  Special:PrefixIndex rather then re-using Special:AllPages's allinnamespace.
-* (bug 33156) Special:Block now allows you to confirm you want to block yourself
-  when using non-normalized username.
-* (bug 33246) News icon shown for news:// URLs but not for news: URLs.
-* (bug 33305) Make mw.util.addCSS resistant to IE's @font-face bug by setting
-  cssText after DOM insertion.
-* (bug 30711) When adding a new section to a page with section=new, the text is
-  now always added to the current version of the page.
-* (bug 31719) Fix uploads of SVGs exported by Adobe Illustrator by expanding 
-  XML entities correctly.
-* (bug 30914) Embeddable ResourceLoader modules (user.options, user.tokens)
-  should be loaded in <head> for proper dependency resolution.
-* (bug 32702) Removed method Skin::makeGlobalVariablesScript() has been readded
-  for backward compatibility.
-* (bug 31469) Make sure tracking category messages expand variables like
-  {{NAMESPACE}} relative to correct title.
-* (bug 33454) ISO-8601 week-based year number (format character 'o') is now
-  calculated correctly with respect to timezone.
-* (bug 32219) InstantCommons now fetches content from Wikimedia Commons using
-  HTTPS when the local wiki is served over HTTPS.
-* (bug 33525) clearTagHooks doesn't clear function hooks.
-* (bug 33523) Function tag hooks don't appear on Special:Version.
-* Files with IPTC blocks we can't read no longer prevent extraction of exif
-  or other metadata.
-* (bug 33587) Remove action "historysubmit" from history pages.
-* (bug 25800) mw.config wgAction should contain the actually performed action instead
-  of whatever the query value contains.
-* (bug 4438) Add CSS hook for current WikiPage action.
-* (bug 33703) Common border-bottom color for <abbr> should inherit default (text) color.
-* (bug 33819) Display file sizes in appropriate units.
-* (bug 32948) {{REVISIONID}} and related variables are no longer blank after doing
-  a null edit.
-* (bug 33880) $wgUsersNotifiedOnAllChanges should not send e-mail to user who made
-  the edit.
-* (bug 33902) Decoding %2B with mw.Uri.decode results in ' ' instead of +.
-* (bug 33762) QueryPage-based special pages no longer misses *-summary message.
-* Other sizes links are no longer generated for wikis without a 404 thumbnail handler.
-* (bug 29454) Enforce byteLimit for page title input on Special:MovePage.
-* (bug 34114) CSSMin::remap() doesn't respect its $embed parameter.
-* Special:Contributions/newbies now shows the contributions for the user "newbies".
-  New user contributions are obtained using the form or using ?contribs=newbie in URL.
-* It is now possible to delete images that have no corresponding description pages.
-* (bug 33165) GlobalFunctions.php line 1312: Call to a member function
-  getText() on a non-object.
-* (bug 31676) Group dynamically inserted CSS into a single <style> tag, to work
-  around a bug where not all styles were applied in Internet Explorer.
-* (bug 28936, bug 5280) Broken or invalid titles can't be removed from watchlist.
-* (bug 34600) Older skins using useHeadElement=false were broken in 1.18.
-* (bug 34604) [mw.config] wgActionPaths should be an object instead of a numeral
-  array.* (bug 12262) Indents and lists are now aligned
-* (bug 29753) mw.util.tooltipAccessKeyPrefix should be alt-shift for Chrome
-   on Windows
-* (bug 25095) Special:Categories should also include the first relevant item
-   when "from" is filled.
-* (bug 34972) An error occurred while changing your watchlist settings for 
-  [[Special:WhatLinksHere/Example]]
-
-=== API changes in 1.19 ===
-* Made action=edit less likely to return "unknownerror", by returning the actual error
-  message (which may have come from a hook call or similar).
-* (bug 19838) siprop=interwikimap can now use the interwiki cache.
-* (bug 29748) Add API search prefix support.
-* (bug 29684) Set forgotten parameter types in ApiQueryIWLinks.
-* (bug 29685) do not output NULL parentid with list=deletedrevs&drprop=parentid.
-* siprop=interwikimap and siprop=languages can use silanguagecode to have
-  a best effort language name translation. Use CLDR extension for best result.
-* (bug 30230) action=expandtemplates should not silently override invalid title
-  inputs.
-* (bug 18634) Create API to fetch MediaWiki's language fallback tree structure.
-* (bug 26885) Allow show/hide of account blocks, temporary blocks and single IP
-  address blocks for list=blocks.
-* (bug 30591) Add support to only return keys in ApiAllMessages.
-* The API now respects $wgShowHostnames and won't share the hostname in
-  severedby if it's set to false.
-* wlexcludeuser parameter added to ApiFeedWatchlist.
-* (bug 7304) Links on redirect pages no longer cause the redirect page to show
-  up as a redirect to the linked page on Special:Whatlinkshere.
-* (bug 32609) API: Move captchaid/captchaword of action=edit from core
-  to Captcha extension(s).
-* Added 'APIGetDescription' hook.
-* (bug 32688) Paraminfo for parameter "generator" of the query module shows too
-  many types.
-* (bug 32415) Empty page get no size attribute in API output.
-* (bug 31759) Undefined property notice in querypages API.
-* (bug 32495) API should allow purge by pageids.
-* (bug 33147) API examples should explain what they do.
-* (bug 33482) Api incorrectly calls ApiBase::parseMultiValue if allowed
-  values is given as an array.
-* (bug 32948) {{REVISIONID}} and related variables are no longer blank after
-  calling action=purge&forcelinkupdate.
-* (bug 34377) action=watch now parses messages using the correct title instead
-  of "API".
-* (bug 35036) WikiLove messages were not automatically updated in JavaScript
-  after having been changed on-wiki due to a bug in core
-
-=== Languages updated in 1.19 ===
-
-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.
-
-* Canadian English (en-ca) (new).
-* Norwegian (bokmål) (nb) (renamed from no).
-* Uighur (Latin) (ug-latn) was incorrectly marked as right-to-left language.
-* (bug 30217) Make pt-br a fallback of pt.
-* (bug 31193) Set fallback language of Assamese from Bengali to English.
-* Update date format for dsb and hsb: month names need the genitive.
-* (bug 28643) Serbian variant conversion improvements (Nikola Smolenski).
-* (bug 29405, bug 30809) Lower diacritics are invisible in titles in Indic
-  languages Assamese, Bengali, Hindi, Malyalam and Odiya.
-* (bug 32826) Titles in indic languages are partially cut.
-* (bug 33367) Gendered namespaces for Czech.
-* (bug 33014) Language::formatSize()/formatBitrate() should be able to deal
-  with larger numbers (tera-yotta).
-
-=== Other changes in 1.19 ===
-* BREAKING CHANGE: Legacy global array 'ta' and global function 'akeytt' have
-  been removed from wikibits.js.
-* jquery.mwPrototypes module was renamed to jquery.mwExtension.
-* The maintenance script populateSha1.php was renamed to the more concise
-  populateImageSha1.php.
-* The Client-IP header is no longer checked for when trying to resolve a client's
-  real IP address.
-* (bug 22096) Although IE5.x and below was already unsupported officially, stylesheets
-  existing exclusively for IE5.0 and IE5.5 have now been removed (which were in skins
-  'chick' and 'monobook').
-* The constructor for CategoryView has changed, the second parameter is now a
-  Context source and is required.
-* The Title::escape{Local,Full,Canonical}URL methods are deprecated, please use
-  proper html building methods to escape the normal get{...}URL methods instead.
-* The $variant arguments in the Title::get{Local,Full,Link,Canonical}URL methods
-  have been replaced with a secondary query argument.
-* The $variant argument in the hooks for the Title::get{Local,Full,Link,Canonical}URL
-  methods have been removed, the variant is now part of the $query argument.
-* Removed Title::isValidCssJsSubpage(), deprecated since 1.17 in favor of
-  using Title::isCssJsSubpage() or checking Title::isWrongCaseCssJsPage().
-* Support for the deprecated hook MagicWordMagicWords was removed.
-* The Xml::namespaceSelector method has been deprecated, please use
-  Html::namespaceSelector instead (note that the parameters have changed also).
-* (bug 33746) Preload popular ResourceLoader modules (mediawiki.util) as stop-gap
-  for scripts missing dependencies.
-  New configuration variable $wgPreloadJavaScriptMwUtil has been introduced for this
-  (set to false by default for new installations). Set to true if your wiki has a large
-  amount of user/site scripts that are lacking dependency information. In the short to
-  medium term these user/site scripts should be fixed by adding the used modules to the
-  dependencies in the module registry and/or wrapping them in a callback to mw.loader.using.
-
-== Compatibility ==
-
-MediaWiki 1.19 requires PHP 5.2.3. PHP 4 is no longer supported.
-
-MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for IBM
-DB2 and Oracle.
-
-The supported versions are:
-
-* MySQL 5.0.2 or later
-* PostgreSQL 8.3 or later
-* SQLite 3.3.7 or later
-* Oracle 9.0.1 or later
-
-== Upgrading ==
-
-1.19 has several database changes since 1.18, and will not work without schema
-updates.
-
-As of 1.19 several JavaScript interfaces that were deprecated or superseeded in
-MediaWiki 1.17, MediaWiki 1.16 or even earlier have been removed. They are
-listed at the top of the "Other changes" list as a "BREAKING CHANGE".
-
-If upgrading from before 1.11, and you are using a wiki as a commons
-repository, make sure that it is updated as well. Otherwise, errors may arise
-due to database schema changes.
-
-If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
-new database fields are filled with data.
-
-If you are upgrading from MediaWiki 1.4.x or earlier, some major database
-changes are made, and there is a slightly higher chance that things could
-break. Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions.
-
-For notes on 1.18.x and older releases, see HISTORY.
-
-== Online documentation ==
-
-Documentation for both end-users and site administrators is available on
-MediaWiki.org, and is covered under the GNU Free Documentation License (except
-for pages that explicitly state that their contents are in the public domain):
-
-       https://www.mediawiki.org/wiki/Documentation
-
-== Mailing list ==
-
-A mailing list is available for MediaWiki user support and discussion:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-
-A low-traffic announcements-only list is also available:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
-
-It's highly recommended that you sign up for one of these lists if you're
-going to run a public MediaWiki, so you can be notified of security fixes.
-
-== IRC help ==
-
-There's usually someone online in #mediawiki on irc.freenode.net.
index 00a2625..a838a37 100644 (file)
@@ -16,7 +16,7 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 
 === Configuration changes in 1.20 ===
 * $wgGitRepositoryViewers defines a mapping from Git remote repository to the
-  Gitweb instance URL used in Special:Version
+  Gitweb instance URL used in Special:Version.
 * `$wgUsePathInfo = true;` is no longer needed to make $wgArticlePath work on servers
   using like nginx, lighttpd, and apache over fastcgi. MediaWiki now always extracts
   path info from REQUEST_URI if it's available.
@@ -36,16 +36,16 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * Introduce a cryptographic random number generator source api for use when
   generating various tokens.
 * (bug 30963) Option on Special:Prefixindex and Special:Allpages to not show redirects.
-* (bug 18062) new message when edit or create the local page of a shared file.
+* (bug 18062) New message when edit or create the local page of a shared file.
 * (bug 22870) Separate interface message when creating a page.
 * (bug 17615) nosummary option should be reassigned on preview/captcha.
-* (bug 34355) add a variable and parser function for the namespace number.
+* (bug 34355) Add a variable and parser function for the namespace number.
 * (bug 35649) Special:Version now shows hashes of extensions checked out from git.
 * (bug 35728) Git revisions are now linked on Special:Version.
 * "Show Changes" on default messages shows now diff against default message text
 * (bug 23006) create #speciale parser function.
 * generateSitemap can now optionally skip redirect pages.
-* (bug 27757) new API command just for retrieving tokens (not page-based)
+* (bug 27757) New API command just for retrieving tokens (not page-based).
 * Added GitViewers hook for extensions using external git repositories to have a web-based
   repository viewer linked to from Special:Version.
 * Memcached debug logs can now be sent to their own file logs by setting
@@ -53,6 +53,8 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 35685) api.php URL and other entry point URLs are now listed on
   Special:Version
 * Edit notices can now be translated.
+* (bug 35680) jQuery upgraded to 1.7.2.
+* jQuery UI upgraded to 1.8.21.
 * (bug 22887) Add warning and tracking category for preprocessor errors
 * (bug 31704) Allow selection of associated namespace on the watchlist
 * (bug 5445) Now remove autoblocks when a user is unblocked.
@@ -63,6 +65,17 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
   Arguments signature has changed. First arguments is now an options object of which
   'config' can be a property. Previously 'config' itself was the first and only argument.
 * New getCreator and getOldestRevision methods added to WikiPage class
+* (bug 4220) the XML dump format schema now have unique identity constraints
+  for page and revision identifiers. Patch by Elvis Stansvik.
+* (bug 35705) QUnit upgraded from v1.2.0 to v1.8.0.
+* cleanupSpam.php now can delete spam pages if --delete was specified instead of blanking
+  them.
+* Added new hook ChangePasswordForm to allow adding of additional fields in Special:ChangePassword
+* Added new function getDomain to AuthPlugin for getting a user's domain
+* (bug 23427) New magic word {{PAGEID}} which gives the current page ID.
+  Will be null on previewing a page being created.
+* (bug 37627) UserNotLoggedIn() exception to show a generic error page whenever
+  a user is not logged in.
 
 === Bug fixes in 1.20 ===
 * (bug 30245) Use the correct way to construct a log page title.
@@ -96,9 +109,6 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * Removed white border around thumbnails in galleries.
 * (bug 31236) "Next" and "Previous" buttons are shown incorrectly in
   an RTL environment.
-* (bug 35680) jQuery upgraded to 1.7.2.
-* jQuery UI upgraded to 1.8.19.
-* (bug 35705) QUnit upgraded from 1.2.0 to 1.5.0
 * (bug 35749) Updated maintenance/checkSyntax.php to use Git instead of
   Subversion when invoked with the --modified option.
 * (bug 35069) On history pages, the " . . " separator after the number of
@@ -111,7 +121,13 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 32604) Some messages needs escaping of wikitext inside username
 * (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with wfCgiToArray.
 * (bug 25946) The message on the top of Special:RecentChanges is now displayed
-  in user language instead of content language
+  in user language instead of content language.
+* (bug 35264) Wrong type used for <ns> in export.xsd
+* (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
+  who don't have access to /tmp can specify an alternative.
+* (bug 27283) SqlBagOStuff breaks PostgreSQL transactions.
+* (bug 35727) mw.Api ajax() should put token parameter last.
+* (bug 37708) mw.Uri.clone() should make a deep copy.
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
@@ -119,14 +135,17 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
   the format parameter.
 * (bug 32384) Allow descending order for list=watchlistraw.
 * (bug 31883) Limit of bkusers of list=blocks and titles of action=query is not documented in API help.
-* (bug 32492) API now allows editing using pageid
-* (bug 32497) API now allows changing of protection level using pageid
-* (bug 32498) API now allows comparing pages using pageids
-* (bug 30975) API import of pages with invalid characters in this wiki leads to Fatal Error
+* (bug 32492) API now allows editing using pageid.
+* (bug 32497) API now allows changing of protection level using pageid.
+* (bug 32498) API now allows comparing pages using pageids.
+* (bug 30975) API import of pages with invalid characters in this wiki leads to Fatal Error.
 * (bug 30488) API now allows listing of backlinks/embeddedin/imageusage per pageid
 * (bug 34927) Output media_type for list=filearchive
 * (bug 28814) add properties to output of action=parse
 * (bug 33224) add variants of content language to meta=siteinfo
+* (bug 36761) "Mark pages as visited" now submits previously established filter options
+* (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit is reached
+* The paraminfo module now also contains result properties for most modules
 
 === Languages updated in 1.20 ===
 
@@ -149,6 +168,10 @@ changes to languages because of Bugzilla reports.
 * Removed ./tests/qunit/index.html from core. It wasn't actively maintained and
   has been made obsolete when [[Special:JavaScriptTest/qunit]] was introduced,
   which actually uses ResourceLoader, LocalSettings and the Skin.
+* Removed $wgDBtransactions global. This was only checked in one class
+  and only applies to MyISAM or similar DBs. Those should only be used
+  for archived sites anyway. We can't get edit conflicts on such sites,
+  so the WikiPage code wasn't useful there either.
 
 == Compatibility ==
 
diff --git a/api.php b/api.php
index 3691ac6..1cd5497 100644 (file)
--- a/api.php
+++ b/api.php
@@ -1,9 +1,16 @@
 <?php
-
 /**
- * API for MediaWiki 1.8+
+ * This file is the entry point for all API queries.
+ *
+ * It begins by checking whether the API is enabled on this wiki; if not,
+ * it informs the user that s/he should set $wgEnableAPI to true and exits.
+ * Otherwise, it constructs a new ApiMain using the parameter passed to it
+ * as an argument in the URL ('?action=') and with write-enabled set to the
+ * value of $wgEnableWriteAPI as specified in LocalSettings.php.
+ * It then invokes "execute()" on the ApiMain object instance, which
+ * produces output in the format sepecified in the URL.
  *
- * Copyright (C) 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
+ * Copyright © 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
  *
  * 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
  * @file
  */
 
-/**
- * This file is the entry point for all API queries. It begins by checking
- * whether the API is enabled on this wiki; if not, it informs the user that
- * s/he should set $wgEnableAPI to true and exits. Otherwise, it constructs
- * a new ApiMain using the parameter passed to it as an argument in the URL
- * ('?action=') and with write-enabled set to the value of $wgEnableWriteAPI
- * as specified in LocalSettings.php. It then invokes "execute()" on the
- * ApiMain object instance, which produces output in the format sepecified
- * in the URL.
- */
-
 // So extensions (and other code) can check whether they're running in API mode
 define( 'MW_API', true );
 
index 72ee155..bb515c5 100644 (file)
--- a/api.php5
+++ b/api.php5
@@ -1 +1,24 @@
-<?php require 'api.php';
+<?php
+/**
+ * Version of api.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require 'api.php';
index d298229..4a65431 100644 (file)
@@ -87,9 +87,9 @@ which the user can edit by hand thereafter.  It's just a plain old PHP file,
 and can contain any PHP statements.  It usually sets global variables that are
 used for configuration, and includes files used by any extensions.
 
-Distributors cannot easily add extra statements to the autogenerated
-LocalSettings.php at the present time -- although hacking mw-config/index.php
-would work.  It would be nice if this situation could be improved.
+Distributors can easily add extra statements to the autogenerated
+LocalSettings.php by changing mw-config/overrides.php (see that file for details
+and examples).
 
 There's a new maintenance/install.php script which could be used for performing
 an install through the command line.
index 0b3eb17..9ff48f0 100644 (file)
@@ -2,57 +2,57 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.1.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.1/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.1/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.1/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.1/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.1/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision data -->
                        <element name="revision" type="mw:RevisionType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="string"/>
                </sequence>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
        </complexType>
index 8acbf54..55b05f8 100644 (file)
@@ -2,54 +2,54 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        Version 0.2 adds optional basic file upload info support,
        which is used by our OAI export/import submodule.
-       
+
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.2.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.2/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.2/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.2/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.2/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.2/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
                                <element name="revision" type="mw:RevisionType" />
@@ -57,7 +57,7 @@
                        </choice>
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="string"/>
                </sequence>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
        </complexType>
-       
+
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
                        <element name="timestamp" type="dateTime"/>
                        <element name="contributor" type="mw:ContributorType"/>
                        <element name="comment" type="string" minOccurs="0"/>
-                       
+
                        <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
                        <element name="filename" type="string"/>
-                       
+
                        <!-- URI at which this resource can be obtained -->
                        <element name="src" type="anyURI"/>
-                       
+
                        <element name="size" type="positiveInteger" />
-                       
+
                        <!-- TODO: add other metadata fields -->
                </sequence>
        </complexType>
-       
+
 </schema>
index 1e0b7c8..ea2b816 100644 (file)
@@ -2,48 +2,48 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        Version 0.2 adds optional basic file upload info support,
        which is used by our OAI export/import submodule.
-       
+
        Version 0.3 adds some site configuration information such
        as a list of defined namespaces.
-       
+
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.3.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.3/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.3/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.3/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.3/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.3/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="siteinfo" type="mw:SiteInfoType"
-                               minOccurs="0" maxOccurs="1"/>
+                                        minOccurs="0" maxOccurs="1"/>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="SiteInfoType">
                <sequence>
                        <element name="sitename" type="string" minOccurs="0" />
                        <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
                </sequence>
        </complexType>
-       
+
        <simpleType name="CaseType">
                <restriction base="NMTOKEN">
                        <!-- Cannot have two titles differing only by case of first letter. -->
                        <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
                        <enumeration value="first-letter" />
-                       
+
                        <!-- Complete title is case-sensitive -->
                        <!-- Behavior when $wgCapitalLinks = false -->
                        <enumeration value="case-sensitive" />
-                       
+
                        <!-- Cannot have two titles differing only by case. -->
                        <!-- Not yet implemented as of MediaWiki 1.5 -->
                        <enumeration value="case-insensitive" />
                </restriction>
        </simpleType>
-       
+
        <complexType name="NamespacesType">
                <sequence>
                        <element name="namespace" type="mw:NamespaceType"
-                               minOccurs="0" maxOccurs="unbounded" />
+                                        minOccurs="0" maxOccurs="unbounded" />
                </sequence>
        </complexType>
-       
+
        <complexType name="NamespaceType">
                <simpleContent>
                        <extension base="string">
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
                                <element name="revision" type="mw:RevisionType" />
                        </choice>
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="mw:TextType" />
                </sequence>
        </complexType>
-       
+
        <complexType name="TextType">
                <simpleContent>
                        <extension base="string">
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
        </complexType>
-       
+
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
                        <element name="timestamp" type="dateTime"/>
                        <element name="contributor" type="mw:ContributorType"/>
                        <element name="comment" type="string" minOccurs="0"/>
-                       
+
                        <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
                        <element name="filename" type="string"/>
-                       
+
                        <!-- URI at which this resource can be obtained -->
                        <element name="src" type="anyURI"/>
-                       
+
                        <element name="size" type="positiveInteger" />
-                       
+
                        <!-- TODO: add other metadata fields -->
                </sequence>
        </complexType>
-       
+
 </schema>
index 3e7f2ea..b3ea3bf 100644 (file)
@@ -2,52 +2,52 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        Version 0.2 adds optional basic file upload info support,
        which is used by our OAI export/import submodule.
-       
+
        Version 0.3 adds some site configuration information such
        as a list of defined namespaces.
-       
+
        Version 0.4 adds per-revision delete flags, log exports,
        discussion threading data, a per-page redirect flag, and
        per-namespace capitalization.
 
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.4.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.4/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.4/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.4/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.4/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.4/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="siteinfo" type="mw:SiteInfoType"
-                               minOccurs="0" maxOccurs="1"/>
+                                        minOccurs="0" maxOccurs="1"/>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="SiteInfoType">
                <sequence>
                        <element name="sitename" type="string" minOccurs="0" />
                        <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
                </sequence>
        </complexType>
-       
+
        <simpleType name="CaseType">
                <restriction base="NMTOKEN">
                        <!-- Cannot have two titles differing only by case of first letter. -->
                        <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
                        <enumeration value="first-letter" />
-                       
+
                        <!-- Complete title is case-sensitive -->
                        <!-- Behavior when $wgCapitalLinks = false -->
                        <enumeration value="case-sensitive" />
-                       
+
                        <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
                        <!-- Not yet implemented as of MediaWiki 1.18 -->
                        <enumeration value="case-insensitive" />
                </restriction>
        </simpleType>
-       
+
        <simpleType name="DeletedFlagType">
                <restriction base="NMTOKEN">
                        <enumeration value="deleted"/>
        <complexType name="NamespacesType">
                <sequence>
                        <element name="namespace" type="mw:NamespaceType"
-                               minOccurs="0" maxOccurs="unbounded" />
+                                        minOccurs="0" maxOccurs="unbounded" />
                </sequence>
        </complexType>
-       
+
        <complexType name="NamespaceType">
                <simpleContent>
                        <extension base="string">
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- flag if the current revision is a redirect -->
-                       <element name="redirect" minOccurs="0"/>        
+                       <element name="redirect" minOccurs="0"/>
 
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
                                <element name="revision" type="mw:RevisionType" />
                                <element name="upload" type="mw:UploadType" />
                                <element name="logitem" type="mw:LogItemType" />
                        </choice>
-                       
+
                        <!-- Zero or One sets of discussion threading data -->
                        <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" />
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="mw:TextType" />
                </sequence>
        </complexType>
-       
+
        <complexType name="CommentType">
                <simpleContent>
                        <extension base="string">
                        <extension base="string">
                                <attribute ref="xml:space" use="optional" default="preserve" />
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>    
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
                                <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
                                <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
                                <!-- usage ([0-9]+) and with the "ID" type. -->
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
                <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
        </complexType>
-       
+
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
                        <element name="timestamp" type="dateTime"/>
                        <element name="contributor" type="mw:ContributorType"/>
                        <element name="comment" type="string" minOccurs="0"/>
-                       
+
                        <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
                        <element name="filename" type="string"/>
-                       
+
                        <!-- URI at which this resource can be obtained -->
                        <element name="src" type="anyURI"/>
-                       
+
                        <element name="size" type="positiveInteger" />
-                       
+
                        <!-- TODO: add other metadata fields -->
                </sequence>
        </complexType>
-       
+
        <!-- Discussion threading data for LiquidThreads -->
        <complexType name="DiscussionThreadingInfo">
                <sequence>
                        <element name="ThreadType" type="string" />
                </sequence>
        </complexType>
-       
+
 </schema>
index 469446d..ed6c002 100644 (file)
@@ -2,54 +2,54 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        Version 0.2 adds optional basic file upload info support,
        which is used by our OAI export/import submodule.
-       
+
        Version 0.3 adds some site configuration information such
        as a list of defined namespaces.
-       
+
        Version 0.4 adds per-revision delete flags, log exports,
        discussion threading data, a per-page redirect flag, and
        per-namespace capitalization.
-       
+
        Version 0.5 adds byte count per revision.
 
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.5.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.5/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.5/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.5/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.5/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.5/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="siteinfo" type="mw:SiteInfoType"
-                               minOccurs="0" maxOccurs="1"/>
+                                        minOccurs="0" maxOccurs="1"/>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="SiteInfoType">
                <sequence>
                        <element name="sitename" type="string" minOccurs="0" />
                        <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
                </sequence>
        </complexType>
-       
+
        <simpleType name="CaseType">
                <restriction base="NMTOKEN">
                        <!-- Cannot have two titles differing only by case of first letter. -->
                        <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
                        <enumeration value="first-letter" />
-                       
+
                        <!-- Complete title is case-sensitive -->
                        <!-- Behavior when $wgCapitalLinks = false -->
                        <enumeration value="case-sensitive" />
-                       
+
                        <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
                        <!-- Not yet implemented as of MediaWiki 1.18 -->
                        <enumeration value="case-insensitive" />
                </restriction>
        </simpleType>
-       
+
        <simpleType name="DeletedFlagType">
                <restriction base="NMTOKEN">
                        <enumeration value="deleted"/>
        <complexType name="NamespacesType">
                <sequence>
                        <element name="namespace" type="mw:NamespaceType"
-                               minOccurs="0" maxOccurs="unbounded" />
+                                        minOccurs="0" maxOccurs="unbounded" />
                </sequence>
        </complexType>
-       
+
        <complexType name="NamespaceType">
                <simpleContent>
                        <extension base="string">
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- flag if the current revision is a redirect -->
-                       <element name="redirect" minOccurs="0"/>        
+                       <element name="redirect" minOccurs="0"/>
 
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
                                <element name="revision" type="mw:RevisionType" />
                                <element name="upload" type="mw:UploadType" />
                                <element name="logitem" type="mw:LogItemType" />
                        </choice>
-                       
+
                        <!-- Zero or One sets of discussion threading data -->
                        <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" />
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="mw:TextType" />
                </sequence>
        </complexType>
-       
+
        <complexType name="CommentType">
                <simpleContent>
                        <extension base="string">
                        <extension base="string">
                                <attribute ref="xml:space" use="optional" default="preserve" />
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>    
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
                                <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
                                <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
                                <!-- usage ([0-9]+) and with the "ID" type. -->
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
                <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
        </complexType>
-       
+
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
                        <element name="timestamp" type="dateTime"/>
                        <element name="contributor" type="mw:ContributorType"/>
                        <element name="comment" type="string" minOccurs="0"/>
-                       
+
                        <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
                        <element name="filename" type="string"/>
-                       
+
                        <!-- URI at which this resource can be obtained -->
                        <element name="src" type="anyURI"/>
-                       
+
                        <element name="size" type="positiveInteger" />
-                       
+
                        <!-- TODO: add other metadata fields -->
                </sequence>
        </complexType>
-       
+
        <!-- Discussion threading data for LiquidThreads -->
        <complexType name="DiscussionThreadingInfo">
                <sequence>
                        <element name="ThreadType" type="string" />
                </sequence>
        </complexType>
-       
+
 </schema>
index 55428b5..4668794 100644 (file)
@@ -2,57 +2,57 @@
 <!--
        This is an XML Schema description of the format
        output by MediaWiki's Special:Export system.
-       
+
        Version 0.2 adds optional basic file upload info support,
        which is used by our OAI export/import submodule.
-       
+
        Version 0.3 adds some site configuration information such
        as a list of defined namespaces.
-       
+
        Version 0.4 adds per-revision delete flags, log exports,
        discussion threading data, a per-page redirect flag, and
        per-namespace capitalization.
 
        Version 0.5 adds byte count per revision.
-       
+
        Version 0.6 adds a separate namespace tag, and resolves the
-       redirect target and adds a separate sha1 tag for each revision. 
-       
+       redirect target and adds a separate sha1 tag for each revision.
+
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.6.xsd
-       
+
        Use the namespace:
        http://www.mediawiki.org/xml/export-0.6/
 -->
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:mw="http://www.mediawiki.org/xml/export-0.6/"
-        targetNamespace="http://www.mediawiki.org/xml/export-0.6/"
-        elementFormDefault="qualified">
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.6/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.6/"
+               elementFormDefault="qualified">
 
        <annotation>
                <documentation xml:lang="en">
                        MediaWiki's page export format
                </documentation>
        </annotation>
-       
+
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-               schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-       
+                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType"/>
-       
+
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="siteinfo" type="mw:SiteInfoType"
-                               minOccurs="0" maxOccurs="1"/>
+                                        minOccurs="0" maxOccurs="1"/>
                        <element name="page" type="mw:PageType"
-                               minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded"/>
                </sequence>
                <attribute name="version" type="string" use="required"/>
                <attribute ref="xml:lang" use="required"/>
        </complexType>
-       
+
        <complexType name="SiteInfoType">
                <sequence>
                        <element name="sitename" type="string" minOccurs="0" />
                        <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
                </sequence>
        </complexType>
-       
+
        <simpleType name="CaseType">
                <restriction base="NMTOKEN">
                        <!-- Cannot have two titles differing only by case of first letter. -->
                        <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
                        <enumeration value="first-letter" />
-                       
+
                        <!-- Complete title is case-sensitive -->
                        <!-- Behavior when $wgCapitalLinks = false -->
                        <enumeration value="case-sensitive" />
-                       
+
                        <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
                        <!-- Not yet implemented as of MediaWiki 1.18 -->
                        <enumeration value="case-insensitive" />
                </restriction>
        </simpleType>
-       
+
        <simpleType name="DeletedFlagType">
                <restriction base="NMTOKEN">
                        <enumeration value="deleted"/>
        <complexType name="NamespacesType">
                <sequence>
                        <element name="namespace" type="mw:NamespaceType"
-                               minOccurs="0" maxOccurs="unbounded" />
+                                        minOccurs="0" maxOccurs="unbounded" />
                </sequence>
        </complexType>
-       
+
        <complexType name="NamespaceType">
                <simpleContent>
                        <extension base="string">
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
                        <element name="title" type="string"/>
-                       
+
                        <!-- Namespace in canonical form -->
                        <element name="ns" type="positiveInteger"/>
-                       
+
                        <!-- optional page ID number -->
                        <element name="id" type="positiveInteger" minOccurs="0"/>
-                       
+
                        <!-- flag if the current revision is a redirect -->
-                       <element name="redirect" type="string" minOccurs="0"/>  
+                       <element name="redirect" type="string" minOccurs="0"/>
 
                        <!-- comma-separated list of string tokens, if present -->
                        <element name="restrictions" type="string" minOccurs="0"/>
-                       
+
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
                                <element name="revision" type="mw:RevisionType" />
                                <element name="upload" type="mw:UploadType" />
                                <element name="logitem" type="mw:LogItemType" />
                        </choice>
-                       
+
                        <!-- Zero or One sets of discussion threading data -->
                        <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" />
                </sequence>
        </complexType>
-       
+
        <complexType name="RevisionType">
                <sequence>
                        <element name="id" type="positiveInteger" minOccurs="0"/>
                        <element name="text" type="mw:TextType" />
                </sequence>
        </complexType>
-       
+
        <complexType name="CommentType">
                <simpleContent>
                        <extension base="string">
                        <extension base="string">
                                <attribute ref="xml:space" use="optional" default="preserve" />
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>    
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
                                <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
                                <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
                                <!-- usage ([0-9]+) and with the "ID" type. -->
                        </extension>
                </simpleContent>
        </complexType>
-       
+
        <complexType name="ContributorType">
                <sequence>
                        <element name="username" type="string" minOccurs="0"/>
                        <element name="id" type="positiveInteger" minOccurs="0" />
-                       
+
                        <element name="ip" type="string" minOccurs="0"/>
                </sequence>
                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
                <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
        </complexType>
-       
+
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
                        <element name="timestamp" type="dateTime"/>
                        <element name="contributor" type="mw:ContributorType"/>
                        <element name="comment" type="string" minOccurs="0"/>
-                       
+
                        <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) -->
                        <element name="filename" type="string"/>
-                       
+
                        <!-- URI at which this resource can be obtained -->
                        <element name="src" type="anyURI"/>
-                       
+
                        <element name="size" type="positiveInteger" />
-                       
+
                        <!-- TODO: add other metadata fields -->
                </sequence>
        </complexType>
-       
+
        <!-- Discussion threading data for LiquidThreads -->
        <complexType name="DiscussionThreadingInfo">
                <sequence>
                        <element name="ThreadType" type="string" />
                </sequence>
        </complexType>
-       
+
 </schema>
diff --git a/docs/export-0.7.xsd b/docs/export-0.7.xsd
new file mode 100644 (file)
index 0000000..6d02328
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+       This is an XML Schema description of the format
+       output by MediaWiki's Special:Export system.
+
+       Version 0.2 adds optional basic file upload info support,
+       which is used by our OAI export/import submodule.
+
+       Version 0.3 adds some site configuration information such
+       as a list of defined namespaces.
+
+       Version 0.4 adds per-revision delete flags, log exports,
+       discussion threading data, a per-page redirect flag, and
+       per-namespace capitalization.
+
+       Version 0.5 adds byte count per revision.
+
+       Version 0.6 adds a separate namespace tag, and resolves the
+       redirect target and adds a separate sha1 tag for each revision.
+
+       Version 0.7 adds a unique identity constraint for both page and
+       revision identifiers. See also bug 4220.
+       Fix type for <ns> from "positiveInteger" to "nonNegativeInteger" to allow 0
+       Moves <logitem> to its right location.
+       Add parentid to revision.
+
+       The canonical URL to the schema document is:
+       http://www.mediawiki.org/xml/export-0.7.xsd
+
+       Use the namespace:
+       http://www.mediawiki.org/xml/export-0.7/
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+               xmlns:mw="http://www.mediawiki.org/xml/export-0.7/"
+               targetNamespace="http://www.mediawiki.org/xml/export-0.7/"
+               elementFormDefault="qualified">
+
+       <annotation>
+               <documentation xml:lang="en">
+                       MediaWiki's page export format
+               </documentation>
+       </annotation>
+
+       <!-- Need this to reference xml:lang -->
+       <import namespace="http://www.w3.org/XML/1998/namespace"
+                       schemaLocation="http://www.w3.org/2001/xml.xsd" />
+
+       <!-- Our root element -->
+       <element name="mediawiki" type="mw:MediaWikiType">
+               <!-- Page ID contraint, see bug 4220 -->
+               <unique name="PageIDConstraint">
+                       <selector xpath="mw:page" />
+                       <field xpath="mw:id" />
+               </unique>
+               <!-- Revision ID contraint, see bug 4220 -->
+               <unique name="RevIDConstraint">
+                       <selector xpath="mw:page/mw:revision" />
+                       <field xpath="mw:id" />
+               </unique>
+       </element>
+
+       <complexType name="MediaWikiType">
+               <sequence>
+                       <element name="siteinfo" type="mw:SiteInfoType"
+                                        minOccurs="0" maxOccurs="1" />
+                       <element name="page" type="mw:PageType"
+                                        minOccurs="0" maxOccurs="unbounded" />
+                       <element name="logitem" type="mw:LogItemType"
+                                        minOccurs="0" maxOccurs="unbounded" />
+               </sequence>
+               <attribute name="version" type="string" use="required" />
+               <attribute ref="xml:lang" use="required" />
+       </complexType>
+
+       <complexType name="SiteInfoType">
+               <sequence>
+                       <element name="sitename" type="string" minOccurs="0" />
+                       <element name="base" type="anyURI" minOccurs="0" />
+                       <element name="generator" type="string" minOccurs="0" />
+                       <element name="case" type="mw:CaseType" minOccurs="0" />
+                       <element name="namespaces" type="mw:NamespacesType" minOccurs="0" />
+               </sequence>
+       </complexType>
+
+       <simpleType name="CaseType">
+               <restriction base="NMTOKEN">
+                       <!-- Cannot have two titles differing only by case of first letter. -->
+                       <!-- Default behavior through 1.5, $wgCapitalLinks = true -->
+                       <enumeration value="first-letter" />
+
+                       <!-- Complete title is case-sensitive -->
+                       <!-- Behavior when $wgCapitalLinks = false -->
+                       <enumeration value="case-sensitive" />
+
+                       <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
+                       <!-- Not yet implemented as of MediaWiki 1.18 -->
+                       <enumeration value="case-insensitive" />
+               </restriction>
+       </simpleType>
+
+       <simpleType name="DeletedFlagType">
+               <restriction base="NMTOKEN">
+                       <enumeration value="deleted" />
+               </restriction>
+       </simpleType>
+
+       <complexType name="NamespacesType">
+               <sequence>
+                       <element name="namespace" type="mw:NamespaceType"
+                                        minOccurs="0" maxOccurs="unbounded" />
+               </sequence>
+       </complexType>
+
+       <complexType name="NamespaceType">
+               <simpleContent>
+                       <extension base="string">
+                               <attribute name="key" type="integer" />
+                               <attribute name="case" type="mw:CaseType" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="RedirectType">
+               <simpleContent>
+                       <extension base="string">
+                               <attribute name="title" type="string" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="PageType">
+               <sequence>
+                       <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
+                       <element name="title" type="string" />
+
+                       <!-- Namespace in canonical form -->
+                       <element name="ns" type="nonNegativeInteger" />
+
+                       <!-- optional page ID number -->
+                       <element name="id" type="positiveInteger" />
+
+                       <!-- flag if the current revision is a redirect -->
+                       <element name="redirect" type="mw:RedirectType" minOccurs="0" maxOccurs="1" />
+
+                       <!-- comma-separated list of string tokens, if present -->
+                       <element name="restrictions" type="string" minOccurs="0" />
+
+                       <!-- Zero or more sets of revision or upload data -->
+                       <choice minOccurs="0" maxOccurs="unbounded">
+                               <element name="revision" type="mw:RevisionType" />
+                               <element name="upload" type="mw:UploadType" />
+                       </choice>
+
+                       <!-- Zero or One sets of discussion threading data -->
+                       <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" />
+               </sequence>
+       </complexType>
+
+       <complexType name="RevisionType">
+               <sequence>
+                       <element name="id" type="positiveInteger" />
+                       <element name="parentid" type="positiveInteger" minOccurs="0" />
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="minor" minOccurs="0" maxOccurs="1" />
+                       <element name="comment" type="mw:CommentType" minOccurs="0" maxOccurs="1" />
+                       <element name="sha1" type="string" />
+                       <element name="text" type="mw:TextType" />
+               </sequence>
+       </complexType>
+
+       <complexType name="LogItemType">
+               <sequence>
+                       <element name="id" type="positiveInteger" />
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="comment" type="mw:CommentType" minOccurs="0" />
+                       <element name="type" type="string" />
+                       <element name="action" type="string" />
+                       <element name="text" type="mw:LogTextType" minOccurs="0" maxOccurs="1" />
+                       <element name="logtitle" type="string" minOccurs="0" maxOccurs="1" />
+                       <element name="params" type="mw:LogParamsType" minOccurs="0" maxOccurs="1" />
+               </sequence>
+       </complexType>
+
+       <complexType name="CommentType">
+               <simpleContent>
+                       <extension base="string">
+                               <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="TextType">
+               <simpleContent>
+                       <extension base="string">
+                               <attribute ref="xml:space" use="optional" default="preserve" />
+                               <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
+                               <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
+                               <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
+                               <!-- usage ([0-9]+) and with the "ID" type. -->
+                               <attribute name="id" type="NMTOKEN" />
+                               <attribute name="bytes" use="optional" type="nonNegativeInteger" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="LogTextType">
+               <simpleContent>
+                       <extension base="string">
+                               <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="LogParamsType">
+               <simpleContent>
+                       <extension base="string">
+                               <attribute ref="xml:space" use="optional" default="preserve" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
+       <complexType name="ContributorType">
+               <sequence>
+                       <element name="username" type="string" minOccurs="0" />
+                       <element name="id" type="positiveInteger" minOccurs="0" />
+
+                       <element name="ip" type="string" minOccurs="0" />
+               </sequence>
+               <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
+               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
+       </complexType>
+
+       <complexType name="UploadType">
+               <sequence>
+                       <!-- Revision-style data... -->
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="comment" type="string" minOccurs="0" />
+
+                       <!-- Filename. (Using underscores, not spaces. No 'File:' namespace marker.) -->
+                       <element name="filename" type="string" />
+
+                       <!-- URI at which this resource can be obtained -->
+                       <element name="src" type="anyURI" />
+
+                       <element name="size" type="positiveInteger" />
+
+                       <!-- TODO: add other metadata fields -->
+               </sequence>
+       </complexType>
+
+       <!-- Discussion threading data for LiquidThreads -->
+       <complexType name="DiscussionThreadingInfo">
+               <sequence>
+                       <element name="ThreadSubject" type="string" />
+                       <element name="ThreadParent" type="positiveInteger" />
+                       <element name="ThreadAncestor" type="positiveInteger" />
+                       <element name="ThreadPage" type="string" />
+                       <element name="ThreadID" type="positiveInteger" />
+                       <element name="ThreadAuthor" type="string" />
+                       <element name="ThreadEditStatus" type="string" />
+                       <element name="ThreadType" type="string" />
+               </sequence>
+       </complexType>
+
+</schema>
index 77b26a4..d198b93 100644 (file)
-<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.4/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.4/ http://www.mediawiki.org/xml/export-0.4.xsd" version="0.4" xml:lang="en">
-
-<!-- Optional global configuration info -->
-<siteinfo>
-  <!-- Site name, as set in $wgSitename -->
-  <sitename>DemoWiki</sitename>
+<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   
-  <!-- Forgot where you got this set? -->
-  <base>http://example.com/wiki/Main_Page</base>
-  
-  <!-- Source software version -->
-  <generator>MediaWiki 1.5.0</generator>
-  
-  <!-- Title case sensitivity options of the wiki this data came from -->
-  <!-- May be 'first-letter', 'case-sensitive', or 'case-insensitive' -->
-  <case>first-letter</case>
-  
-  <!-- Defined namespace keys on the source wiki. -->
-  <!-- Titles can be substring-split to obtain the symbolic numeric key -->
-  <namespaces>
-    <namespace key="-2">Media</namespace>
-    <namespace key="-1">Special</namespace>
-    <namespace key="0"></namespace>
-    <namespace key="1">Talk</namespace>
-    <namespace key="2">User</namespace>
-    <namespace key="3">User talk</namespace>
-    <namespace key="4">DemoWiki</namespace>
-    <namespace key="5">DemoWIki talk</namespace>
-    <namespace key="6">Image</namespace>
-    <namespace key="7">Image talk</namespace>
-    <namespace key="8">MediaWiki</namespace>
-    <namespace key="9">MediaWiki talk</namespace>
-    <namespace key="10">Template</namespace>
-    <namespace key="11">Template talk</namespace>
-    <namespace key="12">Help</namespace>
-    <namespace key="13">Help talk</namespace>
-    <namespace key="14">Category</namespace>
-    <namespace key="15">Category talk</namespace>
-  </namespaces>
-</siteinfo>
-
-<!-- The rest of the data will be a series of page records -->
-<page>
-  <!-- Titles are listed here in text form, with namespace prefix   -->
-  <!-- if any, and spaces rather than the underscores used in URLs. -->
-  <title>Page title</title>
+  <!-- Optional global configuration info -->
+  <siteinfo>
+    <!-- Site name, as set in $wgSitename -->
+    <sitename>DemoWiki</sitename>
+    
+    <!-- Forgot where you got this set? -->
+    <base>http://example.com/wiki/Main_Page</base>
+    
+    <!-- Source software version -->
+    <generator>MediaWiki 1.20</generator>
+    
+    <!-- Title case sensitivity options of the wiki this data came from -->
+    <!-- May be 'first-letter', 'case-sensitive', or 'case-insensitive' -->
+    <case>first-letter</case>
+    
+    <!-- Defined namespace keys on the source wiki. -->
+    <namespaces>
+      <namespace key="-2" case="first-letter">Media</namespace>
+      <namespace key="-1" case="first-letter">Special</namespace>
+      <namespace key="0" case="first-letter" />
+      <namespace key="1" case="first-letter">Talk</namespace>
+      <namespace key="2" case="first-letter">User</namespace>
+      <namespace key="3" case="first-letter">User talk</namespace>
+      <namespace key="4" case="first-letter">DemoWiki</namespace>
+      <namespace key="5" case="first-letter">DemoWIki talk</namespace>
+      <namespace key="6" case="first-letter">File</namespace>
+      <namespace key="7" case="first-letter">File talk</namespace>
+      <namespace key="8" case="first-letter">MediaWiki</namespace>
+      <namespace key="9" case="first-letter">MediaWiki talk</namespace>
+      <namespace key="10" case="first-letter">Template</namespace>
+      <namespace key="11" case="first-letter">Template talk</namespace>
+      <namespace key="12" case="first-letter">Help</namespace>
+      <namespace key="13" case="first-letter">Help talk</namespace>
+      <namespace key="14" case="first-letter">Category</namespace>
+      <namespace key="15" case="first-letter">Category talk</namespace>
+    </namespaces>
+  </siteinfo>
   
-  <!-- The page's immutable page_id number in the source database.  -->
-  <!-- Page ID numbers are kept across page moves, but may change   -->
-  <!-- if a page is deleted and recreated.                          -->
-  <id>1</id>
-
-  <!-- Tag wether this article is a redirect -->
-  <!-- This corresponds to the page_is_redirect in the page table -->
-  <redirect />
+  <!-- The rest of the data will be a series of page records -->
+  <page>
+    <!-- Titles are listed here in text form, with namespace prefix   -->
+    <!-- if any, and spaces rather than the underscores used in URLs. -->
+    <title>Page title</title>
+    
+    <!-- Namespace in canonical form -->
+    <ns>0</ns>
+    
+    <!-- The page's immutable page_id number in the source database.  -->
+    <!-- Page ID numbers are kept across page moves, but may change   -->
+    <!-- if a page is deleted and recreated.                          -->
+    <id>1</id>
+    
+    <!-- Tag wether this article is a redirect and its target -->
+    <!-- This corresponds to the page_is_redirect in the page table -->
+    <redirect title="Target" />
+    
+    <!-- If restricted, the ACL is listed here raw. -->
+    <restrictions>edit=sysop:move=sysop</restrictions>
+    
+    <!-- With a series of revision records... -->
+    
+    <!-- Remember this is XML; if you must use a regex-based extractor -->
+    <!-- in place of a standard XML parser, be very careful.           -->
+    <!-- * Don't forget to decode character entities!                  -->
+    <!-- * If using a 'loose' XML parser, ensure that whitespace is    -->
+    <!--    preserved in the <text> elements.                          -->
+    <revision>
+      <!-- Unique revision ID number (rev_id) in the source database.  -->
+      <!-- This number uniquely identifies the revision on that wiki.  -->
+      <id>100</id>
+      <!-- revision id of the parent revision -->
+      <parentid>99</parentid>
+      <timestamp>2001-01-15T13:15:00Z</timestamp>
+      <contributor>
+        <username>Foobar</username>
+        <id>42</id>
+      </contributor>
+      <minor />
+      <comment>I have just one thing to say!</comment>
+      <sha1>5x0ux8iwjrbmfzgv6pkketxgkcnpr7h</sha1>
+      <text xml:space="preserve" bytes="25">A bunch of [[text]] here.</text>
+    </revision>
+    
+    <revision>
+      <id>99</id>
+      <timestamp>2001-01-15T13:10:27Z</timestamp>
+      <contributor>
+        <ip>10.0.0.2</ip>
+      </contributor>
+      <comment>new!</comment>
+      <sha1>etaxt3shcge6igz1biwy3d4um2pnle4</sha1>
+      <text xml:space="preserve" bytes="24">An earlier [[revision]].</text>
+    </revision>
+  </page>
   
-  <!-- If restricted, the ACL is listed here raw. -->
-  <restrictions>edit=sysop:move=sysop</restrictions>
+  <page>
+    <title>Talk:Page title</title>
+    <ns>1</ns>
+    <id>2</id>
+    <revision>
+      <id>101</id>
+      <timestamp>2001-01-15T14:03:00Z</timestamp>
+      <contributor><ip>10.0.0.2</ip></contributor>
+      <comment>hey</comment>
+      <sha1>ml80vmyjlixdstnywwihx003exfzq9j</sha1>
+      <text xml:space="preserve" bytes="47">WHYD YOU LOCK PAGE??!!! i was editing that jerk</text>
+    </revision>
+  </page>
   
-  <!-- With a series of revision records... -->
+  <page>
+    <title>File:Some image.jpg</title>
+    <ns>6</ns>
+    <id>3</id>
+    <revision>
+      <id>102</id>
+      <timestamp>2001-01-15T20:34:12Z</timestamp>
+      <contributor><username>Foobar</username><id>42</id></contributor>
+      <comment>My awesomeest image!</comment>
+      <sha1>mehom37npwkpzhaiwu3wyr0egalumki</sha1>
+      <text xml:space="preserve" bytes="52">This is an awesome little imgae. I lurves it. {{PD}}</text>
+    </revision>
+    <upload>
+      <timestamp>2001-01-15T20:34:12Z</timestamp>
+      <contributor><username>Foobar</username><id>42</id></contributor>
+      <comment>My awesomeest image!</comment>
+      <filename>Some_image.jpg</filename>
+      <src>http://upload.wikimedia.org/commons/2/22/Some_image.jpg</src>
+      <size>12345</size>
+    </upload>
+  </page>
   
-  <!-- Remember this is XML; if you must use a regex-based extractor -->
-  <!-- in place of a standard XML parser, be very careful.           -->
-  <!-- * Don't forget to decode character entities!                  -->
-  <!-- * If using a 'loose' XML parser, ensure that whitespace is    -->
-  <!--    preserved in the <text> elements.                          -->
-  <revision>
-    <!-- Unique revision ID number (rev_id) in the source database.  -->
-    <!-- This number uniquely identifies the revision on that wiki.  -->
-    <id>100</id>
-    
-    <timestamp>2001-01-15T13:15:00Z</timestamp>
-    <contributor><username>Foobar</username><id>42</id></contributor>
-    <minor />
-    <comment>I have just one thing to say!</comment>
-    <text xml:space="preserve">A bunch of [[text]] here.</text>
-  </revision>
+  <!-- or a series of logitem records, but normaly page and logitem never exist both in one file -->
+  <logitem>
+    <id>15</id>
+    <timestamp>2008-10-23T03:20:32Z</timestamp>
+    <contributor>
+      <username>Wikimedian</username>
+      <id>12345</id>
+    </contributor>
+    <comment>content was: 'I think this was a silly edit'</comment>
+    <type>delete</type>
+    <action>delete</action>
+    <logtitle>Silly page name</logtitle>
+    <params xml:space="preserve" />
+  </logitem>
   
-  <revision>
-    <timestamp>2001-01-15T13:10:27Z</timestamp>
-    <contributor><ip>10.0.0.2</ip></contributor>
-    <comment>new!</comment>
-    <text xml:space="preserve">An earlier [[revision]].</text>
-  </revision>
-</page>
-
-<page>
-  <title>Talk:Page title</title>
-  <id>2</id>
-  <revision>
-    <id>101</id>
-    <timestamp>2001-01-15T14:03:00Z</timestamp>
-    <contributor><ip>10.0.0.2</ip></contributor>
-    <comment>hey</comment>
-    <text xml:space="preserve">WHYD YOU LOCK PAGE??!!! i was editing that jerk</text>
-  </revision>
-</page>
-
-<page>
-  <title>Image:Some image.jpg</title>
-  <id>3</id>
-  <revision>
-    <id>102</id>
-    <timestamp>2001-01-15T20:34:12Z</timestamp>
-    <contributor><username>Foobar</username><id>42</id></contributor>
-    <comment>My awesomeest image!</comment>
-    <text xml:space="preserve">This is an awesome little imgae. I lurves it. {{PD}}</text>
-  </revision>
-  <upload>
-    <timestamp>2001-01-15T20:34:12Z</timestamp>
-    <contributor><username>Foobar</username><id>42</id></contributor>
-    <comment>My awesomeest image!</comment>
-    <filename>Some_image.jpg</filename>
-    <src>http://upload.wikimedia.org/commons/2/22/Some_image.jpg</src>
-    <size>12345</size>
-  </upload>
-</page>
-
-<logitem>
-  <id>15</id>
-  <timestamp>2008-10-23T03:20:32Z</timestamp>
-  <contributor>
-  <username>Wikimedian</username>
-  <id>12345</id>
-  </contributor>
-  <comment>content was: 'I think this was a silly edit'</comment>
-  <type>delete</type>
-  <action>delete</action>
-  <logtitle>Silly page name</logtitle>
-  <params xml:space="preserve" />
-</logitem>
-
-
 </mediawiki>
index 8d4bdea..147e524 100644 (file)
@@ -331,6 +331,11 @@ descriptions.
 &$module: ApiBase Module object
 &$desc: Array of parameter descriptions
 
+'APIGetResultProperties': use this hook to mofify the properties
+in a module's result.
+&$module: ApiBase Module object
+&$properties: Array of properties
+
 'APIQueryAfterExecute': after calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
@@ -672,6 +677,10 @@ $output: OutputPage object in use
 'CategoryPageView': before viewing a categorypage in CategoryPage::view
 $catpage: CategoryPage instance
 
+'ChangePasswordForm': For extensions that need to add a field to the ChangePassword form
+via the Preferences form
+&$extraFields: An array of arrays that hold fields like would be passed to the pretty function.
+
 'ChangesListInsertArticleLink': Override or augment link to article in RC list.
 &$changesList: ChangesList instance.
 &$articlelink: HTML of link to article (already filled-in).
@@ -921,6 +930,14 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored
 $user: user who performed the undeletion
 $reason: reason
 
+'FormatAutocomments': When an autocomment is formatted by the Linker
+ &$comment: Reference to the accumulated comment. Initially null, when set the default code will be skipped.
+ $pre: Initial part of the parsed comment before the call to the hook.
+ $auto: The extracted part of the parsed comment before the call to the hook.
+ $post: The final part of the parsed comment before the call to the hook.
+ $title: An optional title object used to links to sections. Can be null.
+ $local: Boolean indicating whether section links should refer to local page.
+
 'GetAutoPromoteGroups': When determining which autopromote groups a user
 is entitled to be in.
 &$user: user to promote.
index ca15585..22f4710 100644 (file)
@@ -7,11 +7,14 @@ directory and make a symbolic link:
 
  mediawiki/extensions$ ln -s ../../extensions-trunk/FooBarExt
 
-The extensions are available through svn at:
-    http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/
+The extensions are available through Git:
+    https://gerrit.wikimedia.org/r/#/admin/projects/
+
+or Subversion:
+    https://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/
 
 You can find documentation and additional extensions on MediaWiki website:
-    http://www.mediawiki.org/wiki/Category:Extensions
+    https://www.mediawiki.org/wiki/Category:Extensions
 
 
 Please note that under POSIX systems (Linux...), parent of a symbolic path
index a51e5ca..d712589 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 /**
  * Image authorisation script
  *
  *
  * Your server needs to support PATH_INFO; CGI-based configurations usually don't.
  *
- * @file
+ * 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
+ */
 
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
 if ( isset( $_SERVER['MW_COMPILED'] ) ) {
index df25e95..b3eb450 100644 (file)
@@ -1 +1,24 @@
-<?php require './img_auth.php';
\ No newline at end of file
+<?php
+/**
+ * Version of img_auth.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require './img_auth.php';
index a8c0436..a9891ec 100644 (file)
  *
  * To add an action in an extension, create a subclass of Action, and add the key to
  * $wgActions.  There is also the deprecated UnknownAction hook
+ *
+ * Actions generally fall into two groups: the show-a-form-then-do-something-with-the-input
+ * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
+ * patrol, etc). The FormAction and FormlessAction classes respresent these two groups.
  */
 abstract class Action {
 
        /**
         * Page on which we're performing the action
-        * @var Page
+        * @var Page $page
         */
        protected $page;
 
        /**
         * IContextSource if specified; otherwise we'll use the Context from the Page
-        * @var IContextSource
+        * @var IContextSource $context
         */
        protected $context;
 
        /**
         * The fields used to create the HTMLForm
-        * @var Array
+        * @var Array $fields
         */
        protected $fields;
 
@@ -355,6 +359,9 @@ abstract class Action {
        public abstract function execute();
 }
 
+/**
+ * An action which shows a form and does something based on the input from the form
+ */
 abstract class FormAction extends Action {
 
        /**
@@ -449,8 +456,8 @@ abstract class FormAction extends Action {
        /**
         * @see Action::execute()
         * @throws ErrorPageError
-        * @param array|null $data
-        * @param bool $captureErrors
+        * @param $data array|null
+        * @param $captureErrors bool
         * @return bool
         */
        public function execute( array $data = null, $captureErrors = true ) {
@@ -491,9 +498,7 @@ abstract class FormAction extends Action {
 }
 
 /**
- * Actions generally fall into two groups: the show-a-form-then-do-something-with-the-input
- * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
- * patrol, etc).
+ * An action which just does something, without showing a form first.
  */
 abstract class FormlessAction extends Action {
 
@@ -512,10 +517,17 @@ abstract class FormlessAction extends Action {
                return false;
        }
 
+       /**
+        * @param $data Array
+        * @return bool
+        */
        public function onSubmit( $data ) {
                return false;
        }
 
+       /**
+        * @return bool
+        */
        public function onSuccess() {
                return false;
        }
index cafe4db..e3df520 100644 (file)
  * @ingroup Ajax
  */
 class AjaxDispatcher {
-       /** The way the request was made, either a 'get' or a 'post' */
+       /**
+        * The way the request was made, either a 'get' or a 'post'
+        * @var string $mode
+        */
        private $mode;
 
-       /** Name of the requested handler */
+       /**
+        * Name of the requested handler
+        * @var string $func_name
+        */
        private $func_name;
 
-       /** Arguments passed */
+       /** Arguments passed
+        * @var array $args
+        */
        private $args;
 
-       /** Load up our object with user supplied data */
+       /**
+        * Load up our object with user supplied data
+        */
        function __construct() {
                wfProfileIn( __METHOD__ );
 
@@ -80,7 +90,8 @@ class AjaxDispatcher {
                wfProfileOut( __METHOD__ );
        }
 
-       /** Pass the request to our internal function.
+       /**
+        * Pass the request to our internal function.
         * BEWARE! Data are passed as they have been supplied by the user,
         * they should be carefully handled in the function processing the
         * request.
index 52f3e2b..6bf94cc 100644 (file)
  * @ingroup Ajax
  */
 class AjaxResponse {
-       /** Number of seconds to get the response cached by a proxy */
+
+       /**
+        * Number of seconds to get the response cached by a proxy
+        * @var int $mCacheDuration
+        */
        private $mCacheDuration;
 
-       /** HTTP header Content-Type */
+       /**
+        * HTTP header Content-Type
+        * @var string $mContentType
+        */
        private $mContentType;
 
-       /** Disables output. Can be set by calling $AjaxResponse->disable() */
+       /**
+        * Disables output. Can be set by calling $AjaxResponse->disable()
+        * @var bool $mDisabled
+        */
        private $mDisabled;
 
-       /** Date for the HTTP header Last-modified */
+       /**
+        * Date for the HTTP header Last-modified
+        * @var string|false $mLastModified
+        */
        private $mLastModified;
 
-       /** HTTP response code */
+       /**
+        * HTTP response code
+        * @var string $mResponseCode
+        */
        private $mResponseCode;
 
-       /** HTTP Vary header */
+       /**
+        * HTTP Vary header
+        * @var string $mVary
+        */
        private $mVary;
 
-       /** Content of our HTTP response */
+       /**
+        * Content of our HTTP response
+        * @var string $mText
+        */
        private $mText;
 
        /**
@@ -67,22 +89,41 @@ class AjaxResponse {
                }
        }
 
+       /**
+        * Set the number of seconds to get the response cached by a proxy
+        * @param $duration int
+        */
        function setCacheDuration( $duration ) {
                $this->mCacheDuration = $duration;
        }
 
+       /**
+        * Set the HTTP Vary header
+        * @param $vary string
+        */
        function setVary( $vary ) {
                $this->mVary = $vary;
        }
 
+       /**
+        * Set the HTTP response code
+        * @param $code string
+        */
        function setResponseCode( $code ) {
                $this->mResponseCode = $code;
        }
 
+       /**
+        * Set the HTTP header Content-Type
+        * @param $type string
+        */
        function setContentType( $type ) {
                $this->mContentType = $type;
        }
 
+       /**
+        * Disable output.
+        */
        function disable() {
                $this->mDisabled = true;
        }
@@ -222,8 +263,8 @@ class AjaxResponse {
        }
 
        /**
-        * @param $mckey
-        * @param $touched
+        * @param $mckey string
+        * @param $touched int
         * @return bool
         */
        function loadFromMemcached( $mckey, $touched ) {
@@ -250,7 +291,7 @@ class AjaxResponse {
        }
 
        /**
-        * @param $mckey
+        * @param $mckey string
         * @param $expiry int
         * @return bool
         */
index a8df6c9..dcde2cf 100644 (file)
@@ -25,7 +25,7 @@
  *
  * This maintains WikiPage functions for backwards compatibility.
  *
- * @TODO: move and rewrite code to an Action class
+ * @todo move and rewrite code to an Action class
  *
  * See design.txt for an overview.
  * Note: edit user interface and cache support functions have been
@@ -39,42 +39,69 @@ class Article extends Page {
         */
 
        /**
-        * @var IContextSource
+        * The context this Article is executed in
+        * @var IContextSource $mContext
         */
        protected $mContext;
 
        /**
-        * @var WikiPage
+        * The WikiPage object of this instance
+        * @var WikiPage $mPage
         */
        protected $mPage;
 
        /**
-        * @var ParserOptions: ParserOptions object for $wgUser articles
+        * ParserOptions object for $wgUser articles
+        * @var ParserOptions $mParserOptions
         */
        public $mParserOptions;
 
+       /**
+        * Content of the revision we are working on
+        * @var string $mContent
+        */
        var $mContent;                    // !<
+
+       /**
+        * Is the content ($mContent) already loaded?
+        * @var bool $mContentLoaded
+        */
        var $mContentLoaded = false;      // !<
+
+       /**
+        * The oldid of the article that is to be shown, 0 for the
+        * current revision
+        * @var int|null $mOldId
+        */
        var $mOldId;                      // !<
 
        /**
-        * @var Title
+        * Title from which we were redirected here
+        * @var Title $mRedirectedFrom
         */
        var $mRedirectedFrom = null;
 
        /**
-        * @var mixed: boolean false or URL string
+        * URL to redirect to or false if none
+        * @var string|false $mRedirectUrl
         */
        var $mRedirectUrl = false;        // !<
+
+       /**
+        * Revision ID of revision we are working on
+        * @var int $mRevIdFetched
+        */
        var $mRevIdFetched = 0;           // !<
 
        /**
-        * @var Revision
+        * Revision we are working on
+        * @var Revision $mRevision
         */
        var $mRevision = null;
 
        /**
-        * @var ParserOutput
+        * ParserOutput object
+        * @var ParserOutput $mParserOutput
         */
        var $mParserOutput;
 
@@ -469,7 +496,7 @@ class Article extends Page {
                if ( $outputPage->isPrintable() ) {
                        $parserOptions->setIsPrintable( true );
                        $parserOptions->setEditSection( false );
-               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit' ) ) {
+               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user ) ) {
                        $parserOptions->setEditSection( false );
                }
 
@@ -809,7 +836,7 @@ class Article extends Page {
         * merging of several policies using array_merge().
         * @param $policy Mixed, returns empty array on null/false/'', transparent
         *            to already-converted arrays, converts String.
-        * @return Array: 'index' => <indexpolicy>, 'follow' => <followpolicy>
+        * @return Array: 'index' => \<indexpolicy\>, 'follow' => \<followpolicy\>
         */
        public static function formatRobotPolicy( $policy ) {
                if ( is_array( $policy ) ) {
@@ -929,7 +956,7 @@ class Article extends Page {
                $user = $this->getContext()->getUser();
                $rcid = $request->getVal( 'rcid' );
 
-               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol' ) ) {
+               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol', $user ) ) {
                        return;
                }
 
@@ -1023,16 +1050,12 @@ class Article extends Page {
                } elseif ( $this->getTitle()->getNamespace() === NS_MEDIAWIKI ) {
                        // Use the default message text
                        $text = $this->getTitle()->getDefaultMessageText();
+               } elseif ( $this->getTitle()->quickUserCan( 'create', $this->getContext()->getUser() )
+                       && $this->getTitle()->quickUserCan( 'edit', $this->getContext()->getUser() )
+               ) {
+                       $text = wfMsgNoTrans( 'noarticletext' );
                } else {
-                       $createErrors = $this->getTitle()->getUserPermissionsErrors( 'create', $this->getContext()->getUser() );
-                       $editErrors = $this->getTitle()->getUserPermissionsErrors( 'edit', $this->getContext()->getUser() );
-                       $errors = array_merge( $createErrors, $editErrors );
-
-                       if ( !count( $errors ) ) {
-                               $text = wfMsgNoTrans( 'noarticletext' );
-                       } else {
-                               $text = wfMsgNoTrans( 'noarticletext-nopermission' );
-                       }
+                       $text = wfMsgNoTrans( 'noarticletext-nopermission' );
                }
                $text = "<div class='noarticletext'>\n$text\n</div>";
 
@@ -1110,9 +1133,11 @@ class Article extends Page {
 
                $current = ( $oldid == $this->mPage->getLatest() );
                $language = $this->getContext()->getLanguage();
-               $td = $language->timeanddate( $timestamp, true );
-               $tddate = $language->date( $timestamp, true );
-               $tdtime = $language->time( $timestamp, true );
+               $user = $this->getContext()->getUser();
+
+               $td = $language->userTimeAndDate( $timestamp, $user );
+               $tddate = $language->userDate( $timestamp, $user );
+               $tdtime = $language->userTime( $timestamp, $user );
 
                # Show user links if allowed to see them. If hidden, then show them only if requested...
                $userlinks = Linker::revUserTools( $revision, !$unhide );
@@ -1197,7 +1222,7 @@ class Article extends Page {
                                array( 'known', 'noclasses' )
                        );
 
-               $cdel = Linker::getRevDeleteLink( $this->getContext()->getUser(), $revision, $this->getTitle() );
+               $cdel = Linker::getRevDeleteLink( $user, $revision, $this->getTitle() );
                if ( $cdel !== '' ) {
                        $cdel .= ' ';
                }
@@ -1345,9 +1370,9 @@ class Article extends Page {
                        $this->doDelete( $reason, $suppress );
 
                        if ( $request->getCheck( 'wpWatch' ) && $user->isLoggedIn() ) {
-                               $this->doWatch();
+                               WatchAction::doWatch( $title, $user );
                        } elseif ( $title->userIsWatching() ) {
-                               $this->doUnwatch();
+                               WatchAction::doUnwatch( $title, $user );
                        }
 
                        return;
@@ -1379,7 +1404,7 @@ class Article extends Page {
                        }
                }
 
-               return $this->confirmDelete( $reason );
+               $this->confirmDelete( $reason );
        }
 
        /**
@@ -1656,6 +1681,7 @@ class Article extends Page {
        /**
         * Handle action=purge
         * @deprecated since 1.19
+        * @return Action|bool|null false if the action is disabled, null if it is not recognised
         */
        public function purge() {
                return Action::factory( 'purge', $this )->show();
index 07a614a..c7fcf93 100644 (file)
  * someone logs in who can be authenticated externally.
  */
 class AuthPlugin {
+
+       /**
+        * @var string
+        */
+       protected $domain;
+
        /**
         * Check whether there exists a user account with the given name.
         * The name will be normalized to MediaWiki's requirements, so
@@ -83,6 +89,19 @@ class AuthPlugin {
                $this->domain = $domain;
        }
 
+       /**
+        * Get the user's domain
+        *
+        * @return string
+        */
+       public function getDomain() {
+               if ( isset( $this->domain ) ) {
+                       return $this->domain;
+               } else {
+                       return 'invaliddomain';
+               }
+       }
+
        /**
         * Check to see if the specific domain is a valid domain.
         *
@@ -248,6 +267,8 @@ class AuthPlugin {
        /**
         * If you want to munge the case of an account name before the final
         * check, now is your chance.
+        * @param $username string
+        * @return string
         */
        public function getCanonicalName( $username ) {
                return $username;
index 7b5b56b..83397fd 100644 (file)
@@ -71,7 +71,8 @@ $wgAutoloadLocalClasses = array(
        'DeferredUpdates' => 'includes/DeferredUpdates.php',
        'DeprecatedGlobal' => 'includes/DeprecatedGlobal.php',
        'DerivativeRequest' => 'includes/WebRequest.php',
-       'DeviceDetection' => 'includes/DeviceDetection.php',
+       'DeviceDetection' => 'includes/mobile/DeviceDetection.php',
+       'DeviceProperties' => 'includes/mobile/DeviceDetection.php',
        'DiffHistoryBlob' => 'includes/HistoryBlob.php',
        'DoubleReplacer' => 'includes/StringUtils.php',
        'DummyLinker' => 'includes/Linker.php',
@@ -137,6 +138,8 @@ $wgAutoloadLocalClasses = array(
        'HttpRequest' => 'includes/HttpFunctions.old.php',
        'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
+       'IDeviceProperties' => 'includes/mobile/DeviceDetection.php',
+       'IDeviceDetector' => 'includes/mobile/DeviceDetection.php',
        'IdentityCollation' => 'includes/Collation.php',
        'ImageGallery' => 'includes/ImageGallery.php',
        'ImageHistoryList' => 'includes/ImagePage.php',
@@ -173,6 +176,7 @@ $wgAutoloadLocalClasses = array(
        'MWException' => 'includes/Exception.php',
        'MWExceptionHandler' => 'includes/Exception.php',
        'MWFunction' => 'includes/MWFunction.php',
+       'MWHookException' => 'includes/Hooks.php',
        'MWHttpRequest' => 'includes/HttpFunctions.php',
        'MWInit' => 'includes/Init.php',
        'MWNamespace' => 'includes/Namespace.php',
@@ -205,6 +209,7 @@ $wgAutoloadLocalClasses = array(
        'ReplacementArray' => 'includes/StringUtils.php',
        'Replacer' => 'includes/StringUtils.php',
        'ReverseChronologicalPager' => 'includes/Pager.php',
+       'RevisionItem' => 'includes/RevisionList.php',
        'RevisionItemBase' => 'includes/RevisionList.php',
        'RevisionListBase' => 'includes/RevisionList.php',
        'Revision' => 'includes/Revision.php',
@@ -245,6 +250,7 @@ $wgAutoloadLocalClasses = array(
        'TitleArrayFromResult' => 'includes/TitleArray.php',
        'ThrottledError' => 'includes/Exception.php',
        'UnlistedSpecialPage' => 'includes/SpecialPage.php',
+       'UploadSourceAdapter' => 'includes/Import.php',
        'UppercaseCollation' => 'includes/Collation.php',
        'User' => 'includes/User.php',
        'UserArray' => 'includes/UserArray.php',
@@ -272,10 +278,12 @@ $wgAutoloadLocalClasses = array(
        'Xml' => 'includes/Xml.php',
        'XmlDumpWriter' => 'includes/Export.php',
        'XmlJsCode' => 'includes/Xml.php',
+       'XMLReader2' => 'includes/Import.php',
        'XmlSelect' => 'includes/Xml.php',
        'XmlTypeCheck' => 'includes/XmlTypeCheck.php',
        'ZhClient' => 'includes/ZhClient.php',
        'ZipDirectoryReader' => 'includes/ZipDirectoryReader.php',
+       'ZipDirectoryReaderError' => 'includes/ZipDirectoryReader.php',
 
        # includes/actions
        'CachedAction' => 'includes/actions/CachedAction.php',
@@ -444,9 +452,12 @@ $wgAutoloadLocalClasses = array(
        'DatabaseSqlite' => 'includes/db/DatabaseSqlite.php',
        'DatabaseSqliteStandalone' => 'includes/db/DatabaseSqlite.php',
        'DatabaseType' => 'includes/db/Database.php',
+       'DBAccessError' => 'includes/db/LBFactory.php',
        'DBConnectionError' => 'includes/db/DatabaseError.php',
        'DBError' => 'includes/db/DatabaseError.php',
        'DBObject' => 'includes/db/DatabaseUtility.php',
+       'IORMRow' => 'includes/db/IORMRow.php',
+       'IORMTable' => 'includes/db/IORMTable.php',
        'DBMasterPos' => 'includes/db/DatabaseUtility.php',
        'DBQueryError' => 'includes/db/DatabaseError.php',
        'DBUnexpectedError' => 'includes/db/DatabaseError.php',
@@ -454,7 +465,10 @@ $wgAutoloadLocalClasses = array(
        'Field' => 'includes/db/DatabaseUtility.php',
        'IBM_DB2Blob' => 'includes/db/DatabaseIbm_db2.php',
        'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
+       'IBM_DB2Helper' => 'includes/db/DatabaseIbm_db2.php',
+       'IBM_DB2Result' => 'includes/db/DatabaseIbm_db2.php',
        'LBFactory' => 'includes/db/LBFactory.php',
+       'LBFactory_Fake' => 'includes/db/LBFactory.php',
        'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
        'LBFactory_Simple' => 'includes/db/LBFactory.php',
        'LBFactory_Single' => 'includes/db/LBFactory_Single.php',
@@ -464,15 +478,20 @@ $wgAutoloadLocalClasses = array(
        'LoadMonitor' => 'includes/db/LoadMonitor.php',
        'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
        'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
+       'MssqlField' => 'includes/db/DatabaseMssql.php',
+       'MssqlResult' => 'includes/db/DatabaseMssql.php',
        'MySQLField' => 'includes/db/DatabaseMysql.php',
        'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
        'ORAField' => 'includes/db/DatabaseOracle.php',
        'ORAResult' => 'includes/db/DatabaseOracle.php',
+       'ORMIterator' => 'includes/db/ORMIterator.php',
        'ORMResult' => 'includes/db/ORMResult.php',
        'ORMRow' => 'includes/db/ORMRow.php',
        'ORMTable' => 'includes/db/ORMTable.php',
        'PostgresField' => 'includes/db/DatabasePostgres.php',
+       'PostgresTransactionState' => 'includes/db/DatabasePostgres.php',
        'ResultWrapper' => 'includes/db/DatabaseUtility.php',
+       'SavepointPostgres' => 'includes/db/DatabasePostgres.php',
        'SQLiteField' => 'includes/db/DatabaseSqlite.php',
 
        # includes/debug
@@ -512,6 +531,7 @@ $wgAutoloadLocalClasses = array(
        'LocalRepo' => 'includes/filerepo/LocalRepo.php',
        'NullRepo' => 'includes/filerepo/NullRepo.php',
        'RepoGroup' => 'includes/filerepo/RepoGroup.php',
+       'TempFileRepo' => 'includes/filerepo/FileRepo.php',
 
        # includes/filerepo/file
        'ArchivedFile' => 'includes/filerepo/file/ArchivedFile.php',
@@ -555,6 +575,8 @@ $wgAutoloadLocalClasses = array(
        'FSLockManager' => 'includes/filerepo/backend/lockmanager/FSLockManager.php',
        'DBLockManager' => 'includes/filerepo/backend/lockmanager/DBLockManager.php',
        'LSLockManager' => 'includes/filerepo/backend/lockmanager/LSLockManager.php',
+       'MemcLockManager' => 'includes/filerepo/backend/lockmanager/MemcLockManager.php',
+       'QuorumLockManager' => 'includes/filerepo/backend/lockmanager/LockManager.php',
        'MySqlLockManager'=> 'includes/filerepo/backend/lockmanager/DBLockManager.php',
        'NullLockManager' => 'includes/filerepo/backend/lockmanager/LockManager.php',
        'FileOp' => 'includes/filerepo/backend/FileOp.php',
@@ -611,7 +633,7 @@ $wgAutoloadLocalClasses = array(
        'DoubleRedirectJob' => 'includes/job/DoubleRedirectJob.php',
        'EmaillingJob' => 'includes/job/EmaillingJob.php',
        'EnotifNotifyJob' => 'includes/job/EnotifNotifyJob.php',
-       'Job' => 'includes/job/JobQueue.php',
+       'Job' => 'includes/job/Job.php',
        'RefreshLinksJob' => 'includes/job/RefreshLinksJob.php',
        'RefreshLinksJob2' => 'includes/job/RefreshLinksJob.php',
        'UploadFromUrlJob' => 'includes/job/UploadFromUrlJob.php',
@@ -623,13 +645,18 @@ $wgAutoloadLocalClasses = array(
 
        # includes/libs
        'CSSJanus' => 'includes/libs/CSSJanus.php',
+       'CSSJanus_Tokenizer' => 'includes/libs/CSSJanus.php',
        'CSSMin' => 'includes/libs/CSSMin.php',
        'HttpStatus' => 'includes/libs/HttpStatus.php',
        'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php',
        'IEUrlExtension' => 'includes/libs/IEUrlExtension.php',
        'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
+       'JSCompilerContext' => 'includes/libs/jsminplus.php',
        'JSMinPlus' => 'includes/libs/jsminplus.php',
+       'JSNode' => 'includes/libs/jsminplus.php',
        'JSParser' => 'includes/libs/jsminplus.php',
+       'JSToken' => 'includes/libs/jsminplus.php',
+       'JSTokenizer' => 'includes/libs/jsminplus.php',
 
        # includes/logging
        'DatabaseLogEntry' => 'includes/logging/LogEntry.php',
@@ -672,6 +699,7 @@ $wgAutoloadLocalClasses = array(
        'PNGMetadataExtractor' => 'includes/media/PNGMetadataExtractor.php',
        'SvgHandler' => 'includes/media/SVG.php',
        'SVGMetadataExtractor' => 'includes/media/SVGMetadataExtractor.php',
+       'SVGReader' => 'includes/media/SVGMetadataExtractor.php',
        'ThumbnailImage' => 'includes/media/MediaTransformOutput.php',
        'TiffHandler' => 'includes/media/Tiff.php',
        'TransformParameterError' => 'includes/media/MediaTransformOutput.php',
@@ -712,6 +740,7 @@ $wgAutoloadLocalClasses = array(
        'LinkHolderArray' => 'includes/parser/LinkHolderArray.php',
        'LinkMarkerReplacer' => 'includes/parser/Parser_LinkHooks.php',
        'MWTidy' => 'includes/parser/Tidy.php',
+       'MWTidyWrapper' => 'includes/parser/Tidy.php',
        'PPCustomFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
        'PPCustomFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
        'PPCustomFrame_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
@@ -783,6 +812,7 @@ $wgAutoloadLocalClasses = array(
        # includes/revisiondelete
        'RevDel_ArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
+       'RevDel_ArchivedRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_ArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
        'RevDel_FileItem' => 'includes/revisiondelete/RevisionDelete.php',
@@ -798,6 +828,7 @@ $wgAutoloadLocalClasses = array(
        'RevisionDeleteUser' => 'includes/revisiondelete/RevisionDeleteUser.php',
 
        # includes/search
+       'MssqlSearchResultSet' => 'includes/search/SearchMssql.php',
        'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
        'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
        'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
@@ -807,6 +838,7 @@ $wgAutoloadLocalClasses = array(
        'SearchIBM_DB2' => 'includes/search/SearchIBM_DB2.php',
        'SearchMssql' => 'includes/search/SearchMssql.php',
        'SearchMySQL' => 'includes/search/SearchMySQL.php',
+       'SearchNearMatchResultSet' => 'includes/search/SearchEngine.php',
        'SearchOracle' => 'includes/search/SearchOracle.php',
        'SearchPostgres' => 'includes/search/SearchPostgres.php',
        'SearchResult' => 'includes/search/SearchEngine.php',
@@ -824,6 +856,7 @@ $wgAutoloadLocalClasses = array(
        'AncientPagesPage' => 'includes/specials/SpecialAncientpages.php',
        'BlockListPager' => 'includes/specials/SpecialBlockList.php',
        'BrokenRedirectsPage' => 'includes/specials/SpecialBrokenRedirects.php',
+       'CategoryPager' => 'includes/specials/SpecialCategories.php',
        'ContribsPager' => 'includes/specials/SpecialContributions.php',
        'DBLockForm' => 'includes/specials/SpecialLockdb.php',
        'DBUnlockForm' => 'includes/specials/SpecialUnlockdb.php',
@@ -832,11 +865,14 @@ $wgAutoloadLocalClasses = array(
        'DeletedContributionsPage' => 'includes/specials/SpecialDeletedContributions.php',
        'DisambiguationsPage' => 'includes/specials/SpecialDisambiguations.php',
        'DoubleRedirectsPage' => 'includes/specials/SpecialDoubleRedirects.php',
+       'EditWatchlistCheckboxSeriesField' => 'includes/specials/SpecialEditWatchlist.php',
+       'EditWatchlistNormalHTMLForm' => 'includes/specials/SpecialEditWatchlist.php',
        'EmailConfirmation' => 'includes/specials/SpecialConfirmemail.php',
        'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
        'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
        'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
        'HTMLBlockedUsersItemSelect' => 'includes/specials/SpecialBlockList.php',
+       'ImageListPager' => 'includes/specials/SpecialListfiles.php',
        'ImportReporter' => 'includes/specials/SpecialImport.php',
        'IPBlockForm' => 'includes/specials/SpecialBlock.php',
        'LinkSearchPage' => 'includes/specials/SpecialLinkSearch.php',
@@ -844,6 +880,7 @@ $wgAutoloadLocalClasses = array(
        'LoginForm' => 'includes/specials/SpecialUserlogin.php',
        'LonelyPagesPage' => 'includes/specials/SpecialLonelypages.php',
        'LongPagesPage' => 'includes/specials/SpecialLongpages.php',
+       'MergeHistoryPager' => 'includes/specials/SpecialMergeHistory.php',
        'MIMEsearchPage' => 'includes/specials/SpecialMIMEsearch.php',
        'MostcategoriesPage' => 'includes/specials/SpecialMostcategories.php',
        'MostimagesPage' => 'includes/specials/SpecialMostimages.php',
@@ -852,9 +889,12 @@ $wgAutoloadLocalClasses = array(
        'MostlinkedTemplatesPage' => 'includes/specials/SpecialMostlinkedtemplates.php',
        'MostrevisionsPage' => 'includes/specials/SpecialMostrevisions.php',
        'MovePageForm' => 'includes/specials/SpecialMovepage.php',
+       'NewFilesPager' => 'includes/specials/SpecialNewimages.php',
        'NewPagesPager' => 'includes/specials/SpecialNewpages.php',
        'PageArchive' => 'includes/specials/SpecialUndelete.php',
        'PopularPagesPage' => 'includes/specials/SpecialPopularpages.php',
+       'ProtectedPagesPager' => 'includes/specials/SpecialProtectedpages.php',
+       'ProtectedTitlesPager' => 'includes/specials/SpecialProtectedtitles.php',
        'RandomPage' => 'includes/specials/SpecialRandompage.php',
        'ShortPagesPage' => 'includes/specials/SpecialShortpages.php',
        'SpecialActiveUsers' => 'includes/specials/SpecialActiveusers.php',
@@ -905,10 +945,11 @@ $wgAutoloadLocalClasses = array(
        'SpecialUnlockdb' => 'includes/specials/SpecialUnlockdb.php',
        'SpecialUpload' => 'includes/specials/SpecialUpload.php',
        'SpecialUploadStash' => 'includes/specials/SpecialUploadStash.php',
+       'SpecialUploadStashTooLargeException' => 'includes/specials/SpecialUploadStash.php',
        'SpecialUserlogout' => 'includes/specials/SpecialUserlogout.php',
        'SpecialVersion' => 'includes/specials/SpecialVersion.php',
        'SpecialWatchlist' => 'includes/specials/SpecialWatchlist.php',
-       'SpecialWhatlinkshere' => 'includes/specials/SpecialWhatlinkshere.php',
+       'SpecialWhatLinksHere' => 'includes/specials/SpecialWhatlinkshere.php',
        'UncategorizedCategoriesPage' => 'includes/specials/SpecialUncategorizedcategories.php',
        'UncategorizedImagesPage' => 'includes/specials/SpecialUncategorizedimages.php',
        'UncategorizedPagesPage' => 'includes/specials/SpecialUncategorizedpages.php',
@@ -917,6 +958,8 @@ $wgAutoloadLocalClasses = array(
        'UnusedimagesPage' => 'includes/specials/SpecialUnusedimages.php',
        'UnusedtemplatesPage' => 'includes/specials/SpecialUnusedtemplates.php',
        'UnwatchedpagesPage' => 'includes/specials/SpecialUnwatchedpages.php',
+       'UploadChunkFileException' => 'includes/upload/UploadFromChunks.php',
+       'UploadChunkZeroLengthFileException' => 'includes/upload/UploadFromChunks.php',
        'UploadForm' => 'includes/specials/SpecialUpload.php',
        'UploadSourceField' => 'includes/specials/SpecialUpload.php',
        'UserrightsPage' => 'includes/specials/SpecialUserrights.php',
@@ -951,6 +994,7 @@ $wgAutoloadLocalClasses = array(
        'UploadStashNoSuchKeyException' => 'includes/upload/UploadStash.php',
 
        # languages
+       'ConverterRule' => 'languages/LanguageConverter.php',
        'FakeConverter' => 'languages/Language.php',
        'Language' => 'languages/Language.php',
        'LanguageConverter' => 'languages/LanguageConverter.php',
@@ -980,6 +1024,7 @@ $wgAutoloadLocalClasses = array(
 
        # maintenance/language
        'csvStatsOutput' => 'maintenance/language/StatOutputs.php',
+       'extensionLanguages' => 'maintenance/language/languages.inc',
        'languages' => 'maintenance/language/languages.inc',
        'MessageWriter' => 'maintenance/language/writeMessagesArray.inc',
        'statsOutput' => 'maintenance/language/StatOutputs.php',
@@ -990,16 +1035,20 @@ $wgAutoloadLocalClasses = array(
        'AnsiTermColorer'  => 'maintenance/term/MWTerm.php',
        'DummyTermColorer' => 'maintenance/term/MWTerm.php',
 
+       # mw-config
+       'InstallerOverrides' => 'mw-config/overrides.php',
+       'MyLocalSettingsGenerator' => 'mw-config/overrides.php',
+
        # tests
        'DbTestPreviewer' => 'tests/testHelpers.inc',
        'DbTestRecorder' => 'tests/testHelpers.inc',
+       'DelayedParserTest' => 'tests/testHelpers.inc',
        'TestFileIterator' => 'tests/testHelpers.inc',
        'TestRecorder' => 'tests/testHelpers.inc',
 
        # tests/parser
        'ParserTest' => 'tests/parser/parserTest.inc',
        'ParserTestParserHook' => 'tests/parser/parserTestsParserHook.php',
-       'ParserTestStaticParserHook' => 'tests/parser/parserTestsStaticParserHook.php',
 
        # tests/selenium
        'Selenium' => 'tests/selenium/Selenium.php',
@@ -1010,6 +1059,23 @@ $wgAutoloadLocalClasses = array(
        'SeleniumTestListener' => 'tests/selenium/SeleniumTestListener.php',
        'SeleniumTestSuite' => 'tests/selenium/SeleniumTestSuite.php',
        'SeleniumConfig' => 'tests/selenium/SeleniumConfig.php',
+
+       # skins
+       'CologneBlueTemplate' => 'skins/CologneBlue.php',
+       'ModernTemplate' => 'skins/Modern.php',
+       'MonoBookTemplate' => 'skins/MonoBook.php',
+       'NostalgiaTemplate' => 'skins/Nostalgia.php',
+       'SkinChick' => 'skins/Chick.php',
+       'SkinCologneBlue' => 'skins/CologneBlue.php',
+       'SkinModern' => 'skins/Modern.php',
+       'SkinMonoBook' => 'skins/MonoBook.php',
+       'SkinMySkin' => 'skins/MySkin.php',
+       'SkinNostalgia' => 'skins/Nostalgia.php',
+       'SkinSimple' => 'skins/Simple.php',
+       'SkinStandard' => 'skins/Standard.php',
+       'SkinVector' => 'skins/Vector.php',
+       'StandardTemplate' => 'skins/Standard.php',
+       'VectorTemplate' => 'skins/Vector.php',
 );
 
 class AutoLoader {
@@ -1024,6 +1090,14 @@ class AutoLoader {
        static function autoload( $className ) {
                global $wgAutoloadClasses, $wgAutoloadLocalClasses;
 
+               // Workaround for PHP bug <https://bugs.php.net/bug.php?id=49143> (5.3.2. is broken, it's fixed in 5.3.6).
+               // Strip leading backslashes from class names. When namespaces are used, leading backslashes are used to indicate
+               // the top-level namespace, e.g. \foo\Bar. When used like this in the code, the leading backslash isn't passed to
+               // the auto-loader ($className would be 'foo\Bar'). However, if a class is accessed using a string instead of a
+               // class literal (e.g. $class = '\foo\Bar'; new $class()), then some versions of PHP do not strip the leading
+               // backlash in this case, causing autoloading to fail.
+               $className = ltrim( $className, '\\' );
+
                if ( isset( $wgAutoloadLocalClasses[$className] ) ) {
                        $filename = $wgAutoloadLocalClasses[$className];
                } elseif ( isset( $wgAutoloadClasses[$className] ) ) {
@@ -1066,6 +1140,7 @@ class AutoLoader {
         * Sanitizer that have define()s outside of their class definition. Of course
         * this wouldn't be necessary if everything in MediaWiki was class-based. Sigh.
         *
+        * @param $class string
         * @return Boolean Return the results of class_exists() so we know if we were successful
         */
        static function loadClass( $class ) {
index 7cdc756..301a45a 100644 (file)
@@ -126,17 +126,42 @@ class Block {
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->selectRow(
                        'ipblocks',
-                       '*',
+                       self::selectFields(),
                        array( 'ipb_id' => $id ),
                        __METHOD__
                );
                if ( $res ) {
-                       return Block::newFromRow( $res );
+                       return self::newFromRow( $res );
                } else {
                        return null;
                }
        }
 
+       /**
+        * Return the list of ipblocks fields that should be selected to create
+        * a new block.
+        * @return array
+        */
+       public static function selectFields() {
+               return array(
+                       'ipb_id',
+                       'ipb_address',
+                       'ipb_by',
+                       'ipb_by_text',
+                       'ipb_reason',
+                       'ipb_timestamp',
+                       'ipb_auto',
+                       'ipb_anon_only',
+                       'ipb_create_account',
+                       'ipb_enable_autoblock',
+                       'ipb_expiry',
+                       'ipb_deleted',
+                       'ipb_block_email',
+                       'ipb_allow_usertalk',
+                       'ipb_parent_block_id',
+               );
+       }
+
        /**
         * Check if two blocks are effectively equal.  Doesn't check irrelevant things like
         * the blocking user or the block timestamp, only things which affect the blocked user   *
@@ -247,7 +272,7 @@ class Block {
                        }
                }
 
-               $res = $db->select( 'ipblocks', '*', $conds, __METHOD__ );
+               $res = $db->select( 'ipblocks', self::selectFields(), $conds, __METHOD__ );
 
                # This result could contain a block on the user, a block on the IP, and a russian-doll
                # set of rangeblocks.  We want to choose the most specific one, so keep a leader board.
@@ -260,7 +285,7 @@ class Block {
                $bestBlockPreventsEdit = null;
 
                foreach( $res as $row ){
-                       $block = Block::newFromRow( $row );
+                       $block = self::newFromRow( $row );
 
                        # Don't use expired blocks
                        if( $block->deleteIfExpired() ){
index d7f78ec..32e270e 100644 (file)
@@ -21,9 +21,6 @@
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
 /**
  * Special handling for category description pages, showing pages,
  * subcategories and file that belong to the category
index 553d64f..ddd01eb 100644 (file)
@@ -20,9 +20,6 @@
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
 class CategoryViewer extends ContextSource {
        var $limit, $from, $until,
                $articles, $articles_start_char,
@@ -125,7 +122,7 @@ class CategoryViewer extends ContextSource {
 
                // Give a proper message if category is empty
                if ( $r == '' ) {
-                       $r = wfMsgExt( 'category-empty', array( 'parse' ) );
+                       $r = $this->msg( 'category-empty' )->parseAsBlock();
                }
 
                $lang = $this->getLanguage();
@@ -372,7 +369,7 @@ class CategoryViewer extends ContextSource {
                if ( $rescnt > 0 ) {
                        # Showing subcategories
                        $r .= "<div id=\"mw-subcategories\">\n";
-                       $r .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'subcategories' )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'subcat' );
                        $r .= $this->formatList( $this->children, $this->children_start_char );
@@ -386,7 +383,7 @@ class CategoryViewer extends ContextSource {
         * @return string
         */
        function getPagesSection() {
-               $ti = htmlspecialchars( $this->title->getText() );
+               $ti = wfEscapeWikiText( $this->title->getText() );
                # Don't show articles section if there are none.
                $r = '';
 
@@ -401,7 +398,7 @@ class CategoryViewer extends ContextSource {
 
                if ( $rescnt > 0 ) {
                        $r = "<div id=\"mw-pages\">\n";
-                       $r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category_header', $ti )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'page' );
                        $r .= $this->formatList( $this->articles, $this->articles_start_char );
@@ -422,7 +419,7 @@ class CategoryViewer extends ContextSource {
                        $countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'file' );
 
                        $r .= "<div id=\"mw-category-media\">\n";
-                       $r .= '<h2>' . wfMsg( 'category-media-header', htmlspecialchars( $this->title->getText() ) ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category-media-header', wfEscapeWikiText( $this->title->getText() ) )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'file' );
                        if ( $this->showGallery ) {
@@ -579,7 +576,7 @@ class CategoryViewer extends ContextSource {
         * @return String HTML
         */
        private function pagingLinks( $first, $last, $type = '' ) {
-               $prevLink = wfMessage( 'prevn' )->numParams( $this->limit )->escaped();
+               $prevLink = $this->msg( 'prevn' )->numParams( $this->limit )->escaped();
 
                if ( $first != '' ) {
                        $prevQuery = $this->query;
@@ -593,7 +590,7 @@ class CategoryViewer extends ContextSource {
                        );
                }
 
-               $nextLink = wfMessage( 'nextn' )->numParams( $this->limit )->escaped();
+               $nextLink = $this->msg( 'nextn' )->numParams( $this->limit )->escaped();
 
                if ( $last != '' ) {
                        $lastQuery = $this->query;
@@ -607,7 +604,7 @@ class CategoryViewer extends ContextSource {
                        );
                }
 
-               return "($prevLink) ($nextLink)";
+               return $this->msg('categoryviewer-pagedlinks')->rawParams($prevLink, $nextLink)->escaped();
        }
 
        /**
@@ -691,8 +688,8 @@ class CategoryViewer extends ContextSource {
                        $this->cat->refreshCounts();
                } else {
                        # Case 3: hopeless.  Don't give a total count at all.
-                       return wfMessage( "category-$type-count-limited" )->numParams( $rescnt )->parseAsBlock();
+                       return $this->msg( "category-$type-count-limited" )->numParams( $rescnt )->parseAsBlock();
                }
-               return wfMessage( "category-$type-count" )->numParams( $rescnt, $totalcnt )->parseAsBlock();
+               return $this->msg( "category-$type-count" )->numParams( $rescnt, $totalcnt )->parseAsBlock();
        }
 }
index c6572b1..8b0fa06 100644 (file)
@@ -874,8 +874,10 @@ class EnhancedChangesList extends ChangesList {
                        array_push( $users, $text );
                }
 
-               $users = ' <span class="changedby">[' .
-                       implode( $this->message['semicolon-separator'], $users ) . ']</span>';
+               $users = ' <span class="changedby">'
+                       . $this->msg( 'brackets' )->rawParams(
+                               implode( $this->message['semicolon-separator'], $users )
+                       )->escaped() . '</span>';
 
                $tl = '<span class="mw-collapsible-toggle mw-enhancedchanges-arrow"></span>';
                $r .= "<td>$tl</td>";
@@ -1169,7 +1171,7 @@ class EnhancedChangesList extends ChangesList {
                } else { 
                        $r .= ' '.$rcObj->userlink . $rcObj->usertalklink;
                        $r .= $this->insertComment( $rcObj );
-                       $r .= $this->insertRollback( $r, $rcObj );
+                       $this->insertRollback( $r, $rcObj );
                }
 
                # Tags
index 57b9c35..6e59a86 100644 (file)
@@ -240,7 +240,16 @@ $wgAppleTouchIcon = false;
  * The local filesystem path to a temporary directory. This is not required to
  * be web accessible.
  *
- * Will default to "{$wgUploadDirectory}/tmp" in Setup.php
+ * When this setting is set to false, its value will be set through a call
+ * to wfTempDir(). See that methods implementation for the actul detection
+ * logic.
+ *
+ * Developers should use the global function wfTempDir() instead of this
+ * variable.
+ *
+ * @see wfTempDir()
+ * @note Default modified to false in v1.20
+ *
  */
 $wgTmpDirectory = false;
 
@@ -328,9 +337,11 @@ $wgImgAuthPublicTest = true;
  *   - zones            Associative array of zone names that each map to an array with:
  *                          container : backend container name the zone is in
  *                          directory : root path within container for the zone
- *                      Zones default to using <repo name>-<zone> as the
- *                      container name and the container root as the zone directory.
- *   - url              Base public URL
+ *                          url       : base URL to the root of the zone
+ *                      Zones default to using <repo name>-<zone name> as the container name
+ *                      and default to using the container root as the zone's root directory.
+ *                      Nesting of zone locations within other zones should be avoided.
+ *   - url              Public zone URL. The 'zones' settings take precedence.
  *   - hashLevels       The number of directory levels for hash-based division of files
  *   - thumbScriptUrl   The URL for thumb.php (optional, not recommended)
  *   - transformVia404  Whether to skip media file transformation on parse and rely on a 404
@@ -1370,9 +1381,6 @@ $wgDBClusterTimeout = 10;
  */
 $wgDBAvgStatusPoll = 2000;
 
-/** Set to true if using InnoDB tables */
-$wgDBtransactions = false;
-
 /**
  * Set to true to engage MySQL 4.1/5.0 charset-related features;
  * for now will just cause sending of 'SET NAMES=utf8' on connect.
@@ -3457,12 +3465,19 @@ $wgSysopEmailBans = true;
  * Limits on the possible sizes of range blocks.
  *
  * CIDR notation is hard to understand, it's easy to mistakenly assume that a
- * /1 is a small range and a /31 is a large range. Setting this to half the
- * number of bits avoids such errors.
+ * /1 is a small range and a /31 is a large range. For IPv4, setting a limit of
+ * half the number of bits avoids such errors, and allows entire ISPs to be
+ * blocked using a small number of range blocks.
+ *
+ * For IPv6, RFC 3177 recommends that a /48 be allocated to every residential
+ * customer, so range blocks larger than /64 (half the number of bits) will
+ * plainly be required. RFC 4692 implies that a very large ISP may be
+ * allocated a /19 if a generous HD-Ratio of 0.8 is used, so we will use that
+ * as our limit. As of 2012, blocking the whole world would require a /4 range.
  */
 $wgBlockCIDRLimit = array(
        'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed
-       'IPv6' => 64, # 2^64 = ~1.8x10^19 addresses
+       'IPv6' => 19,
 );
 
 /**
@@ -5760,6 +5775,19 @@ $wgCompiledFiles = array();
 /** @} */ # End of HipHop compilation }
 
 
+/************************************************************************//**
+ * @name   Mobile support
+ * @{
+ */
+
+/**
+ * Name of the class used for mobile device detection, must be inherited from
+ * IDeviceDetector.
+ */
+$wgDeviceDetectionClass = 'DeviceDetection';
+
+/** @} */ # End of Mobile support }
+
 /************************************************************************//**
  * @name   Miscellaneous
  * @{
diff --git a/includes/DeviceDetection.php b/includes/DeviceDetection.php
deleted file mode 100644 (file)
index cc68667..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-<?php
-/**
- * Device detection class
- *
- * Copyright © 2011 Patrick Reilly
- * http://www.mediawiki.org/
- *
- * 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
- */
-
-/**
- * Provides abstraction for a device.
- * A device can select which format a request should receive and
- * may be extended to provide access to particular device functionality.
- * @since 1.20
- */
-class DeviceDetection {
-
-       /**
-        * @return array
-        */
-       public function getAvailableFormats() {
-               $formats = array (
-                       'html' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'capable' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'webkit' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'webkit',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'webkit',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'ie' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'android' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'android',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'iphone' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'webkit',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'iphone',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'iphone2' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'iphone2',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'native_iphone' => array (
-                               'view_format' => 'html',
-                               'search_bar' => false,
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                               'parser' => 'html',
-                               'disable_links' => false,
-                       ),
-                       'palm_pre' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'palm_pre',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'kindle' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'kindle',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'kindle',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'kindle2' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'kindle',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'kindle',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'blackberry' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'blackberry',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'blackberry-lt5' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'default',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'blackberry',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'netfront' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'wap2' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'psp' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'psp',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'ps3' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'wii' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'wii',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'wii',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'operamini' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'operamini',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'operamobile' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'simple',
-                               'footmenu' => 'simple',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'operamobile',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'nokia' => array (
-                               'view_format' => 'html',
-                               'search_bar' => 'webkit',
-                               'footmenu' => 'default',
-                               'with_layout' => 'application',
-                               'css_file_name' => 'nokia',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                               'parser' => 'html',
-                               'disable_links' => true,
-                       ),
-                       'wml' => array (
-                               'view_format' => 'wml',
-                               'search_bar' => 'wml',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'parser' => 'wml',
-                       ),
-               );
-               return $formats;
-       }
-
-       /**
-        * @param $userAgent
-        * @param string $acceptHeader
-        * @return array
-        */
-       public function detectDevice( $userAgent, $acceptHeader = '' ) {
-               $formatName = $this->detectFormatName( $userAgent, $acceptHeader );
-               return $this->getDevice( $formatName );
-       }
-
-       /**
-        * @param $formatName
-        * @return array
-        */
-       public function getDevice( $formatName ) {
-               $format = $this->getAvailableFormats();
-               return ( isset( $format[$formatName] ) ) ? $format[$formatName] : array();
-       }
-
-       /**
-        * @param $userAgent string
-        * @param $acceptHeader string
-        * @return string
-        */
-       public function detectFormatName( $userAgent, $acceptHeader = '' ) {
-               $formatName = '';
-
-               if ( preg_match( '/Android/', $userAgent ) ) {
-                       $formatName = 'android';
-                       if ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
-                               $formatName = 'operamini';
-                       }
-               } else if ( preg_match( '/MSIE 9.0/', $userAgent ) ||
-                               preg_match( '/MSIE 8.0/', $userAgent ) ) {
-                       $formatName = 'ie';
-               } else if( preg_match( '/MSIE/', $userAgent ) ) {
-                       $formatName = 'html';
-               } else if ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
-                       $formatName = 'operamobile';
-               } elseif ( preg_match( '/iPad.* Safari/', $userAgent ) ) {
-                       $formatName = 'iphone';
-               } elseif ( preg_match( '/iPhone.* Safari/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'iPhone OS 2' ) !== false ) {
-                               $formatName = 'iphone2';
-                       } else {
-                               $formatName = 'iphone';
-                       }
-               } elseif ( preg_match( '/iPhone/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'Opera' ) !== false ) {
-                               $formatName = 'operamini';
-                       } else {
-                               $formatName = 'native_iphone';
-                       }
-               } elseif ( preg_match( '/WebKit/', $userAgent ) ) {
-                       if ( preg_match( '/Series60/', $userAgent ) ) {
-                               $formatName = 'nokia';
-                       } elseif ( preg_match( '/webOS/', $userAgent ) ) {
-                               $formatName = 'palm_pre';
-                       } else {
-                               $formatName = 'webkit';
-                       }
-               } elseif ( preg_match( '/Opera/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'Nintendo Wii' ) !== false ) {
-                               $formatName = 'wii';
-                       } elseif ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
-                               $formatName = 'operamini';
-                       } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
-                               $formatName = 'iphone';
-                       } else {
-                               $formatName = 'webkit';
-                       }
-               } elseif ( preg_match( '/Kindle\/1.0/', $userAgent ) ) {
-                       $formatName = 'kindle';
-               } elseif ( preg_match( '/Kindle\/2.0/', $userAgent ) ) {
-                       $formatName = 'kindle2';
-               } elseif ( preg_match( '/Firefox/', $userAgent ) ) {
-                       $formatName = 'capable';
-               } elseif ( preg_match( '/NetFront/', $userAgent ) ) {
-                       $formatName = 'netfront';
-               } elseif ( preg_match( '/SEMC-Browser/', $userAgent ) ) {
-                       $formatName = 'wap2';
-               } elseif ( preg_match( '/Series60/', $userAgent ) ) {
-                       $formatName = 'wap2';
-               } elseif ( preg_match( '/PlayStation Portable/', $userAgent ) ) {
-                       $formatName = 'psp';
-               } elseif ( preg_match( '/PLAYSTATION 3/', $userAgent ) ) {
-                       $formatName = 'ps3';
-               } elseif ( preg_match( '/SAMSUNG/', $userAgent ) ) {
-                       $formatName = 'capable';
-               } elseif ( preg_match( '/BlackBerry/', $userAgent ) ) {
-                       if( preg_match( '/BlackBerry[^\/]*\/[1-4]\./', $userAgent ) ) {
-                               $formatName = 'blackberry-lt5';
-                       } else {
-                               $formatName = 'blackberry';
-                       }
-               }
-
-               if ( $formatName === '' ) {
-                       if ( strpos( $acceptHeader, 'application/vnd.wap.xhtml+xml' ) !== false ) {
-                               // Should be wap2
-                               $formatName = 'html';
-                       } elseif ( strpos( $acceptHeader, 'vnd.wap.wml' ) !== false ) {
-                               $formatName = 'wml';
-                       } else {
-                               $formatName = 'html';
-                       }
-               }
-               return $formatName;
-       }
-
-       /**
-        * @return array: List of all device-specific stylesheets
-        */
-       public function getCssFiles() {
-               $devices = $this->getAvailableFormats();
-               $files = array();
-               foreach ( $devices as $dev ) {
-                       if ( isset( $dev['css_file_name'] ) ) {
-                               $files[] = $dev['css_file_name'];
-                       }
-               }
-               return array_unique( $files );
-       }
-}
index 9e337fd..6e6f825 100644 (file)
@@ -1063,7 +1063,6 @@ class EditPage {
                                        '</div>';
                                return true;
                }
-               return false;
        }
 
        /**
index 9c472bf..502f2ad 100644 (file)
@@ -246,6 +246,9 @@ class MWException extends Exception {
                } elseif ( self::isCommandLine() ) {
                        MWExceptionHandler::printError( $this->getText() );
                } else {
+                       header( "HTTP/1.1 500 MediaWiki exception" );
+                       header( "Status: 500 MediaWiki exception", true );
+
                        $this->reportHTML();
                }
        }
@@ -289,7 +292,13 @@ class ErrorPageError extends MWException {
        public $title, $msg, $params;
 
        /**
+        * @todo document
+        *
         * Note: these arguments are keys into wfMsg(), not text!
+        *
+        * @param $title A title
+        * @param $msg String|Message . In string form, should be a message key
+        * @param $params Array Array to wfMsg()
         */
        function __construct( $title, $msg, $params = null ) {
                $this->title = $title;
@@ -454,6 +463,49 @@ class UserBlockedError extends ErrorPageError {
        }
 }
 
+/**
+ * Shows a generic "user is not logged in" error page.
+ *
+ * This is essentially an ErrorPageError exception which by default use the
+ * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
+ * @see bug 37627
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon ) {
+ *     throw new UserNotLoggedIn();
+ * }
+ * @endcode
+ *
+ * Please note the parameters are mixed up compared to ErrorPageError, this
+ * is done to be able to simply specify a reason whitout overriding the default
+ * title.
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon ) {
+ *     throw new UserNotLoggedIn( 'action-require-loggedin' );
+ * }
+ * @endcode
+ *
+ * @param $reasonMsg A message key containing the reason for the error.
+ *        Optional, default: 'exception-nologin-text'
+ * @param $titleMsg A message key to set the page title.
+ *        Optional, default: 'exception-nologin'
+ * @param $params Parameters to wfMsg().
+ *        Optiona, default: null
+ */
+class UserNotLoggedIn extends ErrorPageError {
+
+       public function __construct(
+               $reasonMsg = 'exception-nologin-text',
+               $titleMsg  = 'exception-nologin',
+               $params = null
+       ) {
+               parent::__construct( $titleMsg, $reasonMsg, $params );
+       }
+}
+
 /**
  * Show an error that looks like an HTTP server error.
  * Replacement for wfHttpError().
index c201c97..36d98d6 100644 (file)
@@ -468,7 +468,7 @@ class XmlDumpWriter {
         * @return string
         */
        function schemaVersion() {
-               return "0.6";
+               return "0.7";
        }
 
        /**
@@ -626,6 +626,9 @@ class XmlDumpWriter {
 
                $out  = "    <revision>\n";
                $out .= "      " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
+               if( $row->rev_parent_id ) {
+                       $out .= "      " . Xml::element( 'parentid', null, strval( $row->rev_parent_id ) ) . "\n";
+               }
 
                $out .= $this->writeTimestamp( $row->rev_timestamp );
 
@@ -644,6 +647,12 @@ class XmlDumpWriter {
                        $out .= "      " . Xml::elementClean( 'comment', array(), strval( $row->rev_comment ) ) . "\n";
                }
 
+               if ( $row->rev_sha1 && !( $row->rev_deleted & Revision::DELETED_TEXT ) ) {
+                       $out .= "      " . Xml::element('sha1', null, strval( $row->rev_sha1 ) ) . "\n";
+               } else {
+                       $out .= "      <sha1/>\n";
+               }
+
                $text = '';
                if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
                        $out .= "      " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
@@ -660,12 +669,6 @@ class XmlDumpWriter {
                                "" ) . "\n";
                }
 
-               if ( $row->rev_sha1 && !( $row->rev_deleted & Revision::DELETED_TEXT ) ) {
-                       $out .= "      " . Xml::element('sha1', null, strval( $row->rev_sha1 ) ) . "\n";
-               } else {
-                       $out .= "      <sha1/>\n";
-               }
-
                wfRunHooks( 'XmlDumpWriterWriteRevision', array( &$this, &$out, $row, $text ) );
 
                $out .= "    </revision>\n";
@@ -685,37 +688,37 @@ class XmlDumpWriter {
        function writeLogItem( $row ) {
                wfProfileIn( __METHOD__ );
 
-               $out  = "    <logitem>\n";
-               $out .= "      " . Xml::element( 'id', null, strval( $row->log_id ) ) . "\n";
+               $out  = "  <logitem>\n";
+               $out .= "    " . Xml::element( 'id', null, strval( $row->log_id ) ) . "\n";
 
-               $out .= $this->writeTimestamp( $row->log_timestamp );
+               $out .= $this->writeTimestamp( $row->log_timestamp, "    " );
 
                if ( $row->log_deleted & LogPage::DELETED_USER ) {
-                       $out .= "      " . Xml::element( 'contributor', array( 'deleted' => 'deleted' ) ) . "\n";
+                       $out .= "    " . Xml::element( 'contributor', array( 'deleted' => 'deleted' ) ) . "\n";
                } else {
-                       $out .= $this->writeContributor( $row->log_user, $row->user_name );
+                       $out .= $this->writeContributor( $row->log_user, $row->user_name, "    " );
                }
 
                if ( $row->log_deleted & LogPage::DELETED_COMMENT ) {
-                       $out .= "      " . Xml::element( 'comment', array( 'deleted' => 'deleted' ) ) . "\n";
+                       $out .= "    " . Xml::element( 'comment', array( 'deleted' => 'deleted' ) ) . "\n";
                } elseif ( $row->log_comment != '' ) {
-                       $out .= "      " . Xml::elementClean( 'comment', null, strval( $row->log_comment ) ) . "\n";
+                       $out .= "    " . Xml::elementClean( 'comment', null, strval( $row->log_comment ) ) . "\n";
                }
 
-               $out .= "      " . Xml::element( 'type', null, strval( $row->log_type ) ) . "\n";
-               $out .= "      " . Xml::element( 'action', null, strval( $row->log_action ) ) . "\n";
+               $out .= "    " . Xml::element( 'type', null, strval( $row->log_type ) ) . "\n";
+               $out .= "    " . Xml::element( 'action', null, strval( $row->log_action ) ) . "\n";
 
                if ( $row->log_deleted & LogPage::DELETED_ACTION ) {
-                       $out .= "      " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
+                       $out .= "    " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
                } else {
                        $title = Title::makeTitle( $row->log_namespace, $row->log_title );
-                       $out .= "      " . Xml::elementClean( 'logtitle', null, self::canonicalTitle( $title ) ) . "\n";
-                       $out .= "      " . Xml::elementClean( 'params',
+                       $out .= "    " . Xml::elementClean( 'logtitle', null, self::canonicalTitle( $title ) ) . "\n";
+                       $out .= "    " . Xml::elementClean( 'params',
                                array( 'xml:space' => 'preserve' ),
                                strval( $row->log_params ) ) . "\n";
                }
 
-               $out .= "    </logitem>\n";
+               $out .= "  </logitem>\n";
 
                wfProfileOut( __METHOD__ );
                return $out;
@@ -725,9 +728,9 @@ class XmlDumpWriter {
         * @param $timestamp string
         * @return string
         */
-       function writeTimestamp( $timestamp ) {
+       function writeTimestamp( $timestamp, $indent = "      " ) {
                $ts = wfTimestamp( TS_ISO_8601, $timestamp );
-               return "      " . Xml::element( 'timestamp', null, $ts ) . "\n";
+               return $indent . Xml::element( 'timestamp', null, $ts ) . "\n";
        }
 
        /**
@@ -735,15 +738,15 @@ class XmlDumpWriter {
         * @param $text string
         * @return string
         */
-       function writeContributor( $id, $text ) {
-               $out = "      <contributor>\n";
+       function writeContributor( $id, $text, $indent = "      " ) {
+               $out = $indent . "<contributor>\n";
                if ( $id || !IP::isValid( $text ) ) {
-                       $out .= "        " . Xml::elementClean( 'username', null, strval( $text ) ) . "\n";
-                       $out .= "        " . Xml::element( 'id', null, strval( $id ) ) . "\n";
+                       $out .= $indent . "  " . Xml::elementClean( 'username', null, strval( $text ) ) . "\n";
+                       $out .= $indent . "  " . Xml::element( 'id', null, strval( $id ) ) . "\n";
                } else {
-                       $out .= "        " . Xml::elementClean( 'ip', null, strval( $text ) ) . "\n";
+                       $out .= $indent . "  " . Xml::elementClean( 'ip', null, strval( $text ) ) . "\n";
                }
-               $out .= "      </contributor>\n";
+               $out .= $indent . "</contributor>\n";
                return $out;
        }
 
@@ -754,7 +757,7 @@ class XmlDumpWriter {
         * @return string
         */
        function writeUploads( $row, $dumpContents = false ) {
-               if ( $row->page_namespace == NS_IMAGE ) {
+               if ( $row->page_namespace == NS_FILE ) {
                        $img = wfLocalFile( $row->page_title );
                        if ( $img && $img->exists() ) {
                                $out = '';
@@ -789,10 +792,15 @@ class XmlDumpWriter {
                } else {
                        $contents = '';
                }
+               if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
+                       $comment = Xml::element( 'comment', array( 'deleted' => 'deleted' ) );
+               } else {
+                       $comment = Xml::elementClean( 'comment', null, $file->getDescription() );
+               }
                return "    <upload>\n" .
                        $this->writeTimestamp( $file->getTimestamp() ) .
                        $this->writeContributor( $file->getUser( 'id' ), $file->getUser( 'text' ) ) .
-                       "      " . Xml::elementClean( 'comment', null, $file->getDescription() ) . "\n" .
+                       "      " . $comment . "\n" .
                        "      " . Xml::element( 'filename', null, $file->getName() ) . "\n" .
                        $archiveName .
                        "      " . Xml::element( 'src', null, $file->getCanonicalUrl() ) . "\n" .
index 7aec2e2..ba9bf74 100644 (file)
@@ -30,7 +30,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 /**
  * Compatibility functions
  *
- * We support PHP 5.2.3 and up.
+ * We support PHP 5.3.2 and up.
  * Re-implementations of newer functions or functions in non-standard
  * PHP extensions may be included here.
  */
@@ -1831,7 +1831,7 @@ function wfDebugBacktrace( $limit = 0 ) {
        }
 
        if ( $limit && version_compare( PHP_VERSION, '5.4.0', '>=' ) ) {
-               return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit ), 1 );
+               return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit + 1 ), 1 );
        } else {
                return array_slice( debug_backtrace(), 1 );
        }
@@ -1890,12 +1890,15 @@ function wfBacktrace() {
 
 /**
  * Get the name of the function which called this function
+ * wfGetCaller( 1 ) is the function with the wfGetCaller() call (ie. __FUNCTION__)
+ * wfGetCaller( 2 ) [default] is the caller of the function running wfGetCaller()
+ * wfGetCaller( 3 ) is the parent of that.
  *
  * @param $level Int
  * @return Bool|string
  */
 function wfGetCaller( $level = 2 ) {
-       $backtrace = wfDebugBacktrace( $level );
+       $backtrace = wfDebugBacktrace( $level + 1 );
        if ( isset( $backtrace[$level] ) ) {
                return wfFormatStackFrame( $backtrace[$level] );
        } else {
@@ -2198,13 +2201,7 @@ function wfResetOutputBuffers( $resetGzipEncoding = true ) {
                        if( $status['name'] == 'ob_gzhandler' ) {
                                // Reset the 'Content-Encoding' field set by this handler
                                // so we can start fresh.
-                               if ( function_exists( 'header_remove' ) ) {
-                                       // Available since PHP 5.3.0
-                                       header_remove( 'Content-Encoding' );
-                               } else {
-                                       // We need to provide a valid content-coding. See bug 28069
-                                       header( 'Content-Encoding: identity' );
-                               }
+                               header_remove( 'Content-Encoding' );
                                break;
                        }
                }
@@ -2613,11 +2610,10 @@ function swap( &$x, &$y ) {
 }
 
 /**
- * Tries to get the system directory for temporary files. The TMPDIR, TMP, and
- * TEMP environment variables are then checked in sequence, and if none are set
- * try sys_get_temp_dir() for PHP >= 5.2.1. All else fails, return /tmp for Unix
- * or C:\Windows\Temp for Windows and hope for the best.
- * It is common to call it with tempnam().
+ * Tries to get the system directory for temporary files. First
+ * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
+ * environment variables are then checked in sequence, and if none are
+ * set try sys_get_temp_dir().
  *
  * NOTE: When possible, use instead the tmpfile() function to create
  * temporary files to avoid race conditions on file creation, etc.
@@ -2625,17 +2621,20 @@ function swap( &$x, &$y ) {
  * @return String
  */
 function wfTempDir() {
-       foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
-               $tmp = getenv( $var );
+       global $wgTmpDirectory;
+
+       if ( $wgTmpDirectory !== false ) {
+               return $wgTmpDirectory;
+       }
+
+       $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+
+       foreach( $tmpDir as $tmp ) {
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
        }
-       if( function_exists( 'sys_get_temp_dir' ) ) {
-               return sys_get_temp_dir();
-       }
-       # Usual defaults
-       return wfIsWindows() ? 'C:\Windows\Temp' : '/tmp';
+       return sys_get_temp_dir();
 }
 
 /**
index e56ca2e..36008fb 100644 (file)
@@ -142,16 +142,33 @@ class HTMLForm extends ContextSource {
        protected $mButtons = array();
 
        protected $mWrapperLegend = false;
-       
+
        /**
         * If true, sections that contain both fields and subsections will
         * render their subsections before their fields.
-        * 
+        *
         * Subclasses may set this to false to render subsections after fields
         * instead.
         */
        protected $mSubSectionBeforeFields = true;
 
+       /**
+        * Format in which to display form. For viable options,
+        * @see $availableDisplayFormats
+        * @var String
+        */
+       protected $displayFormat = 'table';
+
+       /**
+        * Available formats in which to display the form
+        * @var Array
+        */
+       protected $availableDisplayFormats = array(
+               'table',
+               'div',
+               'raw',
+       );
+
        /**
         * Build a new HTMLForm from an array of field attributes
         * @param $descriptor Array of Field constructs, as described above
@@ -160,13 +177,13 @@ class HTMLForm extends ContextSource {
         * @param $messagePrefix String a prefix to go in front of default messages
         */
        public function __construct( $descriptor, /*IContextSource*/ $context = null, $messagePrefix = '' ) {
-               if( $context instanceof IContextSource ){
+               if ( $context instanceof IContextSource ) {
                        $this->setContext( $context );
                        $this->mTitle = false; // We don't need them to set a title
                        $this->mMessagePrefix = $messagePrefix;
                } else {
                        // B/C since 1.18
-                       if( is_string( $context ) && $messagePrefix === '' ){
+                       if ( is_string( $context ) && $messagePrefix === '' ) {
                                // it's actually $messagePrefix
                                $this->mMessagePrefix = $context;
                        }
@@ -210,6 +227,28 @@ class HTMLForm extends ContextSource {
                $this->mFieldTree = $loadedDescriptor;
        }
 
+       /**
+        * Set format in which to display the form
+        * @param $format String the name of the format to use, must be one of
+        *        $this->availableDisplayFormats
+        * @since 1.20
+        */
+       public function setDisplayFormat( $format ) {
+               if ( !in_array( $format, $this->availableDisplayFormats ) ) {
+                       throw new MWException ( 'Display format must be one of ' . print_r( $this->availableDisplayFormats, true ) );
+               }
+               $this->displayFormat = $format;
+       }
+
+       /**
+        * Getter for displayFormat
+        * @since 1.20
+        * @return String
+        */
+       public function getDisplayFormat() {
+               return $this->displayFormat;
+       }
+
        /**
         * Add the HTMLForm-specific JavaScript, if it hasn't been
         * done already.
@@ -275,7 +314,7 @@ class HTMLForm extends ContextSource {
                        $editToken = $this->getRequest()->getVal( 'wpEditToken' );
                        if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
                                // Session tokens for logged-out users have no security value.
-                               // However, if the user gave one, check it in order to give a nice 
+                               // However, if the user gave one, check it in order to give a nice
                                // "session expired" error instead of "permission denied" or such.
                                $submit = $this->getUser()->matchEditToken( $editToken );
                        } else {
@@ -333,6 +372,9 @@ class HTMLForm extends ContextSource {
                }
 
                $callback = $this->mSubmitCallback;
+               if ( !is_callable( $callback ) ) {
+                       throw new MWException( 'HTMLForm: no submit callback provided. Use setSubmitCallback() to set one.' );
+               }
 
                $data = $this->filterDataForSubmit( $this->mFieldData );
 
@@ -540,7 +582,7 @@ class HTMLForm extends ContextSource {
                global $wgArticlePath;
 
                $html = '';
-               if( $this->getMethod() == 'post' ){
+               if ( $this->getMethod() == 'post' ) {
                        $html .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
@@ -685,7 +727,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setSubmitTextMsg( $msg ) {
-               return $this->setSubmitText( $this->msg( $msg )->text() );
+               $this->setSubmitText( $this->msg( $msg )->text() );
        }
 
        /**
@@ -733,7 +775,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setWrapperLegendMsg( $msg ) {
-               return $this->setWrapperLegend( $this->msg( $msg )->escaped() );
+               $this->setWrapperLegend( $this->msg( $msg )->escaped() );
        }
 
        /**
@@ -783,20 +825,25 @@ class HTMLForm extends ContextSource {
         * @param $fieldsetIDPrefix string ID prefix for the <fieldset> tag of each subsection, ignored if empty
         * @return String
         */
-       function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
-               $tableHtml = '';
+       public function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
+               $displayFormat = $this->getDisplayFormat();
+
+               $html = '';
                $subsectionHtml = '';
-               $hasLeftColumn = false;
+               $hasLabel = false;
+
+               $getFieldHtmlMethod = ( $displayFormat == 'table' ) ? 'getTableRow' : 'get' . ucfirst( $displayFormat );
 
                foreach ( $fields as $key => $value ) {
-                       if ( is_object( $value ) ) {
+                       if ( $value instanceof HTMLFormField ) {
                                $v = empty( $value->mParams['nodata'] )
                                        ? $this->mFieldData[$key]
                                        : $value->getDefault();
-                               $tableHtml .= $value->getTableRow( $v );
+                               $html .= $value->$getFieldHtmlMethod( $v );
 
-                               if ( $value->getLabel() != '&#160;' ) {
-                                       $hasLeftColumn = true;
+                               $labelValue = trim( $value->getLabel() );
+                               if ( $labelValue != '&#160;' && $labelValue !== '' ) {
+                                       $hasLabel = true;
                                }
                        } elseif ( is_array( $value ) ) {
                                $section = $this->displaySection( $value, $key );
@@ -815,27 +862,33 @@ class HTMLForm extends ContextSource {
                        }
                }
 
-               $classes = array();
+               if ( $displayFormat !== 'raw' ) {
+                       $classes = array();
 
-               if ( !$hasLeftColumn ) { // Avoid strange spacing when no labels exist
-                       $classes[] = 'mw-htmlform-nolabel';
-               }
+                       if ( !$hasLabel ) { // Avoid strange spacing when no labels exist
+                               $classes[] = 'mw-htmlform-nolabel';
+                       }
 
-               $attribs = array(
-                       'class' => implode( ' ', $classes ),
-               );
+                       $attribs = array(
+                               'class' => implode( ' ', $classes ),
+                       );
 
-               if ( $sectionName ) {
-                       $attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
-               }
+                       if ( $sectionName ) {
+                               $attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
+                       }
 
-               $tableHtml = Html::rawElement( 'table', $attribs,
-                       Html::rawElement( 'tbody', array(), "\n$tableHtml\n" ) ) . "\n";
+                       if ( $displayFormat === 'table' ) {
+                               $html = Html::rawElement( 'table', $attribs,
+                                       Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
+                       } elseif ( $displayFormat === 'div' ) {
+                               $html = Html::rawElement( 'div', $attribs, "\n$html\n" );
+                       }
+               }
 
                if ( $this->mSubSectionBeforeFields ) {
-                       return $subsectionHtml . "\n" . $tableHtml;
+                       return $subsectionHtml . "\n" . $html;
                } else {
-                       return $tableHtml . "\n" . $subsectionHtml;
+                       return $html . "\n" . $subsectionHtml;
                }
        }
 
@@ -1052,7 +1105,7 @@ abstract class HTMLFormField {
                        $this->mFilterCallback = $params['filter-callback'];
                }
 
-               if ( isset( $params['flatlist'] ) ){
+               if ( isset( $params['flatlist'] ) ) {
                        $this->mClass .= ' mw-htmlform-flatlist';
                }
        }
@@ -1064,35 +1117,27 @@ abstract class HTMLFormField {
         * @return String complete HTML table row.
         */
        function getTableRow( $value ) {
-               # Check for invalid data.
-
-               $errors = $this->validate( $value, $this->mParent->mFieldData );
-
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
                $cellAttributes = array();
-               $verticalLabel = false;
 
-               if ( !empty($this->mParams['vertical-label']) ) {
+               if ( !empty( $this->mParams['vertical-label'] ) ) {
                        $cellAttributes['colspan'] = 2;
                        $verticalLabel = true;
-               }
-
-               if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
-                       $errors = '';
-                       $errorClass = '';
                } else {
-                       $errors = self::formatErrors( $errors );
-                       $errorClass = 'mw-htmlform-invalid-input';
+                       $verticalLabel = false;
                }
 
                $label = $this->getLabelHtml( $cellAttributes );
+
                $field = Html::rawElement(
                        'td',
                        array( 'class' => 'mw-input' ) + $cellAttributes,
-                       $this->getInputHTML( $value ) . "\n$errors"
+                       $inputHtml . "\n$errors"
                );
 
-               $fieldType = get_class( $this );
-
                if ( $verticalLabel ) {
                        $html = Html::rawElement( 'tr',
                                array( 'class' => 'mw-htmlform-vertical-label' ), $label );
@@ -1105,6 +1150,109 @@ abstract class HTMLFormField {
                                $label . $field );
                }
 
+               return $html . $helptext;
+       }
+
+       /**
+        * Get the complete div for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        * @param $value String the value to set the input to.
+        * @return String complete HTML table row.
+        */
+       public function getDiv( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $field = Html::rawElement(
+                       'div',
+                       array( 'class' => 'mw-input' ) + $cellAttributes,
+                       $inputHtml . "\n$errors"
+               );
+               $html = Html::rawElement( 'div',
+                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                       $label . $field );
+               $html .= $helptext;
+               return $html;
+       }
+
+       /**
+        * Get the complete raw fields for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        * @param $value String the value to set the input to.
+        * @return String complete HTML table row.
+        */
+       public function getRaw( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlRaw( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $html = "\n$errors";
+               $html .= $label;
+               $html .= $inputHtml;
+               $html .= $helptext;
+               return $html;
+       }
+
+       /**
+        * Generate help text HTML in table format
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlTable( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $row = Html::rawElement(
+                       'td',
+                       array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
+                       $helptext
+               );
+               $row = Html::rawElement( 'tr', array(), $row );
+               return $row;
+       }
+
+       /**
+        * Generate help text HTML in div format
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlDiv( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $div = Html::rawElement( 'div', array( 'class' => 'htmlform-tip' ), $helptext );
+               return $div;
+       }
+
+       /**
+        * Generate help text HTML formatted for raw output
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlRaw( $helptext ) {
+               return $this->getHelpTextHtmlDiv( $helptext );
+       }
+
+       /**
+        * Determine the help text to display
+        * @since 1.20
+        * @return String
+        */
+       public function getHelpText() {
                $helptext = null;
 
                if ( isset( $this->mParams['help-message'] ) ) {
@@ -1112,12 +1260,12 @@ abstract class HTMLFormField {
                }
 
                if ( isset( $this->mParams['help-messages'] ) ) {
-                       foreach( $this->mParams['help-messages'] as $name ) {
+                       foreach ( $this->mParams['help-messages'] as $name ) {
                                $helpMessage = (array)$name;
                                $msg = wfMessage( array_shift( $helpMessage ), $helpMessage );
 
-                               if( $msg->exists() ) {
-                                       if( is_null( $helptext ) ) {
+                               if ( $msg->exists() ) {
+                                       if ( is_null( $helptext ) ) {
                                                $helptext = '';
                                        } else {
                                                $helptext .= wfMessage( 'word-separator' )->escaped(); // some space
@@ -1129,23 +1277,32 @@ abstract class HTMLFormField {
                elseif ( isset( $this->mParams['help'] ) ) {
                        $helptext = $this->mParams['help'];
                }
+               return $helptext;
+       }
 
-               if ( !is_null( $helptext ) ) {
-                       $row = Html::rawElement(
-                               'td',
-                               array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
-                               $helptext
-                       );
-                       $row = Html::rawElement( 'tr', array(), $row );
-                       $html .= "$row\n";
-               }
+       /**
+        * Determine form errors to display and their classes
+        * @since 1.20
+        * @param $value String the value of the input
+        * @return Array
+        */
+       public function getErrorsAndErrorClass( $value ) {
+               $errors = $this->validate( $value, $this->mParent->mFieldData );
 
-               return $html;
+               if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
+                       $errors = '';
+                       $errorClass = '';
+               } else {
+                       $errors = self::formatErrors( $errors );
+                       $errorClass = 'mw-htmlform-invalid-input';
+               }
+               return array( $errors, $errorClass );
        }
 
        function getLabel() {
                return $this->mLabel;
        }
+
        function getLabelHtml( $cellAttributes = array() ) {
                # Don't output a for= attribute for labels with no associated input.
                # Kind of hacky here, possibly we don't want these to be <label>s at all.
@@ -1155,9 +1312,20 @@ abstract class HTMLFormField {
                        $for['for'] = $this->mID;
                }
 
-               return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes,
-                       Html::rawElement( 'label', $for, $this->getLabel() )
-               );
+               $displayFormat = $this->mParent->getDisplayFormat();
+               $labelElement = Html::rawElement( 'label', $for, $this->getLabel() );
+
+               if ( $displayFormat == 'table' ) {
+                       return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes,
+                               Html::rawElement( 'label', $for, $this->getLabel() )
+                       );
+               } elseif ( $displayFormat == 'div' ) {
+                       return Html::rawElement( 'div', array( 'class' => 'mw-label' ) + $cellAttributes,
+                               Html::rawElement( 'label', $for, $this->getLabel() )
+                       );
+               } else {
+                       return $labelElement;
+               }
        }
 
        function getDefault() {
@@ -1249,7 +1417,7 @@ class HTMLTextField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
-               
+
                if ( isset( $this->mParams['maxlength'] ) ) {
                        $attribs['maxlength'] = $this->mParams['maxlength'];
                }
@@ -1323,7 +1491,7 @@ class HTMLTextAreaField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
-               
+
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $attribs['disabled'] = 'disabled';
                }
@@ -1434,7 +1602,7 @@ class HTMLCheckField extends HTMLFormField {
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $attr['disabled'] = 'disabled';
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $attr['class'] = $this->mClass;
                }
@@ -1466,7 +1634,7 @@ class HTMLCheckField extends HTMLFormField {
                // Fetch the value in either one of the two following case:
                // - we have a valid token (form got posted or GET forged by the user)
                // - checkbox name has a value (false or true), ie is not null
-               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName )!== null ) {
+               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName ) !== null ) {
                        // XOR has the following truth table, which is what we want
                        // INVERT VALUE | OUTPUT
                        // true   true  | false
@@ -1505,8 +1673,8 @@ class HTMLSelectField extends HTMLFormField {
                # If one of the options' 'name' is int(0), it is automatically selected.
                # because PHP sucks and thinks int(0) == 'some string'.
                # Working around this by forcing all of them to strings.
-               foreach( $this->mParams['options'] as &$opt ){
-                       if( is_int( $opt ) ){
+               foreach ( $this->mParams['options'] as &$opt ) {
+                       if ( is_int( $opt ) ) {
                                $opt = strval( $opt );
                        }
                }
@@ -1515,7 +1683,7 @@ class HTMLSelectField extends HTMLFormField {
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $select->setAttribute( 'disabled', 'disabled' );
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $select->setAttribute( 'class', $this->mClass );
                }
@@ -1580,7 +1748,7 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                if ( isset( $this->mParams['maxlength'] ) ) {
                        $tbAttribs['maxlength'] = $this->mParams['maxlength'];
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $tbAttribs['class'] = $this->mClass;
                }
@@ -1683,7 +1851,7 @@ class HTMLMultiSelectField extends HTMLFormField {
         */
        function loadDataFromRequest( $request ) {
                if ( $this->mParent->getMethod() == 'post' ) {
-                       if( $request->wasPosted() ){
+                       if ( $request->wasPosted() ) {
                                # Checkboxes are just not added to the request arrays if they're not checked,
                                # so it's perfectly possible for there not to be an entry at all
                                return $request->getArray( $this->mName, array() );
@@ -1729,7 +1897,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
        function __construct( $params ) {
                if ( array_key_exists( 'other', $params ) ) {
-               } elseif( array_key_exists( 'other-message', $params ) ){
+               } elseif ( array_key_exists( 'other-message', $params ) ) {
                        $params['other'] = wfMessage( $params['other-message'] )->plain();
                } else {
                        $params['other'] = null;
@@ -1737,7 +1905,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
                if ( array_key_exists( 'options', $params ) ) {
                        # Options array already specified
-               } elseif( array_key_exists( 'options-message', $params ) ){
+               } elseif ( array_key_exists( 'options-message', $params ) ) {
                        # Generate options array from a system message
                        $params['options'] = self::parseMessage(
                                wfMessage( $params['options-message'] )->inContentLanguage()->plain(),
@@ -1759,8 +1927,8 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
         * @return Array
         * TODO: this is copied from Xml::listDropDown(), deprecate/avoid duplication?
         */
-       public static function parseMessage( $string, $otherName=null ) {
-               if( $otherName === null ){
+       public static function parseMessage( $string, $otherName = null ) {
+               if ( $otherName === null ) {
                        $otherName = wfMessage( 'htmlform-selectorother-other' )->plain();
                }
 
@@ -1771,14 +1939,14 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $value = trim( $option );
                        if ( $value == '' ) {
                                continue;
-                       } elseif ( substr( $value, 0, 1) == '*' && substr( $value, 1, 1) != '*' ) {
+                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
                                # A new group is starting...
                                $value = trim( substr( $value, 1 ) );
                                $optgroup = $value;
-                       } elseif ( substr( $value, 0, 2) == '**' ) {
+                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
                                # groupmember
                                $opt = trim( substr( $value, 2 ) );
-                               if( $optgroup === false ){
+                               if ( $optgroup === false ) {
                                        $options[$opt] = $opt;
                                } else {
                                        $options[$optgroup][$opt] = $opt;
@@ -1800,7 +1968,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        'id' => $this->mID . '-other',
                        'size' => $this->getSize(),
                );
-               
+
                if ( $this->mClass !== '' ) {
                        $textAttribs['class'] = $this->mClass;
                }
@@ -1833,11 +2001,11 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
                        if ( $list == 'other' ) {
                                $final = $text;
-                       } elseif( !in_array( $list, $this->mFlatOptions ) ){
+                       } elseif ( !in_array( $list, $this->mFlatOptions ) ) {
                                # User has spoofed the select form to give an option which wasn't
                                # in the original offer.  Sulk...
                                $final = $text;
-                       } elseif( $text == '' ) {
+                       } elseif ( $text == '' ) {
                                $final = $list;
                        } else {
                                $final = $list . wfMsgForContent( 'colon-separator' ) . $text;
@@ -1850,7 +2018,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $text = $final;
                        foreach ( $this->mFlatOptions as $option ) {
                                $match = $option . wfMsgForContent( 'colon-separator' );
-                               if( strpos( $text, $match ) === 0 ) {
+                               if ( strpos( $text, $match ) === 0 ) {
                                        $list = $option;
                                        $text = substr( $text, strlen( $match ) );
                                        break;
@@ -1876,7 +2044,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        return $p;
                }
 
-               if( isset( $this->mParams['required'] ) && $value[1] === '' ){
+               if ( isset( $this->mParams['required'] ) && $value[1] === '' ) {
                        return wfMsgExt( 'htmlform-required', 'parseinline' );
                }
 
@@ -1962,17 +2130,17 @@ class HTMLRadioField extends HTMLFormField {
  * An information field (text blob), not a proper input.
  */
 class HTMLInfoField extends HTMLFormField {
-       function __construct( $info ) {
+       public function __construct( $info ) {
                $info['nodata'] = true;
 
                parent::__construct( $info );
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
        }
 
-       function getTableRow( $value ) {
+       public function getTableRow( $value ) {
                if ( !empty( $this->mParams['rawrow'] ) ) {
                        return $value;
                }
@@ -1980,6 +2148,28 @@ class HTMLInfoField extends HTMLFormField {
                return parent::getTableRow( $value );
        }
 
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getDiv( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getRaw( $value );
+       }
+
        protected function needsLabel() {
                return false;
        }
@@ -2009,6 +2199,20 @@ class HTMLHiddenField extends HTMLFormField {
                return '';
        }
 
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getTableRow( $value );
+       }
+
        public function getInputHTML( $value ) { return ''; }
 }
 
@@ -2018,12 +2222,12 @@ class HTMLHiddenField extends HTMLFormField {
  */
 class HTMLSubmitField extends HTMLFormField {
 
-       function __construct( $info ) {
+       public function __construct( $info ) {
                $info['nodata'] = true;
                parent::__construct( $info );
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                return Xml::submitButton(
                        $value,
                        array(
@@ -2044,7 +2248,7 @@ class HTMLSubmitField extends HTMLFormField {
         * @param $alldata Array
         * @return Bool
         */
-       public function validate( $value, $alldata ){
+       public function validate( $value, $alldata ) {
                return true;
        }
 }
@@ -2055,6 +2259,30 @@ class HTMLEditTools extends HTMLFormField {
        }
 
        public function getTableRow( $value ) {
+               $msg = $this->formatMsg();
+
+               return '<tr><td></td><td class="mw-input">'
+                       . '<div class="mw-editTools">'
+                       . $msg->parseAsBlock()
+                       . "</div></td></tr>\n";
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               $msg = $this->formatMsg();
+               return '<div class="mw-editTools">' . $msg->parseAsBlock() . '</div>';
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getDiv( $value );
+       }
+
+       protected function formatMsg() {
                if ( empty( $this->mParams['message'] ) ) {
                        $msg = wfMessage( 'edittools' );
                } else {
@@ -2064,11 +2292,6 @@ class HTMLEditTools extends HTMLFormField {
                        }
                }
                $msg->inContentLanguage();
-
-
-               return '<tr><td></td><td class="mw-input">'
-                       . '<div class="mw-editTools">'
-                       . $msg->parseAsBlock()
-                       . "</div></td></tr>\n";
+               return $msg;
        }
 }
index 247acff..d391ead 100644 (file)
@@ -20,9 +20,6 @@
  * @file
  */
 
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
 /**
  * Image gallery
  *
index 3fbbcba..8f683e9 100644 (file)
@@ -346,18 +346,30 @@ class ImagePage extends Article {
                                                # Note that $height <= $maxHeight now, but might not be identical
                                                # because of rounding.
                                        }
-                                       $msgbig  = wfMsgHtml( 'show-big-image' );
+                                       $msgbig = wfMsgHtml( 'show-big-image' );
+                                       if ( $this->displayImg->getRepo()->canTransformVia404() ) {
+                                               $thumbSizes = $wgImageLimits;
+                                       } else {
+                                               # Creating thumb links triggers thumbnail generation.
+                                               # Just generate the thumb for the current users prefs.
+                                               $thumbOption = $user->getOption( 'thumbsize' );
+                                               $thumbSizes = array( isset( $wgImageLimits[$thumbOption] )
+                                                       ? $wgImageLimits[$thumbOption]
+                                                       : $wgImageLimits[User::getDefaultOption( 'thumbsize' )] );
+                                       }
+                                       # Generate thumbnails or thumbnail links as needed...
                                        $otherSizes = array();
-                                       foreach ( $wgImageLimits as $size ) {
-                                               if ( $size[0] < $width_orig && $size[1] < $height_orig &&
-                                                               $size[0] != $width && $size[1] != $height ) {
+                                       foreach ( $thumbSizes as $size ) {
+                                               if ( $size[0] < $width_orig && $size[1] < $height_orig
+                                                       && $size[0] != $width && $size[1] != $height )
+                                               {
                                                        $otherSizes[] = $this->makeSizeLink( $params, $size[0], $size[1] );
                                                }
                                        }
                                        $msgsmall = wfMessage( 'show-big-image-preview' )->
                                                rawParams( $this->makeSizeLink( $params, $width, $height ) )->
                                                parse();
-                                       if ( count( $otherSizes ) && $this->displayImg->getRepo()->canTransformVia404() ) {
+                                       if ( count( $otherSizes ) ) {
                                                $msgsmall .= ' ' .
                                                Html::rawElement( 'span', array( 'class' => 'mw-filepage-other-resolutions' ),
                                                        wfMessage( 'show-big-image-other' )->rawParams( $lang->pipeList( $otherSizes ) )->
@@ -978,7 +990,7 @@ class ImageHistoryList extends ContextSource {
                $img = $iscur ? $file->getName() : $file->getArchiveName();
                $userId = $file->getUser( 'id' );
                $userText = $file->getUser( 'text' );
-               $description = $file->getDescription();
+               $description = $file->getDescription( File::FOR_THIS_USER, $user );
 
                $local = $this->current->isLocal();
                $row = $selected = '';
@@ -1026,7 +1038,9 @@ class ImageHistoryList extends ContextSource {
                $row .= '<td>';
                if ( $iscur ) {
                        $row .= wfMsgHtml( 'filehist-current' );
-               } elseif ( $local && $user->isLoggedIn() && $this->title->userCan( 'edit' ) ) {
+               } elseif ( $local && $this->title->quickUserCan( 'edit' )
+                       && $this->title->quickUserCan( 'upload' )
+               ) {
                        if ( $file->isDeleted( File::DELETED_FILE ) ) {
                                $row .= wfMsgHtml( 'filehist-revert' );
                        } else {
@@ -1087,7 +1101,10 @@ class ImageHistoryList extends ContextSource {
                // Image dimensions + size
                $row .= '<td>';
                $row .= htmlspecialchars( $file->getDimensionsString() );
-               $row .= ' <span style="white-space: nowrap;">(' . Linker::formatSize( $file->getSize() ) . ')</span>';
+               $row .= $this->getContext()->msg( 'word-separator' )->plain();
+               $row .= '<span style="white-space: nowrap;">';
+               $row .= $this->getContext()->msg( 'parentheses' )->rawParams( Linker::formatSize( $file->getSize() ) )->plain();
+               $row .= '</span>';
                $row .= '</td>';
 
                // Uploading user
@@ -1097,8 +1114,11 @@ class ImageHistoryList extends ContextSource {
                        $row .= '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
                } else {
                        if ( $local ) {
-                               $row .= Linker::userLink( $userId, $userText ) . ' <span style="white-space: nowrap;">' .
-                               Linker::userToolLinks( $userId, $userText ) . '</span>';
+                               $row .= Linker::userLink( $userId, $userText );
+                               $row .= $this->getContext()->msg( 'word-separator' )->plain();
+                               $row .= '<span style="white-space: nowrap;">';
+                               $row .= Linker::userToolLinks( $userId, $userText );
+                               $row .= '</span>';
                        } else {
                                $row .= htmlspecialchars( $userText );
                        }
index 8e02fd9..9fcac65 100644 (file)
@@ -1041,7 +1041,10 @@ class Linker {
                wfRunHooks( 'UserToolLinksEdit', array( $userId, $userText, &$items ) );
 
                if ( $items ) {
-                       return ' <span class="mw-usertoollinks">' . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped() . '</span>';
+                       return wfMessage( 'word-separator' )->plain()
+                               . '<span class="mw-usertoollinks">'
+                               . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped()
+                               . '</span>';
                } else {
                        return '';
                }
@@ -1125,8 +1128,9 @@ class Linker {
                } elseif ( $rev->userCan( Revision::DELETED_USER ) ) {
                        $userId = $rev->getUser( Revision::FOR_THIS_USER );
                        $userText = $rev->getUserText( Revision::FOR_THIS_USER );
-                       $link = self::userLink( $userId, $userText ) .
-                               ' ' . self::userToolLinks( $userId, $userText );
+                       $link = self::userLink( $userId, $userText )
+                               . wfMessage( 'word-separator' )->plain()
+                               . self::userToolLinks( $userId, $userText );
                } else {
                        $link = wfMsgHtml( 'rev-deleted-user' );
                }
@@ -1212,41 +1216,45 @@ class Linker {
                $pre = $match[1];
                $auto = $match[2];
                $post = $match[3];
-               $link = '';
-               if ( $title ) {
-                       $section = $auto;
-
-                       # Remove links that a user may have manually put in the autosummary
-                       # This could be improved by copying as much of Parser::stripSectionName as desired.
-                       $section = str_replace( '[[:', '', $section );
-                       $section = str_replace( '[[', '', $section );
-                       $section = str_replace( ']]', '', $section );
-
-                       $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
-                       if ( $local ) {
-                               $sectionTitle = Title::newFromText( '#' . $section );
-                       } else {
-                               $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
-                                       $title->getDBkey(), $section );
+               $comment = null;
+               wfRunHooks( 'FormatAutocomments', array( &$comment, $pre, $auto, $post, $title, $local ) );
+               if ( $comment === null ) {
+                       $link = '';
+                       if ( $title ) {
+                               $section = $auto;
+
+                               # Remove links that a user may have manually put in the autosummary
+                               # This could be improved by copying as much of Parser::stripSectionName as desired.
+                               $section = str_replace( '[[:', '', $section );
+                               $section = str_replace( '[[', '', $section );
+                               $section = str_replace( ']]', '', $section );
+
+                               $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
+                               if ( $local ) {
+                                       $sectionTitle = Title::newFromText( '#' . $section );
+                               } else {
+                                       $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
+                                               $title->getDBkey(), $section );
+                               }
+                               if ( $sectionTitle ) {
+                                       $link = self::link( $sectionTitle,
+                                               $wgLang->getArrow(), array(), array(),
+                                               'noclasses' );
+                               } else {
+                                       $link = '';
+                               }
                        }
-                       if ( $sectionTitle ) {
-                               $link = self::link( $sectionTitle,
-                                       $wgLang->getArrow(), array(), array(),
-                                       'noclasses' );
-                       } else {
-                               $link = '';
+                       if ( $pre ) {
+                               # written summary $presep autocomment (summary /* section */)
+                               $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
                        }
+                       if ( $post ) {
+                               # autocomment $postsep written summary (/* section */ summary)
+                               $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
+                       }
+                       $auto = '<span class="autocomment">' . $auto . '</span>';
+                       $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                }
-               if ( $pre ) {
-                       # written summary $presep autocomment (summary /* section */)
-                       $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
-               }
-               if ( $post ) {
-                       # autocomment $postsep written summary (/* section */ summary)
-                       $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
-               }
-               $auto = '<span class="autocomment">' . $auto . '</span>';
-               $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                return $comment;
        }
 
@@ -1641,9 +1649,9 @@ class Linker {
         * @return string
         */
        public static function generateRollback( $rev ) {
-               return '<span class="mw-rollback-link">['
-                       . self::buildRollbackLink( $rev )
-                       . ']</span>';
+               return '<span class="mw-rollback-link">'
+                       . wfMessage( 'brackets' )->rawParams( self::buildRollbackLink( $rev ) )->plain()
+                       . '</span>';
        }
 
        /**
index 8b403fc..0712ac8 100644 (file)
@@ -66,6 +66,10 @@ class LinksUpdate extends SqlDataUpdate {
                $this->mTitle = $title;
                $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?" );
+               }
+
                $this->mParserOutput = $parserOutput;
                $this->mLinks = $parserOutput->getLinks();
                $this->mImages = $parserOutput->getImages();
index ba38f37..9745b9a 100644 (file)
@@ -99,6 +99,7 @@ class MagicWord {
                'numberoffiles',
                'numberofedits',
                'articlepath',
+               'pageid',
                'sitename',
                'server',
                'servername',
@@ -306,8 +307,8 @@ class MagicWord {
                $wgContLang->getMagic( $this );
                if ( !$this->mSynonyms ) {
                        $this->mSynonyms = array( 'dkjsagfjsgashfajsh' );
-                       #throw new MWException( "Error: invalid magic word '$id'" );
-                       wfDebugLog( 'exception', "Error: invalid magic word '$id'\n" );
+                       throw new MWException( "Error: invalid magic word '$id'" );
+                       #wfDebugLog( 'exception', "Error: invalid magic word '$id'\n" );
                }
                wfProfileOut( __METHOD__ );
        }
index b1bd14a..7f0a4e2 100644 (file)
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
 /**
  * This class should be covered by a general architecture document which does
  * not exist as of January 2011.  This is one of the Core classes and should
@@ -1682,18 +1678,6 @@ class OutputPage extends ContextSource {
                return $cookies;
        }
 
-       /**
-        * Return whether this page is not cacheable because "useskin" or "uselang"
-        * URL parameters were passed.
-        *
-        * @return Boolean
-        */
-       function uncacheableBecauseRequestVars() {
-               $request = $this->getRequest();
-               return $request->getText( 'useskin', false ) === false
-                       && $request->getText( 'uselang', false ) === false;
-       }
-
        /**
         * Check if the request has a cache-varying cookie header
         * If it does, it's very important that we don't allow public caching
@@ -1755,7 +1739,7 @@ class OutputPage extends ContextSource {
                $headers = array();
                foreach( $this->mVaryHeader as $header => $option ) {
                        $newheader = $header;
-                       if( is_array( $option ) ) {
+                       if ( is_array( $option ) && count( $option ) > 0 ) {
                                $newheader .= ';' . implode( ';', $option );
                        }
                        $headers[] = $newheader;
@@ -1861,7 +1845,7 @@ class OutputPage extends ContextSource {
                        $response->header( $this->getXVO() );
                }
 
-               if( !$this->uncacheableBecauseRequestVars() && $this->mEnableClientCache ) {
+               if( $this->mEnableClientCache ) {
                        if(
                                $wgUseSquid && session_id() == '' && !$this->isPrintable() &&
                                $this->mSquidMaxage != 0 && !$this->haveCacheVaryCookies()
@@ -2486,7 +2470,7 @@ $templates
                        wfRunHooks( 'AjaxAddScript', array( &$this ) );
 
                        if( $wgAjaxWatch && $this->getUser()->isLoggedIn() ) {
-                               $this->addModules( 'mediawiki.action.watch.ajax' );
+                               $this->addModules( 'mediawiki.page.watch.ajax' );
                        }
 
                        if ( $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
index 438a99a..bcd6d14 100644 (file)
@@ -682,35 +682,24 @@ abstract class AlphabeticPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $lang = $this->getLanguage();
-
-               $opts = array( 'parsemag', 'escapenoentities' );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'prevn',
-                               $opts,
-                               $lang->formatNum( $this->mLimit )
-                       ),
-                       'next' => wfMsgExt(
-                               'nextn',
-                               $opts,
-                               $lang->formatNum($this->mLimit )
-                       ),
-                       'first' => wfMsgExt( 'page_first', $opts ),
-                       'last' => wfMsgExt( 'page_last', $opts )
+                       'prev' => $this->msg( 'prevn' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'nextn' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'page_first' )->escaped(),
+                       'last' => $this->msg( 'page_last' )->escaped()
                );
 
+               $lang = $this->getLanguage();
+
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $lang->pipeList( $limitLinks );
 
-               $this->mNavigationBar = wfMessage( 'parentheses' )->rawParams(
-                       $lang->pipeList(
-                               array( $pagingLinks['first'],
-                                       $pagingLinks['last'] )
-                       ) )->escaped() . " " .
-                       wfMsgHtml( 'viewprevnext', $pagingLinks['prev'],
-                               $pagingLinks['next'], $limits );
+               $this->mNavigationBar = $this->msg( 'parentheses' )->rawParams(
+                       $lang->pipeList( array( $pagingLinks['first'],
+                       $pagingLinks['last'] ) ) )->escaped() . " " .
+                       $this->msg( 'viewprevnext' )->rawParams( $pagingLinks['prev'],
+                               $pagingLinks['next'], $limits )->escaped();
 
                if( !is_array( $this->getIndexField() ) ) {
                        # Early return to avoid undue nesting
@@ -724,21 +713,21 @@ abstract class AlphabeticPager extends IndexPager {
                        if( $first ) {
                                $first = false;
                        } else {
-                               $extra .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+                               $extra .= $this->msg( 'pipe-separator' )->escaped();
                        }
 
                        if( $order == $this->mOrderType ) {
-                               $extra .= wfMsgHTML( $msgs[$order] );
+                               $extra .= $this->msg( $msgs[$order] )->escaped();
                        } else {
                                $extra .= $this->makeLink(
-                                       wfMsgHTML( $msgs[$order] ),
+                                       $this->msg( $msgs[$order] )->escaped(),
                                        array( 'order' => $order )
                                );
                        }
                }
 
                if( $extra !== '' ) {
-                       $extra = ' ' . wfMessage( 'parentheses' )->rawParams( $extra )->escaped();
+                       $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
                        $this->mNavigationBar .= $extra;
                }
 
@@ -776,35 +765,23 @@ abstract class ReverseChronologicalPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $nicenumber = $this->getLanguage()->formatNum( $this->mLimit );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'pager-newer-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'next' => wfMsgExt(
-                               'pager-older-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'first' => wfMsgHtml( 'histlast' ),
-                       'last' => wfMsgHtml( 'histfirst' )
+                       'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'histlast' )->escaped(),
+                       'last' => $this->msg( 'histfirst' )->escaped()
                );
 
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $this->getLanguage()->pipeList( $limitLinks );
-               $firstLastLinks = wfMessage( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
-                       wfMsgExt( 'pipe-separator' , 'escapenoentities' ) .
+               $firstLastLinks = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
+                       $this->msg( 'pipe-separator' )->escaped() .
                        "{$pagingLinks['last']}" )->escaped();
 
                $this->mNavigationBar = $firstLastLinks . ' ' .
-                       wfMsgHTML(
-                               'viewprevnext',
-                               $pagingLinks['prev'], $pagingLinks['next'],
-                               $limits
-                       );
+                       $this->msg( 'viewprevnext' )->rawParams(
+                               $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
 
                return $this->mNavigationBar;
        }
@@ -917,13 +894,13 @@ abstract class TablePager extends IndexPager {
                                                $image = 'Arr_d.png';
                                                $query['asc'] = '1';
                                                $query['desc'] = '';
-                                               $alt = htmlspecialchars( wfMsg( 'descending_abbrev' ) );
+                                               $alt = $this->msg( 'descending_abbrev' )->escaped();
                                        } else {
                                                # Ascending
                                                $image = 'Arr_u.png';
                                                $query['asc'] = '';
                                                $query['desc'] = '1';
-                                               $alt = htmlspecialchars( wfMsg( 'ascending_abbrev' ) );
+                                               $alt = $this->msg( 'ascending_abbrev' )->escaped();
                                        }
                                        $image = htmlspecialchars( "$wgStylePath/common/images/$image" );
                                        $link = $this->makeLink(
@@ -955,7 +932,7 @@ abstract class TablePager extends IndexPager {
         */
        function getEmptyBody() {
                $colspan = count( $this->getFieldNames() );
-               $msgEmpty = wfMsgHtml( 'table_pager_empty' );
+               $msgEmpty = $this->msg( 'table_pager_empty' )->escaped();
                return "<tr><td colspan=\"$colspan\">$msgEmpty</td></tr>\n";
        }
 
@@ -1101,7 +1078,7 @@ abstract class TablePager extends IndexPager {
                $linkTexts = array();
                $disabledTexts = array();
                foreach ( $labels as $type => $label ) {
-                       $msgLabel = wfMsgHtml( $label );
+                       $msgLabel = $this->msg( $label )->escaped();
                        $linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                        $disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                }
@@ -1193,9 +1170,10 @@ abstract class TablePager extends IndexPager {
         */
        function getLimitDropdown() {
                # Make the select with some explanatory text
-               $msgSubmit = wfMsgHtml( 'table_pager_limit_submit' );
+               $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
 
-               return wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) .
+               return $this->msg( 'table_pager_limit' )
+                       ->rawParams( $this->getLimitSelect() )->escaped() .
                        "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
                        $this->getHiddenFields( array( 'limit' ) );
        }
index 9ec3b64..bf63d65 100644 (file)
@@ -371,7 +371,10 @@ class Preferences {
 
                        $emailAddress = $user->getEmail() ? htmlspecialchars( $user->getEmail() ) : '';
                        if ( $wgAuth->allowPropChange( 'emailaddress' ) ) {
-                               $emailAddress .= $emailAddress == '' ? $link : " ($link)";
+                               $emailAddress .= $emailAddress == '' ? $link : (
+                                       $context->msg( 'word-separator' )->plain()
+                                       . $context->msg( 'parentheses' )->rawParams( $link )->plain()
+                               );
                        }
 
 
index f2862a8..13eaae4 100644 (file)
@@ -408,7 +408,9 @@ class Revision implements IDBAccessObject {
                        'page_namespace',
                        'page_title',
                        'page_id',
-                       'page_latest'
+                       'page_latest',
+                       'page_is_redirect',
+                       'page_len',
                );
        }
 
@@ -420,6 +422,29 @@ class Revision implements IDBAccessObject {
                return array( 'user_name' );
        }
 
+       /**
+        * Do a batched query to get the parent revision lengths
+        * @param $db DatabaseBase
+        * @param $revIds Array
+        * @return array
+        */
+       public static function getParentLengths( $db, array $revIds ) {
+               $revLens = array();
+               if ( !$revIds ) {
+                       return $revLens; // empty
+               }
+               wfProfileIn( __METHOD__ );
+               $res = $db->select( 'revision',
+                       array( 'rev_id', 'rev_len' ),
+                       array( 'rev_id' => $revIds ),
+                       __METHOD__ );
+               foreach ( $res as $row ) {
+                       $revLens[$row->rev_id] = $row->rev_len;
+               }
+               wfProfileOut( __METHOD__ );
+               return $revLens;
+       }
+
        /**
         * Constructor
         *
@@ -520,7 +545,7 @@ class Revision implements IDBAccessObject {
        /**
         * Get revision ID
         *
-        * @return Integer
+        * @return Integer|null
         */
        public function getId() {
                return $this->mId;
@@ -539,7 +564,7 @@ class Revision implements IDBAccessObject {
        /**
         * Get text row ID
         *
-        * @return Integer
+        * @return Integer|null
         */
        public function getTextId() {
                return $this->mTextId;
@@ -557,7 +582,7 @@ class Revision implements IDBAccessObject {
        /**
         * Returns the length of the text in this revision, or null if unknown.
         *
-        * @return Integer
+        * @return Integer|null
         */
        public function getSize() {
                return $this->mSize;
@@ -566,30 +591,34 @@ class Revision implements IDBAccessObject {
        /**
         * Returns the base36 sha1 of the text in this revision, or null if unknown.
         *
-        * @return String
+        * @return String|null
         */
        public function getSha1() {
                return $this->mSha1;
        }
 
        /**
-        * Returns the title of the page associated with this entry.
+        * Returns the title of the page associated with this entry or null.
+        *
+        * Will do a query, when title is not set and id is given.
         *
-        * @return Title
+        * @return Title|null
         */
        public function getTitle() {
                if( isset( $this->mTitle ) ) {
                        return $this->mTitle;
                }
-               $dbr = wfGetDB( DB_SLAVE );
-               $row = $dbr->selectRow(
-                       array( 'page', 'revision' ),
-                       self::selectPageFields(),
-                       array( 'page_id=rev_page',
-                                  'rev_id' => $this->mId ),
-                       __METHOD__ );
-               if ( $row ) {
-                       $this->mTitle = Title::newFromRow( $row );
+               if( !is_null( $this->mId ) ) { //rev_id is defined as NOT NULL
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $row = $dbr->selectRow(
+                               array( 'page', 'revision' ),
+                               self::selectPageFields(),
+                               array( 'page_id=rev_page',
+                                          'rev_id' => $this->mId ),
+                               __METHOD__ );
+                       if ( $row ) {
+                               $this->mTitle = Title::newFromRow( $row );
+                       }
                }
                return $this->mTitle;
        }
@@ -606,7 +635,7 @@ class Revision implements IDBAccessObject {
        /**
         * Get the page ID
         *
-        * @return Integer
+        * @return Integer|null
         */
        public function getPage() {
                return $this->mPage;
@@ -619,7 +648,7 @@ class Revision implements IDBAccessObject {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the ID regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -651,7 +680,7 @@ class Revision implements IDBAccessObject {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -691,7 +720,7 @@ class Revision implements IDBAccessObject {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -769,7 +798,7 @@ class Revision implements IDBAccessObject {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -1147,7 +1176,8 @@ class Revision implements IDBAccessObject {
 
                $current = $dbw->selectRow(
                        array( 'page', 'revision' ),
-                       array( 'page_latest', 'rev_text_id', 'rev_len', 'rev_sha1' ),
+                       array( 'page_latest', 'page_namespace', 'page_title',
+                               'rev_text_id', 'rev_len', 'rev_sha1' ),
                        array(
                                'page_id' => $pageId,
                                'page_latest=rev_id',
@@ -1164,6 +1194,7 @@ class Revision implements IDBAccessObject {
                                'len'        => $current->rev_len,
                                'sha1'       => $current->rev_sha1
                                ) );
+                       $revision->setTitle( Title::makeTitle( $current->page_namespace, $current->page_title ) );
                } else {
                        $revision = null;
                }
index 488ef52..fc777b5 100644 (file)
@@ -350,12 +350,12 @@ class RevisionItem extends RevisionItemBase {
         */
        protected function getDiffLink() {
                if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return wfMsgHtml('diff');
+                       return $this->context->msg( 'diff' )->escaped();
                } else {
                        return
                                Linker::link(
                                        $this->list->title,
-                                       wfMsgHtml('diff'),
+                                       $this->context->msg( 'diff' )->escaped(),
                                        array(),
                                        array(
                                                'diff' => $this->revision->getId(),
@@ -371,13 +371,14 @@ class RevisionItem extends RevisionItemBase {
        }
 
        public function getHTML() {
-               $difflink = $this->getDiffLink();
+               $difflink = $this->context->msg( 'parentheses' )
+                       ->rawParams( $this->getDiffLink() )->escaped();
                $revlink = $this->getRevisionLink();
                $userlink = Linker::revUserLink( $this->revision );
                $comment = Linker::revComment( $this->revision );
                if ( $this->isDeleted() ) {
                        $revlink = "<span class=\"history-deleted\">$revlink</span>";
                }
-               return "<li>($difflink) $revlink $userlink $comment</li>";
+               return "<li>$difflink $revlink $userlink $comment</li>";
        }
 }
index 335d37b..18a880e 100644 (file)
@@ -77,9 +77,6 @@ if ( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
 
 if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
 if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
-
-if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-
 if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
 if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
 if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
@@ -400,7 +397,12 @@ if ( !defined( 'MW_COMPILED' ) ) {
        wfProfileOut( $fname . '-includes' );
 }
 
-# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer
+# Now that GlobalFunctions is loaded, set defaults that depend
+# on it.
+if ( $wgTmpDirectory === false ) {
+       $wgTmpDirectory = wfTempDir();
+}
+
 if ( $wgCanonicalServer === false ) {
        $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
 }
index ff5548e..6410695 100644 (file)
  */
 
 /**
- * This is a class used to hold configuration settings, particularly for multi-wiki sites.
+ * This is a class for holding configuration settings, particularly for
+ * multi-wiki sites.
+ *
+ * A basic synopsis:
+ *
+ * Consider a wikifarm having three sites: two production sites, one in English
+ * and one in German, and one testing site. You can assign them easy-to-remember
+ * identifiers - ISO 639 codes 'en' and 'de' for language wikis, and 'beta' for
+ * the testing wiki.
+ *
+ * You would thus initialize the site configuration by specifying the wiki
+ * identifiers:
+ *
+ * @code
+ * $conf = new SiteConfiguration;
+ * $conf->wikis = array( 'de', 'en', 'beta' );
+ * @endcode
+ *
+ * When configuring the MediaWiki global settings (the $wg variables),
+ * the identifiers will be available to specify settings on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgSomeSetting' => array(
+ *
+ *             # production:
+ *             'de'     => false,
+ *             'en'     => false,
+ *
+ *             # test:
+ *             'beta    => true,
+ *     ),
+ * );
+ * @endcode
+ *
+ * With three wikis, that is easy to manage. But what about a farm with
+ * hundreds of wikis? Site configuration provides a special keyword named
+ * 'default' which is the value used when a wiki is not found. Hence
+ * the above code could be written:
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgSomeSetting' => array(
+ *
+ *             'default' => false,
+ *
+ *             # Enable feature on test
+ *             'beta'    => true,
+ *     ),
+ * );
+ * @endcode
+ *
+ *
+ * Since settings can contain arrays, site configuration provides a way
+ * to merge an array with the default. This is very useful to avoid
+ * repeating settings again and again while still maintaining specific changes
+ * on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgMergeSetting' = array(
+ *             # Value that will be shared among all wikis:
+ *             'default' => array(  NS_USER => true ),
+ *
+ *             # Leading '+' means merging the array of value with the defaults
+ *             '+beta' => array( NS_HELP => true ),
+ *     ),
+ * );
+ *
+ * # Get configuration for the German site:
+ * $conf->get( 'wgMergeSetting', 'de' );
+ * // --> array( NS_USER => true );
+ *
+ * # Get configuration for the testing site:
+ * $conf->get( 'wgMergeSetting', 'beta' );
+ * // --> array( NS_USER => true, NS_HELP => true );
+ * @endcode
+ *
+ * Finally, to load all configuration settings, extract them in global context:
+ *
+ * @code
+ * # Name / identifier of the wiki as set in $conf->wikis
+ * $wikiID = 'beta';
+ * $globals = $conf->getAll( $wikiID );
+ * extract( $globals );
+ * @endcode
+ *
+ * TODO: give examples for,
+ * suffixes:
+ * $conf->suffixes = array( 'wiki' );
+ * localVHosts
+ * callbacks!
  */
 class SiteConfiguration {
 
index 10aed9c..7f3f655 100644 (file)
@@ -391,7 +391,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        /**
         * @param $type string
         * @param $sign string ('+' or '-')
-        * @return void
+        * @return string
         */
        private function getTypeCacheKey( $type, $sign ) {
                return wfMemcKey( 'sitestatsupdate', 'pendingdelta', $type, $sign );
@@ -443,7 +443,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
 
        /**
         * Reduce pending delta counters after updates have been applied
-        * @param Array Result of getPendingDeltas(), used for DB update
+        * @param Array $pd Result of getPendingDeltas(), used for DB update
         * @return void
         */
        protected function removePendingDeltas( array $pd ) {
index 677664a..8d47b83 100644 (file)
  * @defgroup Skins Skins
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
 /**
  * The main skin class that provide methods and properties for all other skins.
  * This base class is also the "Standard" skin.
@@ -168,11 +164,6 @@ abstract class Skin extends ContextSource {
                if ( !MWInit::classExists( $className ) ) {
 
                        if ( !defined( 'MW_COMPILED' ) ) {
-                               // Preload base classes to work around APC/PHP5 bug
-                               $deps = "{$wgStyleDirectory}/{$skinName}.deps.php";
-                               if ( file_exists( $deps ) ) {
-                                       include_once( $deps );
-                               }
                                require_once( "{$wgStyleDirectory}/{$skinName}.php" );
                        }
 
@@ -731,7 +722,7 @@ abstract class Skin extends ContextSource {
                                        $display .= $link;
                                        $linkObj = Title::newFromText( $growinglink );
 
-                                       if ( is_object( $linkObj ) && $linkObj->exists() ) {
+                                       if ( is_object( $linkObj ) && $linkObj->isKnown() ) {
                                                $getlink = Linker::linkKnown(
                                                        $linkObj,
                                                        htmlspecialchars( $display )
index 1deaf89..e1ec897 100644 (file)
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
 class SkinLegacy extends SkinTemplate {
        var $useHeadElement = true;
        protected $mWatchLinkNum = 0; // Appended to end of watch link id's
index 9807237..b3dfc9b 100644 (file)
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
 /**
  * Wrapper object for MediaWiki's localization functions,
  * to be passed to the template engine.
@@ -276,20 +272,20 @@ class SkinTemplate extends Skin {
                $tpl->setRef( 'logopath', $wgLogo );
                $tpl->setRef( 'sitename', $wgSitename );
 
-               $lang = $this->getLanguage();
-               $userlang = $lang->getHtmlCode();
-               $userdir  = $lang->getDir();
+               $userLang = $this->getLanguage();
+               $userLangCode = $userLang->getHtmlCode();
+               $userLangDir  = $userLang->getDir();
 
-               $tpl->set( 'lang', $userlang );
-               $tpl->set( 'dir', $userdir );
-               $tpl->set( 'rtl', $lang->isRTL() );
+               $tpl->set( 'lang', $userLangCode );
+               $tpl->set( 'dir', $userLangDir );
+               $tpl->set( 'rtl', $userLang->isRTL() );
 
-               $tpl->set( 'capitalizeallnouns', $lang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
+               $tpl->set( 'capitalizeallnouns', $userLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
                $tpl->set( 'showjumplinks', $user->getOption( 'showjumplinks' ) );
                $tpl->set( 'username', $this->loggedin ? $this->username : null );
                $tpl->setRef( 'userpage', $this->userpage );
                $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
-               $tpl->set( 'userlang', $userlang );
+               $tpl->set( 'userlang', $userLangCode );
 
                // Users can have their language set differently than the
                // content of the wiki. For these users, tell the web browser
@@ -297,8 +293,12 @@ class SkinTemplate extends Skin {
                $tpl->set( 'userlangattributes', '' );
                $tpl->set( 'specialpageattributes', '' ); # obsolete
 
-               if ( $userlang !== $wgContLang->getHtmlCode() || $userdir !== $wgContLang->getDir() ) {
-                       $attrs = " lang='$userlang' dir='$userdir'";
+               if ( $userLangCode !== $wgContLang->getHtmlCode() || $userLangDir !== $wgContLang->getDir() ) {
+                       $escUserlang = htmlspecialchars( $userLangCode );
+                       $escUserdir = htmlspecialchars( $userLangDir );
+                       // Attributes must be in double quotes because htmlspecialchars() doesn't
+                       // escape single quotes
+                       $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
                        $tpl->set( 'userlangattributes', $attrs );
                }
 
@@ -322,13 +322,13 @@ class SkinTemplate extends Skin {
                                        }
                                }
 
-                               if( $wgPageShowWatchingUsers ) {
+                               if ( $wgPageShowWatchingUsers ) {
                                        $dbr = wfGetDB( DB_SLAVE );
                                        $num = $dbr->selectField( 'watchlist', 'COUNT(*)',
                                                array( 'wl_title' => $title->getDBkey(), 'wl_namespace' => $title->getNamespace() ),
                                                __METHOD__
                                        );
-                                       if( $num > 0 ) {
+                                       if ( $num > 0 ) {
                                                $tpl->set( 'numberofwatchingusers',
                                                        $this->msg( 'number_of_watching_users_pageview' )->numParams( $num )->parse()
                                                );
@@ -404,7 +404,7 @@ class SkinTemplate extends Skin {
                # when the content is different from the UI language, i.e.:
                # not for special pages or file pages AND only when viewing AND if the page exists
                # (or is in MW namespace, because that has default content)
-               if( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
+               if ( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
                        in_array( $request->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) &&
                        ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) {
                        $pageLang = $title->getPageLanguage();
@@ -426,10 +426,15 @@ class SkinTemplate extends Skin {
                                unset( $tmp );
                                $nt = Title::newFromText( $l );
                                if ( $nt ) {
+                                       $ilLangName = Language::fetchLanguageName( $nt->getInterwiki() );
+                                       if ( strval( $ilLangName ) === '' ) {
+                                               $ilLangName = $l;
+                                       } else {
+                                               $ilLangName = $this->getLanguage()->ucfirst( $ilLangName );
+                                       }
                                        $language_urls[] = array(
                                                'href' => $nt->getFullURL(),
-                                               'text' => ( Language::fetchLanguageName( $nt->getInterwiki() ) != '' ?
-                                                                       Language::fetchLanguageName( $nt->getInterwiki() ) : $l ),
+                                               'text' => $ilLangName,
                                                'title' => $nt->getText(),
                                                'class' => $class,
                                                'lang' => $nt->getInterwiki(),
@@ -438,7 +443,7 @@ class SkinTemplate extends Skin {
                                }
                        }
                }
-               if( count( $language_urls ) ) {
+               if ( count( $language_urls ) ) {
                        $tpl->setRef( 'language_urls', $language_urls );
                } else {
                        $tpl->set( 'language_urls', false );
@@ -617,13 +622,13 @@ class SkinTemplate extends Skin {
                        $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
                                ? 'nav-login-createaccount'
                                : 'login';
-                       $is_signup = $request->getText('type') == "signup";
+                       $is_signup = $request->getText( 'type' ) == 'signup';
 
                        # anonlogin & login are the same
                        $login_url = array(
                                'text' => $this->msg( $loginlink )->text(),
                                'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
-                               'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == "nav-login-createaccount" || !$is_signup )
+                               'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == 'nav-login-createaccount' || !$is_signup )
                        );
                        if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
                                $createaccount_url = array(
@@ -639,15 +644,18 @@ class SkinTemplate extends Skin {
                                $login_url['href']  = $https_url;
                                # @todo FIXME: Class depends on skin
                                $login_url['class'] = 'link-https';
-                               if ( isset($createaccount_url) ) {
+                               if ( isset( $createaccount_url ) ) {
                                        $https_url = preg_replace( '/^http:/', 'https:',
-                                               $title->getFullURL("type=signup") );
+                                               $title->getFullURL( 'type=signup' ) );
                                        $createaccount_url['href']  = $https_url;
                                        # @todo FIXME: Class depends on skin
                                        $createaccount_url['class'] = 'link-https';
                                }
                        }
 
+                       if ( isset( $createaccount_url ) ) {
+                               $personal_urls['createaccount'] = $createaccount_url;
+                       }
 
                        if( $this->showIPinHeader() ) {
                                $href = &$this->userpageUrlDetails['href'];
@@ -669,9 +677,6 @@ class SkinTemplate extends Skin {
                        } else {
                                $personal_urls['login'] = $login_url;
                        }
-                       if ( isset($createaccount_url) ) {
-                               $personal_urls['createaccount'] = $createaccount_url;
-                       }
                }
 
                wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) );
@@ -701,9 +706,9 @@ class SkinTemplate extends Skin {
                // wfMessageFallback will nicely accept $message as an array of fallbacks
                // or just a single key
                $msg = wfMessageFallback( $message )->setContext( $this->getContext() );
-               if ( is_array($message) ) {
+               if ( is_array( $message ) ) {
                        // for hook compatibility just keep the last message name
-                       $message = end($message);
+                       $message = end( $message );
                }
                if ( $msg->exists() ) {
                        $text = $msg->text();
@@ -788,8 +793,9 @@ class SkinTemplate extends Skin {
 
                wfProfileIn( __METHOD__ );
 
-               $title = $this->getRelevantTitle(); // Display tabs for the relevant title rather than always the title itself
-               $onPage = $title->equals($this->getTitle());
+               // Display tabs for the relevant title rather than always the title itself
+               $title = $this->getRelevantTitle();
+               $onPage = $title->equals( $this->getTitle() );
 
                $out = $this->getOutput();
                $request = $this->getRequest();
@@ -833,7 +839,7 @@ class SkinTemplate extends Skin {
                        // Adds namespace links
                        $subjectMsg = array( "nstab-$subjectId" );
                        if ( $subjectPage->isMainPage() ) {
-                               array_unshift($subjectMsg, 'mainpage-nstab');
+                               array_unshift( $subjectMsg, 'mainpage-nstab' );
                        }
                        $content_navigation['namespaces'][$subjectId] = $this->tabAction(
                                $subjectPage, $subjectMsg, !$isTalk && !$preventActiveTabs, '', $userCanRead
@@ -850,9 +856,10 @@ class SkinTemplate extends Skin {
                                        $content_navigation['views']['view'] = $this->tabAction(
                                                $isTalk ? $talkPage : $subjectPage,
                                                array( "$skname-view-view", 'view' ),
-                                               ( $onPage && ($action == 'view' || $action == 'purge' ) ), '', true
+                                               ( $onPage && ( $action == 'view' || $action == 'purge' ) ), '', true
                                        );
-                                       $content_navigation['views']['view']['redundant'] = true; // signal to hide this from simple content_actions
+                                       // signal to hide this from simple content_actions
+                                       $content_navigation['views']['view']['redundant'] = true;
                                }
 
                                wfProfileIn( __METHOD__ . '-edit' );
@@ -870,14 +877,14 @@ class SkinTemplate extends Skin {
                                        $section = $request->getVal( 'section' );
 
                                        $msgKey = $title->exists() || ( $title->getNamespace() == NS_MEDIAWIKI && $title->getDefaultMessageText() !== false ) ?
-                                               "edit" : "create";
+                                               'edit' : 'create';
                                        $content_navigation['views']['edit'] = array(
                                                'class' => ( $isEditing && ( $section !== 'new' || !$showNewSection ) ? 'selected' : '' ) . $isTalkClass,
                                                'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )->setContext( $this->getContext() )->text(),
                                                'href' => $title->getLocalURL( $this->editUrlOptions() ),
                                                'primary' => true, // don't collapse this in vector
                                        );
-                                       
+
                                        // section link
                                        if ( $showNewSection ) {
                                                // Adds new section link
@@ -931,7 +938,7 @@ class SkinTemplate extends Skin {
                                        // article doesn't exist or is deleted
                                        if ( $user->isAllowed( 'deletedhistory' ) ) {
                                                $n = $title->isDeleted();
-                                               if( $n ) {
+                                               if ( $n ) {
                                                        $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
                                                        // If the user can't undelete but can view deleted history show them a "View .. deleted" tab instead
                                                        $msgKey = $user->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
@@ -971,7 +978,8 @@ class SkinTemplate extends Skin {
                                        $token = WatchAction::getWatchToken( $title, $user, $mode );
                                        $content_navigation['actions'][$mode] = array(
                                                'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
-                                               'text' => $this->msg( $mode )->text(), // uses 'watch' or 'unwatch' message
+                                               // uses 'watch' or 'unwatch' message
+                                               'text' => $this->msg( $mode )->text(),
                                                'href' => $title->getLocalURL( array( 'action' => $mode, 'token' => $token ) )
                                        );
                                }
@@ -985,8 +993,8 @@ class SkinTemplate extends Skin {
                                $variants = $pageLang->getVariants();
                                // Checks that language conversion is enabled and variants exist
                                // And if it is not in the special namespace
-                               if( count( $variants ) > 1 ) {
-                                       // Gets preferred variant (note that user preference is 
+                               if ( count( $variants ) > 1 ) {
+                                       // Gets preferred variant (note that user preference is
                                        // only possible for wiki content language variant)
                                        $preferred = $pageLang->getPreferredVariant();
                                        // Loops over each variant
@@ -1014,7 +1022,7 @@ class SkinTemplate extends Skin {
                        $content_navigation['namespaces']['special'] = array(
                                'class' => 'selected',
                                'text' => $this->msg( 'nstab-special' )->text(),
-                               'href' => $request->getRequestURL(), // @bug 2457, 2510
+                               'href' => $request->getRequestURL(), // @see: bug 2457, bug 2510
                                'context' => 'subject'
                        );
 
@@ -1033,7 +1041,7 @@ class SkinTemplate extends Skin {
                                        $xmlID = 'ca-nstab-' . $xmlID;
                                } elseif ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
                                        $xmlID = 'ca-talk';
-                               } elseif ( $section == "variants" ) {
+                               } elseif ( $section == 'variants' ) {
                                        $xmlID = 'ca-varlang-' . $xmlID;
                                } else {
                                        $xmlID = 'ca-' . $xmlID;
@@ -1048,14 +1056,14 @@ class SkinTemplate extends Skin {
                # give the edit tab an accesskey, because that's fairly su-
                # perfluous and conflicts with an accesskey (Ctrl-E) often
                # used for editing in Safari.
-               if( in_array( $action, array( 'edit', 'submit' ) ) ) {
-                       if ( isset($content_navigation['views']['edit']) ) {
+               if ( in_array( $action, array( 'edit', 'submit' ) ) ) {
+                       if ( isset( $content_navigation['views']['edit'] ) ) {
                                $content_navigation['views']['edit']['tooltiponly'] = true;
                        }
-                       if ( isset($content_navigation['actions']['watch']) ) {
+                       if ( isset( $content_navigation['actions']['watch'] ) ) {
                                $content_navigation['actions']['watch']['tooltiponly'] = true;
                        }
-                       if ( isset($content_navigation['actions']['unwatch']) ) {
+                       if ( isset( $content_navigation['actions']['unwatch'] ) ) {
                                $content_navigation['actions']['unwatch']['tooltiponly'] = true;
                        }
                }
@@ -1084,7 +1092,7 @@ class SkinTemplate extends Skin {
 
                        foreach ( $links as $key => $value ) {
 
-                               if ( isset($value["redundant"]) && $value["redundant"] ) {
+                               if ( isset( $value['redundant'] ) && $value['redundant'] ) {
                                        // Redundant tabs are dropped from content_actions
                                        continue;
                                }
@@ -1093,11 +1101,11 @@ class SkinTemplate extends Skin {
                                // so the xmlID based id is much closer to the actual $key that we want
                                // for that reason we'll just strip out the ca- if present and use
                                // the latter potion of the "id" as the $key
-                               if ( isset($value["id"]) && substr($value["id"], 0, 3) == "ca-" ) {
-                                       $key = substr($value["id"], 3);
+                               if ( isset( $value['id'] ) && substr( $value['id'], 0, 3 ) == 'ca-' ) {
+                                       $key = substr( $value['id'], 3 );
                                }
 
-                               if ( isset($content_actions[$key]) ) {
+                               if ( isset( $content_actions[$key] ) ) {
                                        wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening content_navigation into content_actions." );
                                        continue;
                                }
@@ -1148,7 +1156,7 @@ class SkinTemplate extends Skin {
 
                // A print stylesheet is attached to all pages, but nobody ever
                // figures that out. :)  Add a link...
-               if( $out->isArticle() ) {
+               if ( $out->isArticle() ) {
                        if ( !$out->isPrintable() ) {
                                $nav_urls['print'] = array(
                                        'text' => $this->msg( 'printableversion' )->text(),
@@ -1417,7 +1425,7 @@ abstract class BaseTemplate extends QuickTemplate {
                }
                if ( isset( $this->data['nav_urls']['permalink'] ) && $this->data['nav_urls']['permalink'] ) {
                        $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
-                       if( $toolbox['permalink']['href'] === '' ) {
+                       if ( $toolbox['permalink']['href'] === '' ) {
                                unset( $toolbox['permalink']['href'] );
                                $toolbox['ispermalink']['tooltiponly'] = true;
                                $toolbox['ispermalink']['id'] = 't-ispermalink';
@@ -1443,20 +1451,24 @@ abstract class BaseTemplate extends QuickTemplate {
         */
        function getPersonalTools() {
                $personal_tools = array();
-               foreach( $this->data['personal_urls'] as $key => $ptool ) {
+               foreach ( $this->data['personal_urls'] as $key => $plink ) {
                        # The class on a personal_urls item is meant to go on the <a> instead
                        # of the <li> so we have to use a single item "links" array instead
-                       # of using most of the personal_url's keys directly
-                       $personal_tools[$key] = array();
-                       $personal_tools[$key]["links"][] = array();
-                       $personal_tools[$key]["links"][0]["single-id"] = $personal_tools[$key]["id"] = "pt-$key";
-                       if ( isset($ptool["active"]) ) {
-                               $personal_tools[$key]["active"] = $ptool["active"];
+                       # of using most of the personal_url's keys directly.
+                       $ptool = array(
+                               'links' => array(
+                                       array( 'single-id' => "pt-$key" ),
+                               ),
+                               'id' => "pt-$key",
+                       );
+                       if ( isset( $plink['active'] ) ) {
+                               $ptool['active'] = $plink['active'];
                        }
-                       foreach ( array("href", "class", "text") as $k ) {
-                               if ( isset($ptool[$k]) )
-                                       $personal_tools[$key]["links"][0][$k] = $ptool[$k];
+                       foreach ( array( 'href', 'class', 'text' ) as $k ) {
+                               if ( isset( $plink[$k] ) )
+                                       $ptool['links'][0][$k] = $plink[$k];
                        }
+                       $personal_tools[$key] = $ptool;
                }
                return $personal_tools;
        }
@@ -1473,7 +1485,7 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( !isset( $sidebar['LANGUAGES'] ) ) {
                        $sidebar['LANGUAGES'] = true;
                }
-               
+
                if ( !isset( $options['search'] ) || $options['search'] !== true ) {
                        unset( $sidebar['SEARCH'] );
                }
@@ -1483,7 +1495,7 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( isset( $options['languages'] ) && $options['languages'] === false ) {
                        unset( $sidebar['LANGUAGES'] );
                }
-               
+
                $boxes = array();
                foreach ( $sidebar as $boxName => $content ) {
                        if ( $content === false ) {
@@ -1493,7 +1505,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        case 'SEARCH':
                                // Search is a special case, skins should custom implement this
                                $boxes[$boxName] = array(
-                                       'id'        => "p-search",
+                                       'id'        => 'p-search',
                                        'header'    => $this->getMsg( 'search' )->text(),
                                        'generated' => false,
                                        'content'   => true,
@@ -1502,7 +1514,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        case 'TOOLBOX':
                                $msgObj = $this->getMsg( 'toolbox' );
                                $boxes[$boxName] = array(
-                                       'id'        => "p-tb",
+                                       'id'        => 'p-tb',
                                        'header'    => $msgObj->exists() ? $msgObj->text() : 'toolbox',
                                        'generated' => false,
                                        'content'   => $this->getToolbox(),
@@ -1512,12 +1524,12 @@ abstract class BaseTemplate extends QuickTemplate {
                                if ( $this->data['language_urls'] ) {
                                        $msgObj = $this->getMsg( 'otherlanguages' );
                                        $boxes[$boxName] = array(
-                                               'id'        => "p-lang",
+                                               'id'        => 'p-lang',
                                                'header'    => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
                                                'generated' => false,
                                                'content'   => $this->data['language_urls'],
                                        );
-                               } 
+                               }
                                break;
                        default:
                                $msgObj = $this->getMsg( $boxName );
@@ -1530,7 +1542,7 @@ abstract class BaseTemplate extends QuickTemplate {
                                break;
                        }
                }
-               
+
                // HACK: Compatibility with extensions still using SkinTemplateToolboxEnd
                $hookContents = null;
                if ( isset( $boxes['TOOLBOX'] ) ) {
@@ -1545,17 +1557,17 @@ abstract class BaseTemplate extends QuickTemplate {
                        }
                }
                // END hack
-               
+
                if ( isset( $options['htmlOnly'] ) && $options['htmlOnly'] === true ) {
                        foreach ( $boxes as $boxName => $box ) {
                                if ( is_array( $box['content'] ) ) {
-                                       $content = "<ul>";
+                                       $content = '<ul>';
                                        foreach ( $box['content'] as $key => $val ) {
                                                $content .= "\n " . $this->makeListItem( $key, $val );
                                        }
                                        // HACK, shove the toolbox end onto the toolbox if we're rendering itself
                                        if ( $hookContents ) {
-                                               $content .= "\n $hookContents"; 
+                                               $content .= "\n $hookContents";
                                        }
                                        // END hack
                                        $content .= "\n</ul>\n";
@@ -1565,7 +1577,7 @@ abstract class BaseTemplate extends QuickTemplate {
                } else {
                        if ( $hookContents ) {
                                $boxes['TOOLBOXEND'] = array(
-                                       'id'        => "p-toolboxend",
+                                       'id'        => 'p-toolboxend',
                                        'header'    => $boxes['TOOLBOX']['header'],
                                        'generated' => false,
                                        'content'   => "<ul>{$hookContents}</ul>",
@@ -1585,7 +1597,7 @@ abstract class BaseTemplate extends QuickTemplate {
                                // END hack
                        }
                }
-               
+
                return $boxes;
        }
 
@@ -1863,8 +1875,8 @@ abstract class BaseTemplate extends QuickTemplate {
         * body and html tags.
         */
        function printTrail() { ?>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
+<?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html( 'reporttime' ) ?>
 <?php if ( $this->data['debug'] ): ?>
 <!-- Debug output:
 <?php $this->text( 'debug' ); ?>
index 7a6c0be..9e6717f 100644 (file)
@@ -626,7 +626,7 @@ class SpecialPage {
                } else {
                        $msg = $summaryMessageKey;
                }
-               if ( !$this->msg( $msg )->isBlank() && !$this->including() ) {
+               if ( !$this->msg( $msg )->isDisabled() && !$this->including() ) {
                        $this->getOutput()->wrapWikiMsg(
                                "<div class='mw-specialpage-summary'>\n$1\n</div>", $msg );
                }
index 807fcc1..046fadb 100644 (file)
@@ -209,7 +209,15 @@ class Title {
         */
        public static function newFromID( $id, $flags = 0 ) {
                $db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
-               $row = $db->selectRow( 'page', '*', array( 'page_id' => $id ), __METHOD__ );
+               $row = $db->selectRow(
+                       'page',
+                       array(
+                               'page_namespace', 'page_title', 'page_id',
+                               'page_len', 'page_is_redirect', 'page_latest',
+                       ),
+                       array( 'page_id' => $id ),
+                       __METHOD__
+               );
                if ( $row !== false ) {
                        $title = Title::newFromRow( $row );
                } else {
@@ -928,7 +936,7 @@ class Title {
         */
        public function isConversionTable() {
                return $this->getNamespace() == NS_MEDIAWIKI &&
-                       strpos( $this->getText(), 'Conversiontable' ) !== false;
+                       strpos( $this->getText(), 'Conversiontable/' ) === 0;
        }
 
        /**
@@ -3970,7 +3978,7 @@ class Title {
                $pageId = $this->getArticleID( $flags );
                if ( $pageId ) {
                        $db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
-                       $row = $db->selectRow( 'revision', '*',
+                       $row = $db->selectRow( 'revision', Revision::selectFields(),
                                array( 'rev_page' => $pageId ),
                                __METHOD__,
                                array( 'ORDER BY' => 'rev_timestamp ASC', 'LIMIT' => 1 )
index 5de4b2c..01407b1 100644 (file)
@@ -1028,7 +1028,7 @@ class User {
                }
 
                $dbr = wfGetDB( DB_MASTER );
-               $s = $dbr->selectRow( 'user', '*', array( 'user_id' => $this->mId ), __METHOD__ );
+               $s = $dbr->selectRow( 'user', self::selectFields(), array( 'user_id' => $this->mId ), __METHOD__ );
 
                wfRunHooks( 'UserLoadFromDatabase', array( $this, &$s ) );
 
@@ -4018,7 +4018,7 @@ class User {
 
                        $res = $dbr->select(
                                'user_properties',
-                               '*',
+                               array( 'up_property', 'up_value' ),
                                array( 'up_user' => $this->getId() ),
                                __METHOD__
                        );
@@ -4041,13 +4041,9 @@ class User {
        protected function saveOptions() {
                global $wgAllowPrefChange;
 
-               $extuser = ExternalUser::newFromUser( $this );
-
                $this->loadOptions();
-               $dbw = wfGetDB( DB_MASTER );
-
-               $insert_rows = array();
 
+               // Not using getOptions(), to keep hidden preferences in database
                $saveOptions = $this->mOptions;
 
                // Allow hooks to abort, for instance to save to a global profile.
@@ -4056,13 +4052,17 @@ class User {
                        return;
                }
 
+               $extuser = ExternalUser::newFromUser( $this );
+               $userId = $this->getId();
+               $insert_rows = array();
                foreach( $saveOptions as $key => $value ) {
                        # Don't bother storing default values
-                       if ( ( is_null( self::getDefaultOption( $key ) ) &&
-                                       !( $value === false || is_null($value) ) ) ||
-                                       $value != self::getDefaultOption( $key ) ) {
+                       $defaultOption = self::getDefaultOption( $key );
+                       if ( ( is_null( $defaultOption ) &&
+                                       !( $value === false || is_null( $value ) ) ) ||
+                                       $value != $defaultOption ) {
                                $insert_rows[] = array(
-                                               'up_user' => $this->getId(),
+                                               'up_user' => $userId,
                                                'up_property' => $key,
                                                'up_value' => $value,
                                        );
@@ -4079,7 +4079,8 @@ class User {
                        }
                }
 
-               $dbw->delete( 'user_properties', array( 'up_user' => $this->getId() ), __METHOD__ );
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->delete( 'user_properties', array( 'up_user' => $userId ), __METHOD__ );
                $dbw->insert( 'user_properties', $insert_rows, __METHOD__ );
        }
 
@@ -4141,4 +4142,28 @@ class User {
 
                return $ret;
        }
+
+       /**
+        * Return the list of user fields that should be selected to create
+        * a new user object.
+        * @return array
+        */
+       public static function selectFields() {
+               return array(
+                       'user_id',
+                       'user_name',
+                       'user_real_name',
+                       'user_password',
+                       'user_newpassword',
+                       'user_newpass_time',
+                       'user_email',
+                       'user_touched',
+                       'user_token',
+                       'user_email_authenticated',
+                       'user_email_token',
+                       'user_email_token_expires',
+                       'user_registration',
+                       'user_editcount',
+               );
+       }
 }
index 39c1b1b..87526fc 100644 (file)
@@ -981,9 +981,11 @@ HTML;
 
        /**
         * Parse the Accept-Language header sent by the client into an array
-        * @return array array( languageCode => q-value ) sorted by q-value in descending order
+        * @return array array( languageCode => q-value ) sorted by q-value in descending order then
+        *                                                appearing time in the header in ascending order.
         * May contain the "language" '*', which applies to languages other than those explicitly listed.
         * This is aligned with rfc2616 section 14.4
+        * Preference for earlier languages appears in rfc3282 as an extension to HTTP/1.1.
         */
        public function getAcceptLang() {
                // Modified version of code found at http://www.thefutureoftheweb.com/blog/use-accept-language-header
@@ -1004,19 +1006,25 @@ HTML;
                        return array();
                }
 
-               // Create a list like "en" => 0.8
-               $langs = array_combine( $lang_parse[1], $lang_parse[4] );
+               $langcodes = $lang_parse[1];
+               $qvalues = $lang_parse[4];
+               $indices = range( 0, count( $lang_parse[1] ) - 1 );
+
                // Set default q factor to 1
-               foreach ( $langs as $lang => $val ) {
-                       if ( $val === '' ) {
-                               $langs[$lang] = 1;
-                       } elseif ( $val == 0 ) {
-                               unset($langs[$lang]);
+               foreach ( $indices as $index ) {
+                       if ( $qvalues[$index] === '' ) {
+                               $qvalues[$index] = 1;
+                       } elseif ( $qvalues[$index] == 0 ) {
+                               unset( $langcodes[$index], $qvalues[$index], $indices[$index] );
                        }
                }
 
-               // Sort list
-               arsort( $langs, SORT_NUMERIC );
+               // Sort list. First by $qvalues, then by order. Reorder $langcodes the same way
+               array_multisort( $qvalues, SORT_DESC, SORT_NUMERIC, $indices, $langcodes );
+
+               // Create a list like "en" => 0.8
+               $langs = array_combine( $langcodes, $qvalues );
+
                return $langs;
        }
 
index b20cb95..7efb082 100644 (file)
@@ -462,6 +462,8 @@ class MediaWiki {
         * @param $page Page
         */
        private function performAction( Page $page ) {
+               global $wgUseSquid, $wgSquidMaxage;
+
                wfProfileIn( __METHOD__ );
 
                $request = $this->context->getRequest();
@@ -480,6 +482,13 @@ class MediaWiki {
 
                $action = Action::factory( $act, $page );
                if ( $action instanceof Action ) {
+                       # Let Squid cache things if we can purge them.
+                       if ( $wgUseSquid &&
+                               in_array( $request->getFullRequestURL(), $title->getSquidURLs() )
+                       ) {
+                               $output->setSquidMaxage( $wgSquidMaxage );
+                       }
+
                        $action->show();
                        wfProfileOut( __METHOD__ );
                        return;
index fffd5f6..76a9828 100644 (file)
@@ -243,11 +243,20 @@ class WikiPage extends Page {
 
        /**
         * Clear the object
+        * @return void
         */
        public function clear() {
                $this->mDataLoaded = false;
                $this->mDataLoadedFrom = self::DATA_NOT_LOADED;
 
+               $this->clearCacheFields();
+       }
+
+       /**
+        * Clear the object cache fields
+        * @return void
+        */
+       protected function clearCacheFields() {
                $this->mCounter = null;
                $this->mRedirectTarget = null; # Title object if set
                $this->mLastRevision = null; # Latest revision
@@ -396,10 +405,18 @@ class WikiPage extends Page {
                        $this->mTouched     = wfTimestamp( TS_MW, $data->page_touched );
                        $this->mIsRedirect  = intval( $data->page_is_redirect );
                        $this->mLatest      = intval( $data->page_latest );
+                       // Bug 37225: $latest may no longer match the cached latest Revision object.
+                       // Double-check the ID of any cached latest Revision object for consistency.
+                       if ( $this->mLastRevision && $this->mLastRevision->getId() != $this->mLatest ) {
+                               $this->mLastRevision = null;
+                               $this->mTimestamp = '';
+                       }
                } else {
                        $lc->addBadLinkObj( $this->mTitle );
 
                        $this->mTitle->loadFromRow( false );
+
+                       $this->clearCacheFields();
                }
 
                $this->mDataLoaded = true;
@@ -530,11 +547,7 @@ class WikiPage extends Page {
                }
 
                wfProfileOut( __METHOD__ );
-               if ( $row ) {
-                       return Revision::newFromRow( $row );
-               } else {
-                       return null;
-               }
+               return $row ? Revision::newFromRow( $row ) : null;
        }
 
        /**
@@ -615,7 +628,7 @@ class WikiPage extends Page {
                if ( !$this->mTimestamp ) {
                        $this->loadLastEdit();
                }
-               
+
                return wfTimestamp( TS_MW, $this->mTimestamp );
        }
 
@@ -1432,7 +1445,7 @@ class WikiPage extends Page {
         *  Compatibility note: this function previously returned a boolean value indicating success/failure
         */
        public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
-               global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries;
+               global $wgUser, $wgUseAutomaticEditSummaries;
 
                # Low-level sanity check
                if ( $this->mTitle->getText() === '' ) {
@@ -1500,11 +1513,6 @@ class WikiPage extends Page {
                                return $status;
                        }
 
-                       # Make sure the revision is either completely inserted or not inserted at all
-                       if ( !$wgDBtransactions ) {
-                               $userAbort = ignore_user_abort( true );
-                       }
-
                        $revision = new Revision( array(
                                'page'       => $this->getId(),
                                'comment'    => $summary,
@@ -1515,6 +1523,9 @@ class WikiPage extends Page {
                                'user_text'  => $user->getName(),
                                'timestamp'  => $now
                        ) );
+                       # Bug 37225: use accessor to get the text as Revision may trim it.
+                       # After trimming, the text may be a duplicate of the current text.
+                       $text = $revision->getText(); // sanity; EditPage should trim already
 
                        $changed = ( strcmp( $text, $oldtext ) != 0 );
 
@@ -1535,11 +1546,6 @@ class WikiPage extends Page {
                                        /* Belated edit conflict! Run away!! */
                                        $status->fatal( 'edit-conflict' );
 
-                                       # Delete the invalid revision if the DB is not transactional
-                                       if ( !$wgDBtransactions ) {
-                                               $dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ );
-                                       }
-
                                        $revisionId = 0;
                                        $dbw->rollback( __METHOD__ );
                                } else {
@@ -1570,10 +1576,6 @@ class WikiPage extends Page {
                                $revision->setId( $this->getLatest() );
                        }
 
-                       if ( !$wgDBtransactions ) {
-                               ignore_user_abort( $userAbort );
-                       }
-
                        // Now that ignore_user_abort is restored, we can respond to fatal errors
                        if ( !$status->isOK() ) {
                                wfProfileOut( __METHOD__ );
@@ -1621,6 +1623,9 @@ class WikiPage extends Page {
                        ) );
                        $revisionId = $revision->insertOn( $dbw );
 
+                       # Bug 37225: use accessor to get the text as Revision may trim it
+                       $text = $revision->getText(); // sanity; EditPage should trim already
+
                        # Update the page record with revision data
                        $this->updateRevisionOn( $dbw, $revision, 0 );
 
@@ -2268,13 +2273,23 @@ class WikiPage extends Page {
                $this->mTitle->resetArticleID( 0 );
        }
 
+       public function getDeletionUpdates() {
+               $updates = array(
+                       new LinksDeletionUpdate( $this ),
+               );
+
+               //@todo: make a hook to add update objects
+               //NOTE: deletion updates will be determined by the ContentHandler in the future
+               return $updates;
+       }
+
        /**
         * Roll back the most recent consecutive set of edits to a page
         * from the same user; fails if there are no eligible edits to
         * roll back to, e.g. user is the sole contributor. This function
         * performs permissions checks on $user, then calls commitRollback()
         * to do the dirty work
-        * 
+        *
         * @todo: seperate the business/permission stuff out from backend code
         *
         * @param $fromP String: Name of the user whose edits to rollback.
@@ -2944,7 +2959,7 @@ class WikiPage extends Page {
        public function quickEdit( $text, $comment = '', $minor = 0 ) {
                wfDeprecated( __METHOD__, '1.18' );
                global $wgUser;
-               return $this->doQuickEdit( $text, $wgUser, $comment, $minor );
+               $this->doQuickEdit( $text, $wgUser, $comment, $minor );
        }
 
        /**
@@ -2965,16 +2980,6 @@ class WikiPage extends Page {
                global $wgUser;
                return $this->isParserCacheUsed( ParserOptions::newFromUser( $wgUser ), $oldid );
        }
-
-       public function getDeletionUpdates() {
-               $updates = array(
-                       new LinksDeletionUpdate( $this ),
-               );
-
-               //@todo: make a hook to add update objects
-               //NOTE: deletion updates will be determined by the ContentHandler in the future
-               return $updates;
-       }
 }
 
 class PoolWorkArticleView extends PoolCounterWork {
index 3f73ea4..d21f9ae 100644 (file)
  * computations here. This function should returns the HTML to be cached.
  * It should not add anything to the PageOutput object!
  *
- * @since 1.20
+ * 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.
  *
- * @file CachedAction.php
- * @ingroup Action
+ * 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
  *
- * @licence GNU GPL v2 or later
+ * @file
+ * @ingroup Action
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @since 1.20
  */
 abstract class CachedAction extends FormlessAction implements ICacheHelper {
 
@@ -167,4 +179,4 @@ abstract class CachedAction extends FormlessAction implements ICacheHelper {
                }
        }
 
-}
\ No newline at end of file
+}
index c49d232..50d210f 100644 (file)
@@ -3,6 +3,22 @@
  * Page history
  *
  * Split off from Article.php and Skin.php, 2003-12-22
+ *
+ * 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
  */
 
@@ -71,7 +87,7 @@ class HistoryAction extends FormlessAction {
         * Print the history page for an article.
         */
        function onView() {
-               global $wgScript, $wgUseFileCache, $wgSquidMaxage;
+               global $wgScript, $wgUseFileCache;
 
                $out = $this->getOutput();
                $request = $this->getRequest();
@@ -85,10 +101,6 @@ class HistoryAction extends FormlessAction {
 
                wfProfileIn( __METHOD__ );
 
-               if ( $request->getFullRequestURL() == $this->getTitle()->getInternalURL( 'action=history' ) ) {
-                       $out->setSquidMaxage( $wgSquidMaxage );
-               }
-
                $this->preCacheMessages();
 
                # Fill in the file cache if not set already
@@ -192,6 +204,11 @@ class HistoryAction extends FormlessAction {
         * @return ResultWrapper
         */
        function fetchRevisions( $limit, $offset, $direction ) {
+               // Fail if article doesn't exist.
+               if( !$this->getTitle()->exists() ) {
+                       return new FakeResultWrapper( array() );
+               }
+
                $dbr = wfGetDB( DB_SLAVE );
 
                if ( $direction == HistoryPage::DIR_PREV ) {
index 5615ad5..174ca3f 100644 (file)
@@ -7,7 +7,20 @@
  *
  * Based on HistoryPage and SpecialExport
  *
- * License: GPL (http://www.gnu.org/copyleft/gpl.html)
+ * 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
  *
  * @author Gabriel Wicke <wicke@wikidev.net>
  * @file
index 4e37381..d57585e 100644 (file)
@@ -34,9 +34,6 @@ class ViewAction extends FormlessAction {
        }
 
        public function show(){
-               global $wgSquidMaxage;
-
-               $this->getOutput()->setSquidMaxage( $wgSquidMaxage );
                $this->page->view();
        }
 
index f0386a1..6a9be24 100644 (file)
@@ -56,6 +56,11 @@ abstract class ApiBase extends ContextSource {
        /// @since 1.17
        const PARAM_RANGE_ENFORCE = 9; // Boolean, if MIN/MAX are set, enforce (die) these? Only applies if TYPE='integer' Use with extreme caution
 
+       const PROP_ROOT = 'ROOT'; // Name of property group that is on the root element of the result, i.e. not part of a list
+       const PROP_LIST = 'LIST'; // Boolean, is the result multiple items? Defaults to true for query modules, to false for other modules
+       const PROP_TYPE = 0; // Type of the property, uses same format as PARAM_TYPE
+       const PROP_NULLABLE = 1; // Boolean, can the property be not included in the result? Defaults to false
+
        const LIMIT_BIG1 = 500; // Fast query, std user limit
        const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
        const LIMIT_SML1 = 50; // Slow query, std user limit
@@ -572,6 +577,51 @@ abstract class ApiBase extends ContextSource {
                return $desc;
        }
 
+       /**
+        * Returns possible properties in the result, grouped by the value of the prop parameter
+        * that shows them.
+        *
+        * Properties that are shown always are in a group with empty string as a key.
+        * Properties that can be shown by several values of prop are included multiple times.
+        * If some properties are part of a list and some are on the root object (see ApiQueryQueryPage),
+        * those on the root object are under the key PROP_ROOT.
+        * The array can also contain a boolean under the key PROP_LIST,
+        * indicating whether the result is a list.
+        *
+        * Don't call this functon directly: use getFinalResultProperties() to
+        * allow hooks to modify descriptions as needed.
+        *
+        * @return array|bool False on no properties
+        */
+       protected function getResultProperties() {
+               return false;
+       }
+
+       /**
+        * Get final possible result properties, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @return array
+        */
+       public function getFinalResultProperties() {
+               $properties = $this->getResultProperties();
+               wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) );
+               return $properties;
+       }
+
+       /**
+        * Add token properties to the array used by getResultProperties,
+        * based on a token functions mapping.
+        */
+       protected static function addTokenProperties( &$props, $tokenFunctions ) {
+               foreach ( array_keys( $tokenFunctions ) as $token ) {
+                       $props[''][$token . 'token'] = array(
+                               ApiBase::PROP_TYPE => 'string',
+                               ApiBase::PROP_NULLABLE => true
+                       );
+               }
+       }
+
        /**
         * Get final module description, after hooks have had a chance to tweak it as
         * needed.
index e229ef0..6cd31ae 100644 (file)
@@ -186,6 +186,44 @@ class ApiBlock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userID' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'expiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidename' => 'boolean',
+                               'allowusertalk' => 'boolean',
+                               'watchuser' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Block a user';
        }
index 87f0967..ed72b29 100644 (file)
@@ -124,6 +124,25 @@ class ApiComparePages extends ApiBase {
                        'torev' => 'Second revision to compare',
                );
        }
+
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'fromtitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'fromrevid' => 'integer',
+                               'totitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'torevid' => 'integer',
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get the difference between 2 pages',
index cefdaac..1927490 100644 (file)
@@ -221,6 +221,15 @@ class ApiDelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Delete a page';
        }
index 0b7ac41..9a16007 100644 (file)
@@ -494,6 +494,41 @@ class ApiEditPage extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'new' => 'boolean',
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'nochange' => 'boolean',
+                               'oldrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function needsToken() {
                return true;
        }
index 0032bd8..4b6ba00 100644 (file)
@@ -113,6 +113,23 @@ class ApiEmailUser extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'message' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Email a user.';
        }
index d570534..2ed118f 100644 (file)
@@ -103,6 +103,14 @@ class ApiExpandTemplates extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Expands all templates in wikitext';
        }
index 5ea2571..7cac0eb 100644 (file)
@@ -132,15 +132,29 @@ class ApiFileRevert extends ApiBase {
        }
 
        public function getParamDescription() {
-               $params = array(
+               return array(
                        'filename' => 'Target filename without the File: prefix',
                        'token' => 'Edit token. You can get one of these through prop=info',
                        'comment' => 'Upload comment',
                        'archivename' => 'Archive name of the revision to revert to',
                );
+       }
 
-               return $params;
-
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       )
+                               ),
+                               'errors' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
        }
 
        public function getDescription() {
index 8f4abc1..ef2c54f 100644 (file)
@@ -215,7 +215,8 @@ class ApiFormatXml extends ApiFormatBase {
        public function getParamDescription() {
                return array(
                        'xmldoublequote' => 'If specified, double quotes all attributes and content',
-                       'xslt' => 'If specified, adds <xslt> as stylesheet',
+                       'xslt' => 'If specified, adds <xslt> as stylesheet. This should be a wiki page '
+                               . 'in the MediaWiki namespace whose page name ends with ".xsl"',
                        'includexmlnamespace' => 'If specified, adds an XML namespace'
                );
        }
index 5093b6b..6663d97 100644 (file)
@@ -126,6 +126,17 @@ class ApiImport extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'revisions' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Import a page from another wiki, or an XML file.' ,
@@ -187,11 +198,11 @@ class ApiImportReporter extends ImportReporter {
                // Add a result entry
                $r = array();
 
-               if ( $title === null ) {\r
+               if ( $title === null ) {
                        # Invalid or non-importable title
                        $r['title'] = $pageInfo['title'];
-                       $r['invalid'] = '';\r
-               } else {\r
+                       $r['invalid'] = '';
+               } else {
                        ApiQueryBase::addTitleInfo( $r, $title );
                        $r['revisions'] = intval( $successCount );
                }
index aa570cb..2ad2653 100644 (file)
@@ -79,6 +79,8 @@ class ApiLogin extends ApiBase {
                                $user->setOption( 'rememberpassword', 1 );
                                $user->setCookies( $this->getRequest() );
 
+                               ApiQueryInfo::resetTokenCache();
+
                                // Run hooks.
                                // @todo FIXME: Split back and frontend from this hook.
                                // @todo FIXME: This hook should be placed in the backend
@@ -181,6 +183,66 @@ class ApiLogin extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'NeedToken',
+                                               'WrongToken',
+                                               'NoName',
+                                               'Illegal',
+                                               'WrongPluginPass',
+                                               'NotExists',
+                                               'WrongPass',
+                                               'EmptyPass',
+                                               'CreateBlocked',
+                                               'Throttled',
+                                               'Blocked',
+                                               'Aborted'
+                                       )
+                               ),
+                               'lguserid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgusername' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'cookieprefix' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionid' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'token' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'details' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'wait' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Log in and get the authentication tokens. ',
index 81a054a..cab2430 100644 (file)
@@ -54,6 +54,10 @@ class ApiLogout extends ApiBase {
                return array();
        }
 
+       public function getResultProperties() {
+               return array();
+       }
+
        public function getParamDescription() {
                return array();
        }
index 7414a97..30e9fb6 100644 (file)
@@ -607,7 +607,7 @@ class ApiMain extends ApiBase {
                        if ( !isset( $moduleParams['token'] ) ) {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        } else {
-                               if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt ) ) {
+                               if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
                                        $this->dieUsageMsg( 'sessionfailure' );
                                }
                        }
index f0a25e4..c89f59b 100644 (file)
@@ -224,6 +224,33 @@ class ApiMove extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'from' => 'string',
+                               'to' => 'string',
+                               'reason' => 'string',
+                               'redirectcreated' => 'boolean',
+                               'talkfrom' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkto' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-code' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-info' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Move a page';
        }
index 7bcfe1e..2b3d5e3 100644 (file)
@@ -107,6 +107,18 @@ class ApiOptions extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'success'
+                                       )
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'token' => 'An options token previously obtained through the action=tokens',
index 598f9ad..b7db4f0 100644 (file)
@@ -367,7 +367,7 @@ class ApiPageSet extends ApiQueryBase {
         */
        public function processDbRow( $row ) {
                // Store Title object in various data structures
-               $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+               $title = Title::newFromRow( $row );
 
                $pageId = intval( $row->page_id );
                $this->mAllPages[$row->page_namespace][$row->page_title] = $pageId;
index f226347..dffce5b 100644 (file)
@@ -251,6 +251,62 @@ class ApiParamInfo extends ApiBase {
                }
                $result->setIndexedTagName( $retval['parameters'], 'param' );
 
+               $props = $obj->getFinalResultProperties();
+               $listResult = null;
+               if ( $props !== false ) {
+                       $retval['props'] = array();
+
+                       foreach ( $props as $prop => $properties ) {
+                               $propResult = array();
+                               if ( $prop == ApiBase::PROP_LIST ) {
+                                       $listResult = $properties;
+                                       continue;
+                               }
+                               if ( $prop != ApiBase::PROP_ROOT ) {
+                                       $propResult['name'] = $prop;
+                               }
+                               $propResult['properties'] = array();
+
+                               foreach ( $properties as $name => $p ) {
+                                       $propertyResult = array();
+
+                                       $propertyResult['name'] = $name;
+
+                                       if ( !is_array( $p ) ) {
+                                               $p = array( ApiBase::PROP_TYPE => $p );
+                                       }
+
+                                       $propertyResult['type'] = $p[ApiBase::PROP_TYPE];
+
+                                       if ( is_array( $propertyResult['type'] ) ) {
+                                               $propertyResult['type'] = array_values( $propertyResult['type'] );
+                                               $result->setIndexedTagName( $propertyResult['type'], 't' );
+                                       }
+
+                                       $nullable = null;
+                                       if ( isset( $p[ApiBase::PROP_NULLABLE] ) ) {
+                                               $nullable = $p[ApiBase::PROP_NULLABLE];
+                                       }
+
+                                       if ( $nullable === true ) {
+                                               $propertyResult['nullable'] = '';
+                                       }
+
+                                       $propResult['properties'][] = $propertyResult;
+                               }
+
+                               $result->setIndexedTagName( $propResult['properties'], 'property' );
+                               $retval['props'][] = $propResult;
+                       }
+
+                       // default is true for query modules, false for other modules, overriden by ApiBase::PROP_LIST
+                       if ( $listResult === true || ( $listResult !== false && $obj instanceof ApiQueryBase ) ) {
+                               $retval['listresult'] = '';
+                       }
+
+                       $result->setIndexedTagName( $retval['props'], 'prop' );
+               }
+
                // Errors
                $retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
                $result->setIndexedTagName( $retval['errors'], 'error' );
index 1332f26..45d19d0 100644 (file)
@@ -80,6 +80,16 @@ class ApiPatrol extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'rcid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Patrol a page or revision';
        }
index 286f191..0fcaf42 100644 (file)
@@ -184,6 +184,16 @@ class ApiProtect extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string',
+                               'cascade' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Change the protection level of a page';
        }
index 8ef9cbc..d9acba4 100644 (file)
@@ -88,8 +88,7 @@ class ApiPurge extends ApiBase {
                                if ( !$user->pingLimiter() ) {
                                        global $wgParser, $wgEnableParserCache;
 
-                                       $popts = ParserOptions::newFromContext( $this->getContext() );
-                                       $popts->setTidy( true );
+                                       $popts = $page->makeParserOptions( 'canonical' );
                                        $p_result = $wgParser->parse( $page->getRawText(), $title, $popts,
                                                true, true, $page->getLatest() );
 
@@ -104,7 +103,8 @@ class ApiPurge extends ApiBase {
                                                $pcache->save( $p_result, $page, $popts );
                                        }
                                } else {
-                                       $this->setWarning( $this->parseMsg( array( 'actionthrottledtext' ) ) );
+                                       $error = $this->parseMsg( array( 'actionthrottledtext' ) );
+                                       $this->setWarning( $error['info'] );
                                        $forceLinkUpdate = false;
                                }
                        }
@@ -134,6 +134,34 @@ class ApiPurge extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'revid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'invalid' => 'boolean',
+                               'missing' => 'boolean',
+                               'purged' => 'boolean',
+                               'linkupdate' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Purge the cache for the given titles.',
                        'Requires a POST request if the user is not logged in.'
index 233ea75..60b57bf 100644 (file)
@@ -192,6 +192,23 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pages' => 'integer',
+                               'files' => 'integer',
+                               'subcats' => 'integer'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all categories';
        }
index 87e7024..4ab4d72 100644 (file)
@@ -165,7 +165,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                                        break;
                                }
                        } else {
-                               $titles[] = Title::makeTitle( NS_IMAGE, $row->img_name );
+                               $titles[] = Title::makeTitle( NS_FILE, $row->img_name );
                        }
                }
 
@@ -230,6 +230,19 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
 
        private $propertyFilter = array( 'archivename' );
 
+       public function getResultProperties() {
+               return array_merge(
+                       array(
+                               '' => array(
+                                       'name' => 'string',
+                                       'ns' => 'namespace',
+                                       'title' => 'string'
+                               )
+                       ),
+                       ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all images sequentially';
        }
index f04d5b2..6b8fe57 100644 (file)
@@ -205,6 +205,18 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'fromid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all links that point to a given namespace';
        }
index dedd3e5..ac000bf 100644 (file)
@@ -256,6 +256,27 @@ class ApiQueryAllMessages extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'customised' => 'boolean',
+                               'missing' => 'boolean',
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'default' => array(
+                               'defaultmissing' => 'boolean',
+                               'default' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Return messages from this site';
        }
index 7e89a95..cfc22ff 100644 (file)
@@ -296,6 +296,16 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all pages sequentially in a given namespace';
        }
index c84746d..dda8c72 100644 (file)
@@ -361,7 +361,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                        'dir' => 'Direction to sort in',
                        'group' => 'Limit users to given group name(s)',
                        'excludegroup' => 'Exclude users in given group name(s)',
-                       'rights' => 'Limit users to given right(s)',
+                       'rights' => 'Limit users to given right(s) (does not include rights granted by implicit or auto-promoted groups like *, user, or autoconfirmed)',
                        'prop' => array(
                                'What pieces of information to include.',
                                ' blockinfo      - Adds the information about a current block on the user',
@@ -377,6 +377,48 @@ class ApiQueryAllUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'name' => 'string',
+                               'recenteditcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'hidden' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'registration' => array(
+                               'registration' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all registered users';
        }
index 5505692..9704b6d 100644 (file)
@@ -277,7 +277,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                                        if ( $this->hasNS ) {
                                                $parentID = $this->pageMap[$row-> { $this->bl_ns } ][$row-> { $this->bl_title } ];
                                        } else {
-                                               $parentID = $this->pageMap[NS_IMAGE][$row-> { $this->bl_title } ];
+                                               $parentID = $this->pageMap[NS_FILE][$row-> { $this->bl_title } ];
                                        }
                                        $this->continueStr = $this->getContinueRedirStr( $parentID, $row->page_id );
                                        break;
@@ -481,6 +481,17 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                ) );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                switch ( $this->getModuleName() ) {
                        case 'backlinks':
index 8c287d6..49cd590 100644 (file)
@@ -324,6 +324,60 @@ class ApiQueryBlocks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       'id' => array(
+                               'id' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'userid' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'by' => array(
+                               'by' => 'string'
+                       ),
+                       'byid' => array(
+                               'byid' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'reason' => array(
+                               'reason' => 'string'
+                       ),
+                       'range' => array(
+                               'rangestart' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'rangeend' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'automatic' => 'boolean',
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidden' => 'boolean',
+                               'allowusertalk' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all blocked users and IP addresses';
        }
index cbda6ab..283eb13 100644 (file)
@@ -240,6 +240,25 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string',
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all categories the page(s) belong to';
        }
index c5070e8..e5eca85 100644 (file)
@@ -106,6 +106,34 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'pages' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'files' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'subcats' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'hidden' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns information about the given categories';
        }
index 35b5645..9f66f22 100644 (file)
@@ -364,6 +364,36 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string'
+                       ),
+                       'sortkeyprefix' => array(
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'page',
+                                               'subcat',
+                                               'file'
+                                       )
+                               )
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all pages in a given category';
        }
index 6912ddc..06f649d 100644 (file)
@@ -366,6 +366,18 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'token' => array(
+                               'token' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                $p = $this->getModulePrefix();
                return array(
index 6fb3ea3..856d0fd 100644 (file)
@@ -165,6 +165,16 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'user' => 'string',
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all files that are duplicates of the given file(s)';
        }
index 93c71e2..221ffac 100644 (file)
@@ -232,6 +232,21 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'url' => array(
+                               'url' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate pages that contain a given URL';
        }
index a9fbc83..999ddc8 100644 (file)
@@ -133,6 +133,14 @@ class ApiQueryExternalLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all external urls (not interwikies) from the given page(s)';
        }
index 4d99055..07d5b41 100644 (file)
@@ -274,6 +274,67 @@ class ApiQueryFilearchive extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'filehidden' => 'boolean',
+                               'commenthidden' => 'boolean',
+                               'userhidden' => 'boolean',
+                               'suppressed' => 'boolean'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userid' => 'integer',
+                               'user' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'dimensions' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'parseddescription' => array(
+                               'description' => 'string',
+                               'parseddescription' => 'string'
+                       ),
+                       'metadata' => array(
+                               'metadata' => 'string'
+                       ),
+                       'bitdepth' => array(
+                               'bitdepth' => 'integer'
+                       ),
+                       'mime' => array(
+                               'mime' => 'string'
+                       ),
+                       'mediatype' => array(
+                               'mediatype' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all deleted files sequentially';
        }
index 2ffe479..d2837e9 100644 (file)
@@ -195,6 +195,23 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'iwprefix' => array(
+                               'iwprefix' => 'string'
+                       ),
+                       'iwtitle' => array(
+                               'iwtitle' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Find all pages that link to the given interwiki link.',
                        'Can be used to find all links with a prefix, or',
index f39835a..7e69513 100644 (file)
@@ -167,6 +167,19 @@ class ApiQueryIWLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'prefix' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interwiki links from the given page(s)';
        }
index 135979a..4d2d04b 100644 (file)
@@ -81,14 +81,14 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                }
 
                                $start = $skip ? $fromTimestamp : $params['start'];
-                               $pageId = $pageIds[NS_IMAGE][ $img->getOriginalTitle()->getDBkey() ];
+                               $pageId = $pageIds[NS_FILE][ $img->getOriginalTitle()->getDBkey() ];
 
                                $fit = $result->addValue(
                                        array( 'query', 'pages', intval( $pageId ) ),
                                        'imagerepository', $img->getRepoName()
                                );
                                if ( !$fit ) {
-                                       if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                       if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                // The user is screwed. imageinfo can't be solely
                                                // responsible for exceeding the limit in this case,
                                                // so set a query-continue that just returns the same
@@ -119,7 +119,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                                self::getInfo( $img, $prop, $result,
                                                        $finalThumbParams, $params['metadataversion'] ) );
                                        if ( !$fit ) {
-                                               if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                               if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                        // See the 'the user is screwed' comment above
                                                        $this->setContinueEnumParameter( 'start',
                                                                wfTimestamp( TS_ISO_8601, $img->getTimestamp() ) );
@@ -149,7 +149,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                                self::getInfo( $oldie, $prop, $result,
                                                        $finalThumbParams, $params['metadataversion'] ) );
                                        if ( !$fit ) {
-                                               if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
+                                               if ( count( $pageIds[NS_FILE] ) == 1 ) {
                                                        $this->setContinueEnumParameter( 'start',
                                                                wfTimestamp( TS_ISO_8601, $oldie->getTimestamp() ) );
                                                } else {
@@ -547,6 +547,114 @@ class ApiQueryImageInfo extends ApiQueryBase {
                );
        }
 
+       public static function getResultPropertiesFiltered( $filter = array() ) {
+               $props = array(
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'width' => 'integer',
+                               'height' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'filehidden' => 'boolean',
+                               'thumburl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbwidth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbheight' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumberror' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'descriptionurl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sha1' => array(
+                               'filehidden' => 'boolean',
+                               'sha1' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mime' => array(
+                               'filehidden' => 'boolean',
+                               'mime' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mediatype' => array(
+                               'filehidden' => 'boolean',
+                               'mediatype' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'archivename' => array(
+                               'filehidden' => 'boolean',
+                               'archivename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'bitdepth' => array(
+                               'filehidden' => 'boolean',
+                               'bitdepth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+               );
+               return array_diff_key( $props, array_flip( $filter ) );
+       }
+
+       public function getResultProperties() {
+               return self::getResultPropertiesFiltered();
+       }
+
        public function getDescription() {
                return 'Returns image information and upload history';
        }
index 6f488cd..147ab67 100644 (file)
@@ -174,6 +174,15 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all images contained on the given page(s)';
        }
index e5db4d8..87fd58b 100644 (file)
@@ -99,6 +99,12 @@ class ApiQueryInfo extends ApiQueryBase {
                return $this->tokenFunctions;
        }
 
+       static $cachedTokens = array();
+
+       public static function resetTokenCache() {
+               ApiQueryInfo::$cachedTokens = array();
+       }
+
        public static function getEditToken( $pageid, $title ) {
                // We could check for $title->userCan('edit') here,
                // but that's too expensive for this purpose
@@ -108,14 +114,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               // The edit token is always the same, let's exploit that
-               static $cachedEditToken = null;
-               if ( !is_null( $cachedEditToken ) ) {
-                       return $cachedEditToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'edit' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'edit' ] = $wgUser->getEditToken();
                }
 
-               $cachedEditToken = $wgUser->getEditToken();
-               return $cachedEditToken;
+               return ApiQueryInfo::$cachedTokens[ 'edit' ];
        }
 
        public static function getDeleteToken( $pageid, $title ) {
@@ -124,13 +128,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedDeleteToken = null;
-               if ( !is_null( $cachedDeleteToken ) ) {
-                       return $cachedDeleteToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'delete' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'delete' ] = $wgUser->getEditToken();
                }
 
-               $cachedDeleteToken = $wgUser->getEditToken();
-               return $cachedDeleteToken;
+               return ApiQueryInfo::$cachedTokens[ 'delete' ];
        }
 
        public static function getProtectToken( $pageid, $title ) {
@@ -139,13 +142,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedProtectToken = null;
-               if ( !is_null( $cachedProtectToken ) ) {
-                       return $cachedProtectToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'protect' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'protect' ] = $wgUser->getEditToken();
                }
 
-               $cachedProtectToken = $wgUser->getEditToken();
-               return $cachedProtectToken;
+               return ApiQueryInfo::$cachedTokens[ 'protect' ];
        }
 
        public static function getMoveToken( $pageid, $title ) {
@@ -154,13 +156,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedMoveToken = null;
-               if ( !is_null( $cachedMoveToken ) ) {
-                       return $cachedMoveToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'move' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'move' ] = $wgUser->getEditToken();
                }
 
-               $cachedMoveToken = $wgUser->getEditToken();
-               return $cachedMoveToken;
+               return ApiQueryInfo::$cachedTokens[ 'move' ];
        }
 
        public static function getBlockToken( $pageid, $title ) {
@@ -169,13 +170,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedBlockToken = null;
-               if ( !is_null( $cachedBlockToken ) ) {
-                       return $cachedBlockToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'block' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'block' ] = $wgUser->getEditToken();
                }
 
-               $cachedBlockToken = $wgUser->getEditToken();
-               return $cachedBlockToken;
+               return ApiQueryInfo::$cachedTokens[ 'block' ];
        }
 
        public static function getUnblockToken( $pageid, $title ) {
@@ -189,13 +189,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedEmailToken = null;
-               if ( !is_null( $cachedEmailToken ) ) {
-                       return $cachedEmailToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'email' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'email' ] = $wgUser->getEditToken();
                }
 
-               $cachedEmailToken = $wgUser->getEditToken();
-               return $cachedEmailToken;
+               return ApiQueryInfo::$cachedTokens[ 'email' ];
        }
 
        public static function getImportToken( $pageid, $title ) {
@@ -204,13 +203,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedImportToken = null;
-               if ( !is_null( $cachedImportToken ) ) {
-                       return $cachedImportToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'import' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'import' ] = $wgUser->getEditToken();
                }
 
-               $cachedImportToken = $wgUser->getEditToken();
-               return $cachedImportToken;
+               return ApiQueryInfo::$cachedTokens[ 'import' ];
        }
 
        public static function getWatchToken( $pageid, $title ) {
@@ -219,13 +217,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedWatchToken = null;
-               if ( !is_null( $cachedWatchToken ) ) {
-                       return $cachedWatchToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'watch' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'watch' ] = $wgUser->getEditToken( 'watch' );
                }
 
-               $cachedWatchToken = $wgUser->getEditToken( 'watch' );
-               return $cachedWatchToken;
+               return ApiQueryInfo::$cachedTokens[ 'watch' ];
        }
 
        public static function getOptionsToken( $pageid, $title ) {
@@ -234,13 +231,12 @@ class ApiQueryInfo extends ApiQueryBase {
                        return false;
                }
 
-               static $cachedOptionsToken = null;
-               if ( !is_null( $cachedOptionsToken ) ) {
-                       return $cachedOptionsToken;
+               // The token is always the same, let's exploit that
+               if ( !isset( ApiQueryInfo::$cachedTokens[ 'options' ] ) ) {
+                       ApiQueryInfo::$cachedTokens[ 'options' ] = $wgUser->getEditToken();
                }
 
-               $cachedOptionsToken = $wgUser->getEditToken();
-               return $cachedOptionsToken;
+               return ApiQueryInfo::$cachedTokens[ 'options' ];
        }
 
        public function execute() {
@@ -337,7 +333,10 @@ class ApiQueryInfo extends ApiQueryBase {
         */
        private function extractPageInfo( $pageid, $title ) {
                $pageInfo = array();
-               if ( $title->exists() ) {
+               $titleExists = $pageid > 0; //$title->exists() needs pageid, which is not set for all title objects
+               $ns = $title->getNamespace();
+               $dbkey = $title->getDBkey();
+               if ( $titleExists ) {
                        global $wgDisableCounters;
 
                        $pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
@@ -370,23 +369,23 @@ class ApiQueryInfo extends ApiQueryBase {
 
                if ( $this->fld_protection ) {
                        $pageInfo['protection'] = array();
-                       if ( isset( $this->protections[$title->getNamespace()][$title->getDBkey()] ) ) {
+                       if ( isset( $this->protections[$ns][$dbkey] ) ) {
                                $pageInfo['protection'] =
-                                       $this->protections[$title->getNamespace()][$title->getDBkey()];
+                                       $this->protections[$ns][$dbkey];
                        }
                        $this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
                }
 
-               if ( $this->fld_watched && isset( $this->watched[$title->getNamespace()][$title->getDBkey()] ) ) {
+               if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
                        $pageInfo['watched'] = '';
                }
 
-               if ( $this->fld_talkid && isset( $this->talkids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_talkid && isset( $this->talkids[$ns][$dbkey] ) )        {
+                       $pageInfo['talkid'] = $this->talkids[$ns][$dbkey];
                }
 
-               if ( $this->fld_subjectid && isset( $this->subjectids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_subjectid && isset( $this->subjectids[$ns][$dbkey] ) ) {
+                       $pageInfo['subjectid'] = $this->subjectids[$ns][$dbkey];
                }
 
                if ( $this->fld_url ) {
@@ -398,7 +397,7 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_preload ) {
-                       if ( $title->exists() ) {
+                       if ( $titleExists ) {
                                $pageInfo['preload'] = '';
                        } else {
                                $text = null;
@@ -409,8 +408,8 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_displaytitle ) {
-                       if ( isset( $this->displaytitles[$title->getArticleID()] ) ) {
-                               $pageInfo['displaytitle'] = $this->displaytitles[$title->getArticleID()];
+                       if ( isset( $this->displaytitles[$pageid] ) ) {
+                               $pageInfo['displaytitle'] = $this->displaytitles[$pageid];
                        } else {
                                $pageInfo['displaytitle'] = $title->getPrefixedText();
                        }
@@ -721,6 +720,59 @@ class ApiQueryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'touched' => 'timestamp',
+                               'lastrevid' => 'integer',
+                               'counter' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'length' => 'integer',
+                               'redirect' => 'boolean',
+                               'new' => 'boolean',
+                               'starttimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'watched' => array(
+                               'watched' => 'boolean'
+                       ),
+                       'talkid' => array(
+                               'talkid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'subjectid' => array(
+                               'subjectid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'fullurl' => 'string',
+                               'editurl' => 'string'
+                       ),
+                       'readable' => array(
+                               'readable' => 'boolean'
+                       ),
+                       'preload' => array(
+                               'preload' => 'string'
+                       ),
+                       'displaytitle' => array(
+                               'displaytitle' => 'string'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get basic page information such as namespace, title, last touched date, ...';
        }
index efc2e81..f423719 100644 (file)
@@ -195,6 +195,23 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'lllang' => array(
+                               'lllang' => 'string'
+                       ),
+                       'lltitle' => array(
+                               'lltitle' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Find all pages that link to the given language link.',
                        'Can be used to find all links with a language code, or',
index b6f9a99..7cab739 100644 (file)
@@ -159,6 +159,19 @@ class ApiQueryLangLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'lang' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interlanguage links from the given page(s)';
        }
index 4dea419..5cf9068 100644 (file)
@@ -227,6 +227,15 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Returns all {$this->description}s from the given page(s)";
        }
index e017c4b..bb4b429 100644 (file)
@@ -447,6 +447,62 @@ class ApiQueryLogEvents extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'logid' => 'integer',
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes
+                               ),
+                               'action' => 'string'
+                       ),
+                       'details' => array(
+                               'actionhidden' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get events from logs';
        }
index 44cc1d3..360183c 100644 (file)
@@ -214,6 +214,40 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgRestrictionLevels;
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => 'integer'
+                       ),
+                       'comment' => array(
+                               'comment' => 'string'
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => 'string'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'level' => array(
+                               'level' => array(
+                                       ApiBase::PROP_TYPE => array_diff( $wgRestrictionLevels, array( '' ) )
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all titles protected from creation';
        }
index 8efe65d..2c7ba12 100644 (file)
@@ -173,6 +173,38 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_ROOT => array(
+                               'name' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'disabled' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cached' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cachedtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       '' => array(
+                               'value' => 'string',
+                               'timestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get a list provided by a QueryPage-based special page';
        }
index 2e9e2dd..ddf5841 100644 (file)
@@ -161,6 +161,16 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'id' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get a set of random pages',
index 931af08..62c6678 100644 (file)
@@ -629,6 +629,97 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               $props = array(
+                       '' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'edit',
+                                               'new',
+                                               'move',
+                                               'log',
+                                               'move over redirect'
+                                       )
+                               )
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'new_ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'new_title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'ids' => array(
+                               'rcid' => 'integer',
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'bot' => 'boolean',
+                               'new' => 'boolean',
+                               'minor' => 'boolean'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirect' => array(
+                               'redirect' => 'boolean'
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Enumerate recent changes';
        }
index 44cb46e..1a5ad17 100644 (file)
@@ -648,6 +648,66 @@ class ApiQueryRevisions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(),
+                       'ids' => array(
+                               'revid' => 'integer',
+                               'parentid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'minor' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'content' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'texthidden' => 'boolean'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return array(
                        'Get revision information',
index 40aac05..ed6c3cb 100644 (file)
@@ -280,6 +280,63 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'snippet' => array(
+                               'snippet' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'wordcount' => array(
+                               'wordcount' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'score' => array(
+                               'score' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'titlesnippet' => array(
+                               'titlesnippet' => 'string'
+                       ),
+                       'redirecttitle' => array(
+                               'redirecttitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirectsnippet' => array(
+                               'redirectsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectiontitle' => array(
+                               'sectiontitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectionsnippet' => array(
+                               'sectionsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasrelated' => array(
+                               'hasrelated' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Perform a full text search';
        }
index 4501ec5..02484ae 100644 (file)
@@ -123,6 +123,10 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
                );
        }
 
+       public function getResultProperties() {
+               return ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter );
+       }
+
        public function getDescription() {
                return 'Returns image information for stashed images';
        }
index 12cea1d..edd1553 100644 (file)
@@ -169,6 +169,23 @@ class ApiQueryTags extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string'
+                       ),
+                       'displayname' => array(
+                               'displayname' => 'string'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'hitcount' => array(
+                               'hitcount' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List change tags';
        }
index 097d3e1..f531980 100644 (file)
@@ -35,10 +35,10 @@ class ApiQueryContributions extends ApiQueryBase {
                parent::__construct( $query, $moduleName, 'uc' );
        }
 
-       private $params, $prefixMode, $userprefix, $multiUserMode, $usernames;
+       private $params, $prefixMode, $userprefix, $multiUserMode, $usernames, $parentLens;
        private $fld_ids = false, $fld_title = false, $fld_timestamp = false,
                        $fld_comment = false, $fld_parsedcomment = false, $fld_flags = false,
-                       $fld_patrolled = false, $fld_tags = false, $fld_size = false;
+                       $fld_patrolled = false, $fld_tags = false, $fld_size = false, $fld_sizediff = false;
 
        public function execute() {
                // Parse some parameters
@@ -50,6 +50,7 @@ class ApiQueryContributions extends ApiQueryBase {
                $this->fld_comment = isset( $prop['comment'] );
                $this->fld_parsedcomment = isset ( $prop['parsedcomment'] );
                $this->fld_size = isset( $prop['size'] );
+               $this->fld_sizediff = isset( $prop['sizediff'] );
                $this->fld_flags = isset( $prop['flags'] );
                $this->fld_timestamp = isset( $prop['timestamp'] );
                $this->fld_patrolled = isset( $prop['patrolled'] );
@@ -82,6 +83,17 @@ class ApiQueryContributions extends ApiQueryBase {
                // Do the actual query.
                $res = $this->select( __METHOD__ );
 
+               if( $this->fld_sizediff ) {
+                       $revIds = array();
+                       foreach ( $res as $row ) {
+                               if( $row->rev_parent_id ) {
+                                       $revIds[] = $row->rev_parent_id;
+                               }
+                       }
+                       $this->parentLens = Revision::getParentLengths( $this->getDB(), $revIds );
+                       $res->rewind(); // reset
+               }
+
                // Initialise some variables
                $count = 0;
                $limit = $this->params['limit'];
@@ -245,7 +257,8 @@ class ApiQueryContributions extends ApiQueryBase {
                // $this->addFieldsIf( 'rev_text_id', $this->fld_ids ); // Should this field be exposed?
                $this->addFieldsIf( 'rev_comment', $this->fld_comment || $this->fld_parsedcomment );
                $this->addFieldsIf( 'rev_len', $this->fld_size );
-               $this->addFieldsIf( array( 'rev_minor_edit', 'rev_parent_id' ), $this->fld_flags );
+               $this->addFieldsIf( 'rev_minor_edit', $this->fld_flags );
+               $this->addFieldsIf( 'rev_parent_id', $this->fld_flags || $this->fld_sizediff );
                $this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
 
                if ( $this->fld_tags ) {
@@ -333,6 +346,11 @@ class ApiQueryContributions extends ApiQueryBase {
                        $vals['size'] = intval( $row->rev_len );
                }
 
+               if ( $this->fld_sizediff && !is_null( $row->rev_len ) && !is_null( $row->rev_parent_id ) ) {
+                       $parentLen = isset( $this->parentLens[$row->rev_parent_id] ) ? $this->parentLens[$row->rev_parent_id] : 0;
+                       $vals['sizediff'] = intval( $row->rev_len - $parentLen );
+               }
+
                if ( $this->fld_tags ) {
                        if ( $row->ts_tags ) {
                                $tags = explode( ',', $row->ts_tags );
@@ -398,6 +416,7 @@ class ApiQueryContributions extends ApiQueryBase {
                                        'comment',
                                        'parsedcomment',
                                        'size',
+                                       'sizediff',
                                        'flags',
                                        'patrolled',
                                        'tags'
@@ -436,7 +455,8 @@ class ApiQueryContributions extends ApiQueryBase {
                                ' timestamp      - Adds the timestamp of the edit',
                                ' comment        - Adds the comment of the edit',
                                ' parsedcomment  - Adds the parsed comment of the edit',
-                               ' size           - Adds the size of the page',
+                               ' size           - Adds the new size of the edit',
+                               ' sizediff       - Adds the size delta of the edit against its parent',
                                ' flags          - Adds flags of the edit',
                                ' patrolled      - Tags patrolled edits',
                                ' tags           - Lists tags for the edit',
@@ -448,6 +468,55 @@ class ApiQueryContributions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'user' => 'string',
+                               'userhidden' => 'boolean'
+                       ),
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'top' => 'boolean'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get all edits by a user';
        }
index e3bc775..e4617d9 100644 (file)
@@ -234,6 +234,63 @@ class ApiQueryUserInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'id' => 'integer',
+                               'name' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasmsg' => array(
+                               'messages' => 'boolean'
+                       ),
+                       'preferencestoken' => array(
+                               'preferencestoken' => 'string'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'realname' => array(
+                               'realname' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'email' => array(
+                               'email' => 'string',
+                               'emailauthenticated' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registrationdate' => array(
+                               'registrationdate' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get information about the current user';
        }
index a07ee7f..02fcf01 100644 (file)
@@ -107,7 +107,7 @@ class ApiQueryUsers extends ApiQueryBase {
 
                if ( count( $goodNames ) ) {
                        $this->addTables( 'user' );
-                       $this->addFields( '*' );
+                       $this->addFields( User::selectFields() );
                        $this->addWhereFld( 'user_name', $goodNames );
 
                        if ( isset( $this->prop['groups'] ) || isset( $this->prop['rights'] ) ) {
@@ -315,6 +315,73 @@ class ApiQueryUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'name' => 'string',
+                               'invalid' => 'boolean',
+                               'hidden' => 'boolean',
+                               'interwiki' => 'boolean',
+                               'missing' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registration' => array(
+                               'registration' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'emailable' => array(
+                               'emailable' => 'boolean'
+                       ),
+                       'gender' => array(
+                               'gender' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'male',
+                                               'female',
+                                               'unknown'
+                                       ),
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get information about a list of users';
        }
index 77f6ce9..a93f94f 100644 (file)
@@ -418,6 +418,76 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'bot' => 'boolean'
+                       ),
+                       'patrol' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'notificationtimestamp' => array(
+                               'notificationtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all recent changes to pages in the logged in user's watchlist";
        }
index 5e96dd5..1b1eee0 100644 (file)
@@ -192,6 +192,21 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'changed' => array(
+                               'changed' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all pages on the logged in user's watchlist";
        }
index 436c392..4de49ea 100644 (file)
@@ -116,6 +116,19 @@ class ApiRollback extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'pageid' => 'integer',
+                               'summary' => 'string',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer',
+                               'last_revid' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Undo the last edit to the page. If the last user who edited the page made multiple edits in a row,',
index c56d646..2c9b482 100644 (file)
@@ -84,6 +84,57 @@ class ApiTokens extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'patroltoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'edittoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'deletetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'protecttoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'movetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'emailtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'importtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'watchtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'optionstoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'type' => 'Type of token(s) to request'
index 49353b6..40a6d44 100644 (file)
@@ -119,6 +119,33 @@ class ApiUnblock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Unblock a user';
        }
index 856e2ac..c89f49a 100644 (file)
@@ -122,6 +122,17 @@ class ApiUndelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'revisions' => 'integer',
+                               'filerevisions' => 'integer',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Restore certain revisions of a deleted page. A list of deleted revisions (including timestamps) can be',
index 9f5c5e3..db1ee16 100644 (file)
@@ -117,25 +117,25 @@ class ApiUpload extends ApiBase {
         */
        private function getContextResult(){
                $warnings = $this->getApiWarnings();
-               if ( $warnings && !$this->mParams['ignorewarnings'] ) {
+               if ( $warnings ) {
                        // Get warnings formated in result array format
                        return $this->getWarningsResult( $warnings );
                } elseif ( $this->mParams['chunk'] ) {
                        // Add chunk, and get result
-                       return $this->getChunkResult( $warnings );
+                       return $this->getChunkResult();
                } elseif ( $this->mParams['stash'] ) {
                        // Stash the file and get stash result
-                       return $this->getStashResult( $warnings );
+                       return $this->getStashResult();
                }
                // This is the most common case -- a normal upload with no warnings
                // performUpload will return a formatted properly for the API with status
-               return $this->performUpload( $warnings );
+               return $this->performUpload();
        }
        /**
         * Get Stash Result, throws an expetion if the file could not be stashed.
         * @return array
         */
-       private function getStashResult( $warnings ){
+       private function getStashResult(){
                $result = array ();
                // Some uploads can request they be stashed, so as not to publish them immediately.
                // In this case, a failure to stash ought to be fatal
@@ -143,7 +143,6 @@ class ApiUpload extends ApiBase {
                        $result['result'] = 'Success';
                        $result['filekey'] = $this->performStash();
                        $result['sessionkey'] = $result['filekey']; // backwards compatibility
-                       $result['warnings'] = $warnings;
                } catch ( MWException $e ) {
                        $this->dieUsage( $e->getMessage(), 'stashfailed' );
                }
@@ -172,11 +171,10 @@ class ApiUpload extends ApiBase {
         * Get the result of a chunk upload.
         * @return array
         */
-       private function getChunkResult( $warnings ){
+       private function getChunkResult(){
                $result = array();
 
                $result['result'] = 'Continue';
-               $result['warnings'] = $warnings;
                $request = $this->getMain()->getRequest();
                $chunkPath = $request->getFileTempname( 'chunk' );
                $chunkSize = $request->getUpload( 'chunk' )->getSize();
@@ -455,8 +453,9 @@ class ApiUpload extends ApiBase {
        protected function getApiWarnings() {
                $warnings = array();
 
-               $warnings = $this->mUpload->checkWarnings();
-
+               if ( !$this->mParams['ignorewarnings'] ) {
+                       $warnings = $this->mUpload->checkWarnings();
+               }
                return $this->transformWarnings( $warnings );
        }
 
@@ -491,7 +490,7 @@ class ApiUpload extends ApiBase {
         *
         * @return array
         */
-       protected function performUpload( $warnings ) {
+       protected function performUpload() {
                // Use comment as initial page text by default
                if ( is_null( $this->mParams['text'] ) ) {
                        $this->mParams['text'] = $this->mParams['comment'];
@@ -530,7 +529,6 @@ class ApiUpload extends ApiBase {
 
                $result['result'] = 'Success';
                $result['filename'] = $file->getName();
-               $result['warnings'] = $warnings;
 
                return $result;
        }
@@ -625,6 +623,41 @@ class ApiUpload extends ApiBase {
 
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Warning',
+                                               'Continue',
+                                               'Queued'
+                                       ),
+                               ),
+                               'filekey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionkey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'offset' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'statuskey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'filename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Upload a file, or get the status of pending uploads. Several methods are available:',
index fa382b3..c923c6d 100644 (file)
@@ -100,6 +100,17 @@ class ApiWatch extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'unwatched' => 'boolean',
+                               'watched' => 'boolean',
+                               'message' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Add or remove a page from/to the current user\'s watchlist';
        }
index f9ea135..6bfeed3 100644 (file)
@@ -142,6 +142,8 @@ class HTMLFileCache extends FileCacheBase {
                                wfDebug( __METHOD__ . " uncompressing cache file and sending it\n" );
                                readgzfile( $filename );
                        }
+               } else {
+                       readfile( $filename );
                }
                $context->getOutput()->disable(); // tell $wgOut that output is taken care of
        }
index b972f3b..0a1f988 100644 (file)
@@ -530,7 +530,11 @@ abstract class DatabaseBase implements DatabaseType {
         *   - DBO_PERSISTENT: use persistant database connection
         */
        function setFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags |= $flag;
+               if ( ( $flag & DBO_TRX) & $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now  disabled.\n");
+               }
        }
 
        /**
@@ -539,7 +543,11 @@ abstract class DatabaseBase implements DatabaseType {
         * @param $flag: same as setFlag()'s $flag param
         */
        function clearFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags &= ~$flag;
+               if ( ( $flag & DBO_TRX ) && $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now disabled.\n");
+               }
        }
 
        /**
@@ -604,15 +612,21 @@ abstract class DatabaseBase implements DatabaseType {
        function __construct( $server = false, $user = false, $password = false, $dbName = false,
                $flags = 0, $tablePrefix = 'get from global'
        ) {
-               global $wgDBprefix, $wgCommandLineMode;
+               global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
 
                $this->mFlags = $flags;
 
                if ( $this->mFlags & DBO_DEFAULT ) {
                        if ( $wgCommandLineMode ) {
                                $this->mFlags &= ~DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open disabled.\n");
+                               }
                        } else {
                                $this->mFlags |= DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open enabled.\n");
+                               }
                        }
                }
 
@@ -868,8 +882,13 @@ abstract class DatabaseBase implements DatabaseType {
                        # that would delay transaction initializations to once connection
                        # is really used by application
                        $sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
-                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 )
+                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 ) {
+                               global $wgDebugDBTransactions;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction start.\n");
+                               }
                                $this->begin( __METHOD__ . " ($fname)" );
+                       }
                }
 
                if ( $this->debug() ) {
@@ -2885,7 +2904,7 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * Begin a transaction, committing any previously open transaction
+        * Begin a transaction
         *
         * @param $fname string
         */
@@ -3506,4 +3525,11 @@ abstract class DatabaseBase implements DatabaseType {
        public function setBigSelects( $value = true ) {
                // no-op
        }
+
+       /**
+        * @since 1.19
+        */
+       public function __toString() {
+               return (string)$this->mConn;
+       }
 }
index 6aed05c..53341c3 100644 (file)
@@ -210,7 +210,7 @@ class DBConnectionError extends DBError {
         * @return string
         */
        function searchForm() {
-               global $wgSitename, $wgServer, $wgRequest;
+               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.' ) );
@@ -218,7 +218,7 @@ class DBConnectionError extends DBError {
 
                $search = htmlspecialchars( $wgRequest->getVal( 'search' ) );
 
-               $server = htmlspecialchars( $wgServer );
+               $server = htmlspecialchars( $wgCanonicalServer );
                $sitename = htmlspecialchars( $wgSitename );
 
                $trygoogle = <<<EOT
index 5df6456..1fdcd5c 100644 (file)
@@ -1433,7 +1433,7 @@ class DatabaseIbm_db2 extends DatabaseBase {
                // db2_ping() doesn't exist
                // Emulate
                $this->close();
-               $this->mConn = $this->openUncataloged( $this->mDBName, $this->mUser,
+               $this->openUncataloged( $this->mDBName, $this->mUser,
                        $this->mPassword, $this->mServer, $this->mPort );
 
                return false;
index 8550635..1d03073 100644 (file)
@@ -113,14 +113,14 @@ class DatabaseMysql extends DatabaseBase {
                $phpError = $this->restoreErrorHandler();
                # Always log connection errors
                if ( !$this->mConn ) {
-                       $error = $this->lastError();
+                       $error = $phpError;
                        if ( !$error ) {
-                               $error = $phpError;
+                               $error = $this->lastError();
                        }
                        wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
                        wfDebug( "DB connection error\n" );
                        wfDebug( "Server: $server, User: $user, Password: " .
-                               substr( $password, 0, 3 ) . "..., error: " . mysql_error() . "\n" );
+                               substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
                }
 
                wfProfileOut("dbconnect-$server");
index d058769..763ca52 100644 (file)
@@ -137,14 +137,14 @@ class PostgresTransactionState {
 
        static $WATCHED = array(
                array(
-                       "desc" => "Connection state changed from %s -> %s\n",
+                       "desc" => "%s: Connection state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_CONNECTION_OK       => "OK",
                                PGSQL_CONNECTION_BAD      => "BAD"
                        )
                ),
                array(
-                       "desc" => "Transaction state changed from %s -> %s\n",
+                       "desc" => "%s: Transaction state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_TRANSACTION_IDLE    => "IDLE",
                                PGSQL_TRANSACTION_ACTIVE  => "ACTIVE",
@@ -198,12 +198,86 @@ class PostgresTransactionState {
 
        protected function log_changed( $old, $new, $watched ) {
                wfDebug(sprintf($watched["desc"],
+                       $this->mConn,
                        $this->describe_changed( $old, $watched["states"] ),
                        $this->describe_changed( $new, $watched["states"] ))
                );
        }
 }
 
+/**
+ * Manage savepoints within a transaction
+ * @ingroup Database
+ * @since 1.19
+ */
+class SavepointPostgres {
+       /**
+        * Establish a savepoint within a transaction
+        */
+       protected $dbw;
+       protected $id;
+       protected $didbegin;
+
+       public function __construct ($dbw, $id) {
+               $this->dbw = $dbw;
+               $this->id = $id;
+               $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;
+               }
+       }
+
+       public function __destruct() {
+               if ( $this->didbegin ) {
+                       $this->dbw->rollback();
+               }
+       }
+
+       public function commit() {
+               if ( $this->didbegin ) {
+                       $this->dbw->commit();
+               }
+       }
+
+       protected function query( $keyword, $msg_ok, $msg_failed ) {
+               global $wgDebugDBTransactions;
+               if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf ($msg_ok, $this->id ) );
+                       }
+               } else {
+                       wfDebug( sprintf ($msg_failed, $this->id ) );
+               }
+       }
+
+       public function savepoint() {
+               $this->query("SAVEPOINT",
+                       "Transaction state: savepoint \"%s\" established.\n",
+                       "Transaction state: establishment of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function release() {
+               $this->query("RELEASE",
+                       "Transaction state: savepoint \"%s\" released.\n",
+                       "Transaction state: release of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function rollback() {
+               $this->query("ROLLBACK TO",
+                       "Transaction state: savepoint \"%s\" rolled back.\n",
+                       "Transaction state: rollback of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function __toString() {
+               return (string)$this->id;
+       }
+}
+
 /**
  * @ingroup Database
  */
@@ -345,7 +419,7 @@ class DatabasePostgres extends DatabaseBase {
                return pg_close( $this->mConn );
        }
 
-       protected function doQuery( $sql ) {
+       public function doQuery( $sql ) {
                if ( function_exists( 'mb_convert_encoding' ) ) {
                        $sql = mb_convert_encoding( $sql, 'UTF-8' );
                }
@@ -667,15 +741,9 @@ __INDEXATTR__;
                }
 
                // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if ( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $options ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
                        $olde = error_reporting( 0 );
                        // For future use, we may want to track the number of actual inserts
                        // Right now, insert (all writes) simply return true/false
@@ -685,7 +753,7 @@ __INDEXATTR__;
                $sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
 
                if ( $multi ) {
-                       if ( $this->numeric_version >= 8.2 && !$ignore ) {
+                       if ( $this->numeric_version >= 8.2 && !$savepoint ) {
                                $first = true;
                                foreach ( $args as $row ) {
                                        if ( $first ) {
@@ -695,7 +763,7 @@ __INDEXATTR__;
                                        }
                                        $sql .= '(' . $this->makeList( $row ) . ')';
                                }
-                               $res = (bool)$this->query( $sql, $fname, $ignore );
+                               $res = (bool)$this->query( $sql, $fname, $savepoint );
                        } else {
                                $res = true;
                                $origsql = $sql;
@@ -703,18 +771,18 @@ __INDEXATTR__;
                                        $tempsql = $origsql;
                                        $tempsql .= '(' . $this->makeList( $row ) . ')';
 
-                                       if ( $ignore ) {
-                                               $this->doQuery( "SAVEPOINT $ignore" );
+                                       if ( $savepoint ) {
+                                               $savepoint->savepoint();
                                        }
 
-                                       $tempres = (bool)$this->query( $tempsql, $fname, $ignore );
+                                       $tempres = (bool)$this->query( $tempsql, $fname, $savepoint );
 
-                                       if ( $ignore ) {
+                                       if ( $savepoint ) {
                                                $bar = pg_last_error();
                                                if ( $bar != false ) {
-                                                       $this->doQuery( $this->mConn, "ROLLBACK TO $ignore" );
+                                                       $savepoint->rollback();
                                                } else {
-                                                       $this->doQuery( $this->mConn, "RELEASE $ignore" );
+                                                       $savepoint->release();
                                                        $numrowsinserted++;
                                                }
                                        }
@@ -728,27 +796,25 @@ __INDEXATTR__;
                        }
                } else {
                        // Not multi, just a lone insert
-                       if ( $ignore ) {
-                               $this->doQuery( "SAVEPOINT $ignore" );
+                       if ( $savepoint ) {
+                               $savepoint->savepoint();
                        }
 
                        $sql .= '(' . $this->makeList( $args ) . ')';
-                       $res = (bool)$this->query( $sql, $fname, $ignore );
-                       if ( $ignore ) {
+                       $res = (bool)$this->query( $sql, $fname, $savepoint );
+                       if ( $savepoint ) {
                                $bar = pg_last_error();
                                if ( $bar != false ) {
-                                       $this->doQuery( "ROLLBACK TO $ignore" );
+                                       $savepoint->rollback();
                                } else {
-                                       $this->doQuery( "RELEASE $ignore" );
+                                       $savepoint->release();
                                        $numrowsinserted++;
                                }
                        }
                }
-               if ( $ignore ) {
+               if ( $savepoint ) {
                        $olde = error_reporting( $olde );
-                       if ( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -774,12 +840,22 @@ __INDEXATTR__;
        {
                $destTable = $this->tableName( $destTable );
 
-               // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $insertOptions ) ? 'mw' : '';
+               if( !is_array( $insertOptions ) ) {
+                       $insertOptions = array( $insertOptions );
+               }
 
-               if( is_array( $insertOptions ) ) {
-                       $insertOptions = implode( ' ', $insertOptions ); // FIXME: This is unused
+               /*
+                * If IGNORE is set, we use savepoints to emulate mysql's behavior
+                * Ignore LOW PRIORITY option, since it is MySQL-specific
+                */
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $insertOptions ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
+                       $olde = error_reporting( 0 );
+                       $numrowsinserted = 0;
+                       $savepoint->savepoint();
                }
+
                if( !is_array( $selectOptions ) ) {
                        $selectOptions = array( $selectOptions );
                }
@@ -790,18 +866,6 @@ __INDEXATTR__;
                        $srcTable = $this->tableName( $srcTable );
                }
 
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
-                       $olde = error_reporting( 0 );
-                       $numrowsinserted = 0;
-                       $this->doQuery( "SAVEPOINT $ignore" );
-               }
-
                $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
                                " SELECT $startOpts " . implode( ',', $varMap ) .
                                " FROM $srcTable $useIndex";
@@ -812,19 +876,17 @@ __INDEXATTR__;
 
                $sql .= " $tailOpts";
 
-               $res = (bool)$this->query( $sql, $fname, $ignore );
-               if( $ignore ) {
+               $res = (bool)$this->query( $sql, $fname, $savepoint );
+               if( $savepoint ) {
                        $bar = pg_last_error();
                        if( $bar != false ) {
-                               $this->doQuery( "ROLLBACK TO $ignore" );
+                               $savepoint->rollback();
                        } else {
-                               $this->doQuery( "RELEASE $ignore" );
+                               $savepoint->release();
                                $numrowsinserted++;
                        }
                        $olde = error_reporting( $olde );
-                       if( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -1056,7 +1118,7 @@ __INDEXATTR__;
         * This will be also called by the installer after the schema is created
         *
         * @since 1.19
-        * @param desired_schema string
+        * @param $desired_schema string
         */
        function determineCoreSchema( $desired_schema ) {
                $this->begin( __METHOD__ );
diff --git a/includes/db/IORMRow.php b/includes/db/IORMRow.php
new file mode 100644 (file)
index 0000000..a530620
--- /dev/null
@@ -0,0 +1,273 @@
+<?php
+/**
+ * Interface for representing objects that are stored in some DB table.
+ * This is basically an ORM-like wrapper around rows in database tables that
+ * aims to be both simple and very flexible. It is centered around an associative
+ * array of fields and various methods to do common interaction with the database.
+ *
+ * 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
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+
+interface IORMRow {
+
+
+       /**
+        * Constructor.
+        *
+        * @since 1.20
+        *
+        * @param IORMTable $table
+        * @param array|null $fields
+        * @param boolean $loadDefaults
+        */
+       public function __construct( IORMTable $table, $fields = null, $loadDefaults = false );
+
+       /**
+        * Load the specified fields from the database.
+        *
+        * @since 1.20
+        *
+        * @param array|null $fields
+        * @param boolean $override
+        * @param boolean $skipLoaded
+        *
+        * @return bool Success indicator
+        */
+       public function loadFields( $fields = null, $override = true, $skipLoaded = false );
+
+       /**
+        * Gets the value of a field.
+        *
+        * @since 1.20
+        *
+        * @param string $name
+        * @param mixed $default
+        *
+        * @throws MWException
+        * @return mixed
+        */
+       public function getField( $name, $default = null );
+
+       /**
+        * Gets the value of a field but first loads it if not done so already.
+        *
+        * @since 1.20
+        *
+        * @param string$name
+        *
+        * @return mixed
+        */
+       public function loadAndGetField( $name );
+
+       /**
+        * Remove a field.
+        *
+        * @since 1.20
+        *
+        * @param string $name
+        */
+       public function removeField( $name );
+
+       /**
+        * Returns the objects database id.
+        *
+        * @since 1.20
+        *
+        * @return integer|null
+        */
+       public function getId();
+
+       /**
+        * Sets the objects database id.
+        *
+        * @since 1.20
+        *
+        * @param integer|null $id
+        */
+       public function setId( $id );
+
+       /**
+        * Gets if a certain field is set.
+        *
+        * @since 1.20
+        *
+        * @param string $name
+        *
+        * @return boolean
+        */
+       public function hasField( $name );
+
+       /**
+        * Gets if the id field is set.
+        *
+        * @since 1.20
+        *
+        * @return boolean
+        */
+       public function hasIdField();
+
+       /**
+        * Sets multiple fields.
+        *
+        * @since 1.20
+        *
+        * @param array $fields The fields to set
+        * @param boolean $override Override already set fields with the provided values?
+        */
+       public function setFields( array $fields, $override = true );
+
+       /**
+        * Serializes the object to an associative array which
+        * can then easily be converted into JSON or similar.
+        *
+        * @since 1.20
+        *
+        * @param null|array $fields
+        * @param boolean $incNullId
+        *
+        * @return array
+        */
+       public function toArray( $fields = null, $incNullId = false );
+
+       /**
+        * Load the default values, via getDefaults.
+        *
+        * @since 1.20
+        *
+        * @param boolean $override
+        */
+       public function loadDefaults( $override = true );
+
+       /**
+        * Writes the answer to the database, either updating it
+        * when it already exists, or inserting it when it doesn't.
+        *
+        * @since 1.20
+        *
+        * @param string|null $functionName
+        *
+        * @return boolean Success indicator
+        */
+       public function save( $functionName = null );
+
+       /**
+        * Removes the object from the database.
+        *
+        * @since 1.20
+        *
+        * @return boolean Success indicator
+        */
+       public function remove();
+
+       /**
+        * Return the names and values of the fields.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFields();
+
+       /**
+        * Return the names of the fields.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getSetFieldNames();
+
+       /**
+        * Sets the value of a field.
+        * Strings can be provided for other types,
+        * so this method can be called from unserialization handlers.
+        *
+        * @since 1.20
+        *
+        * @param string $name
+        * @param mixed $value
+        *
+        * @throws MWException
+        */
+       public function setField( $name, $value );
+
+       /**
+        * Add an amount (can be negative) to the specified field (needs to be numeric).
+        * TODO: most off this stuff makes more sense in the table class
+        *
+        * @since 1.20
+        *
+        * @param string $field
+        * @param integer $amount
+        *
+        * @return boolean Success indicator
+        */
+       public function addToField( $field, $amount );
+
+       /**
+        * Return the names of the fields.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFieldNames();
+
+       /**
+        * Computes and updates the values of the summary fields.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $summaryFields
+        */
+       public function loadSummaryFields( $summaryFields = null );
+
+       /**
+        * Sets the value for the @see $updateSummaries field.
+        *
+        * @since 1.20
+        *
+        * @param boolean $update
+        */
+       public function setUpdateSummaries( $update );
+
+       /**
+        * Sets the value for the @see $inSummaryMode field.
+        *
+        * @since 1.20
+        *
+        * @param boolean $summaryMode
+        */
+       public function setSummaryMode( $summaryMode );
+
+       /**
+        * Returns the table this IORMRow is a row in.
+        *
+        * @since 1.20
+        *
+        * @return IORMTable
+        */
+       public function getTable();
+
+}
\ No newline at end of file
diff --git a/includes/db/IORMTable.php b/includes/db/IORMTable.php
new file mode 100644 (file)
index 0000000..8fa7220
--- /dev/null
@@ -0,0 +1,447 @@
+<?php
+/**
+ * Interface for objects representing a single database table.
+ *
+ * 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
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+
+interface IORMTable {
+
+       /**
+        * Returns the name of the database table objects of this type are stored in.
+        *
+        * @since 1.20
+        *
+        * @return string
+        */
+       public function getName();
+
+       /**
+        * Returns the name of a IORMRow implementing class that
+        * represents single rows in this table.
+        *
+        * @since 1.20
+        *
+        * @return string
+        */
+       public function getRowClass();
+
+       /**
+        * Returns an array with the fields and their types this object contains.
+        * This corresponds directly to the fields in the database, without prefix.
+        *
+        * field name => type
+        *
+        * Allowed types:
+        * * id
+        * * str
+        * * int
+        * * float
+        * * bool
+        * * 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.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFields();
+
+       /**
+        * Returns a list of default field values.
+        * field name => field value
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getDefaults();
+
+       /**
+        * Returns a list of the summary fields.
+        * These are fields that cache computed values, such as the amount of linked objects of $type.
+        * This is relevant as one might not want to do actions such as log changes when these get updated.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getSummaryFields();
+
+       /**
+        * Selects the the specified fields of the records matching the provided
+        * conditions and returns them as DBDataObject. Field names get prefixed.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $fields
+        * @param array $conditions
+        * @param array $options
+        * @param string|null $functionName
+        *
+        * @return ORMResult
+        */
+       public function select( $fields = null, array $conditions = array(),
+                                                       array $options = array(), $functionName = null );
+
+       /**
+        * Selects the the specified fields of the records matching the provided
+        * conditions and returns them as DBDataObject. Field names get prefixed.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $fields
+        * @param array $conditions
+        * @param array $options
+        * @param string|null $functionName
+        *
+        * @return array of self
+        */
+       public function selectObjects( $fields = null, array $conditions = array(),
+                                                                  array $options = array(), $functionName = null );
+
+       /**
+        * Do the actual select.
+        *
+        * @since 1.20
+        *
+        * @param null|string|array $fields
+        * @param array $conditions
+        * @param array $options
+        * @param null|string $functionName
+        *
+        * @return ResultWrapper
+        */
+       public function rawSelect( $fields = null, array $conditions = array(),
+                                                          array $options = array(), $functionName = null );
+
+       /**
+        * Selects the the specified fields of the records matching the provided
+        * conditions and returns them as associative arrays.
+        * Provided field names get prefixed.
+        * Returned field names will not have a prefix.
+        *
+        * When $collapse is true:
+        * If one field is selected, each item in the result array will be this field.
+        * If two fields are selected, each item in the result array will have as key
+        * the first field and as value the second field.
+        * If more then two fields are selected, each item will be an associative array.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $fields
+        * @param array $conditions
+        * @param array $options
+        * @param boolean $collapse Set to false to always return each result row as associative array.
+        * @param string|null $functionName
+        *
+        * @return array of array
+        */
+       public function selectFields( $fields = null, array $conditions = array(),
+                                                                 array $options = array(), $collapse = true, $functionName = null );
+
+       /**
+        * Selects the the specified fields of the first matching record.
+        * Field names get prefixed.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $fields
+        * @param array $conditions
+        * @param array $options
+        * @param string|null $functionName
+        *
+        * @return IORMRow|bool False on failure
+        */
+       public function selectRow( $fields = null, array $conditions = array(),
+                                                          array $options = array(), $functionName = null );
+
+       /**
+        * Selects the the specified fields of the records matching the provided
+        * conditions. Field names do NOT get prefixed.
+        *
+        * @since 1.20
+        *
+        * @param array $fields
+        * @param array $conditions
+        * @param array $options
+        * @param string|null $functionName
+        *
+        * @return ResultWrapper
+        */
+       public function rawSelectRow( array $fields, array $conditions = array(),
+                                                                 array $options = array(), $functionName = null );
+
+       /**
+        * Selects the the specified fields of the first record matching the provided
+        * conditions and returns it as an associative array, or false when nothing matches.
+        * This method makes use of selectFields and expects the same parameters and
+        * returns the same results (if there are any, if there are none, this method returns false).
+        * @see IORMTable::selectFields
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $fields
+        * @param array $conditions
+        * @param array $options
+        * @param boolean $collapse Set to false to always return each result row as associative array.
+        * @param string|null $functionName
+        *
+        * @return mixed|array|bool False on failure
+        */
+       public function selectFieldsRow( $fields = null, array $conditions = array(),
+                                                                        array $options = array(), $collapse = true, $functionName = null );
+
+       /**
+        * Returns if there is at least one record matching the provided conditions.
+        * Condition field names get prefixed.
+        *
+        * @since 1.20
+        *
+        * @param array $conditions
+        *
+        * @return boolean
+        */
+       public function has( array $conditions = array() );
+
+       /**
+        * Returns the amount of matching records.
+        * Condition field names get prefixed.
+        *
+        * Note that this can be expensive on large tables.
+        * In such cases you might want to use DatabaseBase::estimateRowCount instead.
+        *
+        * @since 1.20
+        *
+        * @param array $conditions
+        * @param array $options
+        *
+        * @return integer
+        */
+       public function count( array $conditions = array(), array $options = array() );
+
+       /**
+        * Removes the object from the database.
+        *
+        * @since 1.20
+        *
+        * @param array $conditions
+        * @param string|null $functionName
+        *
+        * @return boolean Success indicator
+        */
+       public function delete( array $conditions, $functionName = null );
+
+       /**
+        * Get API parameters for the fields supported by this object.
+        *
+        * @since 1.20
+        *
+        * @param boolean $requireParams
+        * @param boolean $setDefaults
+        *
+        * @return array
+        */
+       public function getAPIParams( $requireParams = false, $setDefaults = false );
+
+       /**
+        * Returns an array with the fields and their descriptions.
+        *
+        * field name => field description
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFieldDescriptions();
+
+       /**
+        * Get the database type used for read operations.
+        *
+        * @since 1.20
+        *
+        * @return integer DB_ enum
+        */
+       public function getReadDb();
+
+       /**
+        * Set the database type to use for read operations.
+        *
+        * @param integer $db
+        *
+        * @since 1.20
+        */
+       public function setReadDb( $db );
+
+       /**
+        * Update the records matching the provided conditions by
+        * setting the fields that are keys in the $values param to
+        * their corresponding values.
+        *
+        * @since 1.20
+        *
+        * @param array $values
+        * @param array $conditions
+        *
+        * @return boolean Success indicator
+        */
+       public function update( array $values, array $conditions = array() );
+
+       /**
+        * Computes the values of the summary fields of the objects matching the provided conditions.
+        *
+        * @since 1.20
+        *
+        * @param array|string|null $summaryFields
+        * @param array $conditions
+        */
+       public function updateSummaryFields( $summaryFields = null, array $conditions = array() );
+
+       /**
+        * Takes in an associative array with field names as keys and
+        * their values as value. The field names are prefixed with the
+        * db field prefix.
+        *
+        * @since 1.20
+        *
+        * @param array $values
+        *
+        * @return array
+        */
+       public function getPrefixedValues( array $values );
+
+       /**
+        * Takes in a field or array of fields and returns an
+        * array with their prefixed versions, ready for db usage.
+        *
+        * @since 1.20
+        *
+        * @param array|string $fields
+        *
+        * @return array
+        */
+       public function getPrefixedFields( array $fields );
+
+       /**
+        * Takes in a field and returns an it's prefixed version, ready for db usage.
+        *
+        * @since 1.20
+        *
+        * @param string|array $field
+        *
+        * @return string
+        */
+       public function getPrefixedField( $field );
+
+       /**
+        * Takes an array of field names with prefix and returns the unprefixed equivalent.
+        *
+        * @since 1.20
+        *
+        * @param array $fieldNames
+        *
+        * @return array
+        */
+       public function unprefixFieldNames( array $fieldNames );
+
+       /**
+        * Takes a field name with prefix and returns the unprefixed equivalent.
+        *
+        * @since 1.20
+        *
+        * @param string $fieldName
+        *
+        * @return string
+        */
+       public function unprefixFieldName( $fieldName );
+
+       /**
+        * Get an instance of this class.
+        *
+        * @since 1.20
+        *
+        * @return IORMTable
+        */
+       public static function singleton();
+
+       /**
+        * Get an array with fields from a database result,
+        * that can be fed directly to the constructor or
+        * to setFields.
+        *
+        * @since 1.20
+        *
+        * @param stdClass $result
+        *
+        * @return array
+        */
+       public function getFieldsFromDBResult( stdClass $result );
+
+       /**
+        * Get a new instance of the class from a database result.
+        *
+        * @since 1.20
+        *
+        * @param stdClass $result
+        *
+        * @return IORMRow
+        */
+       public function newFromDBResult( stdClass $result );
+
+       /**
+        * Get a new instance of the class from an array.
+        *
+        * @since 1.20
+        *
+        * @param array $data
+        * @param boolean $loadDefaults
+        *
+        * @return IORMRow
+        */
+       public function newFromArray( array $data, $loadDefaults = false );
+
+       /**
+        * Return the names of the fields.
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFieldNames();
+
+       /**
+        * Gets if the object can take a certain field.
+        *
+        * @since 1.20
+        *
+        * @param string $name
+        *
+        * @return boolean
+        */
+       public function canHaveField( $name );
+
+}
diff --git a/includes/db/ORMIterator.php b/includes/db/ORMIterator.php
new file mode 100644 (file)
index 0000000..090b893
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * Interface for Iterators containing IORMRows.
+ *
+ * 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
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+interface ORMIterator extends Iterator {
+
+}
\ No newline at end of file
index 31e0c19..1342b02 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 /**
- * Result of a ORMTable::select, which returns ORMRow objects.
+ * ORMIterator that takes a ResultWrapper object returned from
+ * a select operation returning IORMRow objects (ie IORMTable::select).
  *
  * 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
  * @since 1.20
  *
  * @file ORMResult.php
+ * @ingroup ORM
  *
  * @licence GNU GPL v2 or later
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-class ORMResult implements Iterator {
+class ORMResult implements ORMIterator {
 
        /**
         * @var ResultWrapper
@@ -35,23 +37,23 @@ class ORMResult implements Iterator {
        /**
         * @var integer
         */
-       protected  $key;
+       protected $key;
 
        /**
-        * @var ORMRow
+        * @var IORMRow
         */
        protected $current;
 
        /**
-        * @var ORMTable
+        * @var IORMTable
         */
        protected $table;
 
        /**
-        * @param ORMTable $table
+        * @param IORMTable $table
         * @param ResultWrapper $res
         */
-       public function __construct( ORMTable $table, ResultWrapper $res ) {
+       public function __construct( IORMTable $table, ResultWrapper $res ) {
                $this->table = $table;
                $this->res = $res;
                $this->key = 0;
@@ -84,7 +86,7 @@ class ORMResult implements Iterator {
        }
 
        /**
-        * @return ORMRow
+        * @return IORMRow
         */
        public function current() {
                return $this->current;
index d3a97db..6f19fe1 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
- * These methods are likely candidates for overriding:
- * * getDefaults
- * * remove
- * * insert
- * * saveExisting
- * * loadSummaryFields
- * * getSummaryFields
- *
- * Main instance methods:
- * * getField(s)
- * * setField(s)
- * * save
- * * remove
- *
- * Main static methods:
- * * select
- * * update
- * * delete
- * * count
- * * has
- * * selectRow
- * * selectFields
- * * selectFieldsRow
- *
  * @since 1.20
  *
  * @file ORMRow.php
+ * @ingroup ORM
  *
  * @licence GNU GPL v2 or later
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-abstract class ORMRow {
+abstract class ORMRow implements IORMRow {
 
        /**
         * The fields of the object.
@@ -95,11 +72,11 @@ abstract class ORMRow {
         *
         * @since 1.20
         *
-        * @param ORMTable $table
+        * @param IORMTable $table
         * @param array|null $fields
         * @param boolean $loadDefaults
         */
-       public function __construct( ORMTable $table, $fields = null, $loadDefaults = false ) {
+       public function __construct( IORMTable $table, $fields = null, $loadDefaults = false ) {
                $this->table = $table;
 
                if ( !is_array( $fields ) ) {
@@ -331,7 +308,7 @@ abstract class ORMRow {
        /**
         * Load the default values, via getDefaults.
         *
-        *  @since 1.20
+        * @since 1.20
         *
         * @param boolean $override
         */
@@ -376,7 +353,8 @@ abstract class ORMRow {
                        is_null( $functionName ) ? __METHOD__ : $functionName
                );
 
-               return $success;
+               // DatabaseBase::update does not always return true for success as documented...
+               return $success !== false;
        }
 
        /**
@@ -404,18 +382,21 @@ abstract class ORMRow {
        protected function insert( $functionName = null, array $options = null ) {
                $dbw = wfGetDB( DB_MASTER );
 
-               $result = $dbw->insert(
+               $success = $dbw->insert(
                        $this->table->getName(),
                        $this->getWriteValues(),
                        is_null( $functionName ) ? __METHOD__ : $functionName,
                        is_null( $options ) ? array( 'IGNORE' ) : $options
                );
 
-               if ( $result ) {
+               // DatabaseBase::insert does not always return true for success as documented...
+               $success = $success !== false;
+
+               if ( $success ) {
                        $this->setField( 'id', $dbw->insertId() );
                }
 
-               return $result;
+               return $success;
        }
 
        /**
@@ -430,6 +411,9 @@ abstract class ORMRow {
 
                $success = $this->table->delete( array( 'id' => $this->getId() ) );
 
+               // DatabaseBase::delete does not always return true for success as documented...
+               $success = $success !== false;
+
                if ( $success ) {
                        $this->onRemoved();
                }
@@ -550,6 +534,7 @@ abstract class ORMRow {
 
        /**
         * Add an amount (can be negative) to the specified field (needs to be numeric).
+        * TODO: most off this stuff makes more sense in the table class
         *
         * @since 1.20
         *
@@ -637,14 +622,14 @@ abstract class ORMRow {
         *
         * @since 1.20
         *
-        * @param ORMRow $object
+        * @param IORMRow $object
         * @param boolean|array $excludeSummaryFields
         *  When set to true, summary field changes are ignored.
         *  Can also be an array of fields to ignore.
         *
         * @return boolean
         */
-       protected function fieldsChanged( ORMRow $object, $excludeSummaryFields = false ) {
+       protected function fieldsChanged( IORMRow $object, $excludeSummaryFields = false ) {
                $exclusionFields = array();
 
                if ( $excludeSummaryFields !== false ) {
@@ -663,11 +648,11 @@ abstract class ORMRow {
        }
 
        /**
-        * Returns the table this ORMRow is a row in.
+        * Returns the table this IORMRow is a row in.
         *
         * @since 1.20
         *
-        * @return ORMTable
+        * @return IORMTable
         */
        public function getTable() {
                return $this->table;
index 2f02c6b..b6e2d52 100644 (file)
  * @since 1.20
  *
  * @file ORMTable.php
+ * @ingroup ORM
  *
  * @licence GNU GPL v2 or later
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-abstract class ORMTable {
-
-       /**
-        * Returns the name of the database table objects of this type are stored in.
-        *
-        * @since 1.20
-        *
-        * @return string
-        */
-       public abstract function getName();
-
-       /**
-        * Returns the name of a ORMRow deriving class that
-        * represents single rows in this table.
-        *
-        * @since 1.20
-        *
-        * @return string
-        */
-       public abstract function getRowClass();
+abstract class ORMTable implements IORMTable {
 
        /**
         * Gets the db field prefix.
@@ -55,26 +37,6 @@ abstract class ORMTable {
         */
        protected abstract function getFieldPrefix();
 
-       /**
-        * Returns an array with the fields and their types this object contains.
-        * This corresponds directly to the fields in the database, without prefix.
-        *
-        * field name => type
-        *
-        * Allowed types:
-        * * id
-        * * str
-        * * int
-        * * float
-        * * bool
-        * * array
-        *
-        * @since 1.20
-        *
-        * @return array
-        */
-       public abstract function getFields();
-
        /**
         * Cache for instances, used by the singleton method.
         *
@@ -252,7 +214,7 @@ abstract class ORMTable {
         * @param array $options
         * @param string|null $functionName
         *
-        * @return DBObject|bool False on failure
+        * @return IORMRow|bool False on failure
         */
        public function selectRow( $fields = null, array $conditions = array(),
                                                           array $options = array(), $functionName = null ) {
@@ -368,7 +330,7 @@ abstract class ORMTable {
                        $this->getName(),
                        $this->getPrefixedValues( $conditions ),
                        $functionName
-               );
+               ) !== false; // DatabaseBase::delete does not always return true for success as documented...
        }
        
        /**
@@ -475,7 +437,7 @@ abstract class ORMTable {
                        $this->getPrefixedValues( $values ),
                        $this->getPrefixedValues( $conditions ),
                        __METHOD__
-               );
+               ) !== false; // DatabaseBase::update does not always return true for success as documented...
        }
 
        /**
@@ -489,7 +451,7 @@ abstract class ORMTable {
        public function updateSummaryFields( $summaryFields = null, array $conditions = array() ) {
                $this->setReadDb( DB_MASTER );
 
-               foreach ( $this->select( null, $conditions ) as /* ORMRow */ $item ) {
+               foreach ( $this->select( null, $conditions ) as /* IORMRow */ $item ) {
                        $item->loadSummaryFields( $summaryFields );
                        $item->setSummaryMode( true );
                        $item->save();
@@ -503,11 +465,6 @@ abstract class ORMTable {
         * their values as value. The field names are prefixed with the
         * db field prefix.
         *
-        * Field names can also be provided as an array with as first element a table name, such as
-        * $conditions = array(
-        *       array( array( 'tablename', 'fieldname' ), $value ),
-        * );
-        *
         * @since 1.20
         *
         * @param array $values
@@ -599,7 +556,7 @@ abstract class ORMTable {
         *
         * @since 1.20
         *
-        * @return ORMTable
+        * @return IORMTable
         */
        public static function singleton() {
                $class = function_exists( 'get_called_class' ) ? get_called_class() : self::get_called_class();
@@ -667,7 +624,7 @@ abstract class ORMTable {
         *
         * @param stdClass $result
         *
-        * @return ORMRow
+        * @return IORMRow
         */
        public function newFromDBResult( stdClass $result ) {
                return $this->newFromArray( $this->getFieldsFromDBResult( $result ) );
@@ -681,7 +638,7 @@ abstract class ORMTable {
         * @param array $data
         * @param boolean $loadDefaults
         *
-        * @return ORMRow
+        * @return IORMRow
         */
        public function newFromArray( array $data, $loadDefaults = false ) {
                $class = $this->getRowClass();
index 211f74a..0c0052f 100644 (file)
@@ -145,9 +145,10 @@ class MWDebug {
                // Check to see if there was already a deprecation notice, so not to
                // get a duplicate warning
                $logCount = count( self::$log );
+               $caller = wfGetCaller( $callerOffset + 1 );
                if ( $logCount ) {
                        $lastLog = self::$log[ $logCount - 1 ];
-                       if ( $lastLog['type'] == 'deprecated' && $lastLog['caller'] == wfGetCaller( $callerOffset + 1 ) ) {
+                       if ( $lastLog['type'] == 'deprecated' && $lastLog['caller'] == $caller ) {
                                return;
                        }
                }
@@ -155,7 +156,7 @@ class MWDebug {
                self::$log[] = array(
                        'msg' => htmlspecialchars( $msg ),
                        'type' => 'warn',
-                       'caller' => wfGetCaller( $callerOffset ),
+                       'caller' => $caller,
                );
        }
 
index 9b9cf31..eb3a319 100644 (file)
@@ -720,9 +720,9 @@ class DifferenceEngine extends ContextSource {
                }
                if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
                        # Diff via the shell
-                       global $wgTmpDirectory;
-                       $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
-                       $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
+                       $tmpDir = wfTempDir();
+                       $tempName1 = tempnam( $tmpDir, 'diff_' );
+                       $tempName2 = tempnam( $tmpDir, 'diff_' );
 
                        $tempFile1 = fopen( $tempName1, "w" );
                        if ( !$tempFile1 ) {
index ff0e257..d4eef87 100644 (file)
@@ -64,7 +64,7 @@ class FileRepo {
         * @param $info array|null
         * @throws MWException
         */
-       function __construct( array $info = null ) {
+       public function __construct( array $info = null ) {
                // Verify required settings presence
                if(
                        $info === null
@@ -118,11 +118,11 @@ class FileRepo {
                        : array();
                // Give defaults for the basic zones...
                foreach ( array( 'public', 'thumb', 'temp', 'deleted' ) as $zone ) {
-                       if ( !isset( $this->zones[$zone] ) ) {
-                               $this->zones[$zone] = array(
-                                       'container' => "{$this->name}-{$zone}",
-                                       'directory' => '' // container root
-                               );
+                       if ( !isset( $this->zones[$zone]['container'] ) ) {
+                               $this->zones[$zone]['container'] = "{$this->name}-{$zone}";
+                       }
+                       if ( !isset( $this->zones[$zone]['directory'] ) ) {
+                               $this->zones[$zone]['directory'] = '';
                        }
                }
        }
@@ -209,6 +209,11 @@ class FileRepo {
         * @return String or false
         */
        public function getZoneUrl( $zone ) {
+               if ( isset( $this->zones[$zone]['url'] )
+                       && in_array( $zone, array( 'public', 'temp', 'thumb' ) ) )
+               {
+                       return $this->zones[$zone]['url']; // custom URL
+               }
                switch ( $zone ) {
                        case 'public':
                                return $this->url;
@@ -449,10 +454,11 @@ class FileRepo {
        /**
         * Get the public root URL of the repository
         *
+        * @deprecated since 1.20
         * @return string
         */
        public function getRootUrl() {
-               return $this->url;
+               return $this->getZoneUrl( 'public' );
        }
 
        /**
index 77b9d04..13de9e6 100644 (file)
@@ -320,11 +320,11 @@ class ForeignAPIRepo extends FileRepo {
                        return false;
                }
 
+
                # @todo FIXME: Delete old thumbs that aren't being used. Maintenance script?
                $backend->prepare( array( 'dir' => dirname( $localFilename ) ) );
-               $op = array( 'op' => 'create', 'dst' => $localFilename, 'content' => $thumb );
-               if( !$backend->doOperation( $op )->isOK() ) {
-                       wfRestoreWarnings();
+               $params = array( 'dst' => $localFilename, 'content' => $thumb );
+               if( !$backend->quickCreate( $params )->isOK() ) {
                        wfDebug( __METHOD__ . " could not write to thumb path '$localFilename'\n" );
                        return $foreignUrl;
                }
index 2beea43..c616e16 100644 (file)
@@ -234,7 +234,8 @@ class LocalRepo extends FileRepo {
                $res = $dbr->select(
                        'image',
                        LocalFile::selectFields(),
-                       array( 'img_sha1' => $hash )
+                       array( 'img_sha1' => $hash ),
+                       __METHOD__
                );
                
                $result = array();
index 81fbced..3cc9021 100644 (file)
@@ -401,6 +401,7 @@ abstract class FileBackend {
         *
         * @param $ops Array Set of operations to execute
         * @return Status
+        * @since 1.20
         */
        final public function doQuickOperations( array $ops ) {
                if ( $this->isReadOnly() ) {
@@ -414,9 +415,94 @@ abstract class FileBackend {
 
        /**
         * @see FileBackend::doQuickOperations()
+        * @since 1.20
         */
        abstract protected function doQuickOperationsInternal( array $ops );
 
+       /**
+        * Same as doQuickOperations() except it takes a single operation.
+        * If you are doing a batch of operations, then use that function instead.
+        *
+        * @see FileBackend::doQuickOperations()
+        *
+        * @param $op Array Operation
+        * @return Status
+        * @since 1.20
+        */
+       final public function doQuickOperation( array $op ) {
+               return $this->doQuickOperations( array( $op ) );
+       }
+
+       /**
+        * Performs a single quick create operation.
+        * This sets $params['op'] to 'create' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickCreate( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'create' ) + $params );
+       }
+
+       /**
+        * Performs a single quick store operation.
+        * This sets $params['op'] to 'store' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickStore( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'store' ) + $params );
+       }
+
+       /**
+        * Performs a single quick copy operation.
+        * This sets $params['op'] to 'copy' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickCopy( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'copy' ) + $params );
+       }
+
+       /**
+        * Performs a single quick move operation.
+        * This sets $params['op'] to 'move' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickMove( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'move' ) + $params );
+       }
+
+       /**
+        * Performs a single quick delete operation.
+        * This sets $params['op'] to 'delete' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickDelete( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'delete' ) + $params );
+       }
+
        /**
         * Concatenate a list of storage files into a single file system file.
         * The target path should refer to a file that is already locked or
@@ -794,6 +880,24 @@ abstract class FileBackend {
                return ScopedLock::factory( $this->lockManager, $paths, $type, $status );
        }
 
+       /**
+        * Get an array of scoped locks needed for a batch of file operations.
+        *
+        * Normally, FileBackend::doOperations() handles locking, unless
+        * the 'nonLocking' param is passed in. This function is useful if you
+        * want the files to be locked for a broader scope than just when the
+        * files are changing. For example, if you need to update DB metadata,
+        * you may want to keep the files locked until finished.
+        *
+        * @see FileBackend::doOperations()
+        *
+        * @param $ops Array List of file operations to FileBackend::doOperations()
+        * @param $status Status Status to update on lock/unlock
+        * @return Array List of ScopedFileLocks or null values
+        * @since 1.20
+        */
+       abstract public function getScopedLocksForOps( array $ops, Status $status );
+
        /**
         * Get the root storage path of this backend.
         * All container paths are "subdirectories" of this path.
index 59406d6..efc6053 100644 (file)
@@ -506,4 +506,20 @@ class FileBackendMultiWrite extends FileBackend {
                        $backend->clearCache( $realPaths );
                }
        }
+
+       /**
+        * @see FileBackend::getScopedLocksForOps()
+        */
+       public function getScopedLocksForOps( array $ops, Status $status ) {
+               $fileOps = $this->backends[$this->masterIndex]->getOperationsInternal( $ops );
+               // Get the paths to lock from the master backend
+               $paths = $this->backends[$this->masterIndex]->getPathsToLockForOpsInternal( $fileOps );
+               // Get the paths under the proxy backend's name
+               $paths['sh'] = $this->unsubstPaths( $paths['sh'] );
+               $paths['ex'] = $this->unsubstPaths( $paths['ex'] );
+               return array(
+                       $this->getScopedFileLocks( $paths['sh'], LockManager::LOCK_UW, $status ),
+                       $this->getScopedFileLocks( $paths['ex'], LockManager::LOCK_EX, $status )
+               );
+       }
 }
index aad4bf7..f2860f3 100644 (file)
@@ -532,14 +532,12 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool
         */
        final public function getFileStat( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return false; // invalid storage path
                }
+               wfProfileIn( __METHOD__ );
+               wfProfileIn( __METHOD__ . '-' . $this->name );
                $latest = !empty( $params['latest'] ); // use latest data?
                if ( !isset( $this->cache[$path]['stat'] ) ) {
                        $this->primeFileCache( array( $path ) ); // check persistent cache
@@ -564,6 +562,11 @@ abstract class FileBackendStore extends FileBackend {
                        $this->trimCache(); // limit memory
                        $this->cache[$path]['stat'] = $stat;
                        $this->setFileCache( $path, $stat ); // update persistent cache
+                       if ( isset( $stat['sha1'] ) ) { // some backends store SHA-1 as metadata
+                               $this->trimCache(); // limit memory
+                               $this->cache[$path]['sha1'] =
+                                       array( 'hash' => $stat['sha1'], 'latest' => $latest );
+                       }
                } else {
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
                }
@@ -603,14 +606,22 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool|string
         */
        final public function getFileSha1Base36( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return false; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->cache[$path]['sha1'] ) ) {
-                       $this->pingCache( $path ); // LRU
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->cache[$path]['sha1'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->cache[$path]['sha1']['latest'] ) {
+                               $this->pingCache( $path ); // LRU
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->cache[$path]['sha1']['hash'];
+                       }
                }
                wfProfileIn( __METHOD__ . '-miss' );
                wfProfileIn( __METHOD__ . '-miss-' . $this->name );
@@ -619,7 +630,7 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileOut( __METHOD__ . '-miss' );
                if ( $hash ) { // don't cache negatives
                        $this->trimCache(); // limit memory
-                       $this->cache[$path]['sha1'] = $hash;
+                       $this->cache[$path]['sha1'] = array( 'hash' => $hash, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -628,7 +639,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getFileSha1Base36()
-        * @return bool
+        * @return bool|string
         */
        protected function doGetFileSha1Base36( array $params ) {
                $fsFile = $this->getLocalReference( $params );
@@ -658,19 +669,28 @@ abstract class FileBackendStore extends FileBackend {
         * @return TempFSFile|null
         */
        public function getLocalReference( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return null; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->expensiveCache[$path]['localRef'] ) ) {
-                       $this->pingExpensiveCache( $path );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->expensiveCache[$path]['localRef'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->expensiveCache[$path]['localRef']['latest'] ) {
+                               $this->pingExpensiveCache( $path );
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->expensiveCache[$path]['localRef']['object'];
+                       }
                }
                $tmpFile = $this->getLocalCopy( $params );
                if ( $tmpFile ) { // don't cache negatives
                        $this->trimExpensiveCache(); // limit memory
-                       $this->expensiveCache[$path]['localRef'] = $tmpFile;
+                       $this->expensiveCache[$path]['localRef'] =
+                               array( 'object' => $tmpFile, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -894,6 +914,18 @@ abstract class FileBackendStore extends FileBackend {
                return $paths;
        }
 
+       /**
+        * @see FileBackend::getScopedLocksForOps()
+        * @return Array
+        */
+       public function getScopedLocksForOps( array $ops, Status $status ) {
+               $paths = $this->getPathsToLockForOpsInternal( $this->getOperationsInternal( $ops ) );
+               return array(
+                       $this->getScopedFileLocks( $paths['sh'], LockManager::LOCK_UW, $status ),
+                       $this->getScopedFileLocks( $paths['ex'], LockManager::LOCK_EX, $status )
+               );
+       }
+
        /**
         * @see FileBackend::doOperationsInternal()
         * @return Status
@@ -1346,16 +1378,17 @@ abstract class FileBackendStore extends FileBackend {
         * @param $val mixed Information to cache
         */
        final protected function setContainerCache( $container, $val ) {
-               $this->memCache->set( $this->containerCacheKey( $container ), $val, 14*86400 );
+               $this->memCache->add( $this->containerCacheKey( $container ), $val, 14*86400 );
        }
 
        /**
-        * Delete the cached info for a container
+        * Delete the cached info for a container.
+        * The cache key is salted for a while to prevent race conditions.
         *
         * @param $container string Resolved container name
         */
        final protected function deleteContainerCache( $container ) {
-               if ( !$this->memCache->delete( $this->containerCacheKey( $container ) ) ) {
+               if ( !$this->memCache->set( $this->containerCacheKey( $container ), 'PURGED', 300 ) ) {
                        trigger_error( "Unable to delete stat cache for container $container." );
                }
        }
@@ -1433,16 +1466,17 @@ abstract class FileBackendStore extends FileBackend {
         * @param $val mixed Information to cache
         */
        final protected function setFileCache( $path, $val ) {
-               $this->memCache->set( $this->fileCacheKey( $path ), $val, 7*86400 );
+               $this->memCache->add( $this->fileCacheKey( $path ), $val, 7*86400 );
        }
 
        /**
-        * Delete the cached stat info for a file path
+        * Delete the cached stat info for a file path.
+        * The cache key is salted for a while to prevent race conditions.
         *
         * @param $path string Storage path
         */
        final protected function deleteFileCache( $path ) {
-               if ( !$this->memCache->delete( $this->fileCacheKey( $path ) ) ) {
+               if ( !$this->memCache->set( $this->fileCacheKey( $path ), 'PURGED', 300 ) ) {
                        trigger_error( "Unable to delete stat cache for file $path." );
                }
        }
@@ -1480,8 +1514,14 @@ abstract class FileBackendStore extends FileBackend {
                $values = $this->memCache->getMulti( array_keys( $pathNames ) );
                foreach ( $values as $cacheKey => $val ) {
                        if ( is_array( $val ) ) {
+                               $path = $pathNames[$cacheKey];
                                $this->trimCache(); // limit memory
-                               $this->cache[$pathNames[$cacheKey]]['stat'] = $val;
+                               $this->cache[$path]['stat'] = $val;
+                               if ( isset( $val['sha1'] ) ) { // some backends store SHA-1 as metadata
+                                       $this->trimCache(); // limit memory
+                                       $this->cache[$path]['sha1'] =
+                                               array( 'hash' => $val['sha1'], 'latest' => $val['latest'] );
+                               }
                        }
                }
 
index d9fbafd..ac2496d 100644 (file)
@@ -438,7 +438,6 @@ abstract class FileOp {
  *     overwriteSame : override any existing file at destination
  */
 class StoreFileOp extends FileOp {
-
        /**
         * @return array
         */
@@ -579,7 +578,6 @@ class CreateFileOp extends FileOp {
  *     overwriteSame : override any existing file at destination
  */
 class CopyFileOp extends FileOp {
-
        /**
         * @return array
         */
index 36d4334..2b10917 100644 (file)
@@ -42,6 +42,9 @@ class SwiftFileBackend extends FileBackendStore {
        protected $authTTL; // integer seconds
        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
+
        protected $maxContCacheSize = 300; // integer; max containers with entries
 
        /** @var CF_Connection */
@@ -59,6 +62,11 @@ class SwiftFileBackend extends FileBackendStore {
         *    swiftAuthTTL       : Swift authentication TTL (seconds)
         *    swiftAnonUser      : Swift user used for end-user requests (account:username)
         *    swiftUseCDN        : Whether a Cloud Files Content Delivery Network is set up
+        *    swiftCDNExpiry     : How long (in seconds) to store content in the CDN.
+        *                         If files may likely change, this should probably not exceed
+        *                         a few days. For example, deletions may take this long to apply.
+        *                         If object purging is enabled, however, this is not an issue.
+        *    swiftCDNPurgable   : Whether object purge requests are allowed by the CDN.
         *    shardViaHashLevels : Map of container names to sharding config with:
         *                         'base'   : base of hash characters, 16 or 36
         *                         'levels' : the number of hash levels (and digits)
@@ -90,6 +98,12 @@ class SwiftFileBackend extends FileBackendStore {
                $this->swiftUseCDN = isset( $config['swiftUseCDN'] )
                        ? $config['swiftUseCDN']
                        : false;
+               $this->swiftCDNExpiry = isset( $config['swiftCDNExpiry'] )
+                       ? $config['swiftCDNExpiry']
+                       : 3600; // hour
+               $this->swiftCDNPurgable = isset( $config['swiftCDNPurgable'] )
+                       ? $config['swiftCDNPurgable']
+                       : true;
                // Cache container info to mask latency
                $this->memCache = wfGetMainCache();
        }
@@ -519,7 +533,7 @@ class SwiftFileBackend extends FileBackendStore {
                                ) );
                        }
                        if ( $this->swiftUseCDN ) { // Rackspace style CDN
-                               $contObj->make_public();
+                               $contObj->make_public( $this->swiftCDNExpiry );
                        }
                } catch ( CDNNotEnabledException $e ) {
                        // CDN not enabled; nothing to see here
@@ -625,7 +639,7 @@ class SwiftFileBackend extends FileBackendStore {
                        $stat = array(
                                // Convert dates like "Tue, 03 Jan 2012 22:01:04 GMT" to TS_MW
                                'mtime' => wfTimestamp( TS_MW, $srcObj->last_modified ),
-                               'size'  => $srcObj->content_length,
+                               'size'  => (int)$srcObj->content_length,
                                'sha1'  => $srcObj->metadata['Sha1base36']
                        );
                } catch ( NoSuchContainerException $e ) {
@@ -1018,13 +1032,14 @@ class SwiftFileBackend extends FileBackendStore {
        }
 
        /**
-        * Purge the CDN cache of affected objects if CDN caching is enabled
+        * Purge the CDN cache of affected objects if CDN caching is enabled.
+        * This is for Rackspace/Akamai CDNs.
         *
         * @param $objects Array List of CF_Object items
         * @return void
         */
        public function purgeCDNCache( array $objects ) {
-               if ( $this->swiftUseCDN ) { // Rackspace style CDN
+               if ( $this->swiftUseCDN && $this->swiftCDNPurgable ) {
                        foreach ( $objects as $object ) {
                                try {
                                        $object->purge_from_cdn();
@@ -1114,7 +1129,7 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param $container string Container name
         * @return CF_Container
-        * @throws InvalidResponseException
+        * @throws CloudFilesException
         */
        protected function createContainer( $container ) {
                $conn = $this->getConnection(); // Swift proxy connection
@@ -1128,12 +1143,12 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param $container string Container name
         * @return void
-        * @throws InvalidResponseException
+        * @throws CloudFilesException
         */
        protected function deleteContainer( $container ) {
                $conn = $this->getConnection(); // Swift proxy connection
-               $conn->delete_container( $container );
                unset( $this->connContainers[$container] ); // purge cache
+               $conn->delete_container( $container );
        }
 
        /**
index ae22a1c..ddc640a 100644 (file)
@@ -23,7 +23,7 @@
 
 /**
  * This class is used to hold the location and do limited manipulation
- * of files stored temporarily (usually this will be $wgTmpDirectory)
+ * of files stored temporarily (this will be whatever wfTempDir() returns)
  *
  * @ingroup FileBackend
  */
index 4f3b959..53f3e9f 100644 (file)
@@ -176,6 +176,9 @@ class FSLockManager extends LockManager {
                                        unset( $this->handles[$path][$type] );
                                }
                        }
+                       if ( !count( $this->locksHeld[$path] ) ) {
+                               unset( $this->locksHeld[$path] ); // no locks on this path
+                       }
                        // Unlock handles to release locks and delete
                        // any lock files that end up with no locks on them...
                        if ( wfIsWindows() ) {
@@ -218,12 +221,11 @@ class FSLockManager extends LockManager {
         */
        private function pruneKeyLockFiles( $path ) {
                $status = Status::newGood();
-               if ( !count( $this->locksHeld[$path] ) ) {
+               if ( !isset( $this->locksHeld[$path] ) ) {
                        # No locks are held for the lock file anymore
                        if ( !unlink( $this->getLockPath( $path ) ) ) {
                                $status->warning( 'lockmanager-fail-deletelock', $path );
                        }
-                       unset( $this->locksHeld[$path] );
                        unset( $this->handles[$path] );
                }
                return $status;
@@ -239,11 +241,15 @@ class FSLockManager extends LockManager {
                return "{$this->lockDir}/{$hash}.lock";
        }
 
+       /**
+        * Make sure remaining locks get cleared for sanity
+        */
        function __destruct() {
-               // Make sure remaining locks get cleared for sanity
-               foreach ( $this->locksHeld as $path => $locks ) {
-                       $this->doSingleUnlock( $path, self::LOCK_EX );
-                       $this->doSingleUnlock( $path, self::LOCK_SH );
+               while ( count( $this->locksHeld ) ) {
+                       foreach ( $this->locksHeld as $path => $locks ) {
+                               $this->doSingleUnlock( $path, self::LOCK_EX );
+                               $this->doSingleUnlock( $path, self::LOCK_SH );
+                       }
                }
        }
 }
index 7910285..024e11b 100644 (file)
@@ -36,7 +36,7 @@
  * @ingroup LockManager
  * @since 1.19
  */
-class LSLockManager extends LockManager {
+class LSLockManager extends QuorumLockManager {
        /** @var Array Mapping of lock types to the type actually used */
        protected $lockTypeMap = array(
                self::LOCK_SH => self::LOCK_SH,
@@ -46,8 +46,6 @@ class LSLockManager extends LockManager {
 
        /** @var Array Map of server names to server config */
        protected $lockServers; // (server name => server config array)
-       /** @var Array Map of bucket indexes to peer server lists */
-       protected $srvsByBucket; // (bucket index => (lsrv1, lsrv2, ...))
 
        /** @var Array Map Server connections (server name => resource) */
        protected $conns = array();
@@ -57,7 +55,7 @@ class LSLockManager extends LockManager {
 
        /**
         * Construct a new instance from configuration.
-        * 
+        *
         * $config paramaters include:
         *     'lockServers'  : Associative array of server names to configuration.
         *                      Configuration is an associative array that includes:
@@ -68,7 +66,7 @@ class LSLockManager extends LockManager {
         *                      each having an odd-numbered list of server names (peers) as values.
         *     'connTimeout'  : Lock server connection attempt timeout. [optional]
         *
-        * @param Array $config 
+        * @param Array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -84,123 +82,74 @@ class LSLockManager extends LockManager {
                        $this->connTimeout = 3; // use some sane amount
                }
 
-               $this->session = '';
-               for ( $i = 0; $i < 5; $i++ ) {
-                       $this->session .= mt_rand( 0, 2147483647 );
-               }
-               $this->session = wfBaseConvert( sha1( $this->session ), 16, 36, 31 );
+               $this->session = wfRandomString( 31 );
        }
 
        /**
-        * @see LockManager::doLock()
-        * @param $paths array
-        * @param $type int
+        * @see QuorumLockManager::getLocksOnServer()
         * @return Status
         */
-       protected function doLock( array $paths, $type ) {
+       protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
                $status = Status::newGood();
 
-               $pathsToLock = array();
-               // Get locks that need to be acquired (buckets => locks)...
-               foreach ( $paths as $path ) {
-                       if ( isset( $this->locksHeld[$path][$type] ) ) {
-                               ++$this->locksHeld[$path][$type];
-                       } elseif ( isset( $this->locksHeld[$path][self::LOCK_EX] ) ) {
-                               $this->locksHeld[$path][$type] = 1;
-                       } else {
-                               $bucket = $this->getBucketFromKey( $path );
-                               $pathsToLock[$bucket][] = $path;
-                       }
-               }
+               // Send out the command and get the response...
+               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
+               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
+               $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
 
-               $lockedPaths = array(); // files locked in this attempt
-               // Attempt to acquire these locks...
-               foreach ( $pathsToLock as $bucket => $paths ) {
-                       // Try to acquire the locks for this bucket
-                       $res = $this->doLockingRequestAll( $bucket, $paths, $type );
-                       if ( $res === 'cantacquire' ) {
-                               // Resources already locked by another process.
-                               // Abort and unlock everything we just locked.
-                               foreach ( $paths as $path ) {
-                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
-                               }
-                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
-                               return $status;
-                       } elseif ( $res !== true ) {
-                               // Couldn't contact any servers for this bucket.
-                               // Abort and unlock everything we just locked.
-                               foreach ( $paths as $path ) {
-                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
-                               }
-                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
-                               return $status;
-                       }
-                       // Record these locks as active
+               if ( $response !== 'ACQUIRED' ) {
                        foreach ( $paths as $path ) {
-                               $this->locksHeld[$path][$type] = 1; // locked
+                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
-                       // Keep track of what locks were made in this attempt
-                       $lockedPaths = array_merge( $lockedPaths, $paths );
                }
 
                return $status;
        }
 
        /**
-        * @see LockManager::doUnlock()
-        * @param $paths array
-        * @param $type int
+        * @see QuorumLockManager::freeLocksOnServer()
         * @return Status
         */
-       protected function doUnlock( array $paths, $type ) {
+       protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
                $status = Status::newGood();
 
-               foreach ( $paths as $path ) {
-                       if ( !isset( $this->locksHeld[$path] ) ) {
-                               $status->warning( 'lockmanager-notlocked', $path );
-                       } elseif ( !isset( $this->locksHeld[$path][$type] ) ) {
-                               $status->warning( 'lockmanager-notlocked', $path );
-                       } else {
-                               --$this->locksHeld[$path][$type];
-                               if ( $this->locksHeld[$path][$type] <= 0 ) {
-                                       unset( $this->locksHeld[$path][$type] );
-                               }
-                               if ( !count( $this->locksHeld[$path] ) ) {
-                                       unset( $this->locksHeld[$path] ); // no SH or EX locks left for key
-                               }
-                       }
-               }
+               // Send out the command and get the response...
+               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
+               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
+               $response = $this->sendCommand( $lockSrv, 'RELEASE', $type, $keys );
 
-               // Reference count the locks held and release locks when zero
-               if ( !count( $this->locksHeld ) ) {
-                       $status->merge( $this->releaseLocks() );
+               if ( $response !== 'RELEASED' ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
                }
 
                return $status;
        }
 
        /**
-        * Get a connection to a lock server and acquire locks on $paths
-        *
-        * @param $lockSrv string
-        * @param $paths Array
-        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
-        * @return bool Resources able to be locked
+        * @see QuorumLockManager::releaseAllLocks()
+        * @return Status
         */
-       protected function doLockingRequest( $lockSrv, array $paths, $type ) {
-               if ( $type == self::LOCK_SH ) { // reader locks
-                       $type = 'SH';
-               } elseif ( $type == self::LOCK_EX ) { // writer locks
-                       $type = 'EX';
-               } else {
-                       return true; // ok...
+       protected function releaseAllLocks() {
+               $status = Status::newGood();
+
+               foreach ( $this->conns as $lockSrv => $conn ) {
+                       $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
+                       if ( $response !== 'RELEASED_ALL' ) {
+                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
+                       }
                }
 
-               // Send out the command and get the response...
-               $keys = array_unique( array_map( 'LockManager::sha1Base36', $paths ) );
-               $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
+               return $status;
+       }
 
-               return ( $response === 'ACQUIRED' );
+       /**
+        * @see QuorumLockManager::isServerUp()
+        * @return bool
+        */
+       protected function isServerUp( $lockSrv ) {
+               return (bool)$this->getConnection( $lockSrv );
        }
 
        /**
@@ -233,39 +182,6 @@ class LSLockManager extends LockManager {
                return trim( $response );
        }
 
-       /**
-        * Attempt to acquire locks with the peers for a bucket
-        *
-        * @param $bucket integer
-        * @param $paths Array List of resource keys to lock
-        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
-        * @return bool|string One of (true, 'cantacquire', 'srverrors')
-        */
-       protected function doLockingRequestAll( $bucket, array $paths, $type ) {
-               $yesVotes = 0; // locks made on trustable servers
-               $votesLeft = count( $this->srvsByBucket[$bucket] ); // remaining peers
-               $quorum = floor( $votesLeft/2 + 1 ); // simple majority
-               // Get votes for each peer, in order, until we have enough...
-               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
-                       // Attempt to acquire the lock on this peer
-                       if ( !$this->doLockingRequest( $lockSrv, $paths, $type ) ) {
-                               return 'cantacquire'; // vetoed; resource locked
-                       }
-                       ++$yesVotes; // success for this peer
-                       if ( $yesVotes >= $quorum ) {
-                               return true; // lock obtained
-                       }
-                       --$votesLeft;
-                       $votesNeeded = $quorum - $yesVotes;
-                       if ( $votesNeeded > $votesLeft ) {
-                               // In "trust cache" mode we don't have to meet the quorum
-                               break; // short-circuit
-                       }
-               }
-               // At this point, we must not have meet the quorum
-               return 'srverrors'; // not enough votes to ensure correctness
-       }
-
        /**
         * Get (or reuse) a connection to a lock server
         *
@@ -290,39 +206,11 @@ class LSLockManager extends LockManager {
                return $this->conns[$lockSrv];
        }
 
-       /**
-        * Release all locks that this session is holding
-        *
-        * @return Status
-        */
-       protected function releaseLocks() {
-               $status = Status::newGood();
-               foreach ( $this->conns as $lockSrv => $conn ) {
-                       $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
-                       if ( $response !== 'RELEASED_ALL' ) {
-                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
-                       }
-               }
-               return $status;
-       }
-
-       /**
-        * Get the bucket for resource path.
-        * This should avoid throwing any exceptions.
-        *
-        * @param $path string
-        * @return integer
-        */
-       protected function getBucketFromKey( $path ) {
-               $prefix = substr( sha1( $path ), 0, 2 ); // first 2 hex chars (8 bits)
-               return intval( base_convert( $prefix, 16, 10 ) ) % count( $this->srvsByBucket );
-       }
-
        /**
         * Make sure remaining locks get cleared for sanity
         */
        function __destruct() {
-               $this->releaseLocks();
+               $this->releaseAllLocks();
                foreach ( $this->conns as $conn ) {
                        fclose( $conn );
                }
index e41c777..07853f8 100644 (file)
@@ -67,10 +67,10 @@ abstract class LockManager {
 
        /**
         * Lock the resources at the given abstract paths
-        * 
+        *
         * @param $paths Array List of resource names
         * @param $type integer LockManager::LOCK_* constant
-        * @return Status 
+        * @return Status
         */
        final public function lock( array $paths, $type = self::LOCK_EX ) {
                wfProfileIn( __METHOD__ );
@@ -81,10 +81,10 @@ abstract class LockManager {
 
        /**
         * Unlock the resources at the given abstract paths
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
-        * @return Status 
+        * @return Status
         */
        final public function unlock( array $paths, $type = self::LOCK_EX ) {
                wfProfileIn( __METHOD__ );
@@ -95,7 +95,7 @@ abstract class LockManager {
 
        /**
         * Get the base 36 SHA-1 of a string, padded to 31 digits
-        * 
+        *
         * @param $path string
         * @return string
         */
@@ -105,7 +105,7 @@ abstract class LockManager {
 
        /**
         * Lock resources with the given keys and lock type
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
         * @return string
@@ -114,7 +114,7 @@ abstract class LockManager {
 
        /**
         * Unlock resources with the given keys and lock type
-        * 
+        *
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
         * @return string
@@ -123,7 +123,7 @@ abstract class LockManager {
 }
 
 /**
- * Self releasing locks
+ * Self-releasing locks
  *
  * LockManager helper class to handle scoped locks, which
  * release when an object is destroyed or goes out of scope.
@@ -160,7 +160,7 @@ class ScopedLock {
         * Get a ScopedLock object representing a lock on resource paths.
         * Any locks are released once this object goes out of scope.
         * The status object is updated with any errors or warnings.
-        * 
+        *
         * @param $manager LockManager
         * @param $paths Array List of storage paths
         * @param $type integer LockManager::LOCK_* constant
@@ -188,6 +188,216 @@ class ScopedLock {
        }
 }
 
+/**
+ * Version of LockManager that uses a quorum from peer servers for locks.
+ * The resource space can also be sharded into separate peer groups.
+ *
+ * @ingroup LockManager
+ * @since 1.20
+ */
+abstract class QuorumLockManager extends LockManager {
+       /** @var Array Map of bucket indexes to peer server lists */
+       protected $srvsByBucket = array(); // (bucket index => (lsrv1, lsrv2, ...))
+
+       /**
+        * @see LockManager::doLock()
+        * @param $paths array
+        * @param $type int
+        * @return Status
+        */
+       final protected function doLock( array $paths, $type ) {
+               $status = Status::newGood();
+
+               $pathsToLock = array(); // (bucket => paths)
+               // Get locks that need to be acquired (buckets => locks)...
+               foreach ( $paths as $path ) {
+                       if ( isset( $this->locksHeld[$path][$type] ) ) {
+                               ++$this->locksHeld[$path][$type];
+                       } elseif ( isset( $this->locksHeld[$path][self::LOCK_EX] ) ) {
+                               $this->locksHeld[$path][$type] = 1;
+                       } else {
+                               $bucket = $this->getBucketFromKey( $path );
+                               $pathsToLock[$bucket][] = $path;
+                       }
+               }
+
+               $lockedPaths = array(); // files locked in this attempt
+               // Attempt to acquire these locks...
+               foreach ( $pathsToLock as $bucket => $paths ) {
+                       // Try to acquire the locks for this bucket
+                       $status->merge( $this->doLockingRequestBucket( $bucket, $paths, $type ) );
+                       if ( !$status->isOK() ) {
+                               $status->merge( $this->doUnlock( $lockedPaths, $type ) );
+                               return $status;
+                       }
+                       // Record these locks as active
+                       foreach ( $paths as $path ) {
+                               $this->locksHeld[$path][$type] = 1; // locked
+                       }
+                       // Keep track of what locks were made in this attempt
+                       $lockedPaths = array_merge( $lockedPaths, $paths );
+               }
+
+               return $status;
+       }
+
+       /**
+        * @see LockManager::doUnlock()
+        * @param $paths array
+        * @param $type int
+        * @return Status
+        */
+       final protected function doUnlock( array $paths, $type ) {
+               $status = Status::newGood();
+
+               $pathsToUnlock = array();
+               foreach ( $paths as $path ) {
+                       if ( !isset( $this->locksHeld[$path][$type] ) ) {
+                               $status->warning( 'lockmanager-notlocked', $path );
+                       } else {
+                               --$this->locksHeld[$path][$type];
+                               // Reference count the locks held and release locks when zero
+                               if ( $this->locksHeld[$path][$type] <= 0 ) {
+                                       unset( $this->locksHeld[$path][$type] );
+                                       $bucket = $this->getBucketFromKey( $path );
+                                       $pathsToUnlock[$bucket][] = $path;
+                               }
+                               if ( !count( $this->locksHeld[$path] ) ) {
+                                       unset( $this->locksHeld[$path] ); // no SH or EX locks left for key
+                               }
+                       }
+               }
+
+               // Remove these specific locks if possible, or at least release
+               // all locks once this process is currently not holding any locks.
+               foreach ( $pathsToUnlock as $bucket => $paths ) {
+                       $status->merge( $this->doUnlockingRequestBucket( $bucket, $paths, $type ) );
+               }
+               if ( !count( $this->locksHeld ) ) {
+                       $status->merge( $this->releaseAllLocks() );
+               }
+
+               return $status;
+       }
+
+       /**
+        * 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 $paths Array List of resource keys to lock
+        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
+        * @return Status
+        */
+       final protected function doLockingRequestBucket( $bucket, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $yesVotes = 0; // locks made on trustable servers
+               $votesLeft = count( $this->srvsByBucket[$bucket] ); // remaining peers
+               $quorum = floor( $votesLeft/2 + 1 ); // simple majority
+               // Get votes for each peer, in order, until we have enough...
+               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
+                       if ( !$this->isServerUp( $lockSrv ) ) {
+                               --$votesLeft;
+                               $status->warning( 'lockmanager-fail-svr-acquire', $lockSrv );
+                               continue; // server down?
+                       }
+                       // Attempt to acquire the lock on this peer
+                       $status->merge( $this->getLocksOnServer( $lockSrv, $paths, $type ) );
+                       if ( !$status->isOK() ) {
+                               return $status; // vetoed; resource locked
+                       }
+                       ++$yesVotes; // success for this peer
+                       if ( $yesVotes >= $quorum ) {
+                               return $status; // lock obtained
+                       }
+                       --$votesLeft;
+                       $votesNeeded = $quorum - $yesVotes;
+                       if ( $votesNeeded > $votesLeft ) {
+                               break; // short-circuit
+                       }
+               }
+               // At this point, we must not have met the quorum
+               $status->setResult( false );
+
+               return $status;
+       }
+
+       /**
+        * Attempt to release locks with the peers for a bucket
+        *
+        * @param $bucket integer
+        * @param $paths Array List of resource keys to lock
+        * @param $type integer LockManager::LOCK_EX or LockManager::LOCK_SH
+        * @return Status
+        */
+       final protected function doUnlockingRequestBucket( $bucket, array $paths, $type ) {
+               $status = Status::newGood();
+
+               foreach ( $this->srvsByBucket[$bucket] as $lockSrv ) {
+                       if ( !$this->isServerUp( $lockSrv ) ) {
+                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
+                       // Attempt to release the lock on this peer
+                       } else {
+                               $status->merge( $this->freeLocksOnServer( $lockSrv, $paths, $type ) );
+                       }
+               }
+
+               return $status;
+       }
+
+       /**
+        * Get the bucket for resource path.
+        * This should avoid throwing any exceptions.
+        *
+        * @param $path string
+        * @return integer
+        */
+       protected function getBucketFromKey( $path ) {
+               $prefix = substr( sha1( $path ), 0, 2 ); // first 2 hex chars (8 bits)
+               return (int)base_convert( $prefix, 16, 10 ) % count( $this->srvsByBucket );
+       }
+
+       /**
+        * Check if a lock server is up
+        *
+        * @param $lockSrv string
+        * @return bool
+        */
+       abstract protected function isServerUp( $lockSrv );
+
+       /**
+        * Get a connection to a lock server and acquire locks on $paths
+        *
+        * @param $lockSrv string
+        * @param $paths array
+        * @param $type integer
+        * @return Status
+        */
+       abstract protected function getLocksOnServer( $lockSrv, array $paths, $type );
+
+       /**
+        * Get a connection to a lock server and release locks on $paths.
+        *
+        * Subclasses must effectively implement this or releaseAllLocks().
+        *
+        * @param $lockSrv string
+        * @param $paths array
+        * @param $type integer
+        * @return Status
+        */
+       abstract protected function freeLocksOnServer( $lockSrv, array $paths, $type );
+
+       /**
+        * Release all locks that this session is holding.
+        *
+        * Subclasses must effectively implement this or freeLocksOnServer().
+        *
+        * @return Status
+        */
+       abstract protected function releaseAllLocks();
+}
+
 /**
  * Simple version of LockManager that does nothing
  * @since 1.19
index b830855..8c8c940 100644 (file)
 
 /**
  * Class to handle file lock manager registration
- * 
+ *
  * @ingroup LockManager
  * @author Aaron Schulz
  * @since 1.19
  */
 class LockManagerGroup {
-
        /**
         * @var LockManagerGroup
         */
@@ -61,7 +60,7 @@ class LockManagerGroup {
 
        /**
         * Register lock managers from the global variables
-        * 
+        *
         * @return void
         */
        protected function initFromGlobals() {
@@ -115,4 +114,30 @@ class LockManagerGroup {
                }
                return $this->managers[$name]['instance'];
        }
+
+       /**
+        * Get the default lock manager configured for the site.
+        * Returns NullLockManager if no lock manager could be found.
+        *
+        * @return LockManager
+        */
+       public function getDefault() {
+               return isset( $this->managers['default'] )
+                       ? $this->get( 'default' )
+                       : new NullLockManager( array() );
+       }
+
+       /**
+        * Get the default lock manager configured for the site
+        * or at least some other effective configured lock manager.
+        * Throws an exception if no lock manager could be found.
+        *
+        * @return LockManager
+        * @throws MWException
+        */
+       public function getAny() {
+               return isset( $this->managers['default'] )
+                       ? $this->get( 'default' )
+                       : $this->get( 'fsLockManager' );
+       }
 }
diff --git a/includes/filerepo/backend/lockmanager/MemcLockManager.php b/includes/filerepo/backend/lockmanager/MemcLockManager.php
new file mode 100644 (file)
index 0000000..add1f2c
--- /dev/null
@@ -0,0 +1,306 @@
+<?php
+/**
+ * Version of LockManager based on using memcached servers.
+ *
+ * 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 LockManager
+ */
+
+/**
+ * Manage locks using memcached servers.
+ *
+ * Version of LockManager based on using memcached servers.
+ * This is meant for multi-wiki systems that may share files.
+ * All locks are non-blocking, which avoids deadlocks.
+ *
+ * All lock requests for a resource, identified by a hash string, will map
+ * to one bucket. Each bucket maps to one or several peer servers, each running memcached.
+ * A majority of peers must agree for a lock to be acquired.
+ *
+ * @ingroup LockManager
+ * @since 1.20
+ */
+class MemcLockManager extends QuorumLockManager {
+       /** @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 */
+       protected $bagOStuffs = array();
+       /** @var Array */
+       protected $serversUp = array(); // (server name => bool)
+
+       protected $lockExpiry; // integer; maximum time locks can be held
+       protected $session = ''; // string; random SHA-1 UUID
+       protected $wikiId = ''; // string
+
+       /**
+        * Construct a new instance from configuration.
+        *
+        * $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.
+        *     'wikiId'       : Wiki ID string that all resources are relative to. [optional]
+        *
+        * @param Array $config
+        */
+       public function __construct( array $config ) {
+               parent::__construct( $config );
+
+               // Sanitize srvsByBucket config to prevent PHP errors
+               $this->srvsByBucket = array_filter( $config['srvsByBucket'], 'is_array' );
+               $this->srvsByBucket = array_values( $this->srvsByBucket ); // consecutive
+
+               $memcConfig = isset( $config['memcConfig'] )
+                       ? $config['memcConfig']
+                       : array( 'class' => 'MemcachedPhpBagOStuff' );
+
+               foreach ( $config['lockServers'] as $name => $address ) {
+                       $params = array( 'servers' => array( $address ) ) + $memcConfig;
+                       $cache = ObjectCache::newFromParams( $params );
+                       if ( $cache instanceof MemcachedBagOStuff ) {
+                               $this->bagOStuffs[$name] = $cache;
+                       } else {
+                               throw new MWException(
+                                       'Only MemcachedBagOStuff classes are supported by MemcLockManager.' );
+                       }
+               }
+
+               $this->wikiId = isset( $config['wikiId'] ) ? $config['wikiId'] : wfWikiID();
+
+               $met = ini_get( 'max_execution_time' ); // this is 0 in CLI mode
+               $this->lockExpiry = $met ? 2*(int)$met : 2*3600;
+
+               $this->session = wfRandomString( 31 );
+       }
+
+       /**
+        * @see QuorumLockManager::getLocksOnServer()
+        * @return Status
+        */
+       protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $memc = $this->getCache( $lockSrv );
+               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+
+               // Lock all of the active lock record keys...
+               if ( !$this->acquireMutexes( $memc, $keys ) ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                       }
+                       return;
+               }
+
+               // Fetch all the existing lock records...
+               $lockRecords = $memc->getMulti( $keys );
+
+               $now = time();
+               // Check if the requested locks conflict with existing ones...
+               foreach ( $paths as $path ) {
+                       $locksKey = $this->recordKeyForPath( $path );
+                       $locksHeld = isset( $lockRecords[$locksKey] )
+                               ? $lockRecords[$locksKey]
+                               : array( self::LOCK_SH => array(), self::LOCK_EX => array() ); // init
+                       foreach ( $locksHeld[self::LOCK_EX] as $session => $expiry ) {
+                               if ( $expiry < $now ) { // stale?
+                                       unset( $locksHeld[self::LOCK_EX][$session] );
+                               } elseif ( $session !== $this->session ) {
+                                       $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                               }
+                       }
+                       if ( $type === self::LOCK_EX ) {
+                               foreach ( $locksHeld[self::LOCK_SH] as $session => $expiry ) {
+                                       if ( $expiry < $now ) { // stale?
+                                               unset( $locksHeld[self::LOCK_SH][$session] );
+                                       } elseif ( $session !== $this->session ) {
+                                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
+                                       }
+                               }
+                       }
+                       if ( $status->isOK() ) {
+                               // Register the session in the lock record array
+                               $locksHeld[$type][$this->session] = $now + $this->lockExpiry;
+                               // We will update this record if none of the other locks conflict
+                               $lockRecords[$locksKey] = $locksHeld;
+                       }
+               }
+
+               // If there were no lock conflicts, update all the lock records...
+               if ( $status->isOK() ) {
+                       foreach ( $lockRecords as $locksKey => $locksHeld ) {
+                               $memc->set( $locksKey, $locksHeld );
+                               wfDebug( __METHOD__ . ": acquired lock on key $locksKey.\n" );
+                       }
+               }
+
+               // Unlock all of the active lock record keys...
+               $this->releaseMutexes( $memc, $keys );
+
+               return $status;
+       }
+
+       /**
+        * @see QuorumLockManager::freeLocksOnServer()
+        * @return Status
+        */
+       protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
+               $status = Status::newGood();
+
+               $memc = $this->getCache( $lockSrv );
+               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+
+               // Lock all of the active lock record keys...
+               if ( !$this->acquireMutexes( $memc, $keys ) ) {
+                       foreach ( $paths as $path ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
+                       return;
+               }
+
+               // Fetch all the existing lock records...
+               $lockRecords = $memc->getMulti( $keys );
+
+               // Remove the requested locks from all records...
+               foreach ( $paths as $path ) {
+                       $locksKey = $this->recordKeyForPath( $path ); // lock record
+                       if ( !isset( $lockRecords[$locksKey] ) ) {
+                               continue; // nothing to do
+                       }
+                       $locksHeld = $lockRecords[$locksKey];
+                       if ( is_array( $locksHeld ) && isset( $locksHeld[$type] ) ) {
+                               unset( $locksHeld[$type][$this->session] );
+                               $ok = $memc->set( $locksKey, $locksHeld );
+                       } else {
+                               $ok = true;
+                       }
+                       if ( !$ok ) {
+                               $status->fatal( 'lockmanager-fail-releaselock', $path );
+                       }
+                       wfDebug( __METHOD__ . ": released lock on key $locksKey.\n" );
+               }
+
+               // Unlock all of the active lock record keys...
+               $this->releaseMutexes( $memc, $keys );
+
+               return $status;
+       }
+
+       /**
+        * @see QuorumLockManager::releaseAllLocks()
+        * @return Status
+        */
+       protected function releaseAllLocks() {
+               return Status::newGood(); // not supported
+       }
+
+       /**
+        * @see QuorumLockManager::isServerUp()
+        * @return bool
+        */
+       protected function isServerUp( $lockSrv ) {
+               return (bool)$this->getCache( $lockSrv );
+       }
+
+       /**
+        * Get the MemcachedBagOStuff object for a $lockSrv
+        *
+        * @param $lockSrv string Server name
+        * @return MemcachedBagOStuff|null
+        */
+       protected function getCache( $lockSrv ) {
+               $memc = null;
+               if ( isset( $this->bagOStuffs[$lockSrv] ) ) {
+                       $memc = $this->bagOStuffs[$lockSrv];
+                       if ( !isset( $this->serversUp[$lockSrv] ) ) {
+                               $this->serversUp[$lockSrv] = $memc->set( 'MemcLockManager:ping', 1, 1 );
+                               if ( !$this->serversUp[$lockSrv] ) {
+                                       trigger_error( __METHOD__ . ": Could not contact $lockSrv.", E_USER_WARNING );
+                               }
+                       }
+                       if ( !$this->serversUp[$lockSrv] ) {
+                               return null; // server appears to be down
+                       }
+               }
+               return $memc;
+       }
+
+       /**
+        * @param $path string
+        * @return string
+        */
+       protected function recordKeyForPath( $path ) {
+               $hash = LockManager::sha1Base36( $path );
+               list( $db, $prefix ) = wfSplitWikiID( $this->wikiId );
+               return wfForeignMemcKey( $db, $prefix, __CLASS__, 'locks', $hash );
+       }
+
+       /**
+        * @param $memc MemcachedBagOStuff
+        * @param $keys Array List of keys to acquire
+        * @return bool
+        */
+       protected function acquireMutexes( MemcachedBagOStuff $memc, array $keys ) {
+               $lockedKeys = array();
+
+               $start = microtime( true );
+               do {
+                       foreach ( array_diff( $keys, $lockedKeys ) as $key ) {
+                               if ( $memc->add( "$key:mutex", 1, 180 ) ) { // lock record
+                                       $lockedKeys[] = $key;
+                               }
+                       }
+               } while ( count( $lockedKeys ) < count( $keys ) && ( microtime( true ) - $start ) <= 6 );
+
+               if ( count( $lockedKeys ) != count( $keys ) ) {
+                       $this->releaseMutexes( $lockedKeys ); // failed; release what was locked
+                       return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * @param $memc MemcachedBagOStuff
+        * @param $keys Array List of acquired keys
+        * @return void
+        */
+       protected function releaseMutexes( MemcachedBagOStuff $memc, array $keys ) {
+               foreach ( $keys as $key ) {
+                       $memc->delete( "$key:mutex" );
+               }
+       }
+
+       /**
+        * Make sure remaining locks get cleared for sanity
+        */
+       function __destruct() {
+               while ( count( $this->locksHeld ) ) {
+                       foreach ( $this->locksHeld as $path => $locks ) {
+                               $this->doUnlock( array( $path ), self::LOCK_EX );
+                               $this->doUnlock( array( $path ), self::LOCK_SH );
+                       }
+               }
+       }
+}
index 2d6b218..065679a 100644 (file)
@@ -63,6 +63,11 @@ abstract class File {
 
        const DELETE_SOURCE = 1;
 
+       // Audience options for File::getDescription()
+       const FOR_PUBLIC = 1;
+       const FOR_THIS_USER = 2;
+       const RAW = 3;
+
        /**
         * Some member variables can be lazy-initialised using __get(). The
         * initialisation function for these variables is always a function named
@@ -1565,12 +1570,18 @@ abstract class File {
        }
 
        /**
-        * Get discription of file revision
+        * 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
         * @return string
         */
-       function getDescription() {
+       function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                return null;
        }
 
index 1fcd35b..5648261 100644 (file)
@@ -196,7 +196,7 @@ class ForeignAPIFile extends File {
        /**
         * @return null|string
         */
-       public function getDescription() {
+       public function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                return isset( $this->mInfo['comment'] ) ? strval( $this->mInfo['comment'] ) : null;
        }
 
index 1ba57a3..67768c4 100644 (file)
@@ -440,6 +440,7 @@ class LocalFile extends File {
 
                $dbw->update( 'image',
                        array(
+                               'img_size'       => $this->size, // sanity
                                'img_width'      => $this->width,
                                'img_height'     => $this->height,
                                'img_bits'       => $this->bits,
@@ -1466,9 +1467,17 @@ class LocalFile extends File {
        /**
         * @return string
         */
-       function getDescription() {
+       function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                $this->load();
-               return $this->description;
+               if ( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_COMMENT ) ) {
+                       return '';
+               } elseif ( $audience == self::FOR_THIS_USER
+                       && !$this->userCan( self::DELETED_COMMENT, $user ) )
+               {
+                       return '';
+               } else {
+                       return $this->description;
+               }
        }
 
        /**
@@ -1805,7 +1814,6 @@ class LocalFileDeleteBatch {
         * @return FileRepoStatus
         */
        function execute() {
-               global $wgUseSquid;
                wfProfileIn( __METHOD__ );
 
                $this->file->lock();
@@ -2370,26 +2378,33 @@ class LocalFileMoveBatch {
                $triplets = $this->getMoveTriplets();
                $triplets = $this->removeNonexistentFiles( $triplets );
 
-               // Copy the files into their new location
-               $statusMove = $repo->storeBatch( $triplets );
-               wfDebugLog( 'imagemove', "Moved files for {$this->file->getName()}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
-               if ( !$statusMove->isGood() ) {
-                       wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
-                       $this->cleanupTarget( $triplets );
-                       $statusMove->ok = false;
-                       return $statusMove;
-               }
-
                $this->file->lock(); // begin
+               // Rename the file versions metadata in the DB.
+               // This implicitly locks the destination file, which avoids race conditions.
+               // If we moved the files from A -> C before DB updates, another process could
+               // move files from B -> C at this point, causing storeBatch() to fail and thus
+               // cleanupTarget() to trigger. It would delete the C files and cause data loss.
                $statusDb = $this->doDBUpdates();
-               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
                if ( !$statusDb->isGood() ) {
                        $this->file->unlockAndRollback();
-                       // Something went wrong with the DB updates, so remove the target files
-                       $this->cleanupTarget( $triplets );
                        $statusDb->ok = false;
                        return $statusDb;
                }
+               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" );
+               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
 
                // Everything went ok, remove the source files
@@ -2506,6 +2521,7 @@ class LocalFileMoveBatch {
                // Create dest pairs from the triplets
                $pairs = array();
                foreach ( $triplets as $triplet ) {
+                       // $triplet: (old source virtual URL, dst zone, dest rel)
                        $pairs[] = array( $triplet[1], $triplet[2] );
                }
 
index 967cb9f..40d7dca 100644 (file)
@@ -94,7 +94,7 @@ class OldLocalFile extends LocalFile {
                        return false;
                }
        }
-       
+
        /**
         * Fields in the oldimage table
         * @return array
@@ -229,14 +229,15 @@ class OldLocalFile extends LocalFile {
                wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n");
                $dbw->update( 'oldimage',
                        array(
-                               '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 ),
@@ -292,20 +293,20 @@ class OldLocalFile extends LocalFile {
         */
        function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user, $flags = 0 ) {
                $this->lock();
-               
+
                $dstRel = 'archive/' . $this->getHashPath() . $archiveName;
                $status = $this->publishTo( $srcPath, $dstRel,
                        $flags & File::DELETE_SOURCE ? FileRepo::DELETE_SOURCE : 0
                );
-               
+
                if ( $status->isGood() ) {
                        if ( !$this->recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) ) {
                                $status->fatal( 'filenotfound', $srcPath );
                        }
                }
-               
+
                $this->unlock();
-               
+
                return $status;
        }
 
index 0c3876c..752e214 100644 (file)
@@ -132,7 +132,7 @@ class CliInstaller extends Installer {
         * @param $path String Full path to write LocalSettings.php to
         */
        public function writeConfigurationFile( $path ) {
-               $ls = new LocalSettingsGenerator( $this );
+               $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
                $ls->writeFile( "$path/LocalSettings.php" );
        }
 
index f9892c4..ac5b271 100644 (file)
@@ -835,7 +835,6 @@ Dit is waarskynlik te laag.
 Die installasie mag moontlik faal!",
        'config-xcache' => '[Http://trac.lighttpd.net/xcache/ XCache] is geïnstalleer',
        'config-apc' => '[Http://www.php.net/apc APC] is geïnstalleer',
-       'config-eaccel' => '[Http://eaccelerator.sourceforge.net/ eAccelerator] is geïnstalleer',
        'config-wincache' => '[Http://www.iis.net/download/WinCacheForPhp WinCache] is geïnstalleer',
        'config-diff3-bad' => 'GNU diff3 nie gevind nie.',
        'config-db-type' => 'Databasistipe:',
@@ -1110,7 +1109,7 @@ $messages['as'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Asturian (Asturianu) */
+/** Asturian (asturianu) */
 $messages['ast'] = array(
        'mainpagetext' => "'''MediaWiki instalóse correchamente.'''",
        'mainpagedocfooter' => "Visita la [//meta.wikimedia.org/wiki/Help:Contents Guía d'usuariu] pa saber cómo usar esti software wiki.
@@ -1127,7 +1126,7 @@ $messages['avk'] = array(
        'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
 );
 
-/** Azerbaijani (Azərbaycanca)
+/** Azerbaijani (azərbaycanca)
  * @author Cekli829
  * @author Vago
  * @author Wertuose
@@ -1211,7 +1210,7 @@ $messages['bcl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Belarusian (Ð\91еларуская) */
+/** Belarusian (беларуская) */
 $messages['be'] = array(
        'mainpagetext' => "'''MediaWiki паспяхова ўсталяваная.'''",
        'mainpagedocfooter' => 'Гл. [//meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыстальніка (англ.)] па далейшыя звесткі аб карыстанні вікі-праграмамі.
@@ -1774,7 +1773,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]',
 );
 
-/** Bulgarian (Ð\91ългарски)
+/** Bulgarian (български)
  * @author DCLXVI
  */
 $messages['bg'] = array(
@@ -2424,7 +2423,7 @@ $messages['bn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিস্ট]',
 );
 
-/** Bishnupria Manipuri (à¦\87মার à¦ à¦¾à¦°/বিষà§\8dণà§\81পà§\8dরিয়া à¦®à¦£à¦¿à¦ªà§\81রà§\80) */
+/** Bishnupria Manipuri (বিষ্ণুপ্রিয়া মণিপুরী) */
 $messages['bpy'] = array(
        'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইন্সটল ইল.'''",
        'mainpagedocfooter' => 'উইকি সফটৱ্যার এহান আতানির বারে দরকার ইলে [//meta.wikimedia.org/wiki/Help:Contents আতাকুরার গাইড]হানর পাঙলাক নেগা।
@@ -2436,7 +2435,7 @@ $messages['bpy'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়া উইকির ফঙপার বারে মেইলর তালিকাহান]',
 );
 
-/** Breton (Brezhoneg)
+/** Breton (brezhoneg)
  * @author Fohanno
  * @author Fulup
  * @author Gwendal
@@ -2826,7 +2825,7 @@ Gwiriit hag-eñ e c'hall an implijer « $1 » skrivañ er brastres « $2 ».",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Bosnian (Bosanski)
+/** Bosnian (bosanski)
  * @author CERminator
  */
 $messages['bs'] = array(
@@ -2882,7 +2881,6 @@ Ako se sami kompajlirali PHP, podesite ga sa omogućenim klijentom baze podataka
 Ako ste instalirali PHP iz Debian ili Ubuntu paketa, možda morate instalirati i modul php5-mysql.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je instaliran',
        'config-apc' => '[http://www.php.net/apc APC] je instaliran',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] je instaliran',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran',
        'config-diff3-bad' => 'GNU diff3 nije pronađen.',
        'config-db-type' => 'Vrsta baze podataka:',
@@ -2912,7 +2910,7 @@ Ovo '''nije preporučeno''' osim ako nemate problema s vašom wiki.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
 );
 
-/** Catalan (Català) */
+/** Catalan (català) */
 $messages['ca'] = array(
        'mainpagetext' => "'''El programari del MediaWiki s'ha instaŀlat correctament.'''",
        'mainpagedocfooter' => "Consulteu la [//meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.
@@ -2949,7 +2947,7 @@ $messages['ceb'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce  Mailing list sa mga release sa MediaWiki]',
 );
 
-/** Sorani (کوردی)
+/** Sorani Kurdish (کوردی)
  * @author Asoxor
  */
 $messages['ckb'] = array(
@@ -2998,7 +2996,7 @@ $messages['crh-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ янъы версияларынынъ чыкъувындан хабер йиберюв].",
 );
 
-/** Czech (Ä\8cesky)
+/** Czech (Ä\8desky)
  * @author Danny B.
  * @author Mormegil
  */
@@ -3562,19 +3560,21 @@ $messages['cv'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верси тухнине пĕлтерекен рассылка].',
 );
 
-/** Welsh (Cymraeg) */
+/** Welsh (Cymraeg)
+ * @author Xxglennxx
+ */
 $messages['cy'] = array(
        'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
        'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [//meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
 
 ==Cychwyn arni==
 
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr gosodiadau wrth gyflunio]
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr osodiadau wrth gyflunio]
 * [//www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]',
 );
 
-/** Danish (Dansk)
+/** Danish (dansk)
  * @author Peter Alberti
  */
 $messages['da'] = array(
@@ -3735,7 +3735,7 @@ Miniaturansichten von Bildern sind daher nicht möglich.',
 Der Installationsvorgang wurde daher abgebrochen.",
        'config-no-cli-uri' => "'''Warnung''': Es wurde kein Pfad zum Skipt (--scriptpath) angegeben. Daher wird der Standardpfad genutzt: <code>$1</code>.",
        'config-using-server' => 'Der Servername „<nowiki>$1</nowiki>“ wird verwendet.',
-       'config-using-uri' => 'Verwende Server-URL „<nowiki>$1$2</nowiki>“.',
+       'config-using-uri' => 'Die Server-URL „<nowiki>$1$2</nowiki>“ wird verwendet.',
        'config-uploads-not-safe' => "'''Warnung:''' Das Standardverzeichnis für hochgeladene Dateien <code>$1</code> ist für die willkürliche Ausführung von Skripten anfällig.
 Obwohl MediaWiki die hochgeladenen Dateien auf Sicherheitsrisiken überprüft, wird dennoch dringend empfohlen diese [//www.mediawiki.org/wiki/Manual:Security#Upload_security Sicherheitslücke] zu schließen, bevor das Hochladen von Dateien aktiviert wird.",
        'config-no-cli-uploads-check' => "'''Warnung''': Das Standardverzeichnis für hochgeladene Dateien (<code>$1</code>) wird, während der Installation über die Kommandozeile, nicht auf Sicherheitsanfälligkeiten hinsichtlich willkürlicher Skriptausführungen geprüft.",
@@ -4148,8 +4148,11 @@ $messages['de-formal'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
 );
 
-/** Zazaki (Zazaki) */
+/** Zazaki (Zazaki)
+ * @author Mirzali
+ */
 $messages['diq'] = array(
+       'config-page-name' => 'Name',
        'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
        'mainpagedocfooter' => 'Seba gurenayış u eyarkerdışê Wiki-Softwarey [//meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
 
@@ -4216,7 +4219,7 @@ $messages['eo'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki dissendolisto pri anoncoj] (angla)",
 );
 
-/** Spanish (Español)
+/** Spanish (español)
  * @author Armando-Martin
  * @author Crazymadlover
  * @author Danke7
@@ -4278,7 +4281,7 @@ Verifica tu php.ini y comprueba que <code>session.save_path</code> está estable
        'config-help-restart' => '¿Deseas borrar todos los datos que has ingresado hasta ahora y reiniciar el proceso de instalación desde el principio?',
        'config-restart' => 'Sí, reiniciarlo',
        'config-welcome' => '=== Comprobación del entorno ===
-Se realiza comprobacioens básicas para ver si el entorno es adecuado para la instalación de MediaWiki.
+Se realiza comprobaciones básicas para ver si el entorno es adecuado para la instalación de MediaWiki.
 Deberás suministrar los resultados de tales comprobaciones si necesitas ayuda durante la instalación.',
        'config-copyright' => "=== Derechos de autor y Términos de uso ===
 
@@ -4766,14 +4769,14 @@ Cuando lo haya hecho, usted puede '''[$2  entrar en su wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
 );
 
-/** Estonian (Eesti) */
+/** Estonian (eesti) */
 $messages['et'] = array(
        'mainpagetext' => "'''MediaWiki tarkvara on edukalt paigaldatud.'''",
        'mainpagedocfooter' => 'Juhiste saamiseks kasutamise ning konfigureerimise kohta vaata palun inglisekeelset [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentatsiooni liidese kohaldamisest]
 ning [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].',
 );
 
-/** Basque (Euskara)
+/** Basque (euskara)
  * @author An13sa
  */
 $messages['eu'] = array(
@@ -4806,7 +4809,6 @@ $messages['eu'] = array(
        'config-env-php' => 'PHP $1 instalatuta dago.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalatuta dago',
        'config-apc' => '[http://www.php.net/apc APC] instalatuta dago',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] instalatuta dago',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] instalatuta dago',
        'config-diff3-bad' => 'GNU diff3 ez da aurkitu.',
        'config-db-type' => 'Datu-base mota:',
@@ -4855,7 +4857,7 @@ $messages['eu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]',
 );
 
-/** Extremaduran (Estremeñu) */
+/** Extremaduran (estremeñu) */
 $messages['ext'] = array(
        'mainpagetext' => "'''MeyaGüiqui s'á istalau satihatoriamenti.'''",
        'mainpagedocfooter' => "Consurta la [//meta.wikimedia.org/wiki/Help:Contents User's Guide] pa sabel mas al tentu el huncionamientu el software güiqui.
@@ -4917,7 +4919,7 @@ $messages['fa'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce فهرست پست الکترونیکی نسخه‌های مدیاویکی]',
 );
 
-/** Finnish (Suomi)
+/** Finnish (suomi)
  * @author Centerlink
  * @author Crt
  * @author Nike
@@ -5099,12 +5101,12 @@ Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvitta
 Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).",
 );
 
-/** Faroese (Føroyskt) */
+/** Faroese (føroyskt) */
 $messages['fo'] = array(
        'mainpagetext' => "'''Innlegging av Wiki-ritbúnaði væleydnað.'''",
 );
 
-/** French (Français)
+/** French (français)
  * @author Aadri
  * @author Crochet.david
  * @author Gomoko
@@ -5114,6 +5116,7 @@ $messages['fo'] = array(
  * @author Jean-Frédéric
  * @author McDutchie
  * @author Peter17
+ * @author Reedy
  * @author Sherbrooke
  * @author Urhixidur
  * @author Verdy p
@@ -5185,26 +5188,26 @@ Ce programme est distribué dans l’espoir qu’il sera utile, mais '''sans auc
 Voir la Licence Publique Générale GNU pour plus de détails.
 
 Vous devriez avoir reçu <doclink href=Copying>une copie de la Licence Publique Générale GNU</doclink> avec ce programme ; dans le cas contraire, écrivez à la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ou [http://www.gnu.org/copyleft/gpl.html lisez-le en ligne].",
-       'config-sidebar' => '* [//www.mediawiki.org MediaWiki Accueil]
+       'config-sidebar' => '* [//www.mediawiki.org Accueil MediaWiki]
 * [//www.mediawiki.org/wiki/Help:Contents Guide de l’utilisateur]
 * [//www.mediawiki.org/wiki/Manual:Contents Guide de l’administrateur]
 * [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
 ----
 * <doclink href=Readme>Lisez-moi</doclink>
-* <doclink href=ReleaseNotes>Notes de pblication</doclink>
+* <doclink href=ReleaseNotes>Notes de publication</doclink>
 * <doclink href=Copying>Copie</doclink>
 * <doclink href=UpgradeDoc>Mise à jour</doclink>',
        'config-env-good' => 'L’environnement a été vérifié.
 Vous pouvez installer MediaWiki.',
        'config-env-bad' => 'L’environnement a été vérifié.
-vous ne pouvez pas installer MediaWiki.',
+Vous ne pouvez pas installer MediaWiki.',
        'config-env-php' => 'PHP $1 est installé.',
        'config-env-php-toolow' => 'PHP $1 est installé.
 Cependant, MediaWiki requiert PHP $2 ou plus haut.',
        'config-unicode-using-utf8' => 'Utilisation de utf8_normalize.so par Brion Vibber pour la normalisation Unicode.',
        'config-unicode-using-intl' => "Utilisation de [http://pecl.php.net/intl l'extension PECL intl] pour la normalisation Unicode.",
        'config-unicode-pure-php-warning' => "'''Attention''': L'[http://pecl.php.net/intl extension PECL intl] n'est pas disponible pour la normalisation d’Unicode, retour à la version lente implémentée en PHP.
-Si vous utilisez un site web très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
+Si votre site web sera très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
        'config-unicode-update-warning' => "'''Attention''': La version installée du ''wrapper'' de normalisation Unicode utilise une vieille version de la [http://site.icu-project.org/ bibliothèque logicielle ''ICU Project''].
 Vous devriez faire une [//www.mediawiki.org/wiki/Unicode_normalization_considerations mise à jour] (texte en anglais) si l'usage d'Unicode vous semble important.",
        'config-no-db' => "Impossible de trouver un pilote de base de données approprié ! Vous devez installer un pilote pour PHP. Ces types de bases de données sont reconnus : $1.
@@ -5260,8 +5263,8 @@ La miniaturisation d'images sera désactivé.",
        'config-no-uri' => "'''Erreur :''' Impossible de déterminer l'URI du script actuel.
 Installation avortée.",
        'config-no-cli-uri' => "'''Attention''': Aucun --scriptpath n'a été spécifié; <code>$1</code> sera utilisé par défaut",
-       'config-using-server' => 'En utilisant le nom du serveur "<nowiki>$1</nowiki>".',
-       'config-using-uri' => 'Utilise l\'URL du serveur "<nowiki>$1$2</nowiki>".',
+       'config-using-server' => 'Utilisation du nom de serveur "<nowiki>$1</nowiki>".',
+       'config-using-uri' => 'Utilisation de l\'URL de serveur "<nowiki>$1$2</nowiki>".',
        'config-uploads-not-safe' => "'''Attention:''' Votre répertoire par défaut pour les téléchargements, <code>$1</code>, est vulnérable, car il peut exécuter n'importe quel script.
 Bien que MediaWiki vérifie tous les fichiers téléchargés, il est fortement recommandé de [//www.mediawiki.org/wiki/Manual:Security#Upload_security fermer cette vulnérabilité de sécurité] (texte en anglais) avant d'activer les téléchargements.",
        'config-no-cli-uploads-check' => "'''Attention:''' Votre répertoire par défaut pour les imports(<code>$1</code>) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.",
@@ -5375,7 +5378,7 @@ Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous
        'config-invalid-schema' => 'Schéma invalide pour MediaWiki « $1 ».
 Utilisez seulement des lettres latines (a-z, A-Z), des chiffres (0-9) et des caractères de soulignement (_).',
        'config-db-sys-create-oracle' => "L'installateur ne reconnaît que les compte SYSDBA lors de la création d'un nouveau compte.",
-       'config-db-sys-user-exists-oracle' => 'Le compte « $1 » existe déjà. Un SYSDBA peut seulement servir à créer un nouveau comtpe.',
+       'config-db-sys-user-exists-oracle' => 'Le compte « $1 » existe déjà. Un SYSDBA peut seulement servir à créer un nouveau compte.',
        'config-postgres-old' => 'PostgreSQL $1 ou version ultérieure est requis, vous avez $2.',
        'config-sqlite-name-help' => "Choisir un nom qui identifie votre wiki.
 Ne pas utiliser des espaces ou des traits d'union.
@@ -5436,7 +5439,7 @@ Le compte que vous spécifiez ici doit déjà exister.",
  * il supporte à peine la simultanéité en raison de verrouillage de table
  * il est plus sujet à la corruption que les autres moteurs
  * le codebase MediaWiki ne gère pas toujours MyISAM comme il se doit
-Si votre installation MySQL supporte InnoDB, il est fortement recommandé que vous le choisissez plutôt. Si votre installation MySQL ne supporte pas les tables InnoDB, il est peut-être temps de faire une une mise à niveau.",
+Si votre installation MySQL supporte InnoDB, il est fortement recommandé que vous le choisissez plutôt. Si votre installation MySQL ne supporte pas les tables InnoDB, il est peut-être temps de faire une mise à niveau.",
        'config-mysql-engine-help' => "'''InnoDB''' est presque toujours la meilleure option, car il supporte bien l'[http://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d%27exploitation ordonnancement].
 
 '''MyISAM''' peut être plus rapide dans les installations monoposte ou en lecture seule. Les bases de données MyISAM ont tendance à se corrompre plus souvent que celles d'InnoDB.",
@@ -5490,7 +5493,7 @@ Vous pouvez passer la configuration restante et installer immédiatement le wiki
        'config-optional-skip' => 'J’en ai assez, installer simplement le wiki.',
        'config-profile' => 'Profil des droits d’utilisateurs :',
        'config-profile-wiki' => 'Wiki traditionnel',
-       'config-profile-no-anon' => 'Création de comte requise',
+       'config-profile-no-anon' => 'Création de compte requise',
        'config-profile-fishbowl' => 'Éditeurs autorisés seulement',
        'config-profile-private' => 'Wiki privé',
        'config-profile-help' => "Les wikis fonctionnent mieux lorsque vous laissez le plus de personnes possible le modifier.
@@ -5527,7 +5530,7 @@ C'est une licence valide, mais elle est difficile à comprendre. De plus, elle p
        'config-enable-email' => 'Activer les courriels sortants',
        'config-enable-email-help' => 'Si vous souhaitez utiliser le courriel, vous devez [http://www.php.net/manual/en/mail.configuration.php configurer des paramètres PHP] (texte en anglais).
 Si vous ne voulez pas du service de courriel, vous pouvez le désactiver ici.',
-       'config-email-user' => 'Activer les courriels de utilisateur à utilisateur',
+       'config-email-user' => "Activer les courriers électroniques d'utilisateur à utilisateur",
        'config-email-user-help' => "Permet à tous les utilisateurs d'envoyer des courriels à d'autres utilisateurs si cela est activé dans leurs préférences.",
        'config-email-usertalk' => 'Activer la notification des pages de discussion des utilisateurs',
        'config-email-usertalk-help' => 'Permet aux utilisateurs de recevoir une notification en cas de modification de leurs pages de discussion, si cela est activé dans leurs préférences.',
@@ -5599,7 +5602,7 @@ Si vous voulez apporter des modifications, appuyez sur Retour.",
        'config-install-pg-schema-failed' => "Échec lors de la création des tables.
 Assurez-vous que l'utilisateur « $1 » peut écrire selon le schéma « $2 ».",
        'config-install-pg-commit' => 'Validation des modifications',
-       'config-install-pg-plpgsql' => 'Vérification du language PL/pgSQL',
+       'config-install-pg-plpgsql' => 'Vérification du langage PL/pgSQL',
        'config-pg-no-plpgsql' => 'Vous devez installer le langage PL/pgSQL dans la base de données $1',
        'config-pg-no-create-privs' => "Le compte que vous avez spécifié pour l'installation n'a pas suffisamment de privilèges pour créer un compte.",
        'config-pg-not-in-role' => "Le compte que vous avez spécifié pour l'utilisateur web existe déjà !
@@ -5654,7 +5657,7 @@ Lorsque c'est fait, vous pouvez '''[$2 accéder à votre wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]',
 );
 
-/** Cajun French (Français cadien) */
+/** Cajun French (français cadien) */
 $messages['frc'] = array(
        'mainpagetext' => "'''Vous avez bien installé MediaWiki.'''",
        'mainpagedocfooter' => 'Lisez la [//meta.wikimedia.org/wiki/Help:Contents Guide des Useurs] pour apprendre à user le wiki software.
@@ -5666,7 +5669,7 @@ $messages['frc'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Liste à Malle]',
 );
 
-/** Franco-Provençal (Arpetan)
+/** Franco-Provençal (arpetan)
  * @author ChrisPtDe
  */
 $messages['frp'] = array(
@@ -5840,7 +5843,7 @@ $messages['frr'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
 );
 
-/** Friulian (Furlan) */
+/** Friulian (furlan) */
 $messages['fur'] = array(
        'mainpagetext' => "'''MediaWiki e je stade instalade cun sucès.'''",
 );
@@ -5876,7 +5879,7 @@ $messages['gag'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Simplified Gan script (‪赣语(简体)‬) */
+/** Simplified Gan script (‪赣语(简体)‬) */
 $messages['gan-hans'] = array(
        'mainpagetext' => "'''安装正MediaWiki喽。'''",
        'mainpagedocfooter' => '参看[//meta.wikimedia.org/wiki/Help:Contents 用户指南]里头会话到啷用wiki软件
@@ -5888,7 +5891,7 @@ $messages['gan-hans'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布email清单]',
 );
 
-/** Traditional Gan script (‪贛語(繁體)‬) */
+/** Traditional Gan script (‪贛語(繁體)‬) */
 $messages['gan-hant'] = array(
        'mainpagetext' => "'''安裝正MediaWiki嘍。'''",
        'mainpagedocfooter' => '參看[//meta.wikimedia.org/wiki/Help:Contents 用戶指南]裡頭會話到啷用wiki軟件
@@ -7078,7 +7081,7 @@ chmod a+w $3</pre></div>',
        'config-cache-options' => 'הגדרות למטמון עצמים (object caching):',
        'config-cache-help' => 'מטמון עצמים משמש לשיפור המהירות של מדיה־ויקי על־ידי שמירה של נתונים שהשימוש בהם נפוץ במטמון.
 לאתרים בינוניים וגדולים כדאי מאוד להפעיל את זה, וגם אתרים קטנים ייהנו מזה.',
-       'config-cache-none' => 'ללא מטמון (שום יכולת אינה מוסרת, אבל הביצועים באתרים גדולים ייפגעו)',
+       'config-cache-none' => 'ללא מטמון (שום יכולת אינה מוּסרת, אבל הביצועים באתרים גדולים ייפגעו)',
        'config-cache-accel' => 'מטמון עצמים (object caching) של PHP&rlm; (APC&rlm;, XCache או WinCache)',
        'config-cache-memcached' => 'להשתמש ב־Memcached (דורש התקנות והגדרות נוספות)',
        'config-memcached-servers' => 'שרתי Memcached:',
@@ -7136,7 +7139,7 @@ chmod a+w $3</pre></div>',
        'config-install-sysop' => 'יצירת חשבון מפעיל',
        'config-install-subscribe-fail' => 'הרישום ל־mediawiki-announce לא הצליח: $1',
        'config-install-subscribe-notpossible' => 'cURL אינה מותקנת ו־allow_url_fopen אינה זמינה.',
-       'config-install-mainpage' => '×\99צ×\99רת ×\93×£ ×¨×\90ש×\99 ×¢×\9d ×ª×\95×\9b×\9f ×\9cפ×\99 ×\91ררת ×\9e×\97×\93×\9c.',
+       'config-install-mainpage' => '×\99צ×\99רת ×\93×£ ×¨×\90ש×\99 ×¢×\9d ×ª×\95×\9b×\9f ×\94ת×\97×\9cת×\99.',
        'config-install-extension-tables' => 'יצירת טבלאות להרחבות מופעלות',
        'config-install-mainpage-failed' => 'לא הצליחה הכנסת דף ראשי: $1.',
        'config-install-done' => "'''מזל טוב!'''
@@ -7203,7 +7206,7 @@ $messages['hil'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat kon may paguha-on nga MediaWiki]",
 );
 
-/** Croatian (Hrvatski) */
+/** Croatian (hrvatski) */
 $messages['hr'] = array(
        'mainpagetext' => "'''Softver MediaWiki je uspješno instaliran.'''",
        'mainpagedocfooter' => 'Pogledajte [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi sučelja]
@@ -7561,7 +7564,7 @@ $messages['ht'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis diskisyon ki parèt sou MediaWiki]',
 );
 
-/** Hungarian (Magyar)
+/** Hungarian (magyar)
  * @author Dani
  * @author Glanthor Reviol
  */
@@ -8096,7 +8099,7 @@ $messages['hy'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Interlingua (Interlingua)
+/** Interlingua (interlingua)
  * @author McDutchie
  */
 $messages['ia'] = array(
@@ -9201,7 +9204,7 @@ $messages['io'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
 );
 
-/** Icelandic (Ã\8dslenska) */
+/** Icelandic (íslenska) */
 $messages['is'] = array(
        'mainpagetext' => "'''Uppsetning á MediaWiki heppnaðist.'''",
        'mainpagedocfooter' => 'Ráðfærðu þig við [//meta.wikimedia.org/wiki/Help:Contents Notandahandbókina] fyrir frekari upplýsingar um notkun wiki-hugbúnaðarins.
@@ -9213,7 +9216,7 @@ $messages['is'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Póstlisti MediaWiki-útgáfa]',
 );
 
-/** Italian (Italiano)
+/** Italian (italiano)
  * @author Beta16
  * @author Karika
  */
@@ -9279,7 +9282,6 @@ Non è possibile installare MediaWiki.",
 Tuttavia, MediaWiki richiede PHP $2 o superiore.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] è installato',
        'config-apc' => '[http://www.php.net/apc APC] è installato',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] è installato',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] è installato',
        'config-diff3-bad' => 'GNU diff3 non trovato.',
        'config-db-type' => 'Tipo di database:',
@@ -9314,7 +9316,7 @@ Specificare un nome utente diverso.',
        'config-license-cc-0' => 'Creative Commons Zero (pubblico dominio)',
        'config-license-gfdl' => 'GNU Free Documentation License 1.3 o versioni successive',
        'config-license-pd' => 'Pubblico dominio',
-       'config-email-settings' => 'Impostazioni e-mail',
+       'config-email-settings' => 'Impostazioni email',
        'config-install-interwiki-list' => 'Impossibile leggere il file <code>interwiki.list</code>.',
        'config-install-stats' => 'Inizializzazione delle statistiche',
        'config-install-keys' => 'Generazione delle chiavi segrete',
@@ -9341,6 +9343,7 @@ I seguenti collegamenti sono in lingua inglese:
  * @author Mizusumashi
  * @author Ninomy
  * @author Ohgi
+ * @author Shirayuki
  * @author Whym
  * @author Yanajin66
  * @author 青子守歌
@@ -9671,7 +9674,7 @@ chmod a+w $3</pre>',
        'config-admin-password-blank' => '管理者アカウントのパスワードを入力してください。',
        'config-admin-password-same' => 'ユーザ名と同じパスワードは使えません。',
        'config-admin-password-mismatch' => '入力された二つのパスワードが一致しません。',
-       'config-admin-email' => 'Eメールアドレス:',
+       'config-admin-email' => 'メールアドレス:',
        'config-admin-email-help' => '電子メールアドレスを入力してください。他のユーザーからの電子メールの受け取りと、パスワードのリセット、ウォッチリストに登録したページの更新通知に用いられます。',
        'config-admin-error-user' => '"<nowiki>$1</nowiki>"という名前の管理者を作成する際に内部エラーが発生しました。',
        'config-admin-error-password' => '管理者"<nowiki>$1</nowiki>"のパスワードを設定する際に内部エラーが発生しました: <pre>$2</pre>',
@@ -9836,7 +9839,7 @@ $messages['jam'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Jutish (Jysk)
+/** Jutish (jysk)
  * @author Huslåke
  */
 $messages['jut'] = array(
@@ -9988,11 +9991,22 @@ $messages['kn'] = array(
 
 /** Korean (한국어)
  * @author Kwj2772
+ * @author 아라
  */
 $messages['ko'] = array(
-       'config-desc' => '미ë\94\94ì\96´ì\9c\84í\82¤ ì\9d¸ì\8a¤í\86¨ë\9f¬',
-       'config-title' => '미디어위키 $1 설치',
+       'config-desc' => 'MediaWiki ì\84¤ì¹\98 ë§\88ë²\95ì\82¬',
+       'config-title' => 'MediaWiki $1 설치',
        'config-information' => '정보',
+       'config-localsettings-upgrade' => '<code>LocalSettings.php</code> 파일이 감지되었습니다.
+이 설치를 업그레이드하려면 아래 상자에 <code>$wgUpgradeKey</code>의 값을 입력해주세요.
+LocalSettings.php에 찾으세요.',
+       'config-localsettings-cli-upgrade' => 'LocalSettings.php 파일이 감지되었습니다. 이 설치를 업그레이드하려면 update.php를 대신 실행하세요',
+       'config-localsettings-key' => '업그레이드 키:',
+       'config-localsettings-badkey' => '제공한 키가 잘못되었습니다.',
+       'config-upgrade-key-missing' => 'MediaWiki의 기존 설치가 감지되었습니다.
+이 설치를 업그레이드하려면 LocalSettings.php의 아래에 다음 줄을 넣으세요:
+
+$1',
        'config-wiki-language' => '위키 언어:',
        'config-back' => '← 뒤로',
        'config-continue' => '계속 →',
@@ -10001,39 +10015,137 @@ $messages['ko'] = array(
        'config-page-name' => '이름',
        'config-page-install' => '설치',
        'config-page-complete' => '완료!',
-       'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
+       'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
        'config-restart' => '예, 다시 시작합니다.',
        'config-welcome' => '=== 사용 환경 검사 ===
 이 환경이 미디어위키 설치에 적합할 지 기본 검사를 실행합니다.
 설치 중 도움이 필요하다면 이 검사 결과를 함께 제공해주셔야 합니다.',
-       'config-env-php' => 'PHP $1가 설치되었습니다.',
-       'config-env-php-toolow' => 'PHP $1가 설치되었습니다.
+       'config-copyright' => "=== 저작권 및 사용 약관 ===
+
+$1
+
+이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.
+
+이 프로그램이 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''.
+자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.
+
+당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+       'config-env-good' => '환경이 확인되었습니다.
+MediaWiki를 설치할 수 있습니다.',
+       'config-env-bad' => '환경이 확인되었습니다.
+MediaWiki를 설치할 수 없습니다.',
+       'config-env-php' => 'PHP $1(이)가 설치되었습니다.',
+       'config-env-php-toolow' => 'PHP $1(이)가 설치되었습니다.
 하지만 미디어위키는 PHP $2 이상이 필요합니다.',
+       'config-ctype' => "'''심각''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]에 대해 지원하여 컴파일해야 합니다.",
+       'config-apc' => '[http://www.php.net/apc APC]가 설치되었습니다',
+       'config-diff3-bad' => 'GNU diff3를 찾을 수 없습니다.',
+       'config-imagemagick' => 'ImageMagick를 찾았습니다: <code>$1</code>.
+올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
+       'config-gd' => '내장된 GD 그래픽 라이브러리를 찾았습니다.
+올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
+       'config-brokenlibxml' => '시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 MediaWiki나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.
+PHP 5.2.9 이후와 libxml2 2.7.3 이후로 업그레이드하세요 ([//bugs.php.net/bug.php?id=45996 PHP에 제기한 버그]).
+설치가 중단되었습니다.',
        'config-db-type' => '데이터베이스 종류:',
        'config-db-host' => '데이터베이스 호스트:',
+       'config-db-host-help' => '데이터베이스 서버가 다른 서버에 있을 경우 여기에 호스트 이름이나 IP 주소를 입력하세요.
+
+웹 호스팅을 공유하여 사용하는 경우 호스팅 공급자는 당신에게 이들 설명서의 올바른 호스트 이름을 표기해야 합니다.
+
+윈도 서버에 설치하고 MySQL을 사용할 경우 "localhost"는 서버 이름으로 작동하지 않을 수 있습니다. 그렇지 않으면 로컬 IP 주소로 "127.0.0.1"를 시도하세요.
+
+PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.',
+       'config-db-host-oracle' => '데이터베이스 TNS:',
+       'config-db-host-oracle-help' => '유효한 [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 로컬 연결 이름]을 입력하세요. tnsnames.ora 파일이 이 설치에 보여야 합니다.<br />10g 이후의 클라이언트 라이브러리를 사용하는 경우 [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 쉬운 연결] 네이밍 메소드도 사용할 수 있습니다.',
+       'config-db-wiki-settings' => '이 위키 식별',
        'config-db-name' => '데이터베이스 이름:',
+       'config-db-name-help' => '위키를 식별하기 위한 이름을 선택하세요.
+이는 공백이 없어야 합니다.
+
+웹 호스팅을 공유해 사용하는 경우 호스팅 제공 업체도 당신에게 제어판을 통해 데이터베이스를 사용하거나 만들 수 있도록 특정 데이터베이스 이름을 제공합니다.',
+       'config-db-name-oracle' => '데이터베이스 스케마:',
+       'config-db-account-oracle-warn' => '데이터베이스 백엔드로 오라클을 설치하기 위해 지원하는 세 가지 시나리오가 있습니다:
+
+설치 과정의 일부로 데이터베이스 계정을 만들려면 설치를 위해 데이터베이스 계정으로 SYSDBA 역할을 가진 계정을 제공하고 웹 액세스 계정에 대해 원하는 자격 증명을 지정하세요, 그렇지 않으면 수동으로 웹 액세스 계정을 만들 수 있으며 (필요한 경우 권한 스키마 개체를 만들어야 합니다) 또는 다른 계정 두 개를 만들고 권한을 가진 하나의 웹 액세스를 위한 제한된 하나를 제공할 수 있습니다.
+
+필요한 권한을 가진 계정을 만드는 스크립트는 이 설치의 "maintenance/oracle/" 디렉토리에서 찾을 수 있습니다. 제한된 계정을 사용하면 기본 계정으로 모든 관리 기능을 비활성화할 것을 염두해 두십시오.',
+       'config-db-install-account' => '설치를 위한 사용자 계정',
        'config-db-username' => '데이터베이스 사용자 이름:',
        'config-db-password' => '데이터베이스 비밀번호:',
+       'config-db-password-empty' => '새 데이터베이스 사용자의 비밀번호를 입력하세요: $1.
+비밀번호 없이 사용자를 만들 수도 있지만 이는 안전하지 않습니다.',
+       'config-db-install-username' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름을 입력하세요.
+이는 MediaWiki 계정의 사용자 이름이 아닌 데이터베이스에 대한 사용자 이름입니다.',
+       'config-db-install-password' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 비밀번호을 입력하세요. 이는 MediaWiki 계정의 비밀번호가 아닌 데이터베이스에 대한 비밀번호입니다.',
+       'config-db-install-help' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름과 비밀번호를 입력하세요.',
+       'config-db-account-lock' => '정상적으로 작동하는 동안 같은 사용자 이름과 비밀번호를 사용함',
+       'config-db-wiki-account' => '정상적인 작동을 위한 사용자 계정',
+       'config-db-wiki-help' => '정상적인 위키 작업 동안 데이터베이스에 연결하는 데 사용할 사용자 이름과 비밀 번호를 입력하세요.
+계정이 존재하지 않고 설치 계정에 충분한 권한이 있는 경우 이 사용자 계정은 위키를 작동하는 데 필요한 최소 권한으로 만들어집니다.',
        'config-db-prefix' => '데이터베이스 테이블 접두어:',
+       'config-db-prefix-help' => '여러 위키 사이 또는 MediaWiki와 다른 웹 응용 프로그램 사이에서 하나의 데이터베이스를 공유해야 하는 경우, 충돌을 피하기 위해 모든 테이블 이름에 접두어를 추가하도록 선택할 수 있습니다.
+공백을 사용하지 마세요.
+
+이 필드는 일반적으로 비어있습니다.',
+       'config-db-charset' => '데이터베이스 문자 집합',
        'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 바이너리',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+       'config-charset-mysql4' => 'MySQL 4.0 UTF-8 하위 호환성',
+       'config-charset-help' => "'''경고:''' MySQL 4.1에서 '''UTF-8 하위 호환성'''을 사용하고 나서 <code>mysqldump</code>로 데이터베이스에 백업한다면 이는 모든 ASCII가 아닌 문자를 파괴하고 손상한 백업을 되돌릴 수 없습니다!
+
+'''바이너리 모드'''에서는 MediaWiki는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.
+이는 MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.
+'''UTF-8 모드'''에서는 MySQL은 데이터를 설정하는 어떤 문자열인지를 알 것이며, 표현하고 적절하게 그것을 변환할 수 있지만
+[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 기본 다국어 공간] 상의 문자를 저장하지 못하게 될 수 있습니다.",
+       'config-db-port' => '데이터베이스 포트:',
+       'config-db-schema' => 'MediaWiki에 대한 스케마:',
+       'config-db-schema-help' => '이 스케마는 보통 괜찮습니다.
+필요로 알고 있을 경우에만 이를 바꿉니다.',
        'config-header-mysql' => 'MySQL 설정',
        'config-header-postgres' => 'PostgreSQL 설정',
        'config-header-sqlite' => 'SQLite 설정',
+       'config-header-oracle' => '오라클 설정',
+       'config-header-ibm_db2' => 'IBM DB2 설정',
+       'config-connection-error' => '$1.
+
+호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.',
+       'config-db-sys-create-oracle' => '설치 마법사는 새 계정을 만들기 위한 SYSDBA 계정만을 지원합니다.',
+       'config-db-sys-user-exists-oracle' => '"$1" 사용자 계정이 이미 존재합니다. SYSDBA는 새 계정을 만드는 데에만 사용할 수 있습니다!',
        'config-sqlite-readonly' => '파일 <code>$1</code>은 쓰기가 불가능합니다.',
+       'config-can-upgrade' => "이 데이터베이스에 MediaWiki 테이블이 있습니다.
+MediaWiki $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
+       'config-db-web-account' => '웹 액세스를 위한 데이터베이스 계정',
+       'config-db-web-help' => '위키의 일반적인 작업 중에 데이터베이스 서버에 연결하는 데 사용할 웹 서버에 대한 계정 이름과 비밀번호를 선택합니다.',
+       'config-db-web-account-same' => '설치를 위해 같은 계정을 사용',
+       'config-db-web-create' => '이 계정이 아직 존재하지 않을 경우 계정을 만들기',
+       'config-db-web-no-create-privs' => '설치를 위해 지정한 계정은 계정을 만들 수 있는 충분한 권한이 없습니다.
+여기서 지정한 계정은 이미 존재해야 합니다.',
        'config-mysql-utf8' => 'UTF-8',
+       'config-ibm_db2-low-db-pagesize' => "당신의 DB2 데이터베이스가 부족한 페이지 크기가 기본 테이블 공간에 있습니다. 페이지 크기는 '''32K''' 이상이어야 합니다.",
        'config-site-name' => '위키의 이름:',
        'config-site-name-help' => '이것이 브라우저 제목 표시줄과 다른 여러 곳에 나타날 것입니다.',
        'config-site-name-blank' => '사이트 이름을 입력하세요.',
        'config-project-namespace' => '프로젝트 이름공간:',
        'config-ns-generic' => '프로젝트',
        'config-admin-box' => '관리자 계정',
+       'config-admin-name' => '사용자 이름:',
        'config-admin-password' => '비밀번호:',
        'config-admin-password-confirm' => '비밀번호 확인:',
-       'config-admin-password-blank' => '관리자 계정의 비밀번호를 입력하십시오.',
-       'config-admin-password-same' => '비밀번호는 계정 이름과 같아서는 안 됩니다.',
-       'config-admin-password-mismatch' => '당신이 입력한 비밀번호 두 개가 일치하지 않습니다.',
+       'config-admin-help' => '"홍길동"과 같이 여기에 원하는 사용자 이름을 입력합니다.
+이는 위키에 로그인하는 데 사용되는 이름입니다.',
+       'config-admin-name-blank' => '관리자의 사용자 이름을 입력하세요.',
+       'config-admin-name-invalid' => '특정 "<nowiki>$1</nowiki>" 사용자 이름이 잘못되었습니다.
+다른 사용자 이름을 지정하세요.',
+       'config-admin-password-blank' => '관리자 계정의 비밀번호를 입력하세요.',
+       'config-admin-password-same' => '비밀번호는 사용자 이름과 같아서는 안 됩니다.',
+       'config-admin-password-mismatch' => '입력한 비밀번호 두 개가 일치하지 않습니다.',
        'config-admin-email' => '이메일 주소:',
+       'config-admin-email-help' => '위키의 다른 사용자로부터 이메일을 전달받거나 비밀번호를 재설정하고 주시문서 목록에 대한 변경 알림을 받기 위해 여기에 이메일 주소를 입력하세요. 이 필드를 비워 둘 수 있습니다.',
+       'config-admin-error-user' => '"<nowiki>$1</nowiki>" 이름의 관리자를 만드는 중 내부 오류가 발생했습니다.',
+       'config-admin-error-password' => '"<nowiki>$1</nowiki>" 관리자의 비밀번호를 설정하는 중 내부 오류가 발생했습니다: <pre>$2</pre>',
+       'config-admin-error-bademail' => '이메일 주소를 잘못 입력하였습니다.',
+       'config-almost-done' => '거의 다 됐습니다! 이제 남은 설정을 생략하고 지금 위키를 설치할 수 있습니다.',
        'config-optional-skip' => '지겨워요, 그냥 위키를 설치할래요.',
        'config-profile-wiki' => '평범한 위키',
        'config-profile-no-anon' => '계정 생성 필요',
@@ -10048,21 +10160,82 @@ $messages['ko'] = array(
        'config-license-pd' => '퍼블릭 도메인',
        'config-license-cc-choose' => '다른 크리에이티브 커먼즈 라이선스 선택',
        'config-email-settings' => '이메일 설정',
+       'config-enable-email' => '발신 이메일 허용',
+       'config-enable-email-help' => '이메일을 작동하려면 [http://www.php.net/manual/en/mail.configuration.php PHP의 메일 설정]을 올바르게 구성해야 합니다.
+이메일 기능을 사용하지 않으려면 이를 비활성화할 수 있습니다.',
+       'config-email-user' => '사용자와 사용자 간 이메일 허용',
+       'config-email-user-help' => '환경 설정에서 활성화한 경우 모든 사용자가 이메일을 서로 보내도록 허용합니다.',
+       'config-email-usertalk' => '사용자 토론 문서 알림 허용',
+       'config-email-usertalk-help' => '환경 설정에서 활성화한 경우 사용자는 사용자 토론 문서의 변경 알림을 받도록 허용합니다.',
+       'config-email-watchlist' => '주시문서 목록 알림 허용',
+       'config-email-watchlist-help' => '환경 설정에서 활성화한 경우 사용자가 주시한 문서에 대한 알림을 받도록 허용합니다.',
+       'config-email-auth' => '이메일 인증 허용',
+       'config-email-auth-help' => "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 변경할 때마다 그들에게 보낸 링크를 사용하여 확인해야 합니다.
+인증된 이메일 주소만 다른 사용자로부터의 이메일이나 변경 알림 이메일을 받을 수 있습니다.
+이메일 기능의 남용 가능성이 있기 때문에 이 옵션을 설정하는 것은 공용 위키에서 '''권장'''합니다.",
+       'config-email-sender' => '반송 이메일 주소',
+       'config-email-sender-help' => '발신한 이메일에 대한 반송 주소로 사용할 이메일 주소를 입력합니다.
+이는 반송할 때 보내는 주소입니다.
+대부분의 메일 서버는 적어도 도메인 이름 부분은 유효합니다.',
        'config-logo' => '로고 URL:',
        'config-logo-help' => '미디어위키 기본 스킨은 사이드바 메뉴 위에 135×160픽셀의 로고를 포함하고 있습니다.
 적당한 크기로 이미지를 올리고 URL을 여기 적어주세요.
 
 로고 사용을 원치 않으면 이 상자를 비워 두십시오.',
+       'config-cc-error' => '크리에이티브 커먼즈 라이선스 선택기에 결과가 없습니다.
+수동으로 라이선스 이름을 입력하세요.',
+       'config-cc-again' => '다시 선택...',
+       'config-cc-not-chosen' => '원하는 크리에이티브 커먼즈 라이선스를 선택하고 "진행"을 클릭하세요.',
+       'config-advanced-settings' => '고급 설정',
+       'config-cache-options' => '개체 캐싱을 위한 설정:',
+       'config-cache-help' => '개체 캐싱은 자주 사용하는 데이터를 캐싱하여 MediaWiki의 속도를 개선하는 데 사용합니다.
+큰 사이트의 규모에는 이를 많이 사용하도록 권장하고 있으며, 소규모 사이트들도 물론 이익을 볼 수 있습니다.',
+       'config-cache-none' => '캐시하지 않음 (기능적으로는 삭제되지 않지만 큰 위키 사이트에 속도에 영향을 받을 수 있습니다)',
+       'config-cache-accel' => 'PHP 개체 캐싱 (APC, XCache 또는 WinCache)',
+       'config-cache-memcached' => 'Memcached 사용 (추가적인 설정 및 구성이 필요합니다)',
        'config-extensions' => '확장 기능',
        'config-extensions-help' => '위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.
 
 이들은 추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.',
+       'config-install-alreadydone' => "'''경고:''' 당신은 이미 MediaWiki를 설치하였고 다시 설치하려고 합니다.
+다음 페이지에서 진행하세요.",
+       'config-install-begin' => '"{{int:config-continue}}"을 누르면 MediaWiki의 설치를 시작합니다.
+그래도 변경하는 것을 원한다면 뒤로를 누릅니다.',
+       'config-install-extensions' => '확장 기능을 포함하는 중',
+       'config-install-database' => '데이터베이스 설정 중',
+       'config-install-pg-commit' => '커밋 바꾸기',
+       'config-install-pg-plpgsql' => 'PL/pgSQL 언어에 대해 확인 중',
        'config-install-user' => '데이터베이스 사용자 생성 중',
        'config-install-tables' => '테이블을 생성하는 중',
        'config-install-tables-exist' => "'''경고''': 미디어위키 테이블이 이미 있는 것 같습니다.
 테이블 생성을 생략합니다.",
        'config-install-tables-failed' => "'''오류''': 다음 오류와 함께 테이블 생성에 실패했습니다: $1",
        'config-install-interwiki' => '기본 인터위키 표를 채우는 중',
+       'config-install-interwiki-list' => '<code>interwiki.list</code> 파일을 읽을 수 없습니다.',
+       'config-install-interwiki-exists' => "'''경고''': 인터위키 표가 이미 항목을 갖고 있는 것 같습니다.
+기본 목록으로 넘어갑니다.",
+       'config-install-keys' => '보안 키를 만드는 중',
+       'config-insecure-keys' => "'''경고:''' 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)를 설치하는 동안 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 변경을 고려하세요.",
+       'config-install-mainpage' => '기본 콘텐트로 대문을 만드는 중',
+       'config-install-extension-tables' => '활성화된 확장 기능을 위한 표를 만드는 중',
+       'config-install-mainpage-failed' => '대문을 삽입할 수 없습니다: $1',
+       'config-install-done' => "'''축하합니다!'''
+성공적으로 MediaWIki를 설치했습니다.
+
+설치 마법사가 <code>LocalSettings.php</code> 파일을 만들었습니다.
+이는 모든 구성이 포함되어 있습니다.
+
+이를 다운로드하여 위키 설치의 거점에 넣어야 합니다 (index.php와 같은 디렉토리). 다운로드가 자동으로 시작됩니다.
+
+다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:
+
+$3
+
+'''참고''': 지금 이렇게 하지 않으면 이 구성 파일을 다운로드하지 않고 설치를 종료할 경우 만들어진 구성 파일은 나중에 사용할 수 없습니다.
+
+완료되었으면 '''[$2 당신은 위키에 들어갈 수 있습니다]'''.",
+       'config-download-localsettings' => 'LocalSettings.php 다운로드',
+       'config-help' => '도움말',
        'config-nofile' => '파일 "$1"을 찾을 수 없습니다. 이미 삭제되었나요?',
        'mainpagetext' => "'''미디어위키가 성공적으로 설치되었습니다.'''",
        'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 프로그램에 대한 정보를 얻을 수 있습니다.
@@ -10090,6 +10263,7 @@ $messages['krc'] = array(
 /** Colognian (Ripoarisch)
  * @author Mormegil
  * @author Purodha
+ * @author Reedy
  */
 $messages['ksh'] = array(
        'config-desc' => 'Et Projramm för Mediwiki opzesäze.',
@@ -10246,7 +10420,7 @@ Heh jeihd et nit wigger.',
        'config-using531' => 'MediaWiki läuf nit met PHP $1 zosamme wääje enem [//bugs.php.net/bug.php?id=50394 Fähler em Zosammehang met Parrameetere för <code lang="en">__call()</code>].
 Jangk op de Version 5.3.2 vum <i lang="en">PHP</i> ov dohnoh, udder op de Version 5.3.0 udder dovöör, öm dat Problem ze ömjonn.
 Heh jeiht et nit wigger.',
-       'config-suhosin-max-value-length' => '<i lang="en">Suhosin</i> es enschtalleet. Dröm kann ene <code lang="en">GET</code>-Parrameeter nit övver {{PLURAL:$1|ei Byte|$q Bytes|noll Byte}} lang wääde. En MediaWiki singe <i lang="en"ResouceLoader</i> kütt doh zwa drömeröm, ävver dat brems. Wann müjelesch, doht <code lang="en">suhosin.get.max_value_length</code> en dä Dattei <code lang="en">php.ini</code> op 1024 Bytes udder drövver enschtälle. un dann moß <code lang="en">$wgResourceLoaderMaxQueryLength</code> en dä Dattei <code lang="en">LocalSettings.php</code> op däsälve Wäät jesaz wääde.',
+       'config-suhosin-max-value-length' => '<i lang="en">Suhosin</i> es enschtalleet. Dröm kann ene <code lang="en">GET</code>-Parrameeter nit övver {{PLURAL:$1|ei Byte|$q Bytes|noll Byte}} lang wääde. En MediaWiki singe <i lang="en">ResourceLoader</i> kütt doh zwa drömeröm, ävver dat brems. Wann müjelesch, doht <code lang="en">suhosin.get.max_value_length</code> en dä Dattei <code lang="en">php.ini</code> op 1024 Bytes udder drövver enschtälle. un dann moß <code lang="en">$wgResourceLoaderMaxQueryLength</code> en dä Dattei <code lang="en">LocalSettings.php</code> op däsälve Wäät jesaz wääde.',
        'config-db-type' => 'De Zoot Daatebangk:',
        'config-db-host' => 'Dä Name vun däm Rääschner met dä Daatebangk:',
        'config-db-host-help' => 'Wann Dinge ẞööver för de Daatebangk ob enem andere Rääschner es, donn heh dämm singe Name udder dämm sing <i lang="en">IP</i>-Addräß enjävve.
@@ -10926,7 +11100,7 @@ $messages['lo'] = array(
        'mainpagetext' => "'''ຕິດຕັ້ງມີເດຍວິກິນີ້ສຳເລັດແລ້ວ.'''",
 );
 
-/** Lithuanian (Lietuvių) */
+/** Lithuanian (lietuvių) */
 $messages['lt'] = array(
        'mainpagetext' => "'''MediaWiki sėkmingai įdiegta.'''",
        'mainpagedocfooter' => 'Informacijos apie wiki programinės įrangos naudojimą, ieškokite [//meta.wikimedia.org/wiki/Help:Contents žinyne].
@@ -10938,7 +11112,7 @@ $messages['lt'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki pranešimai paštu apie naujas versijas]',
 );
 
-/** Latvian (Latviešu)
+/** Latvian (latviešu)
  * @author GreenZeb
  */
 $messages['lv'] = array(
@@ -11092,7 +11266,7 @@ $messages['min'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
 );
 
-/** Macedonian (Ð\9cакедонски)
+/** Macedonian (македонски)
  * @author Bjankuloski06
  */
 $messages['mk'] = array(
@@ -11492,7 +11666,7 @@ chmod a+w $3</pre>',
        'config-license-cc-by-sa' => 'Creative Commons НаведиИзвор СподелиПодИстиУслови',
        'config-license-cc-by' => 'Криејтив комонс НаведиИзвор',
        'config-license-cc-by-nc-sa' => 'Creative Commons НаведиИзвор-Некомерцијално-СподелиПодИстиУслови',
-       'config-license-cc-0' => 'Ð\9aÑ\80иеÑ\98Ñ\82ив ÐºÐ¾Ð¼Ð¾Ð½Ñ\81 Ð\9dÑ\83ла (Ñ\98авен Ð´Ð¾Ð¼ÐµÐ½)',
+       'config-license-cc-0' => 'Ð\9aÑ\80иеÑ\98Ñ\82ив ÐºÐ¾Ð¼Ð¾Ð½Ñ\81 Ð\9dÑ\83ла (Ñ\98авна Ñ\81опÑ\81Ñ\82веноÑ\81Ñ\82)',
        'config-license-gfdl' => 'ГНУ-ова лиценца за слободна документација 1.3 или понова',
        'config-license-pd' => 'Јавна сопственост',
        'config-license-cc-choose' => 'Одберете друга Creative Commons лиценца по ваш избор',
@@ -11599,7 +11773,7 @@ chmod a+w $3</pre>',
        'config-install-tables-exist' => "'''Предупредување''': Изгледа дека табелите за МедијаВики веќе постојат.
 Го прескокнувам создавањето.",
        'config-install-tables-failed' => "'''Грешка''': Создавањето на табелата не успеа поради следнава грешка: $1",
-       'config-install-interwiki' => 'Ги пополнувам основно-зададените интервики-табели',
+       'config-install-interwiki' => 'Ги пополнувам основно зададените меѓувики-табели',
        'config-install-interwiki-list' => 'Не можев да ја пронајдам податотеката <code>interwiki.list</code>.',
        'config-install-interwiki-exists' => "'''Предупредување''': Табелата со интервикија веќе содржи ставки.
 Го прескокнувам основно-зададениот список.",
@@ -11795,7 +11969,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce മീഡിയവിക്കി പ്രകാശന മെയിലിങ് ലിസ്റ്റ്]',
 );
 
-/** Mongolian (Ð\9cонгол)
+/** Mongolian (монгол)
  * @author Chinneeb
  */
 $messages['mn'] = array(
@@ -11952,9 +12126,8 @@ $messages['nan'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki的公布列單]',
 );
 
-/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+/** Norwegian Bokmål (‪norsk (bokmål)‬)
  * @author Event
- * @author Jon Harald Søby
  * @author Nghtwlkr
  */
 $messages['nb'] = array(
@@ -12049,6 +12222,7 @@ Følgende databasetyper er støttet: $1
 Om du er på delt vertsskap, spør din vertsleverandør om å installere en passende databasedriver.
 Om du kompilerte PHP selv, rekonfigirer den med en aktivert databaseklient, for eksempel ved å bruke <code>./configure --with-mysql</code>.
 Om du installerte PHP fra en Debian- eller Ubuntu-pakke må du også installere modulen php5-mysql.',
+       'config-outdated-sqlite' => "'''Advarsel''': Du har SQLite $1, som er en eldre versjon enn minimumskravet SQLite $2. SQLite vil ikke være tilgjengelig.",
        'config-no-fts3' => "'''Advarsel''': SQLite er kompilert uten [//sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
        'config-register-globals' => "'''Advarsel: PHPs <code>[http://php.net/register_globals register_globals]</code>-alternativ er aktivert.'''
 '''Deaktiver det om du kan.'''
@@ -12078,6 +12252,7 @@ MediaWiki krever UTF-8-støtte for å fungere riktig.",
        'config-memory-bad' => "'''Advarsel:''' PHPs <code>memory_limit</code> er $1.
 Dette er sannsynligvis for lavt.
 Installasjonen kan mislykkes!",
+       'config-ctype' => "'''Fatal feil''': PHP må kompileres med støtte for [http://www.php.net/manual/en/ctype.installation.php Ctype-utvidelsen].",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
        'config-apc' => '[http://www.php.net/apc APC] er innstallert',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
@@ -12109,11 +12284,13 @@ Installasjonen avbrutt.',
        'config-suhosin-max-value-length' => 'Suhosin er installert og begrenser GET-parameterlengder til $1 bytes. MediaWiki\'s ResourceLoader-komponent klarer å komme rundt denne begrensningen, med med redusert ytelse. På mulig bør du sette suhosin.get.max_value_length til minst 1024 i php.ini, og sette $wgResourceLoaderMaxQueryLength til samme verdi i LocalSettings.php.',
        'config-db-type' => 'Databasetype:',
        'config-db-host' => 'Databasevert:',
-       'config-db-host-help' => 'Hvis databasetjeneren er på en annen tjener, skriv inn vertsnavnet eller IP-adressen her.
+       'config-db-host-help' => 'Hvis databasen kjører på en annen tjenermaskin, skriv inn vertsnavnet eller IP-adressen her.
+
+Hvis du bruker et webhotell, vil du kunne be om aktuelt vertsnavn fra din leverandør.
 
-Hvis du bruker en delt nettvert bør verten din oppgi det korrekte vertsnavnet i deres dokumentasjon.
+Hvis du installerer på en Windowstjener og bruker MySQL, kan det hende at «localhost» ikke brukes som tjenernavn. Hvis så er tilfelle, prøv «127.0.0.1» som lokal IP-adresse.
 
-Hvis du installerer på en Windowstjener og bruker MySQL kan det hende at «localhost» ikke virker som tjenernavnet. Hvis ikke, prøv «127.0.0.1» for den lokale IP-adressen.',
+Hvis du bruker PostgreSQL, la dette feltet være blankt slik at koplingen gjøres via en "Unix socket".',
        'config-db-host-oracle' => 'Database TNS:',
        'config-db-host-oracle-help' => 'Skriv inn et gyldig [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; en tnsnames.ora-fil må være synlig for installasjonsprosessen.<br />Hvis du bruker klientbibliotek 10g eller nyere kan du også bruke navngivingsmetoden [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
        'config-db-wiki-settings' => 'Identifiser denne wikien',
@@ -12123,6 +12300,11 @@ Det bør ikke inneholde mellomrom.
 
 Hvis du bruker en delt nettvert vil verten din enten gi deg et spesifikt databasenavn å bruke, eller la deg opprette databaser via kontrollpanelet.',
        'config-db-name-oracle' => 'Databaseskjema:',
+       'config-db-account-oracle-warn' => 'Det finnes tre mulig fremgangsmåter for å installere Oracle som database:
+
+Hvis du ønsker å opprette en databasekonto som del av installasjonsprosessen, oppgi da en konto med SYSDBA-rolle som databasekonto for installasjonen og angi påkrevd autentiseringsinformasjon for web-aksesskontoen. Ellers kan du enten opprette web-aksesskontoen manuelt eller kun oppgi den kontoen (hvis den har påkrevede tillatelser for å opprette skjemeobjektene) , alternativt oppgi to ulike kontoer, en med opprettelsesprivilegier (create) og en begrenset konto for web-aksess.
+
+Skript for å opprette en konto med påkrevde privilegier finnes i "maintenance/oracle/"-folderen av denne installasjonen. Husk at det å bruke en begrenset konto vil blokkere all vedlikeholdsfunksjonalitet med standard konto.',
        'config-db-install-account' => 'Brukerkonto for installasjon',
        'config-db-username' => 'Databasebrukernavn:',
        'config-db-password' => 'Databasepassord:',
@@ -12157,6 +12339,7 @@ men det vil ikke la deg lagre tegn over «[//en.wikipedia.org/wiki/Mapping_of_Un
        'config-db-schema' => 'Skjema for MediaWiki',
        'config-db-schema-help' => 'Dette skjemaet er som regel riktig.
 Bare endre det hvis du vet at du trenger det.',
+       'config-pg-test-error' => "Får ikke kontakt med database '''$1''': $2",
        'config-sqlite-dir' => 'SQLite datamappe:',
        'config-sqlite-dir-help' => "SQLite lagrer alle data i en enkelt fil.
 
@@ -12333,7 +12516,9 @@ En '''{{int:config-profile-private}}''' tillater kun godkjente brukere å se sid
 
 Mer komplekse konfigurasjoner av brukerrettigheter er tilgjengelig etter installasjon, se det [//www.mediawiki.org/wiki/Manual:User_rights relevante manualavsnittet].",
        'config-license' => 'Opphavsrett og lisens:',
+       'config-license-none' => 'Ingen lisensbunntekst',
        'config-license-cc-by-sa' => 'Creative Commons Navngivelse Del på samme vilkår',
+       'config-license-cc-by' => 'Creative Commons Attribution',
        'config-license-cc-by-nc-sa' => 'Creative Commons Navngivelse Ikke-kommersiell Del på samme vilkår',
        'config-license-cc-0' => 'Creative Commons Zero',
        'config-license-pd' => 'Offentlig rom',
@@ -12390,7 +12575,9 @@ For mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man
        'config-install-user-grant-failed' => 'Å gi tillatelse til brukeren «$1» mislyktes: $2',
        'config-install-tables' => 'Oppretter tabeller',
        'config-install-mainpage-failed' => 'Kunne ikke sette inn hovedside: $1',
+       'config-download-localsettings' => 'Last ned LocalSettings.php',
        'config-help' => 'hjelp',
+       'config-nofile' => 'Filen "$1" ble ikke funnet. Kan den være blitt slettet?',
        'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
        'mainpagedocfooter' => 'Se [//meta.wikimedia.org/wiki/Help:Contents brukerveiledningen] for informasjon om hvordan du bruker wiki-programvaren.
 
@@ -12995,7 +13182,7 @@ Na het plaatsen van het bestand met instellingen kunt u '''[$2 uw wiki betreden]
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]',
 );
 
-/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+/** Norwegian Nynorsk (‪norsk (nynorsk)‬)
  * @author Harald Khan
  * @author Nghtwlkr
  */
@@ -13011,7 +13198,6 @@ Dette er sannsynlegvis for lågt.
 Installasjonen kan mislukkast!",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
        'config-apc' => '[http://www.php.net/apc APC] er innstallert',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] er innstallert',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
        'config-db-name' => 'Databasenamn:',
        'config-db-username' => 'Databasebrukarnamn:',
@@ -13046,7 +13232,12 @@ Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postliste med informasjon om nye MediaWiki-versjonar]',
 );
 
-/** Occitan (Occitan) */
+/** Norwegian (bokmål)‬ (‪norsk (bokmål)‬) */
+$messages['no'] = array(
+       'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
+);
+
+/** Occitan (occitan) */
 $messages['oc'] = array(
        'mainpagetext' => "'''MediaWiki es estat installat amb succès.'''",
        'mainpagedocfooter' => "Consultatz lo [//meta.wikimedia.org/wiki/Ajuda:Contengut Guida de l'utilizaire] per mai d'entresenhas sus l'utilizacion d'aqueste logicial.
@@ -13117,7 +13308,8 @@ $messages['pdc'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Eposchde-Lischt fer neie MediaWiki-Versione]",
 );
 
-/** Polish (Polski)
+/** Polish (polski)
+ * @author Beau
  * @author BeginaFelicysym
  * @author Holek
  * @author Saper
@@ -13292,7 +13484,7 @@ Nie może ona zawierać spacji.
 
 Jeśli korzystasz ze współdzielonego hostingu, dostawca usługi hostingowej może wymagać użycia konkretnej nazwy bazy danych lub pozwalać na tworzenie baz danych za pośrednictwem panelu użytkownika.',
        'config-db-name-oracle' => 'Nazwa schematu bazy danych:',
-       'config-db-account-oracle-warn' => 'Bazę danych Oracle można przygotować do pracy z MediaWIki na trzy sposoby:
+       'config-db-account-oracle-warn' => 'Bazę danych Oracle można przygotować do pracy z MediaWiki na trzy sposoby:
 
 Możesz utworzyć konto użytkownika bazy danych podczas instalacji MediaWiki. Wówczas należy podać nazwę i hasło użytkownika z rolą SYSDBA w celu użycia go przez instalator do utworzenia nowe konta użytkownika, z którego korzystać będzie MediaWiki.
 
@@ -14158,7 +14350,7 @@ $messages['ps'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce د مېډياويکي د برېښليکونو لړليک]',
 );
 
-/** Portuguese (Português)
+/** Portuguese (português)
  * @author Crazymadlover
  * @author Hamilton Abreu
  * @author Mormegil
@@ -14704,7 +14896,7 @@ Depois de terminar o passo anterior, pode '''[$2 entrar na wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]',
 );
 
-/** Brazilian Portuguese (Português do Brasil)
+/** Brazilian Portuguese (português do Brasil)
  * @author Giro720
  * @author Gustavo
  * @author Marcionunes
@@ -14815,7 +15007,7 @@ $messages['rgn'] = array(
        'mainpagetext' => "'''L'instalaziòn d'MediaWiki l'è andêda ben'''",
 );
 
-/** Romansh (Rumantsch)
+/** Romansh (rumantsch)
  * @author Gion-andri
  */
 $messages['rm'] = array(
@@ -14828,7 +15020,7 @@ $messages['rm'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Glista da mail da MediaWiki cun annunzias da novas versiuns]",
 );
 
-/** Romanian (Română)
+/** Romanian (română)
  * @author Minisarm
  * @author Stelistcristi
  */
@@ -14868,7 +15060,7 @@ $messages['ro'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discuții a MediaWiki (en)]',
 );
 
-/** Tarandíne (Tarandíne)
+/** tarandíne (tarandíne)
  * @author Joetaras
  */
 $messages['roa-tara'] = array(
@@ -14882,7 +15074,7 @@ $messages['roa-tara'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste d'a poste de MediaWiki]",
 );
 
-/** Russian (Русский)
+/** Russian (русский)
  * @author Adata80
  * @author DCamer
  * @author Eleferen
@@ -15449,14 +15641,14 @@ $messages['rue'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розосыланя повідомлїнь про новы верзії MediaWiki]',
 );
 
-/** Sanskrit (संस्कृत)
+/** Sanskrit (संस्कृतम्)
  * @author Hemant wikikosh1
  */
 $messages['sa'] = array(
        'mainpagetext' => 'मीडियाविकि तु सफलतया अन्तःस्थापितमस्ति',
 );
 
-/** Sakha (Саха тыла) */
+/** Sakha (саха тыла) */
 $messages['sah'] = array(
        'mainpagetext' => "'''«MediaWiki» сөпкө туруорулунна.'''",
        'mainpagedocfooter' => 'Биики программатын туһунан [//meta.wikimedia.org/wiki/Help:Contents справочникка] көрүөххүн сөп.
@@ -15468,14 +15660,14 @@ $messages['sah'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай испииһэгэ]',
 );
 
-/** Sardinian (Sardu)
+/** Sardinian (sardu)
  * @author Andria
  */
 $messages['sc'] = array(
        'mainpagetext' => "'''MediaWiki est stadu installadu in modu currègidu.'''",
 );
 
-/** Sicilian (Sicilianu) */
+/** Sicilian (sicilianu) */
 $messages['scn'] = array(
        'mainpagetext' => "'''Nstallazzioni di MediaWiki cumplitata currettamenti.'''",
        'mainpagedocfooter' => "Pi favuri taliari [//meta.wikimedia.org/wiki/Help:Contents Guida utenti] pi aiutu supra l'usu e la cunfigurazzioni di stu software wiki.
@@ -15516,7 +15708,7 @@ $messages['sei'] = array(
        'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
 );
 
-/** Serbo-Croatian (Srpskohrvatski)
+/** Serbo-Croatian (srpskohrvatski / српскохрватски)
  * @author OC Ripper
  */
 $messages['sh'] = array(
@@ -15542,18 +15734,20 @@ $messages['shi'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Umuɣ n imsgdaln f imbḍitn n MidyaWiki]',
 );
 
-/** Sinhala (සිංහල) */
+/** Sinhala (සිංහල)
+ * @author Singhalawap
+ */
 $messages['si'] = array(
-       'mainpagetext' => "'''මà·\8fධà·\8aâ\80\8dයවිකි සාර්ථක ලෙස ස්ථාපනය කරන ලදි.'''",
+       'mainpagetext' => "'''මà·\93ඩà·\92යà·\8fවිකි සාර්ථක ලෙස ස්ථාපනය කරන ලදි.'''",
        'mainpagedocfooter' => 'විකි මෘදුකාංග භාවිතා කිරීම පිළිබඳ තොරතුරු සඳහා  [//meta.wikimedia.org/wiki/Help:Contents පරිශීලකයන් සඳහා නියමුව] හදාරන්න.
 
 == ඇරඹුම ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings à·\80à·\92නà·\8aâ\80\8dයà·\8fà·\83 à¶´à¶»à·\92à·\83à·\8aථà·\92තà·\93නà·\8a à¶½à·\90යà·\92à·\83à·\8aතà·\94à·\80]
-* [//www.mediawiki.org/wiki/Manual:FAQ à¶¸à·\8fධà·\8aâ\80\8dයà·\80à·\92à¶\9aà·\92 à¶±à·\92තර-à¶\85සන-පැන]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¶¸à·\8fධà·\8aâ\80\8dයවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings à·\80à·\92නà·\8aâ\80\8dයà·\8fà·\83 à·\83à·\90à¶\9aà·\83à·\94මà·\8a]
+* [//www.mediawiki.org/wiki/Manual:FAQ à¶¸à·\93ඩà·\92යà·\8fà·\80à·\92à¶\9aà·\92 à¶±à·\92තà·\92-à·\80à·\92මසන-පැන]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¶¸à·\93ඩà·\92යà·\8fවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
 );
 
-/** Slovak (Slovenčina) */
+/** Slovak (slovenčina) */
 $messages['sk'] = array(
        'mainpagetext' => "'''Softvér MediaWiki bol úspešne nainštalovaný.'''",
        'mainpagedocfooter' => 'Informácie ako používať wiki softvér nájdete v [//meta.wikimedia.org/wiki/Help:Contents Používateľskej príručke].
@@ -15565,7 +15759,7 @@ $messages['sk'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list nových verzií MediaWiki]',
 );
 
-/** Slovenian (Slovenščina)
+/** Slovenian (slovenščina)
  * @author Dbc334
  */
 $messages['sl'] = array(
@@ -15806,7 +16000,7 @@ $messages['so'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Albanian (Shqip) */
+/** Albanian (shqip) */
 $messages['sq'] = array(
        'mainpagetext' => "'''MediaWiki software u instalua me sukses.'''",
        'mainpagedocfooter' => 'Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [//meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].
@@ -15817,7 +16011,7 @@ $messages['sq'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
 );
 
-/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
  * @author Rancher
  */
 $messages['sr-ec'] = array(
@@ -15836,7 +16030,7 @@ $messages['sr-ec'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Дописна листа о издањима Медијавикија]',
 );
 
-/** Serbian (Latin script) (‪Srpski (latinica)‬) */
+/** Serbian (Latin script) (‪srpski (latinica)‬) */
 $messages['sr-el'] = array(
        'config-continue' => 'Nastavi →',
        'config-page-language' => 'Jezik',
@@ -15884,7 +16078,7 @@ $messages['su'] = array(
        'mainpagedocfooter' => "Mangga tingal ''[//meta.wikimedia.org/wiki/MediaWiki_localisation documentation on customizing the interface]'' jeung [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Tungtunan Pamaké] pikeun pitulung maké jeung konfigurasi.",
 );
 
-/** Swedish (Svenska)
+/** Swedish (svenska)
  * @author Skalman
  * @author WikiPhoenix
  */
@@ -16105,7 +16299,7 @@ $messages['te'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce మీడియావికీ సాఫ్టువేరు కొత్త వెర్షను విడుదలల గురించి తెలిపే మెయిలింగు లిస్టు]',
 );
 
-/** Tetum (Tetun)
+/** Tetum (tetun)
  * @author MF-Warburg
  */
 $messages['tet'] = array(
@@ -16113,7 +16307,7 @@ $messages['tet'] = array(
        'config-page-name' => 'Naran',
 );
 
-/** Tajik (Cyrillic script) (Тоҷикӣ) */
+/** Tajik (Cyrillic script) (тоҷикӣ) */
 $messages['tg-cyrl'] = array(
        'mainpagetext' => "'''Нармафзори МедиаВики бо муваффақият насб шуд.'''",
        'mainpagedocfooter' => 'Аз [//meta.wikimedia.org/wiki/Help:Contents Роҳнамои Корбарон] барои истифодаи нармафзори вики кӯмак бигиред.
@@ -16469,7 +16663,7 @@ $messages['tr'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]',
 );
 
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
  * @author KhayR
  */
 $messages['tt-cyrl'] = array(
@@ -16482,7 +16676,7 @@ $messages['tt-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның яңа версияләре турында хәбәрләр яздырып алу].",
 );
 
-/** Tatar (Latin script) (Tatarça)
+/** Tatar (Latin script) (tatarça)
  * @author Don Alessandro
  */
 $messages['tt-latn'] = array(
@@ -16515,7 +16709,7 @@ $messages['ug-arab'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki تارقاتقان ئېلخەت تىزىملىكى]',
 );
 
-/** Ukrainian (Українська)
+/** Ukrainian (українська)
  * @author Ahonc
  * @author Alex Khimich
  * @author Diemon.ukr
@@ -16623,7 +16817,7 @@ $messages['ur'] = array(
        'mainpagetext' => "'''میڈیاوکی کو کامیابی سے چالو کردیا گیا ہے۔.'''",
 );
 
-/** Uzbek (O'zbek) */
+/** Uzbek (Oʻzbek) */
 $messages['uz'] = array(
        'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
        'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun  [//meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
@@ -16635,7 +16829,7 @@ $messages['uz'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki yangi versiyasi chiqqanda xabar berish ro'yxati]",
 );
 
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
  * @author Vajotwo
  */
 $messages['vec'] = array(
@@ -16651,7 +16845,7 @@ I seguenti cołegamenti i xé en łengua inglese:
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
 );
 
-/** Veps (Vepsan kel')
+/** Veps (Vepsän kel’)
  * @author Игорь Бродский
  */
 $messages['vep'] = array(
@@ -16698,7 +16892,7 @@ $messages['vro'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
 );
 
-/** Walloon (Walon) */
+/** Walloon (walon) */
 $messages['wa'] = array(
        'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
 );
@@ -16807,7 +17001,7 @@ $messages['zea'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailienglieste voe ankondigiengen van nieuwe versies]",
 );
 
-/** Simplified Chinese (‪中文(简体)‬)
+/** Simplified Chinese (‪中文(简体)‬)
  * @author Hydra
  * @author Hzy980512
  * @author PhiLiP
@@ -17248,7 +17442,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]',
 );
 
-/** Traditional Chinese (‪中文(繁體)‬)
+/** Traditional Chinese (‪中文(繁體)‬)
  * @author Hzy980512
  * @author Mark85296341
  */
@@ -17676,7 +17870,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
 );
 
-/** Chinese (Hong Kong) (‪中文(香港)‬)
+/** Chinese (Hong Kong) (‪中文(香港)‬)
  * @author Mark85296341
  */
 $messages['zh-hk'] = array(
@@ -17688,7 +17882,7 @@ $messages['zh-hk'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
 );
 
-/** Chinese (Taiwan) (‪中文(台灣)‬) */
+/** Chinese (Taiwan) (‪中文(台灣)‬) */
 $messages['zh-tw'] = array(
        'mainpagedocfooter' => '請參閱 [//meta.wikimedia.org/wiki/Help:Contents 使用者手冊] 以獲得使用此 wiki 軟體的訊息!
 
index 9ed486c..bbc6b64 100644 (file)
  */
 class LocalSettingsGenerator {
 
-       private $extensions = array();
-       private $values = array();
-       private $groupPermissions = array();
-       private $dbSettings = '';
-       private $safeMode = false;
+       protected $extensions = array();
+       protected $values = array();
+       protected $groupPermissions = array();
+       protected $dbSettings = '';
+       protected $safeMode = false;
 
        /**
         * @var Installer
         */
-       private $installer;
+       protected $installer;
 
        /**
         * Constructor.
@@ -166,7 +166,7 @@ class LocalSettingsGenerator {
        /**
         * @return String
         */
-       private function buildMemcachedServerList() {
+       protected function buildMemcachedServerList() {
                $servers = $this->values['_MemCachedServers'];
 
                if( !$servers ) {
@@ -187,7 +187,7 @@ class LocalSettingsGenerator {
        /**
         * @return String
         */
-       private function getDefaultText() {
+       protected function getDefaultText() {
                if( !$this->values['wgImageMagickConvertCommand'] ) {
                        $this->values['wgImageMagickConvertCommand'] = '/usr/bin/convert';
                        $magic = '#';
index 5bbe642..4f31195 100644 (file)
@@ -161,7 +161,7 @@ class WebInstaller extends Installer {
                                'Content-Disposition: attachment; filename="LocalSettings.php"'
                        );
 
-                       $ls = new LocalSettingsGenerator( $this );
+                       $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
                        $rightsProfile = $this->rightsProfiles[$this->getVar( '_RightsProfile' )];
                        foreach( $rightsProfile as $group => $rightsArr ) {
                                $ls->setGroupRights( $group, $rightsArr );
index 076e23f..eacf9a8 100644 (file)
@@ -58,7 +58,7 @@ class Interwiki {
         * Fetch an Interwiki object
         *
         * @param $prefix String: interwiki prefix to use
-        * @return Interwiki Object, or null if not valid
+        * @return Interwiki|null|bool
         */
        static public function fetch( $prefix ) {
                global $wgContLang;
diff --git a/includes/job/Job.php b/includes/job/Job.php
new file mode 100644 (file)
index 0000000..7b7ec0c
--- /dev/null
@@ -0,0 +1,447 @@
+<?php
+/**
+ * Job queue base code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @defgroup JobQueue JobQueue
+ */
+
+/**
+ * Class to both describe a background job and handle jobs.
+ *
+ * @ingroup JobQueue
+ */
+abstract class Job {
+
+       /**
+        * @var Title
+        */
+       var $title;
+
+       var $command,
+               $params,
+               $id,
+               $removeDuplicates,
+               $error;
+
+       /*-------------------------------------------------------------------------
+        * Abstract functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * Run the job
+        * @return boolean success
+        */
+       abstract function run();
+
+       /*-------------------------------------------------------------------------
+        * Static functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * Pop a job of a certain type.  This tries less hard than pop() to
+        * actually find a job; it may be adversely affected by concurrent job
+        * runners.
+        *
+        * @param $type string
+        *
+        * @return Job
+        */
+       static function pop_type( $type ) {
+               wfProfilein( __METHOD__ );
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               $dbw->begin( __METHOD__ );
+
+               $row = $dbw->selectRow(
+                       'job',
+                       '*',
+                       array( 'job_cmd' => $type ),
+                       __METHOD__,
+                       array( 'LIMIT' => 1, 'FOR UPDATE' )
+               );
+
+               if ( $row === false ) {
+                       $dbw->commit( __METHOD__ );
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               /* Ensure we "own" this row */
+               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+
+               if ( $affected == 0 ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               wfIncrStats( 'job-pop' );
+               $namespace = $row->job_namespace;
+               $dbkey = $row->job_title;
+               $title = Title::makeTitleSafe( $namespace, $dbkey );
+               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ),
+                       $row->job_id );
+
+               $job->removeDuplicates();
+
+               wfProfileOut( __METHOD__ );
+               return $job;
+       }
+
+       /**
+        * Pop a job off the front of the queue
+        *
+        * @param $offset Integer: Number of jobs to skip
+        * @return Job or false if there's no jobs
+        */
+       static function pop( $offset = 0 ) {
+               wfProfileIn( __METHOD__ );
+
+               $dbr = wfGetDB( DB_SLAVE );
+
+               /* Get a job from the slave, start with an offset,
+                       scan full set afterwards, avoid hitting purged rows
+
+                       NB: If random fetch previously was used, offset
+                               will always be ahead of few entries
+               */
+
+               $conditions = self::defaultQueueConditions();
+
+               $offset = intval( $offset );
+               $options = array( 'ORDER BY' => 'job_id', 'USE INDEX' => 'PRIMARY' );
+
+               $row = $dbr->selectRow( 'job', '*',
+                       array_merge( $conditions, array( "job_id >= $offset" ) ),
+                       __METHOD__,
+                       $options
+               );
+
+               // Refetching without offset is needed as some of job IDs could have had delayed commits
+               // and have lower IDs than jobs already executed, blame concurrency :)
+               //
+               if ( $row === false ) {
+                       if ( $offset != 0 ) {
+                               $row = $dbr->selectRow( 'job', '*', $conditions, __METHOD__, $options );
+                       }
+
+                       if ( $row === false ) {
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+               }
+
+               // Try to delete it from the master
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+
+               if ( !$affected ) {
+                       // Failed, someone else beat us to it
+                       // Try getting a random row
+                       $row = $dbw->selectRow( 'job', array( 'MIN(job_id) as minjob',
+                               'MAX(job_id) as maxjob' ), '1=1', __METHOD__ );
+                       if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
+                               // No jobs to get
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+                       // Get the random row
+                       $row = $dbw->selectRow( 'job', '*',
+                               'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
+                       if ( $row === false ) {
+                               // Random job gone before we got the chance to select it
+                               // Give up
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+                       // Delete the random row
+                       $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+                       $affected = $dbw->affectedRows();
+                       $dbw->commit( __METHOD__ );
+
+                       if ( !$affected ) {
+                               // Random job gone before we exclusively deleted it
+                               // Give up
+                               wfProfileOut( __METHOD__ );
+                               return false;
+                       }
+               }
+
+               // If execution got to here, there's a row in $row that has been deleted from the database
+               // by this thread. Hence the concurrent pop was successful.
+               wfIncrStats( 'job-pop' );
+               $namespace = $row->job_namespace;
+               $dbkey = $row->job_title;
+               $title = Title::makeTitleSafe( $namespace, $dbkey );
+
+               if ( is_null( $title ) ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
+
+               // Remove any duplicates it may have later in the queue
+               $job->removeDuplicates();
+
+               wfProfileOut( __METHOD__ );
+               return $job;
+       }
+
+       /**
+        * Create the appropriate object to handle a specific job
+        *
+        * @param $command String: Job command
+        * @param $title Title: Associated title
+        * @param $params Array: Job parameters
+        * @param $id Int: Job identifier
+        * @return Job
+        */
+       static function factory( $command, Title $title, $params = false, $id = 0 ) {
+               global $wgJobClasses;
+               if( isset( $wgJobClasses[$command] ) ) {
+                       $class = $wgJobClasses[$command];
+                       return new $class( $title, $params, $id );
+               }
+               throw new MWException( "Invalid job command `{$command}`" );
+       }
+
+       /**
+        * @param $params
+        * @return string
+        */
+       static function makeBlob( $params ) {
+               if ( $params !== false ) {
+                       return serialize( $params );
+               } else {
+                       return '';
+               }
+       }
+
+       /**
+        * @param $blob
+        * @return bool|mixed
+        */
+       static function extractBlob( $blob ) {
+               if ( (string)$blob !== '' ) {
+                       return unserialize( $blob );
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * Batch-insert a group of jobs into the queue.
+        * This will be wrapped in a transaction with a forced commit.
+        *
+        * This may add duplicate at insert time, but they will be
+        * removed later on, when the first one is popped.
+        *
+        * @param $jobs array of Job objects
+        */
+       static function batchInsert( $jobs ) {
+               if ( !count( $jobs ) ) {
+                       return;
+               }
+               $dbw = wfGetDB( DB_MASTER );
+               $rows = array();
+
+               /**
+                * @var $job Job
+                */
+               foreach ( $jobs as $job ) {
+                       $rows[] = $job->insertFields();
+                       if ( count( $rows ) >= 50 ) {
+                               # Do a small transaction to avoid slave lag
+                               $dbw->begin( __METHOD__ );
+                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                               $dbw->commit( __METHOD__ );
+                               $rows = array();
+                       }
+               }
+               if ( $rows ) { // last chunk
+                       $dbw->begin( __METHOD__ );
+                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                       $dbw->commit( __METHOD__ );
+               }
+               wfIncrStats( 'job-insert', count( $jobs ) );
+       }
+
+       /**
+        * Insert a group of jobs into the queue.
+        *
+        * Same as batchInsert() but does not commit and can thus
+        * be rolled-back as part of a larger transaction. However,
+        * large batches of jobs can cause slave lag.
+        *
+        * @param $jobs array of Job objects
+        */
+       static function safeBatchInsert( $jobs ) {
+               if ( !count( $jobs ) ) {
+                       return;
+               }
+               $dbw = wfGetDB( DB_MASTER );
+               $rows = array();
+               foreach ( $jobs as $job ) {
+                       $rows[] = $job->insertFields();
+                       if ( count( $rows ) >= 500 ) {
+                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+                               $rows = array();
+                       }
+               }
+               if ( $rows ) { // last chunk
+                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
+               }
+               wfIncrStats( 'job-insert', count( $jobs ) );
+       }
+
+
+       /**
+        * SQL conditions to apply on most JobQueue queries
+        *
+        * Whenever we exclude jobs types from the default queue, we want to make
+        * sure that queries to the job queue actually ignore them.
+        *
+        * @return array SQL conditions suitable for Database:: methods
+        */
+       static function defaultQueueConditions( ) {
+               global $wgJobTypesExcludedFromDefaultQueue;
+               $conditions = array();
+               if ( count( $wgJobTypesExcludedFromDefaultQueue ) > 0 ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
+                               $conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
+                       }
+               }
+               return $conditions;
+       }
+
+       /*-------------------------------------------------------------------------
+        * Non-static functions
+        *------------------------------------------------------------------------*/
+
+       /**
+        * @param $command
+        * @param $title
+        * @param $params array
+        * @param int $id
+        */
+       function __construct( $command, $title, $params = false, $id = 0 ) {
+               $this->command = $command;
+               $this->title = $title;
+               $this->params = $params;
+               $this->id = $id;
+
+               // A bit of premature generalisation
+               // Oh well, the whole class is premature generalisation really
+               $this->removeDuplicates = true;
+       }
+
+       /**
+        * Insert a single job into the queue.
+        * @return bool true on success
+        */
+       function insert() {
+               $fields = $this->insertFields();
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               if ( $this->removeDuplicates ) {
+                       $res = $dbw->select( 'job', array( '1' ), $fields, __METHOD__ );
+                       if ( $dbw->numRows( $res ) ) {
+                               return true;
+                       }
+               }
+               wfIncrStats( 'job-insert' );
+               return $dbw->insert( 'job', $fields, __METHOD__ );
+       }
+
+       /**
+        * @return array
+        */
+       protected function insertFields() {
+               $dbw = wfGetDB( DB_MASTER );
+               return array(
+                       'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
+                       'job_cmd' => $this->command,
+                       'job_namespace' => $this->title->getNamespace(),
+                       'job_title' => $this->title->getDBkey(),
+                       'job_timestamp' => $dbw->timestamp(),
+                       'job_params' => Job::makeBlob( $this->params )
+               );
+       }
+
+       /**
+        * Remove jobs in the job queue which are duplicates of this job.
+        * This is deadlock-prone and so starts its own transaction.
+        */
+       function removeDuplicates() {
+               if ( !$this->removeDuplicates ) {
+                       return;
+               }
+
+               $fields = $this->insertFields();
+               unset( $fields['job_id'] );
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->begin( __METHOD__ );
+               $dbw->delete( 'job', $fields, __METHOD__ );
+               $affected = $dbw->affectedRows();
+               $dbw->commit( __METHOD__ );
+               if ( $affected ) {
+                       wfIncrStats( 'job-dup-delete', $affected );
+               }
+       }
+
+       /**
+        * @return string
+        */
+       function toString() {
+               $paramString = '';
+               if ( $this->params ) {
+                       foreach ( $this->params as $key => $value ) {
+                               if ( $paramString != '' ) {
+                                       $paramString .= ' ';
+                               }
+                               $paramString .= "$key=$value";
+                       }
+               }
+
+               if ( is_object( $this->title ) ) {
+                       $s = "{$this->command} " . $this->title->getPrefixedDBkey();
+                       if ( $paramString !== '' ) {
+                               $s .= ' ' . $paramString;
+                       }
+                       return $s;
+               } else {
+                       return "{$this->command} $paramString";
+               }
+       }
+
+       protected function setLastError( $error ) {
+               $this->error = $error;
+       }
+
+       function getLastError() {
+               return $this->error;
+       }
+}
diff --git a/includes/job/JobQueue.php b/includes/job/JobQueue.php
deleted file mode 100644 (file)
index a53905f..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-<?php
-/**
- * Job queue base code.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @defgroup JobQueue JobQueue
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( "This file is part of MediaWiki, it is not a valid entry point\n" );
-}
-
-/**
- * Class to both describe a background job and handle jobs.
- *
- * @ingroup JobQueue
- */
-abstract class Job {
-
-       /**
-        * @var Title
-        */
-       var $title;
-
-       var $command,
-               $params,
-               $id,
-               $removeDuplicates,
-               $error;
-
-       /*-------------------------------------------------------------------------
-        * Abstract functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * Run the job
-        * @return boolean success
-        */
-       abstract function run();
-
-       /*-------------------------------------------------------------------------
-        * Static functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * Pop a job of a certain type.  This tries less hard than pop() to
-        * actually find a job; it may be adversely affected by concurrent job
-        * runners.
-        *
-        * @param $type string
-        *
-        * @return Job
-        */
-       static function pop_type( $type ) {
-               wfProfilein( __METHOD__ );
-
-               $dbw = wfGetDB( DB_MASTER );
-
-               $dbw->begin( __METHOD__ );
-
-               $row = $dbw->selectRow(
-                       'job',
-                       '*',
-                       array( 'job_cmd' => $type ),
-                       __METHOD__,
-                       array( 'LIMIT' => 1, 'FOR UPDATE' )
-               );
-
-               if ( $row === false ) {
-                       $dbw->commit( __METHOD__ );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               /* Ensure we "own" this row */
-               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-
-               if ( $affected == 0 ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               wfIncrStats( 'job-pop' );
-               $namespace = $row->job_namespace;
-               $dbkey = $row->job_title;
-               $title = Title::makeTitleSafe( $namespace, $dbkey );
-               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ),
-                       $row->job_id );
-
-               $job->removeDuplicates();
-
-               wfProfileOut( __METHOD__ );
-               return $job;
-       }
-
-       /**
-        * Pop a job off the front of the queue
-        *
-        * @param $offset Integer: Number of jobs to skip
-        * @return Job or false if there's no jobs
-        */
-       static function pop( $offset = 0 ) {
-               global $wgJobTypesExcludedFromDefaultQueue;
-               wfProfileIn( __METHOD__ );
-
-               $dbr = wfGetDB( DB_SLAVE );
-
-               /* Get a job from the slave, start with an offset,
-                       scan full set afterwards, avoid hitting purged rows
-
-                       NB: If random fetch previously was used, offset
-                               will always be ahead of few entries
-               */
-               $conditions = array();
-               if ( count( $wgJobTypesExcludedFromDefaultQueue ) != 0 ) {
-                       foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
-                               $conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
-                       }
-               }
-               $offset = intval( $offset );
-               $options = array( 'ORDER BY' => 'job_id', 'USE INDEX' => 'PRIMARY' );
-
-               $row = $dbr->selectRow( 'job', '*',
-                       array_merge( $conditions, array( "job_id >= $offset" ) ),
-                       __METHOD__,
-                       $options
-               );
-
-               // Refetching without offset is needed as some of job IDs could have had delayed commits
-               // and have lower IDs than jobs already executed, blame concurrency :)
-               //
-               if ( $row === false ) {
-                       if ( $offset != 0 ) {
-                               $row = $dbr->selectRow( 'job', '*', $conditions, __METHOD__, $options );
-                       }
-
-                       if ( $row === false ) {
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-               }
-
-               // Try to delete it from the master
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-
-               if ( !$affected ) {
-                       // Failed, someone else beat us to it
-                       // Try getting a random row
-                       $row = $dbw->selectRow( 'job', array( 'MIN(job_id) as minjob',
-                               'MAX(job_id) as maxjob' ), '1=1', __METHOD__ );
-                       if ( $row === false || is_null( $row->minjob ) || is_null( $row->maxjob ) ) {
-                               // No jobs to get
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       // Get the random row
-                       $row = $dbw->selectRow( 'job', '*',
-                               'job_id >= ' . mt_rand( $row->minjob, $row->maxjob ), __METHOD__ );
-                       if ( $row === false ) {
-                               // Random job gone before we got the chance to select it
-                               // Give up
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       // Delete the random row
-                       $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-                       $affected = $dbw->affectedRows();
-                       $dbw->commit( __METHOD__ );
-
-                       if ( !$affected ) {
-                               // Random job gone before we exclusively deleted it
-                               // Give up
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-               }
-
-               // If execution got to here, there's a row in $row that has been deleted from the database
-               // by this thread. Hence the concurrent pop was successful.
-               wfIncrStats( 'job-pop' );
-               $namespace = $row->job_namespace;
-               $dbkey = $row->job_title;
-               $title = Title::makeTitleSafe( $namespace, $dbkey );
-
-               if ( is_null( $title ) ) {
-                       return false;
-               }
-
-               $job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
-
-               // Remove any duplicates it may have later in the queue
-               $job->removeDuplicates();
-
-               wfProfileOut( __METHOD__ );
-               return $job;
-       }
-
-       /**
-        * Create the appropriate object to handle a specific job
-        *
-        * @param $command String: Job command
-        * @param $title Title: Associated title
-        * @param $params Array: Job parameters
-        * @param $id Int: Job identifier
-        * @return Job
-        */
-       static function factory( $command, Title $title, $params = false, $id = 0 ) {
-               global $wgJobClasses;
-               if( isset( $wgJobClasses[$command] ) ) {
-                       $class = $wgJobClasses[$command];
-                       return new $class( $title, $params, $id );
-               }
-               throw new MWException( "Invalid job command `{$command}`" );
-       }
-
-       /**
-        * @param $params
-        * @return string
-        */
-       static function makeBlob( $params ) {
-               if ( $params !== false ) {
-                       return serialize( $params );
-               } else {
-                       return '';
-               }
-       }
-
-       /**
-        * @param $blob
-        * @return bool|mixed
-        */
-       static function extractBlob( $blob ) {
-               if ( (string)$blob !== '' ) {
-                       return unserialize( $blob );
-               } else {
-                       return false;
-               }
-       }
-
-       /**
-        * Batch-insert a group of jobs into the queue.
-        * This will be wrapped in a transaction with a forced commit.
-        *
-        * This may add duplicate at insert time, but they will be
-        * removed later on, when the first one is popped.
-        *
-        * @param $jobs array of Job objects
-        */
-       static function batchInsert( $jobs ) {
-               if ( !count( $jobs ) ) {
-                       return;
-               }
-               $dbw = wfGetDB( DB_MASTER );
-               $rows = array();
-
-               /**
-                * @var $job Job
-                */
-               foreach ( $jobs as $job ) {
-                       $rows[] = $job->insertFields();
-                       if ( count( $rows ) >= 50 ) {
-                               # Do a small transaction to avoid slave lag
-                               $dbw->begin( __METHOD__ );
-                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                               $dbw->commit( __METHOD__ );
-                               $rows = array();
-                       }
-               }
-               if ( $rows ) { // last chunk
-                       $dbw->begin( __METHOD__ );
-                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                       $dbw->commit( __METHOD__ );
-               }
-               wfIncrStats( 'job-insert', count( $jobs ) );
-       }
-
-       /**
-        * Insert a group of jobs into the queue.
-        *
-        * Same as batchInsert() but does not commit and can thus
-        * be rolled-back as part of a larger transaction. However,
-        * large batches of jobs can cause slave lag.
-        *
-        * @param $jobs array of Job objects
-        */
-       static function safeBatchInsert( $jobs ) {
-               if ( !count( $jobs ) ) {
-                       return;
-               }
-               $dbw = wfGetDB( DB_MASTER );
-               $rows = array();
-               foreach ( $jobs as $job ) {
-                       $rows[] = $job->insertFields();
-                       if ( count( $rows ) >= 500 ) {
-                               $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-                               $rows = array();
-                       }
-               }
-               if ( $rows ) { // last chunk
-                       $dbw->insert( 'job', $rows, __METHOD__, 'IGNORE' );
-               }
-               wfIncrStats( 'job-insert', count( $jobs ) );
-       }
-
-       /*-------------------------------------------------------------------------
-        * Non-static functions
-        *------------------------------------------------------------------------*/
-
-       /**
-        * @param $command
-        * @param $title
-        * @param $params array
-        * @param int $id
-        */
-       function __construct( $command, $title, $params = false, $id = 0 ) {
-               $this->command = $command;
-               $this->title = $title;
-               $this->params = $params;
-               $this->id = $id;
-
-               // A bit of premature generalisation
-               // Oh well, the whole class is premature generalisation really
-               $this->removeDuplicates = true;
-       }
-
-       /**
-        * Insert a single job into the queue.
-        * @return bool true on success
-        */
-       function insert() {
-               $fields = $this->insertFields();
-
-               $dbw = wfGetDB( DB_MASTER );
-
-               if ( $this->removeDuplicates ) {
-                       $res = $dbw->select( 'job', array( '1' ), $fields, __METHOD__ );
-                       if ( $dbw->numRows( $res ) ) {
-                               return true;
-                       }
-               }
-               wfIncrStats( 'job-insert' );
-               return $dbw->insert( 'job', $fields, __METHOD__ );
-       }
-
-       /**
-        * @return array
-        */
-       protected function insertFields() {
-               $dbw = wfGetDB( DB_MASTER );
-               return array(
-                       'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ),
-                       'job_cmd' => $this->command,
-                       'job_namespace' => $this->title->getNamespace(),
-                       'job_title' => $this->title->getDBkey(),
-                       'job_timestamp' => $dbw->timestamp(),
-                       'job_params' => Job::makeBlob( $this->params )
-               );
-       }
-
-       /**
-        * Remove jobs in the job queue which are duplicates of this job.
-        * This is deadlock-prone and so starts its own transaction.
-        */
-       function removeDuplicates() {
-               if ( !$this->removeDuplicates ) {
-                       return;
-               }
-
-               $fields = $this->insertFields();
-               unset( $fields['job_id'] );
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
-               $dbw->delete( 'job', $fields, __METHOD__ );
-               $affected = $dbw->affectedRows();
-               $dbw->commit( __METHOD__ );
-               if ( $affected ) {
-                       wfIncrStats( 'job-dup-delete', $affected );
-               }
-       }
-
-       /**
-        * @return string
-        */
-       function toString() {
-               $paramString = '';
-               if ( $this->params ) {
-                       foreach ( $this->params as $key => $value ) {
-                               if ( $paramString != '' ) {
-                                       $paramString .= ' ';
-                               }
-                               $paramString .= "$key=$value";
-                       }
-               }
-
-               if ( is_object( $this->title ) ) {
-                       $s = "{$this->command} " . $this->title->getPrefixedDBkey();
-                       if ( $paramString !== '' ) {
-                               $s .= ' ' . $paramString;
-                       }
-                       return $s;
-               } else {
-                       return "{$this->command} $paramString";
-               }
-       }
-
-       protected function setLastError( $error ) {
-               $this->error = $error;
-       }
-
-       function getLastError() {
-               return $this->error;
-       }
-}
index 4ef59ed..cae3f12 100644 (file)
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
 require_once dirname( __FILE__ ) . '/Services_JSON.php';
 
 /**
index e9c2bad..fc75cdc 100644 (file)
@@ -152,6 +152,13 @@ class CSSMin {
                                $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
                                continue;
                        }
+
+                       // 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 );
+                       }
+
                        // Shortcuts
                        $embed = $match['embed'][0];
                        $pre = $match['pre'][0];
@@ -159,10 +166,9 @@ class CSSMin {
                        $query = $match['query'][0];
                        $url = "{$remote}/{$match['file'][0]}";
                        $file = "{$local}/{$match['file'][0]}";
-                       // bug 27052 - Guard against double slashes, because foo//../bar
-                       // apparently resolves to foo/bar on (some?) clients
-                       $url = preg_replace( '#([^:])//+#', '\1/', $url );
+
                        $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
index ef63335..ff5fc8a 100644 (file)
  * @file
  */
 
-class LogEventsList {
+class LogEventsList extends ContextSource {
        const NO_ACTION_LINK = 1;
        const NO_EXTRA_USER_LINKS = 2;
+       const USE_REVDEL_CHECKBOXES = 4;
 
-       /**
-        * @var Skin
-        */
-       private $skin;
-
-       /**
-        * @var OutputPage
-        */
-       private $out;
        public $flags;
 
        /**
@@ -48,13 +40,38 @@ class LogEventsList {
         */
        protected $mDefaultQuery;
 
-       public function __construct( $skin, $out, $flags = 0 ) {
-               $this->skin = $skin;
-               $this->out = $out;
+       /**
+        * Constructor.
+        * The first two parameters used to be $skin and $out, but now only a context
+        * is needed, that's why there's a second unused parameter.
+        *
+        * @param $context IContextSource Context to use; formerly it was Skin object.
+        * @param $unused void Unused; used to be an OutputPage object.
+        * @param $flags int flags; can be a combinaison of self::NO_ACTION_LINK,
+        *        self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
+        */
+       public function __construct( $context, $unused = null, $flags = 0 ) {
+               if ( $context instanceof IContextSource ) {
+                       $this->setContext( $context );
+               } else {
+                       // Old parameters, $context should be a Skin object
+                       $this->setContext( $context->getContext() );
+               }
+
                $this->flags = $flags;
                $this->preCacheMessages();
        }
 
+       /**
+        * Deprecated alias for getTitle(); do not use.
+        *
+        * @deprecated in 1.20; use getTitle() instead.
+        * @return Title object
+        */
+       public function getDisplayTitle() {
+               return $this->getTitle();
+       }
+
        /**
         * As we use the same small set of messages in various methods and that
         * they are called often, we call them once and save them in $this->message
@@ -66,7 +83,7 @@ class LogEventsList {
                                'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff',
                                'pipe-separator', 'revdel-restore-deleted', 'revdel-restore-visible' );
                        foreach( $messages as $msg ) {
-                               $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
+                               $this->message[$msg] = $this->msg( $msg )->escaped();
                        }
                }
        }
@@ -80,12 +97,13 @@ class LogEventsList {
                wfDeprecated( __METHOD__, '1.19' );
                // If only one log type is used, then show a special message...
                $headerType = (count($type) == 1) ? $type[0] : '';
+               $out = $this->getOutput();
                if( LogPage::isLogType( $headerType ) ) {
                        $page = new LogPage( $headerType );
-                       $this->out->setPageTitle( $page->getName()->text() );
-                       $this->out->addHTML( $page->getDescription()->parseAsBlock() );
+                       $out->setPageTitle( $page->getName()->text() );
+                       $out->addHTML( $page->getDescription()->parseAsBlock() );
                } else {
-                       $this->out->addHTML( wfMsgExt('alllogstext',array('parseinline')) );
+                       $out->addHTML( $this->msg( 'alllogstext' )->parse() );
                }
        }
 
@@ -105,16 +123,14 @@ class LogEventsList {
                $month = '', $filter = null, $tagFilter='' ) {
                global $wgScript, $wgMiserMode;
 
-               $action = $wgScript;
                $title = SpecialPage::getTitleFor( 'Log' );
-               $special = $title->getPrefixedDBkey();
 
                // For B/C, we take strings, but make sure they are converted...
                $types = ($types === '') ? array() : (array)$types;
 
                $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
 
-               $html = Html::hidden( 'title', $special );
+               $html = Html::hidden( 'title', $title->getPrefixedDBkey() );
 
                // Basic selectors
                $html .= $this->getTypeMenu( $types ) . "\n";
@@ -141,15 +157,15 @@ class LogEventsList {
                }
 
                // Submit button
-               $html .= Xml::submitButton( wfMsg( 'allpagessubmit' ) );
+               $html .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() );
 
                // Fieldset
-               $html = Xml::fieldset( wfMsg( 'log' ), $html );
+               $html = Xml::fieldset( $this->msg( 'log' )->text(), $html );
 
                // Form wrapping
-               $html = Xml::tags( 'form', array( 'action' => $action, 'method' => 'get' ), $html );
+               $html = Xml::tags( 'form', array( 'action' => $wgScript, 'method' => 'get' ), $html );
 
-               $this->out->addHTML( $html );
+               $this->getOutput()->addHTML( $html );
        }
 
        /**
@@ -157,9 +173,8 @@ class LogEventsList {
         * @return String: Formatted HTML
         */
        private function getFilterLinks( $filter ) {
-               global $wgLang;
                // show/hide links
-               $messages = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
+               $messages = array( $this->msg( 'show' )->escaped(), $this->msg( 'hide' )->escaped() );
                // Option value -> message mapping
                $links = array();
                $hiddens = ''; // keep track for "go" button
@@ -172,26 +187,23 @@ class LogEventsList {
                        $hideVal = 1 - intval($val);
                        $query[$queryKey] = $hideVal;
 
-                       $link = Linker::link(
+                       $link = Linker::linkKnown(
                                $this->getDisplayTitle(),
                                $messages[$hideVal],
                                array(),
-                               $query,
-                               array( 'known', 'noclasses' )
+                               $query
                        );
 
-                       $links[$type] = wfMsgHtml( "log-show-hide-{$type}", $link );
+                       $links[$type] = $this->msg( "log-show-hide-{$type}" )->rawParams( $link )->escaped();
                        $hiddens .= Html::hidden( "hide_{$type}_log", $val ) . "\n";
                }
                // Build links
-               return '<small>'.$wgLang->pipeList( $links ) . '</small>' . $hiddens;
+               return '<small>'.$this->getLanguage()->pipeList( $links ) . '</small>' . $hiddens;
        }
 
        private function getDefaultQuery() {
-               global $wgRequest;
-
                if ( !isset( $this->mDefaultQuery ) ) {
-                       $this->mDefaultQuery = $wgRequest->getQueryValues();
+                       $this->mDefaultQuery = $this->getRequest()->getQueryValues();
                        unset( $this->mDefaultQuery['title'] );
                        unset( $this->mDefaultQuery['dir'] );
                        unset( $this->mDefaultQuery['offset'] );
@@ -203,20 +215,6 @@ class LogEventsList {
                return $this->mDefaultQuery;
        }
 
-       /**
-        * Get the Title object of the page the links should point to.
-        * This is NOT the Title of the page the entries should be restricted to.
-        *
-        * @return Title object
-        */
-       public function getDisplayTitle() {
-               return $this->out->getTitle();
-       }
-
-       public function getContext() {
-               return $this->out->getContext();
-       }
-
        /**
         * @param $queryTypes Array
         * @return String: Formatted HTML
@@ -234,14 +232,12 @@ class LogEventsList {
         * @since 1.19
         */
        public function getTypeSelector() {
-               global $wgUser;
-
                $typesByName = array(); // Temporary array
                // First pass to load the log names
                foreach(  LogPage::validTypes() as $type ) {
                        $page = new LogPage( $type );
                        $restriction = $page->getRestriction();
-                       if ( $wgUser->isAllowed( $restriction ) ) {
+                       if ( $this->getUser()->isAllowed( $restriction ) ) {
                                $typesByName[$type] = $page->getName()->text();
                        }
                }
@@ -268,7 +264,7 @@ class LogEventsList {
         */
        private function getUserInput( $user ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( wfMsg( 'specialloguserlabel' ), 'user', 'mw-log-user', 15, $user ) .
+                       Xml::inputLabel( $this->msg( 'specialloguserlabel' )->text(), 'user', 'mw-log-user', 15, $user ) .
                        '</span>';
        }
 
@@ -278,7 +274,7 @@ class LogEventsList {
         */
        private function getTitleInput( $title ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( wfMsg( 'speciallogtitlelabel' ), 'page', 'mw-log-page', 20, $title ) .
+                       Xml::inputLabel( $this->msg( 'speciallogtitlelabel' )->text(), 'page', 'mw-log-page', 20, $title ) .
                        '</span>';
        }
 
@@ -288,7 +284,7 @@ class LogEventsList {
         */
        private function getTitlePattern( $pattern ) {
                return '<span style="white-space: nowrap">' .
-                       Xml::checkLabel( wfMsg( 'log-title-wildcard' ), 'pattern', 'pattern', $pattern ) .
+                       Xml::checkLabel( $this->msg( 'log-title-wildcard' )->text(), 'pattern', 'pattern', $pattern ) .
                        '</span>';
        }
 
@@ -297,14 +293,13 @@ class LogEventsList {
         * @return string
         */
        private function getExtraInputs( $types ) {
-               global $wgRequest;
-               $offender = $wgRequest->getVal('offender');
+               $offender = $this->getRequest()->getVal( 'offender' );
                $user = User::newFromName( $offender, false );
                if( !$user || ($user->getId() == 0 && !IP::isIPAddress($offender) ) ) {
                        $offender = ''; // Blank field if invalid
                }
                if( count($types) == 1 && $types[0] == 'suppress' ) {
-                       return Xml::inputLabel( wfMsg('revdelete-offender'), 'offender',
+                       return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
                                'mw-log-offender', 20, $offender );
                }
                return '';
@@ -331,6 +326,7 @@ class LogEventsList {
        public function logLine( $row ) {
                $entry = DatabaseLogEntry::newFromRow( $row );
                $formatter = LogFormatter::newFromEntry( $entry );
+               $formatter->setContext( $this->getContext() );
                $formatter->setShowUserToolLinks( !( $this->flags & self::NO_EXTRA_USER_LINKS ) );
 
                $action = $formatter->getActionText();
@@ -358,9 +354,8 @@ class LogEventsList {
        }
 
        private function logTimestamp( LogEntry $entry ) {
-               global $wgLang;
-               $time = $wgLang->timeanddate( wfTimestamp( TS_MW, $entry->getTimestamp() ), true );
-               return htmlspecialchars( $time );
+               return htmlspecialchars( $this->getLanguage()->userTimeAndDate(
+                       $entry->getTimestamp(), $this->getUser() ) );
        }
 
        /**
@@ -373,7 +368,6 @@ class LogEventsList {
         * @return String
         */
        private function logActionLinks( $row, $title, $paramArray, &$comment ) {
-               global $wgUser;
                if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the action
                        || self::isDeleted( $row, LogPage::DELETED_ACTION ) ) // action is hidden
                {
@@ -383,53 +377,45 @@ class LogEventsList {
                if( self::typeAction( $row, 'move', 'move', 'move' ) && !empty( $paramArray[0] ) ) {
                        $destTitle = Title::newFromText( $paramArray[0] );
                        if( $destTitle ) {
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Movepage' ),
                                        $this->message['revertmove'],
                                        array(),
                                        array(
                                                'wpOldTitle' => $destTitle->getPrefixedDBkey(),
                                                'wpNewTitle' => $title->getPrefixedDBkey(),
-                                               'wpReason'   => wfMsgForContent( 'revertmove' ),
+                                               'wpReason'   => $this->msg( 'revertmove' )->inContentLanguage()->text(),
                                                'wpMovetalk' => 0
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                        }
                // Show undelete link
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
-                       if( !$wgUser->isAllowed( 'undelete' ) ) {
+                       if( !$this->getUser()->isAllowed( 'undelete' ) ) {
                                $viewdeleted = $this->message['undeleteviewlink'];
                        } else {
                                $viewdeleted = $this->message['undeletelink'];
                        }
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Undelete' ),
                                $viewdeleted,
                                array(),
-                               array( 'target' => $title->getPrefixedDBkey() ),
-                               array( 'known', 'noclasses' )
+                               array( 'target' => $title->getPrefixedDBkey() )
                         );
-                       $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unblock/change block link
                } elseif( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Unblock', $row->log_title ),
-                                       $this->message['unblocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['unblocklink']
                                ) .
                                $this->message['pipe-separator'] .
-                               Linker::link(
+                               Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Block', $row->log_title ),
-                                       $this->message['change-blocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['change-blocklink']
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show change protection link
                } elseif( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
                        $revert .= Linker::link( $title,
@@ -440,7 +426,7 @@ class LogEventsList {
                                                'offset' => $row->log_timestamp
                                        )
                                );
-                       if( $wgUser->isAllowed( 'protect' ) ) {
+                       if( $this->getUser()->isAllowed( 'protect' ) ) {
                                $revert .= $this->message['pipe-separator'] .
                                        Linker::link( $title,
                                                $this->message['protect_change'],
@@ -448,10 +434,10 @@ class LogEventsList {
                                                array( 'action' => 'protect' ),
                                                'known' );
                        }
-                       $revert = ' ' . wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = ' ' . $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unmerge link
                } elseif( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'MergeHistory' ),
                                $this->message['revertmerge'],
                                array(),
@@ -459,10 +445,9 @@ class LogEventsList {
                                        'target' => $paramArray[0],
                                        'dest' => $title->getPrefixedDBkey(),
                                        'mergepoint' => $paramArray[1]
-                               ),
-                               array( 'known', 'noclasses' )
+                               )
                        );
-                       $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                       $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                // If an edit was hidden from a page give a review link to the history
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
                        $revert = RevisionDeleter::getLogLinks( $title, $paramArray,
@@ -474,7 +459,7 @@ class LogEventsList {
                                // $paramArray[1] is a CSV of the IDs
                                $query = $paramArray[0];
                                // Link to each hidden object ID, $paramArray[1] is the url param
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        $revdel,
                                        $this->message['revdel-restore'],
                                        array(),
@@ -482,10 +467,9 @@ class LogEventsList {
                                                'target' => $title->getPrefixedText(),
                                                'type' => 'logging',
                                                'ids' => $query
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
-                               $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
+                               $revert = $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                        }
                // Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
                } else {
@@ -503,21 +487,33 @@ class LogEventsList {
         * @return string
         */
        private function getShowHideLinks( $row ) {
-               global $wgUser;
-               if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the links
+               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
                        return '';
                }
                $del = '';
-               // Don't show useless link to people who cannot hide revisions
-               if( $wgUser->isAllowed( 'deletedhistory' ) ) {
-                       if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
-                               $canHide = $wgUser->isAllowed( 'deleterevision' );
-                               // If event was hidden from sysops
-                               if( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) {
-                                       $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
+               $user = $this->getUser();
+               // Don't show useless checkbox to people who cannot hide revisions
+               if( $user->isAllowed( 'deletedhistory' ) ) {
+                       if( $row->log_deleted || $user->isAllowed( 'deleterevision' ) ) {
+                               $canHide = $user->isAllowed( 'deleterevision' );
+                               if ( $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
+                                               $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
+                                       } else {
+                                               $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+                                       }
                                } else {
-                                       $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
+                                               $del = Linker::revDeleteLinkDisabled( $canHide );
+                                       } else {
+                                               $query = array(
+                                                       'target' => SpecialPage::getTitleFor( 'Log', $row->log_type )->getPrefixedDBkey(),
+                                                       'type'   => 'logging',
+                                                       'ids'    => $row->log_id,
+                                               );
+                                               $del = Linker::revDeleteLink( $query, self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
+                                       }
                                }
                        }
                }
@@ -608,8 +604,8 @@ class LogEventsList {
         *   if set to true (default), "No matching items in log" is displayed if loglist is empty
         * - msgKey Array If you want a nice box with a message, set this to the key of the message.
         *   First element is the message key, additional optional elements are parameters for the key
-        *   that are processed with wfMsgExt and option 'parse'
-        * - offset Set to overwrite offset parameter in $wgRequest
+        *   that are processed with wfMessage
+        * - offset Set to overwrite offset parameter in WebRequest
         *   set to '' to unset offset
         * - wrap String Wrap the message in html (usually something like "<div ...>$1</div>").
         * - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
@@ -647,9 +643,9 @@ class LogEventsList {
                }
 
                # Insert list of top 50 (or top $lim) items
-               $loglist = new LogEventsList( $context->getSkin(), $context->getOutput(), $flags );
+               $loglist = new LogEventsList( $context, null, $flags );
                $pager = new LogPager( $loglist, $types, $user, $page, '', $conds );
-               if ( isset( $param['offset'] ) ) { # Tell pager to ignore $wgRequest offset
+               if ( isset( $param['offset'] ) ) { # Tell pager to ignore WebRequest offset
                        $pager->setOffset( $param['offset'] );
                }
                if( $lim > 0 ) $pager->mLimit = $lim;
@@ -660,11 +656,11 @@ class LogEventsList {
                                $s = '<div class="mw-warning-with-logexcerpt">';
 
                                if ( count( $msgKey ) == 1 ) {
-                                       $s .= wfMsgExt( $msgKey[0], array( 'parse' ) );
+                                       $s .= $context->msg( $msgKey[0] )->parseAsBlock();
                                } else { // Process additional arguments
                                        $args = $msgKey;
                                        array_shift( $args );
-                                       $s .= wfMsgExt( $msgKey[0], array( 'parse' ), $args );
+                                       $s .= $context->msg( $msgKey[0], $args )->parseAsBlock();
                                }
                        }
                        $s .= $loglist->beginLogEventsList() .
@@ -673,7 +669,7 @@ class LogEventsList {
                } else {
                        if ( $showIfEmpty ) {
                                $s = Html::rawElement( 'div', array( 'class' => 'mw-warning-logempty' ),
-                                       wfMsgExt( 'logempty', array( 'parseinline' ) ) );
+                                       $context->msg( 'logempty' )->parse() );
                        }
                }
                if( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
@@ -692,7 +688,7 @@ class LogEventsList {
                                $urlParam['type'] = $types[0];
                        $s .= Linker::link(
                                SpecialPage::getTitleFor( 'Log' ),
-                               wfMsgHtml( 'log-fulllog' ),
+                               $context->msg( 'log-fulllog' )->escaped(),
                                array(),
                                $urlParam
                        );
diff --git a/includes/mobile/DeviceDetection.php b/includes/mobile/DeviceDetection.php
new file mode 100644 (file)
index 0000000..bca6985
--- /dev/null
@@ -0,0 +1,459 @@
+<?php
+/**
+ * Mobile device detection code
+ *
+ * Copyright © 2011 Patrick Reilly
+ * http://www.mediawiki.org/
+ *
+ * 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
+ */
+
+/**
+ * Base for classes describing devices and their capabilities
+ * @since 1.20
+ */
+interface IDeviceProperties {
+       /**
+        * @return string: 'html' or 'wml'
+        */
+       function format();
+
+       /**
+        * @return bool
+        */
+       function supportsJavaScript();
+
+       /**
+        * @return bool
+        */
+       function supportsJQuery();
+
+       /**
+        * @return bool
+        */
+       function disableZoom();
+}
+
+/**
+ * @since 1.20
+ */
+interface IDeviceDetector {
+       /**
+        * @param $userAgent
+        * @param string $acceptHeader
+        * @return IDeviceProperties
+        */
+       function detectDeviceProperties( $userAgent, $acceptHeader = '' );
+
+       /**
+        * @param $deviceName
+        * @return IDeviceProperties
+        */
+       function getDeviceProperties( $deviceName );
+
+       /**
+        * @param $userAgent string
+        * @param $acceptHeader string
+        * @return string
+        */
+       function detectDeviceName( $userAgent, $acceptHeader = '' );
+}
+
+/**
+ * MediaWiki's default IDeviceProperties implementation
+ */
+final class DeviceProperties implements IDeviceProperties {
+       private $device;
+
+       public function __construct( array $deviceCapabilities ) {
+               $this->device = $deviceCapabilities;
+       }
+
+       /**
+        * @return string
+        */
+       function format() {
+               return $this->device['view_format'];
+       }
+
+       /**
+        * @return bool
+        */
+       function supportsJavaScript() {
+               return $this->device['supports_javascript'];
+       }
+
+       /**
+        * @return bool
+        */
+       function supportsJQuery() {
+               return $this->device['supports_jquery'];
+       }
+
+       /**
+        * @return bool
+        */
+       function disableZoom() {
+               return $this->device['disable_zoom'];
+       }
+}
+
+/**
+ * Provides abstraction for a device.
+ * A device can select which format a request should receive and
+ * may be extended to provide access to particular device functionality.
+ * @since 1.20
+ */
+class DeviceDetection implements IDeviceDetector {
+
+       private static $formats = array (
+                       'html' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'default',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'capable' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'default',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => true,
+                       ),
+                       'webkit' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'webkit',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => false,
+                       ),
+                       'ie' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'default',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => false,
+                       ),
+                       'android' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'android',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => false,
+                       ),
+                       'iphone' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'iphone',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => false,
+                       ),
+                       'iphone2' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'iphone2',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => true,
+                       ),
+                       'native_iphone' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'default',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => false,
+                       ),
+                       'palm_pre' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'palm_pre',
+                               'supports_javascript' => true,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'kindle' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'kindle',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'kindle2' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'kindle',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'blackberry' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'blackberry',
+                               'supports_javascript' => true,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'blackberry-lt5' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'blackberry',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'netfront' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'simple',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'wap2' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'simple',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'psp' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'psp',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'ps3' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'simple',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'wii' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'wii',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => true,
+                       ),
+                       'operamini' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'operamini',
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'operamobile' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'operamobile',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => true,
+                       ),
+                       'nokia' => array (
+                               'view_format' => 'html',
+                               'css_file_name' => 'nokia',
+                               'supports_javascript' => true,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+                       'wml' => array (
+                               'view_format' => 'wml',
+                               'css_file_name' => null,
+                               'supports_javascript' => false,
+                               'supports_jquery' => false,
+                               'disable_zoom' => true,
+                       ),
+               );
+
+       /**
+        * Returns an instance of detection class, overridable by extensions
+        * @return IDeviceDetector
+        */
+       public static function factory() {
+               global $wgDeviceDetectionClass;
+
+               static $instance = null;
+               if ( !$instance ) {
+                       $instance = new $wgDeviceDetectionClass();
+               }
+               return $instance;
+       }
+
+       /**
+        * @deprecated: Deprecated, will be removed once detectDeviceProperties() will be deployed everywhere on WMF
+        * @param $userAgent
+        * @param string $acceptHeader
+        * @return array
+        */
+       public function detectDevice( $userAgent, $acceptHeader = '' ) {
+               $formatName = $this->detectFormatName( $userAgent, $acceptHeader );
+               return $this->getDevice( $formatName );
+       }
+
+       /**
+        * @param $userAgent
+        * @param string $acceptHeader
+        * @return IDeviceProperties
+        */
+       public function detectDeviceProperties( $userAgent, $acceptHeader = '' ) {
+               $deviceName = $this->detectDeviceName( $userAgent, $acceptHeader );
+               return $this->getDeviceProperties( $deviceName );
+       }
+
+       /**
+        * @deprecated: Deprecated, will be removed once detectDeviceProperties() will be deployed everywhere on WMF
+        * @param $formatName
+        * @return array
+        */
+       public function getDevice( $formatName ) {
+               return ( isset( self::$formats[$formatName] ) ) ? self::$formats[$formatName] : array();
+       }
+
+       /**
+        * @param $deviceName
+        * @return IDeviceProperties
+        */
+       public function getDeviceProperties( $deviceName ) {
+               if ( isset( self::$formats[$deviceName] ) ) {
+                       return new DeviceProperties( self::$formats[$deviceName] );
+               } else {
+                       return new DeviceProperties( array(
+                               'view_format' => 'html',
+                               'css_file_name' => 'default',
+                               'supports_javascript' => true,
+                               'supports_jquery' => true,
+                               'disable_zoom' => true,
+                       ) );
+               }
+       }
+
+       /**
+        * @deprecated: Renamed to detectDeviceName()
+        * @param $userAgent string
+        * @param $acceptHeader string
+        * @return string
+        */
+       public function detectFormatName( $userAgent, $acceptHeader = '' ) {
+               return $this->detectDeviceName( $userAgent, $acceptHeader );
+       }
+
+       /**
+        * @param $userAgent string
+        * @param $acceptHeader string
+        * @return string
+        */
+       public function detectDeviceName( $userAgent, $acceptHeader = '' ) {
+               wfProfileIn( __METHOD__ );
+
+               $deviceName = '';
+               if ( preg_match( '/Android/', $userAgent ) ) {
+                       $deviceName = 'android';
+                       if ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
+                               $deviceName = 'operamini';
+                       }
+               } else if ( preg_match( '/MSIE 9.0/', $userAgent ) ||
+                               preg_match( '/MSIE 8.0/', $userAgent ) ) {
+                       $deviceName = 'ie';
+               } else if( preg_match( '/MSIE/', $userAgent ) ) {
+                       $deviceName = 'html';
+               } else if ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
+                       $deviceName = 'operamobile';
+               } elseif ( preg_match( '/iPad.* Safari/', $userAgent ) ) {
+                       $deviceName = 'iphone';
+               } elseif ( preg_match( '/iPhone.* Safari/', $userAgent ) ) {
+                       if ( strpos( $userAgent, 'iPhone OS 2' ) !== false ) {
+                               $deviceName = 'iphone2';
+                       } else {
+                               $deviceName = 'iphone';
+                       }
+               } elseif ( preg_match( '/iPhone/', $userAgent ) ) {
+                       if ( strpos( $userAgent, 'Opera' ) !== false ) {
+                               $deviceName = 'operamini';
+                       } else {
+                               $deviceName = 'native_iphone';
+                       }
+               } elseif ( preg_match( '/WebKit/', $userAgent ) ) {
+                       if ( preg_match( '/Series60/', $userAgent ) ) {
+                               $deviceName = 'nokia';
+                       } elseif ( preg_match( '/webOS/', $userAgent ) ) {
+                               $deviceName = 'palm_pre';
+                       } else {
+                               $deviceName = 'webkit';
+                       }
+               } elseif ( preg_match( '/Opera/', $userAgent ) ) {
+                       if ( strpos( $userAgent, 'Nintendo Wii' ) !== false ) {
+                               $deviceName = 'wii';
+                       } elseif ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
+                               $deviceName = 'operamini';
+                       } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
+                               $deviceName = 'iphone';
+                       } else {
+                               $deviceName = 'webkit';
+                       }
+               } elseif ( preg_match( '/Kindle\/1.0/', $userAgent ) ) {
+                       $deviceName = 'kindle';
+               } elseif ( preg_match( '/Kindle\/2.0/', $userAgent ) ) {
+                       $deviceName = 'kindle2';
+               } elseif ( preg_match( '/Firefox/', $userAgent ) ) {
+                       $deviceName = 'capable';
+               } elseif ( preg_match( '/NetFront/', $userAgent ) ) {
+                       $deviceName = 'netfront';
+               } elseif ( preg_match( '/SEMC-Browser/', $userAgent ) ) {
+                       $deviceName = 'wap2';
+               } elseif ( preg_match( '/Series60/', $userAgent ) ) {
+                       $deviceName = 'wap2';
+               } elseif ( preg_match( '/PlayStation Portable/', $userAgent ) ) {
+                       $deviceName = 'psp';
+               } elseif ( preg_match( '/PLAYSTATION 3/', $userAgent ) ) {
+                       $deviceName = 'ps3';
+               } elseif ( preg_match( '/SAMSUNG/', $userAgent ) ) {
+                       $deviceName = 'capable';
+               } elseif ( preg_match( '/BlackBerry/', $userAgent ) ) {
+                       if( preg_match( '/BlackBerry[^\/]*\/[1-4]\./', $userAgent ) ) {
+                               $deviceName = 'blackberry-lt5';
+                       } else {
+                               $deviceName = 'blackberry';
+                       }
+               }
+
+               if ( $deviceName === '' ) {
+                       if ( strpos( $acceptHeader, 'application/vnd.wap.xhtml+xml' ) !== false ) {
+                               // Should be wap2
+                               $deviceName = 'html';
+                       } elseif ( strpos( $acceptHeader, 'vnd.wap.wml' ) !== false ) {
+                               $deviceName = 'wml';
+                       } else {
+                               $deviceName = 'html';
+                       }
+               }
+               wfProfileOut( __METHOD__ );
+               return $deviceName;
+       }
+
+       /**
+        * @return array: List of all device-specific stylesheets
+        */
+       public function getCssFiles() {
+               $files = array();
+
+               foreach ( self::$formats as $dev ) {
+                       if ( isset( $dev['css_file_name'] ) ) {
+                               $files[] = $dev['css_file_name'];
+                       }
+               }
+               return array_unique( $files );
+       }
+}
index 6c4d8b7..5142a41 100644 (file)
@@ -6,6 +6,21 @@
  * since this file will not be executed during request startup for a compiled
  * MediaWiki.
  *
+ * 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 UtfNormal
  */
index f478fa9..691bfaa 100644 (file)
@@ -1,7 +1,22 @@
 #!/usr/bin/php
 <?php
 /**
- * Other tests for the unicode normalization module
+ * Other tests for the unicode normalization module.
+ *
+ * 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 UtfNormal
index 2b26640..e6ba042 100644 (file)
@@ -60,20 +60,6 @@ abstract class BagOStuff {
         */
        abstract public function get( $key );
 
-       /**
-        * Get an associative array containing the item for each of the given keys.
-        * Each item will be false if it does not exist.
-        * @param $keys Array List of strings
-        * @return Array
-        */
-       public function getMulti( array $keys ) {
-               $res = array();
-               foreach ( $keys as $key ) {
-                       $res[$key] = $this->get( $key );
-               }
-               return $res;
-       }
-
        /**
         * Set an item.
         * @param $key string
@@ -135,6 +121,22 @@ abstract class BagOStuff {
 
        /* *** Emulated functions *** */
 
+       /**
+        * Get an associative array containing the item for each of the keys that have items.
+        * @param $keys Array List of strings
+        * @return Array
+        */
+       public function getMulti( array $keys ) {
+               $res = array();
+               foreach ( $keys as $key ) {
+                       $val = $this->get( $key );
+                       if ( $val !== false ) {
+                               $res[$key] = $val;
+                       }
+               }
+               return $res;
+       }
+
        /**
         * @param $key string
         * @param $value mixed
@@ -142,10 +144,10 @@ abstract class BagOStuff {
         * @return bool success
         */
        public function add( $key, $value, $exptime = 0 ) {
-               if ( !$this->get( $key ) ) {
+               if ( $this->get( $key ) === false ) {
                        return $this->set( $key, $value, $exptime );
                }
-               return true;
+               return false; // key already set
        }
 
        /**
@@ -157,7 +159,7 @@ abstract class BagOStuff {
                if ( $this->get( $key ) !== false ) {
                        return $this->set( $key, $value, $exptime );
                }
-               return true;
+               return false; // key not already set
        }
 
        /**
index d03771e..63ad4de 100644 (file)
@@ -28,7 +28,7 @@
  * for systems that don't have it.
  *
  * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wgTmpDirectory).
+ * to override the default DBA files directory (wfTempDir()).
  *
  * @ingroup Cache
  */
@@ -39,8 +39,7 @@ class DBABagOStuff extends BagOStuff {
                global $wgDBAhandler;
 
                if ( !isset( $params['dir'] ) ) {
-                       global $wgTmpDirectory;
-                       $params['dir'] = $wgTmpDirectory;
+                       $params['dir'] = wfTempDir();
                }
 
                $this->mFile = $params['dir']."/mw-cache-" . wfWikiID();
index 3c26487..65d736a 100644 (file)
  * @file
  * @ingroup Cache
  */
+
 /**
  * A wrapper class for the PECL memcached client
- * 
+ *
  * @ingroup Cache
  */
 class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
@@ -37,7 +37,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
         *   - compress_threshold:  The minimum size an object must be before it is compressed
         *   - timeout:             The read timeout in microseconds
         *   - connect_timeout:     The connect timeout in seconds
-        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact 
+        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact
         *                          values, but serialization is much slower unless the php.ini option
         *                          igbinary.compact_strings is off.
         */
@@ -45,7 +45,14 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $params = $this->applyDefaultParams( $params );
 
                if ( $params['persistent'] ) {
-                       $this->client = new Memcached( __CLASS__ );
+                       // The pool ID must be unique to the server/option combination.
+                       // The Memcached object is essentially shared for each pool ID.
+                       // We can only resuse a pool ID if we keep the config consistent.
+                       $this->client = new Memcached( md5( serialize( $params ) ) );
+                       if ( count( $this->client->getServerList() ) ) {
+                               wfDebug( __METHOD__ . ": persistent Memcached object already loaded.\n" );
+                               return; // already initialized; don't add duplicate servers
+                       }
                } else {
                        $this->client = new Memcached;
                }
@@ -54,8 +61,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        $params['serializer'] = 'php';
                }
 
-               // The compression threshold is an undocumented php.ini option for some 
-               // reason. There's probably not much harm in setting it globally, for 
+               // The compression threshold is an undocumented php.ini option for some
+               // reason. There's probably not much harm in setting it globally, for
                // compatibility with the settings for the PHP client.
                ini_set( 'memcached.compression_threshold', $params['compress_threshold'] );
 
@@ -65,10 +72,10 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $this->client->setOption( Memcached::OPT_RECV_TIMEOUT, $params['timeout'] );
                $this->client->setOption( Memcached::OPT_POLL_TIMEOUT, $params['timeout'] / 1000 );
 
-               // Set libketama mode since it's recommended by the documentation and 
+               // Set libketama mode since it's recommended by the documentation and
                // is as good as any. There's no way to configure libmemcached to use
                // hashes identical to the ones currently in use by the PHP client, and
-               // even implementing one of the libmemcached hashes in pure PHP for 
+               // even implementing one of the libmemcached hashes in pure PHP for
                // forwards compatibility would require MWMemcached::get_sock() to be
                // rewritten.
                $this->client->setOption( Memcached::OPT_LIBKETAMA_COMPATIBLE, true );
@@ -80,7 +87,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                                break;
                        case 'igbinary':
                                if ( !Memcached::HAVE_IGBINARY ) {
-                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' . 
+                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' .
                                                'but igbinary serialization was requested.' );
                                }
                                $this->client->setOption( Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY );
@@ -88,10 +95,11 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        default:
                                throw new MWException( __CLASS__.': invalid value for serializer parameter' );
                }
+               $servers = array();
                foreach ( $params['servers'] as $host ) {
-                       list( $ip, $port ) = IP::splitHostAndPort( $host );
-                       $this->client->addServer( $ip, $port );
+                       $servers[] = IP::splitHostAndPort( $host ); // (ip, port)
                }
+               $this->client->addServers( $servers );
        }
 
        /**
@@ -174,12 +182,12 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
        }
 
        /**
-        * Check the return value from a client method call and take any necessary 
-        * action. Returns the value that the wrapper function should return. At 
+        * Check the return value from a client method call and take any necessary
+        * action. Returns the value that the wrapper function should return. At
         * present, the return value is always the same as the return value from
-        * the client, but some day we might find a case where it should be 
+        * the client, but some day we might find a case where it should be
         * different.
-        * 
+        *
         * @param $key The key used by the caller, or false if there wasn't one.
         * @param $result The return value
         */
@@ -220,8 +228,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                return $this->checkResult( false, $result );
        }
 
-       /* NOTE: there is no cas() method here because it is currently not supported 
-        * by the BagOStuff interface and other BagOStuff subclasses, such as 
+       /* NOTE: there is no cas() method here because it is currently not supported
+        * by the BagOStuff interface and other BagOStuff subclasses, such as
         * SqlBagOStuff.
         */
 }
index e504887..209975b 100644 (file)
@@ -87,25 +87,34 @@ class SqlBagOStuff extends BagOStuff {
         * @return DatabaseBase
         */
        protected function getDB() {
+               global $wgDebugDBTransactions;
                if ( !isset( $this->db ) ) {
                        # If server connection info was given, use that
                        if ( $this->serverInfo ) {
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug( sprintf( "Using provided serverInfo for SqlBagOStuff\n" ) );
+                               }
                                $this->lb = new LoadBalancer( array(
                                        'servers' => array( $this->serverInfo ) ) );
                                $this->db = $this->lb->getConnection( DB_MASTER );
                                $this->db->clearFlag( DBO_TRX );
                        } else {
-                               # We must keep a separate connection to MySQL in order to avoid deadlocks
-                               # However, SQLite has an opposite behaviour.
-                               # @todo Investigate behaviour for other databases
-                               if ( wfGetDB( DB_MASTER )->getType() == 'sqlite' ) {
-                                       $this->db = wfGetDB( DB_MASTER );
-                               } else {
+                               /*
+                                * We must keep a separate connection to MySQL in order to avoid deadlocks
+                                * However, SQLite has an opposite behaviour. And PostgreSQL needs to know
+                                * if we are in transaction or no
+                                */
+                               if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                                        $this->lb = wfGetLBFactory()->newMainLB();
                                        $this->db = $this->lb->getConnection( DB_MASTER );
                                        $this->db->clearFlag( DBO_TRX );
+                               } else {
+                                       $this->db = wfGetDB( DB_MASTER );
                                }
                        }
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $this->db ) );
+                       }
                }
 
                return $this->db;
index 35f187f..7bd2aab 100644 (file)
@@ -2720,6 +2720,18 @@ class Parser {
                                $subjPage = $this->mTitle->getSubjectPage();
                                $value = wfEscapeWikiText( $subjPage->getPrefixedUrl() );
                                break;
+                       case 'pageid': // requested in bug 23427
+                               $pageid = $this->getTitle()->getArticleId();
+                               if( $pageid == 0 ) {
+                                       # 0 means the page doesn't exist in the database,
+                                       # which means the user is previewing a new page.
+                                       # The vary-revision flag must be set, because the magic word
+                                       # will have a different value once the page is saved.
+                                       $this->mOutput->setFlag( 'vary-revision' );
+                                       wfDebug( __METHOD__ . ": {{PAGEID}} used in a new page, setting vary-revision...\n" );
+                               }
+                               $value = $pageid ? $pageid : null;
+                               break;
                        case 'revisionid':
                                # Let the edit saving system know we should parse the page
                                # *after* a revision ID has been assigned.
@@ -2859,7 +2871,8 @@ class Parser {
                                $value = $pageLang->formatNum( SiteStats::edits() );
                                break;
                        case 'numberofviews':
-                               $value = $pageLang->formatNum( SiteStats::views() );
+                               global $wgDisableCounters;
+                               $value = !$wgDisableCounters ? $pageLang->formatNum( SiteStats::views() ) : '';
                                break;
                        case 'currenttimestamp':
                                $value = wfTimestamp( TS_MW, $ts );
@@ -4170,7 +4183,7 @@ class Parser {
                        # Don't number the heading if it is the only one (looks silly)
                        if ( count( $matches[3] ) > 1 && $this->mOptions->getNumberHeadings() ) {
                                # the two are different if the line contains a link
-                               $headline = $numbering . ' ' . $headline;
+                               $headline = Html::element( 'span', array( 'class' => 'mw-headline-number' ), $numbering ) . ' ' . $headline;
                        }
 
                        # Create the anchor for linking from the TOC to the section
@@ -4401,7 +4414,7 @@ class Parser {
 
                $p1 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\))\\|]]/";           # [[ns:page (context)|]]
                $p4 = "/\[\[(:?$nc+:|:|)($tc+?)( ?($tc+))\\|]]/";           # [[ns:page(context)|]]
-               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)($tc+|)\\|]]/"; # [[ns:page (context), context|]]
+               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)((?:, |,)$tc+|)\\|]]/"; # [[ns:page (context), context|]]
                $p2 = "/\[\[\\|($tc+)]]/";                                      # [[|page]]
 
                # try $p1 first, to turn "[[A, B (C)|]]" into "[[A, B (C)|A, B]]"
index 3d2f2f8..19bcbf2 100644 (file)
@@ -78,15 +78,19 @@ interface PPFrame {
 
        const RECOVER_ORIG = 27; // = 1|2|8|16 no constant expression support in PHP yet
 
+       /** This constant exists when $indexOffset is supported in newChild() */
+       const SUPPORTS_INDEX_OFFSET = 1;
+
        /**
         * Create a child frame
         *
         * @param $args array
         * @param $title Title
+        * @param $indexOffset A number subtracted from the index attributes of the arguments
         *
         * @return PPFrame
         */
-       function newChild( $args = false, $title = false );
+       function newChild( $args = false, $title = false, $indexOffset = 0 );
 
        /**
         * Expand a document tree node
index 5bb951b..f991df2 100644 (file)
@@ -926,7 +926,7 @@ class PPFrame_DOM implements PPFrame {
         *
         * @return PPTemplateFrame_DOM
         */
-       function newChild( $args = false, $title = false ) {
+       function newChild( $args = false, $title = false, $indexOffset = 0 ) {
                $namedArgs = array();
                $numberedArgs = array();
                if ( $title === false ) {
@@ -938,6 +938,9 @@ class PPFrame_DOM implements PPFrame {
                                $args = $args->node;
                        }
                        foreach ( $args as $arg ) {
+                               if ( $arg instanceof PPNode ) {
+                                       $arg = $arg->node;
+                               }
                                if ( !$xpath ) {
                                        $xpath = new DOMXPath( $arg->ownerDocument );
                                }
@@ -947,6 +950,7 @@ class PPFrame_DOM implements PPFrame {
                                if ( $nameNodes->item( 0 )->hasAttributes() ) {
                                        // Numbered parameter
                                        $index = $nameNodes->item( 0 )->attributes->getNamedItem( 'index' )->textContent;
+                                       $index = $index - $indexOffset;
                                        $numberedArgs[$index] = $value->item( 0 );
                                        unset( $namedArgs[$index] );
                                } else {
@@ -1549,6 +1553,10 @@ class PPCustomFrame_DOM extends PPFrame_DOM {
                }
                return $this->args[$index];
        }
+
+       function getArguments() {
+               return $this->args;
+       }
 }
 
 /**
index 32ba707..f455a1d 100644 (file)
@@ -888,7 +888,7 @@ class PPFrame_Hash implements PPFrame {
         *
         * @return PPTemplateFrame_Hash
         */
-       function newChild( $args = false, $title = false ) {
+       function newChild( $args = false, $title = false, $indexOffset = 0 ) {
                $namedArgs = array();
                $numberedArgs = array();
                if ( $title === false ) {
@@ -904,8 +904,9 @@ class PPFrame_Hash implements PPFrame {
                                $bits = $arg->splitArg();
                                if ( $bits['index'] !== '' ) {
                                        // Numbered parameter
-                                       $numberedArgs[$bits['index']] = $bits['value'];
-                                       unset( $namedArgs[$bits['index']] );
+                                       $index = $bits['index'] - $indexOffset;
+                                       $numberedArgs[$index] = $bits['value'];
+                                       unset( $namedArgs[$index] );
                                } else {
                                        // Named parameter
                                        $name = trim( $this->expand( $bits['name'], PPFrame::STRIP_COMMENTS ) );
@@ -1496,6 +1497,10 @@ class PPCustomFrame_Hash extends PPFrame_Hash {
                }
                return $this->args[$index];
        }
+
+       function getArguments() {
+               return $this->args;
+       }
 }
 
 /**
index 9e88494..b3d7e75 100644 (file)
@@ -713,12 +713,23 @@ class ResourceLoader {
                                // Styles
                                $styles = array();
                                if ( $context->shouldIncludeStyles() ) {
-                                       // If we are in debug mode, we'll want to return an array of URLs
+                                       // If we are in debug mode without &only= set, we'll want to return an array of URLs
                                        // See comment near shouldIncludeScripts() for more details
                                        if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
                                                $styles = $module->getStyleURLsForDebug( $context );
                                        } else {
                                                $styles = $module->getStyles( $context );
+                                               // Minify CSS before embedding in mw.loader.implement call
+                                               // (unless in debug mode)
+                                               if ( !$context->getDebug() ) {
+                                                       foreach ( $styles as $media => $style ) {
+                                                               if ( is_string( $style ) ) {
+                                                                       $styles[$media] = $this->filter( 'minify-css', $style );
+                                                               }
+                                                       }
+                                               }
+                                               // Combine styles for all media types
+                                               $styles = array( '' => self::makeCombinedStyles( $styles ) );
                                        }
                                }
 
@@ -737,23 +748,18 @@ class ResourceLoader {
                                                }
                                                break;
                                        case 'styles':
-                                               $out .= self::makeCombinedStyles( $styles );
+                                               $out .= $styles['']; // Code above has set $styles['']
                                                break;
                                        case 'messages':
                                                $out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
                                                break;
                                        default:
-                                               // Minify CSS before embedding in mw.loader.implement call
-                                               // (unless in debug mode)
-                                               if ( !$context->getDebug() ) {
-                                                       foreach ( $styles as $media => $style ) {
-                                                               if ( is_string( $style ) ) {
-                                                                       $styles[$media] = $this->filter( 'minify-css', $style );
-                                                               }
-                                                       }
-                                               }
-                                               $out .= self::makeLoaderImplementScript( $name, $scripts, $styles,
-                                                       new XmlJsCode( $messagesBlob ) );
+                                               $out .= self::makeLoaderImplementScript(
+                                                       $name,
+                                                       $scripts,
+                                                       $styles,
+                                                       new XmlJsCode( $messagesBlob )
+                                               );
                                                break;
                                }
                        } catch ( Exception $e ) {
index 87a3c2d..0e96c6c 100644 (file)
@@ -161,7 +161,7 @@ class ResourceLoaderContext {
                        $this->direction = $this->request->getVal( 'dir' );
                        if ( !$this->direction ) {
                                # directionality based on user language (see bug 6100)
-                               $this->direction = Language::factory( $this->language )->getDir();
+                               $this->direction = Language::factory( $this->getLanguage() )->getDir();
                        }
                }
                return $this->direction;
index 4eb38f6..a36aaec 100644 (file)
  */
 class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
 
+       protected $language;
        /**
         * Get the grammer forms for the site content language.
         *
         * @return array
         */
        protected function getSiteLangGrammarForms() {
-               global $wgContLang;
-               return $wgContLang->getGrammarForms();
+               return $this->language->getGrammarForms();
+       }
+
+       /**
+        * Get the digit transform table for the content language
+        * Seperator transform table also required here to convert
+        * the . and , sign to appropriate forms in content language.
+        *
+        * @return array
+        */
+       protected function getDigitTransformTable() {
+               $digitTransformTable = $this->language->digitTransformTable();
+               $separatorTransformTable = $this->language->separatorTransformTable();
+               if ( $digitTransformTable ) {
+                       array_merge( $digitTransformTable, (array)$separatorTransformTable );
+               } else {
+                       return $separatorTransformTable;
+               }
+               return $digitTransformTable;
+       }
+
+       /**
+        * Get all the dynamic data for the content language to an array
+        *
+        * @return array
+        */
+       protected function getData() {
+               return array( 'grammarForms' => $this->getSiteLangGrammarForms(),
+                               'digitTransformTable' => $this->getDigitTransformTable()
+                       );
        }
 
        /**
         * @param $context ResourceLoaderContext
-        * @return string Javascript code
+        * @return string: Javascript code
         */
        public function getScript( ResourceLoaderContext $context ) {
-               global $wgContLang;
-
+               $this->language = Language::factory( $context ->getLanguage() );
                return Xml::encodeJsCall( 'mw.language.setData', array(
-                       $wgContLang->getCode(),
-                       array( 'grammarForms' => $this->getSiteLangGrammarForms() )
+                       $this->language->getCode(),
+                       $this->getData()
                ) );
        }
 
@@ -55,20 +83,22 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return array|int|Mixed
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
+               $this->language = Language::factory( $context ->getLanguage() );
                $cache = wfGetCache( CACHE_ANYTHING );
                $key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
 
-               $forms = $this->getSiteLangGrammarForms();
-               $hash = md5( serialize( $forms ) );
+               $data = $this->getData();
+               $hash = md5( serialize( $data ) );
 
                $result = $cache->get( $key );
-               if ( is_array( $result ) ) {
-                       if ( $result['hash'] === $hash ) {
-                               return $result['timestamp'];
-                       }
+               if ( is_array( $result ) && $result['hash'] === $hash ) {
+                       return $result['timestamp'];
                }
                $timestamp = wfTimestamp();
-               $cache->set( $key, array( 'hash' => $hash, 'timestamp' => $timestamp ) );
+               $cache->set( $key, array(
+                       'hash' => $hash,
+                       'timestamp' => $timestamp,
+               ) );
                return $timestamp;
        }
 
@@ -76,6 +106,6 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return array
         */
        public function getDependencies() {
-               return array( 'mediawiki.language' );
+               return array( 'mediawiki.language.init' );
        }
 }
index a69676d..f35e774 100644 (file)
@@ -22,8 +22,6 @@
  * @author Roan Kattouw
  */
 
-defined( 'MEDIAWIKI' ) || die( 1 );
-
 /**
  * Abstraction for resource loader modules which pull from wiki pages
  *
index 517270a..6ceadff 100644 (file)
@@ -216,12 +216,13 @@ class RevDel_RevisionItem extends RevDel_Item {
         * @return string
         */
        protected function getRevisionLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() );
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $date;
                }
-               return Linker::link(
+               return Linker::linkKnown(
                        $this->list->title,
                        $date,
                        array(),
@@ -242,7 +243,7 @@ class RevDel_RevisionItem extends RevDel_Item {
                        return $this->list->msg( 'diff' )->escaped();
                } else {
                        return
-                               Linker::link(
+                               Linker::linkKnown(
                                        $this->list->title,
                                        $this->list->msg( 'diff' )->escaped(),
                                        array(),
@@ -250,24 +251,21 @@ class RevDel_RevisionItem extends RevDel_Item {
                                                'diff' => $this->revision->getId(),
                                                'oldid' => 'prev',
                                                'unhide' => 1
-                                       ),
-                                       array(
-                                               'known',
-                                               'noclasses'
                                        )
                                );
                }
        }
 
        public function getHTML() {
-               $difflink = $this->getDiffLink();
+               $difflink = $this->list->msg( 'parentheses' )
+                       ->rawParams( $this->getDiffLink() )->escaped();
                $revlink = $this->getRevisionLink();
                $userlink = Linker::revUserLink( $this->revision );
                $comment = Linker::revComment( $this->revision );
                if ( $this->isDeleted() ) {
                        $revlink = "<span class=\"history-deleted\">$revlink</span>";
                }
-               return "<li>($difflink) $revlink $userlink $comment</li>";
+               return "<li>$difflink $revlink $userlink $comment</li>";
        }
 }
 
@@ -364,30 +362,39 @@ class RevDel_ArchiveItem extends RevDel_RevisionItem {
        }
 
        protected function getRevisionLink() {
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() );
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $date;
                }
-               return Linker::link( $undelete, $date, array(),
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $date,
+                       array(),
                        array(
                                'target' => $this->list->title->getPrefixedText(),
                                'timestamp' => $this->revision->getTimestamp()
-                       ) );
+                       )
+               );
        }
 
        protected function getDiffLink() {
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $this->list->msg( 'diff' )->escaped();
                }
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               return Linker::link( $undelete, $this->list->msg( 'diff' )->escaped(), array(),
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $this->list->msg( 'diff' )->escaped(),
+                       array(),
                        array(
                                'target' => $this->list->title->getPrefixedText(),
                                'diff' => 'prev',
                                'timestamp' => $this->revision->getTimestamp()
-                       ) );
+                       )
+               );
        }
 }
 
@@ -598,30 +605,31 @@ class RevDel_FileItem extends RevDel_Item {
         * @return string
         */
        protected function getLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() );
-               if ( $this->isDeleted() ) {
-                       # Hidden files...
-                       if ( !$this->canViewContent() ) {
-                               $link = $date;
-                       } else {
-                               $revdelete = SpecialPage::getTitleFor( 'Revisiondelete' );
-                               $link = Linker::link(
-                                       $revdelete,
-                                       $date, array(),
-                                       array(
-                                               'target' => $this->list->title->getPrefixedText(),
-                                               'file'   => $this->file->getArchiveName(),
-                                               'token'  => $this->list->getUser()->getEditToken(
-                                                       $this->file->getArchiveName() )
-                                       )
-                               );
-                       }
-                       return '<span class="history-deleted">' . $link . '</span>';
-               } else {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
+               if ( !$this->isDeleted() ) {
                        # Regular files...
-                       return Xml::element( 'a', array( 'href' => $this->file->getUrl() ), $date );
+                       return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
                }
+
+               # Hidden files...
+               if ( !$this->canViewContent() ) {
+                       $link = $date;
+               } else {
+                       $link = Linker::link(
+                               SpecialPage::getTitleFor( 'Revisiondelete' ),
+                               $date,
+                               array(),
+                               array(
+                                       'target' => $this->list->title->getPrefixedText(),
+                                       'file'   => $this->file->getArchiveName(),
+                                       'token'  => $this->list->getUser()->getEditToken(
+                                               $this->file->getArchiveName() )
+                               )
+                       );
+               }
+               return '<span class="history-deleted">' . $link . '</span>';
        }
        /**
         * Generate a user tool link cluster if the current user is allowed to view it
@@ -745,14 +753,15 @@ class RevDel_ArchivedFileItem extends RevDel_FileItem {
        }
 
        protected function getLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() );
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               $key = $this->file->getKey();
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
                # Hidden files...
                if( !$this->canViewContent() ) {
                        $link = $date;
                } else {
+                       $undelete = SpecialPage::getTitleFor( 'Undelete' );
+                       $key = $this->file->getKey();
                        $link = Linker::link( $undelete, $date, array(),
                                array(
                                        'target' => $this->list->title->getPrefixedText(),
@@ -885,6 +894,7 @@ class RevDel_LogItem extends RevDel_Item {
                        array(),
                        array( 'page' => $title->getPrefixedText() )
                );
+               $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
                // User links and action text
                $action = $formatter->getActionText();
                // Comment
@@ -893,6 +903,6 @@ class RevDel_LogItem extends RevDel_Item {
                        $comment = '<span class="history-deleted">' . $comment . '</span>';
                }
 
-               return "<li>($loglink) $date $action $comment</li>";
+               return "<li>$loglink $date $action $comment</li>";
        }
 }
index 4d74fe1..3c43ed1 100644 (file)
@@ -338,6 +338,8 @@ class SpecialBlock extends FormSpecialPage {
         * @return string
         */
        protected function postText(){
+               $links = array();
+
                # Link to the user's contributions, if applicable
                if( $this->target instanceof User ){
                        $contribsPage = SpecialPage::getTitleFor( 'Contributions', $this->target->getName() );
index 7b59b93..32eb2e7 100644 (file)
  * computations here. This function should returns the HTML to be cached.
  * It should not add anything to the PageOutput object!
  *
- * @since 1.20
+ * 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.
  *
- * @file SpecialCachedPage.php
- * @ingroup SpecialPage
+ * 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
  *
- * @licence GNU GPL v2 or later
+ * @file
+ * @ingroup SpecialPage
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @since 1.20
  */
 abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
 
@@ -166,4 +178,4 @@ abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
                }
        }
 
-}
\ No newline at end of file
+}
index bd5a443..a1c6fd2 100644 (file)
@@ -201,7 +201,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                if ( !$status->isGood() ) {
                        $this->getOutput()->addHTML(
                                '<p class="error">' .
-                               $this->getOutput()->parseInline( $status->getWikiText( $info ) ) .
+                               $this->getOutput()->parseInline( $status->getWikiText( 'mailerror' ) ) .
                                '</p>' );
                        return false;
                }
index f6482ef..b30605b 100644 (file)
@@ -63,10 +63,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
 
                if( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
                        try {
-                               if ( isset( $_SESSION['wsDomain'] ) ) {
-                                       $this->mDomain = $_SESSION['wsDomain'];
-                               }
-                               $wgAuth->setDomain( $this->mDomain );
+                               $this->mDomain = $wgAuth->getDomain();
                                if( !$wgAuth->allowPasswordChange() ) {
                                        $this->error( $this->msg( 'resetpass_forbidden' )->text() );
                                        return;
@@ -136,6 +133,15 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        $oldpassMsg = 'oldpassword';
                        $submitMsg = 'resetpass-submit-loggedin';
                }
+               $extraFields = array();
+               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+               $prettyFields = array(
+                                       array( 'wpName', 'username', 'text', $this->mUserName ),
+                                       array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
+                                       array( 'wpNewPassword', 'newpassword', 'password', null ),
+                                       array( 'wpRetype', 'retypenew', 'password', null ),
+                               );
+               $prettyFields = array_merge( $prettyFields, $extraFields );
                $this->getOutput()->addHTML(
                        Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
                        Xml::openElement( 'form',
@@ -149,12 +155,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
                        $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
                        Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
-                       $this->pretty( array(
-                               array( 'wpName', 'username', 'text', $this->mUserName ),
-                               array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
-                               array( 'wpNewPassword', 'newpassword', 'password', null ),
-                               array( 'wpRetype', 'retypenew', 'password', null ),
-                       ) ) . "\n" .
+                       $this->pretty( $prettyFields ) . "\n" .
                        $rememberMe .
                        "<tr>\n" .
                                "<td></td>\n" .
index 1b7494f..9465037 100644 (file)
@@ -235,7 +235,9 @@ class SpecialContributions extends SpecialPage {
                        $links = $this->getLanguage()->pipeList( $tools );
 
                        // Show a note if the user is blocked and display the last block log entry.
-                       if ( $userObj->isBlocked() ) {
+                       // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs,
+                       // and also this will display a totally irrelevant log entry as a current block.
+                       if ( $userObj->isBlocked() && $userObj->getBlock()->getType() != Block::TYPE_AUTO ) {
                                $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
                                LogEventsList::showLogExtract(
                                        $out,
@@ -439,7 +441,7 @@ class SpecialContributions extends SpecialPage {
                                'target',
                                $this->opts['target'],
                                'text',
-                               array( 'size' => '20', 'required' => '', 'class' => 'mw-input' ) +
+                               array( 'size' => '40', 'required' => '', 'class' => 'mw-input' ) +
                                        ( $this->opts['target'] ? array() : array( 'autofocus' )
                                )
                        ) . ' '
@@ -704,7 +706,7 @@ class ContribsPager extends ReverseChronologicalPager {
                                $revIds[] = $row->rev_parent_id;
                        }
                }
-               $this->mParentLens = $this->getParentLengths( $revIds );
+               $this->mParentLens = Revision::getParentLengths( $this->getDatabase(), $revIds );
                $this->mResult->rewind(); // reset
 
                # Do a link batch query
@@ -722,28 +724,6 @@ class ContribsPager extends ReverseChronologicalPager {
                $this->mResult->seek( 0 );
        }
 
-       /**
-        * Do a batched query to get the parent revision lengths
-        * @param $revIds array
-        * @return array
-        */
-       private function getParentLengths( array $revIds ) {
-               $revLens = array();
-               if ( !$revIds ) {
-                       return $revLens; // empty
-               }
-               wfProfileIn( __METHOD__ );
-               $res = $this->getDatabase()->select( 'revision',
-                       array( 'rev_id', 'rev_len' ),
-                       array( 'rev_id' => $revIds ),
-                       __METHOD__ );
-               foreach ( $res as $row ) {
-                       $revLens[$row->rev_id] = $row->rev_len;
-               }
-               wfProfileOut( __METHOD__ );
-               return $revLens;
-       }
-
        /**
         * @return string
         */
index b7f1e61..67f6d68 100644 (file)
@@ -241,8 +241,9 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                $dbr = wfGetDB( DB_MASTER );
                $res = $dbr->select(
                        'watchlist',
-                       '*',
                        array(
+                               'wl_namespace', 'wl_title'
+                       ), array(
                                'wl_user' => $this->getUser()->getId(),
                        ),
                        __METHOD__
@@ -321,16 +322,20 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         * Attempts to clean up broken items
         */
        private function cleanupWatchlist() {
+               if( !count( $this->badItems ) ) {
+                       return; //nothing to do
+               }
                $dbw = wfGetDB( DB_MASTER );
+               $user = $this->getUser();
                foreach ( $this->badItems as $row ) {
                        list( $title, $namespace, $dbKey ) = $row;
-                       wfDebug( "User {$this->getUser()} has broken watchlist item ns($namespace):$dbKey, "
+                       wfDebug( "User {$user->getName()} has broken watchlist item ns($namespace):$dbKey, "
                                . ( $title ? 'cleaning up' : 'deleting' ) . ".\n"
                        );
 
                        $dbw->delete( 'watchlist',
                                array(
-                                       'wl_user' => $this->getUser()->getId(),
+                                       'wl_user' => $user->getId(),
                                        'wl_namespace' => $namespace,
                                        'wl_title' => $dbKey,
                                ),
@@ -339,7 +344,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
 
                        // Can't just do an UPDATE instead of DELETE/INSERT due to unique index
                        if ( $title ) {
-                               $this->getUser()->addWatch( $title );
+                               $user->addWatch( $title );
                        }
                }
        }
@@ -470,7 +475,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                $title = Title::makeTitleSafe( $namespace, $dbkey );
                                if ( $this->checkTitle( $title, $namespace, $dbkey ) ) {
                                        $text = $this->buildRemoveLine( $title );
-                                       $fields['TitlesNs'.$namespace]['options'][$text] = $title->getEscapedText();
+                                       $fields['TitlesNs'.$namespace]['options'][$text] = htmlspecialchars( $title->getPrefixedText() );
                                        $count++;
                                }
                        }
index 55b500d..2ab02cb 100644 (file)
@@ -254,7 +254,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
         * or maybe even true on success if anything uses the EmailUser hook.
         */
        public static function submit( array $data, IContextSource $context ) {
-               global $wgUser, $wgUserEmailUseReplyTo;
+               global $wgUserEmailUseReplyTo;
 
                $target = self::getTarget( $data['Target'] );
                if( !$target instanceof User ) {
index abd83ac..ddab164 100644 (file)
@@ -197,7 +197,7 @@ class ImageListPager extends TablePager {
                                $thumb = $file->transform( array( 'width' => 180, 'height' => 360 ) );
                                return $thumb->toHtml( array( 'desc-link' => true ) );
                        case 'img_timestamp':
-                               return htmlspecialchars( $this->getLanguage()->timeanddate( $value, true ) );
+                               return htmlspecialchars( $this->getLanguage()->userTimeAndDate( $value, $this->getUser() ) );
                        case 'img_name':
                                static $imgfile = null;
                                if ( $imgfile === null ) $imgfile = $this->msg( 'imgfile' )->text();
@@ -210,7 +210,8 @@ class ImageListPager extends TablePager {
                                                array( 'href' => wfLocalFile( $filePage )->getURL() ),
                                                $imgfile
                                        );
-                                       return "$link ($download)";
+                                       $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
+                                       return "$link $download";
                                } else {
                                        return htmlspecialchars( $value );
                                }
index 177b34d..2c96e83 100644 (file)
@@ -131,7 +131,7 @@ class SpecialLog extends SpecialPage {
 
        private function show( FormOptions $opts, array $extraConds ) {
                # Create a LogPager item to get the results and a LogEventsList item to format them...
-               $loglist = new LogEventsList( $this->getSkin(), $this->getOutput(), 0 );
+               $loglist = new LogEventsList( $this->getContext(), null, LogEventsList::USE_REVDEL_CHECKBOXES );
                $pager = new LogPager( $loglist, $opts->getValue( 'type' ), $opts->getValue( 'user' ),
                        $opts->getValue( 'page' ), $opts->getValue( 'pattern' ), $extraConds, $opts->getValue( 'year' ),
                        $opts->getValue( 'month' ), $opts->getValue( 'tagfilter' ) );
@@ -174,7 +174,7 @@ class SpecialLog extends SpecialPage {
                $s .= Html::hidden( 'type', 'logging' ) . "\n";
                $button = Html::element( 'button',
                        array( 'type' => 'submit', 'class' => "deleterevision-log-submit mw-log-deleterevision-button" ),
-                       $this->msg( 'showhideselectedversions' )->text()
+                       $this->msg( 'showhideselectedlogentries' )->text()
                ) . "\n";
                $s .= $button . $formcontents . $button;
                $s .= Html::closeElement( 'form' );
index b193a1c..46a35c4 100644 (file)
@@ -96,6 +96,7 @@ class MIMEsearchPage extends QueryPage {
                );
 
                $download = Linker::makeMediaLinkObj( $nt, $this->msg( 'download' )->escaped() );
+               $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
                $lang = $this->getLanguage();
                $bytes = htmlspecialchars( $lang->formatSize( $result->img_size ) );
                $dimensions = $this->msg( 'widthheight' )->numParams( $result->img_width,
@@ -103,7 +104,7 @@ class MIMEsearchPage extends QueryPage {
                $user = Linker::link( Title::makeTitle( NS_USER, $result->img_user_text ), htmlspecialchars( $result->img_user_text ) );
                $time = htmlspecialchars( $lang->userTimeAndDate( $result->img_timestamp, $this->getUser() ) );
 
-               return "($download) $plink . . $dimensions . . $bytes . . $user . . $time";
+               return "$download $plink . . $dimensions . . $bytes . . $user . . $time";
        }
 
        /**
index 0aa8b30..b5fb0dd 100644 (file)
@@ -252,9 +252,11 @@ class SpecialMergeHistory extends SpecialPage {
                $ts = wfTimestamp( TS_MW, $row->rev_timestamp );
                $checkBox = Xml::radio( 'mergepoint', $ts, false );
 
+               $user = $this->getUser();
+
                $pageLink = Linker::linkKnown(
                        $rev->getTitle(),
-                       htmlspecialchars( $this->getLanguage()->timeanddate( $ts ) ),
+                       htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) ),
                        array(),
                        array( 'oldid' => $rev->getId() )
                );
@@ -263,7 +265,7 @@ class SpecialMergeHistory extends SpecialPage {
                }
 
                # Last link
-               if( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
+               if( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
                        $last = $this->message['last'];
                } elseif( isset( $this->prevId[$row->rev_id] ) ) {
                        $last = Linker::linkKnown(
@@ -285,7 +287,8 @@ class SpecialMergeHistory extends SpecialPage {
                }
                $comment = Linker::revComment( $rev );
 
-               return "<li>$checkBox ($last) $pageLink . . $userLink $stxt $comment</li>";
+               return Html::rawElement( 'li', array(),
+                       $this->msg( 'mergehistory-revisionrow' )->rawParams( $checkBox, $last, $pageLink, $userLink, $stxt, $comment )->escaped() );
        }
 
        function merge() {
index 44097c8..1798e8f 100644 (file)
@@ -294,6 +294,8 @@ class SpecialNewpages extends IncludableSpecialPage {
         * @return String
         */
        public function formatRow( $result ) {
+               $title = Title::newFromRow( $result );
+
                # Revision deletion works on revisions, so we should cast one
                $row = array(
                                          'comment' => $result->rc_comment,
@@ -302,13 +304,13 @@ class SpecialNewpages extends IncludableSpecialPage {
                                          'user' => $result->rc_user,
                                        );
                $rev = new Revision( $row );
+               $rev->setTitle( $title );
 
                $classes = array();
 
                $lang = $this->getLanguage();
                $dm = $lang->getDirMark();
 
-               $title = Title::newFromRow( $result );
                $spanTime = Html::element( 'span', array( 'class' => 'mw-newpages-time' ),
                        $lang->userTimeAndDate( $result->rc_timestamp, $this->getUser() )
                );
@@ -343,7 +345,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        $this->msg( 'parentheses' )->rawParams( $histLink )->escaped() );
 
                $length = Html::element( 'span', array( 'class' => 'mw-newpages-length' ),
-                               '[' . $this->msg( 'nbytes' )->numParams( $result->length )->text() . ']'
+                       $this->msg( 'brackets' )->params( $this->msg( 'nbytes' )->numParams( $result->length )->text() )
                );
 
                $ulink = Linker::revUserTools( $rev );
index f140546..51520c8 100644 (file)
@@ -154,7 +154,7 @@ class SpecialPasswordReset extends FormSpecialPage {
                        $method = 'email';
                        $res = wfGetDB( DB_SLAVE )->select(
                                'user',
-                               '*',
+                               User::selectFields(),
                                array( 'user_email' => $data['Email'] ),
                                __METHOD__
                        );
index 803f03e..9f84804 100644 (file)
@@ -56,7 +56,13 @@ class PopularPagesPage extends QueryPage {
         */
        function formatResult( $skin, $result ) {
                global $wgContLang;
-               $title = Title::makeTitle( $result->namespace, $result->title );
+
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               if( !$title ) {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+               }
+
                $link = Linker::linkKnown(
                        $title,
                        htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
index 730969d..c37bb1d 100644 (file)
@@ -196,7 +196,8 @@ class SpecialPrefixindex extends SpecialAllpages {
                                                $link = ($s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
                                                        Linker::linkKnown(
                                                                $t,
-                                                               htmlspecialchars( $t->getText() )
+                                                               htmlspecialchars( $t->getText() ),
+                                                               $s->page_is_redirect ? array( 'class' => 'mw-redirect' ) : array()
                                                        ) .
                                                        ($s->page_is_redirect ? '</div>' : '' );
                                        } else {
index 46dd115..bb384d4 100644 (file)
@@ -635,7 +635,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                global $wgContLang;
 
                $message = $this->msg( 'recentchangestext' )->inContentLanguage();
-               if ( $message->exists() ) {
+               if ( !$message->isDisabled() ) {
                        $this->getOutput()->addWikiText(
                                Html::rawElement( 'p',
                                        array( 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ),
index d089c73..83c7235 100644 (file)
@@ -420,7 +420,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $out .= Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
                        if( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                               $title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
+                               $title = Title::makeTitle( NS_MEDIAWIKI, 'Revdelete-reason-dropdown' );
                                $link = Linker::link(
                                        $title,
                                        $this->msg( 'revdelete-edit-reasonlist' )->escaped(),
index 079130f..3344436 100644 (file)
@@ -899,27 +899,7 @@ class SpecialSearch extends SpecialPage {
                        ) .
                        Xml::element( 'legend', null, $this->msg('powersearch-legend' )->text() ) .
                        Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
-                       Xml::tags(
-                               'div',
-                               array( 'id' => 'mw-search-togglebox' ),
-                               Xml::label( $this->msg( 'powersearch-togglelabel' )->text(), 'mw-search-togglelabel' ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-toggleall',
-                                                       'value' => $this->msg( 'powersearch-toggleall' )->text()
-                                               )
-                                       ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-togglenone',
-                                                       'value' => $this->msg( 'powersearch-togglenone' )->text()
-                                               )
-                                       )
-                       ) .
+                       Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
                        Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
                        implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
                        $hidden .
index 8622b92..ee04574 100644 (file)
@@ -43,7 +43,8 @@ class ShortPagesPage extends QueryPage {
                        'fields' => array ( 'page_namespace AS namespace',
                                        'page_title AS title',
                                        'page_len AS value' ),
-                       'conds' => array ( 'page_namespace' => NS_MAIN,
+                       'conds' => array ( 'page_namespace' =>
+                                       MWNamespace::getContentNamespaces(),
                                        'page_is_redirect' => 0 ),
                        'options' => array ( 'USE INDEX' => 'page_redirect_namespace_len' )
                );
@@ -81,7 +82,11 @@ class ShortPagesPage extends QueryPage {
        function formatResult( $skin, $result ) {
                $dm = $this->getLanguage()->getDirMark();
 
-               $title = Title::makeTitle( $result->namespace, $result->title );
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               if ( !$title ) {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+               }
 
                $hlink = Linker::linkKnown(
                        $title,
index da8f786..46881ec 100644 (file)
@@ -118,9 +118,9 @@ class SpecialStatistics extends SpecialPage {
                if( $descMsg ) {
                        $msg = $this->msg( $descMsg, $descMsgParam );
                        if ( $msg->exists() ) {
-                               $descriptionText = $msg->parse();
+                               $descriptionText = $this->msg( 'parentheses' )->rawParams( $msg->parse() )->escaped();
                                $text .= "<br />" . Xml::element( 'small', array( 'class' => 'mw-statistic-desc'),
-                                       " ($descriptionText)" );
+                                       " $descriptionText" );
                        }
                }
                return Html::rawElement( 'tr', $trExtraParams,
index 1fc8ea5..df720a1 100644 (file)
@@ -21,9 +21,6 @@
  * @ingroup SpecialPage
  */
 
-if (!defined('MEDIAWIKI'))
-       die;
-
 /**
  * A special page that lists tags for edits
  *
index 654d5b7..79c051a 100644 (file)
@@ -1166,7 +1166,7 @@ class SpecialUndelete extends SpecialPage {
        private function formatRevisionRow( $row, $earliestLiveTime, $remaining ) {
                $rev = Revision::newFromArchiveRow( $row,
                        array( 'page' => $this->mTargetObj->getArticleID() ) );
-               $stxt = '';
+               $revTextSize = '';
                $ts = wfTimestamp( TS_MW, $row->ar_timestamp );
                // Build checkboxen...
                if( $this->mAllowed ) {
@@ -1215,13 +1215,15 @@ class SpecialUndelete extends SpecialPage {
                // Revision text size
                $size = $row->ar_len;
                if( !is_null( $size ) ) {
-                       $stxt = Linker::formatRevisionSize( $size );
+                       $revTextSize = Linker::formatRevisionSize( $size );
                }
                // Edit summary
                $comment = Linker::revComment( $rev );
                // Revision delete links
                $revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
-               return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
+
+               $revisionRow = $this->msg( 'undelete-revisionrow' )->rawParams( $checkBox, $revdlink, $last, $pageLink , $userLink, $revTextSize, $comment )->escaped();
+               return "<li>$revisionRow</li>";
        }
 
        private function formatFileRow( $row ) {
index c4f99f8..4bd0232 100644 (file)
@@ -68,13 +68,15 @@ class UnwatchedpagesPage extends QueryPage {
        function formatResult( $skin, $result ) {
                global $wgContLang;
 
-               $nt = Title::makeTitle( $result->namespace, $result->title );
+               $nt = Title::makeTitleSafe( $result->namespace, $result->title );
+               if ( !$nt ) {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+               }
+
                $text = $wgContLang->convert( $nt->getPrefixedText() );
 
-               $plink = Linker::linkKnown(
-                       $nt,
-                       htmlspecialchars( $text )
-               );
+               $plink = Linker::linkKnown( $nt, htmlspecialchars( $text ) );
                $token = WatchAction::getWatchToken( $nt, $this->getUser() );
                $wlink = Linker::linkKnown(
                        $nt,
index 1fa14ff..6052d09 100644 (file)
@@ -1,7 +1,28 @@
 <?php
 /**
- * Implements Special:UploadStash
+ * Implements Special:UploadStash.
  *
+ * 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
+ * @ingroup Upload
+ */
+
+/**
  * Web access for files temporarily stored by UploadStash.
  *
  * For example -- files that were uploaded with the UploadWizard extension are stored temporarily
  *
  * Since this is based on the user's session, in effect this creates a private temporary file area.
  * However, the URLs for the files cannot be shared.
- *
- * @file
- * @ingroup SpecialPage
- * @ingroup Upload
  */
-
 class SpecialUploadStash extends UnlistedSpecialPage {
        // UploadStash
        private $stash;
index 3837e27..7d91096 100644 (file)
@@ -125,11 +125,7 @@ class LoginForm extends SpecialPage {
                }
 
                if( !$wgAuth->validDomain( $this->mDomain ) ) {
-                       if ( isset( $_SESSION['wsDomain'] ) ) {
-                               $this->mDomain = $_SESSION['wsDomain'];
-                       } else {
-                               $this->mDomain = 'invaliddomain';
-                       }
+                       $this->mDomain = $wgAuth->getDomain();
                }
                $wgAuth->setDomain( $this->mDomain );
 
@@ -1261,6 +1257,10 @@ class LoginForm extends SpecialPage {
         * @return string
         */
        function makeLanguageSelectorLink( $text, $lang ) {
+               if( $this->getLanguage()->getCode() == $lang ) {
+                       // no link for currently used language
+                       return htmlspecialchars( $text );
+               }
                $attr = array( 'uselang' => $lang );
                if( $this->mType == 'signup' ) {
                        $attr['type'] = 'signup';
index 2b4dc95..5a71ccb 100644 (file)
@@ -167,7 +167,8 @@ class SpecialVersion extends SpecialPage {
                        $version = $wgVersion;
                } elseif ( $gitInfo ) {
                        $shortSha1 = substr( $gitInfo, 0, 7 );
-                       $version = "$wgVersion ($shortSha1)";
+                       $shortSha1 = wfMessage( 'parentheses' )->params( $shortSha1 )->escaped();
+                       $version = "$wgVersion $shortSha1";
                } elseif ( $flags === 'nodb' ) {
                        $version = "$wgVersion (r{$svnInfo['checkout-rev']})";
                } else {
@@ -615,8 +616,8 @@ class SpecialVersion extends SpecialPage {
                        $list = $list[0];
                }
                if( is_object( $list ) ) {
-                       $class = get_class( $list );
-                       return "($class)";
+                       $class = wfMessage( 'parentheses' )->params( get_class( $list ) )->escaped();
+                       return $class;
                } elseif ( !is_array( $list ) ) {
                        return $list;
                } else {
@@ -625,7 +626,7 @@ class SpecialVersion extends SpecialPage {
                        } else {
                                $class = $list[0];
                        }
-                       return "($class, {$list[1]})";
+                       return wfMessage( 'parentheses' )->params( "$class, {$list[1]}" )->escaped();
                }
        }
 
index eafdde4..a81eb5b 100644 (file)
@@ -91,14 +91,6 @@ class SpecialWatchlist extends SpecialPage {
                        return;
                }
 
-               if( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
-                       $request->wasPosted() )
-               {
-                       $user->clearAllNotifications();
-                       $output->redirect( $this->getTitle()->getFullUrl() );
-                       return;
-               }
-
                $nitems = $this->countItems();
                if ( $nitems == 0 ) {
                        $output->addWikiMsg( 'nowatchlist' );
@@ -152,16 +144,16 @@ class SpecialWatchlist extends SpecialPage {
                $invert = $request->getBool( 'invert' );
                $associated = $request->getBool( 'associated' );
                if ( !is_null( $nameSpace ) ) {
-                       $eq_op = $invert ? '!=' : '=';\r
+                       $eq_op = $invert ? '!=' : '=';
                        $bool_op = $invert ? 'AND' : 'OR';
                        $nameSpace = intval( $nameSpace ); // paranioa
                        if ( !$associated ) {
                                $nameSpaceClause = "rc_namespace $eq_op $nameSpace";
                        } else {
-                               $associatedNS = MWNamespace::getAssociated( $nameSpace );\r
+                               $associatedNS = MWNamespace::getAssociated( $nameSpace );
                                $nameSpaceClause =
-                                       "rc_namespace $eq_op $nameSpace " .\r
-                                       $bool_op .\r
+                                       "rc_namespace $eq_op $nameSpace " .
+                                       $bool_op .
                                        " rc_namespace $eq_op $associatedNS";
                        }
                } else {
@@ -190,6 +182,14 @@ class SpecialWatchlist extends SpecialPage {
                        wfAppendToArrayIfNotDefault( $name, $values[$name], $defaults, $nondefaults );
                }
 
+               if( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
+                       $request->wasPosted() )
+               {
+                       $user->clearAllNotifications();
+                       $output->redirect( $this->getTitle()->getFullUrl( $nondefaults ) );
+                       return;
+               }
+
                $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
 
                # Possible where conditions
@@ -263,8 +263,11 @@ class SpecialWatchlist extends SpecialPage {
                                                'id' => 'mw-watchlist-resetbutton' ) ) .
                                        $this->msg( 'wlheader-showupdated' )->parse() . ' ' .
                                        Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) .
-                                       Html::hidden( 'reset', 'all' ) .
-                                       Xml::closeElement( 'form' );
+                                       Html::hidden( 'reset', 'all' );
+                                       foreach ( $nondefaults as $key => $value ) {
+                                               $form .= Html::hidden( $key, $value );
+                                       }
+                                       $form .= Xml::closeElement( 'form' );
                }
                $form .= '<hr />';
 
index a4de98a..8eb2781 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Base class for the backend of file upload.
+ *
+ * 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 Upload
+ */
+
 /**
  * @defgroup Upload
  */
index 11780e4..e50c6da 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Backend for uploading files from chunks.
+ *
+ * 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 Upload
+ */
+
 /**
  * Implements uploading from chunks
  *
index 234fde8..fae9974 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Backend for regular file upload.
+ *
+ * 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 Upload
+ */
+
 /**
  * Implements regular file uploads
  *
index 317dd55..d5cce14 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Backend for uploading files from previously stored file.
+ *
+ * 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 Upload
+ */
+
 /**
  * Implements uploading from previously stored file.
  *
index 49bfb91..c7e482e 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Backend for uploading files from a HTTP resource.
+ *
+ * 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 Upload
+ */
+
 /**
  * Implements uploading from a HTTP resource.
  *
index e347408..12531c2 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Temporary storage for uploaded files.
+ *
+ * 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 Upload
+ */
+
 /**
  * UploadStash is intended to accomplish a few things:
  *   - enable applications to temporarily stash files without publishing them to the wiki.
index a738b06..2c3dc07 100644 (file)
@@ -1 +1,24 @@
-<?php require './index.php';
+<?php
+/**
+ * Version of index.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require './index.php';
index 9f00d04..b531f2a 100644 (file)
@@ -1,6 +1,21 @@
 <?php
 /**
- * Internationalisation code
+ * Internationalisation code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
  * @ingroup Language
@@ -241,6 +256,7 @@ class Language {
         *
         * @param $code string
         *
+        * @throws MWException
         * @since 1.18
         * @return bool
         */
@@ -284,10 +300,6 @@ class Language {
                }
 
                if ( !defined( 'MW_COMPILED' ) ) {
-                       // Preload base classes to work around APC/PHP5 bug
-                       if ( file_exists( "$IP/languages/classes/$class.deps.php" ) ) {
-                               include_once( "$IP/languages/classes/$class.deps.php" );
-                       }
                        if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
                                include_once( "$IP/languages/classes/$class.php" );
                        }
@@ -734,9 +746,8 @@ class Language {
                $mwNames = $wgExtraLanguageNames + $coreLanguageNames;
                foreach ( $mwNames as $mwCode => $mwName ) {
                        # - Prefer own MediaWiki native name when not using the hook
-                       #       TODO: prefer it always to make it consistent, but casing is different in CLDR
                        # - For other names just add if not added through the hook
-                       if ( ( $mwCode === $inLanguage && !$inLanguage ) || !isset( $names[$mwCode] ) ) {
+                       if ( $mwCode === $inLanguage || !isset( $names[$mwCode] ) ) {
                                $names[$mwCode] = $mwName;
                        }
                }
@@ -2396,8 +2407,12 @@ class Language {
                        return $s;
                }
 
-               $isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
-                               '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+               if ( function_exists( 'mb_check_encoding' ) ) {
+                       $isutf8 = mb_check_encoding( $s, 'UTF-8' );
+               } else {
+                       $isutf8 = preg_match( '/^(?>[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+                                       '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+               }
                if ( $isutf8 ) {
                        return $s;
                }
@@ -3673,6 +3688,9 @@ class Language {
        /**
         * Get the RFC 3066 code for this language object
         *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar
+        *
         * @return string
         */
        public function getCode() {
@@ -3682,6 +3700,10 @@ class Language {
        /**
         * Get the code in Bcp47 format which we can use
         * inside of html lang="" tags.
+        *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar.
+        *
         * @since 1.19
         * @return string
         */
@@ -4094,7 +4116,7 @@ class Language {
         * @param $title Title object to link
         * @param $offset Integer offset parameter
         * @param $limit Integer limit parameter
-        * @param $query String optional URL query parameter string
+        * @param $query array|String optional URL query parameter string
         * @param $atend Bool optional param for specified if this is the last page
         * @return String
         */
index b942e23..9bea07d 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Language names.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
   * These determine things like interwikis, language selectors, and so on.
   * Safe to change without running scripts on the respective sites.
        'aln' => 'Gegë',       # Gheg Albanian
        'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
        'am' => 'አማርኛ', # Amharic
-       'an' => 'Aragonés',    # Aragonese
+       'an' => 'aragonés',    # Aragonese
        'ang' => 'Ænglisc',    # Old English (Bug 23283)
        'anp' => 'अङ्गिका',       # Angika
        'ar' => 'العربية',       # Arabic
        'arc' => 'ܐܪܡܝܐ',  # Aramaic
-       'arn' => 'Mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
+       'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
        'as' => 'অসমীয়া',   # Assamese
-       'ast' => 'Asturianu',   # Asturian
+       'ast' => 'asturianu',   # Asturian
        'av' => 'Авар',     # Avar
        'avk' => 'Kotava', # Kotava
        'ay' => 'Aymar aru',    # Aymara
-       'az' => 'Azərbaycanca',        # Azerbaijani
+       'az' => 'azərbaycanca',        # Azerbaijani
        'ba' => 'Башҡортса',   # Bashkir
        'bar' => 'Boarisch',    # Bavarian (Austro-Bavarian and South Tyrolean)
        'bat-smg' => 'Žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
        'bcc' => 'بلوچی مکرانی', # Southern Balochi
        'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
-       'be' => 'Ð\91еларуская', #  Belarusian normative
-       'be-tarask' => "\xE2\x80\xAAÐ\91еларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
-       'be-x-old' => "\xE2\x80\xAAÐ\91еларуская (тарашкевіца)\xE2\x80\xAC",  # Belarusian in Taraskievica orthography; compat link
-       'bg' => 'Ð\91ългарски',   # Bulgarian
+       'be' => 'беларуская', #  Belarusian normative
+       'be-tarask' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
+       'be-x-old' => "\xE2\x80\xAAбеларуская (тарашкевіца)\xE2\x80\xAC",  # Belarusian in Taraskievica orthography; compat link
+       'bg' => 'български',   # Bulgarian
        'bh' => 'भोजपुरी',        # Bihari macro language. Falls back to Bhojpuri (bho). The name actually says "Bhojpuri".
        'bho' => 'भोजपुरी',       # Bhojpuri
        'bi' => 'Bislama',              # Bislama
        'bjn' => 'Bahasa Banjar',       # Banjarese
-       'bm' => 'Bamanankan',   # Bambara
+       'bm' => 'bamanankan',   # Bambara
        'bn' => 'বাংলা',      # Bengali
        'bo' => 'བོད་ཡིག',        # Tibetan
        'bpy' => 'বিষ্ণুপ্রিয়া মণিপুরী',       # Bishnupriya Manipuri
        'bqi' => 'بختياري',      # Bakthiari
-       'br' => 'Brezhoneg',    # Breton
+       'br' => 'brezhoneg',    # Breton
        'brh' => 'Bráhuí',    # Brahui
-       'bs' => 'Bosanski',             # Bosnian
+       'bs' => 'bosanski',             # Bosnian
        'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Buginese
        'bxr' => 'Буряад',        # Buryat (Russia)
-       'ca' => 'Català',      # Catalan
+       'ca' => 'català',      # Catalan
        'cbk-zam' => 'Chavacano de Zamboanga',  # Zamboanga Chavacano
        'cdo' => 'Mìng-dĕ̤ng-ngṳ̄',       # Min Dong
        'ce' => 'Нохчийн',       # Chechen
        'chr' => 'ᏣᎳᎩ', # Cherokee
        'chy' => 'Tsetsêhestâhese',   # Cheyenne
        'ckb' => 'کوردی',  # Sorani. The name actually says "Kurdi" (Kurdish).
-       'co' => 'Corsu',                # Corsican
+       'co' => 'corsu',                # Corsican
        'cps' => 'Capiceño', # Capiznon
        'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ',                # Cree
        'crh' => 'Qırımtatarca',   # Crimean Tatar (multiple scripts - defaults to Latin)
        'crh-latn' => "\xE2\x80\xAAQırımtatarca (Latin)\xE2\x80\xAC",       # Crimean Tatar (Latin)
        'crh-cyrl' => "\xE2\x80\xAAКъырымтатарджа (Кирилл)\xE2\x80\xAC",       # Crimean Tatar (Cyrillic)
-       'cs' => 'Ä\8cesky',       # Czech
-       'csb' => 'Kaszëbsczi', # Cassubian
-       'cu' => 'Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
+       'cs' => 'Ä\8desky',       # Czech
+       'csb' => 'kaszëbsczi', # Cassubian
+       'cu' => 'словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
        'cv' => 'Чӑвашла',       # Chuvash
        'cy' => 'Cymraeg',              # Welsh
-       'da' => 'Dansk',                # Danish
+       'da' => 'dansk',                # Danish
        'de' => 'Deutsch',              # German ("Du")
        'de-at' => 'Österreichisches Deutsch',         # Austrian German
        'de-ch' => 'Schweizer Hochdeutsch',             # Swiss Standard German
        'de-formal' => "\xE2\x80\xAADeutsch (Sie-Form)\xE2\x80\xAC",            # German - formal address ("Sie")
        'diq' => 'Zazaki',              # Zazaki
-       'dsb' => 'Dolnoserbski', # Lower Sorbian
+       'dsb' => 'dolnoserbski', # Lower Sorbian
        'dtp' => 'Dusun Bundu-liwan', # Central Dusun
        'dv' => 'ދިވެހިބަސް',         # Dhivehi
        'dz' => 'ཇོང་ཁ',              # Dzongkha (Bhutan)
-       'ee' => 'Eʋegbe',      # Éwé
+       'ee' => 'eʋegbe',      # Éwé
        'el' => 'Ελληνικά',     # Greek
-       'eml' => 'Emiliàn e rumagnòl',        # Emiliano-Romagnolo / Sammarinese
+       'eml' => 'emiliàn e rumagnòl',        # Emiliano-Romagnolo / Sammarinese
        'en' => 'English',              # English
        'en-ca' => 'Canadian English',  # Canadian English
        'en-gb' => 'British English',   # British English
        'eo' => 'Esperanto',    # Esperanto
-       'es' => 'Español',     # Spanish
-       'et' => 'Eesti',                # Estonian
-       'eu' => 'Euskara',              # Basque
-       'ext' => 'Estremeñu', # Extremaduran
+       'es' => 'español',     # Spanish
+       'et' => 'eesti',                # Estonian
+       'eu' => 'euskara',              # Basque
+       'ext' => 'estremeñu', # Extremaduran
        'fa' => 'فارسی',   # Persian
        'ff' => 'Fulfulde',             # Fulfulde, Maasina
-       'fi' => 'Suomi',                # Finnish
-       'fit' => 'Meänkieli', # Tornedalen Finnish
+       'fi' => 'suomi',                # Finnish
+       'fit' => 'meänkieli', # Tornedalen Finnish
        'fiu-vro' => 'Võro',    # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
        'fj' => 'Na Vosa Vakaviti',     # Fijian
-       'fo' => 'Føroyskt',    # Faroese
-       'fr' => 'Français',    # French
-       'frc' => 'Français cadien', # Cajun French
-       'frp' => 'Arpetan',     # Franco-Provençal/Arpitan
+       'fo' => 'føroyskt',    # Faroese
+       'fr' => 'français',    # French
+       'frc' => 'français cadien', # Cajun French
+       'frp' => 'arpetan',     # Franco-Provençal/Arpitan
        'frr' => 'Nordfriisk',  # North Frisian
-       'fur' => 'Furlan',              # Friulian
+       'fur' => 'furlan',              # Friulian
        'fy' => 'Frysk',                # Frisian
        'ga' => 'Gaeilge',              # Irish
        'gag' => 'Gagauz',              # Gagauz
        'gan' => '贛語',              # Gan (multiple scripts - defaults to Traditional)
-       'gan-hans' => "\xE2\x80\xAA赣语(简体)\xE2\x80\xAC", # Gan (Simplified Han)
-       'gan-hant' => "\xE2\x80\xAA贛語(繁體)\xE2\x80\xAC", # Gan (Traditional Han)
+       'gan-hans' => "\xE2\x80\xAA赣语(简体)\xE2\x80\xAC",     # Gan (Simplified Han)
+       'gan-hant' => "\xE2\x80\xAA贛語(繁體)\xE2\x80\xAC",     # Gan (Traditional Han)
        'gd' => 'Gàidhlig',    # Scots Gaelic
-       'gl' => 'Galego',               # Galician
+       'gl' => 'galego',               # Galician
        'glk' => 'گیلکی',  # Gilaki
        'gn' => 'Avañe\'ẽ',  # Guaraní, Paraguayan
        'got' => '𐌲𐌿𐍄𐌹𐍃𐌺',    # Gothic
        'hif-latn' => 'Fiji Hindi',     # Fiji Hindi (latin)
        'hil' => 'Ilonggo',     # Hiligaynon
        'ho' => 'Hiri Motu',    # Hiri Motu
-       'hr' => 'Hrvatski',             # Croatian
-       'hsb' => 'Hornjoserbsce',       # Upper Sorbian
+       'hr' => 'hrvatski',             # Croatian
+       'hsb' => 'hornjoserbsce',       # Upper Sorbian
        'ht'  => 'Kreyòl ayisyen',             # Haitian Creole French
-       'hu' => 'Magyar',               # Hungarian
+       'hu' => 'magyar',               # Hungarian
        'hy' => 'Հայերեն',       # Armenian
        'hz' => 'Otsiherero',   # Herero
-       'ia' => 'Interlingua',  # Interlingua (IALA)
+       'ia' => 'interlingua',  # Interlingua (IALA)
        'id' => 'Bahasa Indonesia',     # Indonesian
        'ie' => 'Interlingue',  # Interlingue (Occidental)
        'ig' => 'Igbo',                 # Igbo
        'ii' => 'ꆇꉙ',       # Sichuan Yi
        'ik' => 'Iñupiak',     # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
        'ike-cans' => 'ᐃᓄᒃᑎᑐᑦ',     # Inuktitut, Eastern Canadian/Eastern Canadian "Eskimo"/"Eastern Arctic Eskimo"/Inuit (Unified Canadian Aboriginal Syllabics)
-       'ike-latn' => 'Inuktitut',      # Inuktitut, Eastern Canadian (Latin script)
+       'ike-latn' => 'inuktitut',      # Inuktitut, Eastern Canadian (Latin script)
        'ilo' => 'Ilokano',     # Ilokano
        'inh' => 'ГӀалгӀай',    # Ingush
        'io' => 'Ido',                  # Ido
-       'is' => 'Ã\8dslenska',    # Icelandic
-       'it' => 'Italiano',             # Italian
+       'is' => 'íslenska',    # Icelandic
+       'it' => 'italiano',             # Italian
        'iu' => 'ᐃᓄᒃᑎᑐᑦ/inuktitut', # Inuktitut (macro language - do no localise, see ike/ikt - falls back to ike-cans)
        'ja' => '日本語',    # Japanese
        'jam' => 'Patois',      # Jamaican Creole English
        'jbo' => 'Lojban',              # Lojban
-       'jut' => 'Jysk',        # Jutish / Jutlandic
+       'jut' => 'jysk',        # Jutish / Jutlandic
        'jv' => 'Basa Jawa',    # Javanese
        'ka' => 'ქართული',        # Georgian
        'kaa' => 'Qaraqalpaqsha',       # Karakalpak
        'kk-cn' => "\xE2\x80\xABقازاقشا (جۇنگو)\xE2\x80\xAC",       # Kazakh (China)
        'kk-kz' => "\xE2\x80\xAAҚазақша (Қазақстан)\xE2\x80\xAC",       # Kazakh (Kazakhstan)
        'kk-tr' => "\xE2\x80\xAAQazaqşa (Türkïya)\xE2\x80\xAC",      # Kazakh (Turkey)
-       'kl' => 'Kalaallisut',  # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
+       'kl' => 'kalaallisut',  # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
        'km' => 'ភាសាខ្មែរ',  # Khmer, Central
        'kn' => 'ಕನ್ನಡ',      # Kannada
        'ko' => '한국어',    # Korean
        'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC",       # Northern Kurdish (Latin script)
        'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC",       # Northern Kurdish (Arabic script) (falls back to ckb)
        'kv' => 'Коми',     # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
-       'kw' => 'Kernowek',             # Cornish
+       'kw' => 'kernowek',             # Cornish
        'ky' => 'Кыргызча',     # Kirghiz
        'la' => 'Latina',               # Latin
        'lad' => 'Ladino',      # Ladino
        'li' => 'Limburgs',     # Limburgian
        'lij' => 'Ligure',      # Ligurian
        'liv' => 'Līvõ kēļ',        # Livonian
-       'lmo' => 'Lumbaart',    # Lombard
-       'ln' => 'Lingála',             # Lingala
+       'lmo' => 'lumbaart',    # Lombard
+       'ln' => 'lingála',             # Lingala
        'lo' => 'ລາວ',# Laotian
        'loz' => 'Silozi', # Lozi
-       'lt' => 'Lietuvių',    # Lithuanian
-       'ltg' => 'Latgaļu',    # Latgalian
+       'lt' => 'lietuvių',    # Lithuanian
+       'ltg' => 'latgaļu',    # Latgalian
        'lus' => 'Mizo ţawng', # Mizo/Lushai
-       'lv' => 'Latviešu',    # Latvian
+       'lv' => 'latviešu',    # Latvian
        'lzh' => '文言',      # Literary Chinese -- (bug 8217) lzh instead of zh-classical, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=l
        'lzz' => 'Lazuri',      # Laz
        'mai' => 'मैथिली', # Maithili
        'mhr' => 'Олык Марий', # Eastern Mari
        'mi' => 'Māori',       # Maori
        'min' => 'Baso Minangkabau',    # Minangkabau
-       'mk' => 'Ð\9cакедонски', # Macedonian
+       'mk' => 'македонски', # Macedonian
        'ml' => 'മലയാളം',   # Malayalam
-       'mn' => 'Ð\9cонгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
-       'mo' => 'Ð\9cолдовеняскэ',     # Moldovan, deprecated
+       'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
+       'mo' => 'молдовеняскэ',     # Moldovan, deprecated
        'mr' => 'मराठी',      # Marathi
        'mrj' => 'Кырык мары', # Hill Mari
        'ms' => 'Bahasa Melayu',        # Malay
        'nah' => 'Nāhuatl',            # Nahuatl, en:Wikipedia writes Nahuatlahtolli, while another form is Náhuatl
        'nan' => 'Bân-lâm-gú', # Min-nan -- (bug 8217) nan instead of zh-min-nan, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=n
        'nap' => 'Nnapulitano', # Neapolitan
-       'nb' => "\xE2\x80\xAANorsk (bokmål)\xE2\x80\xAC",              # Norwegian (Bokmal)
+       'nb' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC",              # Norwegian (Bokmal)
        'nds' => 'Plattdüütsch',      # Low German ''or'' Low Saxon
        'nds-nl' => 'Nedersaksisch',    # Dutch Low Saxon
        'ne' => 'नेपाली',   # Nepali
        'niu' => 'Niuē',       # Niuean
        'nl' => 'Nederlands',   # Dutch
        'nl-informal' => "\xE2\x80\xAANederlands (informeel)\xE2\x80\xAC",      # Dutch (informal address ("je"))
-       'nn' => "\xE2\x80\xAANorsk (nynorsk)\xE2\x80\xAC",      # Norwegian (Nynorsk)
-       'no' => "\xE2\x80\xAANorsk (bokmål)\xE2\x80\xAC",              # Norwegian (falls back to nb).
+       'nn' => "\xE2\x80\xAAnorsk (nynorsk)\xE2\x80\xAC",      # Norwegian (Nynorsk)
+       'no' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC",              # Norwegian (falls back to nb).
        'nov' => 'Novial',              # Novial
        'nrm' => 'Nouormand',   # Norman
        'nso' => 'Sesotho sa Leboa',    # Northern Sotho
        'nv' => 'Diné bizaad', # Navajo
        'ny' => 'Chi-Chewa',    # Chichewa
-       'oc' => 'Occitan',              # Occitan
+       'oc' => 'occitan',              # Occitan
        'om' => 'Oromoo',               # Oromo
        'or' => 'ଓଡ଼ିଆ',         # Oriya
        'os' => 'Ирон', # Ossetic -- fixed per bug 29091
        'pfl' => 'Pälzisch',   # Palatinate German
        'pi' => 'पाळि', # Pali
        'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
-       'pl' => 'Polski',               # Polish
+       'pl' => 'polski',               # Polish
        'pms' => 'Piemontèis', # Piedmontese
        'pnb' => 'پنجابی',        # Western Punjabi
        'pnt' => 'Ποντιακά',    # Pontic/Pontic Greek
        'prg' => 'Prūsiskan',  # Prussian
        'ps' => 'پښتو',     # Pashto, Northern/Paktu/Pakhtu/Pakhtoo/Afghan/Pakhto/Pashtu/Pushto/Yusufzai Pashto
-       'pt' => 'Português',   # Portuguese
-       'pt-br' => 'Português do Brasil',      # Brazilian Portuguese
+       'pt' => 'português',   # Portuguese
+       'pt-br' => 'português do Brasil',      # Brazilian Portuguese
        'qu' => 'Runa Simi',    # Southern Quechua
        'qug' => 'Runa shimi',  # Kichwa/Northern Quechua (one of the codes it covers; temporarily used until Kichwa has its own)
        'rgn' => 'Rumagnôl',   # Romagnol
        'rif' => 'Tarifit',     # Tarifit
-       'rm' => 'Rumantsch',    # Raeto-Romance
+       'rm' => 'rumantsch',    # Raeto-Romance
        'rmy' => 'Romani',      # Vlax Romany
        'rn' => 'Kirundi',              # Rundi/Kirundi/Urundi
-       'ro' => 'Română',     # Romanian
+       'ro' => 'română',     # Romanian
        'roa-rup' => 'Armãneashce', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
-       'roa-tara' => 'Tarandíne',     # Tarantino
-       'ru' => 'Русский',       # Russian
-       'rue' => 'Русиньскый',        # Rusyn
+       'roa-tara' => 'tarandíne',     # Tarantino
+       'ru' => 'русский',       # Russian
+       'rue' => 'русиньскый',        # Rusyn
        'rup' => 'Armãneashce', # Aromanian
        'ruq' => 'Vlăheşte',  # Megleno-Romanian (multiple scripts - defaults to Latin)
        'ruq-cyrl' => 'Влахесте',       # Megleno-Romanian (Cyrillic script)
        'ruq-latn' => 'Vlăheşte',     # Megleno-Romanian (Latin script)
        'rw' => 'Kinyarwanda',  # Kinyarwanda, should possibly be Kinyarwandi
        'sa' => 'संस्कृतम्',  # Sanskrit
-       'sah' => 'Саха тыла', # Sakha
+       'sah' => 'саха тыла', # Sakha
        'sat' => 'Santali',     # Santali
-       'sc' => 'Sardu',                # Sardinian
-       'scn' => 'Sicilianu',   # Sicilian
+       'sc' => 'sardu',                # Sardinian
+       'scn' => 'sicilianu',   # Sicilian
        'sco' => 'Scots',       # Scots
        'sd' => 'سنڌي',     # Sindhi
        'sdc' => 'Sassaresu',   # Sassarese
-       'se' => 'Sámegiella',  # Northern Sami
+       'se' => 'sámegiella',  # Northern Sami
        'sei' => 'Cmique Itom', # Seri
        'sg' => 'Sängö',              # Sango/Sangho
-       'sgs' => 'Žemaitėška', # Samogitian
-       'sh' => 'Srpskohrvatski / Српскохрватски', # Serbocroatian
+       'sgs' => 'žemaitėška', # Samogitian
+       'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
        'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (multiple scripts - defaults to Latin)
        'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ',    # Tachelhit (Tifinagh script)
        'shi-latn' => 'Tašlḥiyt',    # Tachelhit (Latin script)
        'si' => 'සිංහල',      # Sinhalese
        'simple' => 'Simple English',   # Simple English
-       'sk' => 'Slovenčina',  # Slovak
-       'sl' => 'Slovenščina',        # Slovenian
+       'sk' => 'slovenčina',  # Slovak
+       'sl' => 'slovenščina',        # Slovenian
        'sli' => 'Schläsch',   # Lower Selisian
        'sm' => 'Gagana Samoa', # Samoan
        'sma' => 'Åarjelsaemien',      # Southern Sami
        'sn' => 'chiShona',             # Shona
        'so' => 'Soomaaliga',   # Somali
-       'sq' => 'Shqip',                # Albanian
-       'sr' => 'Српски / Srpski',        # Serbian (multiple scripts - defaults to Cyrillic)
-       'sr-ec' => "\xE2\x80\xAAСрпски (ћирилица)\xE2\x80\xAC",   # Serbian Cyrillic ekavian
-       'sr-el' => "\xE2\x80\xAASrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian
+       'sq' => 'shqip',                # Albanian
+       'sr' => 'српски / srpski',        # Serbian (multiple scripts - defaults to Cyrillic)
+       'sr-ec' => "\xE2\x80\xAAсрпски (ћирилица)\xE2\x80\xAC",   # Serbian Cyrillic ekavian
+       'sr-el' => "\xE2\x80\xAAsrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian
        'srn' => 'Sranantongo',         # Sranan Tongo
        'ss' => 'SiSwati',              # Swati
        'st' => 'Sesotho',              # Southern Sotho
        'stq' => 'Seeltersk',           # Saterland Frisian
        'su' => 'Basa Sunda',   # Sundanese
-       'sv' => 'Svenska',              # Swedish
+       'sv' => 'svenska',              # Swedish
        'sw' => 'Kiswahili',    # Swahili
-       'szl' => 'Å\9alůnski',   # Silesian
+       'szl' => 'Å\9blůnski',   # Silesian
        'ta' => 'தமிழ்',      # Tamil
        'tcy' => 'ತುಳು', # Tulu
        'te' => 'తెలుగు',   # Telugu
-       'tet' => 'Tetun',       # Tetun
-       'tg' => 'Тоҷикӣ', # Tajiki (falls back to tg-cyrl)
-       'tg-cyrl' => 'Тоҷикӣ',    # Tajiki (Cyrllic script) (default)
-       'tg-latn' => 'Tojikī', # Tajiki (Latin script)
+       'tet' => 'tetun',       # Tetun
+       'tg' => 'тоҷикӣ', # Tajiki (falls back to tg-cyrl)
+       'tg-cyrl' => 'тоҷикӣ',    # Tajiki (Cyrllic script) (default)
+       'tg-latn' => 'tojikī', # Tajiki (Latin script)
        'th' => 'ไทย',    # Thai
        'ti' => 'ትግርኛ',         # Tigrinya
        'tk' => 'Türkmençe',  # Turkmen
        'tl' => 'Tagalog',              # Tagalog
-       'tly' => 'Толышә зывон',     # Talysh
+       'tly' => 'толышә зывон',     # Talysh
        'tn' => 'Setswana',             # Setswana
        'to' => 'lea faka-Tonga',               # Tonga (Tonga Islands)
        'tokipona' => 'Toki Pona',      # Toki Pona
        'tpi' => 'Tok Pisin',   # Tok Pisin
        'tr' => 'Türkçe',     # Turkish
        'ts' => 'Xitsonga',             # Tsonga
-       'tt' => 'Татарча/Tatarça',      # Tatar (multiple scripts - defaults to Cyrillic)
-       'tt-cyrl' => 'Татарча',  # Tatar (Cyrillic script) (default)
-       'tt-latn' => 'Tatarça',        # Tatar (Latin script)
+       'tt' => 'татарча/tatarça',      # Tatar (multiple scripts - defaults to Cyrillic)
+       'tt-cyrl' => 'татарча',  # Tatar (Cyrillic script) (default)
+       'tt-latn' => 'tatarça',        # Tatar (Latin script)
        'tum' => 'chiTumbuka',  # Tumbuka
        'tw' => 'Twi',                  # Twi, (FIXME!)
        'ty' => 'Reo Mā`ohi',  # Tahitian
        'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
        'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) (default)
        'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
-       'uk' => 'Українська', # Ukrainian
+       'uk' => 'українська', # Ukrainian
        'ur' => 'اردو',     # Urdu
-       'uz' => 'Oʻzbek',      # Uzbek
+       'uz' => 'Oʻzbekcha',   # Uzbek
        've' => 'Tshivenda',            # Venda
-       'vec' => 'Vèneto',     # Venetian
+       'vec' => 'vèneto',     # Venetian
        'vep' => 'Vepsän kel’',      # Veps
        'vi' => 'Tiếng Việt',       # Vietnamese
        'vls' => 'West-Vlams', # West Flemish
        'vo' => 'Volapük',     # Volapük
        'vot' => 'Vaďďa',     # Vod/Votian
        'vro' => 'Võro',    # Võro
-       'wa' => 'Walon',                # Walloon
+       'wa' => 'walon',                # Walloon
        'war' => 'Winaray', # Waray-Waray
        'wo' => 'Wolof',                # Wolof
        'wuu' => '吴语',              # Wu Chinese
        'zea' => 'Zeêuws',     # Zeeuws/Zeaws
        'zh' => '中文',                                               # (Zhōng Wén) - Chinese
        'zh-classical' => '文言',                     # Classical Chinese/Literary Chinese -- (see bug 8217)
-       'zh-cn' => "\xE2\x80\xAA中文(中国大陆)\xE2\x80\xAC",      # Chinese (PRC)
-       'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC",  # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
-       'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC",  # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
-       'zh-hk' => "\xE2\x80\xAA中文(香港)\xE2\x80\xAC",    # Chinese (Hong Kong)
+       'zh-cn' => "\xE2\x80\xAA中文(中国大陆)\xE2\x80\xAC",  # Chinese (PRC)
+       'zh-hans' => "\xE2\x80\xAA中文(简体)\xE2\x80\xAC",      # Mandarin Chinese (Simplified Chinese script) (cmn-hans)
+       'zh-hant' => "\xE2\x80\xAA中文(繁體)\xE2\x80\xAC",      # Mandarin Chinese (Traditional Chinese script) (cmn-hant)
+       'zh-hk' => "\xE2\x80\xAA中文(香港)\xE2\x80\xAC",        # Chinese (Hong Kong)
        'zh-min-nan' => 'Bân-lâm-gú',                                # Min-nan -- (see bug 8217)
-       'zh-mo' => "\xE2\x80\xAA中文(澳門)\xE2\x80\xAC",    # Chinese (Macau)
-       'zh-my' => "\xE2\x80\xAA中文(马来西亚)\xE2\x80\xAC",      # Chinese (Malaysia)
-       'zh-sg' => "\xE2\x80\xAA中文(新加坡)\xE2\x80\xAC", # Chinese (Singapore)
-       'zh-tw' => "\xE2\x80\xAA中文(台灣)\xE2\x80\xAC",    # Chinese (Taiwan)
+       'zh-mo' => "\xE2\x80\xAA中文(澳門)\xE2\x80\xAC",        # Chinese (Macau)
+       'zh-my' => "\xE2\x80\xAA中文(马来西亚)\xE2\x80\xAC",  # Chinese (Malaysia)
+       'zh-sg' => "\xE2\x80\xAA中文(新加坡)\xE2\x80\xAC",     # Chinese (Singapore)
+       'zh-tw' => "\xE2\x80\xAA中文(台灣)\xE2\x80\xAC",        # Chinese (Taiwan)
        'zh-yue' => '粵語',                                   # Cantonese -- (see bug 8217)
        'zu' => 'isiZulu'               # Zulu
 );
index 29ae9c1..4c39c26 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Amharic (አማርኛ) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Amharic (አማርኛ)
  *
index 95e7639..cc6b85c 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Arabic (العربية)
+/**
+ * Arabic (العربية) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Arabic (العربية)
+ *
+ * @ingroup Language
  */
 class LanguageAr extends Language {
 
index 947e656..0956dc4 100644 (file)
@@ -1,8 +1,31 @@
 <?php
-/** Azerbaijani (Azərbaycan)
-  *
-  * @ingroup Language
-  */
+/**
+ * Azerbaijani (Azərbaycan) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
+/**
+ * Azerbaijani (Azərbaycan)
+ *
+ * @ingroup Language
+ */
 class LanguageAz extends Language {
 
        /**
index 7d881ac..b5b5966 100644 (file)
@@ -1,17 +1,38 @@
 <?php
-/** Belarusian normative (Беларуская мова)
-  *
-  * This is still the version from Be-x-old, only duplicated for consistency of
-  * plural and grammar functions. If there are errors please send a patch.
-  *
-  * @ingroup Language
-  *
-  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-  * @see http://be.wikipedia.org/wiki/Talk:LanguageBe.php
-  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
-  * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
-  */
+/**
+ * Belarusian normative (Беларуская мова) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
+ * @ingroup Language
+ */
 
+/**
+ * Belarusian normative (Беларуская мова)
+ *
+ * This is still the version from Be-x-old, only duplicated for consistency of
+ * plural and grammar functions. If there are errors please send a patch.
+ *
+ * @ingroup Language
+ * @see http://be.wikipedia.org/wiki/Talk:LanguageBe.php
+ */
 class LanguageBe extends Language {
 
        /**
index 0e07a71..b781d7a 100644 (file)
@@ -1,14 +1,35 @@
 <?php
-/** Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
-  *
-  * @ingroup Language
-  *
-  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-  * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
-  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
-  * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
-  */
+/**
+ * Belarusian in Taraškievica orthography (Беларуская тарашкевіца) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
+ * @ingroup Language
+ */
 
+/**
+ * Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
+ *
+ * @ingroup Language
+ * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
+ */
 class LanguageBe_tarask extends Language {
        /**
         * Plural form transformations
index 9ccb9a8..d735c7a 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Bulgarian (Български) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Bulgarian (Български)
+/**
+ * Bulgarian (Български)
  *
  * @ingroup Language
  */
index 46e4418..0eaf2ff 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Bihari (भोजपुरी) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Bihari (भोजपुरी)
  *
index 7c13037..0929641 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Bosnian (bosanski) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Bosnian (bosanski)
+/**
+ * Bosnian (bosanski)
  *
  * @ingroup Language
  */
index f50a7e7..49c4756 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Czech (čeština [subst.], český [adj.], česky [adv.]) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Czech (čeština [subst.], český [adj.], česky [adv.])
+/**
+ * Czech (čeština [subst.], český [adj.], česky [adv.])
  *
  * @ingroup Language
  */
index af42d2c..bfa95cf 100644 (file)
@@ -1,6 +1,28 @@
 <?php
-
-/** Old Church Slavonic (Ѩзыкъ словѣньскъ)
+/**
+ * Old Church Slavonic (Ѩзыкъ словѣньскъ) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+/**
+ * Old Church Slavonic (Ѩзыкъ словѣньскъ)
  *
  * @ingroup Language
  */
index 1b0863a..9c28279 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Welsh (Cymraeg)
+/**
+ * Welsh (Cymraeg) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Welsh (Cymraeg)
+ *
+ * @ingroup Language
  */
 class LanguageCy extends Language {
 
index 1fae25c..b8ed7fc 100644 (file)
@@ -1,6 +1,29 @@
 <?php
+/**
+ * Lower Sorbian (Dolnoserbski) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Niklas Laxström
+ * @ingroup Language
+ */
 
-/** Lower Sorbian (Dolnoserbski)
+/**
+ * Lower Sorbian (Dolnoserbski)
  *
  * @ingroup Language
  */
index af058a3..3c16248 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Esperanto (Esperanto) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Brion Vibber <brion@pobox.com>
+ * @ingroup Language
+ */
 
-/** Esperanto (Esperanto)
+/**
+ * Esperanto (Esperanto)
  *
  * @ingroup Language
- * @author Brion Vibber <brion@pobox.com>
  */
 class LanguageEo extends Language {
        /**
index b469dec..1a9f286 100644 (file)
@@ -1,9 +1,30 @@
 <?php
-
-/** Estonian (Eesti)
+/**
+ * Estonian (Eesti) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Language
+ */
+
+/**
+ * Estonian (Eesti)
  *
+ * @ingroup Language
  */
 class LanguageEt extends Language {
        /**
index 7156b65..1865cc5 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Finnish (Suomi)
+/**
+ * Finnish (Suomi) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Finnish (Suomi)
+ *
+ * @ingroup Language
  */
 class LanguageFi extends Language {
 
index 3e7c970..edbe1fb 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * French (Français) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** French (Français)
+/**
+ * French (Français)
  *
  * @ingroup Language
  */
index 43050e1..cb9fa04 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Irish (Gaeilge) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Irish (Gaeilge)
+/**
+ * Irish (Gaeilge)
  *
  * @ingroup Language
  */
index 99b4c29..4fd41cf 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Gan Chinese specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageZh.php' );
index 737cdda..f042b02 100644 (file)
@@ -1,10 +1,32 @@
 <?php
-/** Scots Gaelic (Gàidhlig)
+/**
+ * Scots Gaelic (Gàidhlig) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Raimond Spekking
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Scots Gaelic (Gàidhlig)
+ *
+ * @ingroup Language
  */
 class LanguageGd extends Language {
 
index 4defffd..70b80ad 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Manx (Gaelg)
+/**
+ * Manx (Gaelg) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Manx (Gaelg)
+ *
+ * @ingroup Language
  */
 class LanguageGv extends Language {
 
index 87483c6..22be1de 100644 (file)
@@ -1,11 +1,31 @@
 <?php
+/**
+ * Hebrew (עברית) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Rotem Liss
+ * @ingroup Language
+ */
 
 /**
  * Hebrew (עברית)
  *
  * @ingroup Language
- *
- * @author Rotem Liss
  */
 class LanguageHe extends Language {
 
index 53a0fc1..6a2302c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Hindi (हिन्दी) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Hindi (हिन्दी)
  *
index e18c8d3..a0e9a87 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Croatian (hrvatski)
-  *
-  * @ingroup Language
-  */
+/**
+ * Croatian (hrvatski) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
+/**
+ * Croatian (hrvatski)
+ *
+ * @ingroup Language
+ */
 class LanguageHr extends Language {
 
        /**
index 1b67aa0..965ea6a 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Upper Sorbian (Hornjoserbsce)
+/**
+ * Upper Sorbian (Hornjoserbsce) specific code.
  *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @ingroup Language
  */
 
+/**
+ * Upper Sorbian (Hornjoserbsce)
+ *
+ * @ingroup Language
+ */
 class LanguageHsb extends Language {
 
        /**
index dbb6f5b..1f4d45c 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Hungarian (magyar) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Hungarian localisation for MediaWiki
+/**
+ * Hungarian localisation for MediaWiki
  *
  * @ingroup Language
  */
index c14106c..9c15595 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Armenian (Հայերեն) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Ruben Vardanyan (Me@RubenVardanyan.com)
+ * @ingroup Language
+ */
 
-/** Armenian (Հայերեն)
+/**
+ * Armenian (Հայերեն)
  *
  * @ingroup Language
- * @author Ruben Vardanyan (Me@RubenVardanyan.com)
  */
 class LanguageHy extends Language {
 
diff --git a/languages/classes/LanguageIu.deps.php b/languages/classes/LanguageIu.deps.php
deleted file mode 100644 (file)
index 3b78d87..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageIu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-
-require_once( dirname(__FILE__).'/../LanguageConverter.php' );
index 72f6af1..090d626 100644 (file)
@@ -1,24 +1,39 @@
 <?php
 /**
-  * @addtogroup Language
-  */
-
-/*
-* Conversion script between Latin and Syllabics for Inuktitut.
-* - Syllabics -> lowercase Latin
-* - lowercase/uppercase Latin -> Syllabics
-*
-*
-* Based on:
-*   - http://commons.wikimedia.org/wiki/Image:Inuktitut.png
-*   - LanguageSr.php
-*
-* @ingroup Language
-*/
+ * Inuktitut specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
+ * Conversion script between Latin and Syllabics for Inuktitut.
+ * - Syllabics -> lowercase Latin
+ * - lowercase/uppercase Latin -> Syllabics
+ *
  *
+ * Based on:
+ *   - http://commons.wikimedia.org/wiki/Image:Inuktitut.png
+ *   - LanguageSr.php
+ *
+ * @ingroup Language
  */
 class IuConverter extends LanguageConverter {
 
index 510a397..9c6314c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Japanese (日本語) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 /**
  * Japanese (日本語)
index 22e8946..a397bc0 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Karakalpak (Qaraqalpaqsha) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Karakalpak (Qaraqalpaqsha)
+/**
+ * Karakalpak (Qaraqalpaqsha)
  *
  * @ingroup Language
  */
diff --git a/languages/classes/LanguageKk.deps.php b/languages/classes/LanguageKk.deps.php
deleted file mode 100644 (file)
index 0a2a8af..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageKk.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
-require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' );
index c2a3d24..7eb0b6c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Kazakh (Қазақша) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' );
@@ -11,8 +32,8 @@ define( 'KK_L_LC', 'aäbcçdeéfgğhıiïjklmnñoöpqrsştuüvwxyýz' ); # Kazak
 define( 'H_HAMZA', 'ٴ' ); # U+0674 ARABIC LETTER HIGH HAMZA
 // define( 'ZWNJ', '‌' ); # U+200C ZERO WIDTH NON-JOINER
 
-/** Kazakh (Қазақша)
- * converter routines
+/**
+ * Kazakh (Қазақша) converter routines
  *
  * @ingroup Language
  */
index 30f74e6..081a20f 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Kazakh (Қазақша)
+/**
+ * Kazakh (Қазақша) specific code.
  *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @ingroup Language
  */
 
+/**
+ * Kazakh (Қазақша)
+ *
+ * @ingroup Language
+ */
 class LanguageKk_cyrl extends Language {
 
        # Convert from the nominative form of a noun to some other case
index 105e6ed..71d67a7 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Khmer (ភាសាខ្មែរ)
+/**
+ * Kazakh (Қазақша) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Khmer (ភាសាខ្មែរ)
+ *
+ * @ingroup Language
  */
 class LanguageKm extends Language {
 
index dc37656..074ad13 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Ripuarian (Ripoarėsh)
+/**
+ * Ripuarian (Ripoarėsh) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Purodha Blissenbach
+ * @ingroup Language
+ */
+
+/**
+ * Ripuarian (Ripoarėsh)
+ *
+ * @ingroup Language
  */
 class LanguageKsh extends Language {
        static $familygender = array(
diff --git a/languages/classes/LanguageKu.deps.php b/languages/classes/LanguageKu.deps.php
deleted file mode 100644 (file)
index a187b77..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageKu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
-require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' );
index 81bf6ee..18c8564 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Kurdish specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' );
 
index e433292..2381de5 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Kurdish specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Kurdish
+/**
+ * Kurdish
  *
  * @ingroup Language
  */
index 657ac6e..ba0f140 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Latin (lingua Latina) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Latin (lingua Latina)
+/**
+ * Latin (lingua Latina)
  *
  * @ingroup Language
  */
index b96cf61..d7329d5 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Lingala (Lingála) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Lingala (Lingála)
  *
index af38b6a..ac4ebda 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Lithuanian (Lietuvių) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Lithuanian (Lietuvių)
+/**
+ * Lithuanian (Lietuvių)
  *
  * @ingroup Language
  */
index 8a78303..e76f6f9 100644 (file)
@@ -1,13 +1,33 @@
 <?php
-
-/** Latvian (Latviešu)
+/**
+ * Latvian (Latviešu) specific code.
  *
- * @ingroup Language
+ * 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.
  *
- * @author Niklas Laxström
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Niklas Laxström
  * @copyright Copyright © 2006, Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @ingroup Language
+ */
+
+/**
+ * Latvian (Latviešu)
+ *
+ * @ingroup Language
  */
 class LanguageLv extends Language {
        /**
index 111dda3..ace0a4c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Malagasy (Malagasy) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Malagasy (Malagasy)
  *
index 4e3b576..968fe26 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Macedonian (Македонски) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Macedonian (Македонски)
  *
index aeca362..ec3ea54 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Malayalam (മലയാളം) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 /**
  * Malayalam (മലയാളം)
index 2fa48e9..bf8a10d 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Moldavian (Молдовеняскэ) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Moldavian (Молдовеняскэ)
  *
index 5cf40ce..68bd7ca 100644 (file)
@@ -1,12 +1,32 @@
 <?php
-
-/** Maltese (Malti)
+/**
+ * Maltese (Malti) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
  */
 
+/**
+ * Maltese (Malti)
+ *
+ * @ingroup Language
+ */
 class LanguageMt extends Language {
 
        /**
@@ -25,4 +45,4 @@ class LanguageMt extends Language {
                else $index = 3;
                return $forms[$index];
        }
-}
\ No newline at end of file
+}
index b12e458..1d117dd 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Burmese (Myanmasa)
+/**
+ * Burmese (Myanmasa) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström, 2008
+ * @ingroup Language
+ */
+
+/**
+ * Burmese (Myanmasa)
+ *
+ * @ingroup Language
  */
 class LanguageMy extends Language {
 
@@ -19,4 +40,4 @@ class LanguageMy extends Language {
                 */
                return $_;
        }
-}
\ No newline at end of file
+}
index 4026332..0c08675 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Northern Sotho (Sesotho sa Leboa) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Northern Sotho (Sesotho sa Leboa)
  *
index f3b5d8a..a808840 100644 (file)
@@ -1,8 +1,29 @@
 <?php
-
-/** Ossetian (Ирон)
+/**
+ * Ossetian (Ирон) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @author Soslan Khubulov
+ * @ingroup Language
+ */
+
+/**
+ * Ossetian (Ирон)
  *
  * @ingroup Language
  */
index b64ee98..68bf020 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Polish (polski) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Polish (polski)
+/**
+ * Polish (polski)
  *
  * @ingroup Language
  */
index 6798b24..8e2115c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Dummy language that return the message names.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * For all translated messages, this returns the name of the message bracketed.
  * This does not affect untranslated messages.
index ce3e515..0db2ec0 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Romanian (Română) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Romanian (Română)
  *
index b5371d2..6407e15 100644 (file)
@@ -1,11 +1,33 @@
 <?php
+/**
+ * Russian (русский язык) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Russian (русский язык)
-  *
-  * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
-  *
-  * @ingroup Language
-  */
+/**
+ * Russian (русский язык)
+ *
+ * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
+ *
+ * @ingroup Language
+ */
 class LanguageRu extends Language {
 
        /**
index a66957f..25b61c3 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Northern Sami (Sámegiella) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Northern Sami (Sámegiella)
  *
index d47863d..0c74e45 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Samogitian (Žemaitėška)
+/**
+ * Samogitian (Žemaitėška) specific code.
  *
- * @ingroup Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Samogitian (Žemaitėška)
+ *
+ * @ingroup Language
  */
 class LanguageSgs extends Language {
 
index 139ad0b..1fcddfc 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Serbo-Croatian (Srpskohrvatski / Српскохрватски) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Serbo-Croatian (Srpskohrvatski / Српскохрватски)
  *
diff --git a/languages/classes/LanguageShi.deps.php b/languages/classes/LanguageShi.deps.php
deleted file mode 100644 (file)
index 3b78d87..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageIu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-
-require_once( dirname(__FILE__).'/../LanguageConverter.php' );
index 08a06d6..ab34440 100644 (file)
@@ -1,24 +1,39 @@
 <?php
 /**
-  * @addtogroup Language
-  */
-
-/*
-* Conversion script between Latin and Tifinagh for Tachelhit.
-* - Tifinagh -> lowercase Latin
-* - lowercase/uppercase Latin -> Tifinagh
-*
-*
-* Based on:
-*   - http://en.wikipedia.org/wiki/Shilha_language
-*   - LanguageSr.php
-*
-* @ingroup Language
-*/
+ * Shilha specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
+ * Conversion script between Latin and Tifinagh for Tachelhit.
+ * - Tifinagh -> lowercase Latin
+ * - lowercase/uppercase Latin -> Tifinagh
+ *
  *
+ * Based on:
+ *   - http://en.wikipedia.org/wiki/Shilha_language
+ *   - LanguageSr.php
+ *
+ * @ingroup Language
  */
 class ShiConverter extends LanguageConverter {
 
index eac25f4..b1da70e 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Slovak (Slovenčina) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Slovak (Slovenčina)
  *
index 3e2ca90..c075e51 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Slovenian (Slovenščina) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Slovenian (Slovenščina)
+/**
+ * Slovenian (Slovenščina)
  *
  * @ingroup Language
  */
index 72ca98a..1961871 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Southern Sami (Åarjelsaemien) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Southern Sami (Åarjelsaemien)
  *
diff --git a/languages/classes/LanguageSr.deps.php b/languages/classes/LanguageSr.deps.php
deleted file mode 100644 (file)
index a377037..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageSr.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' );
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
index 1b04cb7..26d6853 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (Српски / Srpski) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' );
index 572a5f3..352e293 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (cyrillic script) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 /**
  * Serbian (cyrillic script)
index 3a1f6a6..0e36d6c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (latin script) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 /**
  * Serbian (latin script)
index f73e2ba..90d5761 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Tajik (Тоҷикӣ) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
  * Converts Tajiki to latin orthography
+ *
  * @ingroup Language
  */
 class TgConverter extends LanguageConverter {
index 46a776b..27331cc 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Tigrinya (ትግርኛ) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Tigrinya (ትግርኛ)
  *
index f976bed..15bce76 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Tagalog (Tagalog) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Tagalog (Tagalog)
  *
index b6acea4..6a01566 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Turkish (Türkçe) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 
 /**
  * Turkish (Türkçe)
index 8bca11b..6d147c8 100644 (file)
@@ -1,6 +1,29 @@
 <?php
+/**
+ * Tyvan (Тыва дыл) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Tyvan localization (Тыва дыл)
+/**
+ * Tyvan localization (Тыва дыл)
+ *
  * From friends at tyvawiki.org
  *
  * @ingroup Language
index 14e5d27..ce9ed33 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Ukrainian (українська мова) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
-/** Ukrainian (українська мова)
+/**
+ * Ukrainian (українська мова)
  *
  * @ingroup Language
  */
index 4a18663..8a4aca6 100644 (file)
@@ -1,13 +1,34 @@
 <?php
 /**
- * Walloon (Walon)
+ * Walloon (Walon) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
  *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @ingroup Language
  */
 
-# NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
-# k' i gn a.
-
+/**
+ * Walloon (Walon)
+ *
+ * NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
+ * k' i gn a.
+ *
+ * @ingroup Language
+ */
 class LanguageWa extends Language {
        /**
         * Use singular form for zero
index 5492529..aef5215 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Cantonese (粵語) specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
 /**
  * Cantonese (粵語)
  *
diff --git a/languages/classes/LanguageZh.deps.php b/languages/classes/LanguageZh.deps.php
deleted file mode 100644 (file)
index 41874ff..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageZh.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' );
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
index d69929d..96eea7c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Chinese specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' );
index 671a16e..d95c42e 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Simplified Chinese specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
 
 /**
  * Simplified Chinese
index 06a0800..000c8e7 100644 (file)
@@ -182,10 +182,13 @@ $messages = array(
 'tog-enotifminoredits' => "Peu'ek cit surat-e keu lon bak neuandam bacut",
 'tog-enotifrevealaddr' => 'Peuleumah alamat surat-e lon bak neubrithee surat-e',
 'tog-shownumberswatching' => 'Peuleumah jumeulah ureueng kalon',
-'tog-oldsig' => 'Peuleumah tanda jaroe:',
+'tog-oldsig' => 'Tanda jaroe jinoe:',
 'tog-fancysig' => 'Peujeuet tanda jaroe sibagoe naseukah wiki (hana hubong keudroe)',
-'tog-externaleditor' => 'Nguy alat leumiek keu ngon peugot kata luwa',
-'tog-externaldiff' => 'Nguy alat leumiek luwa keu eu bida neuandam',
+'tog-externaleditor' => 'Nguy editor eksternal nyang ka na (keu nyang utoih khong, peureulee neuato kusuih bak kompute droeneuh.
+
+[//www.mediawiki.org/wiki/Manual:External_editors Haba leubeh leungkap.])',
+'tog-externaldiff' => 'Nguy diff eksternal nyang ka na (keu nyang utoih mantong, peureulee neuato kusuih bak kompute droeneuh
+[//www.mediawiki.org/wiki/Manual:External_editors More information.])',
 'tog-showjumplinks' => 'Peuudep hubong keu ngon bantu "langsong u"',
 'tog-uselivepreview' => 'Nguy peuleumah hase langsong (JavaScript) (baci)',
 'tog-forceeditsummary' => 'Peuingat lon meunyo plok neuringkaih neuandam mantong soh',
@@ -200,6 +203,11 @@ $messages = array(
 'underline-always' => 'Sabe',
 'underline-never' => "H'an tom",
 
+# Font style option in Special:Preferences
+'editfont-monospace' => 'Seunurat Monospace',
+'editfont-sansserif' => 'Seunurat Sans-serif',
+'editfont-serif' => 'Seunurat Serif',
+
 # Dates
 'sunday' => 'Aleuhat',
 'monday' => 'Seulanyan',
@@ -259,9 +267,12 @@ $messages = array(
 'category-media-header' => 'Alat lam kawan "$1"',
 'category-empty' => "''Kawan nyoë jinoë hat hana teunuléh atawa media.''",
 'hidden-categories' => '{{PLURAL:$1|Kawan teusom|Kawan teusom}}',
+'hidden-category-category' => 'Kawan teusom',
 'category-subcat-count' => '{{PLURAL:$2|Kawan nyoë  cit na saboh yupkawan nyoë.|Kawan nyoë na {{PLURAL:$1|yupkawan|$1 yupkawan}} nyoë, dari ban dum $2.}}',
 'category-article-count' => '{{PLURAL:$2|Kawan nyoë cit na saboh ôn nyoë.|Kawan nyoë na  {{PLURAL:$1|ôn|$1 ôn }}, dari ban dum $2.}}',
+'category-file-count' => '{{PLURAL:$2|Kawan nyoe cit na beureukaih nyoe sagay.|{{PLURAL:$1|beureukaih|$1 beureukaih}} nyoe na lam kawan nyoe, nibak ban dum $2.}}',
 'listingcontinuesabbrev' => 'samb.',
+'noindex-category' => 'On nyang hana geuindex',
 
 'about' => 'Bhah',
 'article' => 'Teunuléh',
@@ -291,7 +302,7 @@ $messages = array(
 'vector-action-move' => 'Peupinah',
 'vector-action-protect' => 'Peulindông',
 'vector-action-undelete' => 'Bateuë sampôh',
-'vector-action-unprotect' => 'Bateuë peulindông',
+'vector-action-unprotect' => 'Gantoe neulindông',
 'vector-simplesearch-preference' => 'Peuudep mita saran nyang geupeusamporeuna (keu kulet Vector khong)',
 'vector-view-create' => 'Peugöt',
 'vector-view-edit' => 'Andam',
@@ -325,8 +336,8 @@ $messages = array(
 'protect' => 'Peulindông',
 'protect_change' => 'ubah',
 'protectthispage' => 'Peulindong on nyoe',
-'unprotect' => 'Bek peulindong',
-'unprotectthispage' => 'Peuhah neulindông ôn nyoë',
+'unprotect' => 'Gantoe neulindong',
+'unprotectthispage' => 'Gantoe neulindông ôn nyoë',
 'newpage' => 'Ôn barô',
 'talkpage' => 'Peugah haba bhah ôn nyoë',
 'talkpagelinktext' => 'Peugah haba',
@@ -432,6 +443,7 @@ Nan Droeneuh ka teupeugot. Neuato laju [[Special:Preferences|peue nyang neugalak
 'createaccount' => 'Peudapeuta nan barô',
 'gotaccount' => "Ka lheuëh neudapeuta? '''$1'''.",
 'gotaccountlink' => 'Tamong',
+'userlogin-resetlink' => 'Tuwoe-neuh ngon teuneurang tamong Droeneuh?',
 'loginsuccesstitle' => 'Meuhasé tamong',
 'loginsuccess' => "'''Droëneuh  jinoë ka neutamong di {{SITENAME}} sibagoë \"\$1\".'''",
 'nosuchuser' => 'Hana ureuëng nguy ngön nan "$1".
@@ -502,9 +514,12 @@ Alamat IP Droëneuh nakeuh $3, ngön ID neutheun nakeuh $5. Tulông peuseureuta
 'newarticletext' => "Droëneuh   ka neuseutot u ôn nyang goh na. Keu peugöt ôn nyan, neukeutik asoë ôn di  kutak di yup nyoë (ngiëng [[{{MediaWiki:Helppage}}|ôn bantu]] keu beurita leubèh lanjut). Meunyo Droëneuh  hana neusaja ka trôk keunoë, teugon '''back''' nyang na bak layeuë.",
 'noarticletext' => 'Hana naseukah jinoë lam ôn nyoë.
 Ji Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] bak ôn-ôn la’én, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} log nyang na hubôngan], atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} neu\'andam ôn nyoë]</span>.',
+'noarticletext-nopermission' => 'Hana asoe bak on nyoe jinoe.
+Droeneuh jeuet [[Special:Search/{{PAGENAME}}|neumita keu nan on nyoe]] bak on la\'en,
+atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} neumita log nyang na hubongan]</span>.',
 'updated' => '(Seubarô)',
 'note' => "'''Ceunatat:'''",
-'previewnote' => "'''Beu neuingat meunyo nyoë goh lom neukeubah!'''",
+'previewnote' => "'''Beu neuingat meunyo ôn nyoë goh lom neukeubah!'''",
 'editing' => 'Andam $1',
 'editingsection' => 'Andam $1 (bideuëng)',
 'copyrightwarning' => "Beu neuingat bahwa ban mandum nyang Droëneuh   tuléh keu {{SITENAME}} geukira geupeuteubiët di yup $2 (ngiëng $1 keu leubèh jeulah). Meunyoë Droëneuh h‘an neutém teunuléh Droëneuh  ji’andam ngön jiba ho ho la’én, bèk neupasoë teunuléh Droëneuh  keunoë.<br />Droëneuh  neumeujanji chit meunyoë teunuléh nyoë nakeuh atra neutuléh keudroë, atawa neucok nibak nè nè atra umôm atawa nè bibeuëh la’én.
@@ -516,11 +531,20 @@ Ji Droëneuh jeuët [[Special:Search/{{PAGENAME}}|neumita keu nan ôn nyoë]] ba
 'hiddencategories' => 'Ôn nyoë nakeuh anggèëta nibak {{PLURAL:$1|1 kawan teusom |$1 kawan teusom}}:',
 'nocreatetext' => '{{SITENAME}} ka jikot bak peugöt ôn barô. Ji Droëneuh   jeuët neuriwang teuma ngön neu’andam ôn nyang ka na, atawa [[Special:UserLogin|neutamong atawa neudapeuta]].',
 'permissionserrorstext-withaction' => 'Droëneuh hana hak tamöng keu $2, muroë {{PLURAL:$1|choë|choë}} nyoë:',
-'recreate-moveddeleted-warn' => "'''Ingat: Droëneuh  teungoh neupeugöt ulang saboh ôn nyang ka tom geusampôh. ''',
+'recreate-moveddeleted-warn' => "'''Ingat: Droëneuh neupeugöt ulang saboh ôn nyang ka tom geusampôh. ''',
 
 Neutimang-timang dilèë peuë ék patôt neupeulanjut atra nyang teungoh neu’andam.
 Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
-'moveddeleted-notice' => 'Ôn nyoë ka geusampôh. Meunyo peureulèë, nyoë pat nakeuh log seunampôh ôn nyoë.',
+'moveddeleted-notice' => 'Ôn nyoë ka geusampôh.
+Log seunampôh ngon log peuninah ôn nyoë geupeuseudiya di yup nyoe keu keuneubah.',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Ingat:''' Seunipat seunaleuek nyang neunguy rayek that.
+Ladom seunaleuek hana geupeuroh",
+'post-expand-template-inclusion-category' => 'On ngon seunipat seunaleuek nyang leubeh bataih',
+'post-expand-template-argument-warning' => "'''Ingat:''' On nyoe na paleng h'an saboh alasan seunaleuek nyang na sunipat ekspansi nyang raya that.
+Alasan-alasan nyan hana geupeureumeuen.",
+'post-expand-template-argument-category' => 'On ngon alasan seunaleuek nyang hana geupeureumeuen',
 
 # History pages
 'viewpagelogs' => 'Eu log ôn nyoë',
@@ -537,6 +561,7 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 'page_last' => 'keuneulheuëh',
 'histlegend' => "Piléh duwa teuneugön radiô, lheuëh nyan teugön teuneugön ''peubandéng'' keu peubandéng seunalén. Teugön saboh tanggay keu eu seunalén ôn bak tanggay nyan.<br />(skr) = bida ngön seunalén jinoë, (akhé) = bida ngön seunalén sigohlomjih. '''b''' = andam bacut, '''b''' = andam bot, → = andam bideuëng, ← = reuningkah keudroë",
 'history-fieldset-title' => 'Jeulajah riwayat away',
+'history-show-deleted' => 'Nyang geusampoh mantong',
 'histfirst' => 'Paléng trép',
 'histlast' => 'Paléng barô',
 
@@ -546,6 +571,8 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 # Revision deletion
 'rev-delundel' => 'peuleumah/peusom',
 'revdel-restore' => 'Ubah leumah',
+'revdel-restore-deleted' => 'geunantoe nyang ka geusampoh',
+'revdel-restore-visible' => 'geunantoe nyang leumah',
 
 # Merge log
 'revertmerge' => 'Hana jadèh peugabông',
@@ -555,7 +582,7 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 'lineno' => 'Baréh $1:',
 'compareselectedversions' => 'Peubandéng curak teupiléh',
 'editundo' => 'peubateuë',
-'diff-multi' => '({{PLURAL:$1|Sa|$1}} geunantoë antara hana geupeuleumah.)',
+'diff-multi' => '({{PLURAL:$1|Saboh|$1}} geunantoë antara nyang geupeugot le {{PLURAL:$2|sidroe|$2}} ureueng nguy hana geupeuleumah)',
 
 # Search results
 'searchresults' => 'Hasé mita',
@@ -567,9 +594,25 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 'notextmatches' => 'Hana naseukah ôn nyang pah',
 'prevn' => '{{PLURAL:$1|$1}} sigohlomjih',
 'nextn' => '{{PLURAL:$1|$1}} lheuëh nyan',
+'prevn-title' => '$1 {{PLURAL:$1|hasé|hasé}} sigohlomjih',
+'nextn-title' => '$1 {{PLURAL:$1|hase|hase}} lheueh nyan',
+'shown-title' => 'Peuleumah $1 {{PLURAL:$1|hasé|hasé}} tiëp halaman',
 'viewprevnext' => 'Eu ($1 {{int:pipe-separator}} $2)($3)',
+'searchmenu-exists' => "'''Na on ngon nan \"[[:\$1]]\" bak wiki nyoe.'''",
+'searchmenu-new' => "'''Peugot on \"[[:\$1]]\" bak wiki nyoe!'''",
 'searchhelp-url' => 'Help:Asoë',
+'searchprofile-articles' => 'On asoe',
+'searchprofile-project' => 'On Beunantu ngon Buet',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Ban dum',
+'searchprofile-advanced' => 'Tingkat lanjut',
+'searchprofile-articles-tooltip' => 'Mita bak $1',
+'searchprofile-project-tooltip' => 'Mita bak $1',
+'searchprofile-images-tooltip' => 'Mita beureukaih',
+'searchprofile-everything-tooltip' => 'Mita ban dum ôn asoë (rôh ôn marit)',
+'searchprofile-advanced-tooltip' => 'Mita bak ruweueng nan meupat-pat',
 'search-result-size' => '$1 ({{PLURAL:$2|1 kata|$2 kata}})',
+'search-result-category-size' => '{{PLURAL:$1|1 anggeeta|$1 anggeeta}} ({{PLURAL:$2|1 aneuk kawan|$2 aneuk kawan}}, {{PLURAL:$3|1 beureukaih|$3 beureukaih}})',
 'search-redirect' => '(peuninah $1)',
 'search-section' => '(bagian $1)',
 'search-suggest' => 'Kadang meukeusud Droëneuh nakeuh: $1',
@@ -578,7 +621,11 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 'search-interwiki-more' => '(lom)',
 'search-mwsuggest-enabled' => 'ngon saran',
 'search-mwsuggest-disabled' => 'hana saran',
+'searchrelated' => 'meusambat',
+'searchall' => 'ban dum',
+'showingresultsheader' => "{{PLURAL:$5|Hase '''$1''' nibak '''$3'''|Hase '''$1 - $2''' nibak '''$3'''}} keu '''$4'''",
 'nonefound' => "'''Ceunatat''': Cit ladôm ruweuëng nyang seucara baku geupeutamöng lam meunita. Ci neupuphôn leunakèë Droëneuh ngön ''all:'' keu mita ban dum asoë (rôh cit ôn peugah haba, tèmplat, ngön nyang la’én (nnl)), atawa neunguy ruweuëng nan nyang neumeuh’eut sibagoë neu’away.",
+'search-nonefound' => 'Hana hase nyang paih lagee atra neulakee',
 'powersearch' => 'Mita lanjut',
 'powersearch-legend' => 'Mita lanjut',
 'powersearch-ns' => 'Mita bak ruweuëng nan:',
@@ -595,6 +642,9 @@ Nyoë pat nakeuh log seunampôh nibak ôn nyoë:",
 'yourrealname' => 'Nan aseuli:',
 'prefs-help-realname' => '* Nan aseuli hana meucéh neupasoë.
 Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë nyang tuléh.',
+'prefs-help-email' => 'Alamat surat-e hana meuceh na, tapi geupeureulee keu peugot ulang lageuem, meunyo droeneuh tuwoe lageuem.',
+'prefs-help-email-others' => "Droeneuh jeuet cit neupileh neupubiyeue ureueng la'en geupeu'et surat keu droeneuh rot surat-e rot seunambat bak on ureueng nguy atawa on marit.
+Surat-e droeneuh h'an geupeugah keu ureueng nyan.",
 
 # Groups
 'group-sysop' => 'Ureuëng urôh',
@@ -612,6 +662,10 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'recentchanges' => 'Neuubah barô',
 'recentchanges-legend' => 'Peuniléh neuubah paléng barô',
 'recentchanges-feed-description' => 'Peutumèë neu’ubah paléng barô lam wiki bak eumpeuën nyoë.',
+'recentchanges-label-newpage' => 'Neuandam nyoe jipeugot on baro',
+'recentchanges-label-minor' => 'Nyoe neuandam ubeut',
+'recentchanges-label-bot' => 'Neuandam nyoe geupubuet le bot',
+'recentchanges-label-unpatrolled' => 'Neuandam nyoe goh lom geukalon',
 'rcnote' => "Di yup nyoë nakeuh {{PLURAL:$1|nakeuh '''1''' neu’ubah paléng barô |nakeuh '''$1''' neu’ubah paléng barô}} lam {{PLURAL:$2|'''1''' uroë|'''$2''' uroë}} nyoë, trôk ‘an $5, $4.",
 'rcnotefrom' => 'Di yup nyoë nakeuh neu’ubah yôh <strong>$2</strong> (geupeuleumah trôh ‘an <strong>$1</strong> neu’ubah).',
 'rclistfrom' => 'Peuleumah neuubah paléng barô yôh $1 kön',
@@ -647,8 +701,12 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'upload' => 'Peutamong',
 'uploadbtn' => 'Peutamong beureukah',
 'uploadlogpage' => 'Log peutamöng',
+'filedesc' => 'Ehtisa',
 'uploadedimage' => 'peutamöng "[[$1]]"',
 
+'license' => 'Jeuneh lisensi:',
+'license-header' => 'Jeuneh lisensi',
+
 # Special:ListFiles
 'listfiles' => 'Dapeuta beureukah',
 
@@ -656,6 +714,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'file-anchor-link' => 'Beureukah',
 'filehist' => 'Riwayat beureukah',
 'filehist-help' => 'Teugon bak tanggay/watèë keu eu beureukah nyoë ‘oh watèë nyan.',
+'filehist-revert' => 'peuriwang',
 'filehist-current' => 'jinoë hat',
 'filehist-datetime' => 'Tanggay/Watèë',
 'filehist-thumb' => 'Beuntuk ubeut',
@@ -664,10 +723,12 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'filehist-dimensions' => 'Dimènsi',
 'filehist-filesize' => 'Rayek beureukah',
 'filehist-comment' => 'Tapeusé',
-'imagelinks' => 'Hubông beureukah',
+'imagelinks' => 'Meuneunguy beureukaih',
 'linkstoimage' => 'Ôn di yup nyoë na {{PLURAL:$1|hubông|$1 hubông}} u beureukah nyoë:',
 'nolinkstoimage' => 'Hana ôn nyang na hubông u beureukah nyoë.',
 'sharedupload' => 'Beureukah nyoë dari $1 ngön kadang geunguy lé buët-buët la’én.',
+'sharedupload-desc-here' => "Beureukaih nyoe nejih nibak $1 ngon kadang geunguy le proyek-proyek la'en.
+Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 'uploadnewversion-linktext' => 'Peulöt seunalén nyang leubèh barô nibak beureukah nyoë.',
 
 # MIME search
@@ -689,6 +750,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'statistics' => 'Keunira',
 
 'disambiguations' => 'Ôn disambiguasi',
+'disambiguationspage' => 'Template:disambig',
 
 'doubleredirects' => 'Peuninah ganda',
 
@@ -723,6 +785,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'deadendpages' => 'Ôn buntu',
 'protectedpages' => 'Ôn nyang geulindông',
 'listusers' => 'Dapeuta ureuëng nguy',
+'usercreated' => '{{GENDER:$3|Geupeugot}} bak $1 poh $2',
 'newpages' => 'Ôn barô',
 'ancientpages' => 'Teunuléh away',
 'move' => 'Peupinah',
@@ -758,6 +821,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 # Special:LinkSearch
 'linksearch' => 'Hubông luwa',
 'linksearch-ok' => 'Mita',
+'linksearch-line' => '$1 meusambat nibak $2',
 
 # Special:Log/newusers
 'newuserlogpage' => 'ureuëng nguy barô',
@@ -771,6 +835,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 # Watchlist
 'watchlist' => 'Dapeuta keunalön lôn',
 'mywatchlist' => 'Keunalön',
+'watchlistfor2' => 'Keu $1 $2',
 'addedwatchtext' => "Ôn \"[[:\$1]]\" ka geupeutamah u [[Special:Watchlist|dapeuta keunalön]] Droëneuh. Neu’ubah-neu’ubah bak masa u keuë bak ôn nyan ngön bak ôn peugah habajih, euntreuk leumah nyoë pat. Ôn nyan euntreuk geupeuleumah ''teubay'' bak [[Special:RecentChanges|dapeuta neu’ubah paléng barô]] mangat leubèh mudah leumah.",
 'removedwatchtext' => 'Ôn "[[:$1]]" ka geusampôh nibak [[Special:Watchlist|dapeuta keunalön]] Droëneuh.',
 'watch' => 'Kalön',
@@ -789,6 +854,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
 'historywarning' => 'Ingat: Ôn nyang hawa neusampôh na riwayat:',
 'confirmdeletetext' => 'Droëneuh neuk neusampôh ôn atawa beureukah nyoë keu sabé. Meunan cit ban mandum riwayatjih nibak basis data. Neupeupaseuti meunyo Droëneuh cit keubiët meung neusampôh, neutupeuë ban mandum akébatjih, ngön peuë nyang neupeulaku nyoë nakeuh meunurôt [[{{MediaWiki:Policy-url}}|kebijakan{{SITENAME}}]].',
 'actioncomplete' => 'Seuleusoë',
+'actionfailed' => 'Hana meuhase',
 'deletedtext' => '"$1" ka geusampôh. Eu $2 keu log paléng barô bak ôn nyang ka geusampôh.',
 'dellogpage' => 'Log seunampoh',
 'deletecomment' => 'Choë:',
@@ -826,6 +892,7 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
 # Undelete
 'undeletebtn' => 'Peuriwang!',
 'undeletelink' => 'eu/peuriwang',
+'undeleteviewlink' => 'eu',
 'undelete-search-submit' => 'Mita',
 
 # Namespace form on various pages
@@ -845,9 +912,12 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
 'sp-contributions-newbies' => 'Keu ureuëng-ureuëng nyang ban nguy mantöng',
 'sp-contributions-newbies-sub' => 'Keu ureuëng nguy barô',
 'sp-contributions-blocklog' => 'Log peutheun',
-'sp-contributions-talk' => 'Peugah haba',
+'sp-contributions-uploads' => 'peunasoe',
+'sp-contributions-logs' => 'log',
+'sp-contributions-talk' => 'marit',
 'sp-contributions-search' => 'Mita soë nyang tuléh',
 'sp-contributions-username' => 'Alamat IP atawa nan ureuëng nguy:',
+'sp-contributions-toponly' => 'Peuleumah geunantoe nyang baro mantong',
 'sp-contributions-submit' => 'Mita',
 
 # What links here
@@ -858,19 +928,20 @@ Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peung
 'nolinkshere' => "Hana ôn nyang teuhubông u '''[[:$1]]'''.",
 'isredirect' => 'ôn peupinah',
 'istemplate' => 'deungön seunaleuëk',
-'isimage' => 'hubông beureukah',
+'isimage' => 'hubông beureukaih',
 'whatlinkshere-prev' => '$1 {{PLURAL:$1|sigohlomjih|sigohlomjih}}',
 'whatlinkshere-next' => '$1 {{PLURAL:$1|lheuëh nyan|lheuëh nyan}}',
 'whatlinkshere-links' => '← hubông',
 'whatlinkshere-hideredirs' => '$1 peuninah',
 'whatlinkshere-hidetrans' => '$1 transklusi',
 'whatlinkshere-hidelinks' => '$1 hubông',
+'whatlinkshere-hideimages' => '$1 hubong gamba',
 'whatlinkshere-filters' => 'Saréng',
 
 # Block/unblock
 'blockip' => 'Theun ureuëng nguy',
 'ipboptions' => '2 jeum:2 hours,1 uroë:1 day,3 uroë:3 days,1 minggu:1 week,2 minggu:2 weeks,1 buleuën:1 month,3 buleuën:3 months,6 buleuën:6 months,1 thôn:1 year,sabé:infinite',
-'ipblocklist' => 'Dapeuta neutheun',
+'ipblocklist' => 'Ureuëng nguy teutheun',
 'ipblocklist-submit' => 'Mita',
 'blocklink' => 'theun',
 'unblocklink' => 'peugadöh theun',
@@ -912,6 +983,8 @@ Lam masalah nyoë, meunyo neuhawa, Droëneuh jeuët neupeupinah atawa neupeugab
 
 # Namespace 8 related
 'allmessages' => 'Peusan sistem',
+'allmessagesname' => 'Nan',
+'allmessagesdefault' => 'Naseukah pukok',
 
 # Thumbnails
 'thumbnail-more' => 'Peurayek',
@@ -942,6 +1015,7 @@ Droëneuh cit jeuët neu’eu nèjih.',
 'tooltip-search' => 'Mita lam {{SITENAME}} nyoë',
 'tooltip-search-go' => 'Mita saboh ôn ngon nan nyang peureuséh lagèë nyoë meunyo na',
 'tooltip-search-fulltext' => 'Mita ôn nyang na asoë lagèë nyoë',
+'tooltip-p-logo' => 'Saweuë Ôn Keuë',
 'tooltip-n-mainpage' => 'Jak u Ôn Keuë',
 'tooltip-n-mainpage-description' => 'Saweuë Ôn Keuë',
 'tooltip-n-portal' => 'Bhah buët, peuë nyang jeuët neupeulaku, pat tamita sipeuë hay',
@@ -976,6 +1050,7 @@ Hubông teutap keu revisi ôn nyoë',
 'tooltip-watch' => 'Peutamah ôn nyoë u dapeuta keunalön Droëneuh',
 'tooltip-rollback' => 'Peuriwang neu’andam-neu’andam bak ôn nyoë u nyang tuléh keuneulheuëh lam sigo teugön',
 'tooltip-undo' => 'Peuriwang geunantoë nyoë ngön peuhah plôk neu’andam ngön cara eu dilèë. Choë jeuët geupeutamah bak plôk reuningkah.',
+'tooltip-summary' => 'Pasoe ehtisa paneuk',
 
 # Browsing diffs
 'previousdiff' => '← Bida away',
@@ -1002,7 +1077,8 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
 'metadata-help' => 'Beureukah nyoë na beurita tambahan nyang mungkén geutamah lé kamèra digital atawa peuminday nyang geunguy keu peugöt atawa peudigitalisasi beureukah. Meunyo beureukah nyoë ka geu’ubah, tapeusili nyang na mungkén hana seucara peunoh meurefleksikan beurita nibak gamba nyang ka geu’ubah nyoë.',
 'metadata-expand' => 'Peuleumah tapeusili teunamah',
 'metadata-collapse' => 'Peusom tapeusili teunamah',
-'metadata-fields' => 'Èntri mètadata EXIF nyoë keuneuk geupeuleumah bak ôn beurita gamba meunyo tabel mètadata geupeusom. Èntri la’én seucara baku keuneuk geupeusom.
+'metadata-fields' => "Bideuëng mètadata gamba nyang na lam peusan nyoë keuneuk geupasoë bak tampilan halaman gamba 'oh watèë tabel mètadata geutôp.
+Data nyang la'én eunteuk teupeusom keudroë.
 * make
 * model
 * datetimeoriginal
@@ -1015,7 +1091,7 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
 * imagedescription
 * gpslatitude
 * gpslongitude
-* gpsaltitude',
+* gpsaltitude",
 
 # External editor support
 'edit-externally' => 'Andam beureukah nyoë ngön aplikasi luwa',
@@ -1031,6 +1107,9 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
 'watchlisttools-edit' => 'Peuleumah ngön andam dapeuta kaeunalön',
 'watchlisttools-raw' => 'Andam dapeuta keunalön meuntah',
 
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Ingat:\'\'\' Gunci meuurot pukok "$2" jipeuhiro gunci meuurot pukok "$1" sigohlomjih.',
+
 # Special:Version
 'version' => 'Curak',
 
@@ -1040,4 +1119,16 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
 # Special:SpecialPages
 'specialpages' => 'Ôn kusuih',
 
+# External image whitelist
+'external_image_whitelist' => '#Neupubiyeue bareh nyoe lagee na<pre>
+#Neunguy fragmen-fragmen ekspresi regular (bak bagian antara // mantong) di yup nyoe
+#fragmen-fragmen nyoe eunteuk geupeupaih ngon URL nibak gamba-gamba luwa (nyang geupeuhubong lansong)
+#Fragmen nyang paih eunteuk geupeuleumah sibagoe gamba, seuhjih keu link mantong
+#Bareh nyang geupuphon ngon # eunteuk geupeujeuet keu bareh beunalah
+#Nyoe hana geupubida haraih rayek ngon ubeut
+#Neupeuduek ban dum beunagi ekspresi biasa di yup bareh nyoe. Neupubiyeue bareh nyoe lagee na</pre>',
+
+# Special:Tags
+'tag-filter' => 'Filter [[Special:Tags|tag]]:',
+
 );
index 1643661..f3413ab 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Abanima
  * @author Csisc
  */
 
@@ -434,7 +435,7 @@ $1',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة|مراجعتان متوسطتان غير معروضتان|$1 مراجعات متوسطة غير معروضة|$1 مراجعة متوسطة غير معروضة}} أجراها {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
+'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 
 # Search results
 'searchresults' => 'el resultats',
index 13b927d..a9930d0 100644 (file)
@@ -594,6 +594,8 @@ Probeer asseblief weer oor 'n paar minute.",
 'ns-specialprotected' => 'Spesiale bladsye kan nie geredigeer word nie.',
 'titleprotected' => "Hierdie titel is beskerm teen skepping deur [[User:$1|$1]].
 Die rede gegee is ''$2''.",
+'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
+'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
@@ -682,6 +684,7 @@ Om misbruik te voorkom, word slegs een wagwoordwenk per {{PLURAL:$1|uur|$1 ure}}
 'invalidemailaddress' => "Die e-posadres is nie aanvaar nie, aangesien dit 'n ongeldige formaat blyk te hê.
 Voer asseblief 'n geldige e-posadres in, of laat die veld leeg.",
 'cannotchangeemail' => "Die e-posadres vir 'n gebruiker kan nie op hierdie wiki gewysig word nie.",
+'emaildisabled' => 'Hierdie webwerf kan nie e-poste stuur nie.',
 'accountcreated' => 'Rekening geskep',
 'accountcreatedtext' => 'Die rekening vir gebruiker $1 is geskep.',
 'createaccount-title' => 'Rekeningskepping vir {{SITENAME}}',
@@ -1149,7 +1152,9 @@ Let op dat die gebruik van navigasieskakels hierdie kolom se waardes sal herstel
 'mergelogpagetext' => "Hieronder is 'n lys van die mees onlangse versmeltings van een bladsy se geskiedenis na 'n ander.",
 
 # Diffs
-'history-title' => 'Weergawegeskiedenis van "$1"',
+'history-title' => '$1: weergawegeskiedenis',
+'difference-title' => '$1: verskil tussen weergawes',
+'difference-title-multipage' => '$1 en $2: verskil tussen bladsye',
 'difference-multipage' => '(Verskil tussen bladsye)',
 'lineno' => 'Lyn $1:',
 'compareselectedversions' => 'Vergelyk gekose weergawes',
@@ -1246,6 +1251,7 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'prefs-beta' => 'Beta-funksies',
 'prefs-datetime' => 'Datum en tyd',
 'prefs-labs' => 'Labs-funksies',
+'prefs-user-pages' => 'Gebruikersbladsye',
 'prefs-personal' => 'Gebruikersdata',
 'prefs-rc' => 'Onlangse wysigings',
 'prefs-watchlist' => 'Dophoulys',
index c46c19f..44d6642 100644 (file)
@@ -1179,7 +1179,7 @@ Mundeni me zgjedhe që të tjerët me ju kontaktue përmjet faqe së diskutimit
 'nchanges' => '$1 {{PLURAL:$1|ndryshim|ndryshime}}',
 'recentchanges' => 'Ndryshimet e fundit',
 'recentchanges-legend' => 'Opcionet e ndryshimeve të reja',
-'recentchangestext' => 'Ndiqni ndryshime së fundmi tek kjo faqe.',
+'recentchanges-summary' => 'Ndiqni ndryshime së fundmi tek kjo faqe.',
 'recentchanges-feed-description' => 'Përcjelli ndryshimet mâ të reja të këtij wiki në këtë feed.',
 'recentchanges-label-newpage' => 'Ky redaktim krijoi një faqe të re',
 'rcnote' => "Mâ poshtë {{PLURAL:$1|âsht '''1''' ndryshim|janë '''$1''' ndryshimet e fundit}} në {{PLURAL:$2|ditën|'''$2''' ditët}} e fundit, prej $5, $4.",
index a66a474..2aa5d28 100644 (file)
@@ -944,7 +944,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'nchanges' => '$1 {{PLURAL:$1|ለውጥ|ለውጦች}}',
 'recentchanges' => 'በቅርብ ጊዜ የተለወጡ',
 'recentchanges-legend' => 'የቅርብ ለውጥ አማራጮች፦',
-'recentchangestext' => 'በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።',
+'recentchanges-summary' => 'በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።',
 'recentchanges-feed-description' => 'በዚህ ዊኪ ላይ በቅርብ ግዜ የተለወጠውን በዚሁ feed መከታተል ይችላሉ',
 'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
index 0aeeae0..b359042 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Aragonese (Aragonés)
+/** Aragonese (aragonés)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -43,6 +43,9 @@ $namespaceAliases = array(
        'Espezial' => NS_SPECIAL,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $magicWords = array(
        'redirect'                => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
        'namespace'               => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ),
index 11caa40..cd3124a 100644 (file)
@@ -370,6 +370,7 @@ $specialPageAliases = array(
        'Filepath'                  => array( 'مسار_ملف' ),
        'Import'                    => array( 'استيراد' ),
        'Invalidateemail'           => array( 'تعطيل_البريد_الإلكتروني' ),
+       'JavaScriptTest'            => array( 'اختبار_جافا_سكريبت' ),
        'BlockList'                 => array( 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ),
        'LinkSearch'                => array( 'بحث_الوصلات' ),
        'Listadmins'                => array( 'عرض_الإداريين' ),
@@ -464,8 +465,8 @@ $messages = array(
 'tog-hidepatrolled' => 'أخف التعديلات المراجعة في أحدث التغييرات',
 'tog-newpageshidepatrolled' => 'أخف الصفحات المراجعة من قائمة الصفحات الجديدة',
 'tog-extendwatchlist' => 'مدد قائمة المراقبة لعرض كل التغييرات، وليس الأحدث فقط',
-'tog-usenewrc' => 'استخدÙ\85 Ø£Ø­Ø¯Ø« Ø§Ù\84تغÙ\8aÙ\8aرات Ø§Ù\84Ù\85حسÙ\86ة (يتطلب جافاسكربت)',
-'tog-numberheadings' => 'رقم العناوين تلقائيا',
+'tog-usenewrc' => 'جÙ\85Ù\91ع Ø§Ù\84تعدÙ\8aÙ\84ات Ø­Ø³Ø¨ Ø§Ù\84صÙ\81حة Ù\81Ù\8a Ø£Ø­Ø¯Ø« Ø§Ù\84تغÙ\8aÙ\8aرات Ù\88Ù\82ائÙ\85Ø© Ø§Ù\84Ù\85راÙ\82بة (يتطلب جافاسكربت)',
+'tog-numberheadings' => 'رقم العناوين تلقائياً',
 'tog-showtoolbar' => 'أظهر شريط التحرير (يتطلب جافاسكربت)',
 'tog-editondblclick' => 'عدل الصفحات عند الضغط المزدوج (جافاسكربت)',
 'tog-editsection' => 'مكن تعديل الأقسام عن طريق وصلات [عدل]',
@@ -487,8 +488,8 @@ $messages = array(
 'tog-shownumberswatching' => 'اعرض عدد المستخدمين المراقبين',
 'tog-oldsig' => 'التوقيع الحالي:',
 'tog-fancysig' => 'عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)',
-'tog-externaleditor' => 'استخدم محررا خارجيا بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors مزيد من المعلومات.])',
-'tog-externaldiff' => 'استخدم فرقا خارجيا بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors للمزيد من المعلومات.])',
+'tog-externaleditor' => 'استخدم محرراً خارجياً بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([[mw:Manual:External_editors|للمزيد من المعلومات]].)',
+'tog-externaldiff' => 'استخدم فرقاً خارجياً بشكل افتراضي (للخبراء فقط، يحتاج إعدادات خاصة على حاسوبك) ([[mw:Manual:External_editors|للمزيد من المعلومات]].)',
 'tog-showjumplinks' => 'مكن وصلات "اذهب إلى" المساعدة',
 'tog-uselivepreview' => 'استخدم الاستعراض السريع (جافاسكريبت) (تجريبي)',
 'tog-forceeditsummary' => 'نبهني عند إدخال ملخص تعديل فارغ',
@@ -848,6 +849,9 @@ $2',
 'ns-specialprotected' => 'الصفحات الخاصة لا يمكن تعديلها.',
 'titleprotected' => "{{GENDER:$1|حمى|حمت}} [[User:$1|$1]] هذا العنوان من الإنشاء.
 السبب المعطى هو ''$2''.",
+'filereadonlyerror' => 'تعذر تعديل الملف "$1" لأن مستودع الملف "$2" في وضع القراءة فقط. 
+
+المدير الذي قام بغلقه قدم التفسير التالي: "$3".',
 'invalidtitle-knownnamespace' => 'عنوان غير صالح في النطاق «$2» مع نص «$3»',
 'invalidtitle-unknownnamespace' => 'عنوان غير صالح ذو نطاق غير معروف رقم $1 ونص «$2»',
 
@@ -1249,8 +1253,11 @@ $2
 'parser-template-recursion-depth-warning' => 'تم تجاوز حد عمق فرد القوالب ($1)',
 'language-converter-depth-warning' => 'تم تخطي حد عمق محول اللغة ($1)',
 'node-count-exceeded-category' => 'الصفحات التي حدث فيها تجاوز تعداد العقد',
+'node-count-exceeded-warning' => 'تجاوزت هذه الصفحة تعداد العقد',
 'expansion-depth-exceeded-category' => 'الصفحات التي حدث فيها تجاوز عمق التوسيع',
 'expansion-depth-exceeded-warning' => 'الصفحة تجاوزت عمق التوسيع',
+'parser-unstrip-loop-warning' => 'حلقة معراة تم الكشف عنها',
+'parser-unstrip-recursion-limit' => 'تعدى حد العودية Unstrip  ($1)',
 
 # "Undo" feature
 'undo-success' => 'يمكن استرجاع التعديل.
@@ -1431,15 +1438,15 @@ $1",
 'mergelogpagetext' => 'بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.',
 
 # Diffs
-'history-title' => 'تاريخ مراجعة "$1"',
-'difference-title' => 'الفرق بين المراجعتين في «$1»',
-'difference-title-multipage' => 'الفرق بين الصفحتين «$1» و«$2»',
+'history-title' => ' «$1»: تاريخ المراجعة',
+'difference-title' => '«$1»: الفرق بين المراجعتين',
+'difference-title-multipage' => '«$1» و«$2»: الفرق بين الصفحتين',
 'difference-multipage' => '(الفرق بين الصفحتين)',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
 'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة|مراجعتان متوسطتان غير معروضتان|$1 مراجعات متوسطة غير معروضة|$1 مراجعة متوسطة غير معروضة}} أجراها {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
+'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 
 # Search results
@@ -1531,6 +1538,7 @@ $1",
 'prefs-beta' => 'مزايا بيتا',
 'prefs-datetime' => 'وقت وتاريخ',
 'prefs-labs' => 'مزايا مختبرية',
+'prefs-user-pages' => 'صفحات المستخدمين',
 'prefs-personal' => 'ملف المستخدم',
 'prefs-rc' => 'أحدث التغييرات',
 'prefs-watchlist' => 'قائمة المراقبة',
@@ -1819,6 +1827,7 @@ $1",
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|لا مستخدمون يراقبون|مستخدم واحد يراقب|مستخدمان يراقبان|$1 مستخدمين يراقبون|$1 مستخدما يراقب|$1 مستخدم يراقب}}]',
 'rc_categories' => 'حصر لتصنيفات (مفرقة برمز "|")',
 'rc_categories_any' => 'أي',
+'rc-change-size-new' => '$1 {{PLURAL:$1|بايت|بايت}} بعد التغيير',
 'newsectionsummary' => '/* $1 */ قسم جديد',
 'rc-enhanced-expand' => 'عرض التفاصيل (يتطلب جافاسكريبت)',
 'rc-enhanced-hide' => 'أخفِ التفاصيل',
@@ -2003,7 +2012,19 @@ $1',
 'backend-fail-writetemp' => 'تعذّرت كتابة ملف مؤقت.',
 'backend-fail-closetemp' => 'تعذّر إغلاق ملف مؤقت.',
 'backend-fail-read' => 'لا يمكن قراءة الملف $1.',
-'backend-fail-create' => 'تعذر إنشاء الملف $1.',
+'backend-fail-create' => 'تعذر كتابة الملف $1.',
+'backend-fail-maxsize' => 'تعذر كتابة الملف $1 لأنه أكبر من  {{PLURAL:$2|بايت واحد|$2 بايت}}.',
+'backend-fail-readonly' => 'خلفية التخزين "$1" في وضعية القراءة فقط حاليا. السبب في ذلك هو: "$2"',
+'backend-fail-synced' => 'الملف "$1" في حالة غير متناسقة ضمن خلفية التخزين الداخلية',
+'backend-fail-connect' => 'تعذر ربط الإتصال بخلفية التخزين "$1".',
+'backend-fail-internal' => 'وقع خطأ غير معروف في خلفية التخزين "$1".',
+'backend-fail-contenttype' => 'تعذر تحديد نوع محتوى الملف الذي تريد تخزينه في "$1".',
+'backend-fail-batchsize' => 'أعطت خلفية التخزين دفعة $1 ملف {{PLURAL:$1|عملية|عمليات}}; الحد الأقصى هو $2 {{PLURAL:$2|عملية|عمليات}}.',
+'backend-fail-usable' => 'تعذر كتابة الملف $1 لنقص في التراخيص أو فقدان الدلائل/الحاويات.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'تعذر ربط الإتصال بقاعدة بيانات خلفية التخزين "$1".',
+'filejournal-fail-dbquery' => 'تعذر تحديث قاعدة بيانات خلفية تخزين "$1".',
 
 # Lock manager
 'lockmanager-notlocked' => 'تعذر فتح "$1"، الملف غير مغلق.',
@@ -2326,6 +2347,7 @@ $1',
 باستطاعتك جعل القائمة أكثر تحديداً، وذلك باختيار نوع السجل واسم المستخدم (حساس لحالة الحروف)، أو الصفحة المتأثرة (أيضاً حساس لحالة الحروف).',
 'logempty' => 'لا توجد مدخلات مطابقة في السجل.',
 'log-title-wildcard' => 'ابحث عن عناوين تبدأ بهذا النص',
+'showhideselectedlogentries' => 'إطهار/إخفاء سجلات الدخول المختارة',
 
 # Special:AllPages
 'allpages' => 'كل الصفحات',
@@ -2804,7 +2826,7 @@ $1',
 'unblockip' => 'رفع المنع عن المستخدم',
 'unblockiptext' => 'استخدم الاستمارة أدناه لاسترجاع صلاحية الكتابة الخاصة بعنوان أيبي أو مستخدم تم سحبها منه مسبقا.',
 'ipusubmit' => 'ارفع هذا المنع',
-'unblocked' => '[[User:$1|$1]] تم رفع منعه',
+'unblocked' => '[[User:$1|$1]] تم رفع المنع عنه',
 'unblocked-range' => 'تم إلغاء منع $1',
 'unblocked-id' => 'منع $1 تم رفعه',
 'blocklist' => 'المستخدمون الممنوعون',
@@ -2837,8 +2859,8 @@ $1',
 'change-blocklink' => 'تغيير المنع',
 'contribslink' => 'مساهمات',
 'emaillink' => 'أرسل بريدًا إلكترونيًا',
-'autoblocker' => 'تم منعك تلقائيا لأن الأيبي الخاص بك تم استخدامه مؤخراً بواسطة "[[User:$1|$1]]".
-السبب المعطى لمنع $1 هو: "$2"',
+'autoblocker' => 'تم منعك تلقائياً لأن الأيبي الخاص بك تم استخدامه مؤخراً بواسطة «[[User:$1|$1]]».
+السبب المعطى لمنع $1 هو: «$2»',
 'blocklogpage' => 'سجل المنع',
 'blocklog-showlog' => 'سبق منع هذا المستخدم.
 سجل المنع معروض بالأسفل كمرجع:',
@@ -2847,8 +2869,8 @@ $1',
 'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
 'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
 'blocklogtext' => 'هذا سجل بعمليات المنع ورفع المنع.
-عناوين الأيبي الممنوعة تلقائيا ليست معروضة.
-أنظر [[Special:BlockList|قائمة منع الآيبي]] لرؤية عمليات المنع المفعلة حاليا.',
+عناوين الأيبي الممنوعة تلقائياً غير معروضة.
+أنظر [[Special:BlockList|قائمة منع الآيبي]] لرؤية عمليات المنع المفعلة حالياً.',
 'unblocklogentry' => 'رفع منع $1',
 'block-log-flags-anononly' => 'المستخدمون المجهولون فقط',
 'block-log-flags-nocreate' => 'إنشاء الحسابات ممنوع',
@@ -2871,7 +2893,7 @@ $1',
 لكنه ممنوع كجزء من النطاق $2، والذي يمكن رفع المنع عنه.',
 'ip_range_invalid' => 'نطاق عناوين الأيبي المدخل غير صحيح.',
 'ip_range_toolarge' => 'لا يسمح بنطاقات المنع الأكبر من /$1',
-'blockme' => 'منعي',
+'blockme' => 'امنعني',
 'proxyblocker' => 'مانع البروكسي',
 'proxyblocker-disabled' => 'هذه الخاصية معطلة.',
 'proxyblockreason' => 'تم منع عنوان الأيبي الخاص بك لكونه بروكسي مفتوح.
@@ -2913,12 +2935,12 @@ $1',
 'move-page-legend' => 'نقل صفحة',
 'movepagetext' => "باستخدام  الاستمارة بالأسفل بإمكانك أن تغير اسم الصفحة، وأن تنقل تاريخها إلى لاسم الجديد.
 العنوان القديم سيصبح تحويلة للعنوان الجديد.
\8aÙ\85Ù\83Ù\86Ù\83 ØªØ­Ø¯Ù\8aØ« Ø§Ù\84تحÙ\88Ù\8aÙ\84ات Ø§Ù\84تÙ\8a ØªØ´Ù\8aر Ø¥Ù\84Ù\89 Ø§Ù\84عÙ\86Ù\88اÙ\86 Ø§Ù\84أصÙ\84Ù\8a تلقائياً.
-لو اخترت ألا تفعل، تأكد من عدم وجود تحويلات [[Special:DoubleRedirects|مزدوجة]] أو [[Special:BrokenRedirects|مكسورة]].
-أنت مسؤول عن التأكد من أن الوصلات تصل إلى الصفحات التي يفترض أن تصل إليها.
\8aÙ\85Ù\83Ù\86Ù\83 Ø£Ù\86 ØªØªØ±Ù\83 Ø§Ù\84تحÙ\88Ù\8aÙ\84ات Ø§Ù\84تÙ\8a ØªØ´Ù\8aر Ø¥Ù\84Ù\89 Ø§Ù\84عÙ\86Ù\88اÙ\86 Ø§Ù\84أصÙ\84Ù\8a Ù\83Ù\85ا Ù\87Ù\8a Ù\84تÙ\82Ù\88Ù\85 Ø§Ù\84بÙ\88تات Ø¨ØªØ­Ø¯Ù\8aØ«Ù\87ا تلقائياً.
+إذا اخترت أن تقوم بالتحديث يدوياً، فتأكد من عدم وجود تحويلات [[Special:DoubleRedirects|مزدوجة]] أو [[Special:BrokenRedirects|مكسورة]] وقم بتصحيحها.
+أنت المسؤول عن التأكد من أن الوصلات تصل إلى الصفحات التي يفترض أن تصل إليها.
 
-لاحظ أنه '''لن يتم''' نقل الصفحة إذا وجدت صفحة في العنوان الجديد، إلا إذا كانت فارغة، أو تحويلة ولا تاريخ لها.
-هذا يعني أنك تستطيع استرجاع الصفحة إلى مكانها لو قمت بخطأ، وأنك لا يمكنك الكتابة على صفحة موجودة.
+لاحظ أنه '''لن يتم''' نقل الصفحة إذا وجدت صفحة في العنوان الجديد، إلا إذا كانت فارغة أو صفحة تحويل، ولا تاريخ لها.
+هذا يعني أنك تستطيع استرجاع الصفحة إلى مكانها لو قمت بخطأ، وأنك لا يمكنك نسخ هذه الصفحة فوق صفحة موجودة.
 
 '''تحذير!'''
 هذا قد يكون تغييراً كارثياً وغير متوقع لصفحة مشهورة؛
@@ -3098,6 +3120,9 @@ $1',
 'import-invalid-interwiki' => 'لم يمكن الاستيراد من الويكي المحدد.',
 'import-error-edit' => 'الصفحة "$1" لم يتم استيرادها لأنه لا يمكن لك تحريرها.',
 'import-error-create' => 'الصفحة "$1" لم يتم استيرادها لأنه لا يمكن لك استحداثها أصلا.',
+'import-error-interwiki' => 'تعذر أستيراد الصفحة "$1" بسبب أن إسمها محجوز للربط الخارجي (interwiki).',
+'import-error-special' => 'تعذر أستيراد الصفحة "$1" لأنها تنتمي إلى مساحة إسم خاصة تمنع الصفحات.',
+'import-error-invalid' => 'تعذر أستيراد الصفحة "$1" بسبب أن إسمها غير صحيح.',
 
 # Import log
 'importlogpage' => 'سجل الاستيراد',
@@ -3110,6 +3135,13 @@ $1',
 # JavaScriptTest
 'javascripttest' => 'اختبار جافاسكربت',
 'javascripttest-disabled' => 'هذه الخاصية معطلة.',
+'javascripttest-title' => 'تشغيل أختبارات $1',
+'javascripttest-pagetext-noframework' => 'هذه الصفحة محجوزة لإجراء أختبارات الجافا سكريبت.',
+'javascripttest-pagetext-unknownframework' => 'إطار اختبار غير معروف "$1".',
+'javascripttest-pagetext-frameworks' => 'الرجاء اختيار أحد أطر الاختبارات التالية: $1',
+'javascripttest-pagetext-skins' => 'قم باختيار الواجهة لإجراء الإحتبارات بها:',
+'javascripttest-qunit-intro' => 'راجع [$1 وثيقة الإختبار] على mediawiki.org.',
+'javascripttest-qunit-heading' => 'جناح أختبار MediaWiki JavaScript QUnit',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'صفحة المستخدم الخاصة بك',
@@ -3352,8 +3384,8 @@ $1',
 إذا كان الملف قد عدل عن حالته الأصلية، فبعض التفاصيل قد لا تعبر عن الملف المعدل.',
 'metadata-expand' => 'أظهر التفاصيل الممتدة',
 'metadata-collapse' => 'أخفِ التفاصيل الممتدة',
-'metadata-fields' => 'Ø­Ù\82Ù\88Ù\84 Ù\85عطÙ\8aات Ø§Ù\84Ù\85Ù\8aتا Ø§Ù\84Ù\85Ù\88جÙ\88دة Ù\81Ù\8a Ù\87Ø°Ù\87 Ø§Ù\84رساÙ\84Ø© Ø³Ù\88Ù\81 ØªØ¹Ø±Ø¶ Ù\81Ù\8a ØµÙ\81حة Ø§Ù\84صÙ\88رة Ø¹Ù\86دÙ\85ا Ù\8aÙ\83Ù\88Ù\86 Ø¬Ø¯Ù\88Ù\84 Ù\85عطÙ\8aات Ø§Ù\84Ù\85Ù\8aتا Ù\85ضغÙ\88طا.
-الحقول الأخرى ستكون مخفية افتراضيا.
+'metadata-fields' => 'ستعرض Ø­Ù\82Ù\88Ù\84 Ù\85عطÙ\8aات Ø§Ù\84Ù\85Ù\8aتا Ø§Ù\84Ù\85Ù\88جÙ\88دة Ù\81Ù\8a Ù\87Ø°Ù\87 Ø§Ù\84رساÙ\84Ø© Ù\81Ù\8a ØµÙ\81حة Ø§Ù\84صÙ\88رة Ø¹Ù\86دÙ\85ا Ù\8aÙ\83Ù\88Ù\86 Ø¬Ø¯Ù\88Ù\84 Ù\85عطÙ\8aات Ø§Ù\84Ù\85Ù\8aتا Ù\85Ø·Ù\88Ù\8aاÙ\8b.
+الحقول الأخرى ستكون مخفية افتراضياً.
 * make
 * model
 * datetimeoriginal
@@ -3371,7 +3403,7 @@ $1',
 # EXIF tags
 'exif-imagewidth' => 'العرض',
 'exif-imagelength' => 'الارتفاع',
-'exif-bitspersample' => 'بت لكل مكون',
+'exif-bitspersample' => 'بت لكل مكونة',
 'exif-compression' => 'نظام الضغط',
 'exif-photometricinterpretation' => 'تركيب البكسل',
 'exif-orientation' => 'التوجيه',
@@ -3388,19 +3420,19 @@ $1',
 'exif-jpeginterchangeformatlength' => 'بايت من بيانات JPEG',
 'exif-whitepoint' => 'ألوان النقطة البيضاء',
 'exif-primarychromaticities' => 'ألوان الأساسيات',
-'exif-ycbcrcoefficients' => 'Ù\85عاÙ\85Ù\84ات Ù\85صÙ\81Ù\88Ù\81Ø© ØªØ­Ù\88Ù\8aÙ\84 Ù\81راغ اللون',
+'exif-ycbcrcoefficients' => 'Ù\85عاÙ\85Ù\84ات Ù\85صÙ\81Ù\88Ù\81Ø© ØªØ­Ù\88Ù\8aÙ\84 Ù\81ضاء اللون',
 'exif-referenceblackwhite' => 'زوج من قيم المرجع السوداء والبيضاء',
 'exif-datetime' => 'تاريخ ووقت تغيير الملف',
 'exif-imagedescription' => 'عنوان الصورة',
 'exif-make' => 'مصنع آلة التصوير',
-'exif-model' => 'نوع آلة التصوير',
+'exif-model' => 'طراز الكاميرا',
 'exif-software' => 'البرمجيات المستخدمة',
 'exif-artist' => 'المؤلف',
 'exif-copyright' => 'مالك الحقوق',
 'exif-exifversion' => 'نسخة Exif',
 'exif-flashpixversion' => 'نسخة فلاش بكس المدعومة',
-'exif-colorspace' => 'Ù\81رÙ\82 Ø§Ù\84Ù\84Ù\88ن',
-'exif-componentsconfiguration' => 'معنى كل مكون',
+'exif-colorspace' => 'Ù\81ضاء Ø§Ù\84Ø£Ù\84Ù\88ان',
+'exif-componentsconfiguration' => 'معنى كل مكونة',
 'exif-compressedbitsperpixel' => 'طور ضغط الصورة',
 'exif-pixelydimension' => 'عرض الصورة',
 'exif-pixelxdimension' => 'ارتفاع الصورة',
@@ -3503,7 +3535,7 @@ $1',
 'exif-credit' => 'الرصيد/المزود',
 'exif-source' => 'المصدر',
 'exif-editstatus' => 'الحالة التحريرية للصورة',
-'exif-urgency' => 'Ø¥Ù\84حاح',
+'exif-urgency' => 'عاجÙ\84',
 'exif-fixtureidentifier' => 'اسم العنصر',
 'exif-locationdest' => 'اسم الموقع مصورا',
 'exif-locationdestcode' => 'رمز الموقع مصورا',
@@ -3542,9 +3574,9 @@ $1',
 'exif-intellectualgenre' => 'نوع العنصر',
 'exif-subjectnewscode' => 'رمز الموضوع',
 'exif-scenecode' => 'رمز مشهد IPTC',
-'exif-event' => 'اسم الحدث مصورا',
-'exif-organisationinimage' => 'اÙ\84Ù\85Ù\86ظÙ\85Ø© Ù\85صورة',
-'exif-personinimage' => 'اÙ\84شخص Ù\85صÙ\88را',
+'exif-event' => 'الحدث في الصورة',
+'exif-organisationinimage' => 'اÙ\84Ù\85Ù\86ظÙ\85Ø© Ù\81Ù\8a Ø§Ù\84صورة',
+'exif-personinimage' => 'اÙ\84شخص Ù\81Ù\8a Ø§Ù\84صÙ\88رة',
 'exif-originalimageheight' => 'ارتفاع الصورة قبل أن تقتطع',
 'exif-originalimagewidth' => 'عرض الصورة قبل أن تقتطع',
 
@@ -3572,15 +3604,15 @@ $1',
 'exif-unknowndate' => 'تاريخ غير معروف',
 
 'exif-orientation-1' => 'عادي',
-'exif-orientation-2' => 'دار عرضيا',
-'exif-orientation-3' => 'دار 180°',
-'exif-orientation-4' => 'دار أفقيا',
-'exif-orientation-5' => 'دار 90° CCW و انزلق رأسيا',
+'exif-orientation-2' => 'مقلوبة أفقياً',
+'exif-orientation-3' => 'مدورة 180°',
+'exif-orientation-4' => 'مقلوبة رأسياً',
+'exif-orientation-5' => 'مدورة 90° عكس عقارب الساعة ومقلوبة رأسياً',
 'exif-orientation-6' => 'مدورة 90° عكس عقارب الساعة',
-'exif-orientation-7' => 'دار 90° CW و انزلق رأسيا',
+'exif-orientation-7' => 'مدورة 90° في اتجاه عقارب الساعة ومقلوبة رأسياً',
 'exif-orientation-8' => 'مدورة 90° في اتجاه عقارب الساعة',
 
-'exif-planarconfiguration-1' => 'صيغة تشنكي',
+'exif-planarconfiguration-1' => 'صيغة مكتنزة',
 'exif-planarconfiguration-2' => 'صيغة مستوية',
 
 'exif-xyresolution-i' => '$1 نقطة لكل بوصة',
@@ -3600,12 +3632,12 @@ $1',
 'exif-exposureprogram-0' => 'غير معرف',
 'exif-exposureprogram-1' => 'يدوي',
 'exif-exposureprogram-2' => 'برنامج عادي',
-'exif-exposureprogram-3' => 'أولوية الغالق',
-'exif-exposureprogram-4' => 'أولوية الإغلاق',
-'exif-exposureprogram-5' => 'برÙ\86اÙ\85ج Ø§Ù\84صÙ\86ع (Ù\8aÙ\85Ù\8aÙ\84 ØªØ¬Ø§Ù\87 عمق الحقل)',
-'exif-exposureprogram-6' => 'برنامج الفعل (يميل تجاه سرعة الغلق)',
-'exif-exposureprogram-7' => 'Ø·Ù\88ر Ø§Ù\84بÙ\88رترÙ\8aÙ\87 (Ù\84صÙ\88ر Ø§Ù\84إغÙ\84اÙ\82 Ù\85ع Ø§Ù\84Ø®Ù\84Ù\81Ù\8aØ© Ø¨Ø¹Ù\8aدا Ø¹Ù\86 Ø§Ù\84بؤرة)',
-'exif-exposureprogram-8' => 'Ø·Ù\88ر Ø§Ù\84أرضÙ\8aØ© (Ù\84صÙ\88ر Ø§Ù\84أرضية مع الخلفية في البؤرة)',
+'exif-exposureprogram-3' => 'أولوية الفتحة',
+'exif-exposureprogram-4' => 'أولوية المغلاق',
+'exif-exposureprogram-5' => 'برÙ\86اÙ\85ج Ø®Ù\84اÙ\82 (تحÙ\8aز Ù\84صاÙ\84Ø­ عمق الحقل)',
+'exif-exposureprogram-6' => 'برنامج الفعل (تحيز لصالح سرعة المغلاق)',
+'exif-exposureprogram-7' => 'أسÙ\84Ù\88ب Ø§Ù\84بÙ\88رترÙ\8aÙ\87 (تصÙ\88Ù\8aر Ù\85Ù\86 Ù\82رÙ\8aب Ù\85ع ØªØºÙ\8aÙ\8aÙ\85 Ø§Ù\84Ø®Ù\84Ù\81Ù\8aة)',
+'exif-exposureprogram-8' => 'أسÙ\84Ù\88ب Ø§Ù\84Ù\85Ù\86ظر Ø§Ù\84طبÙ\8aعÙ\8a (Ù\84صÙ\88ر Ø§Ù\84Ù\85Ù\86اظر Ø§Ù\84طبÙ\8aعية مع الخلفية في البؤرة)',
 
 'exif-subjectdistance-value' => '$1 متر',
 
@@ -3613,7 +3645,7 @@ $1',
 'exif-meteringmode-1' => 'متوسط',
 'exif-meteringmode-2' => 'متوسط موزون بالمركز',
 'exif-meteringmode-3' => 'بقعة',
-'exif-meteringmode-4' => 'Ù\85اÙ\84تÙ\8a Ø³Ø¨Ù\88ت',
+'exif-meteringmode-4' => 'Ù\85تعدد Ø§Ù\84بÙ\82ع',
 'exif-meteringmode-5' => 'نمط',
 'exif-meteringmode-6' => 'جزئي',
 'exif-meteringmode-255' => 'غير ذلك',
@@ -3662,7 +3694,7 @@ $1',
 'exif-sensingmethod-7' => 'مستشعر خطي ثلاثي',
 'exif-sensingmethod-8' => 'مستشعر لون خطي متتابع',
 
-'exif-filesource-3' => 'كاميرا رقمية واقفة',
+'exif-filesource-3' => 'كاميرا رقمية',
 
 'exif-scenetype-1' => 'صورة ملتقطة بشكل مباشر',
 
@@ -3671,14 +3703,14 @@ $1',
 
 'exif-exposuremode-0' => 'تعرض تلقائي',
 'exif-exposuremode-1' => 'تعرض يدوي',
-'exif-exposuremode-2' => 'Ø£Ù\82Ù\88اس تلقائية',
+'exif-exposuremode-2' => 'سÙ\84سÙ\84Ø© تلقائية',
 
 'exif-whitebalance-0' => 'توازن الأبيض تلقائي',
 'exif-whitebalance-1' => 'توازن الأبيض يدوي',
 
 'exif-scenecapturetype-0' => 'قياسي',
-'exif-scenecapturetype-1' => 'Ø£رضية',
-'exif-scenecapturetype-2' => 'بÙ\88رترÙ\8aÙ\87',
+'exif-scenecapturetype-1' => 'عرضية',
+'exif-scenecapturetype-2' => 'Ø·Ù\88Ù\84Ù\8aØ©',
 'exif-scenecapturetype-3' => 'مشهد ليلي',
 
 'exif-gaincontrol-0' => 'لا شيء',
@@ -3692,8 +3724,8 @@ $1',
 'exif-contrast-2' => 'قاسي',
 
 'exif-saturation-0' => 'عادي',
-'exif-saturation-1' => 'تشبع Ù\82Ù\84Ù\8aÙ\84',
-'exif-saturation-2' => 'تشبع Ø¹Ø§Ù\84Ù\8a',
+'exif-saturation-1' => 'إشباع Ù\85Ù\86Ø®Ù\81ض',
+'exif-saturation-2' => 'إشباع Ù\85رتÙ\81ع',
 
 'exif-sharpness-0' => 'عادي',
 'exif-sharpness-1' => 'ناعم',
@@ -3701,8 +3733,8 @@ $1',
 
 'exif-subjectdistancerange-0' => 'غير معروف',
 'exif-subjectdistancerange-1' => 'ماكرو',
-'exif-subjectdistancerange-2' => 'رؤÙ\8aØ© Ù\82رÙ\8aبة',
-'exif-subjectdistancerange-3' => 'رؤÙ\8aØ© Ø¨Ø¹Ù\8aدة',
+'exif-subjectdistancerange-2' => 'صÙ\88رة Ù\85Ù\86 Ù\82رÙ\8aب',
+'exif-subjectdistancerange-3' => 'صÙ\88رة Ù\85Ù\86 Ø¨Ø¹Ù\8aد',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
 'exif-gpslatitude-n' => 'دائرة العرض الشمالية',
@@ -3783,7 +3815,7 @@ $1',
 'exif-urgency-normal' => 'عادي ($1)',
 'exif-urgency-low' => 'منخفض ( $1 )',
 'exif-urgency-high' => 'عالي ( $1 )',
-'exif-urgency-other' => 'الأولوية المعرفة من قبل المستخدم ($1)',
+'exif-urgency-other' => 'الأولوية محددة من قبل المستخدم ($1)',
 
 # External editor support
 'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
@@ -3798,18 +3830,18 @@ $1',
 # E-mail address confirmation
 'confirmemail' => 'تأكيد عنوان البريد الإلكتروني',
 'confirmemail_noemail' => 'ليس لديك عنوان بريد إلكتروني صحيح مسجل في [[Special:Preferences|تفضيلاتك]].',
-'confirmemail_text' => '{{SITENAME}} Ù\8aتطÙ\84ب تأكيد عنوانك الإلكتروني قبل استخدام خصائص البريد الإلكتروني.
-اضغط على زر التفعيل بالأسفل ليتم إرسال رسالة تأكيد لعنوانك.
+'confirmemail_text' => '{{SITENAME}} Ù\8aجب تأكيد عنوانك الإلكتروني قبل استخدام خصائص البريد الإلكتروني.
+اضغط على زر التفعيل بالأسفل ليتم إرسال رسالة تأكيد إلى عنوانك.
 ستتضمن الرسالة رمز تفعيل؛
 اضغط على الوصلة التي تحتوي الرمز لتأكيد أن عنوانك الإلكتروني صحيح.',
-'confirmemail_pending' => 'تÙ\85 Ø¥Ø±Ø³Ø§Ù\84 Ù\83Ù\88د Ø§Ù\84تأÙ\83Ù\8aد Ø¨Ø§Ù\84Ù\81عÙ\84 Ù\85Ù\86 Ù\82بÙ\84 Ø¥Ù\84Ù\89 Ø¨Ø±Ù\8aدÙ\83 Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a؛
-إذا كان حسابك قد تم عمله حالا، ربما يجب أن تنتظر بضع دقائق قبل طلبك لكود آخر.',
+'confirmemail_pending' => 'تÙ\85 Ø¥Ø±Ø³Ø§Ù\84 Ù\83Ù\88د Ø§Ù\84تأÙ\83Ù\8aد Ø¥Ù\84Ù\89 Ø¨Ø±Ù\8aدÙ\83 Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a Ù\85ؤخراÙ\8b؛
+إذا كنت قد أنشأت حسابك للتو، من الأفضل أن تنتظر بضع دقائق قبل أن تطلب كوداً آخر.',
 'confirmemail_send' => 'أرسل كود تأكيد',
 'confirmemail_sent' => 'تم إرسال رسالة التأكيد، شكرا لك.',
-'confirmemail_oncreate' => 'تم إرسال كود تأكيد لعنوان بريدك الإلكتروني.
-لا يشترط أن تستخدم الكود للدخول للموسوعة باسمك، ولكن يجب أن تقوم بإدخاله قبل استخدامك أيا من خواص البريد الإلكتروني المستخدمة هنا في الويكي.',
+'confirmemail_oncreate' => 'تم إرسال كود تأكيد إلى عنوان بريدك الإلكتروني.
+الكود غير مطلوب للدخول إلى الموسوعة باسمك، ولكن يجب إدخاله قبل استخدامك أياً من خواص البريد الإلكتروني المستخدمة هنا في الويكي.',
 'confirmemail_sendfailed' => 'لم يتمكن {{SITENAME}} من إرسال رسالة التأكيد إليك.
\85Ù\86 Ù\81ضÙ\84Ù\83 Ø§Ù\84تÙ\85س Ø¹Ù\86Ù\88اÙ\86 Ø¨Ø±Ù\8aدÙ\83 Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a Ø¨Ø§Ø­Ø«Ø§ عن حروف غير صحيحة.
\85Ù\86 Ù\81ضÙ\84Ù\83 ØªØ£Ù\83د Ù\85Ù\86 Ø¹Ù\86Ù\88اÙ\86 Ø¨Ø±Ù\8aدÙ\83 Ø§Ù\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a Ø¨Ø­Ø«Ø§Ù\8b عن حروف غير صحيحة.
 
 أرجع خادم البريد: $1',
 'confirmemail_invalid' => 'كود تأكيد غير صحيح.
@@ -4059,6 +4091,8 @@ $5
 'version-software' => 'البرنامج المثبت',
 'version-software-product' => 'المنتج',
 'version-software-version' => 'النسخة',
+'version-entrypoints' => 'نقطة دخول روابط المواقع',
+'version-entrypoints-header-entrypoint' => 'تقطة دخول',
 'version-entrypoints-header-url' => 'المسار',
 
 # Special:FilePath
@@ -4186,6 +4220,8 @@ $5
 'logentry-move-move-noredirect' => 'نقل $1 صفحة $3 إلى $4 دون ترك تحويلة',
 'logentry-move-move_redir' => 'نقل $1 صفحة $3 إلى التحويلة $4',
 'logentry-move-move_redir-noredirect' => 'نقل $1 صفحة $3 إلى التحويلة $4 دون ترك تحويلة',
+'logentry-patrol-patrol' => '$1 مراجعة معلمة $4 للصفحة $3 تم معاينتها',
+'logentry-patrol-patrol-auto' => '$1 مراجعة معلمة تلقائيا $4 للصفحة $3 تم مراجعتها',
 'logentry-newusers-newusers' => 'أنشأ $1 حساب مستخدم',
 'logentry-newusers-create' => 'أنشأ $1 حساب مستخدم',
 'logentry-newusers-create2' => 'أنشأ $1 حساب المستخدم $3',
@@ -4193,6 +4229,8 @@ $5
 'newuserlog-byemail' => 'كلمة السر تم إرسالها بواسطة البريد الإلكتروني',
 
 # Feedback
+'feedback-bugornote' => 'إن كنت مستعدا لشرح  مشكلة تقنية بالتفصيل، رجاءا [$1 قدم تقريرا بالخلل].
+بخلاف ذلك، يمكنك أستخدام الطريقة الأسهل أسفله، سيتم إضافة تعليقك للصفحة "[$3 $2]"، بالإضافة إلى اسم المستخدم و نوع المتصفح الذي تستخدمه حاليا.',
 'feedback-subject' => 'الموضوع:',
 'feedback-message' => 'الرسالة:',
 'feedback-cancel' => 'ألغِ',
index 438566b..650f199 100644 (file)
@@ -43,8 +43,10 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
+       'Activeusers'               => array( 'ܡܦܠܚܢ̈ܐ_ܙܪ̄ܝܙܐ' ),
        'Allmessages'               => array( 'ܟܠ_ܐܓܪ̈ܬܐ' ),
        'Allpages'                  => array( 'ܟܠ_ܦܐܬܬ̈ܐ' ),
+       'Badtitle'                  => array( 'ܟܘܢܝܐ_ܠܐ_ܛܒܐ' ),
        'Blankpage'                 => array( 'ܦܐܬܐ_ܣܦܝܩܬܐ' ),
        'Categories'                => array( 'ܣܕܪ̈ܐ' ),
        'Contributions'             => array( 'ܫܘܬܦܘܝܬ̈ܐ' ),
@@ -58,10 +60,11 @@ $specialPageAliases = array(
        'Mycontributions'           => array( 'ܫܘܬܦܘܝܬ̈ܝ' ),
        'Mypage'                    => array( 'ܦܐܬܐ_ܕܝܠܝ' ),
        'Mytalk'                    => array( 'ܡܡܠܠܐ_ܕܝܠܝ' ),
+       'Myuploads'                 => array( 'ܐܣܩܬ̈ܐ_ܕܝܠܝ' ),
        'Newimages'                 => array( 'ܠܦܦ̈ܐ_ܚܕ̈ܬܐ', 'ܨܘܪ̈ܬܐ_ܚܕ̈ܬܬܐ' ),
        'Newpages'                  => array( 'ܦܐܬܬ̈ܐ_ܚܕ̈ܬܬܐ' ),
        'PermanentLink'             => array( 'ܐܣܘܪܐ_ܦܝܘܫܐ' ),
-       'Preferences'               => array( 'Ü\93Ü\92Ü\9dܬ̈ܐ' ),
+       'Preferences'               => array( 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ' ),
        'Protectedpages'            => array( 'ܦܐܬܬ̈ܐ_ܢܛܝܪ̈ܬܐ' ),
        'Protectedtitles'           => array( 'ܟܘܢܝ̈ܐ_ܢܛܝܪ̈ܐ' ),
        'Recentchanges'             => array( 'ܫܘܚܠܦ̈ܐ_ܚܕ̈ܬܐ' ),
@@ -69,6 +72,7 @@ $specialPageAliases = array(
        'Shortpages'                => array( 'ܦܐܬܬ̈ܐ_ܟܪ̈ܝܬܐ' ),
        'Specialpages'              => array( 'ܦܐܬܬ̈ܐ_ܕ̈ܝܠܢܝܬܐ' ),
        'Upload'                    => array( 'ܐܣܩ' ),
+       'Version'                   => array( 'ܨܚܚܐ' ),
        'Watchlist'                 => array( 'ܪ̈ܗܝܬܐ' ),
        'Whatlinkshere'             => array( 'ܡܐ_ܐܣܪ_ܠܗܪܟܐ' ),
 );
@@ -204,7 +208,7 @@ $messages = array(
 'qbbrowse' => 'ܡܦܐܬ',
 'qbedit' => 'ܫܚܠܦ',
 'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
-'qbmyoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88ܝ',
+'qbmyoptions' => 'ܦÜ\90ܬܬÌ\88Ü\90 Ü\95Ü\9dÜ ܝ',
 'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
@@ -280,9 +284,9 @@ $messages = array(
 'jumpto' => 'ܫܘܪ ܠ:',
 'jumptonavigation' => 'ܐܠܦܪܘܬܐ',
 'jumptosearch' => 'ܒܨܝܐ',
-'view-pool-error' => 'ܬÜ\98Ü\9dÜ\9aܐ، ܬܫܡܫܬ̈ܐ ܐܢܘܢ ܠܐ̈ܝܐ ܗܫܐܝܬ
-Ü£Ü\93Ü\9d Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¢Ü£Ü\9dÜ¢ Ü Ü\9aÜ\99Ü\9dÜ\90 Ü\95Ü\97Ü¢Ü\90 Ü\95ܦܐ
-ܦÜ\9dÜ£Ü\90 Ü¡Ü¢Ü\9f Ü£Ü\9fÜ\9d Ü©Ü Ü\9dÜ  Ü¡Ü¢ Ü©Ü\95Ü¡ Ü\95ܬܢܣÜ\90 Ü Ü¡Ü\9bÜ\9dÜ\90 Ü Ü\97Ü¢Ü\90 Ü\95ܦܐ ܙܒܢܬܐ ܐܚܪܬܐ.
+'view-pool-error' => 'Ü«Ü\98Ü\92Ü©Ü¢ܐ، ܬܫܡܫܬ̈ܐ ܐܢܘܢ ܠܐ̈ܝܐ ܗܫܐܝܬ
+Ü£Ü\93Ü\9d Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¢Ü£Ü\9dÜ¢ Ü Ü\9aÜ\99Ü\9dÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95ܐ
+ܦÜ\9dÜ£Ü\90 Ü¡Ü¢Ü\9f Ü£Ü\9fÜ\9d Ü©Ü Ü\9dÜ  Ü¡Ü¢ Ü©Ü\95Ü¡ Ü\95ܬܢܣÜ\90 Ü Ü¡Ü\9bÜ\9dÜ\90 Ü Ü¦Ü\90ܬÜ\90 Ü\97Ü\95ܐ ܙܒܢܬܐ ܐܚܪܬܐ.
 
 $1',
 'pool-timeout' => 'ܫܠܡ ܥܕܢܐ ܣܒܪܬܐ ܠܚܠܩܐ',
@@ -330,6 +334,7 @@ $1',
 'restorelink' => '{{PLURAL:$1|ܚܕ ܫܘܚܠܦܐ ܫܝܦܐ|$1 ܫܘܚܠܦ̈ܐ ܫܝܦ̈ܐ}}',
 'site-atom-feed' => '$1 ܛܥܝܡܘܬܐ ܕܐܛܘܡ',
 'page-atom-feed' => '"$1" ܛܥܝܡܘܬܐ ܕܐܛܘܡ',
+'feed-atom' => 'ܐܛܘܡ',
 'red-link-title' => '$1 (ܦܐܬܐ ܗܕܐ ܠܝܬ)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
@@ -352,7 +357,7 @@ $1',
 'error' => 'ܦܘܕܐ',
 'databaseerror' => 'ܦܘܕܐ ܒܐܣ ܝܕ̈ܥܬܐ',
 'missingarticle-rev' => '(ܬܢܝܬܐ#: $1)',
-'missingarticle-diff' => '(ܦܪÜ\9dÜ«Ü\98ܬܐ: $1, $2)',
+'missingarticle-diff' => '(ܦÜ\98ܪܫܐ: $1, $2)',
 'internalerror' => 'ܦܘܕܐ ܓܘܝܐ',
 'internalerror_info' => 'ܦܘܕܐ ܓܘܝܐ: $1',
 'badtitle' => 'ܟܘܢܝܐ ܠܐ ܛܒܐ',
@@ -363,8 +368,8 @@ $1',
 'actionthrottled' => 'ܠܐ ܡܬܡܨܝܢܬܐ ܐܝܬܝܗܝ ܠܡܥܒܕ ܝܬܝܪ ܡܢ ܗܢܐ ܥܒܕܐ',
 'viewsourcetext' => 'ܡܨܐ ܐܢܬ ܕܢܚܙܐ ܘܢܣܚܐ ܠܡܒܘ̈ܥܐ ܕܗܕܐ ܦܐܬܐ:',
 'protectedinterface' => 'ܗܕܐ ܦܐܬܐ ܡܘܬܪܐ ܟܬܝܒܬܐ ܕܦܐܬܐ ܠܚܘܪܙܐ, ܘܐܝܬܝܗܝ ܢܛܪܬܐ ܠܡܘܢܥ ܚܘܒܠܐ.',
-'editinginterface' => "'''Ü\99Ü\98Ü\97ܪÜ\90:''' Ü\90ܢܬ Ü«Ü\9aܠܦܬ Ü\95ܦÜ\90 Ü\95ܡܬܦܠÜ\9a ܒܚܙܝܐ ܟܬܝܒܝܐ ܕܚܘܪܙܐ.
\9fÜ  Ü«Ü\98Ü\9aܠܦÜ\90 Ü\92Ü\97Ü¢Ü\90 Ü\95ܦÜ\90 Ü¢Ü\97Ü\98Ü\90 Ü Ü\97 Ü¡Ü¥Ü\92Ü\95Ü¢Ü\98ܬÜ\90 Ü¥Ü  Ü\90Ü£Ü\9fÜ¡Ü\90 Ü\95Ü\95ܦܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ.
+'editinginterface' => "'''Ü\99Ü\98Ü\97ܪÜ\90:''' Ü\90ܢܬ Ü«Ü\9aܠܦܬ Ü¦Ü\90ܬÜ\90 Ü\95ܡܬܦܠÜ\9aܬ ܒܚܙܝܐ ܟܬܝܒܝܐ ܕܚܘܪܙܐ.
\9fÜ  Ü«Ü\98Ü\9aܠܦÜ\90 Ü\92ܦÜ\90ܬÜ\90 Ü\97Ü\95Ü\90 Ü¢Ü\97Ü\98Ü\90 Ü Ü\97 Ü¡Ü¥Ü\92Ü\95Ü¢Ü\98ܬÜ\90 Ü¥Ü  Ü\90Ü£Ü\9fÜ¡Ü\90 Ü\95ܦÜ\90ܬܐ ܕܡܦܠܚܢܐ ܕܡܦܠܚܢ̈ܐ ܐܚܪ̈ܢܐ.
 ܠܬܘܪ̈ܓܡܐ، ܐܦܠܚ ܬܪܡܝܬܐ ܕܬܘܪܓܡܐ ܕܡܝܕܝܐܘܝܩܝ [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
 'sqlhidden' => '(ܒܘܬܬܐ SQL ܛܫܝܐ)',
 'namespaceprotected' => "ܠܝܬ ܠܟ ܦܣܣܐ ܠܫܚܠܦܬܐ ܕܦܐܬܬ̈ܐ ܒܚܩܠܐ ܕ'''$1'''.",
@@ -372,19 +377,19 @@ $1',
 # Login and logout pages
 'logouttext' => "'''ܗܫܐ ܦܠܛܠܟ ܡܢ ܚܘܫܒܢܟ.'''
 
-ܡܨÜ\90 Ü\90ܢܬ Ü\95Ü\90ܬÜ\9aÜ«Ü\9a {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܐ ܐܢܬ ܕ[[Special:UserLogin|ܬܥܘܠ]] ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
+ܡܨÜ\90 Ü\90ܢܬ Ü\90ܦܠÜ\9aܬ {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܐ ܐܢܬ ܕ[[Special:UserLogin|ܬܥܘܠ]] ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
 
\9aÜ\95 Ü\9fÜ¡Ü\90 Ü¡Ü¢ Ü\95Ì\88ܦÜ\90 Ü¡Ü¬Ü\9aÜ\99Ü\9dÜ¢ Ü\90Ü\9dÜ\9f Ü\95Ü\97Ü\98 Ü\90ܢܬ Ü¥Ü Ü\9dÜ Ü\90 Ü¥Ü\95Ü¡Ü\90 Ü\95Ü\90ܣܦܩܬ Ü Ü\95Ì\88ܦÜ\90 Ü Ü\92Ü\9dÜ\9f̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
\9aÜ\95 Ü\9fÜ¡Ü\90 Ü¡Ü¢ Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¡Ü¬Ü\9aÜ\99Ü\9dÜ¢ Ü\90Ü\9dÜ\9f Ü\95Ü\97Ü\98 Ü\90ܢܬ Ü¥Ü Ü\9dÜ Ü\90 Ü¥Ü\95Ü¡Ü\90 Ü\95Ü\90ܣܦܩܬ Ü Ü¦Ü\90ܬܬÌ\88Ü\90 Ü Ü\92Ü\9dÜ\9fܬ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
 'welcomecreation' => '== ܒܫܝܢܐ, $1! ==
 ܐܬܒܪܝ ܚܘܫܒܢܟ.
-Ü Ü\90 Ü¢Ü«Ü\90 Ü\90ܢܬ Ü Ü«Ü\9aܠܦܬÜ\90 Ü\95[[Special:Preferences|Ü\93Ü\92Ü\9dܬ̈ܐ ܒ {{SITENAME}}]].',
+Ü Ü\90 Ü¢Ü«Ü\90 Ü\90ܢܬ Ü Ü«Ü\9aܠܦܬÜ\90 Ü\95[[Special:Preferences|ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ ܒ {{SITENAME}}]].',
 'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
 'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:',
 'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
 'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})',
 'login' => 'ܥܘܠ',
 'nav-login-createaccount' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
-'loginprompt' => 'Ü\90ܠܨÜ\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü  {{SITENAME}}.',
+'loginprompt' => 'Ü\90ܠܨÜ\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü\92 {{SITENAME}}.',
 'userlogin' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
 'userloginnocreate' => 'ܥܘܠ',
 'logout' => 'ܦܠܘܛ',
@@ -446,10 +451,10 @@ $1',
 
 # Edit pages
 'summary' => 'ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ:',
-'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90¦ÜªÜ«Ü\93Ü¢ܐ ܪܫܝܐ:',
+'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90¡Ü\98ܢܥܐ ܪܫܝܐ:',
 'minoredit' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'watchthis' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
-'savearticle' => 'Ü Ü\92Ü\98Ü\9f Ü\95ܦܐ',
+'savearticle' => 'Ü Ü\92Ü\98Ü\9f Ü¦Ü\90ܬܐ',
 'preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
 'showpreview' => 'ܚܘܝ ܚܝܪܐ ܩܕܡܝܐ',
 'showlivepreview' => 'ܚܝܪܐ ܩܕܡܝܐ ܚܝܐ',
@@ -464,8 +469,8 @@ $1',
 'loginreqlink' => 'ܥܘܠ',
 'accmailtitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܫܕܪܬ',
 'newarticle' => '(ܚܕܬܐ)',
-'newarticletext' => "Ü\90ܬܬ Ü\92ܬܪ Ü\90ܣܪÜ\90 Ü\95Ü\95ܦÜ\90 Ü\95Ü Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ ܥܕܡܫ.
-ܠܣÜ\98Ü\9dÜ¡Ü\90 Ü\95Ü\95ܦÜ\90 Ü\97Ü¢Ü\90, Ü«ÜªÜ\9d Ü Ü\9fܬÜ\92ܬÜ\90 Ü\92ܣܢÜ\95Ü\98Ü©Ü\90 Ü Ü¬Ü\9aܬ (Ü\9aÜ\99Ü\9d [[{{MediaWiki:Helppage}}|Ü\95ܦܐ ܕܥܘܕܪܢܐ]] ܠܐܚܪܢܐ ܝܕ̈ܥܬܐ).
+'newarticletext' => "Ü\90ܬܬ Ü\92ܬܪ Ü\90ܣܪÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\95Ü Ü\90 Ü\90ܬܬܣÜ\9dܡܬ ܥܕܡܫ.
+ܠܣÜ\98Ü\9dÜ¡Ü\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95Ü\90, Ü«ÜªÜ\9d Ü Ü\9fܬÜ\92ܬÜ\90 Ü\92ܣܢÜ\95Ü\98Ü©Ü\90 Ü Ü¬Ü\9aܬ (Ü\9aÜ\99Ü\9d [[{{MediaWiki:Helppage}}|ܦÜ\90ܬܐ ܕܥܘܕܪܢܐ]] ܠܐܚܪܢܐ ܝܕ̈ܥܬܐ).
 ܐܢ ܐܬܬ ܠܗܪܟܐ ܦܘܕܐܝܬ, ܕܘܫ ܠܦܪܡܝܬܐ ܕ '''ܠܒܣܬܪ back''' ܒܡܦܐܬܢܐ ܕܝܠܟ.",
 'updated' => '(ܐܬܚܕܬ)',
 'note' => "'''ܡܥܝܪܢܘܬܐ:'''",
@@ -478,8 +483,8 @@ $1',
 'editingcomment' => 'ܫܚܠܦܬܐ ܕ $1 (ܡܢܬܐ ܚܕܬܐ)',
 'yourtext' => 'ܟܬܒܬܐ ܕܝܠܟ',
 'storedversion' => 'ܬܢܝܬ̈ܐ ܐܣܝܢ̈ܐ',
-'editingold' => "'''Ü\99Ü\98Ü\97ܪÜ\90: Ü«Ü\9aܠܦ Ü\90ܢܬ Ü¬Ü¢Ü\9dܬÜ\90 Ü¥Ü¬Ü\9dܩܬÜ\90 Ü\95Ü\95ܦÜ\90 Ü\97Ü¢ܐ.'''
\90Ü¢ Ü Ü\92Ü\9f Ü\90ܢܬ Ü\95ܦÜ\90 Ü\97Ü¢ܐ, ܟܠ ܫܘ̈ܚܠܦܐ ܕܐܬܥܒܕܘ ܒܬܪ ܗܕܐ ܬܢܝܬܐ ܢܬܛܠܩܘܢ.",
+'editingold' => "'''Ü\99Ü\98Ü\97ܪÜ\90: Ü«Ü\9aܠܦ Ü\90ܢܬ Ü¬Ü¢Ü\9dܬÜ\90 Ü¥Ü¬Ü\9dܩܬÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü\97Ü\95ܐ.'''
\90Ü¢ Ü Ü\92Ü\9f Ü\90ܢܬ Ü¦Ü\90ܬÜ\90 Ü\97Ü\95ܐ, ܟܠ ܫܘ̈ܚܠܦܐ ܕܐܬܥܒܕܘ ܒܬܪ ܗܕܐ ܬܢܝܬܐ ܢܬܛܠܩܘܢ.",
 'yourdiff' => 'ܦܪ̈ܝܫܘܝܬܐ',
 'templatesused' => '{{PLURAL:$1|ܩܠܒܐ|ܩܠܒ̈ܐ}} ܒܦܐܬܐ ܗܕܐ:',
 'template-protected' => '(ܢܛܝܪܐ)',
@@ -512,9 +517,9 @@ $1',
 'last' => 'ܩܕܡ',
 'page_first' => 'ܩܕܡܝܐ',
 'page_last' => 'ܐܚܪܝܐ',
-'histlegend' => "Ü\93Ü\92Ü\9dÜ\90 Ü\95ܦܪÜ\9dÜ«Ü\98ܬÜ\90: Ü\93Ü\92Ü\9d Ü£Ü¢Ü\95Ì\88Ü\98Ü©Ü\90 Ü\95ܬܢÜ\9dܬÌ\88Ü\90 Ü Ü¦Ü\98Ü\9aÜ¡Ü\90 Ü\98Ü\95Ü\98Ü« '''Enter''' Ü\90Ü\98 '''ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ'''.<br />
-Ü©Ü Ü\9dÜ\95Ü\90: '''({{int:cur}})''' = Ü¦ÜªÜ\9dÜ«Ü\98ܬܐ ܥܡ ܬܢܝܬܐ ܗܫܝܬܐ,
-'''({{int:last}})''' = Ü¦ÜªÜ\9dÜ«Ü\98ܬܐ ܥܡ ܬܢܝܬܐ ܩܕܝܡܬܐ, '''{{int:minoreditletter}}''' = ܫܘܚܠܦܐ ܙܥܘܪܐ.",
+'histlegend' => "Ü\93Ü\92Ü\9dÜ\90 Ü\95ܦÜ\98ܪܫÜ\90: Ü\93Ü\92Ü\9d Ü£Ü¢Ü\95Ì\88Ü\98Ü©Ü\90 Ü\95ܬܢÜ\9dܬÌ\88Ü\90 Ü Ü¦Ü\98Ü\9aÜ¡Ü\90 Ü\98Ü\95Ü\98Ü« '''Enter''' Ü\90Ü\98 '''ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dÜ¢Ü\9d ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ'''.<br />
+Ü©Ü Ü\9dÜ\95Ü\90: '''({{int:cur}})''' = Ü¦Ü\98ܪܫܐ ܥܡ ܬܢܝܬܐ ܗܫܝܬܐ,
+'''({{int:last}})''' = Ü¦Ü\98ܪܫܐ ܥܡ ܬܢܝܬܐ ܩܕܝܡܬܐ, '''{{int:minoreditletter}}''' = ܫܘܚܠܦܐ ܙܥܘܪܐ.",
 'history-fieldset-title' => 'ܡܦܐܬ ܬܫܥܝܬܐ',
 'history-show-deleted' => 'ܫܝܦܬ̈ܐ ܒܠܚܘܕ',
 'histfirst' => 'ܩܕܝܡ ܟܠ',
@@ -566,17 +571,20 @@ $1',
 'revertmerge' => 'ܒܛܘܠ ܚܒܛܐ',
 
 # Diffs
-'history-title' => 'ܬܫܥܝܬܐ ܕܬܢܝܬܐ ܕ "$1"',
+'history-title' => '"$1": ܬܫܥܝܬܐ ܕܬܢܝܬܐ',
+'difference-title' => '«$1»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
+'difference-title-multipage' => '«$1» ܘ«$2»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
+'difference-multipage' => '(ܦܘܪܫܐ ܒܝܢܝ ܦܐܬܬ̈ܐ)',
 'lineno' => 'ܣܪܛܐ $1:',
-'compareselectedversions' => 'ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
+'compareselectedversions' => 'ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dÜ¢Ü\9d  ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
 'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
 'editundo' => 'ܠܐ ܬܥܒܕ',
 'diff-multi' => '({{PLURAL:$1|ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|$2 ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|One ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ ܝܬܝܪ ܡܢ $2 {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})',
 
 # Search results
-'searchresults' => 'ܦܠÜ\9bÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
-'searchresults-title' => 'ܦܠÜ\9bÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90 Ü¥Ü  "$1"',
+'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'''",
@@ -590,7 +598,7 @@ $1',
 'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ ܐܚܪܢܐ|ܦܠܛ̈ܐ ܐܚܪ̈ܢܐ}}',
 'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
 'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
+'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
 'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
 'searchhelp-url' => 'Help:ܚܒܝܫܬ̈ܐ',
@@ -616,7 +624,7 @@ $1',
 'searchall' => 'ܟܠ',
 'showingresults' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$1|'''1''' ܦܠܛܐ|'''$1''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
-'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝ ܠܗܢܐ ܒܨܝܐ.',
+'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.',
 'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:',
@@ -625,20 +633,20 @@ $1',
 'powersearch-togglelabel' => 'ܓܒܝ:',
 'powersearch-toggleall' => 'ܟܠ',
 'powersearch-togglenone' => 'ܠܐ ܡܕܡ',
-'search-external' => 'Ü\92Ü\98ܨÜ\9dÜ\90 Ü\92ܪÜ\9dÜ\90',
+'search-external' => 'ܒܨܝܐ ܒܪܝܐ',
 
 # Quickbar
 'qbsettings-none' => 'ܠܐ ܡܕܡ',
 
 # Preferences page
-'preferences' => 'Ü\93Ü\92Ü\9dܬ̈ܐ',
-'mypreferences' => 'Ü\93Ü\92Ü\9dܬ̈ܝ',
+'preferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ',
+'mypreferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܝ',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
 'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'prefs-skin' => 'ܓܠܕܐ',
 'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
-'datedefault' => 'Ü Ü\90 Ü\93Ü\92Ü\9dܬܐ',
+'datedefault' => 'Ü Ü\90 Ü¨Ü\92Ü\9dÜ¢Ü\9dÜ\98ܬܐ',
 'prefs-datetime' => 'ܣܝܩܘܡܐ ܘܙܒܢܐ',
 'prefs-personal' => 'ܦܘܓܪܦܐ ܕܡܦܠܚܢܐ',
 'prefs-rc' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
@@ -658,7 +666,7 @@ $1',
 'resultsperpage' => 'ܡܢܝܢܐ ܕܦܠܛ̈ܐ ܒܕܦܐ:',
 'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
 'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
-'savedprefs' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9dÜ ܟ ܐܬܠܒܟܘ.',
+'savedprefs' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88ܟ ܐܬܠܒܟܘ.',
 'timezonelegend' => 'ܙܘܢܐ ܙܒܢܝܐ:',
 'localtime' => 'ܥܕܢܐ ܕܘܟܬܝܐ:',
 'timezoneregion-africa' => 'ܐܦܪܝܩܐ',
@@ -670,7 +678,7 @@ $1',
 'timezoneregion-europe' => 'ܐܘܪܘܦܐ',
 'timezoneregion-indian' => 'ܐܘܩܝܢܘܣ ܗܢܕܘܝܐ',
 'timezoneregion-pacific' => 'ܐܘܩܝܢܘܣ ܫܩܛܝܐ',
-'prefs-searchoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
+'prefs-searchoptions' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'prefs-namespaces' => 'ܚܩܠܬ̈ܐ',
 'defaultns' => 'ܐܘ ܒܨܝ ܒܚܩܠܬ̈ܐ ܗܢܝܢ',
 'prefs-files' => 'ܠܦܦ̈ܐ',
@@ -699,9 +707,9 @@ $1',
 'prefs-advancedrendering' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
 'prefs-advancedsearchoptions' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
 'prefs-advancedwatchlist' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
-'prefs-displayrc' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
-'prefs-displaysearchoptions' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
-'prefs-displaywatchlist' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
+'prefs-displayrc' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
+'prefs-displaysearchoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
+'prefs-displaywatchlist' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
 'prefs-diffs' => 'ܦܪ̈ܝܫܘܝܬܐ',
 
 # User rights
@@ -744,7 +752,7 @@ $1',
 'right-createaccount' => 'ܒܪܝ ܚܘܫܒܢ̈ܐ ܕܡܦܠܚܢܐ ܚܕܬܐ',
 'right-minoredit' => 'ܫܘܕܥ ܥܠ ܫܘܚܠܦ̈ܐ ܐܝܟ ܙܥܘܪܐ',
 'right-move' => 'ܫܢܝ ܦܐܬܬ̈ܐ',
-'right-move-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¥Ü¡ Ü\95Ì\88ܦܐ ܦܪ̈ܥܝܐ ܕܝܠܗܘܢ',
+'right-move-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¥Ü¡ Ü¦Ü\90ܬܬÌ\88ܐ ܦܪ̈ܥܝܐ ܕܝܠܗܘܢ',
 'right-movefile' => 'ܫܢܝ ܠܦܦ̈ܐ',
 'right-upload' => 'ܐܣܩ ܠܦܦ̈ܐ',
 'right-delete' => 'ܫܘܦ ܦܐܬܬ̈ܐ',
@@ -774,7 +782,7 @@ $1',
 'action-delete' => 'ܫܝܦܬܐ ܕܦܐܬܐ ܗܕܐ',
 'action-deleterevision' => 'ܫܝܦܬܐ ܕܬܢܝܬܐ ܗܕܐ',
 'action-deletedhistory' => 'ܚܙܝܬܐ ܕܬܫܥܝܬܐ ܫܝܦܬܐ ܕܦܐܬܐ ܗܕܐ',
-'action-browsearchive' => 'Ü\92Ü\98ܨÜ\9dÜ\90 Ü¥Ü  Ü¦Ü\90ܬܬÌ\88Ü\90 Ü«Ü\9dܦܬÌ\88Ü\90',
+'action-browsearchive' => 'ܒܨܝܐ ܥܠ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
 'action-undelete' => 'ܠܐ ܫܘܦ ܦܐܬܐ ܗܕܐ',
 'action-suppressionlog' => 'ܚܙܝܬܐ ܕܗܢܐ ܣܓܠܐ ܦܪܨܘܦܝܐ',
 'action-block' => 'ܚܪܡܬܐ ܕܡܦܠܚܢܐ ܗܢܐ ܡܢ ܫܚܠܦܬܐ',
@@ -786,7 +794,7 @@ $1',
 'recentchanges' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
 'recentchanges-legend' => 'ܓܒܝܬ̈ܐ ܕܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
 'recentchanges-summary' => 'ܥܩܒ ܫܘܚܠܦ̈ܐ ܚܕܬ ܡܢ ܟܠ ܕܘܝܩܝ ܒܦܐܬܐ ܗܕܐ.',
-'recentchanges-label-newpage' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\97Ü¢Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ Ü\95ܦܐ ܚܕܬܐ',
+'recentchanges-label-newpage' => 'Ü«Ü\98Ü\9aܠܦÜ\90 Ü\97Ü¢Ü\90 Ü\90ܬܬܣÜ\9dÜ¡ Ü¦Ü\90ܬܐ ܚܕܬܐ',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
@@ -796,7 +804,7 @@ $1',
 'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
 'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
 'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3',
-'diff' => 'ܦܪÜ\9dÜ«Ü\98ܬܐ',
+'diff' => 'ܦÜ\98ܪܫܐ',
 'hist' => 'ܬܫܥܝܬܐ',
 'hide' => 'ܛܫܝ',
 'show' => 'ܚܘܝ',
@@ -857,6 +865,8 @@ $1',
 'http-read-error' => 'HTTP ܦܘܕܐ ܒܩܪܝܬܐ.',
 'http-curl-error' => 'ܦܘܕܐ ܒܫܟܚܐ ܕURL: $1',
 
+'license' => 'ܦܣܣܐ:',
+'license-header' => 'ܦܣܣܐ',
 'license-nopreview' => '(ܠܝܬ ܚܝܪܐ ܩܕܡܝܐ)',
 'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
 
@@ -928,8 +938,9 @@ $1',
 'randomredirect-nopages' => 'ܠܝܬ ܨܘܝܒ̈ܐ ܒܚܩܠܐ ܕ"$1".',
 
 # Statistics
+'statistics' => 'ܡܢܝܢܘܬ',
 'statistics-pages' => 'ܦܐܬܬ̈ܐ',
-'statistics-users-active' => 'ܡܦܠÜ\9aÜ¢Ì\88Ü\90 Ü\9fÜ«Ü\9dܪÌ\88ܐ',
+'statistics-users-active' => 'ܡܦܠÜ\9aÜ¢Ì\88Ü\90 Ü\99ܪÌ\84Ü\9dÜ\99ܐ',
 
 'disambiguations' => 'ܦܐܬܬ̈ܐ ܐܣܝܪ̈ܬܐ ܒܦܐܬܬ̈ܐ ܕܬܘܚܡܐ ܐܚܪܢܐ',
 'disambiguationspage' => 'Template:ܬܘܚܡܐ ܐܚܪܢܐ',
@@ -944,7 +955,7 @@ $1',
 'brokenredirects-delete' => 'ܫܘܦ',
 
 'withoutinterwiki' => 'ܦܐܬܬ̈ܐ ܕܠܐ ܐܣܘܪ̈ܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ',
-'withoutinterwiki-summary' => 'Ü\95Ì\88ܦܐ ܗܠܝܢ ܠܐ ܡܛܝܢ ܠܨ̈ܚܚܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ.',
+'withoutinterwiki-summary' => 'ܦÜ\90ܬܬÌ\88ܐ ܗܠܝܢ ܠܐ ܡܛܝܢ ܠܨ̈ܚܚܐ ܕܠܫܢ̈ܐ ܐܚܪ̈ܢܐ.',
 'withoutinterwiki-legend' => 'ܫܪܘܝܐ',
 'withoutinterwiki-submit' => 'ܚܘܝ',
 
@@ -1044,7 +1055,7 @@ $1',
 'listusers-blocked' => '(ܚܪܝܡܐ)',
 
 # Special:ActiveUsers
-'activeusers' => 'Ü¡Ü\9fܬÜ\92Ü\98ܬÜ\90 Ü\95Ü\97Ü\95Ì\88Ü¡Ü\90 Ü\9fÜ«Ü\9dܪÌ\88ܐ',
+'activeusers' => 'Ü¡Ü\9fܬÜ\92Ü\98ܬÜ\90 Ü\95Ü\97Ü\95Ì\88Ü¡Ü\90 Ü\99ܪÌ\84Ü\9dÜ\99ܐ',
 'activeusers-count' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ ܚܕܬܐ|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ}}',
 'activeusers-from' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܐ ܥܡ:',
 'activeusers-hidebots' => 'ܛܫܝ ܒܘܬ̈ܐ (bots)',
@@ -1068,7 +1079,7 @@ $1',
 'listgrouprights-removegroup-self-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ',
 
 # E-mail user
-'mailnologin' => 'Ü Ü\9dܬ Ü¦ÜªÜ«Ü\93Ü¢ܐ',
+'mailnologin' => 'Ü Ü\9dܬ Ü¡Ü\98ܢܥÜ\90 Ü Ü«Ü\98Ü\95ܪܐ',
 'emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
 'emailpage' => 'ܫܕܪ ܐܓܪܬܐ ܒܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ',
 'defemailsubject' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ  ܡܢ ܡܦܠܚܢܐ "$1"',
@@ -1099,7 +1110,7 @@ $1',
 'unwatch' => 'ܠܐ ܪܗܝ',
 'unwatchthispage' => 'ܟܠܝ ܪܗܝܐ',
 'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3',
-'watchlist-options' => 'Ü\93Ü\92Ü\9dܬ̈ܐ ܕܪ̈ܗܝܬܐ',
+'watchlist-options' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ ܕܪ̈ܗܝܬܐ',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'ܪܗܝܐ...',
@@ -1116,8 +1127,8 @@ $1',
 # Delete
 'deletepage' => 'ܫܘܦ ܦܐܬܐ',
 'confirm' => 'ܚܬܬ',
-'excontent' => "ܚܒܝܫܬ̈ܐ ܗܘܬ: '$1'",
-'excontentauthor' => "ܚܒܝܫܬ̈ܐ ܗܘܬ: '$1' (ܘܫܘܬܦܢܐ ܝܚܝܕܝܐ ܗܘܐ '[[Special:Contributions/$2|$2]]')",
+'excontent' => "ܚܒܝܫܬ̈ܐ ܗܘ̈ܝ: '$1'",
+'excontentauthor' => "ܚܒܝܫܬ̈ܐ ܗܘ̈ܝ: '$1' (ܘܫܘܬܦܢܐ ܝܚܝܕܝܐ ܗܘܐ '[[Special:Contributions/$2|$2]]')",
 'exblank' => 'ܦܐܬܐ ܣܦܝܩܬܐ ܗܘܐ',
 'delete-confirm' => 'ܫܘܦ "$1"',
 'delete-legend' => 'ܫܘܦ',
@@ -1133,6 +1144,7 @@ $1',
 # Rollback
 'rollbacklink' => 'ܐܦܢܝ',
 'editcomment' => "ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ ܗܘܐ: \"''\$1''\".",
+'revertpage' => 'ܐܗܦܟ ܫܘܚܠܦ̈ܐ ܒܝܕ [[Special:Contributions/$2|$2]] ([[User talk:$2|ܡܡܠܐ]]) ܠܬܢܝܬܐ ܐܚܪܝܬܐ ܒܝܕ [[User:$1|$1]]',
 
 # Edit tokens
 'sessionfailure-title' => 'ܡܘܬܒܐ ܠܐ ܢܨܚܬ',
@@ -1149,14 +1161,14 @@ $1',
 'protect-fallback' => 'ܒܥܝ "$1" ܦܣܣܐ',
 'protect-level-autoconfirmed' => 'ܚܪܘܡ ܡܦܠܚܢ̈ܐ ܚܕ̈ܬܐ ܘܠܐ ܥܠܝܠ̈ܐ',
 'protect-level-sysop' => 'ܡܕܒܪ̈ܢܐ ܒܠܚܘܕ',
-'protect-expiring' => 'ܦܪܩ ܒ $1 (UTC)',
-'protect-expiry-indefinite' => 'Ü\95Ü Ü\90 Ü£Ü\9f',
+'protect-expiring' => 'ܬܦܪÜ\98ܩ ܒ $1 (UTC)',
+'protect-expiry-indefinite' => 'ܠܥܠܡ',
 'protect-othertime' => 'ܥܕܢܐ ܐܚܪܬܐ:',
 'protect-othertime-op' => 'ܥܕܢܐ ܐܚܪܬܐ',
 'protect-otherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
 'protect-otherreason-op' => 'ܥܠܬܐ ܐܚܪܬܐ',
 'protect-edit-reasonlist' => 'ܫܚܠܦ ܥܠܬܐ ܕܢܛܪܐ',
-'protect-expiry-options' => '1 Ü«Ü¥Ü¬Ü\90:1 hour,1 Ü\9dÜ\98Ü¡Ü\90:1 day,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,Ü\95Ü Ü\90 Ü£Ü\9f:infinite',
+'protect-expiry-options' => '1 Ü«Ü¥Ü¬Ü\90:1 hour,1 Ü\9dÜ\98Ü¡Ü\90:1 day,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,ܠܥܠܡ:infinite',
 'restriction-type' => 'ܦܣܣܐ:',
 'minimum-size' => 'ܡܬܚܐ ܬܚܬܝܐ  ܕܥܓܪܐ',
 'maximum-size' => 'ܡܬܚܐ ܥܠܝܐ ܕܥܓܪܐ',
@@ -1175,7 +1187,7 @@ $1',
 
 # Undelete
 'undelete' => 'ܚܙܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
-'undeletepage' => 'Ü\9aÜ\99Ü\9d Ü\98Ü\90ܦܢÜ\9d Ü\95Ì\88ܦÜ\90 Ü«Ü\9dܦ̈ܐ',
+'undeletepage' => 'Ü\9aÜ\99Ü\9d Ü\98Ü\90ܦܢÜ\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü«Ü\9dܦܬ̈ܐ',
 'viewdeletedpage' => 'ܚܙܝ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
 'undelete-fieldset-title' => 'ܐܦܢܝ ܬܢܝܬ̈ܐ',
 'undelete-revision' => 'ܫܦ ܬܢܝܬܐ ܕ $1 (ܒܣܝܩܘܡ $4, ܒ $5) ܒܝܕ $3:',
@@ -1221,6 +1233,7 @@ $1',
 'sp-contributions-userrights' => 'ܕܘܒܪܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
 'sp-contributions-search' => 'ܒܨܝ ܫܘܬܦܘܝܬ̈ܐ',
 'sp-contributions-username' => 'ܐܝ ܦܝ (IP) ܐܘ ܫܡܐ ܕܡܦܠܚܢܐ:',
+'sp-contributions-toponly' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܕܗܢܘܢ ܬܢܝܬ̈ܐ ܐܚܪ̈ܝܬܐ ܒܠܚܘܕ',
 'sp-contributions-submit' => 'ܒܨܝ',
 
 # What links here
@@ -1251,7 +1264,7 @@ $1',
 'ipbreasonotherlist' => 'ܥܠܬܐ ܐܚܪܬܐ',
 'ipbsubmit' => 'ܚܪܘܡ ܡܦܠܚܢܐ ܗܢܐ',
 'ipbother' => 'ܥܕܢܐ ܐܚܪܬܐ',
-'ipboptions' => '2 Ü«Ü¥Ü¬Ì\88Ü\90:2 hours,1 Ü\9dÜ\98Ü¡Ü\90:1 day,3 Ü\9dÜ\98ܡܬÌ\88Ü\90:3 days,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,Ü\95Ü Ü\90 Ü£Ü\9f:infinite',
+'ipboptions' => '2 Ü«Ü¥Ü¬Ì\88Ü\90:2 hours,1 Ü\9dÜ\98Ü¡Ü\90:1 day,3 Ü\9dÜ\98ܡܬÌ\88Ü\90:3 days,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,ܠܥܠܡ:infinite',
 'ipbotheroption' => 'ܐܚܪܢܐ',
 'ipbotherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
 'ipbhidename' => 'ܛܫܝ ܫܡܐ ܕܡܦܠܚܢܐ ܡܢ ܫܘܚܠܦ̈ܐ ܘܡܟܬܒܘܬ̈ܐ',
@@ -1268,7 +1281,7 @@ $1',
 'ipblocklist-legend' => 'ܐܫܟܚ ܡܦܠܚܢܐ ܡܚܪܡܐ',
 'ipblocklist-submit' => 'ܒܨܝ',
 'ipblocklist-localblock' => 'ܚܪܡܐ ܕܘܟܬܢܝܐ',
-'infiniteblock' => 'Ü\95Ü Ü\90 Ü£Ü\9f',
+'infiniteblock' => 'ܠܥܠܡ',
 'anononlyblock' => 'ܠܐ ܝܕ̈ܝܥܐ ܒܠܚܘܕ',
 'ipblocklist-empty' => 'ܣܓܠܐ ܕܚܪܡܐ ܣܦܝܩܐ.',
 'blocklink' => 'ܚܪܘܡ',
@@ -1298,8 +1311,8 @@ Do you want to change the settings?',
 'movepage-moved' => '\'\'\'"$1" ܐܫܬܢܝܬ ܠ "$2"\'\'\'',
 'movepage-moved-redirect' => 'ܨܘܝܒܐ ܐܬܒܪܝ',
 'movedto' => 'ܐܬܫܢܝ ܠ',
-'move-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¦ÜªÌ\88Ü¥Ü\9dܐ (ܥܕܡܐ ܠ $1)',
-'move-talk-subpages' => 'Ü«Ü¢Ü\9d Ü\95Ì\88ܦÜ\90 Ü¦ÜªÌ\88Ü¥Ü\9dÜ\90 Ü\95Ü\95ܦܐ ܕܕܘܪܫܐ (ܥܕܡܐ ܠ $1)',
+'move-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¦ÜªÌ\88Ü¥Ü\9dܬÌ\88ܐ (ܥܕܡܐ ܠ $1)',
+'move-talk-subpages' => 'Ü«Ü¢Ü\9d Ü¦Ü\90ܬܬÌ\88Ü\90 Ü¦ÜªÌ\88Ü¥Ü\9dܬÌ\88Ü\90 Ü\95ܦÜ\90ܬܐ ܕܕܘܪܫܐ (ܥܕܡܐ ܠ $1)',
 'movelogpage' => 'ܣܓܠܐ ܕܫܘܢܝܐ',
 'movereason' => 'ܥܠܬܐ:',
 'revertmove' => 'ܐܦܢܝ',
@@ -1309,7 +1322,7 @@ Do you want to change the settings?',
 
 # Export
 'export' => 'ܐܦܩ ܦܐܬܬ̈ܐ',
-'exportall' => 'Ü\90ܦܩ Ü\9fÜ  Ü\95Ì\88ܦܐ',
+'exportall' => 'Ü\90ܦܩ Ü\9fÜ  Ü¦Ü\90ܬܬÌ\88ܐ',
 'export-submit' => 'ܐܦܩ',
 'export-addcattext' => 'ܐܘܣܦ ܦܐܬܬ̈ܐ ܡܢ ܣܕܪܐ:',
 'export-addcat' => 'ܐܘܣܦ',
@@ -1346,6 +1359,30 @@ Do you want to change the settings?',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}}',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}} ܡܢ $2',
 
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'ܦܐܬܐ ܕܡܦܠܚܢܐ ܕܝܠܟ',
+'tooltip-pt-mytalk' => 'ܦܐܬܐ ܕܡܡܠܘܟ',
+'tooltip-pt-preferences' => 'Your preferences',
+'tooltip-pt-login' => 'ܛܒ ܐܢܬ ܕܣܓܠ ܥܠܠܐ، ܐܠܐ ܗܢܐ ܠܘ ܐܠܨܝܐ',
+'tooltip-pt-logout' => 'ܦܠܛܐ',
+'tooltip-ca-talk' => 'ܡܡܠܠܐ ܥܠ ܚܒܝܫܬܐ ܕܦܐܬܐ',
+'tooltip-ca-addsection' => 'ܫܪܝ ܦܣܘܩܐ ܚܕܬܐ',
+'tooltip-ca-viewsource' => 'ܗܢܐ ܦܐܬܐ ܢܛܪܬܐ ܝܠܗ.
+ܐܝܬ ܒܟ ܬܚܙܝ ܡܒܘܥܐ ܕܝܠܗ',
+'tooltip-ca-protect' => 'ܢܛܘܪ ܗܕܐ ܦܐܬܐ',
+'tooltip-ca-delete' => 'ܫܘܦ ܦܐܬܐ ܗܕܐ',
+'tooltip-search' => 'ܒܨܝ ܒܓܘ {{SITENAME}}',
+'tooltip-p-logo' => 'ܦܐܬܐ ܪܝܫܝܬܐ',
+'tooltip-n-portal' => 'ܚܕܪ ܬܪܡܝܬܐ، ܡܢܐ ܡܫܟܚ ܐܢܬ ܠܥܒܕܐ، ܐܝܟܐ ܬܚܙܝ ܟܠ ܡܐ ܕܣܢܝܩ ܐܢܬ ܠܗ',
+'tooltip-n-recentchanges' => 'ܡܟܬܒܢܘܬܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܒܓܘ ܘܝܩܝ.',
+'tooltip-n-randompage' => 'ܦܬܘܟ ܡܓܠܬܐ ܚܘܝܚܬܐ',
+'tooltip-n-help' => 'ܕܘܟܐ ܠܥܘܕܪܢܐ',
+'tooltip-t-contributions' => 'ܡܟܬܒܢܘܬܐ ܒܫܘܬܦ̈ܐ ܕܗܢܐ ܡܦܠܚܢܐ',
+'tooltip-t-emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
+'tooltip-t-specialpages' => 'ܡܟܬܒܢܘܬܐ ܒܟܠ ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
+'tooltip-ca-nstab-user' => 'ܚܘܝ ܦܐܬܐ ܕܡܦܠܚܢܐ',
+'tooltip-save' => 'ܠܒܘܟ ܫܘܚܠܦܟ',
+
 # Attribution
 'anonymous' => '{{PLURAL:$1|ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ}} ܕ {{SITENAME}}',
 'siteuser' => '{{SITENAME}} ܡܦܠܚܢܐ $1',
@@ -1393,7 +1430,7 @@ $1',
 'exif-filesource' => 'ܡܒܘܥܐ ܕܠܦܦܐ',
 'exif-gpsspeedref' => 'ܚܕܝܘܬܐ ܕܩܠܘܠܘܬܐ',
 'exif-gpstrack' => 'ܨܘܒܐ ܕܫܘܢܝܐ',
-'exif-gpsimgdirectionref' => 'Ü\93Ü\92Ü\9dܬÜ\90 Ü\95ܨÜ\98Ü\92Ü\90 Ü\95Ü«Ü\98Ü¢Ü\9dܐ',
+'exif-gpsimgdirectionref' => 'Ü¡Ü\92Ü\98Ü¥Ü\90 Ü\95ܨÜ\98Ü\92Ü\90 Ü\95ܨÜ\98ܪܬܐ',
 'exif-gpsimgdirection' => 'ܨܘܒܐ ܕܨܘܪܬܐ',
 'exif-languagecode' => 'ܠܫܢܐ',
 
@@ -1475,7 +1512,7 @@ $1',
 'table_pager_prev' => 'ܦܐܬܐ ܩܕܝܡܬܐ',
 'table_pager_first' => 'ܦܐܬܐ ܩܕܡܝܬܐ',
 'table_pager_last' => 'ܦܐܬܐ ܐܚܪܝܬܐ',
-'table_pager_limit_label' => 'ܡܕܡ ܠܟܠ ܕܦܐ:',
+'table_pager_limit_label' => 'ܡܕ̈ܡܐ ܠܟܠ ܦܐܬܐ:',
 'table_pager_limit_submit' => 'ܙܠ',
 'table_pager_empty' => 'ܠܝܬ ܦܠܛ̈ܐ',
 
@@ -1494,6 +1531,7 @@ $1',
 # Watchlist editing tools
 'watchlisttools-view' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
 'watchlisttools-edit' => 'ܚܙܝ ܘܫܚܠܦ ܪ̈ܗܝܬܐ',
+'watchlisttools-raw' => 'ܫܚܠܦ ܪ̈ܗܝܬܐ ܦܛܝܪ̈ܬܐ',
 
 # Special:Version
 'version' => 'ܨܚܚܐ',
@@ -1534,8 +1572,8 @@ $1',
 'tags-hitcount' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ|ܫܘܚܠܦ̈ܐ}}',
 
 # Special:ComparePages
-'compare-page1' => 'Ü\95ܦܐ 1',
-'compare-page2' => 'Ü\95ܦܐ 2',
+'compare-page1' => 'ܦÜ\90ܬܐ 1',
+'compare-page2' => 'ܦÜ\90ܬܐ 2',
 'compare-rev1' => 'ܬܢܝܬܐ 1',
 'compare-rev2' => 'ܬܢܝܬܐ 2',
 'compare-submit' => 'ܦܚܘܡ',
@@ -1546,13 +1584,15 @@ $1',
 'htmlform-selectorother-other' => 'ܐܚܪܢܐ',
 
 # New logging system
-'logentry-move-move' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4',
-'logentry-move-move-noredirect' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4 ܕܠܐ ܫܒܩܐ ܕܕܦܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܗܘܐ ܕܦܐ ܕܨܘܝܒܐ',
-'logentry-move-move_redir-noredirect' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܗܘܐ ܕܦܐ ܕܨܘܝܒܐ ܘܕܠܐ ܫܒܩܐ ܕܕܦܐ ܕܨܘܝܒܐ',
+'logentry-delete-delete' => '$1 ܫܦ ܦܐܬܐ ܕ $3',
+'logentry-move-move' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4',
+'logentry-move-move-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ',
+'logentry-move-move_redir-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ ܘܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
 'logentry-newusers-newusers' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create2' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3',
+'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
 'newuserlog-byemail' => 'ܡܠܬܐ ܕܥܠܠܐ ܐܫܬܕܪܬ ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 
 # Feedback
index 8e90cd9..dd00e1c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Araucanian (Mapudungun)
+/** Araucanian (mapudungun)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 4327dc6..730ae0d 100644 (file)
@@ -1239,7 +1239,7 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'nchanges' => '{{PLURAL:$1|ṫeġyira weḫda|$1 dyal ṫ-ṫeġyiraṫ}}',
 'recentchanges' => 'Ṫ-Ṫeĝdilaṫ l-leĥĥra',
 'recentchanges-legend' => 'Opsyon dyal ṫ-ṫeġyiraṫ l-leĥĥra',
-'recentchangestext' => 'Ṫebbeĝ ṫ-ṫeĝdilaṫ l-leĥĥrin dyal had l-wiki fe waḫed l-flu.',
+'recentchanges-summary' => 'Ṫebbeĝ ṫ-ṫeĝdilaṫ l-leĥĥrin dyal had l-wiki fe waḫed l-flu.',
 'recentchanges-feed-description' => 'Ṫebbeĝ ṫ-ṫeĝdilaṫ l-leĥĥrin dyal had l-wiki fe waḫed l-flu.',
 'recentchanges-label-newpage' => "anch' had tadil sfha jdida",
 'recentchanges-label-minor' => 'Hada ṫeĝdil sġir',
index 57b9e16..2a35406 100644 (file)
@@ -166,7 +166,7 @@ $magicWords = array(
        'revisiontimestamp'       => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'            => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
        'plural'                  => array( '0', 'جمع:', 'PLURAL:' ),
-       'fullurl'                 => array( '0', 'مسار_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
+       'fullurl'                 => array( '0', 'مسار_كامل:', 'FULLURL:' ),
        'fullurle'                => array( '0', 'عنوان_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
        'lcfirst'                 => array( '0', 'عنوان_كبير:', 'LCFIRST:' ),
        'ucfirst'                 => array( '0', 'عنوان_صغير:', 'UCFIRST:' ),
@@ -329,7 +329,7 @@ $messages = array(
 'tog-enotifminoredits' => 'ابعتلى ايميل للتعديلات الصغيره للصفحات',
 'tog-enotifrevealaddr' => 'بين الايميل بتاعى فى ايميلات الاعلام',
 'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
-'tog-oldsig' => 'برÙ\88Ù\81Ù\87 Ù\84Ù\84اÙ\85ضا Ø§Ù\84حاÙ\84Ù\8aÙ\87',
+'tog-oldsig' => 'اÙ\84اÙ\85ضا Ø¯Ù\84Ù\88Ù\82تÙ\89:',
 'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
 'tog-externaleditor' => 'استعمل محرر خارجى افتراضيا',
 'tog-externaldiff' => 'استعمل فرق خارجى افتراضيا',
@@ -458,7 +458,7 @@ $messages = array(
 'vector-action-move' => 'نقل',
 'vector-action-protect' => 'حمايه',
 'vector-action-undelete' => 'الغى المسح',
-'vector-action-unprotect' => 'اÙ\84غÙ\89 الحمايه',
+'vector-action-unprotect' => 'غÙ\8aر الحمايه',
 'vector-view-create' => 'اعمل',
 'vector-view-edit' => 'تعديل',
 'vector-view-history' => 'استعراض التاريخ',
@@ -492,8 +492,8 @@ $messages = array(
 'protect' => 'حمايه',
 'protect_change' => 'غيّر',
 'protectthispage' => 'احمى الصفحه دى',
-'unprotect' => 'اÙ\84غÙ\89 Ø§Ù\84Ø­Ù\85اÙ\8aØ©',
-'unprotectthispage' => 'Ø´Ù\8aÙ\84 حماية الصفحه دى',
+'unprotect' => 'غÙ\8aر Ø§Ù\84Ø­Ù\85اÙ\8aÙ\87',
+'unprotectthispage' => 'غÙ\8aر حماية الصفحه دى',
 'newpage' => 'صفحه جديده',
 'talkpage' => 'ناقش الصفحه دى',
 'talkpagelinktext' => 'مناقشه',
@@ -526,6 +526,9 @@ $messages = array(
 لو سمحت تستنا شويه قبل ما تحاول تستعرض الصفحه دى من تانى.
 
 $1',
+'pool-timeout' => 'انتهاء الانتظار للقفل',
+'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) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'عن {{SITENAME}}',
@@ -707,8 +710,8 @@ $2',
 'createaccountmail' => 'بـ الايميل',
 'createaccountreason' => 'السبب:',
 'badretype' => 'كلمتين السر اللى  كتبتهم مش  زى بعضهم',
-'userexists' => 'اسم اليوزر اللى دخلته بيستعمله يوزر غيرك.
¯Ø®Ù\84 Ø§Ø³Ù\85 تانى.',
+'userexists' => 'اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.
§Ù\83تت Ø§Ø³Ù\85 Ù\8aÙ\88زر تانى.',
 'loginerror' => 'غلط فى الدخول',
 'createaccounterror' => 'مش قادر يعمل الحساب: $1',
 'nocookiesnew' => 'اليوزر خلاص اتفتح له حساب، بس انت لسة ما سجلتش دخولك.
@@ -969,12 +972,12 @@ $2',
 'permissionserrorstext-withaction' => 'أنت ما عندكش الصلاحيات علشان $2، لل{{PLURAL:$1|سبب|أسباب}} ده:',
 'recreate-moveddeleted-warn' => "'''تحذير: انت بتعيد انشاء صفحه اتمسحت قبل كده.'''
 لازم تتأكد من ان الاستمرار فى تحرير الصفحه دى ملائم.
-سجلات الحذف و النقل بتوع الصفحه دى معروضه هنا:",
+سجلات المسح  و النقل بتوع الصفحه دى معروضه هنا:",
 'moveddeleted-notice' => 'الصفحة دى اتمسحت. سجل المسح و سجل النقل بتوع الصفحة معروضين تحت علشان ترجعلهم.',
 'log-fulllog' => 'استعراض السجل بالكامل',
 'edit-hook-aborted' => 'الخطاف ساب التعديل من غير مايدى تفسير.',
-'edit-gone-missing' => 'Ù\84Ù\85 Ù\8aÙ\85Ù\83Ù\86 ØªØ­Ø¯Ù\8aØ« Ø§Ù\84صÙ\81حة.
\8aبدÙ\88 Ø£Ù\86Ù\87 ØªÙ\85 Ø­Ø°Ù\81Ù\87ا.',
+'edit-gone-missing' => 'Ù\85Ø´ Ù\85Ù\85Ù\83Ù\86 ØªØ¹Ø¯Ù\8aÙ\84 Ø§Ù\84صÙ\81Ø­Ù\87.
\8aظÙ\87ر Ø§Ù\86Ù\87ا Ø¥ØªÙ\85سحت.',
 'edit-conflict' => 'تضارب تحريرى.',
 'edit-no-change' => 'تعديلك تم تجاهله، لأن ما حصلش أى تعديل للنص.',
 'edit-already-exists' => 'لم يمكن إنشاء صفحة جديدة.
@@ -1065,7 +1068,7 @@ $2',
 ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].
 كسيسوب ممكن [$1 تشوف الفرق ده] لو إنت عايز تكمل.",
 'rev-deleted-diff-view' => "واحده من نسخ الفرق ده '''اتمسحت'''.
-كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل المسح].",
 'rev-suppressed-diff-view' => "واحده من نسخ الفرق ده '''اتخبت'''.
 كسيسوب ممكن تشوف الفرق ده؛ ممكن تكون فيه تفاصيل فى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل التخبيه].",
 'rev-delundel' => 'عرض/تخبيه',
@@ -1171,11 +1174,13 @@ $1",
 
 # Diffs
 'history-title' => 'تاريخ تعديل "$1"',
+'difference-multipage' => '(الفرق بين الصفحتين)',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'showhideselectedversions' => 'عرض/تخبية المراجعات المختاره.',
 'editundo' => 'استرجاع',
 'diff-multi' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}}  مش معروضه)',
+'diff-multi-manyusers' => '({{PLURAL:$1|نسخه واحده متوسطه|$1 نسخ متوسطه}} by {{PLURAL:$2|يوزر واحد |$2 يوزرات}}  مش معروضه)',
 
 # Search results
 'searchresults' => 'نتايج التدوير',
@@ -1210,6 +1215,7 @@ $1",
 'searchprofile-everything-tooltip' => 'دور فى  كل المحتوى (شامل صفحات النقاش)',
 'searchprofile-advanced-tooltip' => 'دور فى النطاقات المخصصة',
 'search-result-size' => '$1 ({{PLURAL:$2|1 كلمه|$2 كلام}})',
+'search-result-category-size' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوين|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعى واحد|تصنيفين فرعيين|$2 تصنيفات فرعية|$2 تصنيف فرعى|$2 تصنيف فرعى}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفين|$3 ملفات|$3 ملف|$3 ملف}})',
 'search-result-score' => 'الارتباط: $1%',
 'search-redirect' => '(تحويله $1)',
 'search-section' => '(جزء $1)',
@@ -1364,6 +1370,10 @@ $1",
 'prefs-displaywatchlist' => 'اختيارات العرض',
 'prefs-diffs' => 'التغيير',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'عنوان الإيميل صح',
+'email-address-validity-invalid' => 'عنوان الإيميل غلط',
+
 # User rights
 'userrights' => 'إدارة الحقوق بتاعة اليوزر',
 'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
@@ -1447,6 +1457,7 @@ $1",
 'right-hideuser' => 'منع اسم يوزر، و خبيه عن الناس',
 'right-ipblock-exempt' => 'إتفادى عمليات منع الأيبي، المنع الأوتوماتيكى ومنع النطاق.',
 'right-proxyunbannable' => 'إتفادى عمليات المنع الأوتوماتيكية للبروكسيهات',
+'right-unblockself' => 'رفع المنع عن نفسهم',
 'right-protect' => 'تغيير مستويات الحماية وتعديل الصفحات المحمية',
 'right-editprotected' => 'تعديل الصفحات المحمية (من غير الحماية المتضمنة)',
 'right-editinterface' => 'تعديل الواجهة بتاعة اليوزر',
@@ -1515,7 +1526,7 @@ $1",
 'nchanges' => '{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
 'recentchanges' => 'اخر التعديلات',
 'recentchanges-legend' => 'اختيارات اخر التعديلات',
-'recentchangestext' => 'تابع آخر التغييرات فى الويكى على الصفحة دى.',
+'recentchanges-summary' => 'تابع آخر التغييرات فى الويكى على الصفحة دى.',
 'recentchanges-feed-description' => 'تابع اخر التعديلات للويكى ده عن طريق الفييد ده .',
 'recentchanges-label-newpage' => 'التعديل ده عمل صفحه جديده',
 'recentchanges-label-minor' => 'ده تعديل صغير',
@@ -1600,6 +1611,8 @@ $1",
 'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
 {{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
 'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
+'file-too-large' => 'الملف كان كبير جدا.',
+'filetype-banned' => 'نوع الملف ده ممنوع.',
 'large-file' => 'ينصح ان الملفات ماتكونش أكبر من $1؛ الملف ده حجمه $2.',
 'largefileserver' => 'حجم الملف ده أكبر من المسموح بيه على السيرڨر ده .',
 'emptyfile' => 'الظاهر ان الملف اللى انت حملته طلع فاضي.
@@ -2144,7 +2157,7 @@ $UNWATCHURL
 'delete-legend' => 'مسح',
 'historywarning' => "'''تحذير:''' الصفحه اللى ها  تمسحها ليها تاريخ فيه تقريبا $1 {{PLURAL:$1|مراجعة|مراجعة}}:",
 'confirmdeletetext' => 'انت على وشك انك تمسح صفحه أو صوره و كل تاريخها.
-من فضلك  اتأكد انك عايز المسح وبأنك فاهم نتايج  العمليه  دى. عمليات الحذف لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].',
+من فضلك  اتأكد انك عايز المسح وبأنك فاهم نتايج  العمليه  دى. عمليات المسح لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].',
 'actioncomplete' => 'العمليه خلصت',
 'actionfailed' => 'الفعل فشل',
 'deletedtext' => '"$1" اتمسحت.
index 626b76c..9caa0b4 100644 (file)
@@ -119,12 +119,12 @@ $messages = array(
 'tog-hidepatrolled' => 'সাম্প্ৰতিক সাল-সলনিত তহলদাৰী সম্পাদনা নেদেখুৱাব',
 'tog-newpageshidepatrolled' => 'নতুন পৃষ্ঠা তালিকাত তহলদাৰী পৃষ্ঠাসমূহ নেদেখুৱাব',
 'tog-extendwatchlist' => 'কেৱল সাম্প্ৰতিকেই নহয, লক্ষ্য-তালিকাৰ সকলো সাল-সলনি বহলাই দেখুৱাওক',
-'tog-usenewrc' => 'বৰà§\8dদà§\8dধিত à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¸à¦¾à¦²-সলনি à¦¬à§\8dযবহাৰ à¦\95ৰà¦\95 (à¦\9cাভাসà§\8dà¦\95à§\8dৰিপà§\8dà¦\9fৰ à¦¦à§°à¦\95াৰ)',
+'tog-usenewrc' => 'বৰà§\8dদà§\8dধিত à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¸à¦¾à¦²-সলনি à¦¬à§\8dযবহাৰ à¦\95ৰà¦\95 (à¦\9cাভাসà§\8dà¦\95à§\8dৰিপà§\8dà¦\9fৰ à¦ªà§\8dৰয়à§\8bà¦\9cন)',
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক (জাভাস্ক্ৰিপ্টৰ দৰকাৰ)',
 'tog-editondblclick' => 'একেলগে দুবাৰ টিপা মাৰিলে পৃষ্ঠা সম্পাদনা কৰক (জাভাস্ক্ৰিপ্টৰ দৰকাৰ)',
 'tog-editsection' => '[সম্পাদনা] সংযোগৰ দ্বাৰা অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
-'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত সোঁ-বুটাম টিপা মাৰি সম্পাদনা কৰাটো সক্ৰিয় কৰক (জাভাস্ক্ৰিপ্ট)',
+'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত সোঁ-বুটাম টিপা মাৰি সম্পাদনা কৰাটো সক্ৰিয় কৰক (জাভাস্ক্ৰিপ্টৰ প্ৰয়োজন)',
 'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
 'tog-watchcreations' => 'মই সৃষ্টি সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
@@ -156,7 +156,7 @@ $messages = array(
 'tog-ccmeonemails' => 'মই অন্য সদস্যলৈ পঠোৱা ই-মেইলৰ প্ৰতিলিপি এটা মোলৈও পঠাব',
 'tog-diffonly' => 'পার্থক্যৰ তলত পৃষ্ঠাৰ বিষয়বস্তু নেদেখুৱাব',
 'tog-showhiddencats' => 'নিহিত শ্ৰেণী সমূহ দেখুৱাওক',
-'tog-norollbackdiff' => 'ৰà§\8bলবà§\87à¦\95à§\8d à¦\95ৰা à¦ªà¦¾à¦\9aত পাৰ্থক্য নেদেখুৱাব',
+'tog-norollbackdiff' => 'পà§\82ৰà§\8dবৱত à¦\95ৰা à¦ªà¦¾à¦\9bত পাৰ্থক্য নেদেখুৱাব',
 
 'underline-always' => 'সদায়',
 'underline-never' => 'কেতিয়াও নহয়',
@@ -170,14 +170,14 @@ $messages = array(
 'editfont-serif' => 'চেৰিফ ফন্ট',
 
 # Dates
-'sunday' => 'দেওবাৰ',
+'sunday' => 'দà§\87à¦\93à¦\81বাৰ',
 'monday' => 'সোমবাৰ',
 'tuesday' => 'মঙ্গলবাৰ',
 'wednesday' => 'বুধবাৰ',
 'thursday' => 'বৃহস্পতিবাৰ',
 'friday' => 'শুক্ৰবাৰ',
 'saturday' => 'শণিবাৰ',
-'sun' => 'দেও',
+'sun' => 'দেও',
 'mon' => 'সোম',
 'tue' => 'মংগল',
 'wed' => 'বুধ',
@@ -208,8 +208,8 @@ $messages = array(
 'october-gen' => 'অক্টোবৰ',
 'november-gen' => 'নৱেম্বৰ',
 'december-gen' => 'ডিচেম্বৰ',
-'jan' => 'জানু:',
-'feb' => 'ফেব্ৰু:',
+'jan' => 'জানুৱাৰী:',
+'feb' => 'ফেব্ৰুৱাৰী:',
 'mar' => 'মাৰ্চ',
 'apr' => 'এপ্ৰিল',
 'may' => 'মে',
@@ -217,18 +217,18 @@ $messages = array(
 'jul' => 'জুলাই',
 'aug' => 'আগষ্ট',
 'sep' => 'ছেপ্টেম্বৰ:',
-'oct' => 'অক্টো:',
-'nov' => 'নৱে:',
-'dec' => 'ডিচে:',
+'oct' => 'অক্টোবৰ:',
+'nov' => 'নৱেম্বৰ:',
+'dec' => 'ডিচেম্বৰ:',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|শ্ৰেণী|শ্ৰেণী}}',
+'pagecategories' => '{{PLURAL:$1|শ্ৰেণী|শ্ৰেণীসমূহ}}',
 'category_header' => '"$1" শ্ৰেণীৰ পৃষ্ঠাসমূহ',
 'subcategories' => 'উপশ্ৰেণীসমূহ',
 'category-media-header' => '"$1" শ্ৰেণীৰ মিডিয়া',
 'category-empty' => "''এই শ্ৰেণীত বৰ্তমান কোনো পৃষ্ঠা বা মিডিয়া ফাইল নাই ।''",
 'hidden-categories' => '{{PLURAL:$1|নিহিত শ্ৰেণী|নিহিত শ্ৰেণীসমূহ}}',
-'hidden-category-category' => 'অদৃশ্য শ্ৰেণী সমূহ',
+'hidden-category-category' => 'অদৃশ্য শ্ৰেণীসমূহ',
 'category-subcat-count' => '{{PLURAL:$2|এই শ্ৰেণীত নিম্নলিখিত উপশ্ৰেণীসমূহ আছে। মুঠ $2টা উপশ্ৰেণীৰ ভিতৰত এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|এটা উপশ্ৰেণী|$1 টা উপশ্ৰেণী}} আছে।}}',
 'category-subcat-count-limited' => 'এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|টা উপশ্ৰেণী আছে|$1টা উপশ্ৰেণী আছে}}।',
 'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে । মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এখন পৃষ্ঠা আছে|$1 খন পৃষ্ঠা আছে}}।}}',
@@ -241,9 +241,9 @@ $messages = array(
 'broken-file-category' => 'অবৈধ ফাইল সংযোগযুক্ত পৃষ্ঠাবোৰ',
 
 'about' => 'বিষয়ে',
-'article' => 'বিষয়বসà§\8dতà§\81 পৃষ্ঠা',
+'article' => 'সমল পৃষ্ঠা',
 'newwindow' => "(নতুন ৱিণ্ড'ত খোল খায়)",
-'cancel' => 'ৰদ à¦\95ৰা à¦¹à¦\93ক',
+'cancel' => 'বাতিল à¦\95ৰক',
 'moredotdotdot' => 'অধিক...',
 'mypage' => 'মোৰ পৃষ্ঠা',
 'mytalk' => 'মোৰ কথা-বতৰা',
@@ -264,7 +264,7 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'বিষয় যোগ',
-'vector-action-delete' => 'মà¦\9aি à¦ªà§\87লাà¦\93ক',
+'vector-action-delete' => 'বিলà§\8bপ à¦\95ৰক',
 'vector-action-move' => 'স্থানান্তৰ কৰক',
 'vector-action-protect' => 'সুৰক্ষিত কৰক',
 'vector-action-undelete' => 'পুনৰুদ্ধাৰ কৰক',
@@ -275,13 +275,13 @@ $messages = array(
 'vector-view-history' => 'ইতিহাস চাওক',
 'vector-view-view' => 'পঢ়ক',
 'vector-view-viewsource' => 'উৎস চাওক',
-'actions' => 'à¦\95াৰà§\8dযà§\8dযসমà§\82হ',
+'actions' => 'কাৰ্যসমূহ',
 'namespaces' => 'নামস্থান',
 'variants' => 'বিকল্পসমূহ',
 
 'errorpagetitle' => 'ভুল',
-'returnto' => '$1 লৈ ঘূৰি যাওক ।',
-'tagline' => '{{SITENAME}} -ৰ পৰা',
+'returnto' => '$1লৈ ঘূৰি যাওক ।',
+'tagline' => '{{SITENAME}}ৰ পৰা',
 'help' => 'সহায়',
 'search' => 'সন্ধান',
 'searchbutton' => 'সন্ধান কৰক',
@@ -305,7 +305,7 @@ $messages = array(
 'protect' => 'সুৰক্ষিত কৰক',
 'protect_change' => 'সলাওক',
 'protectthispage' => 'বৰ্তমান পৃষ্ঠাৰ সংৰক্ষণবিধিৰ পৰিবৰ্তন',
-'unprotect' => 'সà¦\82ৰà¦\95à§\8dষণ সলনি কৰক',
+'unprotect' => 'সà§\81ৰà¦\95à§\8dষা সলনি কৰক',
 'unprotectthispage' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
 'newpage' => 'নতুন পৃষ্ঠা',
 'talkpage' => 'এই পৃষ্ঠা সম্পৰ্কে কথা-বতৰা',
@@ -316,20 +316,20 @@ $messages = array(
 'articlepage' => 'সমল পৃষ্ঠা চাওক',
 'talk' => 'আলোচনা',
 'views' => 'দৰ্শন',
-'toolbox' => 'সা-সৰঞ্জাম',
+'toolbox' => 'সা-সৰঞ্জাম',
 'userpage' => 'সদস্য পৃষ্ঠা চাওক',
-'projectpage' => 'প্ৰকল্প পৃষ্ঠা',
-'imagepage' => 'ফাà¦\87ল পৃষ্ঠা চাওক',
+'projectpage' => 'প্ৰকল্প পৃষ্ঠা চাওক',
+'imagepage' => 'নথি পৃষ্ঠা চাওক',
 'mediawikipage' => 'বাৰ্তা পৃষ্ঠা চাওক',
 'templatepage' => 'সাঁচ পৃষ্ঠা চাওক',
 'viewhelppage' => 'সহায় পৃষ্ঠা চাওক',
 'categorypage' => 'শ্ৰেণী পৃষ্ঠা চাওক',
-'viewtalkpage' => 'à¦\95থা-বতৰা চাওক',
-'otherlanguages' => 'আন ভাষাত',
-'redirectedfrom' => '($1 ৰ পৰা পুনঃনিৰ্দেশিত)',
+'viewtalkpage' => 'à¦\86লà§\8bà¦\9aনা চাওক',
+'otherlanguages' => 'à¦\86ন à¦­à¦¾à¦·à¦¾à¦¸à¦®à§\82হত',
+'redirectedfrom' => '($1ৰ পৰা পুনঃনিৰ্দেশিত)',
 'redirectpagesub' => 'পুনঃনিৰ্দেশিত পৃষ্ঠা',
 'lastmodifiedat' => 'এই পৃষ্ঠাখন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
-'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1}} বাৰ চোৱা হৈছে',
+'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
 'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
 'jumpto' => 'গম্যাৰ্থে',
 'jumptonavigation' => 'দিকদৰ্শন',
@@ -339,7 +339,7 @@ $messages = array(
 অনুগ্ৰহ কৰি অলপ পাছত এই পৃষ্ঠা চাবলৈ প্ৰয়াস কৰক ।
 
 $1',
-'pool-timeout' => 'লà¦\95ৰ à¦¬à¦¾à¦¬à§\87 à¦\85পà§\87à¦\95à§\8dষা à¦\95ৰি সময় উকলি গৈছে',
+'pool-timeout' => 'বনà§\8dধ à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\85পà§\87à¦\95à§\8dষা à¦\95ৰাৰ সময় উকলি গৈছে',
 'pool-queuefull' => 'পোল কিউ (pool queue) সমূল',
 'pool-errorunknown' => 'অপৰিচিত ত্ৰুটি',
 
@@ -350,7 +350,7 @@ $1',
 'copyrightpage' => '{{ns:project}}:স্বত্ব',
 'currentevents' => 'সাম্প্ৰতিক ঘটনাৱলী',
 'currentevents-url' => 'Project:শেহতীয়া ঘটনাৱলী',
-'disclaimers' => 'à¦\98à§\8bষণা',
+'disclaimers' => 'দায়লà§\81পà§\8dতি',
 'disclaimerpage' => 'Project:সাধাৰণ দায়লুপ্তি',
 'edithelp' => 'সম্পাদনাৰ বাবে সহায়',
 'edithelppage' => 'Help:সম্পাদনা',
@@ -370,12 +370,12 @@ $1',
 'versionrequired' => 'মিডিয়াৱিকিৰ $1 সংকলন থাকিব লাগিব ।',
 'versionrequiredtext' => 'এই পৃষ্ঠাটো ব্যৱহাৰ কৰিবলৈ মিডিয়াৱিকিৰ $1 সংস্কৰণ থাকিব লাগিব । [[Special:Version|সংস্কৰণ পৃষ্ঠা]] চাওক।',
 
-'ok' => 'à¦\85â\80\99à¦\95ে',
-'retrievedfrom' => '"$1" -ৰ পৰা সংকলিত',
+'ok' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
-'newmessageslink' => 'নতà§\81ন à¦¬à¦¾à§°à§\8dতা',
+'newmessageslink' => 'নতà§\81ন à¦¸à¦\82বাদ',
 'newmessagesdifflink' => 'শেহতীয়া সাল-সলনি',
-'youhavenewmessagesmulti' => '$1ত à¦\86পà§\8bনাৰ à¦\95াৰণà§\87 à¦¨à¦¤à§\81ন à¦¬à¦¾à§°à§\8dতা আছে',
+'youhavenewmessagesmulti' => '$1ত à¦\86পà§\8bনাৰ à¦\95াৰণà§\87 à¦¨à¦¤à§\81ন à¦¸à¦\82বাদ আছে',
 'editsection' => 'সম্পাদনা কৰক',
 'editold' => 'সম্পাদনা',
 'viewsourceold' => 'উৎস চাওক',
@@ -394,9 +394,9 @@ $1',
 'feed-invalid' => 'অবৈধ গ্ৰাহক ফিড প্ৰকাৰ',
 'feed-unavailable' => 'চিণ্ডিকেশ্যন ফিড মজুত নাই',
 'site-rss-feed' => '$1 আৰ-এচ-এচ ফীড',
-'site-atom-feed' => '$1 à¦\8fà¦\9fম à¦«à¦¿ড',
+'site-atom-feed' => '$1 à¦\8fà¦\9fম à¦«à§\80ড',
 'page-rss-feed' => '"$1" আৰ-এচ-এচ ফীড',
-'page-atom-feed' => '"$1" à¦\8fà¦\9fম à¦«à¦¿ড',
+'page-atom-feed' => '"$1" à¦\8fà¦\9fম à¦«à§\80ড',
 'red-link-title' => '$1 (পৃষ্ঠাটো নাই)',
 'sort-descending' => 'ক্ৰমহ্ৰস্বমান ভাৱে ক্ৰমবদ্ধ কৰক',
 'sort-ascending' => 'ক্ৰমবৰ্দ্ধমান ভাৱে ক্ৰমবদ্ধ কৰক',
@@ -407,26 +407,26 @@ $1',
 'nstab-media' => 'মিডিয়া পৃষ্ঠা',
 'nstab-special' => 'বিশেষ পৃষ্ঠা',
 'nstab-project' => 'প্ৰকল্প পৃষ্ঠা',
-'nstab-image' => 'à¦\9aিতà§\8dৰ',
-'nstab-mediawiki' => 'বাৰà§\8dতা',
+'nstab-image' => 'নথি',
+'nstab-mediawiki' => 'সà¦\82বাদ',
 'nstab-template' => 'সাঁচ',
 'nstab-help' => 'সাহায্য পৃষ্ঠা',
 'nstab-category' => 'শ্ৰেণী',
 
 # Main script and global functions
 'nosuchaction' => 'এনে কাৰ্য নাই',
-'nosuchactiontext' => "এই ইউআৰএল-এ নিৰ্ধাৰিত কৰা কাৰ্য্য অবৈধ।
+'nosuchactiontext' => "এই ইউআৰএলে নিৰ্ধাৰিত কৰা কাৰ্য অবৈধ।
 আপুনি বোধহয়  ইউআৰএল ভুলকৈ লিখিছে বা এটা ভুল লিঙ্ক অনুকৰণ কৰিছে ।
-হ'বও পাৰে যে {{SITENAME}}-ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি আছে ।",
-'nosuchspecialpage' => 'এনেকুৱা কোনো বিশেষ পৃষ্ঠা নাই',
+{{SITENAME}}ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি হ'বও পাৰে ।",
+'nosuchspecialpage' => 'এনে ধৰনৰ কোনো বিশেষ পৃষ্ঠা নাই',
 'nospecialpagetext' => '<strong>আপুনি অবৈধ বিশেষ পৃষ্ঠা এটা অনুৰোধ কৰিছে ।</strong>
 
- বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
+বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
 
 # General errors
 'error' => 'ভুল',
 'databaseerror' => 'তথ্যকোষৰ ভুল',
-'dberrortext' => 'Database query-ত ভুল আছে।
+'dberrortext' => 'Database query’ত ত্ৰুটি আছে।
 ছফ্টৱেৰত থকা কোনো বাগৰ বাবে এনে হব পাৰে।
 অন্তিমবাৰ চেষ্টা কৰা ডাটাবেচ কুৱেৰীটো আছিল এনেধৰণৰ:
 <blockquote><tt>$1</tt></blockquote>
@@ -448,30 +448,30 @@ $1',
 বিলোপ কৰা কোনো পৃষ্ঠাৰ সংযোগৰ বাবে সাধাৰণতে এনে ঘটে ।
 
 যদি এনে হোৱা নাই তেন্তে আপুনি ছফ্টৱেৰত কিবা সমস্যা পাইছে ।
-অনুগ্ৰহ কৰি এই সম্পৰ্কে ইউ.আৰ.এল. সহ কোনো [[Special:ListUsers/sysop|প্ৰশাসক]] ক জনাওক ।',
+অনুগ্ৰহ কৰি এই সম্পৰ্কে ইউ.আৰ.এল. সহ কোনো [[Special:ListUsers/sysop|প্ৰশাসক]]ক জনাওক ।',
 'missingarticle-rev' => '(সংস্কৰণ#: $1)',
 'missingarticle-diff' => '(তফাৎ: $1, $2)',
 'readonly_lag' => 'তথ্যকোষ স্বয়ংক্ৰিয়ভাৱে বন্ধ হৈছে যাতে দ্বিতীয় শ্ৰেণীৰ তথ্যকোষৰ চাৰ্ভাৰ প্ৰধান তথ্যকোষৰ চাৰ্ভাৰৰ অৱস্থালৈ আহিব পাৰে ।',
 'internalerror' => 'আভ্যন্তৰীণ ক্ৰুটি',
-'internalerror_info' => 'ভিতৰà§\81ৱা ত্ৰুটি: $1',
-'fileappenderrorread' => 'à¦\9cোৰা দিয়াৰ সময়ত "$1" পাঠ্য কৰা নহ\'ল ।',
+'internalerror_info' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ ত্ৰুটি: $1',
+'fileappenderrorread' => 'যোৰা দিয়াৰ সময়ত "$1" পাঠ্য কৰা নহ\'ল ।',
 'fileappenderror' => '"$2"ৰ লগত "$1"ৰ সংযোগ কৰা নহ\'ল ।',
-'filecopyerror' => '"$1" ফাইলটো "$2" লৈ প্ৰতিলিপি কৰিব পৰা নগ’ল।',
-'filerenameerror' => '"$1" ফাইলৰ নাম সলনি কৰি "$2" কৰিব পৰা নগল ।',
-'filedeleteerror' => '"$1" ফাইলতো বিলোপ কৰিব পৰা নগল।',
-'directorycreateerror' => '"$1" à¦¡à¦¾à¦\87ৰà§\87à¦\95à§\8dà¦\9fৰি সৃষ্টি কৰিব পৰা নগ’ল।',
-'filenotfound' => '"$1" নামৰ ফাইলটো বিচাৰি পোৱা নগল।',
+'filecopyerror' => '"$1" ফাইলটো "$2"লৈ প্ৰতিলিপি কৰিব পৰা নগ’ল।',
+'filerenameerror' => '"$1" ফাইলৰ নাম সলনি কৰি "$2" কৰিব পৰা নগল ।',
+'filedeleteerror' => '"$1" ফাইলতো বিলোপ কৰিব পৰা নগল।',
+'directorycreateerror' => '"$1" à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া সৃষ্টি কৰিব পৰা নগ’ল।',
+'filenotfound' => '"$1" নামৰ ফাইলটো বিচাৰি পোৱা নগল।',
 'fileexistserror' => '"$1" ফাইলটোত লিখিব নোৱাৰি: ফাইলটো আগৰ পৰাই আছে',
 'unexpected' => 'অনাকাংক্ষিত মূল্য: "$1"="$2".',
 'formerror' => 'ভুল: ফৰ্ম খন জমা দিব পৰা নগ’ল',
 'badarticleerror' => 'এই পৃষ্ঠাটোত এই কামটো কৰিব নোৱাৰি ।',
-'cannotdelete' => '"$1" à¦ªà§\83ষà§\8dঠা à¦¬à¦¾ à¦«à¦¾à¦\87ল à¦®à¦\9aা à¦¸à¦®à§\8dভব à¦¨à¦¹à¦¯à¦¼ ।
-সমà§\8dভৱ à¦\86নà§\87 à¦\86à¦\97à§\87à¦\87 à¦®à¦\9aি à¦¥à§\88ছে ।',
+'cannotdelete' => '"$1" à¦ªà§\83ষà§\8dঠা à¦¬à¦¾ à¦¨à¦¥à¦¿à¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦\85সমà§\8dভৱ ।
+সমà§\8dভৱ à¦\86নà§\87 à¦\86à¦\97à§\87à¦\87 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিছে ।',
 'cannotdelete-title' => '"$1" পৃষ্ঠা বিলোপ কৰিব নোৱাৰি',
 'badtitle' => 'অগ্ৰহণীয় শিৰোনামা',
 'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
-'perfcached' => "তলত দিয়া তথ্যখিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্ৰতিক নহ'ব পাৰে। এই তথ্যখিনিত সৰ্বোচ্চ {{PLURAL:$1|এটা ফলফল|$1টা ফলাফল}} উপলব্ধ।",
-'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই cacheত পাব।',
+'perfcached' => "তলত à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¤à¦¥à§\8dযà¦\96িনি à¦\86à¦\97তà§\87 à¦\9cমা à¦\95ৰি à¦¥à§\8bৱা (cached) à¦\86ৰà§\81 à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦¨à¦¹'ব à¦ªà¦¾à§°à§\87। à¦\8fà¦\87 à¦¤à¦¥à§\8dযà¦\96িনিত à¦¸à§°à§\8dবà§\8bà¦\9aà§\8dà¦\9a {{PLURAL:$1|à¦\8fà¦\9fা à¦«à¦²à¦¾à¦«à¦²|$1à¦\9fা à¦«à¦²à¦¾à¦«à¦²}} à¦\89পলবà§\8dধ।",
+'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই কেশ্বত পাব।',
 'querypage-no-updates' => 'এই পৃষ্ঠাটো নৱীকৰণ কৰা ৰোধ কৰা হৈছে। ইয়াৰ তথ্য এতিয়া সতেজ কৰিব নোৱাৰি।',
 'wrong_wfQuery_params' => 'wfQuery() ৰ কাৰণে ভুল মাপদণ্ড দিয়া হৈছে <br />
 কাৰ্য: $1<br />পৃষ্ঠা: $2',
@@ -489,13 +489,17 @@ $1',
 'cascadeprotected' => 'এই পৃষ্ঠাখন সম্পাদনাৰ পৰা সুৰক্ষিত কাৰণ এই {{PLURAL:$1|পৃষ্ঠা, যিখন|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
-'customcssprotected' => 'এই পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত চেটিংচ আছে ।',
-'customjsprotected' => 'à¦\8fà¦\87 à¦\9cাভালিপিৰ à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰাৰ à¦\85ধিà¦\95াৰ à¦\86পà§\8bনাৰ à¦¨à¦¾à¦\87, à¦\95াৰণ à¦\87য়াত à¦\86ন à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à§\8dযà¦\95à§\8dতিà¦\97ত à¦\9aà§\87à¦\9fিà¦\82à¦\9a আছে ।',
+'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
+'customjsprotected' => 'à¦\8fà¦\87 à¦\9cাভালিপিৰ à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰাৰ à¦\85ধিà¦\95াৰ à¦\86পà§\8bনাৰ à¦¨à¦¾à¦\87, à¦\95াৰণ à¦\87য়াত à¦\86ন à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à§\8dযà¦\95à§\8dতিà¦\97ত à¦ªà¦\9bনà§\8dদসমà§\82হত আছে ।',
 'ns-specialprotected' => 'বিশেষ পৃষ্ঠা সম্পাদিত কৰিব নোৱাৰি।',
-'titleprotected' => "[[User:$1|$1]] à¦¸à¦¦à¦¸à§\8dযà¦\9cনà§\87 à¦\8fà¦\87 à¦¶à¦¿à§°à§\8bণামাৰ লিখনী লিখা ৰোধ কৰিছে ।
+'titleprotected' => "[[User:$1|$1]] à¦¸à¦¦à¦¸à§\8dযà¦\9cনà§\87 à¦\8fà¦\87 à¦¶à¦¿à§°à§\8bনাণমাৰ লিখনী লিখা ৰোধ কৰিছে ।
 ইয়াৰ কাৰণ হৈছে ''$2'' ।",
 'filereadonlyerror' => '"$1" ফাইলটোক পৰিৱৰ্তন কৰিব পৰা নগ\'ল কাৰণ ফাইল ভঁৰাল "$2" কেৱল পঢ়িব পৰা অৱস্থাত আছে।
-দৰ্শোৱা কাৰণ হৈছে "\'\'$3\'\'"।',
+যিজন প্ৰশাসকে এইটো বন্ধ কৰিছে তেওঁ দৰ্শোৱা কাৰণ হৈছে: \'\'$3\'\'।',
+'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
+'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
+'exception-nologin' => 'প্ৰৱেশ কৰা নাই',
+'exception-nologin-text' => 'এই পৃষ্ঠা অথবা কামৰ বাবে আপুনি প্ৰৱেশ কৰা বাধ্যতামূলক',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -507,9 +511,9 @@ $2',
 
 আপুনি বেনামী ভাবেও {{SITENAME}} ব্যৱহাৰ কৰিব পাৰে, অথবা আকৌ সেই একে বা বেলেগ নামেৰে [[Special:UserLogin|প্ৰৱেশ]] কৰিব পাৰে।
 মন কৰিব যে যেতিয়ালৈকে আপোনাৰ ব্ৰাউজাৰৰ অস্থায়ী-স্মৃতি (cache memory) খালী নকৰে, তেতিয়ালৈকে কিছুমান পৃষ্ঠাত আপুনি প্ৰৱেশ কৰা বুলি দেখুৱাই থাকিব পাৰে।",
-'welcomecreation' => '== à¦¸à§\8dবাà¦\97তম, $1! ==
+'welcomecreation' => '== à¦\86দৰিà¦\9bà§\8bà¦\81, $1! ==
 আপোনাৰ সদস্যভুক্তি হৈ গ’ল ।
-[[Special:Preferences|{{SITENAME}}  পচন্দসমূহ]]ত আপোনাৰ পচন্দমতে ব্যক্তিগতকৰণ কৰি লবলৈ নাপাহৰে যেন ।',
+[[Special:Preferences|{{SITENAME}}ৰ পছন্দসমূহ]]ত আপোনাৰ পছন্দমতে ব্যক্তিগতকৰণ কৰি ল’বলৈ নাপাহৰে যেন ।',
 'yourname' => 'সদস্যনাম:',
 'yourpassword' => 'আপোনাৰ গুপ্তশব্দ',
 'yourpasswordagain' => 'গুপ্তশব্দ আকৌ এবাৰ লিখক',
@@ -519,14 +523,14 @@ $2',
 'externaldberror' => 'কোনো প্ৰামাণ্যকৰণ তথ্যকোষৰ ত্ৰুটি ঘটিছে নতুবা আপোনাৰ বৰ্হি-একাউণ্ট নৱীকৰণ কৰাৰ অনুমতি নাই ।',
 'login' => 'প্ৰৱেশ',
 'nav-login-createaccount' => 'প্ৰৱেশ/সদস্যভুক্তি',
-'loginprompt' => '{{SITENAME}}ত à¦ªà§\8dৰৱà§\87শ à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦\95à§\81à¦\95à§\80 à¦¸à¦\95à§\8dৰà§\80য় à¦\95ৰিব à¦²à¦¾à¦\97িব',
+'loginprompt' => '{{SITENAME}}ত à¦ªà§\8dৰৱà§\87শ à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦\95à§\81à¦\95িà¦\9cà§\8d à¦¸à¦\95à§\8dৰিয় à¦¥à¦¾à¦\95িব à¦²à¦¾à¦\97িব।',
 'userlogin' => 'প্ৰৱেশ/সদস্যভুক্তি',
 'userloginnocreate' => 'প্ৰৱেশ',
 'logout' => 'প্ৰস্থান',
 'userlogout' => 'প্ৰস্থান',
 'notloggedin' => 'প্ৰৱেশ কৰা নাই',
-'nologin' => 'আপোনাৰ একাউণ্ট নাই নেকি? $1',
-'nologinlink' => 'নতà§\81ন à¦¸à¦¦à¦¸à§\8dযভà§\81à¦\95à§\8dতি à¦\95ৰক',
+'nologin' => "ৱিকিপিডিয়াত আপোনাৰ একাউণ্ট নাই নেকি? তেনে '''$1'''।",
+'nologinlink' => 'নতà§\81ন à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\96à§\8bলক',
 'createaccount' => 'সভ্যভুক্ত হবলৈ',
 'gotaccount' => "আপুনি সদস্য হয়নে? '''$1'''",
 'gotaccountlink' => 'প্ৰৱেশ',
@@ -539,9 +543,9 @@ $2',
 'loginerror' => 'প্ৰৱেশ সমস্যা',
 'createaccounterror' => "একাউন্ট সৃষ্টি কৰা নহ'ল: $1",
 'nocookiesnew' => 'আপোনাৰ সদস্যভুক্তি হৈ গৈছে, কিন্তু আপুনি প্ৰৱেশ কৰা নাই।
-{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
+{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
 আপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।
-অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্যনামেৰে প্ৰৱেশ কৰক।',
+অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত আপোনাৰ সদস্য নামেৰে প্ৰৱেশ কৰক।',
 'nocookieslogin' => '{{SITENAME}} ত প্ৰৱেশ কৰিবলৈ কুকি সক্ৰিয় থাকিব লাগিব।
 আপুনি কুকি নিষ্ক্ৰিয় কৰি থৈছে।
 অনুগ্ৰহ কৰি কুকি সক্ৰিয় কৰক, আৰু তাৰ পাছত চেষ্টা কৰক।',
@@ -549,7 +553,7 @@ $2',
 আপোনাৰ কুকি সক্ৰিয় ৰাখক, এই পৃষ্ঠা ৰি-লোড কৰি পুনৰ চেষ্টা কৰক ।',
 'noname' => 'আপুনি বৈধ সদস্যনাম এটা দিয়া নাই।',
 'loginsuccesstitle' => "প্ৰৱেশ অনুমোদিত হ'ল",
-'loginsuccess' => "''' à¦\86পà§\81নি {{SITENAME}}ত \"\$1\" à¦¨à¦¾à¦®à§\87ৰà§\87 à¦ªà§\8dৰবেশ কৰিলে '''",
+'loginsuccess' => "''' à¦\86পà§\81নি {{SITENAME}}ত \"\$1\" à¦¨à¦¾à¦®à§\87ৰà§\87 à¦ªà§\8dৰৱেশ কৰিলে '''",
 'nosuchuser' => '"$1" নামৰ কোনো সদস্য নাই।
 সদস্য নাম আকাৰ সংবেদনশীল।
 আপোনাৰ বানানতো চাওক, বা  [[Special:UserLogin/signup|নতুন সদস্যভুক্তি কৰক]]।',
@@ -563,18 +567,18 @@ $2',
 'password-name-match' => "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
 'password-login-forbidden' => 'এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।',
 'mailmypassword' => 'ই-মেইলত গুপ্তশব্দ পঠিয়াওক',
-'passwordremindertitle' => '{{SITENAME}} ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
+'passwordremindertitle' => '{{SITENAME}}ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
 'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
-{{SITENAME}} ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দ বিছাৰিছে ($4) ।
+{{SITENAME}}ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছে ($4) ।
 "$2" সদস্যজনৰ কাৰণে এতিয়া নতুন গুপ্তশব্দ হৈছে "$3" ।
 আপুনি এতিয়া প্ৰৱেশ কৰক আৰু গুপ্তশব্দতো সলনি কৰক।
-à¦\86পà§\8bনাৰ à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ {{PLURAL:$5|à¦\8fদিনৰ|$5 à¦¦à¦¿à¦¨à§°}} à¦­à¦¿à¦¤à§°à¦¤ à§°à¦¦ কৰা হ\'ব ।
+à¦\86পà§\8bনাৰ à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ {{PLURAL:$5|à¦\8fদিনৰ|$5 à¦¦à¦¿à¦¨à§°}} à¦­à¦¿à¦¤à§°à¦¤ à¦¬à¦¾à¦¤à¦¿à¦² কৰা হ\'ব ।
 
 যদি আপুনি এই অনুৰোধ কৰা নাছিল অথবা যদি আপোনাৰ গুপ্তশব্দতো মনত আছে আৰু তাক সলাব নিবিছাৰে, তেনেহলে আপুনি এই বাৰ্তাতো অৱজ্ঞা কৰিব পাৰে আৰু আপোনাৰ আগৰ গুপ্তশব্দটোকে ব্যৱহাৰ কৰি থাকিব পাৰে।',
 'noemail' => '"$1" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।',
 'noemailcreate' => 'আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব',
-'passwordsent' => '"$1" à§° à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাত à¦¨à¦¤à§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\8fà¦\9fা à¦ªà¦ à§\8bৱা à¦¹à§\88à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¸à§\87য়া à¦ªà§\8bৱাৰ à¦ªà¦¾à¦\9bত à¦ªà§\81নৰ à¦ªà§\8dৰবেশ কৰক।',
-'blocked-mailpassword' => 'আপোনাৰ IP ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
+'passwordsent' => '"$1" à§° à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাত à¦¨à¦¤à§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\8fà¦\9fা à¦ªà¦ à§\8bৱা à¦¹à§\88à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¸à§\87য়া à¦ªà§\8bৱাৰ à¦ªà¦¾à¦\9bত à¦ªà§\81নৰ à¦ªà§\8dৰৱেশ কৰক।',
+'blocked-mailpassword' => 'আপোনাৰ আইপি ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।',
 'eauthentsent' => 'সঞ্চিত ই-মেইল ঠিকনাত নিশ্চিতকৰণ ই-মেইল এখন পঠোৱা হৈছে।
 আৰু অন্যান্য ই-মেইল পঠোৱাৰ আগতে, আপোনাৰ সদস্যতাৰ নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।',
 'throttled-mailpassword' => 'যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} গুপ্তশব্দ পুনৰুদ্ধাৰ স্মাৰক পঠিওৱা হৈছে ।
@@ -594,28 +598,28 @@ $2',
 'accountcreated' => "একাউণ্ট সৃষ্টি কৰা হ'ল",
 'accountcreatedtext' => "$1ৰ কাৰণে সদস্য একাউণ্ট সৃষ্টি কৰা হ'ল।",
 'createaccount-title' => '{{SITENAME}}ৰ কাৰণে একাউণ্ট সৃষ্টি কৰক।',
-'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4) ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক।
+'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4)ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক।
 
 যদি এইয়া ভুলতে হৈছে, তেনেহলে আপুনি এই বাৰ্তাটো অবজ্ঞা কৰিব পাৰে ।',
-'usernamehasherror' => 'সদসà§\8dযনামত à¦¹à§\87à¦\9aà§\8dâ\80\8c à¦\86à¦\96ৰ থাকিব নোৱাৰে',
+'usernamehasherror' => 'সদসà§\8dযনামত à¦¹à§\87à¦\9aà§\8dâ\80\8c à¦\9aিহà§\8dন থাকিব নোৱাৰে',
 'login-throttled' => 'আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে ।
 অনুগ্ৰহ কৰি কিছু সময় অপেক্ষা কৰি আকৌ প্ৰয়াস কৰক ।',
 'login-abort-generic' => 'আপোনাৰ প্ৰৱেশ অসফল হৈছে- বাতিল কৰা হ’ল',
 'loginlanguagelabel' => 'ভাষা: $1',
-'suspicious-userlogout' => 'à¦\86পà§\8bনাৰ à¦ªà§\8dৰসà§\8dথানৰ à¦\85নà§\81ৰà§\8bধ à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87 à¦\95াৰণ à¦¹à¦¯à¦¼à¦¤à§\8b à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰ à¦\85সমà§\8dপà§\82ৰà§\8dণ à¦¨à¦¤à§\81বা à¦ªà§\82বৰà§\8dবতী তথ্য পঠাইছে ।',
+'suspicious-userlogout' => 'à¦\86পà§\8bনাৰ à¦ªà§\8dৰসà§\8dথানৰ à¦\85নà§\81ৰà§\8bধ à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87 à¦\95াৰণ à¦¹à¦¯à¦¼à¦¤à§\8b à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰ à¦\85সমà§\8dপà§\82ৰà§\8dণ à¦¨à¦¤à§\81বা à¦ªà§\82ৰà§\8dবৱতী তথ্য পঠাইছে ।',
 
 # E-mail sending
-'php-mail-error-unknown' => 'পি.এইছ.পি মেইল() কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
+'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
 'user-mail-no-addy' => 'ই-মেইল ঠিকনা নোহোৱাকৈয়ে ই-মেইল পঠোৱাৰ চেষ্টা কৰা হৈছে ।',
 
 # Change password dialog
 'resetpass' => 'গুপ্তশব্দ সলনি কৰক',
 'resetpass_announce' => 'আপুনি ই-মেইলত পোৱা অস্থায়ী গুপ্তশব্দৰে প্ৰৱেশ কৰিছে।
-পà§\8dৰৱà§\87শ à¦¸à¦®à§\8dপà§\81ৰ্ণ কৰিবলৈ, আপুনি এটা নতুন গুপ্তশব্দ দিব লাগিব:',
+পà§\8dৰৱà§\87শ à¦¸à¦®à§\8dপà§\82ৰ্ণ কৰিবলৈ, আপুনি এটা নতুন গুপ্তশব্দ দিব লাগিব:',
 'resetpass_header' => 'গুপ্তশব্দ সলনি কৰক',
 'oldpassword' => 'পুৰণি গুপ্তশব্দ:',
 'newpassword' => 'নতুন গুপ্তশব্দ:',
-'retypenew' => 'নতà§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\86à¦\95à§\8c à¦\9fাà¦\87প à¦\95ৰক',
+'retypenew' => 'নতà§\81ন à¦\97à§\81পà§\8dতশবà§\8dদ à¦\86à¦\95à§\8c à¦²à¦¿à¦\96ক',
 'resetpass_submit' => 'গুপ্তশব্দ বহাওক আৰু প্ৰৱেশ কৰক',
 'resetpass_success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে, এতিয়া আপুনি প্ৰৱেশ কৰি আছে...',
 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
@@ -637,7 +641,7 @@ $2',
 'passwordreset-capture' => 'ফলাফল ই-মেইলখন চাওক ?',
 'passwordreset-capture-help' => "আপুনি এই ঘৰটো চিহ্নিত কৰিলে এই ই-মেইল (আৰু অস্থায়ী গুপ্তশব্দ) আপুনি দেখা পোৱাৰ লগতে সদস্যজনলৈও পঠোৱা হ'ব।",
 'passwordreset-email' => 'ই-মেইল ঠিকনা:',
-'passwordreset-emailtitle' => '{{SITENAME}} ত একাউণ্টৰ সবিশেষ তথ্য আছে ।',
+'passwordreset-emailtitle' => '{{SITENAME}}ত একাউণ্টৰ সবিশেষ তথ্য আছে ।',
 'passwordreset-emailtext-ip' => 'কোনোবাই (IP ঠিকনা $1 ৰ পৰা সম্ভৱত: আপুনিয়েই) {{SITENAME}} ($4) ৰ বাবে আপোনাৰ একাউণ্টৰ সবিশেষ তথ্য বিচাৰিছিল । ই-পত্ৰ ঠিকনাটোৰ লগত এই সদস্যৰ {{PLURAL:$3|একাউণ্ট|একাউণ্টবোৰ}} জড়িত হৈ আছে ।
 
 $2
@@ -658,7 +662,7 @@ $2
 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।',
-'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:',
 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:',
 'changeemail-none' => '(নাই)',
@@ -671,9 +675,9 @@ $2
 'italic_sample' => 'হেলনীয়া পাঠ্য',
 'italic_tip' => 'বেঁকা পাঠ্য',
 'link_sample' => 'শিৰোনামা সংযোগ',
-'link_tip' => 'ভিতৰà§\81ৱা সংযোগ',
+'link_tip' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ সংযোগ',
 'extlink_sample' => 'http://www.example.com শীৰ্ষক সংযোগ',
-'extlink_tip' => 'বহিà¦\83সংযোগ (http:// উপসৰ্গ মনত ৰাখিব)',
+'extlink_tip' => 'বাহà§\8dযিà¦\95 সংযোগ (http:// উপসৰ্গ মনত ৰাখিব)',
 'headline_sample' => 'শিৰোনামা পাঠ্য',
 'headline_tip' => 'দ্বিতীয় স্তৰৰ শিৰোনামা',
 'nowiki_sample' => 'নসজোৱা পাঠ্য ইয়াত অন্তৰ্ভুক্ত কৰক',
@@ -717,7 +721,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰিব, আৰু আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।
 আপোনাৰ এতিয়াৰ আই-পি ঠিকনা হল $3, আৰু আপোনাৰ অবৰোধ ক্ৰমিক হৈছে #$5 ।
 এই বিষয়ে হোৱা আলোচনাত ইয়াৰ সবিশেষ সদৰী কৰে যেন।",
-'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1 ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।
+'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।
 ইয়াৰ বাবে দিয়া কাৰণ হৈছে:
 
 :''$2''
@@ -726,11 +730,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 * অৱৰোধ সমাপ্তি: $6
 * অৱৰোধ কৰা হৈছে: $7
 
-à¦\86পà§\81নি à¦\8fà¦\87 à¦\85বৰà§\8bধৰ à¦¬à¦¿à¦·à¦¯à¦¼à§\87 à¦\86লà§\8bà¦\9aনা à¦\95ৰিবলà§\88 $1 à¦¬à¦¾ [[{{MediaWiki:Grouppage-sysop}}|পà§\8dৰবনà§\8dধক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।
+à¦\86পà§\81নি à¦\8fà¦\87 à¦\85বৰà§\8bধৰ à¦¬à¦¿à¦·à¦¯à¦¼à§\87 à¦\86লà§\8bà¦\9aনা à¦\95ৰিবলà§\88 $1 à¦¬à¦¾ [[{{MediaWiki:Grouppage-sysop}}|পà§\8dৰশাসক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।
 
 আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰে। আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।
-à¦\85পà§\8bনাৰ à¦\8fতিয়াৰ IP à¦ à¦¿à¦\95না à¦¹à§\88à¦\9bà§\87 $3, à¦\85ৰà§\81 à¦\86পà§\8bনাৰ à¦\85বৰোধ ক্ৰমিক হৈছে $5 ।
-এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হল।",
+à¦\86পà§\8bনাৰ à¦\8fতিয়াৰ à¦\86à¦\87 à¦ªà¦¿ à¦ à¦¿à¦\95না à¦¹à§\88à¦\9bà§\87 $3, à¦\86ৰà§\81 à¦\86পà§\8bনাৰ à¦\85ৱৰোধ ক্ৰমিক হৈছে $5 ।
+এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হল।",
 'blockednoreason' => 'কাৰণ দিয়া নাই',
 'whitelistedittext' => 'সম্পাদনা কৰিবলৈ $1 কৰক ।',
 'confirmedittext' => 'সম্পাদনা কৰাৰ আগতে আপুনি আপোনাৰ ই-মেইল ঠিকনাটো প্ৰমানিত কৰিব লাগিব।
@@ -741,8 +745,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'loginreqlink' => 'প্ৰৱেশ',
 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
 'accmailtitle' => "গুপ্তশব্দ পঠোৱা হ'ল।",
-'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2-লৈ পঠোৱা হ'ল । 
-এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|change password]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।",
+'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । 
+এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।",
 'newarticle' => '(নতুন)',
 'newarticletext' => "আপুনি বিচৰা প্ৰবন্ধটো বিচাৰি পোৱা নগ'ল।
 
@@ -771,7 +775,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 * '''Google Chrome:''' ''Ctrl-Shift-R'' টিপক (এপল মেকৰ বাবে ''⌘-Shift-R'' )
 * '''Internet Explorer:''' ''Ctrl'' ধৰি ৰাখি ''Refresh'' ক্লিক কৰক, অথবা ''Ctrl-F5'' টিপক
 * '''Konqueror: ''' ''Reload'' ক্লিক কৰক বা ''F5'' টিপক
-* '''Opera:''' ''Tools→Preferences'' ত গৈ Cache মচি পেলাওক",
+* '''Opera:''' ''Tools→Preferences'' ত গৈ কেচ্‌ মচি পেলাওক",
 'usercssyoucanpreview' => "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন CSS পৰীক্ষা কৰক ।",
 'userjsyoucanpreview' => "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন জাভালিপি পৰীক্ষা কৰক ।",
 'usercsspreview' => "'''মনত ৰাখিব আপুনি কেৱল আপোনাৰ ব্যৱহাৰকাৰী CSS  প্ৰাকদৰ্শন কৰিছে ।''' 
@@ -787,13 +791,14 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'note' => "'''টোকা:'''",
 'previewnote' => "'''মনত ৰাখিব এয়া মাথোন প্ৰাক্‌দৰ্শনহে।'''
 আপোনাৰ সালসলনিসমূহ এতিয়াও সংৰক্ষণ কৰা হোৱা নাই!",
+'continue-editing' => 'সম্পাদনা জাৰী ৰাখক',
 'previewconflict' => 'এই প্ৰাকদৰ্শনে ওপৰৰ সম্পাদনা ক্ষেত্ৰৰ লেখা সাঁচি ৰাখিলে যেনেকুৱা দেখা যাব তেনেকুৱা দেখাইছে ।',
 'session_fail_preview' => "'''দুঃখিত! চেচন ডাটা হেৰাই যোৱাৰ কাৰণে আপোনাৰ সম্পাদনা কৃতকাৰ্য্য নহ'ল ।'''
 অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক ।
 তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।",
 'session_fail_preview_html' => "'''দুঃখিত! চেচন ডাটা হেৰাই যোৱাৰ কাৰণে আপোনাৰ সম্পাদনা কৃতকাৰ্য্য নহ'ল ।'''
 
-''যিহেতু {{SITENAME}}-ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট (Javasccript) আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ খাতিৰত খচৰা আঁৰ কৰা হৈছে ।''
+''যিহেতু {{SITENAME}}ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ স্বাৰ্থত খচৰা আঁৰ কৰা হৈছে ।''
 
 '''এইয়া যদি এটা বৈধ সম্পাদনা আছিল, তেনে আকৌ চেষ্টা কৰক ।'''
 তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।",
@@ -803,8 +808,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'edit_form_incomplete' => "'''এই সম্পাদনাৰ কিছু অংশ চাৰ্ভাৰলৈ নগ’ল; আপোনাৰ সম্পাদনা ঠিকে আছেনে পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক ।'''",
 'editing' => '$1 সম্পাদনা',
 'creating' => '$1 পৃষ্ঠাখন আপুনি সৃষ্টি কৰি আছে',
-'editingsection' => '$1 (বিভাà¦\97) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦¥à¦\95া à¦¹à§\88ছে',
-'editingcomment' => '$1 (নতà§\81ন à¦¬à¦¿à¦­à¦¾à¦\97) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦¥à¦\95া à¦¹à§\88ছে',
+'editingsection' => '$1 (à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦\86ছে',
+'editingcomment' => '$1 (নতà§\81ন à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ) à¦¸à¦®à§\8dপাদনা à¦\95ৰি à¦\86ছে',
 'editconflict' => 'সম্পাদনা দ্বন্দ: $1',
 'explainconflict' => "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত আন কোনোবাই এই পৃষ্ঠাখন সলনি কৰিলে।
 পাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে।
@@ -848,8 +853,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'template-semiprotected' => '(অৰ্ধ-সুৰক্ষিত)',
 'hiddencategories' => 'এই পৃষ্ঠা {{PLURAL:$1|১-টা নিহিত শ্ৰেণীৰ|$1-টা নিহিত শ্ৰেণীৰ}} সদস্য:',
 'nocreatetitle' => 'পৃষ্ঠা সৃষ্টি সীমিত',
-'nocreatetext' => '{{SITENAME}} ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে।
-আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin| নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।',
+'nocreatetext' => '{{SITENAME}}ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে।
+আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin|নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।',
 'nocreate-loggedin' => 'নতুন পৃষ্ঠা সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
 'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
 'sectioneditnotsupported-text' => 'এই পৃষ্ঠাত অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই',
@@ -861,7 +866,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 এই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।
 এই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।",
 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে ।
-পà§\83ষà§\8dঠাà¦\9fিৰ à¦¬à¦¾à¦¤à¦¿à¦² à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦²'à¦\97 তলত দিয়া হ'ল ।",
+পà§\83ষà§\8dঠাà¦\9fিৰ à¦¬à¦¾à¦¤à¦¿à¦² à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦\85ভিলà§\87à¦\96 তলত দিয়া হ'ল ।",
 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক',
 'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
 ইয়াৰ কোনো ব্যাখ্যা নাই ।',
@@ -887,6 +892,12 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'parser-template-loop-warning' => 'সাঁচ লুপ চিহ্নিত কৰা হৈছে: [[$1]]',
 'parser-template-recursion-depth-warning' => 'সাঁচৰ পুনৰাবৃত্তি গভীৰতা সীমা ($1) তকৈ অধিক হৈছে',
 'language-converter-depth-warning' => 'ভাষা পৰিৱৰ্তকৰ গভীৰতা সীমাই ($1) অতিক্ৰম কৰিছে',
+'node-count-exceeded-category' => "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
+'node-count-exceeded-warning' => "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
+'expansion-depth-exceeded-category' => 'বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা',
+'expansion-depth-exceeded-warning' => 'পৃষ্ঠাখনৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
+'parser-unstrip-loop-warning' => 'আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে',
+'parser-unstrip-recursion-limit' => 'আন্‌ষ্ট্ৰিপ ৰিকাৰ্ছন সীমা অতিক্ৰম হৈছে ($1)',
 
 # "Undo" feature
 'undo-success' => 'এই সম্পাদনা পূৰ্ববৎ কৰিব পাৰি ।
@@ -897,30 +908,30 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 
 # Account creation failure
 'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
-'cantcreateaccount-text' => "IP ঠিকনা ('''$1''') ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]] এ বাধা প্ৰদান কৰিছে ।
+'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
 
-$3 à¦\8f à¦\86à¦\97বঢ়à§\8bৱা à¦\87য়াৰ à¦\95াৰণ à¦¹â\80\99ল ''$2''",
+$3 à¦¯à¦¼à§\87 à¦\86à¦\97বঢ়à§\8bৱা à¦\87য়াৰ à¦\95াৰণ à¦¹à§\88à¦\9bà§\87 ''$2''",
 
 # History pages
 'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
 'nohistory' => 'এই পৃষ্ঠাৰ কোনো সম্পাদনাৰ ইতিহাস নাই।',
-'currentrev' => 'শà§\87হতà§\80য়া à¦­à¦¾à¦·à§\8dয',
+'currentrev' => 'শà§\87হতà§\80য়া à¦¸à¦\82সà§\8dà¦\95ৰণ',
 'currentrev-asof' => '$1 অনুযায়ী বৰ্তমান সংস্কৰণ',
-'revisionasof' => '$1 ৰ সংস্কৰণ',
-'revision-info' => '$1-লৈ $2-এ কৰা সংশোধন',
+'revisionasof' => '$1ৰ সংস্কৰণ',
+'revision-info' => '$1-লৈ $2 কৰা সংশোধন',
 'previousrevision' => '← আগৰ সংশোধন',
 'nextrevision' => 'সদ্যসংশোধিত',
 'currentrevisionlink' => 'শেহতীয়া ভাষ্য',
 'cur' => 'বৰ্তমান',
 'next' => 'পৰৱৰ্তী',
-'last' => 'পà§\82ৰà§\8dববৰ্তী',
+'last' => 'পà§\82ৰà§\8dবৱৰ্তী',
 'page_first' => 'প্ৰথম',
 'page_last' => 'অন্তিম',
 'histlegend' => "পাৰ্থক্য বাছনি: পাৰ্থক্য চাবলৈ সংকলনবোৰৰ সম্মুখত থকা ৰেডিঅ' বুটামবোৰ বাচনী কৰি এণ্টাৰ টিপক অথবা একেবাৰে তলত দিয়া বুটামতো ক্লিক কৰক <br />
 লিজেণ্ড: '''({{int:cur}})''' = বৰ্তমানৰ সংকলনৰ লগত পাৰ্থক্য,
 '''({{int:last}})''' = আগৰ সংকলনৰ লগত পাৰ্থক্য, '''{{int:minoreditletter}}'' = অগুৰুত্বপূৰ্ণ সম্পাদনা।",
 'history-fieldset-title' => 'ইতিহাসত অনুসন্ধান কৰক',
-'history-show-deleted' => 'মাথà§\8bà¦\81 à¦®à¦\9aি à¦ªà§\87লà§\8bৱা',
+'history-show-deleted' => 'মাথà§\8bà¦\81 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা',
 'histfirst' => 'আটাইতকৈ পুৰণি',
 'histlast' => 'শেহতীয়া',
 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
@@ -937,42 +948,42 @@ $3 এ আগবঢ়োৱা ইয়াৰ কাৰণ হ’ল ''$2''",
 # Revision deletion
 'rev-deleted-comment' => "(সম্পাদনা সাৰাংশ আঁতৰোৱা হ'ল)",
 'rev-deleted-user' => '(সদস্যনাম আঁতৰোৱা হ’ল)',
-'rev-deleted-event' => "(ল'à¦\97 à¦\95াৰà§\8dয্য আঁতৰোৱা হ'ল)",
+'rev-deleted-event' => "(à¦\85ভিলà§\87à¦\96 à¦\95াৰ্য আঁতৰোৱা হ'ল)",
 'rev-deleted-user-contribs' => "[সদস্যনাম বা আই-পি ঠিকনা আঁতৰোৱা হ'ল - সম্পাদনা বৰঙনিসমূহৰ পৰা আঁৰ কৰা হৈছে]",
 'rev-deleted-text-permission' => "পৃষ্ঠাৰ এই সংশোধনটি '''বিলোপ''' কৰা হ'ল ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦²'à¦\97ত]",
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]",
 'rev-deleted-text-unhide' => "পৃষ্ঠাখনৰ এই সংশোধনটো '''বিলোপ''' কৰা হৈছে | 
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97]ত
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
 'rev-suppressed-text-unhide' => "পৃষ্ঠাখনৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত]।
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত]।
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
 'rev-deleted-text-view' => "পৃষ্ঠাৰ এই সংশোধনটো '''বিলোপ''' কৰা হ'ল ।
-à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦²â\80\99à¦\97ত]।",
+à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85বলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]।",
 'rev-suppressed-text-view' => "পৃষ্ঠাৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হ’ল।
-à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত]।",
+à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত]।",
 'rev-deleted-no-diff' => "আপুনি এই পাৰ্থক্য চাব নোৱাৰে কাৰণ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²'à¦\97] à¦¤ ।",
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]।",
 'rev-suppressed-no-diff' => "আপুনি এই পাৰ্থক্য চাব নোৱাৰে কাৰণ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।",
 'rev-deleted-unhide-diff' => "এই পাৰ্থক্যৰ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।
-বিসà§\8dতাৰিত à¦\95াৰণ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97] à¦¤ পাব ।
+বিসà§\8dতাৰিত à¦\95াৰণ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত] পাব ।
 আপুনি মন কৰিলে [$1 এই পাৰ্থক্য চাওক] ।",
 'rev-suppressed-unhide-diff' => "এই পাৰ্থক্যৰ এটা সংশোধন '''নিবাৰণ''' কৰা হৈছে ।
-সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত] ।
+সবিশà§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত] ।
 আপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে] ।",
 'rev-deleted-diff-view' => "এই পাৰ্থক্যৰ এটা সংশোধন '''বিলোপ''' কৰা হ'ল ।
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97ত]",
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96ত]",
 'rev-suppressed-diff-view' => "এই পাৰ্থক্যৰ এটা সংশোধন '''নিবাৰণ''' কৰা হ’ল ।
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97ত] ।",
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà¦¾à§°à§\8dথà¦\95à§\8dয à¦\9aাব à¦ªà¦¾à§°à§\87; à¦¸à¦¬à¦¿à¦¶à§\87ষ à¦ªà¦¾à¦¬ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦\85ভিলà§\87à¦\96ত] ।",
 'rev-delundel' => 'দেখুৱাওক/নেদেখুৱাব',
 'rev-showdeleted' => 'দেখুৱাওক',
-'revisiondelete' => 'সংকলন বিলোপন কৰক / পুণৰ্স্থাপিত কৰক',
+'revisiondelete' => 'সংকলন বিলোপ কৰক / পুণৰ স্থাপন কৰক',
 'revdelete-nooldid-title' => 'লক্ষ্য সংশোধন যুক্তিসংগত নহয়',
 'revdelete-nooldid-text' => 'কামটো কৰাৰ বাবে আপুনি লক্ষ্য সংশোধন নিৰ্বাচন কৰা নাই, নিৰ্বাচিত সংশোধন নাই, অথবা আপুনি বৰ্তমানৰ সংশোধন লুকুৱাব বিচাৰিছে ।',
-'revdelete-nologtype-title' => 'à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 প্ৰকাৰ দিয়া হোৱা নাই',
-'revdelete-nologtype-text' => 'à¦\8fà¦\87 à¦\95ামà¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86পà§\81নি à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 প্ৰকাৰ নিৰ্বাচন কৰা নাই ।',
-'revdelete-nologid-title' => 'à¦\85যà§\81à¦\95à§\8dতিসà¦\82à¦\97ত à¦²â\80\99à¦\97 ভৰ্তি',
-'revdelete-nologid-text' => 'à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\95à§\8bনà§\8b à¦²â\80\99à¦\97 à¦­à§°à§\8dতি à¦¨à¦¿à§°à§\8dবাà¦\9aন à¦\95ৰা à¦¨à¦¾à¦\87 à¦\85থবা à¦¨à¦¿à§°à§\8dবাà¦\9aিত à¦²â\80\99à¦\97 ভৰ্তিটো নাই ।',
+'revdelete-nologtype-title' => 'à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96 প্ৰকাৰ দিয়া হোৱা নাই',
+'revdelete-nologtype-text' => 'à¦\8fà¦\87 à¦\95ামà¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86পà§\81নি à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96  প্ৰকাৰ নিৰ্বাচন কৰা নাই ।',
+'revdelete-nologid-title' => 'à¦\85যà§\81à¦\95à§\8dতিসà¦\82à¦\97ত à¦\85ভিলà§\87à¦\96 ভৰ্তি',
+'revdelete-nologid-text' => 'à¦\86পà§\81নি à¦\8fà¦\87à¦\9fà§\8b à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\95à§\8bনà§\8b à¦\85ভিলà§\87à¦\96 à¦­à§°à§\8dতি à¦¨à¦¿à§°à§\8dবাà¦\9aন à¦\95ৰা à¦¨à¦¾à¦\87 à¦\85থবা à¦¨à¦¿à§°à§\8dবাà¦\9aিত à¦\85ভিলà§\87à¦\96 ভৰ্তিটো নাই ।',
 'revdelete-no-file' => 'নিৰ্ধাৰিত ফাইলটি নাই ।',
 'revdelete-show-file-confirm' => 'আপুনি "<nowiki>$1</nowiki>"  ফাইলৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ পৰা $3 সময়ত চাব বিচাৰিছে নেকি?',
 'revdelete-show-file-submit' => 'হয়',
@@ -1067,7 +1078,9 @@ $1",
 'mergelogpagetext' => 'এখন পৃষ্ঠাৰ ইতিহাস আন এখনৰ লগত কৰা একত্ৰীকৰণৰ সকলোতকৈ শেহতীয়া তালিকা তলত দিয়া হ’ল ।',
 
 # Diffs
-'history-title' => '"$1" ৰ সাল-সলনিৰ ইতিহাস',
+'history-title' => '"$1" ৰ সংশোধনৰ ইতিহাস',
+'difference-title' => '"$1"ৰ বিভিন্ন সংশোধনসমূহৰ মাজৰ পাৰ্থক্য',
+'difference-title-multipage' => '"$1" আৰু "$2" পৃষ্ঠাৰ মাজৰ পাৰ্থক্যসমূহ',
 'difference-multipage' => '(পৃষ্ঠাসমূহৰ মাজত তফাৎ)',
 'lineno' => '$1 নং শাৰীঃ',
 'compareselectedversions' => 'নিৰ্বাচিত কৰা সংকলন সমূহৰ মাজত পাৰ্থক্য চাওক',
@@ -1165,6 +1178,7 @@ $1",
 'prefs-beta' => 'বিটা বৈশিষ্টসমূহ',
 'prefs-datetime' => 'তাৰিখ আৰু সময়',
 'prefs-labs' => 'পৰীক্ষাগাৰ বৈশিষ্টসমূহ',
+'prefs-user-pages' => 'সদস্য পৃষ্ঠাসমূহ',
 'prefs-personal' => 'সদস্যৰ বিৱৰণ',
 'prefs-rc' => 'শেহতীয়া সাল-সলনি',
 'prefs-watchlist' => 'লক্ষ্য তালিকা',
@@ -1480,7 +1494,7 @@ $1",
 'upload_directory_missing' => 'আপলোড ডিৰেক্টৰি ($1)  বিচাৰি পোৱা নগ’ল আৰু ৱেবচাৰ্ভাৰৰ দ্বাৰা তৈয়াৰ কৰিব পৰা নগ’ল ।',
 'upload_directory_read_only' => 'আপল’ড ডিৰেক্টৰি ($1) ৱেবচাৰ্ভাৰৰ দ্বাৰা লিখনযোগ্য নহয় ।',
 'uploaderror' => 'আপল’ডত সমস্যা হৈছে',
-'upload-recreate-warning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦¨à¦¾à¦®à§° à¦\8fà¦\9fা à¦«à¦¾à¦\87ল à¦¬à¦¿à¦²à§\8bপ à¦¬à¦¾ à¦¸à§\8dথানানà§\8dতত কৰা হৈছে । '''
+'upload-recreate-warning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦¨à¦¾à¦®à§° à¦\8fà¦\9fা à¦«à¦¾à¦\87ল à¦¬à¦¿à¦²à§\8bপ à¦¬à¦¾ à¦¸à§\8dথানানà§\8dতৰ কৰা হৈছে । '''
 
 এই পৃষ্ঠাৰ অৱলুপ্তি ল’গ আৰু স্থানান্তৰ ল’গ আপোনাৰ সুবিধাৰ্থে তলত দিয়া হ’ল:",
 'uploadtext' => "ফাইল আপল’ড কৰাৰ বাবে তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰক ।
@@ -1587,8 +1601,8 @@ $1",
 'upload-description' => 'ফাইলৰ বৰ্ণনা',
 'upload-options' => "আপল'ড বিকল্পসমূহ",
 'watchthisupload' => 'এই ফাইল লক্ষ্য কৰক',
-'filewasdeleted' => 'এই নামৰ এটা ফাইল পূৰ্বতে আপলড কৰি বিলোপ কৰা হৈছে ।
-ইয়াক পুনৰ আপলড কৰাৰ আগেয়ে আপুনি $1 পৰীক্ষা কৰা উচিত ।',
+'filewasdeleted' => 'এই নামৰ এটা ফাইল পূৰ্বতে আপলড কৰি বিলোপ কৰা হৈছে ।
+ইয়াক পুনৰ আপলড কৰাৰ আগেয়ে আপুনি $1 পৰীক্ষা কৰা উচিত ।',
 'filename-bad-prefix' => "আপুনি আপলোড কৰা ফাইলৰ নামটো '''\"\$1\"''' দি আৰম্ভ হৈছে, যিটো ডিজিটেল কেমেৰাই স্বয়ংক্ৰিয়ভাৱে দিয়ে আৰু সি ব্যাখ্যামূলক নহয় ।
 অনুগ্ৰহ কৰি আপোনাৰ ফাইলটোৰ বাবে এটা ব্যাখ্যামূলক নাম বাছি লওক ।",
 'upload-success-subj' => "আপলোড সফল হ'ল",
@@ -1597,7 +1611,7 @@ $1",
 'upload-failure-msg' => '[$2] ৰ পৰা আপুনি কৰা আপল’ডত এটা সমস্যাই দেখা দিছে:
 
 $1',
-'upload-warning-subj' => 'আপলড সতৰ্কীকৰণ',
+'upload-warning-subj' => 'আপলড সতৰ্কীকৰণ',
 'upload-warning-msg' => '[$2] ৰ পৰা আপুনি কৰা আপল’ডত এটা সমস্যাই দেখা দিছে । আপুনি ইয়াক সমাধান কৰিবৰ বাবে [[Special:Upload/stash/$1|আপল’ড প্ৰপত্ৰ]] লৈ ঘূৰি যাব পাৰে ।',
 
 'upload-proto-error' => 'ভুল প্ৰ’ট’ক’ল',
@@ -1630,14 +1644,15 @@ URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ
 'backend-fail-writetemp' => "অস্থায়ী ফাইলত লিখিব পৰা নগ'ল।",
 'backend-fail-closetemp' => "অস্থায়ী ফাইল বন্ধ কৰিব পৰা নগ'ল।",
 'backend-fail-read' => "$1 ফাইলটো পঢ়িব পৰা নগ'ল",
-'backend-fail-create' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল",
-'backend-fail-maxsize' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল কিয়নো ইয়াৰ আকাৰ {{PLURAL:$2|$2 বাইটতকৈ|$2 বাইটতকৈ}} বেছি।",
+'backend-fail-create' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল",
+'backend-fail-maxsize' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল কিয়নো ইয়াৰ আকাৰ {{PLURAL:$2|এক বাইটতকৈ|$2 বাইটতকৈ}} বেছি।",
 'backend-fail-readonly' => 'ষ্ট\'ৰেজ বেক্‌এণ্ড "$1"ক কেৱল পঢ়িব পৰা যায়। ইয়াৰ কাৰণ হ\'ল: "$2"',
 'backend-fail-synced' => '"$1" ফাইলটো আভ্যন্তৰীণ ষ্ট\'ৰেজ বেক্‌এণ্ডৰ লগত অসঙ্গত অৱস্থাত আছে',
 'backend-fail-connect' => '"$1" ষ্ট\'ৰেজ বেক্‌এণ্ডৰ লগত সম্পৰ্ক স্থাপন কৰিব পৰা নগ\'ল।',
 'backend-fail-internal' => 'ষ্ট\'ৰেজ বেক্‌এণ্ড "$1"ত এক অজ্ঞাত ত্ৰুটী ঘটিছে।',
 'backend-fail-contenttype' => '"$1"ত সাঁচি থ\'বলৈ ফাইলটোৰ সমল প্ৰকাৰ স্থিৰ কৰিব পৰা নগ\'ল।',
 'backend-fail-batchsize' => "$1টা ফাইল {{PLURAL:$1|কাৰ্যৰ|কাৰ্যৰ}} ষ্ট'ৰেজ বেকএ'ণ্ড দিয়া হৈছে; সীমা হৈছে $2টা {{PLURAL:$2|কাৰ্য|কাৰ্য}}।",
+'backend-fail-usable' => "অপৰ্যাপ্ত অনুমতি বা হেৰোৱা নিৰ্দেশিকা/সমলৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষৰ লগত সংযোগ স্থাপন নহ\'ল।',
@@ -1840,7 +1855,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'statistics-pages' => 'পৃষ্ঠাসমূহ',
 'statistics-pages-desc' => 'কথা-বতৰা পৃষ্ঠা, পুন:নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
-'statistics-files' => 'আপলড কৰা ফাইলসমূহ',
+'statistics-files' => 'আপলড কৰা ফাইলসমূহ',
 'statistics-edits' => '{{SITENAME}} স্থাপন কৰাৰেপৰা পৃষ্ঠা সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্ৰতি পৃষ্ঠাৰ গড় সম্পাদনা',
 'statistics-views-total' => 'সৰ্বমুঠ প্ৰদৰ্শন',
@@ -1852,7 +1867,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-mostpopular' => 'সৰ্বোচ্চ দৰ্শন কৰা পৃষ্ঠাসমূহ',
 
 'disambiguations' => 'দ্ব্যৰ্থতা-দূৰীকৰণ পৃষ্ঠাসমূহলৈ সংযোগ থকা পৃষ্ঠাসমূহ',
-'disambiguationspage' => 'Template:দ্ব্যৰ্থতা-দূৰীকৰণ',
+'disambiguationspage' => 'সাঁচ:দ্ব্যৰ্থতা-দূৰীকৰণ',
 'disambiguations-text' => "তলৰ পৃষ্ঠাখনসমূহত '''দ্ব্যৰ্থতা দূৰীকৰণ পৃষ্ঠা'''ৰ লগত সংযোগ আছে ।
 ইয়ে উপযুক্ত পৃষ্ঠাৰ লগত সংযোগ কৰিব পাৰে ।
 [[MediaWiki:Disambiguationspage]]ৰ পৰা সংযোগ থকা কোনো সাঁচ ব্যৱহাৰ কৰিলে এখন পৃষ্ঠাক দ্ব্যৰ্থতা দূৰীকৰণ পৃষ্ঠা হিছাপে গণ্য কৰা হ’ব ।",
@@ -1933,7 +1948,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'newpages-username' => 'সদস্যনাম:',
 'ancientpages' => 'আটাইতকৈ পুৰণি পৃষ্ঠাসমূহ',
 'move' => 'স্থানান্তৰ কৰক',
-'movethispage' => 'এই পৃষ্ঠাটো স্থানান্তৰিত কৰক',
+'movethispage' => 'এই পৃষ্ঠাটো স্থানান্তৰ কৰক',
 'unusedimagestext' => 'তলৰ ফাইলসমূহ আছে কিন্তু কোনো পৃষ্ঠাৰ অন্তৰ্গত নহয় ।
 অনুগ্ৰহ কৰি মন কৰিব যে প্ৰত্যক্ষ URL থকা কোনো পৃষ্ঠা আন ৱেবচাইটৰ লগত সংযোগ হৈ থাকিব পাৰে, সেয়ে সক্ৰিয়ভাৱে ব্যৱহাৰ হৈ থকা সত্ত্বেও ইয়াত তালিকাভুক্ত হ’ব পাৰে ।',
 'unusedcategoriestext' => 'তলৰ শ্ৰেণী পৃষ্ঠাসমূহৰ অস্তিত্ব আছে, কিন্তু আন কোনো পৃষ্ঠা বা শ্ৰেণীৰদ্বাৰা ব্যৱহৃত নহয় ।',
@@ -1962,6 +1977,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 আপুনি ল’গৰ প্ৰকাৰ, সদস্যৰ নাম বা পৃষ্ঠাখনৰ নাম নিৰ্বাচন কৰি প্ৰদৰ্শনটোৰ আকাৰ সৰু কৰিব পাৰে ।',
 'logempty' => 'কোনো মিল থকা আইটেম লগত নাই ।',
 'log-title-wildcard' => 'এই পাঠেৰে আৰম্ভ হোৱা শিৰোনামাসমূহ অনুসন্ধান কৰক',
+'showhideselectedlogentries' => "নিৰ্বাচিত ল'গ ভুক্তি দেখুৱাওক/লুকুৱাওক",
 
 # Special:AllPages
 'allpages' => 'সকলোবোৰ পৃষ্ঠা',
@@ -1978,10 +1994,12 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'allpagessubmit' => 'যাওক',
 'allpagesprefix' => 'এই উপশব্দৰে আৰম্ভ হোৱা পৃষ্ঠা দেখুৱাওক:',
 'allpagesbadtitle' => 'আপুনি দিয়া পৃষ্ঠাটোৰ শিৰোণামা অবৈধ বা তাত এটা আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি উপসৰ্গ আছে । ইয়াত এক বা ততোধিক বৰ্ণ থাকিব পাৰে যাক শিৰোণামাত ব্যৱহাৰ কৰিব নোৱাৰি ।',
-'allpages-bad-ns' => '{{SITENAME}} ত কোনো "$1" নামস্থান নাই ।',
+'allpages-bad-ns' => '{{SITENAME}}ত কোনো "$1" নামস্থান নাই ।',
 'allpages-hide-redirects' => 'পুনঃনিৰ্দেশ লুকুৱাওক',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "আপুনি এই পৃষ্ঠাৰ আগেয়ে জমা কৰি থোৱা বা কেশ্ব‌ড সংস্কৰণ এটা চাই আছে যিটো $1 পৰ্যন্ত পুৰণা হ'ব পাৰে।",
+'cachedspecial-viewing-cached-ts' => "আপুনি এই পৃষ্ঠাৰ আগেয়ে জমা কৰি থোৱা বা কেশ্ব‌ড সংস্কৰণ এটা চাই আছে যিখন সম্পূৰ্ণভাৱে প্ৰকৃত নহ'বও পাৰে।",
 'cachedspecial-refresh-now' => 'শেহতীয়া পাঠ্য',
 
 # Special:Categories
@@ -1999,7 +2017,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'sp-deletedcontributions-contribs' => 'বৰঙণিসমূহ',
 
 # Special:LinkSearch
-'linksearch' => 'বহিà¦\83সংযোগ অনুসন্ধান',
+'linksearch' => 'বাহà§\8dযিà¦\95 সংযোগ অনুসন্ধান',
 'linksearch-pat' => 'অনুসন্ধান আৰ্হি:',
 'linksearch-ns' => 'নামস্থান:',
 'linksearch-ok' => 'অনুসন্ধান',
@@ -2012,7 +2030,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 # Special:ListUsers
 'listusersfrom' => 'ইয়াৰে আৰম্ভ হোৱা ব্যৱহাৰকাৰী সকল দেখুৱাওক:',
 'listusers-submit' => 'দেখুৱাওক',
-'listusers-noresult' => 'ব্যৱহাৰকাৰী বিচাৰি পোৱা নগল',
+'listusers-noresult' => 'ব্যৱহাৰকাৰী বিচাৰি পোৱা নগল',
 'listusers-blocked' => '(বাৰণ কৰা)',
 
 # Special:ActiveUsers
@@ -2086,7 +2104,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'watchlist' => 'মোৰ লক্ষ্য-তালিকা',
 'mywatchlist' => 'মোৰ লক্ষ্য-তালিকা',
 'watchlistfor2' => '$1 ৰ কাৰণে($2)',
-'nowatchlist' => 'à¦\86পà§\8bনাৰ à¦¨à¦¿à§°à§\80à¦\95à§\8dষণ à¦¤à¦¾à¦²à¦¿à¦\95াত à¦\95à§\8bনà§\8b à¦\86à¦\87à¦\9fà§\87ম নাই ।',
+'nowatchlist' => 'à¦\86পà§\8bনাৰ à¦¨à¦¿à§°à§\80à¦\95à§\8dষণ à¦¤à¦¾à¦²à¦¿à¦\95াত à¦\8fà¦\95à§\8b নাই ।',
 'watchlistanontext' => 'আপোনাৰ লক্ষ্য তালিকাত থকা বস্তুবোৰ চাবলৈ বা সম্পাদনা কৰিবলৈ অনুগ্ৰহ কৰি $1 কৰক।',
 'watchnologin' => 'প্ৰৱেশ কৰা নাই',
 'watchnologintext' => 'নিৰীক্ষণ তালিকা পৰিৱৰ্তন কৰিবলৈ আপুনি আগতে [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
@@ -2144,7 +2162,7 @@ $NEWPAGE
 আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব ।
 আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
 
-আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
+আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
 
 --
 আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ এইখন চাওক
@@ -2309,14 +2327,14 @@ $UNWATCHURL
 'undeleteviewlink' => 'দেখুৱাওক',
 'undeletereset' => 'পূৰ্বৰ অৱস্থালৈ লৈ যাওক',
 'undeleteinvert' => 'নিৰ্বাচন ওলোটা কৰক',
-'undeletecomment' => ' কাৰণ:',
+'undeletecomment' => 'কাৰণ:',
 'undeletedrevisions' => '{{PLURAL:$1|১টা সংশোধন|$1টা সংশোধন}} পুনৰুদ্ধাৰ কৰা হৈছে',
-'undeletedrevisions-files' => '{{PLURAL:$1|১টা সংশোধন|$1 টা সংশোধন}} আৰু {{PLURAL:$2|১টা ফাইল|$2 টা ফাইল}} পুনৰুদ্ধাৰ কৰা হ’ল',
-'undeletedfiles' => '{{PLURAL:$1|১à¦\9fা à¦«à¦¾à¦\87ল|$1 à¦\9fা à¦«à¦¾à¦\87ল}} পুনৰুদ্ধাৰ কৰা হ’ল',
+'undeletedrevisions-files' => '{{PLURAL:$1|১টা সংশোধন|$1 টা সংশোধন}} আৰু {{PLURAL:$2|১ খন নথি|$2 খন নথি}} পুনৰুদ্ধাৰ কৰা হ’ল',
+'undeletedfiles' => '{{PLURAL:$1|১à¦\96ন à¦¨à¦¥à¦¿|$1 à¦\96ন à¦¨à¦¥à¦¿}} পুনৰুদ্ধাৰ কৰা হ’ল',
 'cannotundelete' => 'অৱলুপ্তি বিফল হৈছে;
 আন কোনোবাই আগতেই ইয়াক বিলোপ কৰিছে ।',
 'undeletedpage' => "'''$1ক পুনৰুদ্ধাৰ কৰা হৈছে'''
-à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¶à§\87হতà§\80য়া à¦\85ৱলà§\81পà§\8dতি à¦\86ৰà§\81 à¦ªà§\81নৰà§\81দà§\8dধাৰৰ à¦¬à¦¾à¦¬à§\87 [[Special:Log/delete|à¦\85ৱলà§\81পà§\8dতি à¦²â\80\99à¦\97]] চাওক ।",
+à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¶à§\87হতà§\80য়া à¦\85ৱলà§\81পà§\8dতি à¦\86ৰà§\81 à¦ªà§\81নৰà§\81দà§\8dধাৰৰ à¦¬à¦¾à¦¬à§\87 [[Special:Log/delete|à¦\85ৱলà§\81পà§\8dতি à¦\85ভিলà§\87à¦\96]] চাওক ।",
 'undelete-header' => 'শেহতীয়াকৈ বিলোপ কৰা পৃষ্ঠাসমূহৰ বাবে [[Special:Log/delete|অৱলুপ্তি ল’গ]] চাওক ।',
 'undelete-search-title' => 'বিলোপ কৰা পৃষ্ঠা অনুসন্ধান কৰক',
 'undelete-search-box' => 'বিলোপ কৰা পৃষ্ঠা অনুসন্ধান কৰক',
@@ -2324,8 +2342,8 @@ $UNWATCHURL
 'undelete-search-submit' => 'সন্ধান',
 'undelete-no-results' => 'অৱলুপ্তি আৰ্কাইভত কোনো মিল থকা পৃষ্ঠা পোৱা নগ’ল ।',
 'undelete-filename-mismatch' => '$1 সময়-মোহৰ থকা ফাইল সংশোধনটো বিলোপ কৰিব পৰা নাযাব: ফাইলৰ নাম মিলা নাই',
-'undelete-bad-store-key' => '$1 à¦¸à¦®à¦¯à¦¼à¦\9aিহà§\8dনৰ à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦«à¦¾à¦\87ল à¦¸à¦\82শà§\8bধনà§\80 à¦\98à§\82ৰাà¦\87 à¦\86নিব à¦¨à§\8bৱাৰি: à¦¬à¦¿à¦²à§\8bপ à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87à¦\87 à¦«à¦¾à¦\87লà¦\9fà§\8b নাছিল ।',
-'undelete-cleanup-error' => 'à¦\85বà§\8dযৱহà§\83ত à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦«à¦¾à¦\87ল "$1" বিলোপ কৰাত সমস্যা হৈছে ।',
+'undelete-bad-store-key' => '$1 à¦¸à¦®à¦¯à¦¼à¦\9aিহà§\8dনৰ à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦¨à¦¥à¦¿ à¦¸à¦\82শà§\8bধনà§\80 à¦\98à§\82ৰাà¦\87 à¦\86নিব à¦¨à§\8bৱাৰি: à¦¬à¦¿à¦²à§\8bপ à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87à¦\87 à¦¨à¦¥à¦¿à¦\96ন নাছিল ।',
+'undelete-cleanup-error' => 'à¦\85বà§\8dযৱহà§\83ত à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¨à¦¥à¦¿ "$1" বিলোপ কৰাত সমস্যা হৈছে ।',
 'undelete-missing-filearchive' => 'ফাইল আৰ্কাইভ ID $1 পুনৰুদ্ধাৰ কৰিব পৰা নগ’ল কাৰণ এইটো তথ্যভঁৰালত নাই ।
 এইটো সম্ভৱত: আগতেই পুনৰুদ্ধাৰ কৰা হৈছে ।',
 'undelete-error' => 'পৃষ্ঠা অবিলোপনত ত্ৰুটি হৈছে',
@@ -2333,7 +2351,7 @@ $UNWATCHURL
 'undelete-error-long' => 'ফাইলটোৰ অৱলুপ্তি বাতিল কৰাত কিছু ত্ৰুটি হৈছে:
 
 $1',
-'undelete-show-file-confirm' => 'à¦\86পà§\81নি "<nowiki>$1</nowiki>"  à¦«à¦¾à¦\87লৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ $3 সময়ত চাব বিচাৰিছে নেকি ?',
+'undelete-show-file-confirm' => 'à¦\86পà§\81নি "<nowiki>$1</nowiki>"  à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ $3 সময়ত চাব বিচাৰিছে নেকি ?',
 'undelete-show-file-submit' => 'হয়',
 
 # Namespace form on various pages
@@ -2346,9 +2364,9 @@ $1',
 
 # Contributions
 'contributions' => 'সদস্যৰ বৰঙণিসমূহ',
-'contributions-title' => '$1-ৰ বৰঙণিসমূহ',
+'contributions-title' => '$1ৰ বৰঙণিসমূহ',
 'mycontris' => 'মোৰ বৰঙণিসমূহ',
-'contribsub2' => '$1 ৰ কাৰণে($2)',
+'contribsub2' => '$1 ৰ কাৰণে ($2)',
 'nocontribs' => 'এই গুণসমূহৰ লগত মিল থকা কোনো সালসলনি পোৱা নগ’ল ।',
 'uctop' => '(ওপৰত)',
 'month' => 'এই মাহৰ পৰা (আৰু আগৰ):',
@@ -2364,9 +2382,9 @@ $1',
 'sp-contributions-talk' => 'আলোচনা',
 'sp-contributions-userrights' => 'সদস্যৰ অধিকাৰ ব্যৱস্থাপনা',
 'sp-contributions-blocked-notice' => 'এই সদস্যজনক সদ্যহতে বাৰণ কৰা হৈছে ।
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦²â\80\99à¦\97 ভৰ্তি তলত দিয়া হ’ল:',
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦\85ভিলà§\87à¦\96 ভৰ্তি তলত দিয়া হ’ল:',
 'sp-contributions-blocked-notice-anon' => 'এই আই.পি. ঠিকনা সদ্যহতে বাৰণ কৰা হৈছে ।
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦²â\80\99à¦\97 ভৰ্তি তলত দিয়া হ’ল:',
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦¶à§\87হতà§\80য়া à¦ªà§\8dৰতিবনà§\8dধà¦\95 à¦\85ভিলà§\87à¦\96 ভৰ্তি তলত দিয়া হ’ল:',
 'sp-contributions-search' => 'বৰঙণিসমূহৰ কাৰণে অনুসন্ধান কৰক',
 'sp-contributions-username' => 'আই.পি. ঠিকনা অথবা ব্যৱহাৰকৰ্তাৰ নাম:',
 'sp-contributions-toponly' => 'কেৱল সাম্প্ৰতিক সংস্কৰণৰ অন্তৰ্গত সম্পাদনাসমূহ দেখুৱাওক',
@@ -2374,19 +2392,19 @@ $1',
 
 # What links here
 'whatlinkshere' => 'এই পৃষ্ঠা ব্যৱহাৰ কৰিছে...',
-'whatlinkshere-title' => '"$1"-লৈ সংযোগ কৰা পৃষ্ঠাসমূহ',
+'whatlinkshere-title' => '"$1"লৈ সংযোজিত পৃষ্ঠাসমূহ',
 'whatlinkshere-page' => 'পৃষ্ঠা:',
 'linkshere' => "এই পৃষ্ঠাটো '''[[:$1]]''' ৰ লগত সংযোজিত:",
 'nolinkshere' => "'''[[:$1]]''' ৰ লগত কোনো পৃষ্ঠা সংযোজিত নহয়।",
-'nolinkshere-ns' => 'নিৰ্বাচিত নামস্থানৰ কোনো পৃষ্ঠাৰ পৰা [[:$1]]-লৈ সংযোগ নাই ।',
+'nolinkshere-ns' => 'নিৰ্বাচিত নামস্থানৰ কোনো পৃষ্ঠাৰ পৰা [[:$1]]লৈ সংযোগ নাই ।',
 'isredirect' => 'পুনঃনিৰ্দেশনা পৃষ্ঠা',
 'istemplate' => 'অন্তৰ্ভুক্ত কৰক',
-'isimage' => 'ফাà¦\87ল সংযোগ',
+'isimage' => 'নথিৰ সংযোগ',
 'whatlinkshere-prev' => '{{PLURAL:$1|পিছৰ|পিছৰ $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|আগৰ|আগৰ $1}}',
 'whatlinkshere-links' => '← সংযোগকেইটা',
 'whatlinkshere-hideredirs' => '$1 পুননিৰ্দেশনাসমূহ',
-'whatlinkshere-hidetrans' => '$1 ট্ৰেন্সক্লুস্বন-সমূহ',
+'whatlinkshere-hidetrans' => '$1 ট্ৰেন্সক্লুস্বনসমূহ',
 'whatlinkshere-hidelinks' => '$1 টা সংযোগ',
 'whatlinkshere-hideimages' => '$1 চিত্ৰ সংযোগসমূহ',
 'whatlinkshere-filters' => 'ছেকনী',
@@ -2414,12 +2432,12 @@ $1',
 ** একাধিক একাউণ্টৰ অপব্যৱহাৰ
 ** অগ্ৰহণযোগ্য সদস্যনাম',
 'ipb-hardblock' => 'এই আই.পি. ঠিকনাৰ পৰা প্ৰৱেশ কৰা সদস্যসকলক সম্পাদনা কৰাৰ পৰা ৰোধ কৰক',
-'ipbcreateaccount' => 'একাউণ্ট সৃষ্টি ৰোধ কৰক',
+'ipbcreateaccount' => 'à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦¸à§\83ষà§\8dà¦\9fি à¦\85বৰà§\8bধ à¦\95ৰà¦\95',
 'ipbemailban' => 'ই-মেইল পঠোৱাৰ পৰা সদস্যক বাৰণ কৰক',
 'ipbenableautoblock' => 'এই সদস্যজনে শেহতীয়াকৈ ব্যৱহাৰ কৰা আৰু ভৱিষ্যতে সম্পাদনাৰ বাবে ব্যৱহাৰ কৰা আই.পি. ঠিকনা স্বয়ংক্ৰিয়ভাৱে বাৰণ কৰক',
 'ipbsubmit' => 'এই সদস্যক বাৰণ কৰক',
 'ipbother' => 'অন্য সময়:',
-'ipboptions' => '২ à¦\98ণà§\8dà¦\9fা:2 hours,১ à¦¦à¦¿à¦¨:1 day,৩ à¦¦à¦¿à¦¨:3 days,১ à¦¸à¦ªà§\8dতাহ:1 week,২ à¦¸à¦ªà§\8dতাহ:2 weeks,১ à¦®à¦¾à¦¹:1 month,৩ à¦®à¦¾à¦¹:3 months,৬ à¦®à¦¾à¦¹:6 months,১ à¦¬à¦\9bৰ:1 year,à¦\85নিৰà§\8dদিস্ট কাল:infinite',
+'ipboptions' => '২ à¦\98ণà§\8dà¦\9fা:2 hours,১ à¦¦à¦¿à¦¨:1 day,৩ à¦¦à¦¿à¦¨:3 days,১ à¦¸à¦ªà§\8dতাহ:1 week,২ à¦¸à¦ªà§\8dতাহ:2 weeks,১ à¦®à¦¾à¦¹:1 month,৩ à¦®à¦¾à¦¹:3 months,৬ à¦®à¦¾à¦¹:6 months,১ à¦¬à¦\9bৰ:1 year,à¦\85নিৰà§\8dদিষ্ট কাল:infinite',
 'ipbotheroption' => 'অন্যান্য',
 'ipbotherreason' => 'অন্য/অতিৰিক্ত কাৰণ:',
 'ipbhidename' => 'সম্পাদনা আৰু তালিকা সমূহৰ পৰা সদস্যনাম আঁৰ দিয়ক',
@@ -2434,14 +2452,14 @@ $1',
 'ipb-blockingself' => 'আপুনি নিজকে বাধাপ্ৰদান কৰিব বিচাৰিছে ! আপুনি নিশ্চিতনে আপুনি এনে কৰিব ?',
 'ipb-confirmhideuser' => 'আপুনি "সদস্য গোপন কৰক" বৈশিষ্ট সক্ৰিয় থকা এজন সদস্যক বাৰণ কৰিবলৈ ওলাইছে । এই কাৰ্যই সকলো তালিকা আৰু ল\'গ ভৰ্তিৰ পৰা তেওঁৰ নাম আঁতৰাই পেলাব । এই কাম কৰিব বুলি আপুনি নিশ্চিতনে ?',
 'ipb-edit-dropdown' => 'প্ৰতিবন্ধকৰ কাৰণসমূহ সম্পাদনা কৰক',
-'ipb-unblock-addr' => '$1-পৰা বাৰণ উঠাই লওক',
+'ipb-unblock-addr' => '$1ৰ পৰা বাৰণ উঠাই লওক',
 'ipb-unblock' => 'সদস্যনাম বা আই.পি. ঠিকনাৰ ওপৰত থকা প্ৰতিবন্ধক আঁতৰ কৰক',
 'ipb-blocklist' => 'বৰ্তমানৰ প্ৰতিবন্ধক চাওক',
-'ipb-blocklist-contribs' => '$1-ৰ বৰঙণিসমূহ',
+'ipb-blocklist-contribs' => '$1ৰ বৰঙণিসমূহ',
 'unblockip' => 'সদস্যৰ প্ৰতিবন্ধক উঠাই লওক',
 'unblockiptext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি পূৰ্বে প্ৰতিবন্ধক থকা কোনো আই.পি. ঠিকনা বা সদস্যৰ লিখাৰ অধিকাৰ পুনঃপ্ৰতিষ্ঠা কৰক ।',
 'ipusubmit' => 'এই বাৰণ উঠাই লওক',
-'unblocked' => '[[User:$1|$1]] ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
+'unblocked' => '[[User:$1|$1]]ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
 'unblocked-range' => '$1ৰ প্ৰতিবন্ধক আঁতৰ কৰা হৈছে',
 'unblocked-id' => '$1 প্ৰতিবন্ধকটো আঁতৰ কৰা হৈছে',
 'blocklist' => 'বাৰণ কৰা সদস্য',
@@ -2478,12 +2496,12 @@ $1',
 $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'blocklogpage' => 'বাৰণ সূচী',
 'blocklog-showlog' => 'এই সদস্যজনক পূৰ্বতে অৱৰোধ কৰা হৈছিল ।
-তথà§\8dযসà§\82তà§\8dৰ à¦¹à¦¿à¦\9bাপà§\87 à¦¤à¦²à¦¤ à¦\85ৱৰà§\8bধ à¦²â\80\99à¦\97 দিয়া হ’ল:',
+পà§\8dৰমাণ à¦¸à§\8dবৰà§\82পà§\87 à¦¤à¦²à¦¤ à¦\85ৱৰà§\8bধৰ à¦\85ভিলà§\87à¦\96 দিয়া হ’ল:',
 'blocklog-showsuppresslog' => 'এই সদস্যজনক পূৰ্বতে অৱৰোধ আৰু গোপন কৰা হৈছিল ।
-তথà§\8dযসà§\82তà§\8dৰ à¦¹à¦¿à¦\9bাপà§\87 à¦¨à¦¿à¦¬à¦¾à§°à¦£ à¦²â\80\99à¦\97 তলত দিয়া হ’ল ।',
+পà§\8dৰà§\8dমাণ à¦¸à§\8dবৰà§\82পà§\87 à¦¨à¦¿à¦¬à¦¾à§°à¦£à§° à¦\85ভিলà§\87à¦\96 তলত দিয়া হ’ল ।',
 'blocklogentry' => '"[[$1]]" ক $2 $3 লৈ সাল-সলনি কৰাৰ পৰা বাৰণ কৰা হৈছে।',
 'reblock-logentry' => '[[$1]]ৰ প্ৰতিবন্ধক ছেটিং ম্যাদ উকলা সময় $2 $3ৰ সৈতে সলনি কৰা হ’ল ।',
-'blocklogtext' => 'à¦\8fà¦\87 à¦²â\80\99à¦\97à¦\96ন অৱৰোধ কৰা আৰু অৱৰোধ আঁতৰ কৰা সদস্য সম্পৰ্কীয়।
+'blocklogtext' => 'à¦\8fà¦\87 à¦\85ভিলà§\87à¦\96 অৱৰোধ কৰা আৰু অৱৰোধ আঁতৰ কৰা সদস্য সম্পৰ্কীয়।
 স্বয়ংক্ৰিয়ভাৱে প্ৰতিবন্ধক পোৱা আই.পি. ঠিকনাবোৰ ইয়াত তালিকাভুক্ত কৰা হোৱা নাই।
 সাম্প্ৰতিক কাৰ্যৰত নিষেধ আৰু প্ৰতিবন্ধকৰ বাবে [[Special:BlockList|প্ৰতিবন্ধক তালিকা]] চাওক।',
 'unblocklogentry' => '$1 বাৰণ উঠাই লোৱা হ’ল',
@@ -2496,7 +2514,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'block-log-flags-hiddenname' => 'সদস্যনাম গোপন কৰা হ’ল',
 'range_block_disabled' => 'প্ৰশাসকৰ পৰিসীমা প্ৰতিবন্ধক সৃষ্টি কৰিব পৰা ক্ষমতা নিষ্ক্ৰিয় কৰা হৈছে ।',
 'ipb_expiry_invalid' => 'অবৈধ ম্যাদ উকলা সময়',
-'ipb_expiry_temp' => 'গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হ;ব লাগিব ।',
+'ipb_expiry_temp' => 'গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হব লাগিব ।',
 'ipb_hide_invalid' => 'এই বিষয়বস্তু নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত বহুতো সম্পাদনা আছে ।',
 'ipb_already_blocked' => '"$1"ক ইতিমধ্যে অৱৰোধ কৰা হৈছে',
 'ipb-needreblock' => '$1ক ইতিমধ্যে অৱৰোধ কৰা হৈছে । আপুনি ছেটিং সলাব বিচাৰিছে নেকি ?',
@@ -2513,8 +2531,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'proxyblockreason' => 'আপোনাৰ আই.পি. ঠিকনা অৱৰোধ কৰা হৈছে কাৰণ এইটো এটা মুক্ত প্ৰক্সী ।
 অনুগ্ৰহ কৰি আপোনাৰ ইণ্টাৰনেট সেৱা প্ৰদানকাৰী বা কাৰিকৰী সহায়কৰ্তাৰ লগত যোগাযোগ কৰক আৰু এই গুৰুতৰ সুৰক্ষা সমস্যাৰ বিষয়ে জনাওক ।',
 'proxyblocksuccess' => 'সম্পন্ন কৰা হ’ল ।',
-'sorbsreason' => '{{SITENAME}}à¦\8f ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
-'sorbs_create_account_reason' => '{{SITENAME}}à¦\8f ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
+'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
+'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
 আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
 'cant-block-while-blocked' => 'নিজেই অৱৰোধিত হৈ থকা অৱস্থাত আপুনি আন সদস্যক অৱৰোধ কৰিব নোৱাৰে ।',
 'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
@@ -2557,8 +2575,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 ইয়াৰ অৰ্থ এয়ে যে ভুল হলে পৃষ্ঠাখন আগৰ ঠাইতে থাকিব, আৰু আপুনি প্ৰচলিত পৃষ্ঠা এখনক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-জনপ্ৰিয় পৃষ্ঠা এখনৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হব পাৰে;
-এই কাৰ্য্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
+জনপ্ৰিয় পৃষ্ঠা এখনৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হব পাৰে;
+এই কাৰ্য পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetext-noredirectfixer' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনামা সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামালৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামাটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
 [[Special:DoubleRedirects|দ্বি পুনৰ্নিৰ্দেশনাসমূহ]] বা [[Special:BrokenRedirects|ভঙা পুনৰ্নিৰ্দেশনসমূহ]] পৰীক্ষা কৰিবলৈ নাপাহৰিব।
@@ -2578,32 +2596,32 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'movearticle' => 'পৃষ্ঠা স্থানান্তৰ কৰক:',
 'moveuserpage-warning' => "'''সতৰ্কবাণী:''' আপুনি এখন সদস্যপৃষ্ঠা স্থানান্তৰ কৰিবলৈ বিছাৰিছে । অনুগ্ৰহ কৰি মন কৰক যে কেৱল সদস্যপৃষ্ঠাখনহে স্থানান্তৰ হ’ব আৰু সদস্যজনৰ পুনঃনামাকৰণ নহ’ব ।",
 'movenologin' => 'প্ৰৱেশ কৰা নাই',
-'movenologintext' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনি ভুক্ত সদস্য হৈ [[Special:UserLogin|পৱেশ]] কৰিব লাগিব ।',
+'movenologintext' => 'পà§\83ষà§\8dঠা à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦­à§\81à¦\95à§\8dত à¦¸à¦¦à¦¸à§\8dয à¦¹à§\88 [[Special:UserLogin|পà§\8dৰৱà§\87শ]] à¦\95ৰিব à¦²à¦¾à¦\97িব à¥¤',
 'movenotallowed' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
-'movenotallowedfile' => 'ফাà¦\87ল স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
+'movenotallowedfile' => 'নথিà¦\96ন স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
 'cant-move-user-page' => 'সদস্য পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনাৰ অনুমতি নাই (উপ-পৃষ্ঠাৰ বাহিৰে)।',
 'cant-move-to-user-page' => 'সদস্যপৃষ্ঠালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰাৰ অনুমতি আপোনাৰ নাই (কেৱল সদস্য উপপৃষ্ঠাৰ বাহিৰে ) ।',
 'newtitle' => 'নতুন শিৰোনামালৈ:',
 'move-watch' => 'এই পৃষ্ঠাখন লক্ষ্য কৰক',
 'movepagebtn' => 'পৃষ্ঠাখন স্থানান্তৰ কৰক',
-'pagemovedsub' => 'স্থানান্তৰ সফল হল',
-'movepage-moved' => "'''“$1” ক “$2” লৈ স্থানান্তৰ কৰা হৈছে'''",
+'pagemovedsub' => 'স্থানান্তৰ সফল হল',
+'movepage-moved' => "'''“$1”ক “$2”লৈ স্থানান্তৰ কৰা হৈছে'''",
 'movepage-moved-redirect' => 'এটি পুনৰ্নিদেশনা সৃষ্টি কৰা হৈছে',
 'movepage-moved-noredirect' => 'পুনৰ্নিৰ্দেশনা সৃষ্টি কৰা নিবাৰণ কৰা হৈছে ।',
 'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
 বেলেগ নাম এটা বাছি লওক।',
 'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত ।',
-'talkexists' => "'''পà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\87য়াৰ à¦²à¦\97ত à¦\9cড়িত বাৰ্তা পৃষ্ঠাখন স্থানান্তৰ কৰা নহ'ল, কাৰণ নতুন ঠাইত বাৰ্তা পৃষ্ঠা এখন আগৰ পৰাই আছে।
+'talkexists' => "'''পà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\87য়াৰ à¦²à¦\97ত à¦\9cৰিত বাৰ্তা পৃষ্ঠাখন স্থানান্তৰ কৰা নহ'ল, কাৰণ নতুন ঠাইত বাৰ্তা পৃষ্ঠা এখন আগৰ পৰাই আছে।
 অনুগ্ৰহ কৰি আপুনি নিজৰ হাতেৰে স্থানান্তৰ কৰক ।'''",
-'movedto' => 'লৈ স্থানান্তৰ কৰা হল',
+'movedto' => 'লৈ স্থানান্তৰ কৰা হল',
 'movetalk' => 'সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক',
-'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
+'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
 'movepage-page-exists' => '$1 পৃষ্ঠাখন ইতিমধ্যেই আছে আৰু তাৰ ওপৰত স্বয়ংক্ৰিয়ভাৱে লিখিব নোৱাৰি ।',
-'movepage-page-moved' => "$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা হ'ল ।",
-'movepage-page-unmoved' => '$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
+'movepage-page-moved' => "$1 পৃষ্ঠাখন $2লৈ স্থানান্তৰ কৰা হ'ল।",
+'movepage-page-unmoved' => '$1 পৃষ্ঠাখন $2লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
 'movepage-max-pages' => 'সৰ্বোচ্চ $1 {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} স্থানান্তৰ কৰা হৈছে আৰু ইয়াতকৈ অধিক স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ নহ’ব ।',
-'movelogpage' => 'সà§\8dথানানà§\8dতৰন à¦¸à§\82à¦\9aà§\80',
+'movelogpage' => 'সà§\8dথানানà§\8dতৰন à¦\85ভিলà§\87à¦\96',
 'movelogpagetext' => 'সকলো পৃষ্ঠা স্থানান্তৰৰ এখন তালিকা তলত দিয়া হৈছে ।',
 'movesubpage' => '{{PLURAL:$1|খন উপপৃষ্ঠা|খন উপপৃষ্ঠা}}',
 'movesubpagetext' => 'এই পৃষ্ঠাখনৰ তলত দিয়া {{PLURAL:$1|খন উপপৃষ্ঠা|খন উপপৃষ্ঠা}} আছে ।',
@@ -2630,9 +2648,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'fix-double-redirects' => 'প্ৰাথমিক প্ৰৱন্ধলৈ আঙুলিয়াই দিয়া যিকোনো পুনৰ্নিৰ্দেশ নবীকৰণ কৰক',
 'move-leave-redirect' => 'এটা পুনঃনিৰ্দেশনা এৰি যাওক',
 'protectedpagemovewarning' => "'''সতৰ্কবাণী: এই পৃষ্ঠা সুৰক্ষিত কৰা হৈছে; কেৱল প্ৰশাসকৰৰ মৰ্যদাৰ সদস্যইহে ইয়াক স্থানান্তৰ কৰিব পাৰিব ।'''
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦²'à¦\97 সংৰক্ষণ তলত দিয়া হ’ল:",
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦\85ভিলà§\87à¦\96 সংৰক্ষণ তলত দিয়া হ’ল:",
 'semiprotectedpagemovewarning' => "'''টোকা:''' এই পৃষ্ঠা সুৰক্ষিত কৰা হৈছে; কেৱল পঞ্জীভূত সদস্যইহে ইয়াক স্থানান্তৰ কৰিব পাৰিব ।'''
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦²'à¦\97 সংৰক্ষণ তলত দিয়া হ’ল:",
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰ à¦¬à¦¾à¦¬à§\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦¾à¦®à§\8dপà§\8dৰতিà¦\95 à¦\85ভিলà§\87à¦\96 সংৰক্ষণ তলত দিয়া হ’ল:",
 'move-over-sharedrepo' => "== ফাইলৰ অস্বিত্ব আছে ==
 [[:$1]] এক উমৈহতীয়া ভঁৰালত আছে । এই শিৰোনামালৈ ফাইল স্থানান্তৰ কৰিলে উমৈহতীয়া ফাইলটোৰ লগত ওপৰা-ওপৰি হ'ব ।",
 'file-exists-sharedrepo' => 'নিৰ্বাচিত ফাইল নামটো ইতিমধ্যে এটা উমৈহতীয়া ভঁৰালত ব্যৱহৃত ।
@@ -2651,20 +2669,20 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'exportcuronly' => 'কেৱল সাম্প্ৰতিক সংশোধনটোহে অন্তৰ্ভুক্ত কৰক, সম্পূৰ্ণ ইতিহাস নহয় ।',
 'exportnohistory' => "----
 '''টোকা:''' কৰ্মদক্ষতা-সম্পৰ্কীয় কাৰণত এই প্ৰপত্ৰৰ মাধ্যমেৰে কোনো পৃষ্ঠাৰ সম্পূৰ্ণ ইতিহাস ৰপ্তানি কৰাটো নিষ্ক্ৰিয় কৰা হৈছে।",
-'exportlistauthors' => 'পà§\8dৰতà§\8dযà§\87à¦\95 à¦ªà§\83ষà§\8dঠাৰ à¦\85ৱদানà¦\95াৰà§\80ৰ সম্পূৰ্ণ তালিকা অন্তৰ্ভুক্ত কৰক',
+'exportlistauthors' => 'পà§\8dৰতà§\8dযà§\87à¦\95 à¦ªà§\83ষà§\8dঠাৰ à¦¬à§°à¦\99নিদাতাৰ সম্পূৰ্ণ তালিকা অন্তৰ্ভুক্ত কৰক',
 'export-submit' => 'ৰপ্তানি কৰক',
 'export-addcattext' => 'এই শ্ৰেণীকেইটাৰ পৰা পৃষ্ঠা যোগ কৰক:',
 'export-addcat' => 'যোগ কৰক',
 'export-addnstext' => 'এই নামস্থানৰ পৰা পৃষ্ঠা যোগ কৰক',
 'export-addns' => 'যোগ কৰক',
-'export-download' => 'ফাà¦\87ল à¦¹à¦¿à¦\9aাবে সংৰক্ষণ কৰক',
+'export-download' => 'নথি à§°à§\82পে সংৰক্ষণ কৰক',
 'export-templates' => 'সাঁচসমূহ অন্তৰ্ভুক্ত কৰক',
 'export-pagelinks' => 'এই স্তৰলৈকে পৃষ্ঠা সংযোগ অন্তৰ্ভুক্ত কৰক:',
 
 # Namespace 8 related
 'allmessages' => 'ব্যৱস্থাৰ বতৰা',
 'allmessagesname' => 'নাম',
-'allmessagesdefault' => "ডিফ'ল্ট বাৰ্তা পাঠ্য",
+'allmessagesdefault' => 'সাধাৰণ বাৰ্তা পাঠ্য',
 'allmessagescurrent' => 'বৰ্তমানৰ বাৰ্তাৰ পাঠ',
 'allmessagestext' => 'মিডিয়াৱিকি নামস্থানত থকা প্ৰণালী বাৰ্তাসমূহৰ তালিকা ইয়াত দিয়া হৈছে ।
 যদি আপুনি মিডিয়াৱিকিৰ স্থানীয়কৰণত আগ্ৰহী, তেন্তে অনুগ্ৰহ কৰি [//www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি স্থানীয়কৰণ] আৰু [//translatewiki.net translatewiki.net] চাওক ।',
@@ -2687,30 +2705,30 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'thumbnail-temp-create' => 'অস্থায়ী থাম্বনেইল নথিপত্ৰ সৃষ্টি কৰিবলে অক্ষম',
 'thumbnail-dest-create' => 'থাম্বনেইলক গন্তব্যত সাঁচিবলে অক্ষম',
 'thumbnail_invalid_params' => 'অবৈধ ক্ষুদ্ৰাকৃতি পাৰামিটাৰ',
-'thumbnail_dest_directory' => 'à¦\97নà§\8dতবà§\8dয à¦¡à¦¿à§°à§\87à¦\95à§\8dà¦\9fৰà§\80 সৃষ্টি কৰিব পৰা নগ’ল',
+'thumbnail_dest_directory' => 'à¦\97নà§\8dতবà§\8dয à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া সৃষ্টি কৰিব পৰা নগ’ল',
 'thumbnail_image-type' => 'চিত্ৰৰ ধৰণ সমৰ্থিত নহয় ।',
-'thumbnail_gd-library' => 'à¦\85সমà§\8dপà§\82ৰà§\8dণ GD à¦²à¦¾à¦\87বà§\8dৰà§\87ৰà§\80 à¦¸à¦\82ৰà§\82প: à¦¸à¦¨à§\8dধানহিন ফলন $1',
-'thumbnail_image-missing' => 'ফাà¦\87ল সম্ভৱতঃ নাই: $1',
+'thumbnail_gd-library' => 'à¦\85সমà§\8dপà§\82ৰà§\8dণ GD à¦²à¦¾à¦\87বà§\8dৰà§\87ৰà§\80 à¦¸à¦\82ৰà§\82প: à¦¸à¦¨à§\8dধানহà§\80ন ফলন $1',
+'thumbnail_image-missing' => 'নথিà¦\96ন সম্ভৱতঃ নাই: $1',
 
 # Special:Import
 'import' => 'পৃষ্ঠা আমদানি কৰক',
 'importinterwiki' => 'আন্তঃৱিকি আমদানি',
 'import-interwiki-text' => "আমদানি কৰিবলৈ এটা ৱিকি বা পৃষ্ঠাৰ শিৰোনামা নিৰ্বাচন কৰক ।
 সংশোধনৰ তাৰিখ আৰু সম্পাদকৰ নাম সংৰক্ষণ কৰা হ'ব ।
-সà¦\95লà§\8b à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦\86মদানি [[Special:Log/import|à¦\86মদানি à¦²'à¦\97]]ত লিপিবদ্ধ আছে ।",
+সà¦\95লà§\8b à¦\86নà§\8dতà¦\83ৱিà¦\95ি à¦\86মদানি [[Special:Log/import|à¦\86মদানি à¦\85ভিলà§\87à¦\96]]ত লিপিবদ্ধ আছে ।",
 'import-interwiki-source' => 'উৎস ৱিকি/পৃষ্ঠা:',
-'import-interwiki-history' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\95লà§\8b à¦¸à¦\82শà§\8bধনৰ à¦\87তিহাস à¦\95পà§\80 কৰক',
+'import-interwiki-history' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\95লà§\8b à¦¸à¦\82শà§\8bধনৰ à¦\87তিহাস à¦ªà§\8dৰতিলিপি কৰক',
 'import-interwiki-templates' => 'সকলো সাঁচ অন্তৰ্ভুক্ত কৰক',
 'import-interwiki-submit' => 'আমদানি',
 'import-interwiki-namespace' => 'গন্তব্য নামস্থান:',
-'import-upload-filename' => 'ফাà¦\87লনাম:',
+'import-upload-filename' => 'নথিৰ নাম:',
 'import-comment' => 'মন্তব্য:',
 'importtext' => "অনুগ্ৰহ কৰি [[Special:Export|ৰপ্তানি সুবিধা]] ব্যৱহাৰ কৰি উৎস ৱিকিৰ পৰা ফাইলটো ৰপ্তানি কৰক।
 আপোনাৰ কম্পিউটাৰত সাঁচি ৰাখক আৰু ইয়াত আপল'ড কৰক।",
-'importstart' => 'পৃষ্ঠা আমদানি কৰা হৈছে...',
+'importstart' => 'পৃষ্ঠা আমদানি কৰা হৈ হৈছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'importnopages' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই ।',
-'imported-log-entries' => "$1 {{PLURAL:$1|à¦\9fা à¦²'à¦\97 à¦­à§°à§\8dতি|à¦\9fা à¦²'à¦\97 ভৰ্তি}} আমদানি কৰা হ'ল ।",
+'imported-log-entries' => "$1 {{PLURAL:$1|à¦\9fা à¦\85ভিলà§\87à¦\96 à¦­à§°à§\8dতি|à¦\9fা à¦\85ভিলà§\87à¦\96 ভৰ্তি}} আমদানি কৰা হ'ল ।",
 'importfailed' => 'আমদানি ব্যৰ্থ হৈছে: <nowiki>$1</nowiki>',
 'importunknownsource' => 'অজ্ঞাত আমদানি উৎসৰ প্ৰকাৰ',
 'importcantopen' => "আমদানি ফাইল খুলিব পৰা নগ'ল",
@@ -2719,12 +2737,12 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'importsuccess' => 'আমদানি সমাপ্ত !',
 'importhistoryconflict' => "পৰস্পৰবিৰোধী ইতিহাস সংশোধনী আছে (এই পৃষ্ঠা আগতেও আমদানি কৰা হ'ব পাৰে)",
 'importnosources' => "কোনো আন্তঃৱিকি আমদানি উৎসৰ সংজ্ঞা দিয়া হোৱা নাই আৰু প্ৰত্যক্ষ ইতিহাস আপল'ড নিষ্ক্ৰিয় কৰা হৈছে ।",
-'importnofile' => "à¦\95à§\8bনà§\8b à¦\86মদানি à¦«à¦¾à¦\87ল আপল'ড কৰা হোৱা নাই ।",
-'importuploaderrorsize' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
-à¦\85নà§\81মà§\8bদিত à¦\86পল'ড à¦«à¦¾à¦\87লতà¦\95à§\88 à¦\8fà¦\87 à¦«à¦¾à¦\87লৰ আকাৰ ডাঙৰ ।",
-'importuploaderrorpartial' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
-ফাà¦\87লà¦\9fà§\8b কেৱল আংশিকভাৱে আপল'ড কৰা হৈছে ।",
-'importuploaderrortemp' => "à¦\86মদানি à¦«à¦¾à¦\87লৰ à¦\86পল'ড à¦¬à§\8dযৰà§\8dথ হৈছে ।
+'importnofile' => "à¦\95à§\8bনà§\8b à¦\86মদানি à¦¨à¦¥à¦¿ আপল'ড কৰা হোৱা নাই ।",
+'importuploaderrorsize' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦\85সফল হৈছে ।
+à¦\85নà§\81মà§\8bদিত à¦\86পল'ড à¦¨à¦¥à¦¿à¦¤à¦\95à§\88 à¦\8fà¦\87 à¦¨à¦¥à¦¿ৰ আকাৰ ডাঙৰ ।",
+'importuploaderrorpartial' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦\85সফল হৈছে ।
+নথিà¦\96ন কেৱল আংশিকভাৱে আপল'ড কৰা হৈছে ।",
+'importuploaderrortemp' => "à¦\86মদানি à¦¨à¦¥à¦¿à§° à¦\86পল'ড à¦¬à¦¿à¦«à¦² হৈছে ।
 এটা অস্থায়ী ফ'ল্ডাৰ হেৰাইছে ।",
 'import-parse-failure' => 'XML আমদানি পাৰ্চ বিফলতা',
 'import-noarticle' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই !',
@@ -2741,9 +2759,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'import-error-invalid' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো অবৈধ।',
 
 # Import log
-'importlogpage' => "আমদানি ল'গ",
+'importlogpage' => 'আমদানিৰ অভিলেখ',
 'importlogpagetext' => 'আন ৱিকিৰ পৰা সম্পাদনা ইতিহাস সহ প্ৰশাসনীয় পৃষ্ঠা আমদানি ।',
-'import-logentry-upload' => "ফাà¦\87ল আপল'ডৰ মাধ্যমেৰে [[$1]] আমদানি কৰা হ'ল",
+'import-logentry-upload' => "নথি আপল'ডৰ মাধ্যমেৰে [[$1]] আমদানি কৰা হ'ল",
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'import-logentry-interwiki' => 'আন্তঃৱিকি-স্থানান্তৰিত $1',
 'import-logentry-interwiki-detail' => '$2ৱে কৰা $1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
@@ -2767,16 +2785,16 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-pt-preferences' => 'আপোনাৰ পছন্দসমূহ',
 'tooltip-pt-watchlist' => 'আপুনি সালসলনিৰ গতিবিধি লক্ষ্য কৰি থকা পৃষ্ঠাসমূহৰ সুচী',
 'tooltip-pt-mycontris' => 'আপোনাৰ বৰঙণিৰ তালিকা',
-'tooltip-pt-login' => "বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹'লà§\87à¦\93 à¦²à¦\97-à¦\87ন কৰাটো বাঞ্চনীয়",
-'tooltip-pt-anonlogin' => 'বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹â\80\99লà§\87à¦\93 à¦²à¦\97-à¦\87ন কৰাটো বাঞ্চনীয়',
+'tooltip-pt-login' => "বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹'লà§\87à¦\93 à¦ªà§\8dৰৱà§\87শ কৰাটো বাঞ্চনীয়",
+'tooltip-pt-anonlogin' => 'বাধà§\8dযতামà§\82লà¦\95 à¦¨à¦¹â\80\99লà§\87à¦\93 à¦ªà§\8dৰৱà§\87শ কৰাটো বাঞ্চনীয়',
 'tooltip-pt-logout' => 'প্ৰস্থান',
 'tooltip-ca-talk' => 'সংশ্লিষ্ট প্ৰবন্ধ সম্পৰ্কীয় আলোচনা',
 'tooltip-ca-edit' => 'আপুনি এই পৃষ্ঠাটো সালসলনি কৰিব পাৰে, অনুগ্ৰহ কৰি সালসলনি সাচী থোৱাৰ আগতে খচৰা চাই লব',
 'tooltip-ca-addsection' => 'নতুন অনুচ্ছেদ আৰম্ভ কৰক',
-'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦\82ৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
+'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\81ৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
 'tooltip-ca-history' => 'এই পৃষ্ঠাৰ যোৱা সংস্কৰণসমূহ',
 'tooltip-ca-protect' => 'এই পৃষ্ঠাখন সুৰক্ষিত কৰক',
-'tooltip-ca-unprotect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82ৰà¦\95à§\8dষণ সলনি কৰক',
+'tooltip-ca-unprotect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à§\81ৰà¦\95à§\8dষা সলনি কৰক',
 'tooltip-ca-delete' => 'এই পৃষ্ঠাখন বিলোপ কৰক',
 'tooltip-ca-undelete' => 'বিলোপ কৰাৰ আগেয়ে কৰা পৃষ্ঠাখনৰ সালসলনিসমূহ পুনঃসংস্থাপন কৰক',
 'tooltip-ca-move' => 'এই পৃষ্ঠাখন স্থানান্তৰিত কৰক',
@@ -2795,8 +2813,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-n-help' => 'সহায়ৰ বাবে ইয়াত ক্লিক কৰক',
 'tooltip-t-whatlinkshere' => 'ইয়ালৈ সংযোজিত সকলো পৃষ্ঠাৰ সুচী',
 'tooltip-t-recentchangeslinked' => 'সংযুক্ত পৃষ্ঠাসমূহৰ শেহতীয়া সালসলনিসমূহ',
-'tooltip-feed-rss' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰ-à¦\8fà¦\9a-à¦\8fà¦\9a à¦«à¦¿à¦¡',
-'tooltip-feed-atom' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\8fà¦\9fম à¦«à¦¿à¦¡',
+'tooltip-feed-rss' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰ-à¦\8fà¦\9a-à¦\8fà¦\9a à¦­à§\81à¦\95à§\8dতি',
+'tooltip-feed-atom' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¬à¦¾à¦¬à§\87 à¦\8fà¦\9fম à¦­à§\81à¦\95à§\8dতি',
 'tooltip-t-contributions' => 'এই সদস্যজনৰ অৰিহনাসমূহৰ সূচী চাওক',
 'tooltip-t-emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠাওক',
 'tooltip-t-upload' => "ফাইল আপল'ডৰ বাবে",
@@ -2808,9 +2826,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-ca-nstab-media' => 'মিডিয়া পৃষ্ঠাখন চাওক',
 'tooltip-ca-nstab-special' => 'এইখন এখন বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
-'tooltip-ca-nstab-image' => 'ফাà¦\87ল পৃষ্ঠা চাওক',
+'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-mediawiki' => 'প্ৰণালী বাৰ্তা চাওক',
-'tooltip-ca-nstab-template' => 'সাঁচ চাওক',
+'tooltip-ca-nstab-template' => 'সাঁচটো চাওক',
 'tooltip-ca-nstab-help' => 'সহায় পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-category' => 'শ্ৰেণী পৃষ্ঠা চাওক',
 'tooltip-minoredit' => 'ইয়াক অগুৰুত্বপূৰ্ণ সম্পাদনা ৰূপে চিহ্নিত কৰক।',
@@ -2823,7 +2841,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'tooltip-watchlistedit-raw-submit' => 'লক্ষ্য-তালিকা আপডেট কৰক',
 'tooltip-recreate' => 'বিলোপ কৰা সত্বেও পৃষ্ঠাখন পুনৰ সৃষ্টি কৰক',
 'tooltip-upload' => "আপল'ড আৰম্ভ কৰক",
-'tooltip-rollback' => '"ৰ\'লবà§\87à¦\95"à¦\8f এটা ক্লিকত এই পৃষ্ঠাৰ শেষ অৱদানকাৰীৰ সম্পাদনা বাতিল কৰি ইয়াক পূৰ্বাৱস্থালৈ ঘূৰাই নিব।',
+'tooltip-rollback' => '"পà§\82ৰà§\8dববত" à¦\95ৰিলà§\87 এটা ক্লিকত এই পৃষ্ঠাৰ শেষ অৱদানকাৰীৰ সম্পাদনা বাতিল কৰি ইয়াক পূৰ্বাৱস্থালৈ ঘূৰাই নিব।',
 'tooltip-undo' => '"বাতিল"এ এই সম্পাদনাক পূৰ্বাৱস্থালৈ ঘূৰাই নিব আৰু প্ৰাক্‌দৰ্শনৰ বাবে সম্পাদনাটো খুলিব। ই সম্পাদনা সাৰাংশত কাৰণ এটা লিখিবলৈ সুযোগ দিব।',
 'tooltip-preferences-save' => 'পছন্দসমূহ সাঁচি থওক',
 'tooltip-summary' => 'চমু সাৰাংশ লিখক',
@@ -2836,7 +2854,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'siteuser' => '{{SITENAME}} সদস্য $1',
 'anonuser' => '{{SITENAME}} বেনামী সদস্য $1',
 'lastmodifiedatby' => 'এই পৃষ্ঠাখন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত $3ৰ দ্বাৰা সলনি কৰা হৈছিল',
-'othercontribs' => '$1 ৰ কাৰ্য্যৰ উপৰত ভিত্তি কৰি',
+'othercontribs' => '$1ৰ কাৰ্যৰ ওপৰত ভিত্তি কৰি',
 'others' => 'অন্যান্য',
 'siteusers' => '{{SITENAME}} {{PLURAL:$2|সদস্য|সদস্যসমূহ}} $1',
 'anonusers' => '{{SITENAME}} বেনামী {{PLURAL:$2|সদস্য|সদস্যসকল}} $1',
@@ -2848,9 +2866,10 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'spamprotectiontext' => 'আপুনি সাঁচিব বিচৰা পাঠখিনিক স্পাম ছেকনীৰ দ্বাৰা বাধা প্ৰদান কৰা হৈছে ।
 সম্ভৱতঃ কোনো ব্লেকলিষ্টেড হোৱা বাহ্যিক সংযোগৰ কাৰণে এনে ঘটিছে ।',
 'spamprotectionmatch' => 'নিম্নলিখিত লিখনীৰ বাবে আমাৰ স্পাম পৰিস্ৰাৱক আৰম্ভ হৈছে: $1',
-'spambot_username' => 'মিডিয়াৱিকি স্পাম পৰিষ্কাৰ কাৰ্য্য',
-'spam_reverting' => '$1 -লে সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতি যোৱা',
-'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1 -লে সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
+'spambot_username' => 'মিডিয়াৱিকি স্পাম পৰিষ্কাৰ কাৰ্য',
+'spam_reverting' => '$1লৈ সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতাই নিয়া হৈছে',
+'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1লৈ সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
+'spam_deleting' => 'সকলো পুনৰীক্ষণৰ $1লৈ সংযোগ আছিল, বিলোপ কৰা হৈছে',
 
 # Info page
 'pageinfo-title' => '"$1" ৰ তথ্য',
@@ -2874,23 +2893,23 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'rcpatroldisabledtext' => 'শেহতীয়া সালসলনিৰ নিৰীক্ষণ কাৰ্য বৰ্তমান নিষ্ক্ৰিয় হৈ আছে ।',
 'markedaspatrollederror' => 'নিৰীক্ষিত বুলি চিহ্নিত কৰিব নোৱাৰি',
 'markedaspatrollederrortext' => 'নিৰীক্ষণ কৰা বুলি চিহ্নিত কৰিবলৈ আপুনি এটা পুনৰীক্ষণ ধাৰ্য্য কৰিব লাগিব।',
-'markedaspatrollederror-noautopatrol' => 'à¦\86পà§\8bনাà¦\95 à¦¨à¦¿à¦\9cৰ à¦ªà§°à¦¿à§±à§°à§\8dতনসমà§\82হ à¦¨à§\80ৰিক্ষিত বুলি চিহ্নিত কৰাৰ অনুমতি নাই।',
+'markedaspatrollederror-noautopatrol' => 'à¦\86পà§\8bনাà¦\95 à¦¨à¦¿à¦\9cৰ à¦ªà§°à¦¿à§±à§°à§\8dতনসমà§\82হ à¦¨à¦¿ৰিক্ষিত বুলি চিহ্নিত কৰাৰ অনুমতি নাই।',
 
 # Patrol log
-'patrol-log-page' => "নিৰীক্ষণ ল'গ",
-'patrol-log-header' => "এইখন নিৰীক্ষিত সংশোধনসমূহৰ ল'গ ।",
-'log-show-hide-patrol' => "নিৰীক্ষণ ল'গ $1",
+'patrol-log-page' => 'নিৰীক্ষণ অভিলেখ',
+'patrol-log-header' => 'এইখন নিৰীক্ষিত সংশোধনসমূহৰ অভিলেখ ।',
+'log-show-hide-patrol' => 'নিৰীক্ষণ অভিলেখ $1',
 
 # Image deletion
 'deletedrevision' => 'পুৰণি সংশোধনী $1 বিলোপ কৰা হ’ল',
-'filedeleteerror-short' => 'ফাà¦\87ল বিলোপ কৰাত ত্ৰুটি: $1',
-'filedeleteerror-long' => 'à¦\8fà¦\87 à¦«à¦¾à¦\87লà¦\9fà§\8b বিলোপ কৰাত সমস্যা হৈছে :
+'filedeleteerror-short' => 'নথি বিলোপ কৰাত ত্ৰুটি: $1',
+'filedeleteerror-long' => 'à¦\8fà¦\87 à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰাত সমস্যা হৈছে :
 
 $1',
-'filedelete-missing' => '"$1" à¦«à¦¾à¦\87লà¦\9fà§\8b বিলোপ কৰিব পৰা নাযাব, কিয়নো ইয়াৰ কোনো অস্তিত্ব নাই ।',
+'filedelete-missing' => '"$1" à¦¨à¦¥à¦¿à¦\96ন বিলোপ কৰিব পৰা নাযাব, কিয়নো ইয়াৰ কোনো অস্তিত্ব নাই ।',
 'filedelete-old-unregistered' => 'নিৰ্ধাৰিত ফাইল সংশোধন "$1" তথ্যকোষত নাই ।',
-'filedelete-current-unregistered' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87ল "$1" তথ্যকোষত নাই ।',
-'filedelete-archive-read-only' => 'à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¡à¦¾à¦\87ৰà§\87à¦\95à¦\9fৰি "$1" ৱেবচাৰ্ভাৰ দ্বাৰা লিখিব নোৱাৰি।',
+'filedelete-current-unregistered' => 'নিৰà§\8dধাৰিত à¦¨à¦¥à¦¿ "$1" তথ্যকোষত নাই ।',
+'filedelete-archive-read-only' => 'à¦\86ৰà§\8dà¦\95াà¦\87ভ à¦¨à¦¿à§°à§\8dদà§\87শিà¦\95া "$1"ত ৱেবচাৰ্ভাৰ দ্বাৰা লিখিব নোৱাৰি।',
 
 # Browsing diffs
 'previousdiff' => 'প্ৰবীণ সম্পাদনা',
@@ -2907,9 +2926,9 @@ $1',
 'file-info-size-pages' => '$1 × $2 পিক্সেলসমূহ, নথিপত্ৰৰ আকাৰ: $3, MIME ধৰণ: $4, $5 {{PLURAL:$5|page|pages}}',
 'file-nohires' => 'ইয়াতকৈ ডাঙৰকৈ দেখুৱাব নোৱাৰি ।',
 'svg-long-desc' => 'SVG ফাইল, সাধাৰণতঃ $1 × $2 পিক্সেল, ফাইল মাত্ৰা: $3',
-'show-big-image' => 'সম্পূৰ্ণ দৃশ্য',
+'show-big-image' => "সম্পূৰ্ণ ৰিজ'লিউশ্যন",
 'show-big-image-preview' => 'এই খচৰাৰ আকাৰ: $1.',
-'show-big-image-other' => 'আন {{PLURAL:$2|ৰিজলিউচন|ৰিজলিউচনসমূহ}}: $1।',
+'show-big-image-other' => "আন {{PLURAL:$2|ৰিজ'লিউশ্যন|ৰিজ'লিউশ্যনসমূহ}}: $1।",
 'show-big-image-size' => '$1 × $2 পিক্সেল',
 'file-info-gif-looped' => 'লুপকৃত',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|ফ্ৰেম|ফ্ৰেম}}',
@@ -2922,7 +2941,7 @@ $1',
 'imagelisttext' => "তলত '''$1''' {{PLURAL:$1|file|files}} সজোঁৱা $2 -ৰ এটা তালিকা দিয়া আছে।",
 'newimages-summary' => "এই বিশেষ পৃষ্ঠাখনত সৰ্বশেষত আপল'ড কৰা ফাইলসমূহ দেখিব ।",
 'newimages-legend' => 'ছেকনী',
-'newimages-label' => 'ফাà¦\87লনাম (বা তাৰ এটা অংশ)',
+'newimages-label' => 'নথিৰ নাম (বা তাৰ এটা অংশ)',
 'showhidebots' => '(বট $1)',
 'noimages' => 'চাবলৈ একো নাই ।',
 'ilsubmit' => 'সন্ধান কৰক',
@@ -2946,7 +2965,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 # Metadata
 'metadata' => 'মেটাডেটা',
 'metadata-help' => 'এই ফাইলত অতিৰিক্ত খবৰ আছে, হয়তো ডিজিটেল কেমেৰা বা স্কেনাৰ ব্যৱহাৰ কৰি সৃষ্টি বা পৰিৱৰ্তন কৰা হৈছে ।
-এই ফাইলটো আচলৰ পৰা পৰিৱৰ্তন  কৰা হৈছে, সেয়েহে পৰিৱৰ্তিত ফাইলটোৰ সৈতে নিমিলিব পাৰে ।',
+এই ফাইলটো আচলৰ পৰা পৰিৱৰ্তন কৰা হৈছে, সেয়েহে পৰিৱৰ্তিত ফাইলটোৰ সৈতে নিমিলিব পাৰে ।',
 'metadata-expand' => 'বহলাই ইয়াৰ বিষয়ে জনাওক',
 'metadata-collapse' => 'বিষয় বৰ্ণনা নেদেখুৱাবলৈ',
 'metadata-fields' => 'এই সূচীত থকা বিষয়বোৰ চিত্ৰৰ পৃষ্ঠাৰ তলত দেখা যাব ।
@@ -2966,28 +2985,28 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 * gpsaltitude',
 
 # EXIF tags
-'exif-imagewidth' => 'বহল',
+'exif-imagewidth' => 'পà§\8dৰসà§\8dথ',
 'exif-imagelength' => 'উচ্চতা',
 'exif-bitspersample' => 'প্ৰতি অংশৰ বিট',
 'exif-compression' => 'সংকোচন আঁচনি',
 'exif-photometricinterpretation' => 'পিক্সেল গঠন',
 'exif-orientation' => 'দিশবিন্যাস',
 'exif-samplesperpixel' => 'উপাদানৰ সংখ্যা',
-'exif-planarconfiguration' => 'ডà§\87à¦\9fা বিন্যাস',
-'exif-ycbcrsubsampling' => 'Y to C -ৰ হাৰৰ উপনমুনা',
+'exif-planarconfiguration' => 'তথà§\8dয বিন্যাস',
+'exif-ycbcrsubsampling' => 'Y to Cৰ হাৰৰ উপনমুনা',
 'exif-ycbcrpositioning' => 'Y আৰু C অৱস্থান',
-'exif-xresolution' => 'আনুভূমিক ৰিজলিউচন',
-'exif-yresolution' => "উলম্ব ৰিজ'লিউচন",
+'exif-xresolution' => "আনুভূমিক ৰিজ'লিউশ্যন",
+'exif-yresolution' => "উলম্বিক ৰিজ'লিউশ্যন",
 'exif-stripoffsets' => 'ছবিৰ ডেটা অৱস্থান',
 'exif-rowsperstrip' => 'প্ৰতি ষ্ট্ৰিপত শাৰীসমূহৰ সংখ্যা',
 'exif-stripbytecounts' => 'প্ৰতি সংকোচিত স্ট্ৰিপ বাইটসমূহ',
-'exif-jpeginterchangeformat' => 'JPEG SOI -লে অফচেট',
+'exif-jpeginterchangeformat' => 'JPEG SOI’লৈ অফচেট',
 'exif-jpeginterchangeformatlength' => 'JPEG তথ্যৰ বাইটসমূহ',
 'exif-whitepoint' => 'বগা বিন্দুৰ বৰ্ণ',
 'exif-primarychromaticities' => 'প্ৰাথমিকতাৰ বৰ্ণসমূহ',
 'exif-ycbcrcoefficients' => 'ৰঙ স্থান পৰিৱৰ্তন সাঁচৰ গুণকসমূহ',
 'exif-referenceblackwhite' => 'কলা আৰু বগা প্ৰসংগ মানসমূহৰ যোৰ',
-'exif-datetime' => 'ফাà¦\87ল সলনিৰ তাৰিখ আৰু সময়',
+'exif-datetime' => 'নথিৰ সলনিৰ তাৰিখ আৰু সময়',
 'exif-imagedescription' => 'চিত্ৰ শিৰোনামা',
 'exif-make' => 'কেমেৰা নিৰ্মাতা',
 'exif-model' => 'কেমেৰা মডেল',
@@ -3014,7 +3033,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-exposureprogram' => 'উন্মুক্ত প্ৰগ্ৰাম',
 'exif-spectralsensitivity' => 'বৰ্ণালীৰ সংবেদ্যতা',
 'exif-isospeedratings' => 'ISO গতিৰ হাৰ',
-'exif-shutterspeedvalue' => 'APEX à¦াটাৰ গতি',
+'exif-shutterspeedvalue' => 'APEX à¦\9aাটাৰ গতি',
 'exif-aperturevalue' => 'APEX বিন্ধা',
 'exif-brightnessvalue' => 'APEX উজ্জ্বলতা',
 'exif-exposurebiasvalue' => 'APEX উন্মুক্ত পক্ষপাত',
@@ -3026,9 +3045,9 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-focallength' => "লেন্‌ছৰ ফ'কেল দৈৰ্ঘ্য",
 'exif-subjectarea' => 'বিষয়বস্তুৰ ক্ষেত্ৰফল',
 'exif-flashenergy' => 'ফ্লেছ শক্তি',
-'exif-focalplanexresolution' => 'X à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cà§\8bলà§\8bà¦\9aন',
-'exif-focalplaneyresolution' => 'Y à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cà§\8bলà§\8bà¦\9aন',
-'exif-focalplaneresolutionunit' => "ফ'কেল তল ৰিজ'লিউচন একক",
+'exif-focalplanexresolution' => 'X à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cলিà¦\89শà§\8dযন',
+'exif-focalplaneyresolution' => 'Y à¦«à§\8bà¦\95াà¦\9a à¦¤à¦²à§° à§°à¦¿à¦\9cলিà¦\89শà§\8dযন',
+'exif-focalplaneresolutionunit' => "ফ'কেল তল ৰিজলিউশ্যন একক",
 'exif-subjectlocation' => 'বিষয়বস্তুৰ স্থান',
 'exif-exposureindex' => 'উন্মুক্ত সূচী',
 'exif-sensingmethod' => 'সংবেদ পদ্ধতি',
@@ -3083,7 +3102,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-worldregioncreated' => "বিশ্বৰ অঞ্চল য'ত ছবিখন তোলা হৈছিল",
 'exif-countrycreated' => 'যি দেশত চিত্ৰখন গ্ৰহণ কৰা হৈছে',
 'exif-countrycodecreated' => "দেশৰ ক'ড য'ত ছবিখন তোলা হৈছিল",
-'exif-provinceorstatecreated' => "পà§\8dৰদà§\87শ à¦\85থবা à§°à¦¾à¦\9cà§\8dয à¦¯'ত à¦\9bবিà¦\9fà§\8b তোলা হৈছিল",
+'exif-provinceorstatecreated' => "পà§\8dৰদà§\87শ à¦\85থবা à§°à¦¾à¦\9cà§\8dয à¦¯'ত à¦\9bবিà¦\96ন তোলা হৈছিল",
 'exif-citycreated' => 'যি চহৰত চিত্ৰখন গ্ৰহণ কৰা হৈছে',
 'exif-sublocationcreated' => "নগৰৰ উপঅৱস্থান য'ত ছবিখন তোলা হৈছিল",
 'exif-worldregiondest' => 'বিশ্বৰ অঞ্চল দেখুওৱা হল',
@@ -3106,7 +3125,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-contact' => 'যোগাযোগৰ তথ্য',
 'exif-writer' => 'লেখক',
 'exif-languagecode' => 'ভাষা',
-'exif-iimversion' => 'IIM à¦¸à¦\82স্কৰণ',
+'exif-iimversion' => 'IIM à¦¸à¦\82ষ্কৰণ',
 'exif-iimcategory' => 'শ্ৰেণী',
 'exif-iimsupplementalcategory' => 'পৰিপূৰ্ণ বিভাগসমূহ',
 'exif-datetimeexpires' => 'পিছত ব্যৱহাৰ নকৰিব',
@@ -3119,33 +3138,33 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-label' => 'লেবেল',
 'exif-datetimemetadata' => 'মেটাডেটাৰ শেষ পৰিৱৰ্তনৰ তাৰিখ',
 'exif-nickname' => 'ছবিৰ খচৰা নাম',
-'exif-rating' => 'ৰà§\87à¦\9fিà¦\82 (out of 5)',
+'exif-rating' => 'মানাà¦\82à¦\95 (৫ৰ à¦­à¦¿à¦¤à§°à¦¤)',
 'exif-rightscertificate' => 'অধিকাৰিত্ব ব্যৱস্থাপনাৰ প্ৰমাণপত্ৰ',
 'exif-copyrighted' => 'স্বত্বাধিকাৰ স্থিতি',
 'exif-copyrightowner' => 'স্বত্বাধিকাৰী',
 'exif-usageterms' => 'ব্যৱহাৰ কৰাৰ চৰ্ত্ত',
-'exif-webstatement' => 'à¦\85নলাà¦\87ন à¦¸à§\8dবতà§\8dবাধিà¦\95াৰ à¦¬à§\8dযà¦\95à§\8dতবà§\8dয',
+'exif-webstatement' => 'অনলাইন স্বত্বাধিকাৰ বক্তব্য',
 'exif-originaldocumentid' => 'মূল ডকুমেণ্টৰ অদ্বিতীয় আই.ডি.',
 'exif-licenseurl' => 'কপিৰাইট অনুজ্ঞাপত্ৰৰ বাবে URL',
 'exif-morepermissionsurl' => 'অতিৰিক্ত অনুজ্ঞাপত্ৰৰ তথ্য',
 'exif-attributionurl' => 'এই কাৰ্যৰ পুনৰ ব্যৱহাৰ কৰিলে অনুগ্ৰহ এই লিংকটো যোগ কৰক',
 'exif-preferredattributionname' => 'এই কাম পুনৰ-ব্যৱহাৰ কৰোতে, অনুগ্ৰহ কৰি কৃতিত্ব দিব',
 'exif-pngfilecomment' => 'পি.এন.জি. ফাইল মন্তব্য',
-'exif-disclaimer' => 'দাবà§\80তà§\8dযাà¦\97',
+'exif-disclaimer' => 'দায়লà§\81পà§\8dতি',
 'exif-contentwarning' => 'বিষয়বস্তু সতৰ্কবাণী',
 'exif-giffilecomment' => 'জি.আই.এফ. ফাইল মন্তব্য',
 'exif-intellectualgenre' => 'আইটেমৰ প্ৰকাৰ',
 'exif-subjectnewscode' => 'বিষয় ক’ড',
 'exif-scenecode' => "IPTC দৃশ্য ক'ড",
 'exif-event' => 'ঘটনা বৰ্ণিত',
-'exif-organisationinimage' => 'সà¦\82à¦\98ঠন বৰ্ণিত',
+'exif-organisationinimage' => 'সà¦\82à¦\97ঠন বৰ্ণিত',
 'exif-personinimage' => 'ব্যক্তি বর্ণিত',
 'exif-originalimageheight' => "ক্ৰ'প কৰাৰ আগত ছবিৰ উচ্চতা",
 'exif-originalimagewidth' => "ক্ৰ'প কৰাৰ আগত ছবিৰ প্ৰস্থতা",
 
 # EXIF attributes
 'exif-compression-1' => 'অসংকুচিত',
-'exif-compression-2' => "CCITT দল ৩ ১-পৰিসৰ পৰিৱৰ্তীত Huffman চলন দৈৰ্ঘ এনক'ডিং",
+'exif-compression-2' => "CCITT দল ৩ ১-পৰিসৰ পৰিৱৰ্তীত Huffman চলন দৈৰ্ঘ্য এনক'ডিং",
 'exif-compression-3' => "CCITT দল ৩ ফেক্স এনক'ডিং",
 'exif-compression-4' => "CCITT দল ৪ ফেক্স এনক'ডিং",
 
@@ -3166,7 +3185,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-planarconfiguration-1' => 'খণ্ড বিন্যাস',
 'exif-planarconfiguration-2' => 'সমতলীয় বিন্যাস',
 
-'exif-colorspace-65535' => 'মানাংকন নহোৱা',
+'exif-colorspace-65535' => 'মানাà¦\82à¦\95ন à¦¨à§\8bহà§\8bৱা',
 
 'exif-componentsconfiguration-0' => 'অস্তিত্ব নাই',
 
@@ -3175,10 +3194,10 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-exposureprogram-2' => 'সাধাৰণ প্ৰ’গ্ৰেম',
 'exif-exposureprogram-3' => 'বিন্ধাৰ প্ৰাথমিকতা',
 'exif-exposureprogram-4' => 'শ্বাটাৰ প্ৰাথমিকতা',
-'exif-exposureprogram-5' => 'সà§\83ষà§\8dà¦\9fিমà§\82লà¦\95 à¦ªà§\8dৰà¦\97à§\8dৰাম (à¦\95à§\8dষà§\87তà§\8dৰৰ à¦\97ভà§\80ৰতাৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতি)',
-'exif-exposureprogram-6' => "à¦\95াৰà§\8dযà§\8dযত à¦ªà§\8dৰ'à¦\97à§\8dৰাম (দà§\8dৰà§\81ত à¦¶à§\8dবাà¦\9fাৰ à¦\97তিৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতি)",
-'exif-exposureprogram-7' => 'পà§\8dৰতিà¦\95à§\83তি à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aৰ à¦¬à¦¾à¦¹à¦¿à§° à¦¥à¦\95াà¦\95à§\87 à¦\95à§\8dলà§\8cà¦\9cà¦\86প à¦«à¦\9fà§\8bসমূহ)',
-'exif-exposureprogram-8' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aত à¦¥à¦\95াà¦\95à§\88 à¦²à§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প à¦«à¦\9fà§\8bসমূহৰ বাবে)',
+'exif-exposureprogram-5' => 'সà§\83ষà§\8dà¦\9fিমà§\82লà¦\95 à¦ªà§\8dৰà¦\97à§\8dৰাম (à¦\95à§\8dষà§\87তà§\8dৰৰ à¦\97ভà§\80ৰতাৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতবিশিষà§\8dà¦\9f)',
+'exif-exposureprogram-6' => "à¦\95াৰà§\8dযà§\8dযত à¦ªà§\8dৰ'à¦\97à§\8dৰাম (দà§\8dৰà§\81ত à¦¶à§\8dবাà¦\9fাৰ à¦\97তিৰ à¦ªà§\8dৰতি à¦ªà¦\95à§\8dষপাতবিশিষà§\8dà¦\9f)",
+'exif-exposureprogram-7' => 'পà§\8dৰতিà¦\95à§\83তি à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aৰ à¦¬à¦¾à¦¹à¦¿à§° à¦¥à¦\95াà¦\95à§\87 à¦\95à§\8dলà¦\9cà¦\86প à¦\9aিতà§\8dৰসমূহ)',
+'exif-exposureprogram-8' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87প à¦\85ৱসà§\8dথা (পà¦\9fভà§\82মি à¦«à¦\95াà¦\9aত à¦¥à¦\95াà¦\95à§\88 à¦²à§\87ণà§\8dডসà§\8dà¦\95à§\87প à¦\9aিতà§\8dৰসমূহৰ বাবে)',
 
 'exif-subjectdistance-value' => '$1 মিটাৰ',
 
@@ -3194,7 +3213,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-lightsource-0' => 'অজ্ঞাত',
 'exif-lightsource-1' => 'দিনৰ পোহৰ',
 'exif-lightsource-2' => 'প্রতিপ্রভ',
-'exif-lightsource-3' => 'à¦\9fাà¦\82ষà§\8dà¦\9fà§\87ন (ভাসà§\8dবৰ পোহৰ)',
+'exif-lightsource-3' => 'à¦\9fাà¦\82ষà§\8dà¦\9fà§\87ন (ভাষà§\8dà¦\95ৰ পোহৰ)',
 'exif-lightsource-4' => 'ফ্লাছ',
 'exif-lightsource-9' => 'ফটফটীয়া বতৰ',
 'exif-lightsource-10' => 'ডাৱৰীয়া বতৰ',
@@ -3233,7 +3252,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 
 'exif-filesource-3' => 'ডিজিটাল স্টিল ক্যামেৰা',
 
-'exif-scenetype-1' => 'à¦\8fà¦\9fা প্ৰত্যক্ষভাৱে তোলা ছবি',
+'exif-scenetype-1' => 'à¦\8fà¦\96ন প্ৰত্যক্ষভাৱে তোলা ছবি',
 
 'exif-customrendered-0' => 'স্বাভাবিক প্রক্রিয়া',
 'exif-customrendered-1' => 'স্বনিৰ্বাচিত প্ৰক্ৰিয়া',
@@ -3246,7 +3265,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-whitebalance-1' => 'হস্তচালিত বগা ভাৰসাম্য',
 
 'exif-scenecapturetype-0' => 'প্ৰামাণিক',
-'exif-scenecapturetype-1' => 'লà§\87ণà§\8dডসà§\8dà¦\95à§\87à¦\87প',
+'exif-scenecapturetype-1' => 'নà§\88সৰà§\8dà¦\97িà¦\95',
 'exif-scenecapturetype-2' => 'প্ৰতিকৃতি',
 'exif-scenecapturetype-3' => 'ৰাতিৰ দৃশ্য',
 
@@ -3270,7 +3289,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 
 'exif-subjectdistancerange-0' => 'অজ্ঞাত',
 'exif-subjectdistancerange-1' => "মেক্ৰ'",
-'exif-subjectdistancerange-2' => 'à¦\89à¦\9aৰৰ দৃষ্টি',
+'exif-subjectdistancerange-2' => 'নিà¦\95à¦\9f দৃষ্টি',
 'exif-subjectdistancerange-3' => 'দূৰ দৃষ্টি',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
@@ -3282,7 +3301,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-gpslongitude-w' => 'পশ্চিম দ্রাঘিমা',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => 'সমà§\81দà§\8dৰপà§\83ষà§\8dঠৰ $1 {{PLURAL:$1|মিà¦\9fাৰ|মিà¦\9fাৰ}} à¦\89পৰত',
+'exif-gpsaltitude-above-sealevel' => 'সমà§\81দà§\8dৰপà§\83ষà§\8dঠৰ $1 {{PLURAL:$1|মিà¦\9fাৰ|মিà¦\9fাৰ}} à¦\93পৰত',
 'exif-gpsaltitude-below-sealevel' => 'সমুদ্ৰপৃষ্ঠৰ $1 {{PLURAL:$1|মিটাৰ|মিটাৰ}} তলত',
 
 'exif-gpsstatus-a' => 'পৰিমাপ চলি আছে',
@@ -3304,7 +3323,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-gpsdop-excellent' => 'অতি উত্তম ($1)',
 'exif-gpsdop-good' => 'ভাল ($1)',
 'exif-gpsdop-moderate' => 'মোটামুটি ($1)',
-'exif-gpsdop-fair' => 'ভাল ($1)',
+'exif-gpsdop-fair' => 'ধà§\81নà§\80য়া ($1)',
 'exif-gpsdop-poor' => 'বেয়া ($1)',
 
 'exif-objectcycle-a' => 'কেৱল পুৱা',
@@ -3318,7 +3337,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-ycbcrpositioning-1' => 'কেন্দ্ৰিত',
 'exif-ycbcrpositioning-2' => 'সমানভাৱে চাইট কৰা',
 
-'exif-dc-contributor' => 'à¦\85ৱদানà¦\95াৰà§\80সমà§\82হ',
+'exif-dc-contributor' => 'বৰà¦\99ণিদাতাসà¦\95ল',
 'exif-dc-coverage' => 'মাধ্যমৰ ব্যৱধানীক অথবা অস্থায়ী অৱকাশ',
 'exif-dc-date' => 'তাৰিখ(সমূহ)',
 'exif-dc-publisher' => 'প্ৰকাশক',
@@ -3375,7 +3394,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'confirmemail_send' => 'এটা নিশ্চিতকৰণ সংকেত মেইল কৰক',
 'confirmemail_sent' => 'নিশ্চিতকৰণ ই-মেইল পঠোৱা হৈছে ।',
 'confirmemail_oncreate' => 'আপোনাৰ ই-মেইল ঠিকনালৈ এটা নিশ্চিতকৰণ সংকেত পঠোৱা হৈছে ।
-লà¦\97à§\8dâ\80\8c-à¦\87ন কৰিবলৈ এই সংকেতৰ আৱশ্যক নাই, কিন্তু ৱিকিৰ যিকোনো ই-মেইল ভিত্তিক সেৱা সক্ৰিয় কৰিবলৈ ইয়াৰ প্ৰয়োজন হ’ব ।',
+পà§\8dৰৱà§\87শ কৰিবলৈ এই সংকেতৰ আৱশ্যক নাই, কিন্তু ৱিকিৰ যিকোনো ই-মেইল ভিত্তিক সেৱা সক্ৰিয় কৰিবলৈ ইয়াৰ প্ৰয়োজন হ’ব ।',
 'confirmemail_sendfailed' => '{{SITENAME}}এ আপোনালৈ নিশ্চিতকৰণ ই-মেইল পঠাব পৰা নাই ।
 অনুগ্ৰহ কৰি আপোনাৰ ই-মেইল ঠিকনা ভুল বৰ্ণ আছে নেকি পৰীক্ষা কৰক ।
 
@@ -3384,7 +3403,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 সম্ভৱতঃ ইয়াৰ ম্যাদ উকলি গৈছে ।',
 'confirmemail_needlogin' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিতকৰণৰ বাবে $1 কৰক ।',
 'confirmemail_success' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিতকৰণ কৰা হৈছে ।
-আপুনি এতিয়া [[Special:UserLogin|log in]] কৰক আৰু ৱিকি উপভোগ কৰক ।',
+আপুনি এতিয়া [[Special:UserLogin|প্ৰৱেশ]] কৰক আৰু ৱিকি উপভোগ কৰক ।',
 'confirmemail_loggedin' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিত কৰা হৈছে ।',
 'confirmemail_error' => 'আপোনাৰ নিশ্চিতকৰণ সংৰক্ষণ কৰাত কিছু সমস্যা হৈছে ।',
 'confirmemail_subject' => '{{SITENAME}} ই-মেইল ঠিকনা নিশ্চিতকৰণ',
@@ -3392,7 +3411,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 এটা একাউণ্ট "$2" পঞ্জীয়ন কৰিছে ।
 
 এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
-à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
 
 $3
 
@@ -3442,20 +3461,20 @@ $5
 'deletedwhileediting' => "'''সতৰ্কবাণী''': আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত পৃষ্ঠাখন বিলোপ কৰা হৈছে !",
 'confirmrecreate' => "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাখন বিলোপ কৰিছে, তাৰ কাৰণ:
 : ''$2''
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦ªà§\81নৰà§\8dনিৰà§\8dমাণ কৰিব খোজাটো নিশ্চিত কৰক ।",
-'confirmrecreate-noreason' => 'à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিà¦\9bà§\87 à¥¤ à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦ªà§\81নৰà§\8dনিৰà§\8dমাণ কৰিব খোজাটো অনুগ্ৰহ কৰি নিশ্চিত কৰক ।',
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\95à§\8c à¦¸à§\83ষà§\8dà¦\9fি কৰিব খোজাটো নিশ্চিত কৰক ।",
+'confirmrecreate-noreason' => 'à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিà¦\9bà§\87 à¥¤ à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\95à§\8c à¦¸à§\83ষà§\8dà¦\9fি কৰিব খোজাটো অনুগ্ৰহ কৰি নিশ্চিত কৰক ।',
 'recreate' => 'পুনৰ সৃষ্টি কৰক',
 
 # action=purge
-'confirm_purge_button' => "অ'কে",
-'confirm-purge-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87শà§\8dবà§\87 খালী কৰা হওক ?',
-'confirm-purge-bottom' => "à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠাà¦\95 à¦¶à§\8bধিত à¦\95ৰিলà§\87 à¦\95à§\87শà§\8dবà§\87 আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
+'confirm_purge_button' => 'ঠিক আছে',
+'confirm-purge-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87à¦\9aà§\8dâ\80\8c খালী কৰা হওক ?',
+'confirm-purge-bottom' => "à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠাà¦\95 à¦¶à§\8bধিত à¦\95ৰিলà§\87 à¦\95à§\87à¦\9aà§\8dâ\80\8c আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
 
 # action=watch/unwatch
-'confirm-watch-button' => 'à¦\85â\80\99à¦\95ে',
-'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰা à¦¯à¦¾à¦\93à¦\95 ?',
-'confirm-unwatch-button' => 'à¦\85â\80\99à¦\95ে',
-'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰ কৰা হওক ?',
+'confirm-watch-button' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰà¦\95',
+'confirm-unwatch-button' => 'ঠিà¦\95 à¦\86à¦\9bে',
+'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
 
 # Multipage image navigation
 'imgmultipageprev' => '← পূৰ্বৱৰ্তী পৃষ্ঠা',
@@ -3477,37 +3496,37 @@ $5
 
 # Auto-summaries
 'autosumm-blank' => "পৃষ্ঠাখন খালী কৰা হ'ল",
-'autosumm-replace' => 'বিষয়বসà§\8dতà§\81ক "$1"ৰে সলনি কৰা হ\'ল',
+'autosumm-replace' => 'পà§\84ষà§\8dঠাà¦\96নক "$1"ৰে সলনি কৰা হ\'ল',
 'autoredircomment' => "[[$1]]-ক পুনৰ্নিৰ্দেশ কৰা হ'ল",
 'autosumm-new' => '"$1" দি পৃষ্ঠা সৃষ্টি কৰা হ\'ল',
 
 # Live preview
 'livepreview-loading' => "ল'ড হৈ আছে…",
 'livepreview-ready' => "ল'ড হৈ আছে… প্ৰস্তুত!",
-'livepreview-failed' => "à¦\9cà§\80ৱনà§\8dত à¦ªà§\82ৰà§\8dবদৰ্শন ব্যৰ্থ হ'ল!
-সাধাৰণ à¦ªà§\82ৰà§\8dবদৰ্শন চেষ্টা কৰি চাওক।",
+'livepreview-failed' => "à¦\9cà§\80ৱনà§\8dত à¦ªà§\8dৰাà¦\95দৰ্শন ব্যৰ্থ হ'ল!
+সাধাৰণ à¦ªà§\8dৰাà¦\95দৰ্শন চেষ্টা কৰি চাওক।",
 'livepreview-error' => 'সংযোগ কৰিবলে ব্যৰ্থ হল: $1 "$2"।
-সাধাৰণ à¦ªà§\82ৰà§\8dবদৰ্শন চেষ্টা কৰি চাওক।',
+সাধাৰণ à¦ªà§\8dৰাà¦\95দৰ্শন চেষ্টা কৰি চাওক।',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL:$1|ছেকেণ্ড|ছেকেণ্ড}} -কে নতুন পৰিৱৰ্তনসমূহ এই তালিকাত দেখুৱা নহবও পাৰে।',
-'lag-warn-high' => 'উচ্চ ডাটাবেইচ চাৰ্ভাৰ পলমৰ বাবে, $1 {{PLURAL:$1|ছেকেণ্ড|ছেকেণ্ড}} -কে নতুন পৰিৱৰ্তনসমূহ এই তালিকাত দেখুৱা নহবও পাৰে।',
+'lag-warn-normal' => '$1 {{PLURAL:$1|ছেকেণ্ড|ছেকেণ্ড}} তকৈ নতুন পৰিৱৰ্তনসমূহ এই তালিকাত দেখুওৱা নহবও পাৰে।',
+'lag-warn-high' => 'উচ্চ ডাটাবেইচ চাৰ্ভাৰ পলমৰ বাবে, $1 {{PLURAL:$1|ছেকেণ্ড|ছেকেণ্ড}} তকৈ নতুন পৰিৱৰ্তনসমূহ এই তালিকাত দেখুওৱা নহবও পাৰে।',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'কথাবতৰা পৃষ্ঠাসমূহ বাদ দি আপোনাৰ লক্ষ্য-তালিকাত {{PLURAL:$1|এটা শিৰোনামা|$1 টা শিৰোনামা}} আছে ।',
 'watchlistedit-noitems' => 'আপোনাৰ লক্ষ্য-তালিকাত এখনো ঘাই পৃষ্ঠা নাই ।',
 'watchlistedit-normal-title' => 'লক্ষ্য-তালিকা সম্পাদন কৰক',
 'watchlistedit-normal-legend' => 'লক্ষ্য-তালিকাৰ পৰা শিৰোনামা আঁতৰাওক',
-'watchlistedit-normal-explain' => 'Titles on your watchlist are shown below.
-To remove a title, check the box next to it, and click "{{int:Watchlistedit-normal-submit}}".
-You can also [[Special:EditWatchlist/raw|edit the raw list]].',
+'watchlistedit-normal-explain' => 'আপোনাৰ নজৰ তালিকাত থকা সূচীবদ্ধ পৃষ্ঠা তলত দেখুওৱা হৈছে।
+পৃষ্ঠা সূচী আৰৰাবলৈ তাৰ আগত দিয়া বাকচত ক্লিক কৰক, আৰু "{{int:Watchlistedit-normal-submit}}"ত ক্লিক কৰক।
+আপুনি [[Special:EditWatchlist/raw|মূল তালিকাখনো]] সম্পাদনা কৰিব পাৰে।',
 'watchlistedit-normal-submit' => 'শিৰোনামা আঁতৰাওক',
 'watchlistedit-normal-done' => "{{PLURAL:$1|এটা শিৰোনামা|$1 টা শিৰোনামা}} আপোনাৰ লক্ষ্যতালিকাৰ পৰা আঁতৰোৱা হ'ল:",
 'watchlistedit-raw-title' => 'অশোধিত অনুসৰণ-তালিকা সম্পাদন কৰক',
 'watchlistedit-raw-legend' => 'অশোধিত অনুসৰণ-তালিকা সম্পাদন কৰক',
-'watchlistedit-raw-explain' => 'আপোনাৰ দৰ্শনতালিকাত থকা শীৰ্ষকসমূহ তলত দেখুৱা হৈছে, আৰু তালিকালে যোগ কৰি অথবা তালিকাৰ পৰা আতৰাই সম্পাদন কৰিব পাৰি;
+'watchlistedit-raw-explain' => 'আপোনাৰ দৰ্শন তালিকাত থকা শীৰ্ষকসমূহ তলত দেখুওৱা হৈছে, আৰু তালিকালৈ যোগ কৰি অথবা তালিকাৰ পৰা আতৰাই সম্পাদন কৰিব পাৰি;
 প্ৰতি শাৰী এটা শীৰ্ষক হিচাপে।
-যেতিয়া সম্পূৰ্ণ হব, "{{int:Watchlistedit-raw-submit}}" -ত ক্লিক কৰিব।
+যেতিয়া সম্পূৰ্ণ হব, "{{int:Watchlistedit-raw-submit}}"ত ক্লিক কৰিব।
 আপুনি লগতে [[Special:EditWatchlist|প্ৰামাণিক সম্পাদকক ব্যৱহাৰ কৰিব পাৰে]]।',
 'watchlistedit-raw-titles' => 'শিৰোনামা:',
 'watchlistedit-raw-submit' => 'লক্ষ্য-তালিকা আপডেট কৰক',
@@ -3525,7 +3544,7 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 
 # Core parser functions
 'unknown_extension_tag' => 'অজ্ঞাত এক্সটেনচন টেগ "$1"',
-'duplicate-defaultsort' => '\'\'\'সাৱধান!\'\'\' পূৰ্বনিৰ্ধাৰিত ক্ৰমসূচক "$2"-এ আগৰ ক্ৰমসূচক "$1"-অক বিস্থাপিত কৰিছে।',
+'duplicate-defaultsort' => '\'\'\'সাৱধান!\'\'\' পূৰ্বনিৰ্ধাৰিত ক্ৰমসূচক "$2"-এ আগৰ ক্ৰমসূচক "$1"ক বিস্থাপিত কৰিছে।',
 
 # Special:Version
 'version' => 'সংস্কৰণ',
@@ -3547,20 +3566,23 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'version-license' => 'অনুজ্ঞাপত্ৰ',
 'version-poweredby-credits' => "এই ৱিকি '''[//www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
 'version-poweredby-others' => 'অন্য',
-'version-license-info' => "মিডিয়াৱিà¦\95ি à¦\8fà¦\9fা à¦¬à¦¿à¦¨à¦¾à¦®à§\82লà§\80য়া à¦\9aফà§\8dà¦\9fৱà§\87ৰ; à¦\86পà§\81নি Free Software Foundation -ৰ à¦¦à§\8dবাৰা à¦ªà§\8dৰà¦\95াশিত GNU General Public License -ৰ à¦\9aà§\81à¦\95à§\8dতিসমà§\82হৰ à¦\85নà§\8dতৰà§\8dà¦\97ত à¦\87য়াà¦\95 à¦ªà§\81নৰ à¦¬à¦¿à¦²à¦¾à¦¬ à¦ªà¦¾à§°à¦¿à¦¬ à¦\85থবা à¦¸à¦²à¦¨à¦¿  à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬; à¦¹à¦¯à¦¼à¦¤à§\8b à¦²à¦¾à¦\87à¦\9aà§\87à¦\9eà§\8dà¦\9aৰ সংস্কৰণ ২ 
-à¦\85থবা (à¦\86পà§\81নাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
+'version-license-info' => "মিডিয়াৱিà¦\95ি à¦\8fà¦\9fা à¦¬à¦¿à¦¨à¦¾à¦®à§\82লà§\80য়া à¦\9aফà§\8dà¦\9fৱà§\87ৰ; à¦\86পà§\81নি Free Software Foundation -ৰ à¦¦à§\8dবাৰা à¦ªà§\8dৰà¦\95াশিত GNU General Public License -ৰ à¦\9aà§\81à¦\95à§\8dতিসমà§\82হৰ à¦\85নà§\8dতৰà§\8dà¦\97ত à¦\87য়াà¦\95 à¦ªà§\81নৰ à¦¬à¦¿à¦¤à§°à¦£ à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬ à¦\85থবা à¦¸à¦²à¦¨à¦¿ à¦\95ৰিব à¦ªà¦¾à§°à¦¿à¦¬; à¦¹à¦¯à¦¼à¦¤à§\8b à¦\85নà§\81à¦\9cà§\8dà¦\9eাপতà§\8dৰৰ সংস্কৰণ ২ 
+à¦\85থবা (à¦\86পà§\8bনাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
 
-মিডিয়াৱিà¦\95ি à¦\8fà¦\87à¦\9fà§\8b à¦\86শাত à¦¬à¦¿à¦²à§\8bৱা হৈছে যে ই ব্যৱহাৰযোগ্য হ'ব, কিন্তু কোনো ৱাৰেন্টি নথকাকৈ; ব্যৱসায়ীক অথবা কোনো এটা বিশেষ কাৰণৰ যোগ্যতাৰ বাবে বুজোৱা ৱাৰেন্টি নথকাকৈ। 
+মিডিয়াৱিà¦\95ি à¦\8fà¦\87à¦\9fà§\8b à¦\86শাত à¦¬à¦¿à¦¤à§°à¦£ à¦\95ৰা হৈছে যে ই ব্যৱহাৰযোগ্য হ'ব, কিন্তু কোনো ৱাৰেন্টি নথকাকৈ; ব্যৱসায়ীক অথবা কোনো এটা বিশেষ কাৰণৰ যোগ্যতাৰ বাবে বুজোৱা ৱাৰেন্টি নথকাকৈ। 
 অধিক জানিবলৈ GNU General Public License চাওক।
 
 আপুনি এই প্ৰগ্ৰামৰ সৈতে [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License -ৰ এটা কপি] পাব লাগে; যদি নাই পোৱা, 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-product' => 'সামগ্ৰী',
 'version-software-version' => 'সংস্কৰণ',
+'version-entrypoints' => 'প্ৰৱেশ পইণ্ট ইউআৰএল',
+'version-entrypoints-header-entrypoint' => 'প্ৰৱেশ পইণ্ট',
+'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:FilePath
-'filepath' => 'ফাà¦\87ল পথ',
-'filepath-page' => 'ফাà¦\87ল:',
+'filepath' => 'নথিৰ পথ',
+'filepath-page' => 'নথি:',
 'filepath-submit' => 'যাওক',
 'filepath-summary' => 'এই বিশেষ পৃষ্ঠায় এটা নথিপত্ৰৰ বাবে সম্পূৰ্ণ পথ ঘুৰাই পঠায়।
 ছবিসমূহক সম্পূৰ্ণ বিভেদনত দেখুৱা হয়, অন্য নথিপত্ৰ ধৰণসমূহ সিহতৰ সংলঘ্ন প্ৰগ্ৰামৰ সৈতে প্ৰত্যক্ষভাৱে আৰম্ভ হয়।',
@@ -3569,12 +3591,12 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'fileduplicatesearch' => 'প্ৰতিলিপি পৃষ্ঠাসমূহ অনুসন্ধান কৰক',
 'fileduplicatesearch-summary' => 'হেছ্‌ মানসমূহৰ উপৰত নিৰ্ভৰ কৰি প্ৰতিলিপিত নথিপত্ৰসমূহৰ বাবে সন্ধান কৰক।',
 'fileduplicatesearch-legend' => 'প্ৰতিলিপিৰ বাবে অনুসন্ধান কৰক',
-'fileduplicatesearch-filename' => 'ফাইলনাম:',
+'fileduplicatesearch-filename' => 'ফাà¦\87লৰ à¦¨à¦¾à¦®:',
 'fileduplicatesearch-submit' => 'সন্ধান কৰক',
 'fileduplicatesearch-info' => '$1 × $2 পিক্সেল<br /> ফাইলৰ মাত্ৰা: $3<br /> MIME প্ৰকাৰ: $4',
-'fileduplicatesearch-result-1' => '"$1" à¦«à¦¾à¦\87লৰ কোনো প্ৰতিলিপি নাই ।',
+'fileduplicatesearch-result-1' => '"$1" à¦¨à¦¥à¦¿ৰ কোনো প্ৰতিলিপি নাই ।',
 'fileduplicatesearch-result-n' => '"$1" ফাইলৰ {{PLURAL:$2|এটা প্ৰতিলিপি|$2টা প্ৰতিলিপি}} আছে ।',
-'fileduplicatesearch-noresults' => 'à¦\95à§\8bনà§\8b "$1" à¦¨à¦¾à¦®à§° à¦«à¦¾à¦\87ল à¦¸à¦¨à§\8dধান à¦ªà§\8bৱা à¦¨à¦\97ল ।',
+'fileduplicatesearch-noresults' => 'à¦\95à§\8bনà§\8b "$1" à¦¨à¦¾à¦®à§° à¦¨à¦¥à¦¿à§° à¦¸à¦¨à§\8dধান à¦ªà§\8bৱা à¦¨à¦\97â\80\99ল ।',
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
@@ -3585,7 +3607,7 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
 'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
 'specialpages-group-login' => 'প্ৰৱেশ/সদস্যভুক্তি',
-'specialpages-group-changes' => "সাম্প্ৰতিক সালসলনি আৰু ল'গসমূহ",
+'specialpages-group-changes' => 'সাম্প্ৰতিক সালসলনি আৰু অভিলেখসমূহ',
 'specialpages-group-media' => "মিডিয়া বিৱৰণী আৰু আপল'ডসমূহ",
 'specialpages-group-users' => 'সদস্যবৃন্দ আৰু অধিকাৰসমূহ',
 'specialpages-group-highuse' => 'অধিক ব্যবহৃত পৃষ্ঠাসমূহ',
@@ -3596,13 +3618,13 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'specialpages-group-spam' => 'স্পাম সা-সঁজুলি',
 
 # Special:BlankPage
-'blankpage' => 'à¦\96ালà§\80 পৃষ্ঠা',
+'blankpage' => 'à¦\89à¦\95া পৃষ্ঠা',
 'intentionallyblankpage' => 'এই পৃষ্ঠা ইচ্ছাকৃতভাৱে খালী ৰখা হৈছে ।',
 
 # External image whitelist
 'external_image_whitelist' => " #এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক<pre>
 #স্বাভাৱিক অভিব্যক্তি অংশসমূহ (কেৱল সেই অংশ যি // মাজেৰে যায়) তলত দিয়ক
-#ইহঁতক বহিৰ্তম (hotlinked) ছবিসমূহৰ URLসমূহৰ সৈতে মিলাই চোৱা হ'ব
+#ইহঁতক বহিৰ্তম (hotlinked) ছবিসমূহৰ URL সমূহৰ সৈতে মিলাই চোৱা হ'ব
 #যিসমূহ মিল খায় সেইসমূহক ছবি হিচাপে প্ৰদৰ্শন কৰা হব, নহলে কেৱল ছবিখনলৈ এটা সংযোগ দেখুওৱা হ'ব
 # # -ৰ সৈতে আৰম্ভ হোৱা শাৰীসমূহক মন্তব্য বুলি ধৰা হয়
 #ই ফলা-সংবেদ্য
@@ -3610,8 +3632,8 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 #সকলো regex অংশক এই শাৰীৰ ওপৰত দিব। এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক</pre>",
 
 # Special:Tags
-'tags' => 'সালসলনি টেগ চাওক',
-'tag-filter' => '[[Special:Tags|Tag]] ছেকনী:',
+'tags' => 'সালসলনি টেগসমূহ চাওক',
+'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
 'tag-filter-submit' => 'সংশোধন',
 'tags-title' => 'টেগসমূহ',
 'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে ।',
@@ -3642,12 +3664,12 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'dberr-info' => '(তথ্যকোষৰ চাৰ্ভাৰৰ লগত যোগাযোগ কৰিব নোৱাৰি: $1)',
 'dberr-usegoogle' => 'এই পৰিস্থিতিত আপুনি গুগলৰ মাধ্যমেৰে অনুসন্ধান কৰিব পাৰে ।',
 'dberr-outofdate' => "মন কৰক যে, আমাৰ বিষয়বস্তু সম্পৰ্কে তেওঁলোকৰ সূচী পুৰণা হ'ব পাৰে ।",
-'dberr-cachederror' => "à¦\8fà¦\87à¦\96ন à¦\85নà§\81ৰà§\8bধ à¦\95ৰা à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87শà§\8dবà§\8dâ\80\8cড à¦\95পà§\80, à¦¨à¦¬à§\80à¦\95ৰণ à¦¨à¦\95ৰা হ'ব পাৰে ।",
+'dberr-cachederror' => "à¦\8fà¦\87à¦\96ন à¦\85নà§\81ৰà§\8bধ à¦\95ৰা à¦ªà§\83ষà§\8dঠাৰ à¦\95à§\87à¦\9aà§\8dâ\80\8cড à¦²à¦¿à¦ªà¦¿, à¦¯à¦¿à¦\96ন à¦¨à¦¬à§\80à¦\95ৰণ à¦¨à¦\95ৰাà¦\93 হ'ব পাৰে ।",
 
 # HTML forms
-'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\95িà¦\9bà§\81মান à¦\87নপà§\81à¦\9fৰ à¦²à¦\97ত সমস্যা হৈছে',
+'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত à¦\95িà¦\9bà§\81মান সমস্যা হৈছে',
 'htmlform-select-badoption' => 'আপুনি ধাৰ্য কৰা মান উপযুক্ত বিকল্প নহয়।',
-'htmlform-int-invalid' => 'à¦\85পà§\81নি à¦§à¦¾à§°à§\8dয à¦\95ৰা à¦®à¦¾à¦¨ à¦\87নà§\8dà¦\9fà§\87à¦\9cাৰ (integer) নহয়।',
+'htmlform-int-invalid' => 'à¦\85পà§\81নি à¦§à¦¾à§°à§\8dয à¦\95ৰা à¦®à¦¾à¦¨ à¦\85à¦\96ণà§\8dড à¦¸à¦\82à¦\96à§\8dযা (integer) নহয়।',
 'htmlform-float-invalid' => 'অপুনি ধাৰ্য কৰা মান সংখ্যা নহয়।',
 'htmlform-int-toolow' => 'আপুনি ধাৰ্য কৰা মান ন্যূনতম $1 তকৈ তলত',
 'htmlform-int-toohigh' => 'আপুনি ধাৰ্য কৰা মান অধিকতম $1 তকৈ ওপৰত',
@@ -3661,14 +3683,14 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'sqlite-no-fts' => '$1 সম্পূৰ্ণ-পাঠ অনুসন্ধান সমৰ্থন অবিহনে',
 
 # New logging system
-'logentry-delete-delete' => '$1 মচি পেলোৱা হল পৃষ্ঠা $3',
-'logentry-delete-restore' => '$1 পুনৰ সংৰক্ষণ কৰা হল পৃষ্ঠা $3',
+'logentry-delete-delete' => '$1’ৰ দ্বাৰা $3 পৃষ্ঠাখন বিলোপ কৰা হ’ল',
+'logentry-delete-restore' => '$1 পুনৰ সংৰক্ষণ কৰা হল পৃষ্ঠা $3',
 'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4 -ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
-'logentry-delete-event-legacy' => '$3 -ত লগ ঘটনামসমূহৰ $1 changed দৃশ্যমানতা',
-'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3 -ত পুনৰীক্ষনসমূহৰ $1 changed দৃশ্যমানতা',
+'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-event-legacy' => '$3ত অভিলেখ ঘটনামসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
 'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
-'logentry-suppress-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
+'logentry-suppress-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
 'logentry-suppress-revision' => 'পৃষ্ঠা $3: $4 -ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}} -ৰ $1 গোপন পৰিৱৰ্তনসমূহ দৃশ্যমানতা',
 'logentry-suppress-event-legacy' => '$3 -ত লগ ঘটনাসমূহৰ $1 গোপন পৰিৱৰ্তন কৰা হল দৃশ্যমানতা',
 'logentry-suppress-revision-legacy' => 'পৃষ্ঠা $3 -ত পুনৰীক্ষনসমূহৰ $1 গোপন পৰিৱৰ্তন কৰা হল',
@@ -3680,21 +3702,21 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'revdelete-uname-unhid' => 'সদস্যনাম মুকলি কৰা হৈছে',
 'revdelete-restricted' => 'এই সীমাবদ্ধতা প্ৰশাসকৰ ক্ষেত্ৰত প্ৰযোজ্য',
 'revdelete-unrestricted' => 'প্ৰশাসকৰ সীমাবদ্ধতা বাতিল কৰা হ’ল',
-'logentry-move-move' => 'পৃষ্ঠা $3 -ৰ পৰা $4 -লে $1 স্থানান্তৰ কৰা হল',
-'logentry-move-move-noredirect' => 'পুনৰ্নিৰ্দেশ নেৰাকৈ $1 স্থানান্তৰ কৰা হল পৃষ্ঠা $3 -ৰ পৰা $4',
-'logentry-move-move_redir' => 'পুনৰ্নিৰ্দেশৰে পৃষ্ঠা $3 -ৰ পৰা $4 $1 স্থানান্তৰ কৰা হল',
+'logentry-move-move' => 'পৃষ্ঠা $3ৰ পৰা $4লৈ $1য়ে স্থানান্তৰ কৰিলে',
+'logentry-move-move-noredirect' => '$1য়ে পুনৰ্নিৰ্দেশ নেৰাকৈ পৃষ্ঠা $3ৰ পৰা $4লৈ স্থানান্তৰ কৰিলে',
+'logentry-move-move_redir' => 'পুনৰ্নিৰ্দেশৰে পৃষ্ঠা $3ৰ পৰা $4 $1লৈ স্থানান্তৰ কৰা হ’ল',
 'logentry-move-move_redir-noredirect' => 'পুনৰ্নিৰ্দেশ নেৰাকৈ এটা পুনৰ্নিৰ্দেশৰ ওপৰেৰে পৃষ্ঠা $3 -ৰ পৰা $4 $1 স্থানান্তৰ কৰা হল',
 'logentry-patrol-patrol' => "পৃষ্ঠা $3 -ৰ $1 চিহ্নিত সংশোধন $4 নিৰীক্ষণ কৰা হ'ল",
 'logentry-patrol-patrol-auto' => "পৃষ্ঠা $3 -ৰ $1 চিহ্নিত সংশোধন $4 স্বচালিতভাৱে নিৰীক্ষণ কৰা হ'ল",
-'logentry-newusers-newusers' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
-'logentry-newusers-create' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
-'logentry-newusers-create2' => '$1-এ এটা ব্যৱহাৰকাৰী একাউণ্ট $3 সৃষ্টি কৰিলে',
-'logentry-newusers-autocreate' => 'একাউণ্ট $1-ক স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা হৈছিল',
+'logentry-newusers-newusers' => '$1’য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
+'logentry-newusers-create' => '$1য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট সৃষ্টি কৰিলে',
+'logentry-newusers-create2' => '$1’য়ে এটা ব্যৱহাৰকাৰী একাউণ্ট $3 সৃষ্টি কৰিলে',
+'logentry-newusers-autocreate' => '$1’ৰ একাউণ্ট স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰা হৈছিল',
 'newuserlog-byemail' => 'গুপ্তশব্দ ই-মেইল কৰি পঠোৱা হৈছে',
 
 # Feedback
 'feedback-bugornote' => 'যদি আপুনি এটা কাৰিকৰী সমস্যাৰ বিৱৰণ দিবলৈ প্ৰস্তুত, অনুগ্ৰহ কৰি [$1 এটা বাগ ৰিপ\'ৰ্ট কৰক]।
-নহ\'লে আপুনি তলৰ সহজ ফৰ্ম ব্যৱহাৰ কৰিব পাৰিব। আপোনাৰ মন্তব্য আপোনাৰ সদস্যনাম আৰু আপুনি ব্যৱহাৰ কৰা ব্ৰাউজাৰৰ সৈতে "[$3 $2]" -পৃষ্ঠাত যোগ কৰা হ\'ব।',
+নহ\'লে আপুনি তলৰ সহজ ফৰ্ম ব্যৱহাৰ কৰিব পাৰিব। আপোনাৰ মন্তব্য আপোনাৰ সদস্যনাম আৰু আপুনি ব্যৱহাৰ কৰা ব্ৰাউজাৰৰ সৈতে "[$3 $2]" -পৃষ্ঠাত যোগ কৰা হ\'ব।',
 'feedback-subject' => 'বিষয়:',
 'feedback-message' => 'বাৰ্তা:',
 'feedback-cancel' => 'বাতিল কৰক',
@@ -3710,19 +3732,19 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 
 # API errors
 'api-error-badaccess-groups' => "এই ৱিকিত ফাইল আপল'ড কৰিবলৈ আপোনাৰ অনুমতি নাই।",
-'api-error-badtoken' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦¬à§\87য়া টোকেন।',
-'api-error-copyuploaddisabled' => "ইউ আৰ এল-ৰ মাধ্যমেৰে আপল'ড কৰাটো এই চাৰ্ভাৰত নিষ্ক্ৰিয় কৰা হৈছে।",
+'api-error-badtoken' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦­à§\81ল টোকেন।',
+'api-error-copyuploaddisabled' => "ইউ আৰ এলৰ মাধ্যমেৰে আপল'ড কৰাটো এই চাৰ্ভাৰত নিষ্ক্ৰিয় কৰা হৈছে।",
 'api-error-duplicate' => 'এই চাইটত একে বিষয়বস্তুৰ {{PLURAL:$1|[$2 আন এটা ফাইল]|[$2 আন কিছুমান ফাইল]}} ইতিমধ্যেই আছে।',
 'api-error-duplicate-archive' => 'এই চাইটত একে বিষয়বস্তুৰ {{PLURAL:$1|[$2 আন এটা ফাইল]|[$2 আন কিছুমান ফাইল]}} ইতিমধ্যেই আছিল, কিন্তু {{PLURAL:$1|সেইটো|সেইবোৰ}} বিলোপ কৰা হৈছে।',
-'api-error-duplicate-archive-popup-title' => 'পà§\8dৰতিলিপি {{PLURAL:$1|ফাà¦\87ল|ফাà¦\87ল}} à¦¯à§\8bনà¦\95à§\87à¦\87à¦\9fা à¦\87তিমধà§\8dযà§\87 à¦®à¦\9aা হৈছে।',
-'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}}।',
-'api-error-empty-file' => 'à¦\86পà§\81নি à¦¦à¦¾à¦\96িল à¦\95ৰা à¦«à¦¾à¦\87লà¦\96ন খালী ।',
+'api-error-duplicate-archive-popup-title' => 'পà§\8dৰতিলিপি {{PLURAL:$1|ফাà¦\87ল|ফাà¦\87ল}} à¦¯à¦¿à¦¸à¦®à§\82হ à¦\87তিমধà§\8dযà§\87 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা হৈছে।',
+'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।',
+'api-error-empty-file' => 'à¦\86পà§\81নি à¦¦à¦¾à¦\96িল à¦\95ৰা à¦«à¦¾à¦\87লà¦\9fà§\8b খালী ।',
 'api-error-emptypage' => 'নতুন, খালী পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
 'api-error-fetchfileerror' => 'আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।',
 'api-error-file-too-large' => 'আপুনি দাখিল কৰা ফাইলখন বৰ ডাঙৰ ।',
 'api-error-filename-tooshort' => 'ফাইলৰ নামটো অতি চুটি।',
-'api-error-filetype-banned' => 'à¦\8fà¦\87 à¦§à§°à¦£à§° à¦«à¦¾à¦\87ল à¦¨à¦¿à¦·à§\87ধ ।',
-'api-error-filetype-missing' => 'ফাইলনামটোত এক্সটেন্‌ছন নাই।',
+'api-error-filetype-banned' => 'à¦\8fà¦\87 à¦§à§°à¦£à§° à¦«à¦¾à¦\87ল à¦¨à¦¿à¦·à¦¿à¦¦à§\8dধ।',
+'api-error-filetype-missing' => 'ফাইল নামটোত এক্সটেন্‌ছন নাই।',
 'api-error-hookaborted' => 'আপুনি কৰিব বিচৰা সালসলনি এটা এক্সটেনচনৰ দ্বাৰা বাতিল কৰা হৈছে।',
 'api-error-http' => "আভ্যন্তৰীণ ত্ৰুটি: চাৰ্ভাৰৰ লগত সংযোগ স্থাপন নহ'ল।",
 'api-error-illegal-filename' => 'ফাইলৰ এই নামটো গ্ৰহণযোগ্য নহয় ।',
@@ -3730,14 +3752,14 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'api-error-invalid-file-key' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ভঁৰালত ফাইলটো পোৱা নগ'ল।",
 'api-error-missingparam' => 'আভ্যন্তৰীণ ত্ৰুটি: অনুৰোধত পেৰামিটাৰৰ কিবা সমস্যা ৰৈছে।',
 'api-error-missingresult' => "আভ্যন্তৰীণ ত্ৰুটি: অনুলিপি সফল হৈছেনে নাই তাক নিশ্চিত কৰিব পৰা নগ'ল।",
-'api-error-mustbeloggedin' => "ফাà¦\87ল à¦\86পল'ড à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦²à¦\97à§\8dâ\80\8c à¦\87নà§\8dâ\80\8c à¦\95ৰিব à¦²à¦¾à¦\97িব।",
+'api-error-mustbeloggedin' => "ফাà¦\87ল à¦\86পল'ড à¦\95ৰাৰ à¦\86à¦\97à§\87য়à§\87 à¦\86পà§\81নি à¦ªà§\8dৰৱà§\87শ à¦\95ৰাà¦\9fà§\8b à¦¬à¦¾à¦§à§\8dযতামà§\82লà¦\95 ।",
 'api-error-mustbeposted' => 'আভ্যন্তৰীণ ত্ৰুটি: এই অনুৰোধত HTTP POST প্ৰয়োজন।',
 'api-error-noimageinfo' => "আপল'ড সফল হৈছে, কিন্তু চাৰ্ভাৰে ফাইলটোৰ সম্পৰ্কে কোনো তথ্য প্ৰদান কৰা নাই।",
 'api-error-nomodule' => "আভ্যন্তৰীণ ত্ৰুটি: কোনো আপল'ড মডিউল ঠিক কৰা হোৱা নাই।",
 'api-error-ok-but-empty' => 'আভ্যন্তৰীণ ত্ৰুটি: চাৰ্ভাৰে কোনো সঁহাৰি জনোৱা নাই।',
 'api-error-overwrite' => 'এতিয়া থকা ফাইলৰ ওপৰত লিখা নিষেধ।',
 'api-error-stashfailed' => 'আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ফাইল সাঁচি ৰখাত চাৰ্ভাৰ অসমৰ্থ হৈছে।',
-'api-error-timeout' => 'à¦\85শা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
+'api-error-timeout' => 'à¦\86শা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
 'api-error-unclassified' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে।',
 'api-error-unknown-code' => 'অজ্ঞাত সমস্যা: "$1"।',
 'api-error-unknown-error' => "আভ্যন্তৰীণ ত্ৰুটি: আপোনাৰ ফাইলটো আপল'ড কৰাত কিবা সমস্যা হৈছে।",
@@ -3757,4 +3779,6 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
 'duration-millennia' => '$1 {{PLURAL:$1|সহস্ৰাব্দ|সহস্ৰাব্দ}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "$1 চাৰ্ভাৰত তলা মোকোলাই দিব পৰা নগ'ল",
 );
index 602e3ad..5ad6fa2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Asturian (Asturianu)
+/** Asturian (asturianu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -11,6 +11,7 @@
  * @author Kaganer
  * @author Mikel
  * @author Remember the dot
+ * @author Savh
  * @author Xuacu
  * @author לערי ריינהארט
  */
@@ -64,7 +65,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Anubrir les ediciones vixilaes nos cambeos recientes',
 'tog-newpageshidepatrolled' => 'Anubrir les páxines vixilaes na llista de páxines nueves',
 'tog-extendwatchlist' => "Espander la llista de vixilancia p'amosar tolos cambeos, non solo los más recientes.",
-'tog-usenewrc' => 'Cambeos recientes ameyoraos (necesita JavaScript)',
+'tog-usenewrc' => 'Agrupar los cambeos por páxina nos cambeos recientes y na llista de vixilancia (necesita JavaScript)',
 'tog-numberheadings' => 'Autonumberar los encabezaos',
 'tog-showtoolbar' => "Amosar la barra de ferramientes d'edición (JavaScript)",
 'tog-editondblclick' => 'Editar páxines con doble clic (necesita JavaScript)',
@@ -451,6 +452,8 @@ El motivu conseñáu ye «''$2''».",
 L'alministrador que lu bloquió dio esti motivu: «$3».",
 'invalidtitle-knownnamespace' => 'Títulu non válidu col espaciu de nomes «$2» y el testu «$3»',
 'invalidtitle-unknownnamespace' => "Titulu non válidu col númberu $1 d'espaciu de nomes desconocíu y el testu «$2»",
+'exception-nologin' => 'Non identificáu',
+'exception-nologin-text' => "Esta páxina o aición necesita qu'anicies sesión nesta wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Fallu de configuración: Escáner de virus desconocíu: ''$1''",
@@ -1044,9 +1047,9 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
 'mergelogpagetext' => "Abaxo amuésase una llista de les fusiones más recientes d'un historial de páxina con otru.",
 
 # Diffs
-'history-title' => 'Historial de revisiones de "$1"',
-'difference-title' => 'Diferencia ente revisiones de «$1»',
-'difference-title-multipage' => 'Diferencia ente les páxines «$1» y «$2»',
+'history-title' => 'Historial de revisiones de «$1»',
+'difference-title' => 'Diferencies ente revisiones de «$1»',
+'difference-title-multipage' => 'Diferencies ente les páxines «$1» y «$2»',
 'difference-multipage' => '(Diferencia ente páxines)',
 'lineno' => 'Llinia $1:',
 'compareselectedversions' => 'Comparar les revisiones seleicionaes',
@@ -1141,6 +1144,7 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
 'prefs-beta' => 'Carauterístiques beta',
 'prefs-datetime' => 'Fecha y hora',
 'prefs-labs' => 'Carauterístiques esperimentales',
+'prefs-user-pages' => "Páxines d'usuariu",
 'prefs-personal' => 'Perfil del usuariu',
 'prefs-rc' => 'Cambios recientes',
 'prefs-watchlist' => 'Llista de vixilancia',
@@ -1618,14 +1622,15 @@ Si'l problema persiste, contauta con un [[Special:ListUsers/sysop|alministrador]
 'backend-fail-writetemp' => 'Nun se pudo escribir nel ficheru temporal.',
 'backend-fail-closetemp' => 'Nun se pudo zarrar el ficheru temporal.',
 'backend-fail-read' => 'Nun se pudo lleer el ficheru $1.',
-'backend-fail-create' => 'Nun se pudo crear el ficheru $1.',
-'backend-fail-maxsize' => 'Nun se pudo crear el ficheru  $1  porque ye mayor de {{PLURAL:$2|$2 byte|$2 bytes}}.',
+'backend-fail-create' => 'Nun se pudo escribir el ficheru $1.',
+'backend-fail-maxsize' => 'Nun se pudo escribir el ficheru  $1  porque ye mayor de {{PLURAL:$2|un byte|$2 bytes}}.',
 'backend-fail-readonly' => 'Nesti momentu el motor d\'almacenamientu "$1" ta en mou de sólo llectura. El motivu dau foi: "$2"',
 'backend-fail-synced' => 'El ficheru "$1" ta nún estáu inconsistente colos motores d\'almacenamientu internos',
 'backend-fail-connect' => 'Nun se pudo coneutar col motor d\'almacenamientu "$1".',
 'backend-fail-internal' => 'Hebo un fallu desconocíu nel motor d\'almacenamientu "$1".',
 'backend-fail-contenttype' => 'Non se pudo determinar la triba de conteníu de ficheru a guardar en "$1".',
 'backend-fail-batchsize' => "El motor d'almacenamientu dio un llote de $1 {{PLURAL:$1|operación|operaciones}} en ficheros; el llímite ye de $2 {{PLURAL:$2|operación|operaciones}}.",
+'backend-fail-usable' => 'Nun se pudo escribir el ficheru $1 porque nun hai permisos bastantes o falten los direutorios/contenedores.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Nun se pudo coneutar cola base de datos del diariu pal sofitu d\'almacenamientu "$1".',
@@ -1746,7 +1751,7 @@ Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
 'sharedupload-desc-there' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
 Llee la [páxina de descripción del ficheru $2] pa más información.',
 'sharedupload-desc-here' => "Esti ficheru ye de $1 y puen usalu otros proyeutos.
-La descripción de la [páxina de descripción del ficheru $2] s'amuesa darréu.",
+La descripción de la [$2 páxina de descripción del ficheru] s'amuesa darréu.",
 'sharedupload-desc-edit' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
 Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.",
 'sharedupload-desc-create' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
@@ -1943,6 +1948,7 @@ Date cuenta de qu'otros sitios web puen enllazar a un ficheru con una URL direut
 Pues filtrar la visualización seleicionando una mena de rexistru, el nome d'usuariu (teniendo en cuenta les mayúscules y minúscules) o la páxina afectada (teniendo en cuenta tamién les mayúscules y minúscules).",
 'logempty' => 'Nun hai coincidencies nel rexistru.',
 'log-title-wildcard' => "Buscar títulos qu'emprimen con esti testu",
+'showhideselectedlogentries' => 'Amosar/anubrir les entraes del rexistru seleicionaes',
 
 # Special:AllPages
 'allpages' => 'Toles páxines',
@@ -2855,6 +2861,7 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'spambot_username' => 'Llimpieza de spam de MediaWiki',
 'spam_reverting' => 'Revirtiendo a la cabera versión que nun contién enllaces a $1',
 'spam_blanking' => 'Toles revisiones teníen enllaces a $1; dexando en blanco',
+'spam_deleting' => 'Toles revisiones teníen enllaces a $1, desaniciando',
 
 # Info page
 'pageinfo-title' => 'Información sobro "$1"',
@@ -3772,4 +3779,6 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nun se pudieron afitar los bloqueos nel sirvidor $1.',
 );
index 6086ae9..0cc9e11 100644 (file)
@@ -1066,7 +1066,7 @@ Rinafe e-mail mane me zo razdar viele ar webesik uzerar.',
 'nchanges' => '$1 {{PLURAL:$1|betaks|betaks}}',
 'recentchanges' => 'Noeltaf betakseem',
 'recentchanges-legend' => 'Ikatcuks ke noeltaf betaks',
-'recentchangestext' => 'Moo batu bu va ironokaf betakseem ke {{SITENAME}} suzdal.',
+'recentchanges-summary' => 'Moo batu bu va ironokaf betakseem ke {{SITENAME}} suzdal.',
 'recentchanges-feed-description' => 'Sledara va tel lonoeltaf betakseem va wiki koo bat rust.',
 'recentchanges-label-newpage' => 'Bata betara va warzafu bu reduyur',
 'recentchanges-label-minor' => 'Betamaks',
index 18c6564..1a04bbb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Azerbaijani (Azərbaycanca)
+/** Azerbaijani (azərbaycanca)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 0e235c3..bc72730 100644 (file)
@@ -125,30 +125,30 @@ $messages = array(
 'monday' => 'Дүшәмбе',
 'tuesday' => 'Шишәмбе',
 'wednesday' => 'Шаршамбы',
-'thursday' => 'Ð\9aеÑ\81еаÒ\99на',
+'thursday' => 'Кесаҙна',
 'friday' => 'Йома',
 'saturday' => 'Шәмбе',
-'sun' => 'Йәкшәмбе',
-'mon' => 'Дүшәмбе',
-'tue' => 'Шишәмбе',
-'wed' => 'Шаршамбы',
-'thu' => 'Кесеаҙна',
-'fri' => 'Ð\99ома',
-'sat' => 'Шәмбе',
-'january' => 'ғинуар',
-'february' => 'февраль',
-'march' => 'март',
-'april' => 'апрель',
-'may_long' => 'май',
-'june' => 'июнь',
-'july' => 'июль',
-'august' => 'август',
-'september' => 'сентябрь',
-'october' => 'октябрь',
-'november' => 'ноябрь',
-'december' => 'декабрь',
-'january-gen' => 'ғинуар',
-'february-gen' => 'февраль',
+'sun' => 'Йш',
+'mon' => 'Дш',
+'tue' => 'Шш',
+'wed' => 'Шр',
+'thu' => 'Кс',
+'fri' => 'Ð\99м',
+'sat' => 'Шб',
+'january' => 'ғинуар (һыуығай)',
+'february' => 'февраль (шаҡай)',
+'march' => 'март (буранай)',
+'april' => 'апрель (алағарай)',
+'may_long' => 'май (һабанай)',
+'june' => 'июнь (һөтай)',
+'july' => 'июль (майай)',
+'august' => 'август (урағай)',
+'september' => 'сентябрь (һарысай)',
+'october' => 'октябрь (ҡарасай)',
+'november' => 'ноябрь (ҡырпағай)',
+'december' => 'декабрь (аҡъюлай)',
+'january-gen' => 'ғинуар (һыуығай)',
+'february-gen' => 'февраль (шаҡай)',
 'march-gen' => 'март',
 'april-gen' => 'апрель',
 'may-gen' => 'май',
@@ -157,8 +157,8 @@ $messages = array(
 'august-gen' => 'август',
 'september-gen' => 'сентябрь',
 'october-gen' => 'октябрь',
-'november-gen' => 'ноябрь',
-'december-gen' => 'декабрь',
+'november-gen' => 'ноябрь (ҡырпағай)',
+'december-gen' => 'декабрь (аҡъюлай)',
 'jan' => 'ғин',
 'feb' => 'фев',
 'mar' => 'мар',
@@ -274,7 +274,7 @@ $messages = array(
 'mediawikipage' => 'Хәбәрҙәр битен ҡарарға',
 'templatepage' => 'Ҡалып битен ҡарарға',
 'viewhelppage' => 'Ярҙам битен ҡарарға',
-'categorypage' => 'Ð\9aаÑ\82егоÑ\80иÑ\8f битен ҡарарға',
+'categorypage' => 'ТөÑ\80көм битен ҡарарға',
 'viewtalkpage' => 'Фекер алышыу битен ҡарарға',
 'otherlanguages' => 'Башҡа телдәрҙә',
 'redirectedfrom' => '($1 битенән йүнәлтелде)',
@@ -450,9 +450,9 @@ $2',
 'ns-specialprotected' => '«{{ns:special}}» исем арауығындағы биттәрҙе үҙгәртеп булмай.',
 'titleprotected' => "Был исем менән бит яһау [[User:$1|$1]] тарафынан тыйылған.
 Белдерелгән сәбәп: ''$2''.",
-'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибенде.
+'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибендә.
 
£Ñ\81Ñ\82ановивÑ\88ий Ñ\8dÑ\82оÑ\82 Ñ\80ежим Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80 Ð¾Ñ\81Ñ\82авил Ñ\81ледÑ\83Ñ\8eÑ\89ее Ñ\80азÑ\8aÑ\8fÑ\81нение: «''$3''».",
\91Ñ\8bл Ñ\81иклÓ\99Ò¯Ò\99е Ð¸Ð½Ð´ÐµÑ\80гÓ\99н Ñ\85аким Ð±Ð¸Ñ\80гÓ\99н Ð°Ò£Ð»Ð°Ñ\82ма:«''$3''».",
 
 # Virus scanner
 'virus-badscanner' => "Көйләү хатаһы: Билдәһеҙ вирустар сканеры: ''$1''",
@@ -1097,6 +1097,7 @@ $1",
 'prefs-beta' => 'Бета версияһы мөмкинлектәре',
 'prefs-datetime' => 'Көн һәм ваҡыт',
 'prefs-labs' => 'Һынау өсөн мөмкинлектәр',
+'prefs-user-pages' => 'Ҡатнашыусы бите',
 'prefs-personal' => 'Шәхси мәғлүмәттәр',
 'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
 'prefs-watchlist' => 'Күҙәтеү исемлеге',
@@ -3667,9 +3668,9 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => 'минут',
-'duration-hours' => 'сәғәт',
-'duration-days' => 'көн',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|көн|көн}}',
 'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}',
 'duration-years' => '$1 {{PLURAL:$1|йыл|йылдар}}',
 'duration-decades' => '$1 {{PLURAL:$1|ун көнлөк|ун көнлөктәр}}',
index bbf9b2b..a2cac90 100644 (file)
@@ -1263,7 +1263,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|تغییر|تغییرات}}',
 'recentchanges' => 'نوکین تغییرات',
 'recentchanges-legend' => 'گزینه ی نوکین تغییرات',
-'recentchangestext' => 'رندگر نوکترین تغییرات ته ویکی تی ای صفحه.',
+'recentchanges-summary' => 'رندگر نوکترین تغییرات ته ویکی تی ای صفحه.',
 'recentchanges-feed-description' => 'آهرین تغییرات ته وی کی چه ای فید رند گر',
 'rcnote' => "جهلء{{PLURAL:$1|هست '''1''' تغییری|هستن آهری '''$1''' تغییرات}} ته آهرین {{PLURAL:$2|روچ|'''$2''' روچان}}, چه$5, $4.",
 'rcnotefrom' => "جهلا تغییرات چه '''$2''' (تا  '''$1''' پیش دارگنت). هست",
index bf0d2ec..abc9f75 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Belarusian (Ð\91еларуская)
+/** Belarusian (беларуская)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -14,6 +14,7 @@
  * @author Maksim L.
  * @author Mienski
  * @author Prima klasy4na
+ * @author Renessaince
  * @author Riwnodennyk
  * @author Urhixidur
  * @author Wizardist
@@ -365,7 +366,7 @@ $1',
 'collapsible-expand' => 'Паказаць',
 'thisisdeleted' => 'Паказаць ці аднавіць $1?',
 'viewdeleted' => 'Ці паказаць $1?',
-'restorelink' => '{{PLURAL:$1|адна сцёртая праўка|$1 сцёртых правак}}',
+'restorelink' => '$1 {{PLURAL:$1|сцёртая праўка|сцёртых правак}}',
 'feedlinks' => 'Струмень:',
 'feed-invalid' => 'Недапушчальны тып струмяня навін.',
 'feed-unavailable' => 'Няма струмянёў навін',
@@ -714,10 +715,10 @@ $2
 'newarticle' => '(Новы)',
 'newarticletext' => 'Вы перайшлі да старонкі, якой яшчэ няма, і таму трапілі сюды. Каб пачаць новую старонку, пішыце яе тэкст у ніжэйпаказаным акне рэдагавання (падрабязнасці бач у [[{{MediaWiki:Helppage}}|даведцы]]). Калі вы тут выпадкова, проста націсніце "назад" у браўзеры.',
 'anontalkpagetext' => "----''Гэта старонка размовы з ананімным удзельнікам, які або не мае свайго рахунку, або ім не карыстаўся. Таму дзеля яго ці яе ідэнтыфікацыі мы мусім выкарыстаць лічбавы Адрас IP. Такі адрас IP могуць дзяліць між сабою некалькі асоб. Калі вы ананімны ўдзельнік, і лічыце, што атрымліваеце няслушныя заўвагі,[[Special:UserLogin/signup|стварыце рахунак]] або [[Special:UserLogin|акажыцеся]], каб вас больш не блыталі з іншымі ананімнымі ўдзельнікамі.''",
-'noarticletext' => 'СÑ\82аÑ\80онка Ð½Ðµ Ñ\9eÑ\82Ñ\80Ñ\8bмлÑ\96вае Ñ\82Ñ\8dкÑ\81Ñ\82Ñ\83. Ð\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82акай Ð½Ð°Ð·Ð²Ñ\8b]] ў іншых старонках ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],
+'noarticletext' => 'СÑ\82аÑ\80онка Ð½Ðµ Ñ\9eÑ\82Ñ\80Ñ\8bмлÑ\96вае Ñ\82Ñ\8dкÑ\81Ñ\82Ñ\83. Ð\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82кÑ\83Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] ў іншых старонках ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],
 або [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.',
 'noarticletext-nopermission' => 'Старонка не ўтрымлівае тэксту.
\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82акай Ð½Ð°Ð·Ð²Ñ\8b]] ў іншых старонках,
\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82кÑ\83Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] ў іншых старонках,
 ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>.',
 'userpage-userdoesnotexist' => 'Рахунак удзельніка "<nowiki>$1</nowiki>" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.',
 'userpage-userdoesnotexist-view' => 'Уліковы запіс удзельніка " $1 "не зарэгістраваны.',
index e1de9fa..c64ce26 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ\91еларуская (тарашкевіца)‬)
+/** Belarusian (TaraÅ¡kievica orthography) (â\80ªÐ±еларуская (тарашкевіца)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -261,12 +261,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Хаваць патруляваныя зьмены ў сьпісе апошніх зьменаў',
 'tog-newpageshidepatrolled' => 'Хаваць правераныя старонкі ў сьпісе новых старонак',
 'tog-extendwatchlist' => 'Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія',
-'tog-usenewrc' => 'Ð\92Ñ\8bкаÑ\80Ñ\8bÑ\81Ñ\82оÑ\9eваÑ\86Ñ\8c Ñ\83даÑ\81каналенÑ\8b Ñ\81Ñ\8cпÑ\96Ñ\81 Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\85 Ð·Ñ\8cменаў (патрабуе JavaScript)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83паваÑ\86Ñ\8c Ð·Ñ\8cменÑ\8b Ñ\81Ñ\82аÑ\80онкÑ\96 Ñ\9e Ñ\81Ñ\8cпÑ\96Ñ\81аÑ\85 Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\85 Ð·Ñ\8cменаÑ\9e Ñ\96 Ð½Ð°Ð·Ñ\96Ñ\80анÑ\8cнÑ\8fў (патрабуе JavaScript)',
 'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
 'tog-showtoolbar' => 'Паказваць панэль інструмэнтаў рэдагаваньня (патрабуе JavaScript)',
-'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным шчоўканьні (JavaScript)',
+'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку (JavaScript)',
 'tog-editsection' => 'Дазволіць рэдагаваньне асобных сэкцыяў па спасылках [рэдагаваць]',
-'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым шчоўканьні мышкай на загалоўку (JavaScript)',
+'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым пстрыку на загалоўку (патрабуе JavaScript)',
 'tog-showtoc' => 'Паказваць зьмест (для старонак з колькасьцю сэкцый болей за 3)',
 'tog-rememberpassword' => 'Запомніць мяне ў гэтым браўзэры (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
 'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня старонкі, якія я буду ствараць',
@@ -645,6 +645,8 @@ $2',
 Адміністратар, які абмежаваў доступ, пазначыў прычыну: «$3».',
 'invalidtitle-knownnamespace' => 'Няслушная назва ў прасторы «$2»: «$3»',
 'invalidtitle-unknownnamespace' => 'Няслушная назва ў невядомай прасторы $1: «$2»',
+'exception-nologin' => 'Вы не ўвайшлі ў сыстэму',
+'exception-nologin-text' => 'Гэтая старонка ці дзеяньне патрабуе, каб вы ўвайшлі ў сыстэму.',
 
 # Virus scanner
 'virus-badscanner' => "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
@@ -1030,6 +1032,8 @@ $2
 'node-count-exceeded-warning' => 'Старонка перавысіла дазволеную колькасьць вузлоў',
 'expansion-depth-exceeded-category' => 'Старонкі зь перавышанай глыбінёй уключэньня',
 'expansion-depth-exceeded-warning' => 'Старонка перавысіла дазволеную глыбіню ўключэньняў',
+'parser-unstrip-loop-warning' => 'Вызначаная незачыненая пятля',
+'parser-unstrip-recursion-limit' => 'Перавышанае абмежаваньне глыбіні рэкурсіі ($1)',
 
 # "Undo" feature
 'undo-success' => 'Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.',
@@ -1188,7 +1192,7 @@ $1",
 'mergehistory-go' => "Паказаць вэрсіі, якія магчыма аб'яднаць",
 'mergehistory-submit' => "Аб'яднаць гісторыі рэдагаваньняў",
 'mergehistory-empty' => "Няма гісторыі рэдагаваньняў, якую магчыма аб'яднаць.",
-'mergehistory-success' => "$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсій}} з [[:$1]] пасьпяхова аб'яднаныя ў [[:$2]].",
+'mergehistory-success' => '$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсіяў}} з [[:$1]] пасьпяхова аб’яднаныя ў [[:$2]].',
 'mergehistory-fail' => "Не атрымалася аб'яднаць гісторыі старонак. Калі ласка, праверце парамэтры старонкі і часу.",
 'mergehistory-no-source' => 'Не існуе крынічнай старонкі $1.',
 'mergehistory-no-destination' => 'Не існуе мэтавай старонкі $1.',
@@ -1206,9 +1210,9 @@ $1",
 'mergelogpagetext' => "Ніжэй знаходзіцца сьпіс апошніх аб'яднаньняў гісторыяў старонак.",
 
 # Diffs
-'history-title' => 'Гісторыя зьменаў старонкі «$1»',
-'difference-title' => 'Розьніца паміж вэрсіямі «$1»',
-'difference-title-multipage' => 'Розьніца паміж старонкамі «$1» і «$2»',
+'history-title' => '$1 — гісторыя зьменаў',
+'difference-title' => '$1: розьніца паміж вэрсіямі',
+'difference-title-multipage' => '«$1» і «$2» — розьніца паміж старонкамі',
 'difference-multipage' => '(Розьніца паміж старонкамі)',
 'lineno' => 'Радок $1:',
 'compareselectedversions' => 'Параўнаць выбраныя вэрсіі',
@@ -1304,6 +1308,7 @@ $1",
 'prefs-beta' => 'Тэставыя магчымасьці',
 'prefs-datetime' => 'Дата і час',
 'prefs-labs' => 'Экспэрымэнтальныя магчымасьці',
+'prefs-user-pages' => 'Старонкі ўдзельніка',
 'prefs-personal' => 'Асабістыя зьвесткі',
 'prefs-rc' => 'Апошнія зьмены',
 'prefs-watchlist' => 'Сьпіс назіраньня',
@@ -1482,12 +1487,12 @@ $1",
 'right-writeapi' => 'выкарыстаньне API для запісаў',
 'right-delete' => 'выдаленьне старонак',
 'right-bigdelete' => 'Выдаленьне старонак зь вялікімі гісторыямі',
-'right-deleterevision' => 'выдаленьне і аднаўленьне асобных вэрсій старонак',
+'right-deleterevision' => 'выдаленьне і аднаўленьне асобных вэрсіяў старонак',
 'right-deletedhistory' => 'прагляд выдаленай гісторыі старонак без доступу да выдаленага тэксту',
 'right-deletedtext' => 'прагляд выдаленага тэксту і зьменаў паміж выдаленымі вэрсіямі старонак',
 'right-browsearchive' => 'пошук выдаленых старонак',
 'right-undelete' => 'аднаўленьне старонак',
-'right-suppressrevision' => 'прагляд і аднаўленьне вэрсій схаваных ад адміністратараў',
+'right-suppressrevision' => 'прагляд і аднаўленьне вэрсіяў, схаваных ад адміністратараў',
 'right-suppressionlog' => 'прагляд прыватных журналаў',
 'right-block' => 'блякаваньне іншых удзельнікаў ад рэдагаваньняў',
 'right-blockemail' => 'блякаваньне іншых ўдзельнікаў ад дасылкі электроннай пошты',
@@ -1761,13 +1766,14 @@ $1',
 'backend-fail-closetemp' => 'Немагчыма закрыць часовы файл.',
 'backend-fail-read' => 'Немагчыма прачытаць файл $1.',
 'backend-fail-create' => 'Немагчыма запісаць файл $1.',
-'backend-fail-maxsize' => 'Не атрымалася стварыць файл $1, бо яго памер перавышае {{PLURAL:$2|$2 байт|$2 байта|$2 байтаў}}',
+'backend-fail-maxsize' => 'Не атрымалася запісаць файл $1, бо яго памер перавышае {{PLURAL:$2|$2 байт|$2 байта|$2 байтаў}}.',
 'backend-fail-readonly' => 'Сэрвэр сховішча «$1» у рэжыме толькі чытаньня. Прычына: «$2»',
 'backend-fail-synced' => 'Стан файла «$1» адрозьніваецца ад стану на ўнутраным сэрвэры сховішча',
 'backend-fail-connect' => 'Немагчыма далучыцца да сэрвэра сховішча «$1».',
 'backend-fail-internal' => 'Узьнікла невядомая памылка на сэрвэры сховішча «$1».',
 'backend-fail-contenttype' => 'Немагчыма вызначыць тып зьместу файла, які мусіць быць захаваны ў «$1».',
 'backend-fail-batchsize' => 'Cховішча атрымала блёк з $1 {{PLURAL:$1|файлавай апэрацыі|файлавых апэрацыяў|файлавых апэрацыяў}}; абмежаваньне складае $2 {{PLURAL:$2|апэрацыю|апэрацыі|апэрацыяў}}.',
+'backend-fail-usable' => 'Не атрымалася запісаць файл $1 з-за недастачы правоў ці адсутнасьці дырэкторыяў або кантэйнэраў.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Не атрымалася злучыцца з базай зьвестак журнала для сховішча «$1».',
@@ -2011,7 +2017,7 @@ $1',
 'ncategories' => '$1 {{PLURAL:$1|катэгорыя|катэгорыі|катэгорыяў}}',
 'nlinks' => '$1 {{PLURAL:$1|спасылка|спасылкі|спасылак}}',
 'nmembers' => '$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}',
-'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'nviews' => '$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}',
 'nimagelinks' => 'Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
 'ntransclusions' => 'выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
@@ -2091,6 +2097,7 @@ $1',
 Вы можаце адфільтраваць вынікі па тыпе журналу, удзельніку ці старонцы.',
 'logempty' => 'Падобных запісаў у журнале няма.',
 'log-title-wildcard' => 'Шукаць назвы, якія пачынаюцца з гэтага тэксту',
+'showhideselectedlogentries' => 'Паказаць/схаваць выбраныя запісы ў журнале',
 
 # Special:AllPages
 'allpages' => 'Усе старонкі',
@@ -2318,9 +2325,9 @@ $UNWATCHURL
 ** Парушэньне аўтарскіх правоў
 ** Вандалізм',
 'delete-edit-reasonlist' => 'Рэдагаваць прычыны выдаленьня',
-'delete-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсій}}.
+'delete-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
 Выдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсій}}.
+'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
 Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
 
 # Rollback
@@ -2421,7 +2428,7 @@ $UNWATCHURL
 'undelete-fieldset-title' => 'Аднавіць вэрсіі',
 'undeleteextrahelp' => "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.
 Для частковага аднаўленьня, пазначце тыя вэрсіі старонкі, якія трэба аднавіць і націсьніце '''''{{int:undeletebtn}}'''''.",
-'undeleterevisions' => 'У архіве $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'undeleterevisions' => 'У архіве $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'undeletehistory' => 'Калі Вы адновіце старонку, будуць адноўленыя ўсе яе вэрсіі разам з журналам падзеяў.
 Калі пасьля выдаленьня была створаная новая старонка з такой жа назвай, адноўленыя вэрсіі зьявяцца ў гісторыі перад новымі вэрсіямі.',
 'undeleterevdel' => 'Аднаўленьня не адбудзецца, калі ў яго выніку будзе выдаленая апошняя вэрсія старонкі ці файла.
@@ -2439,8 +2446,8 @@ $UNWATCHURL
 'undeletereset' => 'Скінуць',
 'undeleteinvert' => 'Адваротны выбар',
 'undeletecomment' => 'Прычына:',
-'undeletedrevisions' => '{{PLURAL:$1|адноўленая $1 вэрсія|адноўленыя $1 вэрсіі|адноўленыя $1 вэрсій}}',
-'undeletedrevisions-files' => 'адноўленыя $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}} і $2 {{PLURAL:$2|файл|файлы|файлаў}}',
+'undeletedrevisions' => '{{PLURAL:$1|адноўленая $1 вэрсія|адноўленыя $1 вэрсіі|адноўленыя $1 вэрсіяў}}',
+'undeletedrevisions-files' => 'адноўленыя $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} і $2 {{PLURAL:$2|файл|файлы|файлаў}}',
 'undeletedfiles' => '{{PLURAL:$1|адноўлены $1 файл|адноўленыя $1 файлы|адноўленыя $1 файлаў}}',
 'cannotundelete' => 'Аднаўленьне не адбылося; нехта іншы мог пасьпець аднавіць старонку раней.',
 'undeletedpage' => "'''Старонка $1 была адноўленая'''
@@ -2827,7 +2834,7 @@ $1',
 'importtext' => 'Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].
 Захавайце яго на свой кампутар, а потым загрузіце сюды.',
 'importstart' => 'Імпартаваньне старонак…',
-'import-revision-count' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'import-revision-count' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'importnopages' => 'Няма старонак для імпартаваньня.',
 'imported-log-entries' => '{{PLURAL:$1|Імпартаваны $1 запіс журнала|Імпартаваныя $1 запісы журнала|Імпартаваныя $1 запісаў журнала}}.',
 'importfailed' => 'Немагчыма імпартаваць: $1',
@@ -2862,9 +2869,9 @@ $1',
 'importlogpage' => 'Журнал імпартаваньняў',
 'importlogpagetext' => 'Імпартаваньне адміністратарамі старонак з гісторыяй зьменаў зь іншых вікі.',
 'import-logentry-upload' => 'імпартавана [[$1]] праз загрузку файла',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'import-logentry-interwiki' => 'імпартавана зь іншай вікі $1',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}} з $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} з $2',
 
 # JavaScriptTest
 'javascripttest' => 'Тэставаньне JavaScript',
@@ -2971,6 +2978,7 @@ $1',
 'spambot_username' => 'Чыстка спаму MediaWiki',
 'spam_reverting' => 'Адкат да апошняй вэрсіі без спасылак на $1',
 'spam_blanking' => 'Усе вэрсіі ўтрымліваюць спасылкі на $1, чыстка',
+'spam_deleting' => 'Усе вэрсіі ўтрымлівалі спасылкі на $1, выдаляем',
 
 # Info page
 'pageinfo-title' => 'Інфармацыя пра «$1»',
@@ -3889,4 +3897,6 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'duration-centuries' => '$1 {{PLURAL:$1|стагодзьдзе|стагодзьдзі|стагодзьдзяў}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Немагчыма запытаць блякаваньні на сэрвэры $1.',
 );
index 67a753c..2c994a4 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Bulgarian (Ð\91ългарски)
+/** Bulgarian (български)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1175,6 +1175,7 @@ $1",
 
 # Diffs
 'history-title' => 'Преглед на историята на „$1“',
+'difference-title' => 'Разлика между версии на „$1“',
 'difference-multipage' => '(Разлики между страниците)',
 'lineno' => 'Ред $1:',
 'compareselectedversions' => 'Сравнение на избраните версии',
@@ -1270,6 +1271,7 @@ $1",
 'prefs-beta' => 'Функционалности на Бета',
 'prefs-datetime' => 'Дата и час',
 'prefs-labs' => 'Функционалности на Labs',
+'prefs-user-pages' => 'Потребителски страници',
 'prefs-personal' => 'Потребителски данни',
 'prefs-rc' => 'Последни промени',
 'prefs-watchlist' => 'Списък за наблюдение',
@@ -1702,6 +1704,7 @@ $1',
 'backend-fail-notexists' => 'Файлът $1 не съществува.',
 'backend-fail-delete' => 'Файлът $1 не може да бъде изтрит.',
 'backend-fail-alreadyexists' => 'Файлът $1 вече съществува.',
+'backend-fail-store' => 'Файлът $1 не може да бъде съхранен в $2.',
 'backend-fail-copy' => 'Файлът „$1“ не можа да бъде копиран в „$2“.',
 'backend-fail-move' => 'Файлът „$1“ не можа да бъде преместен в „$2“.',
 'backend-fail-opentemp' => 'Временният файл не може да бъде отворен.',
@@ -3489,6 +3492,7 @@ MediaWiki се разпространява с надеждата, че ще б
 'version-software' => 'Инсталиран софтуер',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версия',
+'version-entrypoints-header-url' => 'Адрес',
 
 # Special:FilePath
 'filepath' => 'Път към файл',
index 27e6ddf..f40423a 100644 (file)
@@ -60,41 +60,87 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Tungkaran_lawas' ),
        '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' ),
        'ChangeEmail'               => array( 'Ganti_suril' ),
+       'ChangePassword'            => array( 'Ganti_katasunduk' ),
        'ComparePages'              => array( 'Bandingakan_tungkaran' ),
        'Confirmemail'              => array( 'Kunpirmasi_suril' ),
-       'Contributions'             => array( 'Kuntribusi_pamakai' ),
+       'Contributions'             => array( 'Sumbangan_pamakai' ),
        'CreateAccount'             => array( 'Ulah_akun' ),
        'Deadendpages'              => array( 'Tungkaran_buntu' ),
-       'DeletedContributions'      => array( 'Kuntribusi_nang_dihapus' ),
-       'EditWatchlist'             => array( 'Babak_daptan_pantauan' ),
-       'Fewestrevisions'           => array( 'Parubahan_tasadikit' ),
-       'Filepath'                  => array( 'Lukasi_barakas' ),
+       'DeletedContributions'      => array( 'Sumbangan_nang_dihapus' ),
+       'Disambiguations'           => array( 'Disambiguasi' ),
+       'EditWatchlist'             => array( 'Babak_daptar_pantauan' ),
+       'Fewestrevisions'           => array( 'Paubahan_tasadikit' ),
+       'FileDuplicateSearch'       => array( 'Panggagaian_barakas_kambar' ),
+       'Filepath'                  => array( 'Andakan_barakas' ),
+       'BlockList'                 => array( 'Daptar_pamblukiran' ),
+       'LinkSearch'                => array( 'Tautan_luar' ),
        'Listadmins'                => array( 'Daptar_pambakal' ),
        'Listbots'                  => array( 'Daptar_bot' ),
        'Listfiles'                 => array( 'Daptar_barakas' ),
-       'Listgrouprights'           => array( 'Daptar_hak_kalumpuk' ),
-       'Listredirects'             => array( 'Daptar_paalihan' ),
+       'Listgrouprights'           => array( 'Daptar_hak_galambang' ),
+       'Listredirects'             => array( 'Daptar_paugahan' ),
        'Listusers'                 => array( 'Daptar_pamakai' ),
        'Log'                       => array( 'Catatan' ),
+       'Lonelypages'               => array( 'Tungkaran_yatim' ),
        'Longpages'                 => array( 'Tungkaran_panjang' ),
-       'Mostcategories'            => array( 'Tumbung_tabanyak' ),
+       'MergeHistory'              => array( 'Sajarah_panggabungan' ),
+       'MIMEsearch'                => array( 'Panggagaian_MIME' ),
+       'Mostcategories'            => array( 'Tumbung_pambanyaknya' ),
+       'Mostimages'                => array( 'Barakas_paling_dipakai' ),
        'Mostlinked'                => array( 'Tungkaran_paling_dipakai' ),
        'Mostlinkedcategories'      => array( 'Tumbung_paling_dipakai' ),
        'Mostlinkedtemplates'       => array( 'Citakan_paling_dipakai' ),
-       'Mostrevisions'             => array( 'Paubahan_tabanyak' ),
+       'Mostrevisions'             => array( 'Paubahan_pambanyaknya' ),
        'Movepage'                  => array( 'Pindahakan_tungkaran' ),
-       'Mycontributions'           => array( 'Kuntribusi_ulun' ),
+       'Mycontributions'           => array( 'Sumbangan_ulun' ),
        'Mypage'                    => array( 'Tungkaran_ulun' ),
        'Mytalk'                    => array( 'Pamandiran_ulun' ),
+       'Myuploads'                 => array( 'Unggahan_ulun' ),
        'Newimages'                 => array( 'Barakas_hanyar' ),
        'Newpages'                  => array( 'Tungkaran_hanyar' ),
+       'PermanentLink'             => array( 'Tautan_tatap' ),
+       'Popularpages'              => array( 'Tungkaran_popular' ),
+       'Preferences'               => array( 'Kakatujuan' ),
        'Protectedpages'            => array( 'Tungkaran_nang_dilindungi' ),
        'Protectedtitles'           => array( 'Judul_nang_dilindungi' ),
        'Randompage'                => array( 'Tungkaran_babarang' ),
-       'Recentchanges'             => array( 'Paubahan_tahanyar' ),
+       'Randomredirect'            => array( 'Paugahan_babarang' ),
+       'Recentchanges'             => array( 'Paubahan_pahanyarnya' ),
+       'Recentchangeslinked'       => array( 'Paubahan_tarait' ),
+       'Revisiondelete'            => array( 'Hapus_ralatan' ),
+       'RevisionMove'              => array( 'Ralatan_pamindahan' ),
+       'Search'                    => array( 'Panggagaian' ),
+       'Shortpages'                => array( 'Tungkaran_handap' ),
+       'Specialpages'              => array( 'Tungkaran_istimiwa' ),
+       'Statistics'                => array( 'Statistik' ),
+       'Tags'                      => array( 'Tag' ),
+       'Unblock'                   => array( 'Pawalangan_pamblukiran' ),
+       'Uncategorizedcategories'   => array( 'Tumbung_kada_batumbung' ),
+       'Uncategorizedimages'       => array( 'Barakas_kada_batumbung' ),
+       'Uncategorizedpages'        => array( 'Tungkaran_kada_batumbung' ),
+       'Uncategorizedtemplates'    => array( 'Citakan_kada_batumbung' ),
+       'Undelete'                  => array( 'Pawalangan_pahapusan' ),
+       'Unusedcategories'          => array( 'Tumbung_puang' ),
+       'Unusedimages'              => array( 'Barakas_kada_tapakai' ),
+       'Unusedtemplates'           => array( 'Citakan_kada_tapakai' ),
+       'Unwatchedpages'            => array( 'Tungkaran_kada_di-itihi' ),
+       'Upload'                    => array( 'Paunggahan' ),
+       'Userlogin'                 => array( 'Babuat_log' ),
+       'Userlogout'                => array( 'Kaluar_log' ),
+       'Userrights'                => array( 'Hak_pamakai' ),
+       'Wantedcategories'          => array( 'Tumbung_nang_dikahandaki' ),
+       'Wantedfiles'               => array( 'Barakas_nang_dikahandaki' ),
+       'Wantedpages'               => array( 'Tungkaran_nang_dikahandaki' ),
+       'Wantedtemplates'           => array( 'Citakan_nang_dikahandaki' ),
+       'Watchlist'                 => array( 'Daptar_itihan' ),
+       'Whatlinkshere'             => array( 'Tautan_balik' ),
+       'Withoutinterwiki'          => array( 'Kada_pakai_interwiki' ),
 );
 
 $messages = array(
index adb4d68..9bccafe 100644 (file)
@@ -454,6 +454,8 @@ $2',
 'filereadonlyerror' => '"$1" ফাইলটিকে পরিবর্তন করা সম্ভব হচ্ছে না কারন "$2" ফাইল রিপোসিটোরি রিড-অনলি-মোডে আছে।
 
 একজন প্রশাসক যিনি এটাকে লকড করেছেন তার যৌক্তিকতা দেওয়া হল: "$3"',
+'invalidtitle-knownnamespace' => 'অবৈধ শিরনাম, যেখানে নামস্থান "$2" এবং লেখা হয়েছে "$3"',
+'invalidtitle-unknownnamespace' => 'অবৈধ শিরনাম, যেখানে ব্যবহৃত হয়েছে অপরিচিত নামস্থান সংখ্যা $1 এবং লেখা হয়েছে "$2"',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগারেশন: অজ্ঞাত ভাইরাস স্কেনার: ''$1''",
@@ -767,7 +769,8 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
 আপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন, বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন।
 '''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না!'''",
 'copyrightwarning2' => "অনুগ্রহ করে লক্ষ করুন: {{SITENAME}}-এর এই ভুক্তিতে আপনার লেখা বা অবদান অন্যান্য ব্যবহারকারীরা পরিবর্তন বা পরিবর্ধন করতে, এমনকি মুছে ফেলতে পারবেন। {{SITENAME}} এ আপনার সকল লেখালেখি/অবদান গনু ফ্রি ডকুমেন্টেশনের ($1) আওতায় বিনামূল্যে প্রাপ্য ও হস্তান্তরযোগ্য। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে ব্যবহার করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না। আপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন (তবে কোন মৌলিক গবেষণা নয়) বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন। '''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না।'''",
-'longpageerror' => " '''ত্রুটি:  আপনার জমা দেয়া টেক্সটের পরিমাণ $1 কিলোবাইট, যা সর্বোচ্চ সীমা $2 কিলোবাইটের চেয়ে বেশি। এটি সংরক্ষণ করা সম্ভব নয়।'''",
+'longpageerror' => "'''ত্রুটি:  আপনার জমা দেয়া টেক্সটের পরিমাণ {{PLURAL:$1|এক কিলোবাইট|$1 কিলোবাইট}}, যা সর্বোচ্চ সীমা {{PLURAL:$2|এক কিলোবাইটের|$2 কিলোবাইটের}} চেয়ে বেশি।'''
+এটি সংরক্ষণ করা সম্ভব নয়।",
 'readonlywarning' => "'''সতর্কীকরণ: রক্ষণাবেক্ষণের জন্য ডাটাবেজ অবরুদ্ধ রাখা হয়েছে, তাই এই মুহূর্তে আপনার সম্পাদনা সংরক্ষণ করতে পারবেন না।
 আপনি চাইলে লেখাটি কাট এবং পেষ্ট করে ভবিষ্যতের জন্য কোন টেক্সট ফাইলে সংরক্ষণ করতে পারেন।'''
 
@@ -880,17 +883,33 @@ $3-এর দেয়া কারণ হল ''$2''",
 'rev-deleted-text-unhide' => "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।
 বিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।
 আপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
+'rev-suppressed-text-unhide' => "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।
+বিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।
+আপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
 'rev-deleted-text-view' => 'পাতার এই সংশোধনটি অপসারণ করা হয়েছে।
 আপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।',
+'rev-suppressed-text-view' => 'পাতার এই সংশোধনটি অপসারণ করা হয়েছে।
+আপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।',
 'rev-deleted-no-diff' => "আপনি পাতার এই পার্থক্যটি দেখতে পারবেন না কারণ একটি সংস্করণ '''অপসারিত''' হয়েছে।
 বিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।",
 'rev-suppressed-no-diff' => "আপনি এই পার্থক্যটি দেখতে পারবেন না কারণ একটি সংস্করণ '''অপসারণ''' করা হয়েছে।",
+'rev-deleted-unhide-diff' => "পার্থক্য তুলনা করা হয়েছে এমন সংস্করণগুলোর কোনো একটি '''অপসারিত''' হয়েছে।
+বিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।
+আপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
+'rev-suppressed-unhide-diff' => "তুলনা করা হয়েছে এমন সংস্করণগুলোর কোনো একটি '''অপসারিত''' হয়েছে।
+বিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।
+আপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
+'rev-deleted-diff-view' => "তুলনা করা হয়েছে এমন সংস্করণগুলোর কোনো একটি '''অপসারণ''' করা হয়েছে।
+আপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।",
+'rev-suppressed-diff-view' => "তুলনা করা হয়েছে এমন সংস্করণগুলোর কোনো একটি '''অপসারণ''' করা হয়েছে।
+আপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।",
 'rev-delundel' => 'দেখাও/আড়াল করো',
 'rev-showdeleted' => 'দেখাও',
 'revisiondelete' => 'অবলুপ্ত/পুনঃস্থাপন সংশোধনসমূহ',
 'revdelete-nooldid-title' => 'বেঠিক লক্ষ্য সংশোধন',
 'revdelete-nooldid-text' => 'এই কাজটি সম্পন্ন করার জন্য আপনি কোন লক্ষ্য সংশোধন নির্বাচন করেননি, নির্বাচিত সংশোধন নেই, অথবা আপনি বর্তমান সংশোধন লুকাতে চাইছেন।',
 'revdelete-nologtype-title' => 'কোনো লগ টাইপ দেওয়া হয়নি।',
+'revdelete-nologtype-text' => 'আপনি হয়তো এই কাজটি করার জন্য কোনো লগ নির্ধারণ করেননি।',
 'revdelete-nologid-title' => 'ভুল লগ ভুক্তি',
 'revdelete-no-file' => 'নির্ধারিত ফাইলটি নেই।',
 'revdelete-show-file-submit' => 'হ্যাঁ',
@@ -965,6 +984,8 @@ $1",
 
 # Diffs
 'history-title' => '"$1" এর সংশোধনের ইতিহাস',
+'difference-title' => '"$1"-এর বিভিন্ন সংস্করণের মধ্যে পার্থক্য',
+'difference-title-multipage' => '"$1" ও "$2"-পাতার মধ্যে পার্থক্য',
 'difference-multipage' => 'পাতাগুলোর মধ্যে পার্থক্য',
 'lineno' => '$1 নং লাইন:',
 'compareselectedversions' => 'নির্বাচিত সংস্করণগুলো তুলনা করো',
@@ -1057,6 +1078,7 @@ $1",
 'prefs-beta' => 'বেটা বৈশিষ্টসমূহ',
 'prefs-datetime' => 'তারিখ ও সময়',
 'prefs-labs' => 'পরীক্ষাগার বৈশিষ্টসমূহ',
+'prefs-user-pages' => 'ব্যবহারকারীর পাতা',
 'prefs-personal' => 'ব্যবহারকারীর বৃত্তান্ত',
 'prefs-rc' => 'সাম্প্রতিক পরিবর্তনসমূহ',
 'prefs-watchlist' => 'নজরতালিকা',
@@ -1453,6 +1475,8 @@ $1",
 
 # File backend
 'backend-fail-delete' => '$1 ফাইলটি অপসারণ সম্ভব নয়।',
+'backend-fail-read' => '$1 ফাইলটি ওপেন করা যাচ্ছে না।',
+'backend-fail-create' => '$1 ফাইলটি তৈরী করা যাচ্ছে না।',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ফাইলটির জিপ পরীক্ষা করার সময় একটি ত্রুটি দেখা দিয়েছে।',
@@ -1528,6 +1552,7 @@ $1",
 'linkstoimage' => 'নিচের {{PLURAL:$1|টি পাতা|$1টি পাতা}} থেকে এই ফাইলে সংযোগ আছে:',
 'nolinkstoimage' => 'এই ফাইলে সংযোগ করে এমন কোন পাতা নেই।',
 'morelinkstoimage' => 'এই ফাইলের [[Special:WhatLinksHere/$1|আরও লিঙ্ক]] দেখাও।',
+'linkstoimage-redirect' => '$1 (ফাইল পুনঃর্নিদেশ) $2',
 'sharedupload' => 'এই ফাইলটি $1 থেকে নেওয়া হয়েছে এবং এবং অন্যান্য প্রকল্পেও ব্যবহৃত হতে পারে।',
 'sharedupload-desc-here' => 'এই ফাইলটি $1 থেকে এবং অন্যান্য প্রকল্পে ব্যবহৃত হতে পারে।
 এর [$2 ফাইল বিবরণ পৃষ্ঠা] উপর বর্ণনা নিম্নে দেখানো হলো।',
index 5112c58..aeccfb7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Bishnupria Manipuri (à¦\87মার à¦ à¦¾à¦°/বিষà§\8dণà§\81পà§\8dরিয়া à¦®à¦£à¦¿à¦ªà§\81রà§\80)
+/** Bishnupria Manipuri (বিষ্ণুপ্রিয়া মণিপুরী)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 330f167..89e6163 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Breton (Brezhoneg)
+/** Breton (brezhoneg)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -185,7 +185,7 @@ $messages = array(
 'tog-hidepatrolled' => "Kuzhat ar c'hemmoù evezhiet e-touez ar c'hemmoù diwezhañ",
 'tog-newpageshidepatrolled' => 'Kuzhat ar pajennoù evezhiet diouzh roll ar pajennoù nevez',
 'tog-extendwatchlist' => 'Astenn ar roll evezhiañ a-benn diskouez an holl gemmoù ha neket ar re ziwezhañ hepken.',
-'tog-usenewrc' => "Ober gant ar c'hemmoù nevez gwellaet<br /> (rekis eo JavaScript)",
+'tog-usenewrc' => "Diskouez ar c'hemmoù nevez en ur feson kempennoc'h (rekis eo JavaScript)",
 'tog-numberheadings' => 'Niverenniñ emgefre an titloù',
 'tog-showtoolbar' => 'Diskouez ar varrenn gant ar meuzioù skridaozañ',
 'tog-editondblclick' => 'Daouglikañ evit kemmañ ur bajenn (JavaScript)',
@@ -564,6 +564,8 @@ Setu amañ perak ''$2''.",
 'filereadonlyerror' => 'Dibosupl kemmañ ar restr "$1" abalamour m\'emañ ar c\'havlec\'h restroù "$2" e mod lenn nemetken.
 
 "\'\'$3\'\'" eo an abeg roet gant ar merour en deus prennet anezhi.',
+'invalidtitle-knownnamespace' => 'Titl direizh gant an esaouenn anv "$2" hag an destenn "$3"',
+'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
 
 # Virus scanner
 'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
@@ -599,7 +601,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
 'createaccount' => 'Krouiñ ur gont nevez',
 'gotaccount' => "Ur gont zo ganeoc'h dija ? '''$1'''.",
 'gotaccountlink' => 'Kevreañ',
-'userlogin-resetlink' => "Ha disoñjet hoc'h eus ho titouroù kevreañ ?",
+'userlogin-resetlink' => "Ha disoñjet eo bet ho titouroù kevreañ ganeoc'h ?",
 'createaccountmail' => 'dre bostel',
 'createaccountreason' => 'Abeg :',
 'badretype' => 'Ne glot ket ar gerioù-tremen an eil gant egile.',
@@ -944,6 +946,8 @@ A-gostez eo bet lezet an arventenn-se.',
 'node-count-exceeded-warning' => "Pajenn a ya en tu all d'an niver a skoulmoù",
 'expansion-depth-exceeded-category' => "Pajennoù m'eur aet dreist d'an donder astenn",
 'expansion-depth-exceeded-warning' => "Pajenn a ya dreist d'an donder astenn",
+'parser-unstrip-loop-warning' => "Detektet ez eus bet ul lagadenn n'haller ket divontañ",
+'parser-unstrip-recursion-limit' => "Aet dreist d'ar vevenn rekurziñ n'haller ket divontañ : $1",
 
 # "Undo" feature
 'undo-success' => "Gallout a reer disteurel ar c'hemmoù-mañ. Gwiriit, mar plij, gant ar geñveriadenn a-is evit bezañ sur eo an dra-se a fell deoc'h ober; goude-se enrollit ar c'hemmoù a-is a-benn echuiñ disteurel ar c'hemmoù.",
@@ -1119,6 +1123,8 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
 
 # Diffs
 'history-title' => 'Istor stummoù disheñvel "$1"',
+'difference-title' => 'Diforc\'hioù etre adstummoù "$1"',
+'difference-title-multipage' => 'Diforc\'hioù etre ar pajennoù "$1" ha "$2"',
 'difference-multipage' => "(diforc'h etre ar pajennoù)",
 'lineno' => 'Linenn $1:',
 'compareselectedversions' => 'Keñveriañ ar stummoù diuzet',
@@ -1213,6 +1219,7 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
 'prefs-beta' => 'Perzhioù beta',
 'prefs-datetime' => 'Deiziad hag eur',
 'prefs-labs' => 'Perzhioù "labs"',
+'prefs-user-pages' => 'Pajennoù implijer',
 'prefs-personal' => 'Titouroù personel',
 'prefs-rc' => 'Kemmoù diwezhañ',
 'prefs-watchlist' => 'Roll evezhiañ',
@@ -1346,7 +1353,7 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'group' => 'Strollad :',
 'group-user' => 'Implijerien',
 'group-autoconfirmed' => 'Implijerien bet kadarnaet ent emgefre',
-'group-bot' => 'Botoù',
+'group-bot' => 'Robotoù',
 'group-sysop' => 'Merourien',
 'group-bureaucrat' => 'Burevidi',
 'group-suppress' => 'Dindan evezh',
@@ -1665,13 +1672,13 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
 'upload-copy-upload-invalid-domain' => "N'haller ket seveniñ enporzhiadennoù a-bell adalek an domani-mañ.",
 
 # File backend
-'backend-fail-stream' => 'Dibosupl lenn ar restr $1.',
+'backend-fail-stream' => 'Dibosupl eo lenn ar restr $1.',
 'backend-fail-backup' => 'Dibosupl enrollañ ar restr $1.',
 'backend-fail-notexists' => "N'eus ket eus ar restr $1.",
 'backend-fail-hashes' => 'Dibosupl eo bet tapout hacherezh ar restr evit keñveriañ.',
 'backend-fail-notsame' => "Ur restr disheñvel zo e $1 c'hoazh.",
 'backend-fail-invalidpath' => "$1 n'eo ket un hent stokañ reizh.",
-'backend-fail-delete' => 'Dibosupl eo diverkañ a restr $1.',
+'backend-fail-delete' => 'Dibosupl eo diverkañ ar restr $1.',
 'backend-fail-alreadyexists' => 'Ar restr "$1" zo anezhi c\'hoazh.',
 'backend-fail-store' => 'Dibosupl stokañ ar restr $1 e $2.',
 'backend-fail-copy' => 'Dibosupl eilañ ar restr "$1" war-du "$2".',
@@ -1680,14 +1687,15 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
 'backend-fail-writetemp' => 'Dibosupl skrivañ er restr padennek.',
 'backend-fail-closetemp' => 'Dibosupl eo serriñ ar restr padennek.',
 'backend-fail-read' => 'Dibosupl lenn ar restr $1.',
-'backend-fail-create' => 'Dibosupl krouiñ ar restr $1.',
-'backend-fail-maxsize' => "Dibosupl krouiñ ar restr $1 peogwir eo brasoc'h eget {{PLURAL:$2|un okted|$2 okted}}.",
+'backend-fail-create' => 'Dibosupl eo krouiñ ar restr $1.',
+'backend-fail-maxsize' => "Dibosupl skrivañ er restr $1 peogwir eo brasoc'h eget {{PLURAL:$2|un okted|$2 okted}}.",
 'backend-fail-readonly' => 'Emañ an dermenell stokañ "$1" e mod lenn hepken. Setu aze an abeg a oa bet roet : "$2".',
 'backend-fail-synced' => 'Emañ ar restr "$1" en ur stad direizhet en termenelloù stokañ diabarzh',
 'backend-fail-connect' => 'Dibosupl kevreañ ouzh termenell stokañ ar restr "$1".',
 'backend-fail-internal' => 'C\'hoarvezet ez eus ur fazi dianav e termenell stokañ ar restr "$1".',
 'backend-fail-contenttype' => 'Dibosupl termeniñ ar seurt danvez da enrollañ e "$1".',
 'backend-fail-batchsize' => 'Pourvezet he deus an dermenell stokañ ur pakad a $1 {{PLURAL:$1|oberiadenn|oberiadenn}}; sevel a ra ar vevenn da $2 {{PLURAL:$2|oberiadenn|oberiadenn}}.',
+'backend-fail-usable' => "Dibosupl skrivañ ar restr $1 rak re skort eo an aotreoù pe mankout a ra kavlec'hioù/endalc'herioù.",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'N\'eus ket bet gallet kevreañ ouzh diaz roadennoù ar marilh evit an dermenell stokañ "$1".',
@@ -2007,6 +2015,7 @@ Na zisoñjit ket e c'hall lec'hiennoù all kaout ul liamm eeun war-du ur restr b
 Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (diwallit ouzh ar pennlizherennoù) pe ar bajenn a fell deoc'h (memes tra).",
 'logempty' => 'Goullo eo istor ar bajenn-mañ.',
 'log-title-wildcard' => 'Klask an titloù a grog gant an destenn-mañ',
+'showhideselectedlogentries' => 'Diskouez/kuzhat penngerioù ar marilh bet diuzet',
 
 # Special:AllPages
 'allpages' => 'An holl bajennoù',
@@ -2348,7 +2357,7 @@ Ma'z eus bet krouet ur bajenn nevez dezhi an hevelep anv abaoe an diverkadenn, e
 'undelete-revision' => 'Stumm diverket eus $1, (gwiriadenn eus $4 da $5) gant $3 :',
 'undeleterevision-missing' => "Stumm fall pe diank. Pe hoc'h eus heuliet ul liamm fall, pe eo bet diziverket ar stumm pe c'hoazh eo bet lamet diouzh an dielloù.",
 'undelete-nodiff' => "N'eus bet kavet stumm kent ebet.",
-'undeletebtn' => 'Diziverkañ!',
+'undeletebtn' => 'Assevel',
 'undeletelink' => 'gwelet/assevel',
 'undeleteviewlink' => 'gwelet',
 'undeletereset' => 'Adderaouekaat',
@@ -2906,6 +2915,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'spambot_username' => 'Naetaat ar strob gant MediaWiki',
 'spam_reverting' => "Distreiñ d'ar stumm diwezhañ hep liamm davet $1",
 'spam_blanking' => 'Diverkañ an holl stummoù enno liammoù davet $1',
+'spam_deleting' => 'An holl stummoù enno liammoù war-zu $1, o tiverkañ',
 
 # Info page
 'pageinfo-title' => 'Titouroù evit "$1"',
@@ -3835,4 +3845,6 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
 'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Dibosupl eo bet tapout ar prennoù war ar servijer $1.',
 );
index bf1aceb..68c3e0e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Bosnian (Bosanski)
+/** Bosnian (bosanski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -61,6 +61,7 @@ $specialPageAliases = array(
        'Booksources'               => array( 'KnjizniIzvori' ),
        'BrokenRedirects'           => array( 'NedovršenaPreusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
+       'ChangeEmail'               => array( 'IzmjeniMail' ),
        'ChangePassword'            => array( 'PonistiLozinku' ),
        'ComparePages'              => array( 'UporedjivanjeStranica' ),
        'Confirmemail'              => array( 'PotvrdiEmail' ),
@@ -70,6 +71,7 @@ $specialPageAliases = array(
        'DeletedContributions'      => array( 'ObrisaniDoprinosi' ),
        'Disambiguations'           => array( 'Čvor' ),
        'DoubleRedirects'           => array( 'DvostrukaPreusmjerenja' ),
+       'EditWatchlist'             => array( 'IzmjeniPraćeniSpisak' ),
        'Emailuser'                 => array( 'EmailKorisnika' ),
        'Export'                    => array( 'Izvoz' ),
        'Fewestrevisions'           => array( 'Najmanje_uređivane_stranice' ),
@@ -522,7 +524,7 @@ $1',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju stranice',
 'edithelppage' => 'Help:Uređivanje',
-'helppage' => 'Help:Sadržaj',
+'helppage' => 'Pomoć:Sadržaj',
 'mainpage' => 'Početna strana',
 'mainpage-description' => 'Početna strana',
 'policy-url' => 'Project:Pravila',
@@ -638,8 +640,8 @@ Moguće je da ju je neko drugi već obrisao.',
 'cannotdelete-title' => 'Ne mogu izbrisati stranicu "$1"',
 'badtitle' => 'Loš naslov',
 'badtitletext' => 'Zahtjevani naslov stranice je bio neispravan, prazan ili neispravno povezan međujezički ili interviki naslov.',
-'perfcached' => 'Slijedeći podaci su keširani i možda neće biti u potpunosti ažurirani. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Slijedeći podaci se nalaze u memoriji i zadnji put su ažurirani $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Slijedeći podaci su keširani i možda neće biti u potpunosti ažurirani. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata}}.',
+'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 />
@@ -977,6 +979,7 @@ Izmjena je odbačena da bi se spriječilo uništavanje teksta stranice.
 To se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
 'edit_form_incomplete' => "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
 'editing' => 'Uređujete $1',
+'creating' => 'Pravljenje stranice $1',
 'editingsection' => 'Uređujete $1 (dio)',
 'editingcomment' => 'Uređujete $1 (nova sekcija)',
 'editconflict' => 'Sukobljenje izmjene: $1',
@@ -1046,6 +1049,7 @@ Izgleda da je obrisana.',
 'edit-no-change' => 'Vaša izmjena je ignorirana, jer nije bilo promjena teksta stranice.',
 'edit-already-exists' => 'Stranica nije mogla biti kreirana.
 Izgleda da već postoji.',
+'defaultmessagetext' => 'Uobičajeni tekst poruke',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Upozorenje: Ova stranica sadrži previše poziva opterećujućih parserskih funkcija.
@@ -1061,6 +1065,12 @@ Ovakvi argumenti se trebaju izbjegavati.',
 'parser-template-loop-warning' => 'Otkrivena kružna greška u šablonu: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Dubina uključivanja šablona prekoračena ($1)',
 'language-converter-depth-warning' => 'Prekoračena granica dubine jezičkog pretvarača ($1)',
+'node-count-exceeded-category' => 'Stranice sa prekoračenim brojem čvorova',
+'node-count-exceeded-warning' => 'Stranice koje imaju prevelik broj čvorova',
+'expansion-depth-exceeded-category' => 'Stranice koje su prekoračile dubinu proširenja',
+'expansion-depth-exceeded-warning' => 'Stranice koje su prekoračile dubinu proširenja',
+'parser-unstrip-loop-warning' => 'Pronađena petlja',
+'parser-unstrip-recursion-limit' => 'Prekoračeno ograničenje rekurzije ($1)',
 
 # "Undo" feature
 'undo-success' => 'Izmjena se može vratiti.
@@ -1238,7 +1248,9 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'mergelogpagetext' => 'Ispod je spisak nedavnih spajanja historija stranica.',
 
 # Diffs
-'history-title' => 'Historija izmjena stranice "$1"',
+'history-title' => 'Historija revizija "$1"',
+'difference-title' => 'Razlike između revizija od "$1"',
+'difference-title-multipage' => 'Razlika između stranica "$1" i "$2"',
 'difference-multipage' => '(Razlika između stranica)',
 'lineno' => 'Linija $1:',
 'compareselectedversions' => 'Uporedite označene verzije',
@@ -1334,6 +1346,7 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'prefs-beta' => 'Beta mogućnosti',
 'prefs-datetime' => 'Datum i vrijeme',
 'prefs-labs' => 'Eksperimentalne mogućnosti',
+'prefs-user-pages' => 'Korisničke stranice',
 'prefs-personal' => 'Korisnički podaci',
 'prefs-rc' => 'Podešavanja nedavnih izmjena',
 'prefs-watchlist' => 'Moji praćeni članci',
@@ -1405,6 +1418,7 @@ Ovo se ne može vratiti unazad.',
 'yourrealname' => 'Vaše pravo ime:',
 'yourlanguage' => 'Jezik:',
 'yourvariant' => 'Varijanta jezika:',
+'prefs-help-variant' => 'Vaša preferirana varijanta ili pravopis za prikaz sadržaja stranica na ovoj wiki.',
 'yournick' => 'Nadimak (za potpise):',
 'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
 'badsig' => 'Loš sirovi potpis.
@@ -1459,7 +1473,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
 'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
 'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
-'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
+'userrights-notallowed' => 'Vaš račun nema privilegije da dodaje ili oduzima prava korisnika.',
 'userrights-changeable-col' => 'Grupe koje možete mijenjati',
 'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
 
@@ -1546,7 +1560,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
 'right-override-export-depth' => 'Izvoz stranica uključujući povezane stranice do dubine od 5 linkova',
 'right-sendemail' => 'Slanje e-maila drugim korisnicima',
-'right-passwordreset' => 'Poništavanje šifre korisnika ([[Special:PasswordReset|posebna stranica]])',
+'right-passwordreset' => 'Pogledaj e-mailove za obnavljanje šifre',
 
 # User rights log
 'rightslog' => 'Zapisnik korisničkih prava',
@@ -1580,6 +1594,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'action-suppressionlog' => 'vidite ovaj privatni zapis',
 'action-block' => 'blokirate uređivanje ovog korisnika',
 'action-protect' => 'promijeniti nivo zaštite za ovu stranicu',
+'action-rollback' => 'brzo vraćanje izmjena zadnjeg korisnika koji je uređivao određenu stranicu',
 'action-import' => 'uvozite ovu stranicu iz druge wiki',
 'action-importupload' => 'uvezete ovu stranicu putem postavljanja datoteke',
 'action-patrol' => 'označite izmjene drugih kao patrolirane',
@@ -1621,6 +1636,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
 'rc_categories' => 'Ograniči na kategorije (razdvojene sa "|")',
 'rc_categories_any' => 'Sve',
+'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene',
 'newsectionsummary' => '/* $1 */ nova sekcija',
 'rc-enhanced-expand' => 'Pokaži detalje (neophodna JavaScript)',
 'rc-enhanced-hide' => 'Sakrij detalje',
@@ -1783,11 +1799,18 @@ Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administrator
 'upload-too-many-redirects' => 'URL sadrži previše preusmjerenja',
 'upload-unknown-size' => 'Nepoznata veličina',
 'upload-http-error' => 'Desila se HTTP greška: $1',
+'upload-copy-upload-invalid-domain' => 'Kopije postavljenih datoteka nisu dostupne sa ove domene.',
 
 # File backend
+'backend-fail-stream' => 'Ne mogu emitirati datoteku $1.',
 'backend-fail-backup' => 'Ne može sigurnosno kopirati datoteku $1.',
 'backend-fail-notexists' => 'Datoteka $1 ne postoji.',
+'backend-fail-hashes' => 'Nisam našao datoteku disperzije radi usporedbe.',
+'backend-fail-notsame' => 'Već postoji različita datoteka $1.',
+'backend-fail-invalidpath' => '$1 nije valjana putanja za skladištenje.',
+'backend-fail-delete' => 'Ne može se izbrisati datoteka $1.',
 'backend-fail-alreadyexists' => 'Datoteka $1 već postoji.',
+'backend-fail-store' => 'Ne može se spremiti datoteka $1 na $2.',
 'backend-fail-read' => 'Ne mogu čitati datoteku $1.',
 'backend-fail-create' => 'Ne mogu napraviti datoteku $1.',
 
@@ -1857,9 +1880,8 @@ Možda možete pokušati kada bude manje opterećenje.',
 'upload_source_file' => ' (datoteka na Vašem računaru)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ova specijalna stranica prikazuje sve postavljene datoteke.
-Uobičajeno je da posljednja postavljena datoteka bude prikazana na vrhu spiska.
-Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
+'listfiles-summary' => 'Ova posebna stranica prikazuje sve postavljene datoteke.
+Kada je filtrirana od strane korisnika, prikazane su samo datoteke ako je korisnik postavio posljednju verziju te datoteke.',
 'listfiles_search_for' => 'Traži medije po imenu:',
 'imgfile' => 'datoteka',
 'listfiles' => 'Spisak slika',
@@ -1986,7 +2008,7 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
 'statistics-users-active-desc' => 'Korisnici koju su izvršili akciju u toku {{PLURAL:$1|zadnjeg dana|zadnja $1 dana|zadnjih $1 dana}}',
 'statistics-mostpopular' => 'Najviše pregledane stranice',
 
-'disambiguations' => 'Stranice za čvor članke',
+'disambiguations' => 'Stranice koje vode na čvor članke',
 'disambiguationspage' => '{{ns:template}}:Čvor',
 'disambiguations-text' => "Slijedeće stranice su povezane sa '''čvor stranicom'''.
 Po pravilu, one se trebaju povezati sa konkretnim člankom.<br />
@@ -2087,7 +2109,7 @@ na kome bi se izvela ova funkcija.',
 'booksources-invalid-isbn' => 'Navedeni ISBN broj nije validan; molimo da provjerite da li je došlo do greške pri kopiranju iz prvobitnog izvora.',
 
 # Special:Log
-'specialloguserlabel' => 'Korisnik:',
+'specialloguserlabel' => 'Izvršilac:',
 'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
 'log' => 'Protokoli',
 'all-logs-page' => 'Svi javni registri',
@@ -2130,12 +2152,13 @@ Vidi također [[Special:WantedCategories|zatražene kategorije]].',
 'sp-deletedcontributions-contribs' => 'doprinosi',
 
 # Special:LinkSearch
-'linksearch' => 'Vanjski linkovi',
+'linksearch' => 'Pretraga vanjskih linkova',
 'linksearch-pat' => 'Šema traženja:',
 'linksearch-ns' => 'Imenski prostor:',
 'linksearch-ok' => 'Traži',
-'linksearch-text' => 'Općeniti izrazi poput "*.wikipedia.org" se mogu koristiti.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti općeniti izrazi poput "*.wikipedia.org"
+Potrebna je najmanje osnovna domena, naprimjer "*.org."<br />
+Podržani protokoli: <tt>$1</tt> (ne dodavajte bilo koji od ovih u vašu pretragu).',
 'linksearch-line' => '$1 je povezan od $2',
 'linksearch-error' => 'Džokeri se mogu pojavljivati samo na početku naziva servera.',
 
index 7c68f0d..3b2852c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Catalan (Català)
+/** Catalan (català)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -199,7 +199,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Amaga edicions patrullades als canvis recents',
 'tog-newpageshidepatrolled' => 'Amaga pàgines patrullades de la llista de pàgines noves',
 'tog-extendwatchlist' => 'Desplega la llista de seguiment per a mostrar tots els canvis afectats, no només els més recents',
-'tog-usenewrc' => 'Usa la presentació millorada dels canvis recents (cal JavaScript)',
+'tog-usenewrc' => 'Utilitza una presentació millorada dels canvis recents (cal JavaScript)',
 'tog-numberheadings' => 'Enumera automàticament els encapçalaments',
 'tog-showtoolbar' => "Mostra la barra d'eines d'edició (cal JavaScript)",
 'tog-editondblclick' => 'Edita les pàgines amb un doble clic (cal JavaScript)',
@@ -215,8 +215,8 @@ $messages = array(
 'tog-previewontop' => "Mostra una previsualització abans del quadre d'edició",
 'tog-previewonfirst' => 'Mostra una previsualització en la primera modificació',
 'tog-nocache' => 'Inhabilita la memòria cau de les pàgines',
-'tog-enotifwatchlistpages' => "Notifica'm per correu electrònic dels canvis a les pàgines que vigili",
-'tog-enotifusertalkpages' => "Notifica'm per correu quan hi hagi modificacions a la pàgina de discussió del meu compte d'usuari",
+'tog-enotifwatchlistpages' => "Envia'm un correu electrònic quan es modifiqui una pàgina de la meva llista de seguiment",
+'tog-enotifusertalkpages' => "Envia'm un correu electrònic quan es modifiqui la meva pàgina de discussió",
 'tog-enotifminoredits' => "Notifica'm per correu també en casos d'edicions menors",
 'tog-enotifrevealaddr' => "Mostra la meua adreça electrònica en els missatges d'avís per correu",
 'tog-shownumberswatching' => "Mostra el nombre d'usuaris que hi vigilen",
@@ -234,7 +234,7 @@ $messages = array(
 'tog-watchlisthideanons' => "Amaga a la llista les edicions d'usuaris anònims",
 'tog-watchlisthidepatrolled' => 'Amaga edicions patrullades de la llista de seguiment',
 'tog-nolangconversion' => 'Inhabilita la conversió de variants',
-'tog-ccmeonemails' => "Envia'm còpies dels missatges que enviï als altres usuaris.",
+'tog-ccmeonemails' => "Envia'm còpia dels missatges que enviï als altres usuaris",
 'tog-diffonly' => 'Amaga el contingut de la pàgina davall de la taula de diferències',
 'tog-showhiddencats' => 'Mostra les categories ocultes',
 'tog-noconvertlink' => 'Inhabilita la conversió dels títols dels enllaços',
@@ -579,7 +579,7 @@ Els seus motius han estat: «''$2''».",
 'filereadonlyerror' => 'No s\'ha pogut modificar el fitxer «$1» perquè el repositori de fitxers "$2" està en mode només de lectura.
 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' => "El títol amb l'espai de noms desconegut de número «$1» 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»',
 
 # Virus scanner
 'virus-badscanner' => "Mala configuració: antivirus desconegut: ''$1''",
@@ -954,6 +954,12 @@ Se n'han omès els arguments.",
 'parser-template-loop-warning' => "S'ha detectat un bucle de plantilla: [[$1]]",
 'parser-template-recursion-depth-warning' => "S'ha excedit el límit de recursivitat de plantilles ($1)",
 'language-converter-depth-warning' => "El límit de la profunditat del conversor d'idiomes ha excedit ($1)",
+'node-count-exceeded-category' => "Pàgines on s'ha excedit el recompte de nodes",
+'node-count-exceeded-warning' => 'La pàgina ha excedit el recompte de nodes',
+'expansion-depth-exceeded-category' => "Pàgines on s'ha excedit la profunditat d'expansió",
+'expansion-depth-exceeded-warning' => "La pàgina ha excedit la profunditat d'expansió",
+'parser-unstrip-loop-warning' => "S'ha detectat un bucle no desmuntable",
+'parser-unstrip-recursion-limit' => "S'ha excedit el límit ($1) de recursivitat no desmuntable",
 
 # "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ó.",
@@ -1130,9 +1136,9 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
 'mergelogpagetext' => "A sota hi ha una llista de les fusions més recents d'una pàgina d'historial en una altra.",
 
 # Diffs
-'history-title' => 'Historial de versions de «$1»',
-'difference-title' => 'Diferència entre les revisions de «$1»',
-'difference-title-multipage' => 'Diferència entre les pàgines «$1» i «$2»',
+'history-title' => '$1: Historial de revisions',
+'difference-title' => '$1: Diferència entre les revisions',
+'difference-title-multipage' => '$1 i $2: Diferència entre les pàgines',
 'difference-multipage' => '(Diferència entre pàgines)',
 'lineno' => 'Línia $1:',
 'compareselectedversions' => 'Compara les versions seleccionades',
@@ -1227,6 +1233,7 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
 'prefs-beta' => 'Característiques beta',
 'prefs-datetime' => 'Data i hora',
 'prefs-labs' => 'Característiques de laboratori',
+'prefs-user-pages' => "Pàgines d'usuari",
 'prefs-personal' => "Perfil d'usuari",
 'prefs-rc' => 'Canvis recents',
 'prefs-watchlist' => 'Llista de seguiment',
@@ -1277,7 +1284,7 @@ A continuació es mostra un valor generat de forma aleatòria que podeu fer serv
 'timezoneregion-europe' => 'Europa',
 'timezoneregion-indian' => 'Oceà Índic',
 'timezoneregion-pacific' => 'Oceà Pacífic',
-'allowemail' => "Habilita el correu electrònic des d'altres usuaris",
+'allowemail' => 'Permet que altres usuaris puguin enviar-me correus electrònics',
 'prefs-searchoptions' => 'Preferències de la cerca',
 'prefs-namespaces' => 'Espais de noms',
 'defaultns' => 'Cerca per defecte en els següents espais de noms:',
@@ -1318,7 +1325,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-i18n' => 'Internacionalització',
 'prefs-signature' => 'Signatura',
 'prefs-dateformat' => 'Format de la data',
-'prefs-timeoffset' => "Duració de l'acció",
+'prefs-timeoffset' => 'Decalatge horari',
 'prefs-advancedediting' => 'Opcions avançades',
 'prefs-advancedrc' => 'Opcions avançades',
 'prefs-advancedrendering' => 'Opcions avançades',
@@ -1675,13 +1682,14 @@ $1',
 'backend-fail-closetemp' => "No s'ha pogut tancar el fitxer temporal.",
 'backend-fail-read' => "No s'ha pogut llegir el fitxer $1.",
 'backend-fail-create' => "No s'ha pogut crear el fitxer $1.",
-'backend-fail-maxsize' => "No s'ha pogut crear el fitxer $1 perquè és més gran que {{PLURAL:$2|un byte|$2 bytes}}.",
+'backend-fail-maxsize' => "No s'ha pogut escriure el fitxer $1 perquè és més gran que {{PLURAL:$2|un byte|$2 bytes}}.",
 'backend-fail-readonly' => "El rerefons d'emmagatzemament «$1» actualment només és de lectura. Es va donar el motiu: «$2»",
 'backend-fail-synced' => "El fitxer «$1» es troba en un estat inconsistent amb els rerefons d'emmagatzemament interns.",
 'backend-fail-connect' => "No s'ha pogut connectar al fitxer de rerefons d'emmagatzemament «$1».",
 'backend-fail-internal' => "S'ha produït un error desconegut en el fitxer de rerefons d'emmagatzemament «$1».",
 'backend-fail-contenttype' => 'No es pot determinar el tipus de contingut del fitxer per emmagatzemar a «$1».',
 'backend-fail-batchsize' => "El rerefons d'emmagatzemament ha rebut un lot {{PLURAL:$1|d'$1 operació|de $1 operacions}} de fitxer; el límit és $2 {{PLURAL:$2|operació|operacions}}.",
+'backend-fail-usable' => "No s'ha pogut escriure el fitxer $1 a causa de permisos insuficients o perquè hi manquen directoris/contenidors.",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'No es pot connectar amb la base de dades per emmagatzemar el backend "$1".',
@@ -1998,6 +2006,7 @@ Tingueu en compte que altres llocs web poden enllaçar un fitxer amb un URL dire
 Podeu reduir l'extensió seleccionant el tipus de registre, el nom d'usuari realitzador (distingeix entre majúscules i minúscules), o la pàgina objectiu (també en distingeix).",
 'logempty' => 'No hi ha cap coincidència en el registre.',
 'log-title-wildcard' => 'Cerca els títols que comencin amb aquest text',
+'showhideselectedlogentries' => 'Mostra/amaga les entrades de registre seleccionades',
 
 # Special:AllPages
 'allpages' => 'Totes les pàgines',
@@ -2882,6 +2891,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'spambot_username' => 'Neteja de brossa del MediaWiki',
 'spam_reverting' => 'Es reverteix a la darrera versió que no conté enllaços a $1',
 'spam_blanking' => "Totes les revisions contenien enllaços $1, s'està deixant en blanc",
+'spam_deleting' => "S'estan suprimint totes les revisions que contenien enllaços a $1",
 
 # Info page
 'pageinfo-title' => 'Informació de «$1»',
@@ -3793,4 +3803,6 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'duration-centuries' => '$1 {{PLURAL:$1|segle|segles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mil·leni|mil·lenis}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "No s'han pogut aconseguir els bloquejos al servidor $1.",
 );
index 8ebb18e..d2b0477 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Xqt
  */
 
 $datePreferences = array(
@@ -413,7 +414,7 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
 
 # Recent changes
 'recentchanges' => 'Cī-bŏng gì gāi-biéng',
-'recentchangestext' => 'Găk cī hiĕk dŭi-sùi wiki cī-bŏng dék sĭng gì gāi-biéng.',
+'recentchanges-summary' => 'Găk cī hiĕk dŭi-sùi wiki cī-bŏng dék sĭng gì gāi-biéng.',
 'rcnote' => 'Â-dā̤ sê <strong>{{PLURAL:$1|ék|$2}}</strong> gĕ̤ng ī-nô̤i (hiêng-câi sê $3) dék sĭng gì <strong>{{PLURAL:$1|1|$1}}</strong> hâung gāi-biéng.',
 'rclistfrom' => 'Hiēng-sê iù $1 kăi-sṳ̄ gì sĭng gāi-biéng',
 'rcshowhideminor' => '$1 guó-éu siŭ-gāi',
@@ -500,6 +501,8 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
 'statistics' => 'Só-gé̤ṳ',
 'statistics-header-users' => 'Ê̤ṳng-hô só-gé̤ṳ',
 
+'disambiguationspage' => 'Template:Gì-ngiê',
+
 'brokenredirects-edit' => 'gāi',
 'brokenredirects-delete' => 'chēng',
 
index 187e6d6..cf78ce7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sorani (کوردی)
+/** Sorani Kurdish (کوردی)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -814,6 +814,7 @@ $2
 دەستکاریەکەت بۆ بەرگری لە تێکەڵ‌بوونی دەقی لاپەڕەکە وەر نەگیرا.<br />
 ئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.",
 'editing' => 'دەستکاریکردنی $1',
+'creating' => 'دروستکردنی $1',
 'editingsection' => 'دەستکاریکردنی: $1 (بەش)',
 'editingcomment' => 'دەستکاریکردنی $1 (بەشی  نوێ)',
 'editconflict' => 'دەستکاری کێشە : $1',
@@ -1063,6 +1064,8 @@ $1",
 
 # Diffs
 'history-title' => 'مێژووی پیاچوونەوەکانی «$1»',
+'difference-title' => 'جیاوازی نێوان پیاچوونەوەکانی «$1»',
+'difference-title-multipage' => 'جیاوازیی نێوان پەڕەی «$1» و «$2»',
 'difference-multipage' => '(جیاوازی نێوان پەڕەکان)',
 'lineno' => 'ھێڵی  $1:',
 'compareselectedversions' => 'پیاچوونەوە ھەڵبژێردراوەکان ھەڵسەنگێنە',
@@ -1158,6 +1161,7 @@ $1",
 'prefs-beta' => 'کەرەسەکانی بیتا',
 'prefs-datetime' => 'کات و ڕێکەوت',
 'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
+'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
 'prefs-personal' => 'پرۆفایلی بەکارھێنەر',
 'prefs-rc' => 'دوایین گۆڕانکارییەکان',
 'prefs-watchlist' => 'لیستی چاودێری',
@@ -3186,6 +3190,8 @@ $5
 'revdelete-restricted' => 'ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران',
 'revdelete-unrestricted' => 'ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران',
 'logentry-move-move' => '$1 پەڕەی $3ی گواستەوە بۆ $4',
+'logentry-move-move-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
+'logentry-move-move_redir-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 لە جێگەی ڕەوانەکەرێک بە بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
 'logentry-newusers-newusers' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
 'logentry-newusers-create' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
 'logentry-newusers-create2' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد $3',
index 88dfc5d..c3abfdc 100644 (file)
@@ -1041,7 +1041,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'nchanges' => '$1 {{PLURAL:$1|денъишме|денъишме}}',
 'recentchanges' => 'Сонъки денъишмелер',
 'recentchanges-legend' => 'Сонъки денъишмелер сазламалары',
-'recentchangestext' => 'Япылгъан энъ сонъки денъишмелерни бу саифеде корип оласынъыз.',
+'recentchanges-summary' => 'Япылгъан энъ сонъки денъишикликлерни бу саифеде корип оласынъыз.',
 'recentchanges-feed-description' => 'Бу лента вастасынен викиде сонъки денъишмелерни козет.',
 'recentchanges-label-newpage' => 'Бу денъишме янъы бир саифе яратты',
 'recentchanges-label-minor' => 'Бу, кичик бир денъишме',
index b1154ee..84a2ee2 100644 (file)
@@ -1038,7 +1038,7 @@ Eger bildirseñiz, saifelerdeki deñişmelerni kimniñ yapqanını köstermek i
 'nchanges' => '$1 {{PLURAL:$1|deñişme|deñişme}}',
 'recentchanges' => 'Soñki deñişmeler',
 'recentchanges-legend' => 'Soñki deñişmeler sazlamaları',
-'recentchangestext' => 'Yapılğan eñ soñki deñişmelerni bu saifede körip olasıñız.',
+'recentchanges-summary' => 'Yapılğan eñ soñki deñişikliklerni bu saifede körip olasıñız.',
 'recentchanges-feed-description' => 'Bu lenta vastasınen vikide soñki deñişmelerni közet.',
 'recentchanges-label-newpage' => 'Bu deñişme yañı bir saife yarattı',
 'recentchanges-label-minor' => 'Bu, kiçik bir deñişme',
index 785d6e3..761bf4a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Czech (Ä\8cesky)
+/** Czech (Ä\8desky)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -361,7 +361,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skrýt patrolované editace v posledních změnách',
 'tog-newpageshidepatrolled' => 'Skrýt patrolované stránky ze seznamu nových stránek',
 'tog-extendwatchlist' => 'Na seznamu sledovaných stránek zobrazovat všechny změny, ne jen tu poslední',
-'tog-usenewrc' => 'Používat zdokonalené poslední změny (vyžaduje JavaScript)',
+'tog-usenewrc' => 'V posledních změnách a sledovaných stránkách seskupovat změny podle stránek (vyžaduje JavaScript)',
 'tog-numberheadings' => 'Automaticky číslovat nadpisy',
 'tog-showtoolbar' => 'Zobrazit panel nástrojů (vyžaduje JavaScript)',
 'tog-editondblclick' => 'Editovat dvojklikem (JavaScript)',
@@ -742,6 +742,8 @@ $2',
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Špatná konfigurace: neznámý antivirový program: ''$1''",
@@ -1299,9 +1301,9 @@ Ujistěte se, že tato změna udrží souvislost a posloupnost verzí v historii
 'mergelogpagetext' => 'Níže je seznam nejnovějších sloučení historie jedné stránky s jinou.',
 
 # Diffs
-'history-title' => 'Historie verzí stránky „$1“',
-'difference-title' => 'Porovnání verzí stránky „$1“',
-'difference-title-multipage' => 'Porovnání stránek „$1“ a „$2“',
+'history-title' => '$1: Historie verzí',
+'difference-title' => '$1: Porovnání verzí',
+'difference-title-multipage' => '$1 a $2: Porovnání stránek',
 'difference-multipage' => '(Rozdíly mezi stránkami)',
 'lineno' => 'Řádka $1:',
 'compareselectedversions' => 'Porovnat vybrané verze',
@@ -1397,6 +1399,7 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'prefs-beta' => 'Funkce z betaverze',
 'prefs-datetime' => 'Datum a čas',
 'prefs-labs' => 'Funkce z Labs',
+'prefs-user-pages' => 'Uživatelské stránky',
 'prefs-personal' => 'Údaje o uživateli',
 'prefs-rc' => 'Poslední změny',
 'prefs-watchlist' => 'Sledované stránky',
@@ -2182,6 +2185,7 @@ Uvědomte si, že jiné webové stránky mohou na soubor odkazovat pomocí pří
 Zobrazení můžete zúžit výběrem typu záznamu, uživatelského jména (záleží na velikosti písmen) nebo dotčené stránky (také záleží na velikosti písmen).',
 'logempty' => 'Protokol neobsahuje žádný odpovídající záznam.',
 'log-title-wildcard' => 'Hledat názvy začínající na tento text',
+'showhideselectedlogentries' => 'Ukázat/skrýt vybrané záznamy',
 
 # Special:AllPages
 'allpages' => 'Všechny stránky',
@@ -3067,7 +3071,8 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'spamprotectionmatch' => 'Následující text spustil náš filtr proti spamu: $1',
 'spambot_username' => 'Systémový čistič spamu',
 'spam_reverting' => 'Revert na poslední verzi neobsahující odkazy na $1',
-'spam_blanking' => 'Všechny revize obsahovaly odkazy na $1, vyprázdněno',
+'spam_blanking' => 'Všechny verze obsahovaly odkazy na $1, vyprázdněno',
+'spam_deleting' => 'Všechny verze obsahovaly odkazy na $1, smazáno',
 
 # Info page
 'pageinfo-title' => 'Informace o "$1"',
@@ -4036,4 +4041,6 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'duration-centuries' => '$1 {{PLURAL:$1|století}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisíciletí}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Nepodařilo se získat zámek serveru $1.',
 );
index bdc4214..61de1fb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kashubian (Kaszëbsczi)
+/** Kashubian (kaszëbsczi)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -727,7 +727,7 @@ Mòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją sta
 'nchanges' => '{{PLURAL:$1|zjinaka|zjinaczi|zjinaków}}',
 'recentchanges' => 'Slédné edicëje',
 'recentchanges-legend' => 'Òptacëje slédnych zjinaków',
-'recentchangestext' => 'Na starna prezentérëje historëjã slédnëch edicëjów w {{SITENAME}}.',
+'recentchanges-summary' => 'Na starna prezentérëje historëjã slédnëch edicëjów w {{SITENAME}}.',
 'recentchanges-feed-description' => 'Pòdstrzegô slédny zmianë w tim pòwrózkù.',
 'recentchanges-label-minor' => 'To je drobnô edicëjô',
 'rcnote' => "Niżi {{PLURAL:$1|nachôdô sã '''1''' slédnô zjinaka zrobionô|nachôdają sã '''$1''' slédné zjinaczi zrobioné|nachôdô sã '''$1''' slédnych zjinaków zrobionëch}} w {{PLURAL:$2|slédnégò dnia|slédnych '''$2''' dniach}}, rëchùjąc òd $5 dnia $4.",
index ab49bf6..73eed18 100644 (file)
@@ -201,7 +201,7 @@ $messages = array(
 'protect' => 'ꙁабранѥниѥ',
 'protect_change' => 'иꙁмѣнѥниѥ',
 'protectthispage' => 'си страницѧ ꙁабранєниѥ',
-'unprotect' => 'поущєниѥ',
+'unprotect' => 'ꙁабранѥниꙗ обраꙁа иꙁмѣнѥниѥ',
 'newpage' => 'нова страница',
 'talkpage' => 'си страницѧ бєсѣда',
 'talkpagelinktext' => 'бєсѣда',
@@ -455,7 +455,7 @@ $messages = array(
 'nchanges' => '$1 {{PLURAL:$1|мѣна|мѣнꙑ|мѣнъ}}',
 'recentchanges' => 'послѣдьнѩ мѣнꙑ',
 'recentchanges-legend' => 'послѣдьн҄ь мѣнъ строи',
-'recentchangestext' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
+'recentchanges-summary' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
 'recentchanges-label-newpage' => 'по сѥи мѣнꙑ нова страница сътворѥна ѥстъ',
 'recentchanges-label-minor' => 'малаꙗ мѣна',
 'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворихъ',
index cf1465b..221f124 100644 (file)
@@ -124,7 +124,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Cuddio golygiadau sydd wedi derbyn ymweliad patrôl rhag y rhestr newidiadau diweddar',
 'tog-newpageshidepatrolled' => 'Cuddio tudalennau sydd wedi derbyn ymweliad patrôl rhag y rhestr dudalennau newydd',
 'tog-extendwatchlist' => "Ehangu'r rhestr wylio i ddangos pob golygiad yn hytrach na'r diweddaraf yn unig",
-'tog-usenewrc' => 'Defnyddio newidiadau diweddar gwell (angen JavaScript)',
+'tog-usenewrc' => "Yn dangos newidiadau i un dudalen gyda'i gilydd - ar 'newidiadau diweddar' a'r 'rhestr wylio' (angen JavaScript)",
 'tog-numberheadings' => "Rhifo penawdau'n awtomatig",
 'tog-showtoolbar' => 'Dangos y bar offer golygu (angen JavaScript)',
 'tog-editondblclick' => 'Golygu tudalennau wrth glicio ddwywaith (angen JavaScript)',
@@ -504,6 +504,7 @@ Rhoddwyd y rheswm hwn - ''$2''.",
 
 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"',
 
 # Virus scanner
 'virus-badscanner' => "Cyfluniad gwael: sganiwr firysau anhysbys: ''$1''",
@@ -875,6 +876,8 @@ Cafodd yr argiau hyn eu hepgor.",
 'node-count-exceeded-warning' => 'Mae nifer y nodau yn y dudalen yn ormod',
 'expansion-depth-exceeded-category' => "Tudalennau â dyfnder ehangu tu hwnt i'r terfyn",
 'expansion-depth-exceeded-warning' => "Mae dyfnder ehangu'r dudalen y tu hwnt i'r terfyn",
+'parser-unstrip-loop-warning' => 'Wedi darganfod dolen dad-blicio (unstrip loop)',
+'parser-unstrip-recursion-limit' => 'Wedi mynd dros ben y terfyn ar ddychweliad dad-blicio (unstrip recursion) ($1)',
 
 # "Undo" feature
 'undo-success' => "Gellir dadwneud y golygiad. Byddwch gystal â gwirio'r gymhariaeth isod i sicrhau mai dyma sydd arnoch eisiau gwneud, ac yna rhowch y newidiadau ar gadw i gwblhau'r gwaith o ddadwneud y golygiad.",
@@ -1050,7 +1053,7 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
 'mergelogpagetext' => "Fe ddilyn rhestr o'r achosion diweddaraf o hanes tudalen yn cael ei gyfuno a hanes tudalen arall.",
 
 # Diffs
-'history-title' => "Hanes golygu '$1'",
+'history-title' => '$1: hanes golygu',
 'difference-title' => 'Y gwahaniaeth rhwng diwygiadau o "$1"',
 'difference-title-multipage' => 'Y gwahaniaeth rhwng y tudalennau "$1" a "$2"',
 'difference-multipage' => '(Y gwahaniaeth rhwng y tudalennau)',
@@ -1149,6 +1152,7 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'prefs-beta' => 'Nodweddion Beta',
 'prefs-datetime' => 'Dyddiad ac amser',
 'prefs-labs' => 'Nodweddion Labs',
+'prefs-user-pages' => 'Tudalennau defnyddwyr',
 'prefs-personal' => 'Data defnyddiwr',
 'prefs-rc' => 'Newidiadau diweddar',
 'prefs-watchlist' => 'Rhestr wylio',
@@ -1604,14 +1608,15 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
 'backend-fail-writetemp' => "Wedi methu ysgrifennu i'r ffeil dros dro.",
 'backend-fail-closetemp' => "Wedi methu cau'r ffeil dros dro.",
 'backend-fail-read' => 'Wedi methu darllen y ffeil $1.',
-'backend-fail-create' => "Wedi methu creu'r ffeil $1.",
-'backend-fail-maxsize' => "Ni ellid cynhyrchu'r ffeil $1 oherwydd ei bod yn fwy na{{PLURAL:$2||g un beit| $2 feit| $2 beit| $2 beit| $2 beit}}.",
+'backend-fail-create' => "Wedi methu ysgrifennu'r ffeil $1.",
+'backend-fail-maxsize' => "Ni ellid ysgrifennu'r ffeil $1 oherwydd ei bod yn fwy na{{PLURAL:$2||g un beit| $2 feit| $2 beit| $2 beit| $2 beit}} o faint.",
 'backend-fail-readonly' => 'Ar hyn o bryd gellir darllen y storfa "$1" yn unig. Y rheswm dros hyn yw: "\'\'$2\'\'"',
 'backend-fail-synced' => 'Mae\'r ffeil "$1" mewn cyflwr anghyson oddi mewn i\'r storfeydd tu ôl i\'r llenni.',
 'backend-fail-connect' => 'Ni ellid cysylltu â\'r storfa tu ôl i\'r llenni yn "$1".',
 'backend-fail-internal' => 'Cafwyd gwall anhysbys yn y storfa tu ôl i\'r llenni yn "$1".',
 'backend-fail-contenttype' => 'Methwyd a dirnad pa fath o gynnwys sydd yn y ffeil y ceisir ei storio yn "$1".',
 'backend-fail-batchsize' => "Rhoddwyd llwyth o {{PLURAL:$1|$1 o weithrediadau}} ffeil i'w gwneud i'r storfa; ni all nifer y {{PLURAL:$2|gweithrediadau}} fod yn fwy na $2.",
+'backend-fail-usable' => "Ni ellid ysgrifennu'r ffeil $1 oherwydd nad oedd caniatad digonol ynteu bod cyfeiriaduron neu flychau yn eisiau.",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Methwyd cysylltu â lòg y gweithrediadau ar y storfa "$1".',
@@ -1933,6 +1938,7 @@ Gallwch weld chwiliad mwy penodol trwy ddewis y math o lòg, enw'r defnyddiwr, n
 Sylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
 'logempty' => 'Does dim eitemau yn cyfateb yn y lòg.',
 'log-title-wildcard' => "Chwilio am deitlau'n dechrau gyda'r geiriau hyn",
+'showhideselectedlogentries' => 'Dewis dangos neu guddio cofnodion lòg',
 
 # Special:AllPages
 'allpages' => 'Pob tudalen',
@@ -2786,7 +2792,7 @@ Mae ffolder dros dro yn eisiau.',
 'tooltip-rollback' => "Yn troi golygiad(au) y defnyddiwr diwethaf i'r dudalen hon yn ôl gydag un clic.",
 'tooltip-undo' => 'Mae "dadwneud" yn troi\'r golygiad hwn yn ôl ac yn dangos rhagolwg o\'r golygiad adferedig.
 Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
-'tooltip-preferences-save' => "Rhoi'r dewisiadau ar gadw",
+'tooltip-preferences-save' => 'Rhodder y dewisiadau ar gadw',
 'tooltip-summary' => 'Rhowch grynodeb byr',
 
 # Metadata
@@ -2810,8 +2816,9 @@ Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
 Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr waharddedig.',
 'spamprotectionmatch' => "Dyma'r testun gyneuodd ein hidlydd amddiffyn rhag sbam: $1",
 'spambot_username' => 'Teclyn clirio sbam MediaWiki',
-'spam_reverting' => "Yn troi nôl i'r diwygiad diweddaraf sydd ddim yn cynnwys cysylltiadau i $1",
-'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, yn blancio',
+'spam_reverting' => 'Wedi adfer y diwygiad diweddaraf na sydd yn cynnwys cysylltiadau i $1',
+'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, felly gwacawyd y dudalen',
+'spam_deleting' => 'Roedd pob diwygiad yn cynnwys cysylltiadau â $1, felly fe ddilëwyd y dudalen',
 
 # Info page
 'pageinfo-title' => 'Manylion "$1"',
@@ -3707,4 +3714,6 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'duration-centuries' => '$1 {{PLURAL:$1|canmlwydd|ganmlwydd|ganmlwydd|canmlwydd|chanmlwydd|canmlwydd}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milflwydd|filflwydd|filflwydd|milflwydd|milflwydd|milflwydd}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Wedi methu sicrhau cloion ar y gweinydd $1.',
 );
index 24cff0a..46944a2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Danish (Dansk)
+/** Danish (dansk)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -193,7 +193,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skjul patruljerede redigeringer i seneste ændringer',
 'tog-newpageshidepatrolled' => 'Skjul patruljerede sider på listen over nye sider',
 'tog-extendwatchlist' => 'Udvid overvågningslisten til at vise alle ændringer og ikke kun den nyeste',
-'tog-usenewrc' => 'Brug forbedret liste over seneste ændringer (kræver JavaScript)',
+'tog-usenewrc' => 'Gruppér ændringerne per side i listen over seneste ændringer og overvågningslisten (kræver JavaScript)',
 'tog-numberheadings' => 'Automatisk nummerering af overskrifter',
 'tog-showtoolbar' => 'Vis værktøjslinje til redigering (JavaScript)',
 'tog-editondblclick' => 'Redigér sider med dobbeltklik (JavaScript)',
@@ -1125,9 +1125,9 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'mergelogpagetext' => 'Nedenfor vises en liste med de nyeste sammenfletninger af en sides historik i en anden.',
 
 # Diffs
-'history-title' => 'Versionshistorik for "$1"',
+'history-title' => '$1: Versionshistorik',
 'difference-title' => 'Forskel mellem versioner af "$1"',
-'difference-title-multipage' => '$1 og $2: Forskellen på siderne',
+'difference-title-multipage' => 'Forskel mellem siderne "$1" og "$2"',
 'difference-multipage' => '(Forskel mellem sider)',
 'lineno' => 'Linje $1:',
 'compareselectedversions' => 'Sammenlign valgte versioner',
@@ -1171,8 +1171,8 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'search-result-size' => '$1 ({{PLURAL:$2|et ord|$2 ord}})',
 'search-result-category-size' => '{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})',
 'search-result-score' => 'Relevans: $1%',
-'search-redirect' => '(omdiriger $1)',
-'search-section' => '(sektion $1)',
+'search-redirect' => '(omdirigering $1)',
+'search-section' => '(afsnit $1)',
 'search-suggest' => 'Mente du: $1',
 'search-interwiki-caption' => 'Søsterprojekter',
 'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
@@ -1223,6 +1223,7 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Dato og klokkeslæt',
 'prefs-labs' => 'Testfunktioner',
+'prefs-user-pages' => 'Brugerside',
 'prefs-personal' => 'Brugerdata',
 'prefs-rc' => 'Seneste ændringer',
 'prefs-watchlist' => 'Overvågningsliste',
@@ -1993,6 +1994,7 @@ Læg mærke til at andre hjemmesider kan henvise til filen med en direkte URL, o
 Du kan afgrænse visningen ved at vælge en logtype, brugernavn eller påvirket side. Der skelnes mellem små og store bogstaver for både bruger- og sidenavne.',
 'logempty' => 'Intet passende fundet.',
 'log-title-wildcard' => 'Søg i titler som begynder med teksten',
+'showhideselectedlogentries' => 'Vis/skjul de markerede loghændelser',
 
 # Special:AllPages
 'allpages' => 'Alle sider',
@@ -2776,7 +2778,7 @@ Du kan se på kildeteksten.',
 'tooltip-ca-move' => 'Flyt denne side',
 'tooltip-ca-watch' => 'Sæt denne side på din overvågningsliste',
 'tooltip-ca-unwatch' => 'Fjern denne side fra din overvågningsliste',
-'tooltip-search' => 'Søg på denne wiki',
+'tooltip-search' => 'Søg på {{SITENAME}}',
 'tooltip-search-go' => 'Vis en side med præcis dette navn, hvis den findes',
 'tooltip-search-fulltext' => 'Søg efter sider der indeholder denne tekst',
 'tooltip-p-logo' => 'Forsiden',
@@ -2854,6 +2856,7 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
 'spambot_username' => 'MediaWiki spam-rensning',
 'spam_reverting' => 'Sidste version uden henvisning til $1 gendannet.',
 'spam_blanking' => 'Alle versioner, som indeholdt henvisninger til $1, er renset.',
+'spam_deleting' => 'Alle versioner indeholder henvisninger til $1, sletter',
 
 # Info page
 'pageinfo-title' => 'Information om "$1"',
index 581670c..b38021a 100644 (file)
@@ -404,7 +404,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden',
 'tog-newpageshidepatrolled' => 'Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden',
 'tog-extendwatchlist' => 'Erweiterte Beobachtungsliste zur Anzeige aller Änderungen',
-'tog-usenewrc' => 'Erweiterte Darstellung der „Letzten Änderungen“ (benötigt JavaScript)',
+'tog-usenewrc' => 'Seitenbezogene Gruppierung bei den „Letzten Änderungen“ und auf der Beobachtungsliste (benötigt JavaScript)',
 'tog-numberheadings' => 'Überschriften automatisch nummerieren',
 'tog-showtoolbar' => 'Bearbeiten-Werkzeugleiste anzeigen (benötigt JavaScript)',
 'tog-editondblclick' => 'Seiten mit Doppelklick bearbeiten (benötigt JavaScript)',
@@ -430,7 +430,7 @@ $messages = array(
 'tog-externaleditor' => 'Externen Editor standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
 'tog-externaldiff' => 'Externes Programm standardmäßig für Versionsunterschiede nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
 'tog-showjumplinks' => '„Wechseln zu“-Links aktivieren',
-'tog-uselivepreview' => 'Sofortige Vorschau nutzen (benötigt JavaScript) (experimentell)',
+'tog-uselivepreview' => 'Vorschau sofort anzeigen (benötigt JavaScript) (experimentell)',
 'tog-forceeditsummary' => 'Warnen, sofern beim Speichern die Zusammenfassung fehlt',
 'tog-watchlisthideown' => 'Eigene Bearbeitungen in der Beobachtungsliste ausblenden',
 'tog-watchlisthidebots' => 'Bearbeitungen durch Bots in der Beobachtungsliste ausblenden',
@@ -440,7 +440,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'Kontrollierte Änderungen in der Beobachtungsliste ausblenden',
 'tog-nolangconversion' => 'Konvertierung von Sprachvarianten deaktivieren',
 'tog-ccmeonemails' => 'Schicke mir Kopien der E-Mails, die ich anderen Benutzern sende',
-'tog-diffonly' => 'Zeige beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite',
+'tog-diffonly' => 'Beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite anzeigen',
 'tog-showhiddencats' => 'Anzeige versteckter Kategorien',
 'tog-noconvertlink' => 'Konvertierung des Titels deaktivieren',
 'tog-norollbackdiff' => 'Unterschied nach dem Zurücksetzen unterdrücken',
@@ -789,6 +789,8 @@ Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerich
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
@@ -1184,7 +1186,7 @@ Grund der Sperre: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbücher dieser Seite anzeigen',
-'nohistory' => 'Es gibt keine Versionsgeschichte für diese Seite.',
+'nohistory' => 'Zu dieser Seite ist keine Versionsgeschichte vorhanden.',
 'currentrev' => 'Aktuelle Version',
 'currentrev-asof' => 'Aktuelle Version vom $2, $3 Uhr',
 'revisionasof' => 'Version vom $2, $3 Uhr',
@@ -1342,9 +1344,9 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
 'mergelogpagetext' => 'Dies ist das Logbuch der vereinigten Versionsgeschichten.',
 
 # Diffs
-'history-title' => 'Versionsgeschichte von „$1“',
-'difference-title' => 'Unterschied zwischen den Versionen von „$1“',
-'difference-title-multipage' => 'Unterschied zwischen den Seiten „$1“ und „$2“',
+'history-title' => '$1: Versionsgeschichte',
+'difference-title' => '$1: Unterschied zwischen den Versionen',
+'difference-title-multipage' => '$1 und $2: Unterschied zwischen den Seiten',
 'difference-multipage' => '(Unterschied zwischen Seiten)',
 'lineno' => 'Zeile $1:',
 'compareselectedversions' => 'Gewählte Versionen vergleichen',
@@ -1439,13 +1441,14 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
 'prefs-beta' => 'Beta-Funktionen',
 'prefs-datetime' => 'Datum und Zeit',
 'prefs-labs' => 'Alpha-Funktionen',
+'prefs-user-pages' => 'Benutzerseiten',
 'prefs-personal' => 'Benutzerdaten',
 'prefs-rc' => 'Letzte Änderungen',
 'prefs-watchlist' => 'Beobachtungsliste',
-'prefs-watchlist-days' => 'Anzahl der Tage, die die Beobachtungsliste standardmäßig umfassen soll:',
+'prefs-watchlist-days' => 'Maximale Anzahl der einbezogenen Tage:',
 'prefs-watchlist-days-max' => 'Maximal {{PLURAL:$1|ein Tag|$1 Tage}}',
-'prefs-watchlist-edits' => 'Maximale Zahl der Einträge:',
-'prefs-watchlist-edits-max' => 'Maximale Anzahl: 1000',
+'prefs-watchlist-edits' => 'Maximale Anzahl der angezeigten Einträge:',
+'prefs-watchlist-edits-max' => 'Maximal 1.000 Einträge',
 'prefs-watchlist-token' => 'Beobachtungslisten-Token:',
 'prefs-misc' => 'Verschiedenes',
 'prefs-resetpass' => 'Passwort ändern',
@@ -1464,7 +1467,7 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
 'resultsperpage' => 'Treffer pro Seite:',
 'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Byte):',
 'stub-threshold-disabled' => 'Deaktiviert',
-'recentchangesdays' => 'Anzahl der Tage, die die Liste der „Letzten Änderungen“ standardmäßig umfassen soll:',
+'recentchangesdays' => 'Anzahl der standardmäßig einbezogenen Tage:',
 'recentchangesdays-max' => 'Maximal $1 {{PLURAL:$1|Tag|Tage}}',
 'recentchangescount' => 'Anzahl der standardmäßig angezeigten Bearbeitungen:',
 'prefs-help-recentchangescount' => 'Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.',
@@ -1807,8 +1810,7 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
 'largefileserver' => 'Die Datei ist größer als die vom Server eingestellte Maximalgröße.',
 'emptyfile' => 'Die hochgeladene Datei ist leer. Der Grund kann ein Tippfehler im Dateinamen sein. Bitte kontrolliere, ob du die Datei wirklich hochladen willst.',
 'windows-nonascii-filename' => 'Dieses Wiki unterstützt keine Dateinamen die Sonderzeichen enthalten.',
-'fileexists' => "Eine Datei mit diesem Namen existiert bereits.
-Bitte prüfe '''<tt>[[:$1]]</tt>''', wenn du dir nicht sicher bist, ob du sie ändern willst.
+'fileexists' => "Eine Datei dieses Namens ist bereits vorhanden. Bitte prüfe '''<tt>[[:$1]]</tt>''', sofern du dir nicht sicher bist, ob du sie ändern möchtest.
 [[$1|thumb]]",
 'filepageexists' => "Eine Beschreibungsseite wurde bereits als '''<tt>[[:$1]]</tt>''' erstellt, es ist aber keine Datei mit diesem Namen vorhanden.
 Die eingegebene Beschreibung wird nicht auf die Beschreibungsseite übernommen.
@@ -2040,8 +2042,8 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
 Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.',
 'sharedupload-desc-create' => 'Diese Datei stammt aus $1 und kann von anderen Projekten verwendet werden.
 Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.',
-'filepage-nofile' => 'Es existiert keine Datei mit diesem Namen.',
-'filepage-nofile-link' => 'Es existiert keine Datei mit diesem Namen, aber du kannst [$1 diese Datei hochladen].',
+'filepage-nofile' => 'Es ist keine Datei dieses namens vorhanden.',
+'filepage-nofile-link' => 'Es ist keine Datei dieses namens vorhanden. Du kannst jedoch [$1 diese Datei hochladen].',
 'uploadnewversion-linktext' => 'Eine neue Version dieser Datei hochladen',
 'shared-repo-from' => 'aus $1',
 'shared-repo' => 'einem gemeinsam genutzten Medienarchiv',
@@ -2090,7 +2092,7 @@ Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungs
 'listredirects' => 'Weiterleitungen',
 
 # Unused templates
-'unusedtemplates' => 'Unbenutzte Vorlagen',
+'unusedtemplates' => 'Verwaiste Vorlagen',
 'unusedtemplatestext' => 'Diese Seite listet alle Seiten im {{ns:template}}-Namensraum auf, die nicht in anderen Seiten eingebunden sind.
 Überprüfe andere Links zu den Vorlagen, bevor du diese löscht.',
 'unusedtemplateswlh' => 'Andere Links',
@@ -2167,8 +2169,8 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'uncategorizedcategories' => 'Nicht kategorisierte Kategorien',
 'uncategorizedimages' => 'Nicht kategorisierte Dateien',
 'uncategorizedtemplates' => 'Nicht kategorisierte Vorlagen',
-'unusedcategories' => 'Unbenutzte Kategorien',
-'unusedimages' => 'Unbenutzte Dateien',
+'unusedcategories' => 'Verwaiste Kategorien',
+'unusedimages' => 'Verwaiste Dateien',
 'popularpages' => 'Beliebteste Seiten',
 'wantedcategories' => 'Gewünschte Kategorien',
 'wantedpages' => 'Gewünschte Seiten',
@@ -2235,6 +2237,7 @@ Bitte prüfe, ob sie korrekt von der Quelle übertragen wurde.',
 Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden (Groß-/Kleinschreibung muss beachtet werden).',
 'logempty' => 'Keine passenden Einträge.',
 'log-title-wildcard' => 'Titel beginnt mit …',
+'showhideselectedlogentries' => 'Ausgewählte Logbucheinträge anzeigen/verstecken',
 
 # Special:AllPages
 'allpages' => 'Alle Seiten',
@@ -2262,7 +2265,7 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
 # Special:Categories
 'categories' => 'Kategorien',
 'categoriespagetext' => 'Folgende {{PLURAL:$1|Kategorie enthält|Kategorien enthalten}} Seiten oder Dateien.
-[[Special:UnusedCategories|Unbenutzte Kategorien]] werden hier nicht aufgeführt.
+[[Special:UnusedCategories|Verwaiste Kategorien]] werden hier nicht aufgeführt.
 Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
 'categoriesfrom' => 'Zeige Kategorien ab:',
 'special-categories-sort-count' => 'Sortierung nach Anzahl',
@@ -2517,9 +2520,10 @@ Siehe die [[Special:ProtectedPages|Liste der geschützten Seiten]] für alle akt
 'protect-existing-expiry' => 'Aktuelles Seitenschutzende: $2, $3 Uhr',
 'protect-otherreason' => 'Anderer/ergänzender Grund:',
 'protect-otherreason-op' => 'Anderer Grund',
-'protect-dropdown' => '*Allgemeine Schutzgründe
-** Weblink-Spam
-** Editwar
+'protect-dropdown' => '* Allgemeine Schutzgründe
+** Edit-War
+** Wiederkehrender Vandalismus
+** Wiederholtes Einstellen von Werbung
 ** Häufig eingebundene Vorlage
 ** Seite mit hoher Besucherzahl',
 'protect-edit-reasonlist' => 'Schutzgründe bearbeiten',
@@ -2969,7 +2973,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.',
 'import-parse-failure' => 'Fehler beim XML-Import:',
 'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
-'import-nonewrevisions' => 'Es sind keine neuen Versionen zum Import vorhanden, alle Versionen wurden bereits früher importiert.',
+'import-nonewrevisions' => 'Alle Versionen wurden bereits zu einem früheren Zeitpunkt importiert.',
 'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
 'import-upload' => 'XML-Daten importieren',
 'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
@@ -2994,7 +2998,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'javascripttest-title' => '$1-Tests werden durchgeführt',
 'javascripttest-pagetext-noframework' => 'Diese Seite ist JavaSkript-Tests vorbehalten.',
 'javascripttest-pagetext-unknownframework' => 'Unbekanntes Framework „$1“.',
-'javascripttest-pagetext-frameworks' => 'Bitte eines der folgenden Frameworks auswählen: $1',
+'javascripttest-pagetext-frameworks' => 'Bitte wähle eine der folgenden Prüfumgebungen aus: $1',
 'javascripttest-pagetext-skins' => 'Wähle eine Benutzeroberfläche zur Durchführung der Tests aus:',
 'javascripttest-qunit-intro' => 'Siehe die [$1 Dokumentation zu Tests] auf mediawiki.org',
 'javascripttest-qunit-heading' => 'MediaWiki-JavaSkript-QUnit-Tester',
@@ -3125,7 +3129,8 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'spamprotectionmatch' => "'''Der folgende Text wurde vom Spamfilter gefunden: ''$1'''''",
 'spambot_username' => 'MediaWiki-Spam-Säuberung',
 'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
-'spam_blanking' => 'Alle Versionen enthielten Links zu $1, bereinigt.',
+'spam_blanking' => 'Alle Versionen mit einem Link zu $1 wurden bereinigt.',
+'spam_deleting' => 'Alle Versionen mit einem Link zu $1 wurden gelöscht.',
 
 # Info page
 'pageinfo-title' => 'Informationen zu „$1“',
@@ -3218,7 +3223,7 @@ Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt wer
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'seconds' => '{{PLURAL:$1|$1 Sekunde|$1 Sekunden}}',
 'minutes' => '{{PLURAL:$1|$1 Minute|$1 Minuten}}',
-'hours' => '{{PLURAL:$1|$1 Stunde|$1 Stunden}}',
+'hours' => '{{PLURAL:$1|einer Stunde|$1 Stunden}}',
 'days' => '{{PLURAL:$1|$1 Tag|$1 Tage}}',
 'ago' => 'vor $1',
 
@@ -3775,8 +3780,8 @@ Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
 # Live preview
 'livepreview-loading' => 'Lade …',
 'livepreview-ready' => 'Laden … Fertig!',
-'livepreview-failed' => 'Die sofortige Vorschau ist nicht möglich!
-Bitte die normale Vorschau nutzen.',
+'livepreview-failed' => 'Die Vorschau kann nicht sofort angezeigt werden!
+Bitte nutze die reguläre Vorschau.',
 'livepreview-error' => 'Verbindung nicht möglich: $1 „$2“. Bitte die normale Vorschau benutzen.',
 
 # Friendlier slave lag warnings
@@ -4057,4 +4062,6 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'duration-centuries' => '$1 {{PLURAL:$1|Jahrhundert|Jahrhunderte}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtausend|Jahrtausende}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Die Sperren auf Server $1 konnte nicht abgerufen werden.',
 );
index 8a55e9b..a72d0a1 100644 (file)
@@ -38,28 +38,234 @@ $namespaceNames = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'Karbereaktiv' ),
+       'Activeusers'               => array( 'KarbereAktivi', 'AktivKarberi' ),
        'Allmessages'               => array( 'MesaciPero' ),
-       'Categories'                => array( 'Kategoriy' ),
-       'Longpages'                 => array( 'PeleDergi' ),
+       'Allpages'                  => array( 'PeleyPero' ),
+       'Ancientpages'              => array( 'PeleyVereni' ),
+       'Badtitle'                  => array( 'SernameyoXırab' ),
+       'Blankpage'                 => array( 'PelaVeng', 'VengPela' ),
+       'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeKarber' ),
+       'Blockme'                   => array( 'BlokeMe' ),
+       'Booksources'               => array( 'KıtabeÇıme' ),
+       'BrokenRedirects'           => array( 'HetenayışoXırab' ),
+       'Categories'                => array( 'Kategoriye' ),
+       'ChangeEmail'               => array( 'EpostaBıvurne' ),
+       'ChangePassword'            => array( 'ParolaBıvurne', 'ParolaResetke' ),
+       'ComparePages'              => array( 'PelaPêverke' ),
+       'Confirmemail'              => array( 'EpostayAraştke' ),
+       'Contributions'             => array( 'İştiraxi' ),
+       'CreateAccount'             => array( 'HesabVırazê' ),
+       'Deadendpages'              => array( 'PelaBêgıre' ),
+       'DeletedContributions'      => array( 'İştıraxêkeBesterneyayê' ),
+       'Disambiguations'           => array( 'ManeoBin' ),
+       'DoubleRedirects'           => array( 'DıletHeteneayış' ),
+       'EditWatchlist'             => array( 'ListeyaSeyriVurnayış' ),
+       'Emailuser'                 => array( 'EpostayaKarberi' ),
+       'Export'                    => array( 'Ateberde' ),
+       'Fewestrevisions'           => array( 'TewrtaynRevizyon' ),
+       'FileDuplicateSearch'       => array( 'KopyaydosyaCıgeyrayış', 'DıletdosyaCıgeyrayış' ),
+       'Filepath'                  => array( 'RayaDosya', 'HerunaDosya', 'CayêDosya' ),
+       'Import'                    => array( 'Azeredê', 'Atewrke' ),
+       'Invalidateemail'           => array( 'TesdiqêepostaBıterknê' ),
+       'BlockList'                 => array( 'ListeyêBLoki', 'IPBloki', 'Blokeyê_IP' ),
+       'LinkSearch'                => array( 'GreCıgeyrayış' ),
+       'Listadmins'                => array( 'ListeyêXizmetkaran' ),
+       'Listbots'                  => array( 'ListeyêBotan' ),
+       'Listfiles'                 => array( 'ListeyêDosyayan', 'DosyayaListeke', 'ListeyêResiman' ),
+       'Listgrouprights'           => array( 'ListeyêHeqêGruban', 'HeqêGrubdeKarberan' ),
+       'Listredirects'             => array( 'ListeyêHetanayışi' ),
+       'Listusers'                 => array( 'ListeyêKarberan', 'KarberaListeke' ),
+       'Lockdb'                    => array( 'DBKilitke' ),
+       'Log'                       => array( 'Qeyd', 'Qeydi' ),
+       'Lonelypages'               => array( 'PeleyêBêkesi' ),
+       'Longpages'                 => array( 'PeleyeDergi' ),
+       'MergeHistory'              => array( 'RavêrdaPêtewrke' ),
+       'MIMEsearch'                => array( 'NIMECıgeyrayış' ),
+       'Mostcategories'            => array( 'TewrvêşiKategoriyıni' ),
+       'Mostimages'                => array( 'DosyeyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinked'                => array( 'PeleyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinkedcategories'      => array( 'KategoriyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinkedtemplates'       => array( 'ŞablonêkeCırêvêşiGreDeyayo' ),
+       'Mostrevisions'             => array( 'TewrvêşiRevizyon' ),
+       'Movepage'                  => array( 'PelaAhuln' ),
        'Mycontributions'           => array( 'İştırakeMe' ),
-       'Recentchanges'             => array( 'VurnayışePeyeni' ),
+       'Mypage'                    => array( 'PelaMe' ),
+       'Mytalk'                    => array( 'PersiyeME' ),
+       'Myuploads'                 => array( 'BarkerdışeMe' ),
+       'Newimages'                 => array( 'DosyeyêNewey', 'ResimêNewey' ),
+       'Newpages'                  => array( 'PeleyeNewey' ),
+       'PasswordReset'             => array( 'ParolaReset' ),
+       'PermanentLink'             => array( 'DaimiGre' ),
+       'Popularpages'              => array( 'PeleyêPopuleri' ),
+       'Preferences'               => array( 'Tercihi' ),
+       'Prefixindex'               => array( 'SerVerole' ),
+       'Protectedpages'            => array( 'PeleyêkeStaryayê' ),
+       'Protectedtitles'           => array( 'SernameyêkeStaryayê' ),
+       'Randompage'                => array( 'Raştamê', 'PelayakeRaştamê' ),
+       'Randomredirect'            => array( 'HetenayışoRaştmae' ),
+       'Recentchanges'             => array( 'VurnayışêPeyêni' ),
+       'Recentchangeslinked'       => array( 'GreyêVurnayışêPeyêni' ),
+       'Revisiondelete'            => array( 'RevizyoniBesterne' ),
+       'RevisionMove'              => array( 'RevizyoniAhulne' ),
+       'Search'                    => array( 'Cıgeyre' ),
+       'Shortpages'                => array( 'PeleyêKılmi' ),
        'Specialpages'              => array( 'PeleyXısusi' ),
        'Statistics'                => array( 'İstatistiki' ),
        'Tags'                      => array( 'Etiketi' ),
+       'Unblock'                   => array( 'Bloqihewad' ),
+       'Uncategorizedcategories'   => array( 'KategoriyêkeKategorinêbiyê' ),
+       'Uncategorizedimages'       => array( 'DosyeyêkeKategorinêbiyê' ),
+       'Uncategorizedpages'        => array( 'PeleyêkeKategorinêbiyê' ),
+       'Uncategorizedtemplates'    => array( 'ŞablonêkeKategorinêbiyê' ),
+       'Undelete'                  => array( 'Peyserbiya' ),
+       'Unlockdb'                  => array( 'DBKlitiake' ),
+       'Unusedcategories'          => array( 'KategoriyêkeNêkaryayê' ),
+       'Unusedimages'              => array( 'DosyeyêkeNêkaryayê' ),
+       'Unusedtemplates'           => array( 'ŞablonêkeNêkaryayê' ),
+       'Unwatchedpages'            => array( 'PeleyêkeNêweyneyênê' ),
        'Upload'                    => array( 'Barke' ),
+       'UploadStash'               => array( 'BarkerdışêNımtey' ),
+       'Userlogin'                 => array( 'KarberDekewtış' ),
+       'Userlogout'                => array( 'KarberVıcyayış' ),
+       'Userrights'                => array( 'HeqêKarberan', 'SysopKerdış', 'BotKerdış' ),
        'Version'                   => array( 'Versiyon' ),
+       'Wantedcategories'          => array( 'KategoriyêkeWazênê' ),
+       'Wantedfiles'               => array( 'DosyeyêkeWazênê' ),
+       'Wantedpages'               => array( 'PeleyêkeWazênê' ),
+       'Wantedtemplates'           => array( 'ŞablonyêkeWazênê' ),
        'Watchlist'                 => array( 'Listeyseyri' ),
+       'Whatlinkshere'             => array( 'PelarêGre' ),
+       'Withoutinterwiki'          => array( 'Bêİnterwiki' ),
 );
 
 $magicWords = array(
        'redirect'                => array( '0', '#HETENAYIŞ', '#REDIRECT' ),
-       'nogallery'               => array( '0', '#GALERİÇINO', '__NOGALLERY__' ),
+       'notoc'                   => array( '0', '__ESTENÇINO__', '__NOTOC__' ),
+       'nogallery'               => array( '0', '__GALERİÇINO__', '__NOGALLERY__' ),
+       'forcetoc'                => array( '0', '__ESTENZARURET__', '__FORCETOC__' ),
+       'toc'                     => array( '0', '__ESTEN__', '__TOC__' ),
+       'noeditsection'           => array( '0', '__TİMARKERDIŞÇINO__', '__NOEDITSECTION__' ),
+       'noheader'                => array( '0', '__SERNAMEÇINO__', '__NOHEADER__' ),
+       'currentmonth'            => array( '1', 'MEWCUDAŞMİ', 'MEWCUDAŞMİ2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'           => array( '1', 'MEWCUDAŞMİ1', 'CURRENTMONTH1' ),
+       'currentmonthname'        => array( '1', 'NAMEYAŞMDAMEWCUD', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'     => array( '1', 'MEWCUDAŞMACI', 'CURRENTMONTHNAMEGEN' ),
+       'currentmonthabbrev'      => array( '1', 'MEWCUDAŞMİKILMKERDIŞ', 'CURRENTMONTHABBREV' ),
+       'currentday'              => array( '1', 'MEWCUDROCE', 'CURRENTDAY' ),
+       'currentday2'             => array( '1', 'MEWCUDROCE2', 'CURRENTDAY2' ),
+       'currentdayname'          => array( '1', 'NAMEYÊMEWCUDROCE', 'CURRENTDAYNAME' ),
+       'currentyear'             => array( '1', 'MEWCUDSERRE', 'CURRENTYEAR' ),
+       'currenttime'             => array( '1', 'MEWCUDDEME', 'CURRENTTIME' ),
+       'currenthour'             => array( '1', 'MEWCUDSEHAT', 'CURRENTHOUR' ),
+       'localmonth'              => array( '1', 'WAREYAŞMİ', 'WAREYAŞMİ2', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth1'             => array( '1', 'WAREYAŞMİ1', 'LOCALMONTH1' ),
+       'localmonthname'          => array( '1', 'NAMEYÊWAREYAŞMİ', 'LOCALMONTHNAME' ),
+       'localmonthnamegen'       => array( '1', 'NAMEYWAREDÊAŞMİDACI', 'LOCALMONTHNAMEGEN' ),
+       'localmonthabbrev'        => array( '1', 'WAREYAŞMİKILMKERDIŞ', 'LOCALMONTHABBREV' ),
+       'localday'                => array( '1', 'WAREYROCE', 'LOCALDAY' ),
+       'localday2'               => array( '1', 'WAREYROCE2', 'LOCALDAY2' ),
+       'localdayname'            => array( '1', 'NAMEYÊWAREYROCE', 'LOCALDAYNAME' ),
+       'localyear'               => array( '1', 'WAREYSERRE', 'LOCALYEAR' ),
+       'localtime'               => array( '1', 'WAREYDEME', 'LOCALTIME' ),
+       'localhour'               => array( '1', 'WAREYSEHAT', 'LOCALHOUR' ),
+       'numberofpages'           => array( '1', 'AMARİYAPELAN', 'NUMBEROFPAGES' ),
+       'numberofarticles'        => array( '1', 'AMARİYAWESİQAN', 'NUMBEROFARTICLES' ),
+       'numberoffiles'           => array( '1', 'AMARİYADOSYAYAN', 'NUMBEROFFILES' ),
+       'numberofusers'           => array( '1', 'AMARİYAKARBERAN', 'NUMBEROFUSERS' ),
+       'numberofactiveusers'     => array( '1', 'AMARİYAAKTİVKARBERAN', 'NUMBEROFACTIVEUSERS' ),
+       'numberofedits'           => array( '1', 'AMARİYAVURNAYIŞAN', 'NUMBEROFEDITS' ),
+       'numberofviews'           => array( '1', 'AMARİYAMOCNAYIŞAN', 'NUMBEROFVIEWS' ),
+       'pagename'                => array( '1', 'NAMEYPELA', 'PAGENAME' ),
+       'pagenamee'               => array( '1', 'NAMEYPELAA', 'PAGENAMEE' ),
+       'namespace'               => array( '1', 'CANAME', 'NAMESPACE' ),
+       'namespacee'              => array( '1', 'CANAMEE', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', 'AMARİYACANAME', 'NAMESPACENUMBER' ),
+       'talkspace'               => array( '1', 'CAYÊWERÊNAYIŞİ', 'TALKSPACE' ),
+       'talkspacee'              => array( '1', 'CAYÊWERÊNAYIŞAN', 'TALKSPACEE' ),
+       'subjectspace'            => array( '1', 'CAYÊMESEL', 'CAYÊWESİQE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+       'subjectspacee'           => array( '1', 'CAYÊMESELAN', 'CAYÊWESİQAN', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+       'fullpagename'            => array( '1', 'NAMEYPELAPÊRO', 'FULLPAGENAME' ),
+       'fullpagenamee'           => array( '1', 'NAMEYPELAPÊRON', 'FULLPAGENAMEE' ),
+       'subpagename'             => array( '1', 'NAMEYBINPELA', 'SUBPAGENAME' ),
+       'subpagenamee'            => array( '1', 'NAMEYBINPELAA', 'SUBPAGENAMEE' ),
+       'basepagename'            => array( '1', 'NAMEYSERPELA', 'BASEPAGENAME' ),
+       'basepagenamee'           => array( '1', 'NAMEYSERPELAA', 'BASEPAGENAMEE' ),
+       'talkpagename'            => array( '1', 'NAMEYPELAWERÊNAYIŞ', 'TALKPAGENAME' ),
+       'talkpagenamee'           => array( '1', 'NAMEYPELAWERÊNAYIŞAN', 'TALKPAGENAMEE' ),
+       'subjectpagename'         => array( '1', 'NAMEYPELAMESEL', 'NAMEYPELAWESİQE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'subjectpagenamee'        => array( '1', 'NAMEYPELAMESELER', 'NAMEYPELAQESİQER', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                     => array( '0', 'MSC', 'MSG:' ),
+       'subst'                   => array( '0', 'KOPYAKE', 'ATEBERDE', 'SUBST:' ),
+       'safesubst'               => array( '0', 'EMELEYATEBERDE', 'SAFESUBST:' ),
+       'msgnw'                   => array( '0', 'MSJNW:', 'MSGNW:' ),
+       'img_thumbnail'           => array( '1', 'resmowerdı', 'werdı', 'thumbnail', 'thumb' ),
+       'img_manualthumb'         => array( '1', 'resmowerdı=$1', 'erwdı=$1', 'thumbnail=$1', 'thumb=$1' ),
+       'img_right'               => array( '1', 'raşt', 'right' ),
+       'img_left'                => array( '1', 'çep', 'left' ),
+       'img_none'                => array( '1', 'çıno', 'none' ),
+       'img_width'               => array( '1', '$1pik', '$1piksel', '$1px' ),
+       'img_center'              => array( '1', 'werte', 'miyan', 'center', 'centre' ),
+       'img_framed'              => array( '1', 'çerçeweyın', 'çerçeweya', 'çerçewe', 'framed', 'enframed', 'frame' ),
+       'img_frameless'           => array( '1', 'beçerçewe', 'frameless' ),
+       'img_page'                => array( '1', 'pela=$1', 'pela_$1', 'page=$1', 'page $1' ),
+       'img_border'              => array( '1', 'sinor', 'border' ),
+       'img_top'                 => array( '1', 'gedug', 'top' ),
+       'img_middle'              => array( '1', 'merkez', 'middle' ),
+       'img_link'                => array( '1', 'gre=$1', 'link=$1' ),
+       'int'                     => array( '0', 'İNT:', 'INT:' ),
+       'scriptpath'              => array( '0', 'RAYASCRIPTİ', 'SCRIPTPATH' ),
+       'stylepath'               => array( '0', 'TERZÊTEWRİ', 'STYLEPATH' ),
+       'grammar'                 => array( '0', 'GRAMER:', 'GRAMMAR:' ),
+       'gender'                  => array( '0', 'CİNSİYET:', 'GENDER:' ),
+       'notitleconvert'          => array( '0', '__SERNAMEVURNAYIŞÇINO__', '__SVÇ__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'        => array( '0', '__ZERREVURNAYIŞÇINO__', '__ZVÇ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'             => array( '1', 'MEVCUDHEFTE', 'CURRENTWEEK' ),
+       'currentdow'              => array( '1', 'MEVCUDWAREYHEFTİ', 'CURRENTDOW' ),
+       'localweek'               => array( '1', 'WAREYHEFTİ', 'LOCALWEEK' ),
+       'localdow'                => array( '1', 'WAREYROCAHEFTİ', 'LOCALDOW' ),
+       'revisionid'              => array( '1', 'NIMREYREVİZYONİ', 'REVISIONID' ),
+       'revisionday'             => array( '1', 'ROCAREVİZYONİ', 'REVISIONDAY' ),
+       'revisionday2'            => array( '1', 'ROCAREVİZYON1', 'REVISIONDAY2' ),
+       'revisionmonth'           => array( '1', 'AŞMAREVİZYONİ', 'REVISIONMONTH' ),
+       'revisionmonth1'          => array( '1', 'AŞMAREVİZYONİ1', 'REVISIONMONTH1' ),
+       'revisionyear'            => array( '1', 'SERRAREVİZYONİ', 'REVISIONYEAR' ),
+       'revisiontimestamp'       => array( '1', 'MELUMATÊREVİZYONÊDEMİ', 'REVISIONTIMESTAMP' ),
+       'revisionuser'            => array( '1', 'REVİZYONKARBER', 'REVISIONUSER' ),
+       'plural'                  => array( '0', 'ZAFEN:', 'PLURAL:' ),
+       'fullurl'                 => array( '0', 'GREPÊRO:', 'FULLURL:' ),
+       'fullurle'                => array( '0', 'GREYOPÊRON:', 'FULLURLE:' ),
+       'canonicalurl'            => array( '0', 'GREYÊKANONİK:', 'CANONICALURL:' ),
+       'canonicalurle'           => array( '0', 'GREYOKANONİK:', 'CANONICALURLE:' ),
+       'lcfirst'                 => array( '0', 'KHİLK:', 'LCFIRST:' ),
+       'ucfirst'                 => array( '0', 'BHİLK:', 'UCFIRST:' ),
+       'lc'                      => array( '0', 'KH:', 'LC:' ),
+       'uc'                      => array( '0', 'BH:', 'UC:' ),
+       'raw'                     => array( '0', 'XAM:', 'RAW:' ),
+       'displaytitle'            => array( '1', 'SERNAMEİBIMOCNE', 'DISPLAYTITLE' ),
+       'newsectionlink'          => array( '1', '__GREYÊSERNAMEDÊNEWİ__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'        => array( '1', '__GREYÊSERNAMEDÊNEWİÇINO__', '__NONEWSECTIONLINK__' ),
+       'currentversion'          => array( '1', 'MEWCUDVERSİYON', 'CURRENTVERSION' ),
+       'currenttimestamp'        => array( '1', 'MEWCUDWAREYSEHAT', 'CURRENTTIMESTAMP' ),
+       'localtimestamp'          => array( '1', 'MALUMATÊWAREYSEHAT', 'LOCALTIMESTAMP' ),
        'language'                => array( '0', '#ZIWAN', '#LANGUAGE:' ),
+       'contentlanguage'         => array( '1', 'ZIWANÊESTİN', 'ZIWESTEN', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'        => array( '1', 'PELEYÊKECADÊNAMİDEYÊ', 'PELECN', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'numberofadmins'          => array( '1', 'AMARİYAXİZMETKARAN', 'NUMBEROFADMINS' ),
+       'formatnum'               => array( '0', 'BABETNAYIŞ', 'FORMATNUM' ),
        'special'                 => array( '0', 'xısusi', 'special' ),
        'speciale'                => array( '0', 'xısusiye', 'speciale' ),
+       'defaultsort'             => array( '1', 'RATNAYIŞOHESBNAYIŞ', 'QESAYARATNAYIŞOHESBNAYIŞ', 'KATEGORİYARATNAYIŞOHESBNAYIŞ', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                => array( '0', 'RAYADOSYA:', 'FILEPATH:' ),
        'tag'                     => array( '0', 'etiket', 'tag' ),
+       'hiddencat'               => array( '1', '__KATEGORİYANIMITİ__', '__HIDDENCAT__' ),
+       'pagesincategory'         => array( '1', 'PELEYÊKEKATEGORİDEYÊ', 'KATDÊPELEY', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                => array( '1', 'EBATÊPELA', 'PAGESIZE' ),
+       'index'                   => array( '1', '__SERSIQ__', '__INDEX__' ),
+       'noindex'                 => array( '1', '__SERSIQÇINYO__', '__NOINDEX__' ),
+       'numberingroup'           => array( '1', 'GRUBDEAMARE', 'AMARİYAGRUBER', 'NUMBERINGROUP', 'NUMINGROUP' ),
+       'staticredirect'          => array( '1', '__STATİKHETENAYIŞ__', '__STATICREDIRECT__' ),
+       'protectionlevel'         => array( '1', 'SEWİYEYÊSTARE', 'PROTECTIONLEVEL' ),
+       'url_wiki'                => array( '0', 'WİKİ', 'WIKI' ),
 );
 
 $messages = array(
@@ -70,7 +276,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Vurnayışanê qontrolkerdeyan pela vurnayışê peyêni de bınımne',
 'tog-newpageshidepatrolled' => 'Pelanê qontrolkerdeyan lista pelanê neweyan de bınımne',
 'tog-extendwatchlist' => 'Lista seyrkerdışi hera bıke ke vurnayışi pêro bıasê, tenya tewr peyêni nê',
-'tog-usenewrc' => 'Vurnayışanê peyênanê herakerdeyan bıxebetne (JavaScript lazımo)',
+'tog-usenewrc' => 'Vurnayışanê peyniya hera kerdeyan bıxebetne (JavaScript lazımo)',
 'tog-numberheadings' => 'Sernuşteyan be xo numre cı şane',
 'tog-showtoolbar' => 'Goceganê hacetanê vurnayışi bımocne (JavaScript lazımo)',
 'tog-editondblclick' => 'Pê dı rey tıknayış pele sero bıxebetiye (JavaScript lazımo)',
@@ -104,9 +310,11 @@ $messages = array(
 'tog-watchlisthideliu' => 'Lista seyrkerdışi ra vurnayışanê karberanê cıkewteyan bınımne',
 'tog-watchlisthideanons' => 'Lista seyrkerdışi ra vurnayışanê karberanê anoniman bınımne',
 'tog-watchlisthidepatrolled' => 'Lista seyrkerdışi ra vurnayışanê qontrol kerdeyan bınımne',
+'tog-nolangconversion' => 'Varyant çerx kerdışa bıqefılne',
 'tog-ccmeonemails' => 'E-posteyanê ke ez karberanê binan rê rışenan, mı rê kopya inan bırışe',
 'tog-diffonly' => 'Qıyasê versiyonan de tek ferqan bımocne, pela butıne nê',
 'tog-showhiddencats' => 'Kategoriyanê dızdine bımocne',
+'tog-noconvertlink' => 'Greyê sernami çerx kerdışi bıqefılne',
 'tog-norollbackdiff' => 'Peyserardışi ra dıme ferqi caverde',
 
 'underline-always' => 'Tım',
@@ -173,7 +381,7 @@ $messages = array(
 'dec' => 'Kan',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
+'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
 'category_header' => 'Pelê ke kategoriya "$1" derê',
 'subcategories' => 'Kategoriyê bınêni',
 'category-media-header' => 'Medyawa ke kategoriya "$1" dera',
@@ -190,13 +398,14 @@ $messages = array(
 'index-category' => 'Pelê endeksıni',
 'noindex-category' => 'Pelê ke endeksıni niyê',
 'broken-file-category' => 'Peleye ke linkê Dosyayandê xelata muhtewa kenê',
+'categoryviewer-pagedlinks' => '($1) ($2)',
 
 'linkprefix' => "'''MediaWiki niya ro.'''",
 
 'about' => 'Heqa',
-'article' => 'Pela tedeesteyan',
+'article' => 'Wesiqe',
 'newwindow' => '(zerrey pençereyê dê newey de beno a)',
-'cancel' => 'Texelnayış',
+'cancel' => 'Bıterkne',
 'moredotdotdot' => 'Vêşêri...',
 'mypage' => 'Pela mı',
 'mytalk' => 'Werênayışê mı',
@@ -216,19 +425,19 @@ $messages = array(
 'faqpage' => 'Project: PZP',
 
 # Vector skin
-'vector-action-addsection' => 'Qal berze cı',
+'vector-action-addsection' => 'Mesel Vırazê',
 'vector-action-delete' => 'Besterne',
 'vector-action-move' => 'Ahûln',
 'vector-action-protect' => 'Bıpawe',
 'vector-action-undelete' => 'Esterıtışi peyser bıgê',
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
-'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışiê raverberdeyan ake (Tenya vector skin de)',
+'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışê raverberdan ake (Tenya vector skin de)',
 'vector-view-create' => 'Vıraze',
 'vector-view-edit' => 'Bıvurne',
 'vector-view-history' => 'Tarixi bımocne',
-'vector-view-view' => 'Bıwane',
+'vector-view-view' => 'Bıwanên',
 'vector-view-viewsource' => 'Çımey bıvêne',
-'actions' => 'Karê kerdey',
+'actions' => 'Kerdeni',
 'namespaces' => 'Cayê namey',
 'variants' => 'Varyanti',
 
@@ -240,14 +449,14 @@ $messages = array(
 'searchbutton' => 'Cı geyre',
 'go' => 'Şo',
 'searcharticle' => 'Şo',
-'history' => 'Tarixê pele',
-'history_short' => 'Tarix',
+'history' => 'Ravêrdena pela',
+'history_short' => 'Ravêrden',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Asayışê çapkerdışi',
+'printableversion' => 'Asayışo çapkerden',
 'permalink' => 'Gıreyo daimi',
 'print' => 'Çap ke',
 'view' => 'Bıvêne',
-'edit' => 'Bıvurne',
+'edit' => 'Bıvurnên',
 'create' => 'Vırazê',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
@@ -260,16 +469,16 @@ $messages = array(
 'protectthispage' => 'Ena pele bıpawe',
 'unprotect' => 'Starkerdışi bıvurne',
 'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
-'newpage' => 'Pela newiye',
+'newpage' => 'Pela newi',
 'talkpage' => 'Ena pele sero werêne',
-'talkpagelinktext' => 'Werênayış',
-'specialpage' => 'Pela xısusi',
+'talkpagelinktext' => 'Mesac',
+'specialpage' => 'Pela xısusiye',
 'personaltools' => 'Hacetê şexsi',
 'postcomment' => 'Qısımo newe',
 'articlepage' => 'Pela zerreki bıvêne',
 'talk' => 'Werênayış',
 'views' => 'Asayışi',
-'toolbox' => 'Qutiya hacetan',
+'toolbox' => 'Haceti',
 'userpage' => 'Pela karberi bıvêne',
 'projectpage' => 'Pela procey bıvêne',
 'imagepage' => 'Pela dosya bımocne',
@@ -303,22 +512,22 @@ $1',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
 'currentevents' => 'Veng u vac',
 'currentevents-url' => 'Project:Veng u vac',
-'disclaimers' => 'Redê mesulêti',
+'disclaimers' => 'Redê mesuliyeti',
 'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
-'edithelp' => 'Peştdarina vurnayışi',
-'edithelppage' => 'Help:Pele çıtewr vurniyena',
-'helppage' => 'Help:Tedeestey',
+'edithelp' => 'Seni vurneyêno?',
+'edithelppage' => 'Help:Pela seni vurniyêna',
+'helppage' => 'Help:Estêni',
 'mainpage' => 'Pela Seri',
 'mainpage-description' => 'Pela Seri',
 'policy-url' => 'Project:Terzê hereketi',
 'portal' => 'Portalê cemaeti',
 'portal-url' => 'Project:Portalê cemaeti',
 'privacy' => 'Madeyê dızdine',
-'privacypage' => 'Project:Madeyê dızdine',
+'privacypage' => 'Project:Xısusiyetê nımtışi',
 
 'badaccess' => 'Xeta mısadey',
 'badaccess-group0' => 'Heqa şıma çıniya, karo ke şıma waşt, bıkerê.',
-'badaccess-groups' => 'No fealiyetê şımawo waşte tenya karberanê {{PLURAL:$2|grubi|gruban ra yewi}} rê akerdeyo: $1.',
+'badaccess-groups' => 'No fealiyeto ke şıma waşt, tenya karberanê {{PLURAL:$2|grubi|gruban ra yewi}} rê akerdeyo: $1.',
 
 'versionrequired' => 'No $1 MediaWiki lazımo',
 'versionrequiredtext' => 'Seba gurenayışê na pele versiyonê MediaWiki $1 lazımo. 
@@ -327,11 +536,12 @@ $1',
 'ok' => 'Temam',
 'pagetitle' => '"$1" adres ra gerya.',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
+'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" ra ard',
 'youhavenewmessages' => 'To rê estê $1 ($2).',
 'newmessageslink' => 'mesacê newey',
 'newmessagesdifflink' => 'vurnayışo peyên',
-'youhavenewmessagesmulti' => 'To rê $1 de mesacê newey estê',
+'youhavenewmessagesmulti' => '$1 mesaco newe esto',
 'editsection' => 'bıvurne',
 'editsection-brackets' => '[$1]',
 'editold' => 'bıvurne',
@@ -339,7 +549,7 @@ $1',
 'editlink' => 'bıvurne',
 'viewsourcelink' => 'çımey bıvêne',
 'editsectionhint' => 'Qısımi bıvurne: $1',
-'toc' => 'Tedeestey',
+'toc' => 'Sernameyê meselan',
 'showtoc' => 'bımocne',
 'hidetoc' => 'bınımne',
 'collapsible-collapse' => 'Kılm ke',
@@ -355,6 +565,7 @@ $1',
 'page-rss-feed' => '"$1" Cıresnayışê RSSi',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
 'red-link-title' => '$1 (pele çıniya)',
 'sort-descending' => 'Ratnayışê qemeyayışi',
 'sort-ascending' => 'Ratnayışê Zeydnayışi',
@@ -363,7 +574,7 @@ $1',
 'nstab-main' => 'Pele',
 'nstab-user' => 'Pela Karberi',
 'nstab-media' => 'Pela Medya',
-'nstab-special' => 'Pela xısusi',
+'nstab-special' => 'Pela xısusiye',
 'nstab-project' => 'Pela Procey',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Mesac',
@@ -379,7 +590,7 @@ Keyepelê {{SITENAME}} eşkeno xeta eşkera bıkero.',
 'nosuchspecialpage' => 'Pela xasa wınasiye çıniya',
 'nospecialpagetext' => '<strong>To yew pela xasa nêvêrdiye waşte.</strong>
 
-Seba lista pelanê xasanê vêrdeyan kerem ke: [[Special:SpecialPages|{{int:specialpages}}]].',
+Seba lista pelanê xasanê vêrdeyan reca kena: [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Xırab',
@@ -434,11 +645,12 @@ Fonksiyon: $1<br />
 Perse: $2',
 'viewsource' => 'Çımey bıvêne',
 'viewsource-title' => "Cı geyrayışê $1'i bıvin",
-'actionthrottled' => 'Fealiyet xeneqna',
+'actionthrottled' => 'Kerden peysnaya',
 'actionthrottledtext' => 'Riyê tedbirê anti-spami ra,  wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
 Çend deqey ra tepeya reyna bıcerrebnên.',
 'protectedpagetext' => 'No pel qey nêvuriyayiş hao (nao) pawyeno.',
 'viewsourcetext' => 'To şikinay çımey na pele bıvêne u kopya kerê:',
+'viewyourtext' => "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:",
 'protectedinterface' => 'No pel qey software nuştey hezır keno u ın semed ra şuxulyayişê no pel qedexe biyo.',
 'editinginterface' => "'''Teme:''' Şıma hao jû pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
 Vurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.
@@ -447,9 +659,16 @@ Seba çarnayışi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=kiu tra
 'cascadeprotected' => 'No pel de vurnayiş qedexe biyo, çunke şıma tuşa "kademeyın" aqtif kerdo u no {{PLURAL:$1|pelo|pelo}} pawıteyo de xebıtyeno:
 $2',
 'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
+'customcssprotected' => 'Mısadeyê şıma çıniyo ke na pela CSSi bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
+'customjsprotected' => 'Mısadeyê şıma çıniyo ke na pela Java Scripti bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
 'ns-specialprotected' => 'Peley xısusi nênê vurnayış.',
 'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
 Sebeb: "\'\'$2\'\'".',
+'filereadonlyerror' => 'Dosyay vurnayışê "$1" nê abê no lakin depoy dosya da "$2" mod dê  salt wendi deyo.
+
+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',
 
 # Virus scanner
 'virus-badscanner' => "Eyaro şaş: no virus-cıgerayox nêzanyeno: ''$1''",
@@ -469,15 +688,16 @@ Hesabê şıma biyo a.
 'yourpassword' => 'Parola',
 'yourpasswordagain' => 'Parola reyna bınusne:',
 'remembermypassword' => 'Parola mı nê cıgeyraoği de biya xo viri (heta $1 {{PLURAL:$1|roc|roci}}).',
+'securelogin-stick-https' => "Dekewtış kerdışi dıma HTTPS'i dı grêdaye bıman",
 'yourdomainname' => 'Nameyê şıma yo meydani',
 'externaldberror' => 'Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.',
 'login' => 'Cı kewe',
-'nav-login-createaccount' => 'Cı kewe / hesab vıraze',
+'nav-login-createaccount' => 'Dekew de / hesab vıraze',
 'loginprompt' => "Cıkewtena {{SITENAME}}i rê gani ''cookies'' akerdey bê.",
 'userlogin' => 'Cı kewe / hesab vıraze',
 'userloginnocreate' => 'Cı kewe',
-'logout' => 'Cı ra veciye',
-'userlogout' => 'Vıcyayış',
+'logout' => 'Bıveciyên',
+'userlogout' => 'Bıveciyên',
 'notloggedin' => 'Hesab akerde niyo',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
@@ -499,9 +719,12 @@ Ravêri inan akerê, dıma be name u parola şımawa newiye cı kewê.',
 'nocookieslogin' => 'Semedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.
 Şıma çerezi qapan kerdi.
 Ravêri inan akerê u reyna bıcerrebnê.',
+'nocookiesfornew' => 'Hesabê karberi nêvıraziya, MA nêzana sebebê cı kotirawo.
+Akerdış dê çerezarê xo emel bê uena pela fına barkerê.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
 'noname' => 'Yew nameyo maqbul bınuse.',
-'loginsuccesstitle' => 'Hesab bıyo a.',
-'loginsuccess' => '{{SITENAME}} Na keyepel de pê no "$1" name şıma hesab kerdo a.',
+'loginsuccesstitle' => 'Hesab abıya',
+'loginsuccess' => "'''{{SITENAME}} dı name dê \"\$1\" şıma hesab akerdo.'''",
 'nosuchuser' => 'Ebe namey "$1"i yew karber çıniyo.
 Nuştışê namanê karberan de herfa pil u qıce rê diqet kerên.
 Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe akerên]].',
@@ -510,8 +733,9 @@ Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe a
 'login-userblocked' => 'No karber/na karbere blokekerdeyo/blokekerdiya. Cıkewtışi rê musade çıniyo.',
 'wrongpassword' => 'Parola ğeleta. Rêna / fına bıcerrebne .',
 'wrongpasswordempty' => 'Parola tola, venga. tekrar bınuse.',
-'passwordtooshort' => 'Parolayê to gani bi {{PLURAL:$1|1 karakter|$1 karakteran}}.',
+'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',
 'passwordremindertitle' => 'Qey na keyepel {{SITENAME}} yew parolayo emanet',
 '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}}.
@@ -521,8 +745,8 @@ Eke vurnayişê parolayi, şıma nêwaşt ya zi parolayê şıma ameyo şıma vi
 'noemailcreate' => 'Şıma gani yew parolayo meqbul peda bıkeri',
 'passwordsent' => '"$1" No name de yew e-posta erşawiya (ruşya). hesabê xo, şıma wext mesaj gırewt u çax akere.',
 'blocked-mailpassword' => 'Cıkewetışê na keyepel de şıma qedexe biye, ey ra newe yew şifre nêerşawyeno.',
-'eauthentsent' => 'Adreso ke şıma dayo ma, ma yew e-posta erşawıt uca, o e-posta de kodê tesdiq kerdış esto.
-Heta ke şıma o e-posta tesdiq nêkeri ma yewna e-posta şıma ri nêerşaweni.',
+'eauthentsent' => 'Adreso ke şıma dayo ma, ma yew e-posta rışt uca, o e-posta de kodê araşt kerdış esto.
+Heta ke şıma o e-postaaraşt nêkeri ma yewna e-posta şıma ri nêrışêno.',
 'throttled-mailpassword' => 'Parola vir ardış, zerreyê {{PLURAL:$1|yew seet|$1 seet}} de erşawiya.
 Parola her {{PLURAL:$1|yew seete|$1 seete}} de yew rey erşawiyena.',
 'mailerror' => 'Erşawıtışe xetayê e-posta: $1',
@@ -532,8 +756,10 @@ xulasa ney kesê ke IP adresê şıma xebıtneni hini nêeşkeni ney ra zêdêr
 'emailnotauthenticated' => 'No format de nuştışê e-postayi qebul nêbeno.
 Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'noemailprefs' => 'Hesab biyo a.',
-'emailconfirmlink' => 'E-postayê xo tesdiq kere',
+'emailconfirmlink' => 'E-postayê xo araşt kerê',
 'invalidemailaddress' => 'No format de nuştışê e-postayi qebul nêbeno. Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
+'cannotchangeemail' => 'E-postay hesabi ena wiki sera nêvurneyêno.',
+'emaildisabled' => 'Na site ra e-posta nêrışêno.',
 'accountcreated' => 'Hesab vıraciya',
 'accountcreatedtext' => 'Qey no $1 karker newe yew hesab vıraziya.',
 'createaccount-title' => 'Qey {{SITENAME}} newe yew heab vıraştış',
@@ -542,9 +768,14 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'usernamehasherror' => 'Namey karberi de karakteri gani têmiyan ra mebê',
 'login-throttled' => 'Demekê cıwa ver de şıma zah teşebbusê hesab akerdış kerd.
 Bıne vındere u newe ra dest pê bıkere.',
+'login-abort-generic' => 'Dekewtışê şıma xırabo-terkneyayo',
 'loginlanguagelabel' => 'Zıwan: $1',
 'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
 
+# E-mail sending
+'php-mail-error-unknown' => "PHP's mail() fonksiyoni de xırabin vıcyê.",
+'user-mail-no-addy' => 'Bê E-posta kerd ju e-posta bırşo cırê.',
+
 # Change password dialog
 'resetpass' => 'Parola bıvurne',
 'resetpass_announce' => 'Şıma pê yew parolayê muweqqet hesab kerd a, qey qedyayişe dekewtış newe yew parola bınuse:',
@@ -565,11 +796,14 @@ Bıne vındere u newe ra dest pê bıkere.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parola ancia bınuse',
+'passwordreset-text' => 'Nê formi melumatê hesab dê şıma birê şıma viri deye pırkerê.',
 'passwordreset-legend' => 'Parola ancia bınuse',
+'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
 'passwordreset-pretext' => '{{PLURAL:$1||Enê cerenan ra jeweri defiye de}}',
 'passwordreset-username' => 'Namey karberi:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'neticey e-postay bımocne?',
+'passwordreset-capture-help' => 'Şıma na dorek morkerê se, e-posta (idareten eposta ya) şıma rê yana karbera rê rışêno.',
 'passwordreset-email' => 'Adresa e-postey:',
 'passwordreset-emailtitle' => 'Hesab timarê {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Jeweri, {{SITENAME}} ra (ma heta şımayê, $1 IP adresi ra) ($4) teferuatê hesabdê şıma  va wa biyaro xo viri. Karbero ke cêrdeyo {{PLURAL:$3|hesaba|eno hesaba}} ena e-posta adresiya aleqey cı esto:
@@ -586,10 +820,15 @@ $2
 Ena parolaya deqewe de u xorê ju parolaya newi bıweçine. Parolaya şıma emaya şıma viri se  yana  ena e-posta şıma nê weştase u şıma qayıl niye parolaya xo bıvurnese, ena mesacer peygoş bıkerê.',
 'passwordreset-emailelement' => 'Namey karberi: $1
 Parola vêrdiye: $2',
+'passwordreset-emailsent' => 'E-postay xo vira kerdışi rışiyê.',
+'passwordreset-emailsent-capture' => 'Zey cêri e-postay xo vira kerdışi rışiyê.',
+'passwordreset-emailerror-capture' => 'ey cêri e-postay xo vira kerdışi vıraziyê lakin merdum dê $1 rê nêrışiyê.',
 
 # Special:ChangeEmail
 'changeemail' => 'E-posta adresa xo bıvurnê',
 'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
+'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê araşt kerdışi zi parolay xo şıma de bınusnê',
+'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
 'changeemail-oldemail' => 'E-postay şımaya newki:',
 'changeemail-newemail' => 'E-postay şımayê newe:',
 'changeemail-none' => '(Çıno)',
@@ -605,12 +844,13 @@ Parola vêrdiye: $2',
 'link_tip' => 'Gırê dahili',
 'extlink_sample' => 'http://www.example.com titleya gire',
 'extlink_tip' => 'Çımeyo tewer (http:// prefix)',
-'headline_sample' => 'nuşteyo headline',
+'headline_sample' => 'nuştey xeta seri',
 'headline_tip' => 'Ket 2 headline',
 'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
 'nowiki_tip' => 'Formatê wiki iptal bık',
-'image_sample' => 'resım bıerze cı',
+'image_sample' => 'Misal resim.jpg',
 'image_tip' => 'Dosyaya embedi',
+'media_sample' => 'misal.jpg',
 'media_tip' => 'Gırey dosya',
 'sig_tip' => 'İmzay tı u tarix',
 'hr_tip' => 'Çızgiy Horizantoli (use sparingly)',
@@ -699,12 +939,17 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'userjsyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
 'usercsspreview' => "'''şıma tena verqaydê dosyayê CSS vineni.''' '''Dosyayê Karberi CSS hema qayd nebiyo!'''",
 'userjspreview' => "'''şıma tena test keni ya ziverqayn seyr keni - karberê JavaScript'i hema qayd nebiyo.'''",
+'sitecsspreview' => "'''Şımayê enewke tenya verqaytê dosya da CSS vınenê.''' 
+'''Hewna qayd nêbı!'''",
+'sitejspreview' => "'''Şımayê enewke tenya verqaytê kodê dosya da JavaScriptê karberi vınenê.''' 
+'''hewna qayd nebı!'''",
 'userinvalidcssjstitle' => "'''Teme:''' Mewzuyê \"\$1\" çıniyo.
 Dosyanê be namey .css u .js'i de herfa werdiye bıgurêne, mesela herında {{ns:user}}:Foo/Vector.css'i de {{ns:user}}:Foo/vector.css bınuse.",
-'updated' => '(Biyo rocane)',
+'updated' => '(Newenyaya)',
 'note' => "'''Not:'''",
 'previewnote' => "Teme! ena teyna verqeyda.'''
 Vurnayışê tu hama qeyd nıbiyo!",
+'continue-editing' => 'Vurnayışi rê dewam ke',
 'previewconflict' => 'No seyrkerdışê verqaydi serê qutiyê nuşte tezim kerdış de yo, eke şıma qayile vurnayişê maddeyi seyino bıvini, no mocneno şıma.',
 'session_fail_preview' => 'Ma ef kere. Vindibiyayişê tayê datay ra a kerdışê hesabê şıma de ma vurnayişê şıma qayd nêkerd. Newe ra tesel (cereb) bıkere. Eke no qayde zi nêbo, [[Special:UserLogout|hesabê xo bıqefelne]] u newera a kere.',
 'session_fail_preview_html' => "'''Ma meluli! Sebayê vindbiyayişê datasistemi ma vurnayişê şıma nêeşkeni qaydker.'''
@@ -715,6 +960,7 @@ Vurnayışê tu hama qeyd nıbiyo!",
 'token_suffix_mismatch' => "'''Vurnayişê şıma tepeya ameyo çunke qutiyê imla xerıbya.
 Vurnayişê şıma qey nêxerepyayişê peli tepeya geyra a.
 Eke şıma servisê proksi yo anonim şuxulneni sebebê ey noyo.'''",
+'edit_form_incomplete' => "'''Qandê form dê vurnayışa tay wastera ma nêreşti; Vurnayışê ke şıma kerdê nêalızyayê, çım ra ravyarnê u fına bıcerbnê.'''",
 'editing' => 'Pela "$1"\'i bıvurnê',
 'creating' => "Pela $1'i vıraze",
 'editingsection' => '$1 vurneno (qısım)',
@@ -746,12 +992,14 @@ Wexta ke şıma no pel vurneni diqet bıkeri, log bivini:",
 'cascadeprotectedwarning' => "'''Diqet:''' Na pele kılit biya, tenya karberê idarekeri şenê ke naye bıvurnê, çıke na zerrey {{PLURAL:$1|na pela şipa-kılitkerdiye|nê pelanê şipanê-kılitkerdiyan}} dera:",
 'titleprotectedwarning' => "'''Diqet: Na pele kılit biya, [[Special:ListGroupRights|heqê xususiy]] lazımê ke naye vırazê.'''
 Loge peniye cor de este:",
-'templatesused' => '{{PLURAL:$1|Template|Templateyan}} ke ena pele dı ca genê:',
+'templatesused' => '{{PLURAL:$1|Şablon|Şabloni}} ke na pela de xebtênê:',
 'templatesusedpreview' => '{{PLURAL:$1|Sablon|Sabloni}}  ke na verqayt de xebetnayê:',
 'templatesusedsection' => '{{PLURAL:$1|Template|Templateyan}}  ke na qısım de xebetniyenê:',
 'template-protected' => '(kılit biyo)',
 'template-semiprotected' => '(nimey ena pele kılit biya)',
 'hiddencategories' => 'Ena pela bınê {{PLURAL:$1|1 hidden category|$1 categoriyan nımne}}:',
+'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
+'edittools-upload' => '-',
 'nocreatetitle' => 'Vıraştışê pele mehcuro',
 'nocreatetext' => '{{SITENAME}}, Pelê neweyi vıraştış re destur çino.
 şıma eşkeni tepiya şêri u eke şıma qayd biyaye yê [[Special:UserLogin|şıma eşkeni hesab akeri]], eke niye [[Special:UserLogin|şıma eşkeni qayd bıbiy]].',
@@ -790,6 +1038,12 @@ Taye şabloni zerre pel de nêmociyayeni.',
 'parser-template-loop-warning' => 'Gıreyê şabloni ca biyo: [[$1]]',
 'parser-template-recursion-depth-warning' => 'limitê şablonê newekerdışi biyo de ($1)',
 'language-converter-depth-warning' => 'xoritiya çarnekarê zıwanan viyarnê ra ($1)',
+'node-count-exceeded-category' => 'Pela ra hetê kotya amardışê cı ravêrya',
+'node-count-exceeded-warning' => 'Amariya pela ravêrya.',
+'expansion-depth-exceeded-category' => 'Pela dı hetê canaya zoriya herayin ravêrya',
+'expansion-depth-exceeded-warning' => 'Ravêriya pela xori herayêna',
+'parser-unstrip-loop-warning' => 'Unstrip lete vineya',
+'parser-unstrip-recursion-limit' => 'Sinorê limit dê qayış dê ($1) ravêrya',
 
 # "Undo" feature
 'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
@@ -809,7 +1063,7 @@ Sebebo ke terefê $3 ra diyao ''$2''",
 'currentrev' => 'Halo nıkayên',
 'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
 'revisionasof' => 'Verziyonê roca $1ine',
-'revision-info' => 'Teshihkerdışê roca $1ine be terefê $2',
+'revision-info' => 'Tehsis kerdışê roca $1ine be terefê $2',
 'previousrevision' => '← Çımraviyarnayışo kıhanêr',
 'nextrevision' => 'Tekrar-diyayışo newêr →',
 'currentrevisionlink' => 'Revizyono veror',
@@ -818,9 +1072,9 @@ Sebebo ke terefê $3 ra diyao ''$2''",
 'last' => 'pey',
 'page_first' => 'verên',
 'page_last' => 'peyên',
-'histlegend' => "Ferqê weçinıtış: Qutiya versiyonan isaret bık u dest bı ''enter''i ya zi gozaga cêrêne klik bık.<br />
-Cetwel: (pey) = ferqê versiyonê peni,
-(ver) = ferqê versiyonê verni, Q = vurnayışo qıçkek.",
+'histlegend' => "'''Ferqê weçinayışi:''' Qutiya versiyonan mor ke u  ''enter''i pıploxne ya zi makera cêrêner pılpxne.<br /> 
+Lecant: '''({{int:cur}})''' = ferqê versiyonê peni,
+'''({{int:last}})''' = ferqê versiyonê verni, '''{{int:minoreditletter}}''' = vurnayışo werdı.",
 'history-fieldset-title' => 'Tarixê browsey',
 'history-show-deleted' => 'Tenya esterıt',
 'histfirst' => 'Verênêr',
@@ -957,6 +1211,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'mergehistory-comment' => '[[:$1]] u [[:$2]] yew biyê: $3',
 'mergehistory-same-destination' => 'Pela çime u destinasyonî gani eyni nibiy.',
 'mergehistory-reason' => 'Sebeb:',
+'mergehistory-revisionrow' => '$1 ($2) $3 . . $4 $5 $6',
 
 # Merge log
 'mergelog' => 'Logê yew kerdişî',
@@ -965,7 +1220,9 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'mergelogpagetext' => 'Cêr de jû liste esta ke mocnena ra, raya tewr peyêne kamci pela tarixi be a bine ra şanawa pê.',
 
 # Diffs
-'history-title' => 'Tarixê revizyoniyê "$1"',
+'history-title' => 'Rewizyonê $1:',
+'difference-title' => 'Ferkê revizyonan de "$1"',
+'difference-title-multipage' => 'Ferkê pelan dê "$1" u "$2"',
 'difference-multipage' => '(Ferqê pelan)',
 'lineno' => 'Rêza $1i:',
 'compareselectedversions' => 'Verziyonan kontrol bıke',
@@ -993,7 +1250,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 '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 Wikipediya de pela \"[[:\$1]]\" vıraze!'''",
+'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
 'searchhelp-url' => 'Help:Tedeestey',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
 'searchprofile-articles' => 'Pelê tedeestey',
@@ -1006,7 +1263,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'searchprofile-images-tooltip' => 'Qe doyayî bigêre',
 'searchprofile-everything-tooltip' => 'Tedeestey hemine cı geyre (pelanê mınaqeşey zi tey)',
 'searchprofile-advanced-tooltip' => 'qe cayê nimeyî bigêre',
-'search-result-size' => '$1 ({{PLURAL:$2|1 çekuye|$2 çekuy}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 kelime|$2 kelimey}})',
 'search-result-category-size' => '{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 ketegoriyê bini|$2 kategiryanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})',
 'search-result-score' => 'Eleqa: $1%',
 'search-redirect' => '(ber $1)',
@@ -1031,7 +1288,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'powersearch' => 'Cıgeyrayışo hera',
 'powersearch-legend' => 'Cıgeyrayışo hera',
 'powersearch-ns' => 'Cayanê nameyan de cıgeyrayış:',
-'powersearch-redir' => 'Raçarnayeyan lista ke',
+'powersearch-redir' => 'Listeya hetenayışan',
 'powersearch-field' => 'Seba cı seyr ke',
 'powersearch-togglelabel' => 'Qontrol ke:',
 'powersearch-toggleall' => 'Pêro',
@@ -1046,10 +1303,11 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'qbsettings-fixedright' => 'Rêcaene raşt',
 'qbsettings-floatingleft' => 'rêcaene çhep',
 'qbsettings-floatingright' => 'rêcaene raşt',
+'qbsettings-directionality' => 'Sabito, hereket de dosya da zıwan de şımaya gıredayeyo',
 
 # Preferences page
 'preferences' => 'Tercihi',
-'mypreferences' => 'Tercihi',
+'mypreferences' => 'Tercihê mı',
 '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ê.',
@@ -1060,6 +1318,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-beta' => 'Xacetê beta',
 'prefs-datetime' => 'Tarix u wext',
 'prefs-labs' => 'Xacetê labs',
+'prefs-user-pages' => 'Pela Karberi',
 'prefs-personal' => 'Pela karberi',
 'prefs-rc' => 'Vurnayışê peyêni',
 'prefs-watchlist' => 'Lista seyr-kerdışi',
@@ -1127,10 +1386,13 @@ Na game tepeya nêerziyena.',
 'username' => 'Namey karberi:',
 'uid' => 'Namey karberi:',
 'prefs-memberingroups' => 'Ezayê {{PLURAL:$1|grub|grubi}}:',
+'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Wextê qeydbiyayışi',
+'prefs-registration-date-time' => '$1',
 'yourrealname' => 'Nameyo raştay',
 'yourlanguage' => 'Zıwan:',
 'yourvariant' => 'Varyante miyandê zuwani:',
+'prefs-help-variant' => 'Zerrey ena viki mocnayışi rê varyant yana ortografi re şıre tercihan dê xo.',
 'yournick' => 'imza:',
 'prefs-help-signature' => 'mesajê ke pelê werenayişi de gani pê ney "<nowiki>~~~~</nowiki>" imza bıbi.',
 'badsig' => 'Îmzayê tu raşt niyo.
@@ -1189,11 +1451,12 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'userrights-notallowed' => 'Hesabdê şımadı heqanê xo hewadayış u xorê heq dekerdış çıno.',
 'userrights-changeable-col' => 'Grubê ke şıma şenê bıvurnê',
 'userrights-unchangeable-col' => 'Grubê ke şıma nêşenê bıvurnê',
+'userrights-irreversible-marker' => '$1*',
 
 # Groups
 'group' => 'Grup:',
 'group-user' => 'Karberi',
-'group-autoconfirmed' => 'Karberê ke otomatikmen tesdiq biy',
+'group-autoconfirmed' => 'Karbero ke xob xo biyê araşt',
 'group-bot' => 'Boti',
 'group-sysop' => 'İdarekari',
 'group-bureaucrat' => 'Burokrati',
@@ -1201,21 +1464,21 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'group-all' => '(pêro)',
 
 'group-user-member' => '{{GENDER:$1|karber}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|Karbero ke otomotik tesdiq biyo}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|Karbero ke xob xo biyê araşt}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|İdarekar}}',
 'group-bureaucrat-member' => '{{GENDER:$1|buroqrat}}',
 'group-suppress-member' => '{{GENDER:$1|Temaşekar}}',
 
 'grouppage-user' => '{{ns:project}}:Karberi',
-'grouppage-autoconfirmed' => '{{ns:project}}: karberê tesdiqbiyaey',
+'grouppage-autoconfirmed' => '{{ns:project}}:Karbero ke xob xo biyê araşt',
 'grouppage-bot' => '{{ns:project}}:Boti',
 'grouppage-sysop' => '{{ns:project}}:İdarekeri',
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrati',
 'grouppage-suppress' => '{{ns:project}}:Kontrol',
 
 # Rights
-'right-read' => 'Pele bıwane',
+'right-read' => 'Pelan bıwanê',
 'right-edit' => 'Pele bıvurne',
 'right-createpage' => 'Pele vıraze (pelê ke ê werênayışi niyê)',
 'right-createtalk' => 'Pela werênayışi vıraze',
@@ -1231,7 +1494,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-reupload-own' => 'Dosyeyê ke to bar kerdi, inan sero bınuse',
 'right-reupload-shared' => 'Dosyeyê ke ambarê medyao barekerde de, inan mehelli wedare',
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
-'right-purge' => 'Seba yew pela ke tesdiq nêbiya, viria (cache) keypele pak bıke',
+'right-purge' => 'Verde ju pela araşt kerdışi hafızay sita besterne',
 'right-autoconfirmed' => 'Pelanê ke nême kılit biyê, inan bıvurne',
 'right-bot' => 'Zey yew karê xoserkerdey be',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
@@ -1245,7 +1508,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-browsearchive' => 'Bıgeyre pelanê eserıtiyan',
 'right-undelete' => 'Jû pela esterıtiye peyser bia',
 'right-suppressrevision' => 'İdarekeran ra dızdeni/miyanki, newede vurnayışan de qayt ke u newede vıraze',
-'right-suppressionlog' => 'Loganê xasan bıvêne',
+'right-suppressionlog' => 'Rocekanê xasan bıvêne',
 'right-block' => 'Karberanê binan karê vurnayışi ra bloke bıke',
 'right-blockemail' => 'Yew karberê erşawıtışê/rıştena e-maili ra bloke bıke',
 'right-hideuser' => 'Yew namey karberi  şari ra dızdeni/miyanki bloke bıke',
@@ -1273,15 +1536,17 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-siteadmin' => 'Database kilit bike u a bike',
 'right-override-export-depth' => 'Peleyanê ke tede linkanê 5 ra zafyer estê ay export bike',
 'right-sendemail' => 'Karberanê binî ra e-mail bişirav',
+'right-passwordreset' => 'E-postayanê parola reset kerdışa vineno',
 
 # User rights log
 'rightslog' => 'Qeydê heqanê karberi',
 'rightslogtext' => 'Ena listeyê loganê ke heqqa karbaranî mucneno.',
 'rightslogentry' => 'eza biyayişê grupî $1 ra $2 rê $3î bivurne',
+'rightslogentry-autopromote' => '$2 otomatikmen gırdkerdışi ra kerd $3.',
 'rightsnone' => '(çino)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'ena pele bıwane',
+'action-read' => 'ena pela wanayış',
 'action-edit' => 'ena pela bıvurnê',
 'action-createpage' => 'pelan bıvıraze',
 'action-createtalk' => 'pelanê werênayışi bıvıraze',
@@ -1305,6 +1570,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'action-suppressionlog' => 'ena logê xasî bivîne',
 'action-block' => 'enê karberi vurnayışi ra bıreyne',
 'action-protect' => 'seviyeyê pawitişî se ena pele bivurne',
+'action-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
 'action-import' => 'ena pele yewna wîkî ra import bike',
 'action-importupload' => 'ena pele yew dosyayê bar kerdişî ra import bike',
 'action-patrol' => 'vurnayîşê karberanê binî nişan bike patrol biye',
@@ -1317,35 +1583,37 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'action-sendemail' => 'e-posta bırşe',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|vurnayış|vurnayışan}}',
+'nchanges' => '$1 {{PLURAL:$1|fın vurna|fıni vurna}}',
 'recentchanges' => 'Vurnayışê peyêni',
 'recentchanges-legend' => 'Tercihê vurnayışanê peniyan',
 'recentchanges-summary' => 'Ena pele de wiki sero vurnayışê peyêni teqib ke',
 'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Ena edît yew pela newî viraşt',
+'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
 'recentchanges-label-minor' => 'Eno yew edîto qickek o',
 'recentchanges-label-bot' => 'Eno vurnayış terefê yew boti ra vıraziyo',
 'recentchanges-label-unpatrolled' => 'Eno edît patrol nibiyo',
 'rcnote' => "Bıni dı {{PLURAL:$1|is '''1''' vurnayış|peni '''$1''' vurnayışan estê}} {{PLURAL:$2|roc|'''$2''' roci}}, hetani $5, $4.",
 'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
 'rclistfrom' => '$1 ra vurnayışanê neweyan bımoc',
-'rcshowhideminor' => '$1 vurnayışê qıçan',
-'rcshowhidebots' => '$1 botan',
-'rcshowhideliu' => '$1 karberanê kewti',
-'rcshowhideanons' => '$1 karberano anonomiyan',
+'rcshowhideminor' => 'Vurnayışanê werdiya $1',
+'rcshowhidebots' => 'Bota $1',
+'rcshowhideliu' => 'karberanê qeydına $1',
+'rcshowhideanons' => 'karberanê anoniman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
-'rcshowhidemine' => '$1 nuştışanê mı',
-'rclinks' => 'bımoc $1 vurnayışi $2 roci dı<br />$3',
+'rcshowhidemine' => 'nuştışanê mı $1',
+'rclinks' => 'Peyni $2 rocan de vurnayışa $1  bımocne <br />$3',
 'diff' => 'ferq',
-'hist' => 'ver',
+'hist' => 'verên',
 'hide' => 'Bınımne',
 'show' => 'Bımocne',
-'minoreditletter' => 'q',
+'minoreditletter' => 'werdı',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
+'unpatrolledletter' => '!',
 'number_of_watching_users_pageview' => '[$1 ho seyr keno {{PLURAL:$1|karber|karberî}}]',
 'rc_categories' => 'Kategoriyanî rê limît bike (pê "|" ciya bike)',
 'rc_categories_any' => 'Her yew',
+'rc-change-size' => '$1',
 'rc-change-size-new' => 'Vurnayışa dıma $1 {{PLURAL:$1|bayt|bayt}}',
 'newsectionsummary' => '/* $1 */ qısımo newe',
 'rc-enhanced-expand' => 'detayan bımoc (requires JavaScript)',
@@ -1390,16 +1658,17 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'uploadlogpage' => 'Cıkewtışê bar-kerdışi',
 'uploadlogpagetext' => 'cêr de [[Special:NewFiles|listeyê dosyayan]] estî.',
 'filename' => 'Namey Dosya',
-'filedesc' => 'qisse',
-'fileuploadsummary' => 'qisse:',
+'filedesc' => 'Xulasa',
+'fileuploadsummary' => 'Xulasa:',
 'filereuploadsummary' => 'Vurnayîşê dosyayî:',
-'filestatus' => 'statuyê copyrightî',
-'filesource' => 'Çımey:',
+'filestatus' => 'Weziyetê heqê telifiye:',
+'filesource' => 'Çıme:',
 'uploadedfiles' => 'Dosyayê ke bar biye',
 'ignorewarning' => 'Îkazi kebul meke u dosya reyna bar bike',
 'ignorewarnings' => 'Îkazi kebul meke',
 'minlength1' => 'Nameyanê dosyayî de gani bî ezamî yew herf est biyê.',
 'illegalfilename' => '"$1" no nameyê dosya de tayê karakteri nêşuxulyenî. newe ra tesel bıkerê',
+'filename-toolong' => 'Nameyê dosyayan 240 bayt ra derg do nêbo.',
 'badfilename' => "Nameyanê dosyayî ''$1'' rê vurneyî biye.",
 'filetype-mime-mismatch' => 'Derg kerdıştê Dosyada ".$1" u ($2) MIME tipiya cıya pêro nina.',
 'filetype-badmime' => 'Dosyaye ke tipê MIME "$1"î de bar nibeno.',
@@ -1407,12 +1676,12 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'filetype-unwanted-type' => "'''\".\$1\"''' na tewırê dosyayi nêwazyena. pêşniyaz biyaye {{PLURAL:\$3|tewırê dosyayi|tewırê dosyayi}} \$2.",
 'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena}}. Eke cırê izin deyayo $2. {{PLURAL:$3|Babatan dosyayan|babeta dosyayan}}',
 'filetype-missing' => 'Ena dosya de extention (ze ".jpg") çini yo.',
-'empty-file' => 'Dosya ke ti şawit veng biy.',
-'file-too-large' => 'Dosya ke ti şawit zaf gird biy.',
+'empty-file' => 'Dosyaya ke şıma rışta venga.',
+'file-too-large' => 'Dosyaye ke şıma rışta zaf gırda.',
 'filename-tooshort' => 'Namayê dosyayi zaf kilm a.',
 'filetype-banned' => 'Tipê ena dosya qedexe biya.',
 'verification-error' => 'Ena dosya taramayê dosyayi temam nikena.',
-'hookaborted' => 'Vurnayişê tu ke ti deneme kerd pê yew extensiyon ra iptal biya.',
+'hookaborted' => 'Vurnayişê tu ke to cerbna pê yew çengal ra terkneya.',
 'illegal-filename' => 'Ena nameyê dosyayi kebul nibena.',
 'overwrite' => 'Ser yew dosyayê ke hama esta, ser ey qeyd nibena.',
 'unknown-error' => 'Yew xeteyê nizanyeni biya.',
@@ -1422,6 +1691,7 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 gırdîyê na dosyayi $2.',
 'largefileserver' => 'Ena dosya zaf girde ke server kebul nikeno.',
 'emptyfile' => 'dosya ya ke şıma bar kerda veng asena, nameyê dosyayi şaş nusyaya belka.',
+'windows-nonascii-filename' => 'Na wiki namen de dosyayan de xısusi karaxtera karkerdışa peşti nêdana.',
 'fileexists' => "no name de yew dosya ca ra esta.
 Eke şıma emin niyê bıvurni bıewne na dosya'''<tt>[[:$1]]</tt>'''
 [[$1|thumb]]",
@@ -1455,6 +1725,8 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'php-uploaddisabledtext' => 'barkerdışê dosyayê PHP nıka çino. kerem kere eyarê file_uploads korol bıkerê.',
 'uploadscripted' => 'Ena dosya de yew HTML ya zi kodê scriptî este ke belki browserê webî fam nikeno.',
 'uploadvirus' => 'Ena dosya de yew virus estê: Qe detayan: $1',
+'uploadjava' => 'Dosya, zerre de cıdı jew Java .class dosyaya ZIP esta.
+Dosyayn de Java barkerdışi rê icazet nêdeyê, çıkı emeleya merduman nêbena.',
 'upload-source' => 'Dosyayê henî',
 'sourcefilename' => 'Nameyê dosyaye çimeyî',
 'sourceurl' => "URL'yê Çımi",
@@ -1466,11 +1738,26 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'filewasdeleted' => 'no name de yew dosya yew wexto nızdi de bar biya u dıma zi serkaran hewn a kerdo. wexya ke şıma dosya bar keni bıewnê no pel $1.',
 'filename-bad-prefix' => "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"\$1\"''' destpêkeno .
 kerem kere yewna nameyo eşkera bıvicinê.",
+'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax is as follows:
+#   * Everything from a "#" character to the end of the line is a comment
+#   * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras
+CIMG # Casio
+DSC_ # Nikon
+DSCF # Fuji
+DSCN # Nikon
+DUW # some mobile phones
+IMG # generic
+JD # Jenoptik
+MGP # Pentax
+PICT # misc.
+ #</pre> <!-- leave this line exactly as it is -->',
 'upload-success-subj' => 'bar biyo',
 'upload-success-msg' => '[$2] barkerdışê şıma qebul bı. Barkerdışê şımayo itado: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problem bar bike',
 'upload-failure-msg' => '[$1] delal: $2 ra barkerdıştê şıman ra jew xelat vıcyayo.',
 'upload-warning-subj' => 'İqazê barkerdışi',
+'upload-warning-msg' => 'Barkerdış dê [$2] de xırabey vıcyê. Xırabi timar kerdışi re  peyser şırê  [[Special:Upload/stash/$1|heruna barkerdışi]].',
 
 'upload-proto-error' => 'Porotokol raşt ni yo.',
 'upload-proto-error-text' => 'Bar kerdişê durî gani  URLî estbiye ke pe <code>http://</code> ya zi <code>ftp://</code> başli beno.',
@@ -1484,21 +1771,65 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
 'upload-too-many-redirects' => 'Eno URL de zaf redireksiyonî esto.',
 'upload-unknown-size' => 'Ebat nizanyeno',
 'upload-http-error' => 'Yew ğeletê HTTPî biyo: $1',
+'upload-copy-upload-invalid-domain' => 'Na domain ra kopyayê barkerdışanê nêbenê.',
 
 # File backend
 'backend-fail-stream' => '$1 nê vırazeyê',
 'backend-fail-backup' => '$1 nê wendeyê',
 'backend-fail-notexists' => '$1 name dı dosya çına.',
+'backend-fail-hashes' => 'Şınasiya dosyaya gırotışê cı nêgêriya.',
+'backend-fail-notsame' => 'Zey $1 ju dosya xora  esta.',
+'backend-fail-invalidpath' => '$1 rayê da depo kerdışa raştay niya.',
 'backend-fail-delete' => '$1 nê besterneyê',
+'backend-fail-alreadyexists' => "Dosyay $1'ya nêwanêna",
 'backend-fail-store' => '$1 ra $2 berdışo nê wanêno',
 'backend-fail-copy' => '$1 ra $2 kopya kerdışena dosyayo nêbeno',
 'backend-fail-move' => '$1 ra $2 berdışo nê wanêno',
 'backend-fail-opentemp' => 'Teferruatê dosyayo nêwanêno',
+'backend-fail-writetemp' => 'Dosyaya idari nênusneyê.',
+'backend-fail-closetemp' => 'Dosyaya idari nêracneyê',
 'backend-fail-read' => 'Na "$1" dosya nê wanêna',
-'backend-fail-create' => '$1 nê vırazêna',
+'backend-fail-create' => 'Dosyay $1 nê vırazıyê',
+'backend-fail-maxsize' => 'Dosyay $1 aya nênusneyêna feqet gırdeya cı {{PLURAL:$2|bayta|$2 bayto}}',
+'backend-fail-readonly' => 'Depo kerdışê "$1" enewke salt wanêno.Sebebê cı zi:"\'\'$2\'\'"',
+'backend-fail-synced' => 'Dosyay " $1 " miyan de depo kerdışeyda cıdı pê nêtepıştey esta',
+'backend-fail-connect' => 'Depo kerdışê "$1" peyni de nêgrêdeya.',
+'backend-fail-internal' => 'Depo kerdışê "$1" peyni de ju xırabin vıcyê.',
+'backend-fail-contenttype' => 'Qandê depo kerdışi zerrey babeta dosya da "$1" nêvineya.',
+'backend-fail-batchsize' => 'Depo kerdışê  dosya da $1 {{PLURAL:$1|operasyon de|operasyonê}} cı groto; sinorê  {{PLURAL:$2|operasyoni|operasyona}} $2.',
+'backend-fail-usable' => 'Dosyay $1 nênusneyê çıkı ratnayışê cı racnayeyo yana kewmiyo.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıya irtibat nêkewiya.',
+'filejournal-fail-dbquery' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıyo nêbeno.',
+
+# Lock manager
+'lockmanager-notlocked' => 'Dosyay "$1" kılit nêbiya; kesi kılit nêkerda.',
+'lockmanager-fail-closelock' => 'Dosyay kıliti nêracneyê "$1".',
+'lockmanager-fail-deletelock' => 'Dosyay kıliti nêbesterneyê "$1".',
+'lockmanager-fail-acquirelock' => 'Kılitê cı nêgêriya "$1".',
+'lockmanager-fail-openlock' => 'Dosyay kıliti nêracneyê qandê "$1".',
+'lockmanager-fail-releaselock' => 'Dosyay kıliti nêvıradeyê "$1".',
+'lockmanager-fail-db-bucket' => 'Kılite malumat da sitıl de $1 irtibat kewtışi re bes nêkeno.',
+'lockmanager-fail-db-release' => 'Malumatê kıliti nêvıradeyê $1.',
+'lockmanager-fail-svr-release' => 'Wasterê kıliti nêvıradeyê $1.',
+
+# ZipDirectoryReader
+'zip-file-open-error' => 'Dosya ZIP kontrol kerdışi re akerdin de jew xırabin amê.',
+'zip-wrong-format' => "Dosyaya ke nışan biya dosyay ZIP'i niya.",
+'zip-bad' => 'Dosya xırabiya yana zewbi sebeb ra ZIP dosyaya nêwanêna.
+Kontrolê emeleyey oyo veş nêbeno.',
+'zip-unsupported' => 'Dosya MediaWiki ra ZIP dosyaya nêwanêna yana derganiya ZIP de cı aya pıro nina. Kontrolê emeleyey oyo veş nêbeno.',
 
 # Special:UploadStash
 'uploadstash' => 'Nımıtışê barkerdışi',
+'uploadstash-summary' => "Na pela barkerdış (yana hewna barbenayış dı) hema hewna wiki'dedosyeyê ke nêpêseryayê enarê rasayış gre danop. Enê dosyay o ke a dosya keno bar tek o şena a dosya bıvino.",
+'uploadstash-clear' => 'Dosyeyê ke idareten bıvıryê ena besternê',
+'uploadstash-nofiles' => 'Dosyeyê ke idareten bıvıryê çınyê.',
+'uploadstash-badtoken' => 'Karkerdışê cı nêbı, muhtemelen desture şımayê timarkerdışi zeman do şıma ravêrdo. Fına bıcerbnê.',
+'uploadstash-errclear' => 'Besternayışê dosyayan nêbı',
+'uploadstash-refresh' => 'Listanê dosyayan aneweke',
+'invalid-chunk-offset' => 'Ofseto nêravyarde',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Cıkewtış red biyo',
@@ -1517,6 +1848,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization Selahiyetê resımi b
 no wiki bı umumi eyar biyo.
 qey pawıtışi, img_auth.php battal verdiyayo.",
 'img-auth-noread' => 'Heqqa karberanî çino ke "$1" biwendi',
+'img-auth-bad-query-string' => "URL'dı ratnayışo nêravêrde esto.",
 
 # HTTP errors
 'http-invalid-url' => 'URL raşt niya: $1',
@@ -1559,7 +1891,7 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
 
 # File description page
 'file-anchor-link' => 'Dosya',
-'filehist' => 'Tarixê dosya',
+'filehist' => 'Ravêrdê dosya',
 'filehist-help' => 'Klik bık ser yew tarih u aye tarih dı versionê dosya bıvin.',
 'filehist-deleteall' => 'hemî biestere',
 'filehist-deleteone' => 'bıestere',
@@ -1586,11 +1918,17 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.',
 'sharedupload-desc-there' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
 'sharedupload-desc-here' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
+'sharedupload-desc-edit' => 'Na dosya $1 proceyan dê binandı ke şeno bıgurweyno.
+Şıma qayılê ke malumatê cı bıvurnê se şıre [pela da $2 ].',
+'sharedupload-desc-create' => 'Na dosya $1 proceyan dê binandı ke şeno bıgurweyno.
+Şıma qayılê ke malumatê cı bıvurnê se şıre [pela da $2 ].',
 'filepage-nofile' => 'Ena name de dosya çin o.',
 'filepage-nofile-link' => 'Ena name de dosya çin o. Feqet ti eşkeno [$1 bar bike].',
 'uploadnewversion-linktext' => 'Versiyonê newiyerê ena dosya bar ke',
 'shared-repo-from' => '$1 ra',
 'shared-repo' => 'yew embarê repositoryî',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
+'filepage.css' => '/* CSS placed here is included on the file description page, also included on foreign client wikis */',
 
 # File reversion
 'filerevert' => '$1 reyna biyere',
@@ -1620,6 +1958,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 ** Çift/dosyaya kopyayın',
 'filedelete-edit-reasonlist' => 'Sebebê esterayîşî bivurne',
 'filedelete-maintenance' => 'Esterayîş u resterasyonê dosyayî wextê texmirî de nibenê.',
+'filedelete-maintenance-title' => 'Dosyaya nêbesterneyêna',
 
 # MIME search
 'mimesearch' => 'MIME bigêre',
@@ -1631,10 +1970,10 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'unwatchedpages' => 'Pelanê seyrnibiyeyî',
 
 # List redirects
-'listredirects' => 'Listeyê redireksiyonî',
+'listredirects' => 'Listeya Hetenayışan',
 
 # Unused templates
-'unusedtemplates' => 'Templateyanê nihebitiyeno',
+'unusedtemplates' => 'Şablonê ke nê xebtênê',
 'unusedtemplatestext' => 'no pel, {{ns:template}} pelê ke pelê binan de nêaseni, ninan keno.',
 'unusedtemplateswlh' => 'linkanê binî',
 
@@ -1643,7 +1982,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'randompage-nopages' => 'Ena {{PLURAL:$2|cayêname|cayênameyî}} de enê pelan çin o: $1.',
 
 # Random redirect
-'randomredirect' => 'Redereksiyonê randomî',
+'randomredirect' => 'Xoseri hetenayış',
 'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
 
 # Statistics
@@ -1660,17 +1999,18 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'statistics-edits' => 'Amarê vurnayîşî ke wextê {{SITENAME}} ronayîşî ra',
 'statistics-edits-average' => 'Ser her pele de amarê vurnayîşîyê averageyî',
 'statistics-views-total' => 'Yekunî bivîne',
+'statistics-views-total-desc' => 'Peleyê ke çınyê yana xısusiyê e nina zerre nêkerdê',
 'statistics-views-peredit' => 'Ser her vurnayîşî de vînayîşî',
 'statistics-users' => 'Qeyd biye [[Special:ListUsers|karberî]]',
 'statistics-users-active' => 'Karberê aktifi',
 'statistics-users-active-desc' => '{{PLURAL:$1|roco peyin de|$1 roco peyin de}} karber ê ke kar kerdê.',
 'statistics-mostpopular' => 'Pelayanê ke tewr zafî vînî biye',
 
-'disambiguations' => 'Pelayê ke maneyo bini rê grê danê',
+'disambiguations' => 'Pelayê ke maneyo bini rê gırey cı esto',
 'disambiguationspage' => 'Template:disambig',
 'disambiguations-text' => 'satıro ewwil de ke peli ca genî; gıreyê pelê ciya-manayi mocneni. İkinci sırada <br />tiya de [[MediaWiki:Disambiguationspage]] gani heme gıreyê şablonê ciya-manayan  re gıre bıdiyo',
 
-'doubleredirects' => 'redireksiyonê herdi',
+'doubleredirects' => 'Hetenayışê dıletıni',
 'doubleredirectstext' => 'no pel pelê ray motışani liste keno.
 gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 <del>serê ey nuşteyi</del> safi biye.',
@@ -1678,17 +2018,17 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'double-redirect-fixed-maintenance' => 'raçarnayışo dıletê [[$1]] ra  pela da [[$2]] timarêno',
 'double-redirect-fixer' => 'Fixerî redirek bike',
 
-'brokenredirects' => 'Redireksiyonî ke hin nixebitiyeno',
+'brokenredirects' => 'Hetenayışê vengi',
 'brokenredirectstext' => 'Redireksiyonê ey ki pelanê hama çiniyeno ra link dano:',
 'brokenredirects-edit' => 'bıvurne',
 'brokenredirects-delete' => 'bıestere',
 
-'withoutinterwiki' => 'Pelî ke bê linkanê ziwanî',
+'withoutinterwiki' => 'Peleyê ke zıwanan de bina re gırey cı çınyo',
 'withoutinterwiki-summary' => 'Enê pelî ke versiyonê ziwanî binî ra link nidano.',
-'withoutinterwiki-legend' => 'Prefiks',
+'withoutinterwiki-legend' => 'Verole',
 'withoutinterwiki-submit' => 'Bımocne',
 
-'fewestrevisions' => 'Pelî de ke revizyonê tayî estê',
+'fewestrevisions' => 'Peleyê ke cı sero tewr tayn timaryayış vıraziyayo',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
@@ -1700,47 +2040,50 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'nimagelinks' => '$1 {{PLURAL:$1|pelayan de|pelayan de}} gurweyêno',
 'ntransclusions' => '$1 {{PLURAL:$1|pelayan de|pelayan de}} gurweyêno',
 'specialpage-empty' => 'Ser ena report netice çini yo.',
-'lonelypages' => 'Pelî ke yetim mend',
+'lonelypages' => 'Peleyê ke cı rê gıre nêdeyayo',
 'lonelypagestext' => 'Ena pelî link nibiyê ya zi pelanê binî {{SITENAME}} de transclude biy.',
 'uncategorizedpages' => 'Pelayanê ke kategorî nibiye',
-'uncategorizedcategories' => 'Kategoriyanê ke kategorî nibiye',
-'uncategorizedimages' => 'Dosyayê ke kategorî nibiye',
-'uncategorizedtemplates' => 'Templateyê ke kategorî nibiye',
-'unusedcategories' => 'Kategoriyanê ke nihebitiyeno',
-'unusedimages' => 'Dosyayê ke nihebitiyeno',
+'uncategorizedcategories' => 'Kategoriyê ke bê kategorîyê',
+'uncategorizedimages' => 'Dosyayê ke bê kategorîyê',
+'uncategorizedtemplates' => 'Şablonê ke bê kategoriyê',
+'unusedcategories' => 'Kategoriyê ke nê xebtênê',
+'unusedimages' => 'Dosyeyê ke nê xebtênê',
 'popularpages' => 'Pelî ke populer o.',
-'wantedcategories' => 'Kategoriyî ke ganî estî bî.',
-'wantedpages' => 'Pelî ke ganî estî bî.',
+'wantedcategories' => 'Kategoriye ke waştênê',
+'wantedpages' => 'Peleye ke waştênê',
 'wantedpages-badtitle' => 'sernuşte meqbul niyo: $1',
-'wantedfiles' => 'Dosyayî ke ganî estî bî.',
-'wantedtemplates' => 'Templateyî ke ganî estî bî.',
+'wantedfiles' => 'Dosyeye ke waştênê',
+'wantedfiletext-cat' => 'Dosyaya cêrên karvıstedeya lakin çınya. Mewcud dosyayan de xeriba miyan de liste bena. Xırabiya wınisin dana <del>ateber</del>. Zewbi zi, şırê pela da dosyeyê ke çınyaya [[:$1]].',
+'wantedfiletext-nocat' => 'Dosyeyê cêrêni estê lekin karnêvıstê. Dosyeyê xeribi liste benê. bo babeta dano <del>ateber</del>',
+'wantedtemplates' => 'Şablonê ke waştênê',
 'mostlinked' => 'Pelî ke tewr zafî lînk bîy.',
 'mostlinkedcategories' => 'Kategorî ke tewr zafî lînk bîy.',
 'mostlinkedtemplates' => 'Şablonê ke tewr zafî pela re gıre bîye.',
 'mostcategories' => 'Pelan ke tewr zaf kategorî estê.',
 'mostimages' => 'Dosyayan ke tewr zaf link estê.',
 'mostrevisions' => 'Pelan ke tewr zaf revizyonî biyê.',
-'prefixindex' => 'Pelayanê hemi pe verbend',
-'shortpages' => 'Pelê kılmi',
-'longpages' => 'Pelê dergi',
+'prefixindex' => 'Veroleya peley pêro',
+'prefixindex-namespace' => 'Peleyê Veroleyıni ($1 cay nami)',
+'shortpages' => 'Peleyê kılmeki',
+'longpages' => 'Peleyê dergeki',
 'deadendpages' => 'pelê ke pelê binan re gırey nêeşto',
 'deadendpagestext' => 'Ena pelan ke {{SITENAME}} de zerrî ey de link çini yo.',
-'protectedpages' => 'Pelan ke kilit biya.',
+'protectedpages' => 'Pelayê ke biyê star',
 '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' => 'sernuşteyê pawıteyi',
+'protectedtitles' => 'Sernameyê ke starênê',
 'protectedtitlestext' => 'sernameyê cêrıni pawıte yî',
 'protectedtitlesempty' => 'pê ney parametreyan sernuşteyê pawite çinê',
-'listusers' => 'Lista karberan',
+'listusers' => 'Listeyê Karberan',
 'listusers-editsonly' => 'Teyna karberan bimucne ke ey nuştê',
 'listusers-creationsort' => 'goreyê wextê vıraştışi rêz ker',
 'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
 'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
 'newpages' => 'Pelê newey',
 'newpages-username' => 'Namey Karberi:',
-'ancientpages' => 'Pelê kıhanêri',
+'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
 'move' => 'bere',
 'movethispage' => 'Ena pele bere',
 'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
@@ -1753,10 +2096,12 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'pager-newer-n' => '{{PLURAL:$1|newiyer 1|newiyer $1}}',
 'pager-older-n' => '{{PLURAL:$1|Kıhanyer 1|Kıhanyer $1}}',
 'suppress' => 'Kontrol',
+'querypage-disabled' => 'Na pelaya xısusi,sebeb de performansi ra qefılneyê.',
 
 # Book sources
 'booksources' => 'Çımey kitaban',
 'booksources-search-legend' => 'Ser çımey kitaban bıgeyr',
+'booksources-isbn' => 'ISBN:',
 'booksources-go' => 'Şo',
 'booksources-text' => 'listeya cêrıni, keyepelê kitap rotoxan o.',
 'booksources-invalid-isbn' => 'ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?',
@@ -1770,18 +2115,19 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyna hessasiyê herfa pil u qıciyi) bıweçine u esayiş qıc kerê.',
 'logempty' => 'qaydi de weina yew malumat çino',
 'log-title-wildcard' => 'sername yê ke pê ney nuşteyi destkenêpê bıgêr.',
+'showhideselectedlogentries' => 'Qeydê weçinayışê bımocne/bınımne dekerê',
 
 # Special:AllPages
-'allpages' => 'Pelan hemi',
+'allpages' => 'Peli pêro',
 'alphaindexline' => '$1 ra $2ine',
 'nextpage' => 'Pela badê cû ($1)',
 'prevpage' => 'Pela verêne ($1)',
 'allpagesfrom' => 'Pelanê ke be ena herfe dest pêkenê bımocne',
 'allpagesto' => 'Pelanê ke be ena herfe qediyenê bımocne:',
 'allarticles' => 'Peli pêro',
-'allinnamespace' => 'Pelanê hemî ($1 cayênameyî)',
+'allinnamespace' => 'Peli pênro ( $1 cayênameyî)',
 'allnotinnamespace' => 'Pelanê hemî ($1 cayênameyî de niyo)',
-'allpagesprev' => 'Eveli',
+'allpagesprev' => 'Verêni',
 'allpagesnext' => 'ver şo',
 'allpagessubmit' => 'Şo',
 'allpagesprefix' => 'herfê ke şıma tiya de nuşti, pê ney herfan pelê ke destpêkenê liste ker:',
@@ -1789,10 +2135,15 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'allpages-bad-ns' => '{{SITENAME}} keyepel de wina "$1" yew nameyê cayi çino.',
 'allpages-hide-redirects' => 'Raçarnaya bınımne',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Şıma rê verhafıza versiyonê na pela aseno, hetana $1 cı kehani.',
+'cachedspecial-viewing-cached-ts' => 'Na pela raşt niya, şımayê enewke versiyonê verhafızada na pela vinenê.',
+'cachedspecial-refresh-now' => 'Peyêni bıvin.',
+
 # Special:Categories
 'categories' => 'Kategoriy',
 'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
-[[Special:UnusedCategories|kategori yê ke nêşuxulyeni]] tiya de nêmociyeni.
+[[Special:UnusedCategories|kategoriyê ke nê xebtênê]] tiya de nêmociyeni.
 hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
 'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
 'special-categories-sort-count' => 'goreyê çendi rêz ker.',
@@ -1842,6 +2193,8 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'listgrouprights-rights' => 'Heqqî',
 'listgrouprights-helppage' => 'Help:Heqqanê gruban',
 'listgrouprights-members' => '(lista ezayan)',
+'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>',
+'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>',
 'listgrouprights-addgroup' => 'şıma eşkenî hesabê xo re {{PLURAL:$2|grub|gruban}} têare kerî: $1',
 'listgrouprights-removegroup' => 'şıma eşkenî hesabê xo ra {{PLURAL:$2|grub|gruban}} bıvecî: $1',
 'listgrouprights-addgroup-all' => 'şıma hesabê xo re heme gruban eşkeni têare bıkeri',
@@ -1866,7 +2219,8 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'noemailtext' => 'no/na karber yew e-postayo meqbul nêdawa/o',
 'nowikiemailtitle' => 'E-postayan re destur çino',
 'nowikiemailtext' => 'no/na karber/e, karberanê binani ra gırewtışê e-postayi tercih nêkerd.',
-'emailtarget' => 'Namey Qarqeri defiyê de.',
+'emailnotarget' => 'Qandê Gêreninamey karberiyo wuna çınyo yana xırabo.',
+'emailtarget' => 'Namey Karberi defiyê de.',
 'emailusername' => 'Nameyê karberi:',
 'emailusernamesubmit' => 'Stare dı',
 'email-legend' => 'karberê {{SITENAME}} binan re e-posta bıerşaw',
@@ -1884,16 +2238,17 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 # User Messenger
 'usermessage-summary' => 'Mesajê sistemi caverd.',
 'usermessage-editor' => 'Mesaj berdoxe sistemi',
+'usermessage-template' => 'MediaWiki:UserMessage',
 
 # Watchlist
 'watchlist' => 'lista mına seyr-kerdışi',
-'mywatchlist' => 'Listey seyri',
-'watchlistfor2' => 'Semedê $1 ($2)',
+'mywatchlist' => 'Lista mına seyrkerdışi',
+'watchlistfor2' => 'Qandê $1 ($2)',
 'nowatchlist' => 'listeya temaşa kerdıişê şıma de yew madde zi çina.',
 'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
 'watchnologin' => 'hesab akerde niyo',
 'watchnologintext' => 'qey vurnayişê listeya temaşakerdışi [[Special:UserLogin|gani şıma hesab akeri]].',
-'addwatch' => 'Listeyê seyr kerdişî xo mıyan ke',
+'addwatch' => 'Listeyê seyri deke',
 'addedwatchtext' => 'Ma pele "[[:$1]]" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.
 Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem ma tu ri heber dun, zerri [[Special:RecentChanges|list of recent changes]] name pele beno qalın. Tı ri beno qolay çıta vurnaye biyo.',
 'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
@@ -1913,15 +2268,16 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
 'watchlistcontains' => 'listeya seyrkerdışê şıma de $1 tene {{PLURAL:$1|peli|peli}} estî.',
 'iteminvalidname' => "pê no '$1' unsuri problem bı, nameyo nemeqbul...",
 'wlnote' => "$3 seate u bahde $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
-'wlshowlast' => 'bımoc $1 seat $2 rocan $3',
-'watchlist-options' => 'Tercihanê listey seyrkerdışi',
+'wlshowlast' => 'Peyni de vurnayışan ra  $1 seata u $2 roca $3 bımocnê',
+'watchlist-options' => 'Tercihê liste da seyri',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Seyr ke...',
 'unwatching' => 'Seyr meke...',
+'watcherrortext' => 'Sazanê listeda seyri vurnayış de pox ta "$1" xırabey vıcyê .',
 
 'enotif_mailer' => 'postaya xeberdayişi {{SITENAME}}',
-'enotif_reset' => 'heme pelan ziyaret kerde nişane bıker',
+'enotif_reset' => 'Pela pêro ziyaret kerde deye mor ke',
 'enotif_newpagetext' => 'Ena yew pela newî ya.',
 'enotif_impersonal_salutation' => '{{SITENAME}} karber',
 'changed' => 'vurniya',
@@ -1972,7 +2328,7 @@ Tı ra rica keno, tı zani tı ho sekeno, tı zani neticeyanê eno wedarnayışi
 'actionfailed' => 'kar nêbı',
 'deletedtext' => '"$1" biya wedariya.
 Qe qeydê wedarnayışi, $2 bevinin.',
-'dellogpage' => 'Logê bıesterışi',
+'dellogpage' => 'Qeydê besternayışi',
 'dellogpagetext' => 'listeya cêrıni heme qaydê hewn a kerdeyan o.',
 'deletionlog' => 'qaydê hewnakerdışani',
 'reverted' => 'revizyono verin tepiya anciyayo',
@@ -2021,8 +2377,11 @@ Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê ê
 'unprotectedarticle' => 'Starkerdışê "[[$1]]" hewadeya',
 'movedarticleprotection' => 'eyarê pawıtışi no "[[$2]]" peli ra kırışiya no "[[$1]]" peli',
 'protect-title' => 'qey "$1" yew seviyaya pawıtışi bıvıcinê',
+'protect-title-notallowed' => 'Star kerdış sewiyeyê "$1" bıvinê',
 'prot_1movedto2' => 'nameyê [[$1]] peli yo newe: [[$2]]',
-'protect-legend' => 'pawıtışi tesdiq bıker',
+'protect-badnamespace-title' => 'Heruna naman itad starêna',
+'protect-badnamespace-text' => 'Na herunda namide peley nêstarênê.',
+'protect-legend' => 'Pawıtışi araşt ke',
 'protectcomment' => 'Sebeb:',
 'protectexpiry' => 'Qediyeno:',
 'protect_expiry_invalid' => 'Demo qediyayışi raşt niyo.',
@@ -2077,7 +2436,7 @@ Tı eşkeno seviyeye kılit kerdışi bıvurno, feqat tı nıeşken "cascading p
 'restriction-level-all' => 'seviye ya ke raşt ame',
 
 # Undelete
-'undelete' => 'pelê hewn a şiyayeyani ra mocın',
+'undelete' => 'Peleyê ke besterneyayê enê bımocnê',
 'undeletepage' => 'bıewn revizyonê peli yê hewn a şiyayeyan u tepiya biyar',
 'undeletepagetitle' => "'''pelo [[:$1|$1]] cêrın, wayirê revizyonê hewn a şiyayeyan o'''.",
 'viewdeletedpage' => 'bıewn pelê hewn a şiyayeyani',
@@ -2107,7 +2466,7 @@ Revizyoni ya hewn a biyê ya arşiw ra veciyayê ya zi cıresayişê şımayi ş
 'undeletedpage' => "'''$1 pel tepiya anciya'''
 
 qey karê tepiya ardışi u qey karê hewn a kerdışê verıni bıewnê [[Special:Log/delete|qeydê hewn a kerdışi]].",
-'undelete-header' => 'qey vinayişê peli yê ke cıwa ver hewn a biyê: [[Special:Log/delete|qeydê hewn a kerdışi]].',
+'undelete-header' => 'Peleyê ke veror de besterneyayê êna bıvinê: [[Special:Log/delete|qeydê esterneya]].',
 'undelete-search-title' => 'Bıgeyre pelanê eserıtiyan',
 'undelete-search-box' => 'bıgêr pelê hewn a biyayeyani',
 'undelete-search-prefix' => 'pel ê ke pê ney destpêkenî, ramocın',
@@ -2118,24 +2477,28 @@ qey karê tepiya ardışi u qey karê hewn a kerdışê verıni bıewnê [[Speci
 'undelete-cleanup-error' => 'Eka dosyayê arşîvî "$1"î ke ho wedariyeno feqet yew ğelet biya.',
 'undelete-missing-filearchive' => 'arşiwê IDyê yi dosyayi $1 tepiya niyeno çunke database de niyo.
 belka cıwa ver hewn a biyo..',
+'undelete-error' => 'Besternayışê peyd bıgi pela de xırabin vıcyê',
 'undelete-error-short' => 'Eka dosyayê biyereno feqet yew ğelet biya: $1',
 'undelete-error-long' => 'hewn a kerdışê na dosyayi wexta tepiya geriyenê xeta vıraziya:
 
 $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' => 'Cayê namey:',
-'invert' => 'seleksiyon peyser biya',
+'invert' => 'Bê weçineni ê bina peyser biya',
+'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' => 'Pineyê cadê naman',
+'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ê',
 'blanknamespace' => '(Ser)',
 
 # Contributions
 'contributions' => 'İştirakê karberi',
 'contributions-title' => '$1 de iştırakê karberi',
-'mycontris' => 'İştıraxê mı',
-'contribsub2' => 'Semedê $1 ($2)',
+'mycontris' => 'İştıraqê mı',
+'contribsub2' => 'Qandê $1 ($2)',
 'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
 'uctop' => '(ser)',
 'month' => 'Aşm ra (u verniyer):',
@@ -2144,11 +2507,11 @@ $1',
 'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
 'sp-contributions-newbies-sub' => 'Qe hesebê newe',
 'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Cıkewtışê kılit-kerdışi',
+'sp-contributions-blocklog' => 'Qeydê kılit-kerdışi',
 'sp-contributions-deleted' => 'vurnayîşê karberî wedariyayê',
 'sp-contributions-uploads' => 'barkerdey',
-'sp-contributions-logs' => 'logî',
-'sp-contributions-talk' => 'werênayış',
+'sp-contributions-logs' => 'qeydi',
+'sp-contributions-talk' => 'mesac',
 'sp-contributions-userrights' => 'Îdarayê heqqanê karberan',
 'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
 qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
@@ -2176,7 +2539,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'whatlinkshere-hidetrans' => 'Açarnayışê $1',
 'whatlinkshere-hidelinks' => '$1 greyan',
 'whatlinkshere-hideimages' => 'gireyê resimî $1',
-'whatlinkshere-filters' => 'Filtreyan',
+'whatlinkshere-filters' => 'Parzumi',
 
 # Block/unblock
 'autoblockid' => 'Otomatik vındarnayış #$1',
@@ -2198,6 +2561,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 ** Tehditwari hereket/Taciz
 ** yew ra ziyed hesaban xırab şuxulnayiş
 ** nameyê karberi yo ke meqbul niyo',
+'ipb-hardblock' => 'KArberê ke ena IP ra dekewte de wa vurnayış nêkerê',
 'ipbcreateaccount' => 'Hesab viraştişi blok bik',
 'ipbemailban' => 'Ena karber rê destur medî  ke ay e-mail neşiravî',
 'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
@@ -2208,12 +2572,15 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipbotherreason' => 'Sebebê bini:',
 'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
 'ipbwatchuser' => 'Pela miniqaşe u pela ena karberî seyr bike',
+'ipb-disableusertalk' => 'No karber wexto ke bloqedeyo wa pela da xodı vurnayış kerdışi rê izin medı',
 'ipb-change-block' => 'Pê ena ayaran, karberî reyna bloke bike',
 'ipb-confirm' => 'Bloke kerdışi tesdik ke',
 'badipaddress' => 'Adresê IPî raşt niyo',
 'blockipsuccesssub' => 'Blok biyo',
 'blockipsuccesstext' => 'Verniya [[Special:Contributions/$1|$1]] gêriyaya.
 <br />Qey çım ra viyarnayişê verni-grewtışi bewni [[Special:BlockList|Ê yê ke verniyê IP adresê cı gêriyaya]].',
+'ipb-blockingself' => 'Şımayê kenê ke xo bloke kerê! Şıma qayılye xo bloke kerê?',
+'ipb-confirmhideuser' => 'Wexto ke "karberi bınımnê" nışandeyo se şıma ye kenê karberi bloke kerê. No, Namey karberi lista pêron dı u dekewtışê rocekan dı aktiv bo.Şıma qayıli ney bıkerê?',
 'ipb-edit-dropdown' => 'Sebebê blokî bivurne',
 'ipb-unblock-addr' => '$1 a bik',
 'ipb-unblock' => 'Yew adresê IPî ya zi nameyê karberî blok bike',
@@ -2280,6 +2647,7 @@ Seba lista karberanê ke heta nıka kılit biyê [[Special:BlockList|lista kıli
 'ipb_already_blocked' => '"$1" zaten blok biya',
 'ipb-needreblock' => '$1 xora engel biyo. Tı wazenay eyaran bıvurnê?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Kılitkerdışo bin|Kılitkerdışê bini}}',
+'unblock-hideuser' => 'NAmeyê karberi nımneyayo qandê coy şıma nêşenê bloqey cı wedarnê.',
 'ipb_cant_unblock' => 'xeta: IDyê ver-grewtışi $1 nêesa/asa.
 belka ver-grewtış wedariyayo.',
 'ipb_blocked_as_range' => 'xeta: $1 verniyê IPadresi direk nêgeriyayo u ver-gırewtışi nêwedariyeno .
@@ -2291,6 +2659,7 @@ labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no
 'proxyblocker-disabled' => 'Eno fonksiyon nêxebetiyeno.',
 'proxyblockreason' => 'IPadresa şıma yew proxyo akerdeyo u ey ra verniyê ey geriya.',
 'proxyblocksuccess' => 'Kar bi temam.',
+'sorbs' => 'DNSBL',
 'sorbsreason' => 'IP adresa şıma, hetê no {{SITENAME}} keyepeli ra  DNSBL de proxy hesibyayo u liste biyo.',
 'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
 
@@ -2311,7 +2680,7 @@ eke şıma ıney gure keni u şıma xo ra emini, taahhud bıde wexta gure şıma
 'unlockconfirm' => 'Ya, ez wazene database a bikeri.',
 'lockbtn' => 'Database kilit bik',
 'unlockbtn' => 'Database a bik',
-'locknoconfirm' => 'Å\9fıma qutiyê tesdiq kerdıÅ\9fi niÅ\9fane nıkerd',
+'locknoconfirm' => 'Å\9eıma qutiyê araÅ\9ft kerdıÅ\9fi nêweçinê.',
 'lockdbsuccesssub' => 'Database kilit biya',
 'unlockdbsuccesssub' => 'Database a biya',
 'lockdbsuccesstext' => 'database qefıliya.<br />
@@ -2400,6 +2769,7 @@ Yewna name bınus.',
 'immobile-source-page' => 'nameyê no peli nêvuriyeno',
 'immobile-target-page' => 'sernameyê no hedefi re nêkırışiyeno',
 'imagenocrossnamespace' => 'Dosya, ca yo ke qey nameyê dosyayan nêbıbo nêkırışiyeno',
+'nonfile-cannot-move-to-file' => 'Ekê dosya niyê, cade namande dosyaya nêahulneyênê',
 'imagetypemismatch' => 'tipa dosyaya neweyi re pênêgıneno/nêgıneno pê',
 'imageinvalidfilename' => 'nameyê dosyayi ya hedefi meqbul niyo.',
 'fix-double-redirects' => 'rayberdış ê ke sernameyê orjinali re işaret keni rocane bıker.',
@@ -2414,16 +2784,18 @@ Wexta ke şıma no pel vurneni diqet bıkeri, loge bivini:",
 Ma rica keno yewna sername binuse.',
 
 # Export
-'export' => 'Pelan export bık',
+'export' => 'Pela ateber dı',
 'exporttext' => 'şıma yew pelê nişanebiyayeyi, nuşteyê taqımê pelani, pê pêşteyê XMLi eşkeni bıdi teberi.
 wiki yo ke wikimedya xebıtneno, pê [[Special:Import|pelê zerre dayişê]] no wikiyi beno.
 
 şıma eşkeni yew gırey bıerzi,
 ma vaci: qey pelê "[[{{MediaWiki:Mainpage}}]]i " [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].',
+'exportall' => 'Pela Pêron ateberdı',
 'exportcuronly' => 'têna revizyonê peyin bıger',
 'exportnohistory' => "----
 '''Not:''' pê no form teberdayişê verê (tarix) pelan battal biyo",
-'export-submit' => 'bıkırış',
+'exportlistauthors' => 'zerre de qandê her pela listey iştiraxkara esto',
+'export-submit' => 'Teber de',
 'export-addcattext' => 'kategoriya cerıni ra maddeyan têare ker',
 'export-addcat' => 'têare ker',
 'export-addnstext' => 'pelan cayê nameyan ra têare ker',
@@ -2455,6 +2827,8 @@ eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê
 'thumbnail_error' => 'Thumbnail niviraziya: $1',
 'djvu_page_error' => 'pelê DjVuyi bêşumulo',
 'djvu_no_xml' => 'Qe DjVu nieşkenî XML fetch bikî',
+'thumbnail-temp-create' => 'İdare dosyay resimiya nêvırazêna',
+'thumbnail-dest-create' => 'Resimo werdiyo keyd nêbeno',
 'thumbnail_invalid_params' => 'Parametreya thumbnailî raşt niyşê',
 'thumbnail_dest_directory' => 'Nieşkenî direktorê destinasyonî virazî',
 'thumbnail_image-type' => 'Tipê resimî kebul nibeno',
@@ -2501,6 +2875,11 @@ dosyaya emaneti vindbiyo',
 'import-upload' => 'Dosyayê XML bar bike',
 'import-token-mismatch' => "vindibiyayişê ma'lumatê hesabi. kerem kerê newe ra tesel/cereb bıkerê.",
 'import-invalid-interwiki' => 'Eya wîkî ra nieşkenî împort bike.',
+'import-error-edit' => 'Pela " $1 " qandê vurnayışi aya nêgêrêna çıkı cı rê icazet nêdeyayo.',
+'import-error-create' => 'Pela " $1 " qandê vıraştışi aya nêabêna çıkı cı rê icazet nêdeyayo.',
+'import-error-interwiki' => 'Pela " $1 " qandê name dayışi aya nêgêrêna çıkı namey cı (interwiki) sero cırê ca abıryayo.',
+'import-error-special' => 'Pela " $1 " qandê vıraştışi aya nêgêrêna çıkı namay cı nameyo do xısusiyo u na pela rê no name nêgêrêno.',
+'import-error-invalid' => 'Pela "$1" nêdebyê de çıkı namey cı çınyo.',
 
 # Import log
 'importlogpage' => 'Logê împortî',
@@ -2512,9 +2891,17 @@ dosyaya emaneti vindbiyo',
 
 # JavaScriptTest
 'javascripttest' => 'Cerbnayışê JavaScripti',
+'javascripttest-disabled' => 'Na kerdin, na wiki sero aktiv nêbiya.',
+'javascripttest-title' => 'Testê $1 gurweyênê',
+'javascripttest-pagetext-noframework' => 'Na pela testanê JavaScripta gurweynayışi re abıryaya.',
+'javascripttest-pagetext-unknownframework' => 'Çerçeweyê "$1" cerbnayışi xırabo.',
+'javascripttest-pagetext-frameworks' => 'Şıma ra reca xorê cêr ra test weçinê:$1',
+'javascripttest-pagetext-skins' => 'Testa akarfinayışi rê verqayt:',
+'javascripttest-qunit-intro' => 'Mediawiki.org dı [dokumanê $1] bıvinê.',
+'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Pela ya Qarberi',
+'tooltip-pt-userpage' => 'Pelaya karberi',
 'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
 'tooltip-pt-mytalk' => 'Pela ya Qıse vatışi',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
@@ -2523,8 +2910,8 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-mycontris' => 'Lista iştırakanê to',
 'tooltip-pt-login' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
-'tooltip-pt-logout' => 'Veciye',
-'tooltip-ca-talk' => 'Pela tedeesteyan sero werênayış',
+'tooltip-pt-logout' => 'Bıveciyên',
+'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',
@@ -2542,9 +2929,9 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-search' => 'Zerreyê {{SITENAME}} de cı geyre',
 'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
 'tooltip-search-fulltext' => 'Seba nê meqaley pelan seha ke',
-'tooltip-p-logo' => 'Pelaseri',
-'tooltip-n-mainpage' => 'Pela Seri bıvêne',
-'tooltip-n-mainpage-description' => 'Pela seri bıvêne',
+'tooltip-p-logo' => 'Pela seri',
+'tooltip-n-mainpage' => 'Şo pela seri',
+'tooltip-n-mainpage-description' => 'Şo pela seri',
 'tooltip-n-portal' => 'Heqa projey de, çı şenay bıkerê, çı koti vêniyeno',
 'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
 'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
@@ -2560,12 +2947,12 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-t-specialpages' => 'Lista pelanê xasanê pêroinan',
 'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
-'tooltip-ca-nstab-main' => 'Pela tedeesteyan bıvêne',
+'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' => 'pelayê kılit-kerdeyi bıvin',
-'tooltip-ca-nstab-image' => 'Pela tedeesteyan 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ıvêne',
 'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
@@ -2577,7 +2964,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-compareselectedversions' => 'Ferqê versiyonan bevinin',
 'tooltip-watch' => 'Eno pele listey tıyo seyir-kerdişi ri dek',
 'tooltip-watchlistedit-normal-submit' => 'Sernuşteya hewad',
-'tooltip-watchlistedit-raw-submit' => 'Listeyê seyr kerdişî newen ke',
+'tooltip-watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
 'tooltip-recreate' => 'pel hewn a bışiyo zi tepiya biya',
 'tooltip-upload' => 'Bar bike',
 'tooltip-rollback' => '"Peyser biya" be yew tik pela îştirak(an)ê peyên|i(an) peyser ano.',
@@ -2607,7 +2994,8 @@ Tı eşkeno yew sebeb bınus.',
 'spamprotectionmatch' => 'nuşte yo ke rıcnayoxê spami herikneno: $1',
 'spambot_username' => 'wikimedya spam-pakkerdışi',
 'spam_reverting' => 'agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo',
-'spam_blanking' => 'revizyonê hemeyi de ıney $1 re gıreyi estî, deverdiyeno',
+'spam_blanking' => 'Revizyonê gredê $1 vineyay, wa weng kero',
+'spam_deleting' => 'Revizyonê gredê $1 vineyay, wa besterneyê',
 
 # Info page
 'pageinfo-title' => 'Heq tê "$1"\'i',
@@ -2622,6 +3010,17 @@ Tı eşkeno yew sebeb bınus.',
 'pageinfo-views' => 'Amarina mocnayışan',
 'pageinfo-viewsperedit' => 'Vurnayışi sero vurnayışa bımocnêyış',
 
+# Skin names
+'skinname-standard' => 'Klasik',
+'skinname-nostalgia' => 'Nostalciya',
+'skinname-cologneblue' => 'Cologne Blue',
+'skinname-monobook' => 'MonoBook',
+'skinname-myskin' => 'MySkin',
+'skinname-chick' => 'Şıq',
+'skinname-simple' => 'Rehat',
+'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vektor',
+
 # Patrolling
 'markaspatrolleddiff' => 'Nişan bike ke devriye biyo',
 'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
@@ -2658,6 +3057,7 @@ $1',
 Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'imagemaxsize' => "Limitê ebat ê resimi:<br />''(qe pela deskripsiyonê dosyayan)''",
 'thumbsize' => 'Ebadê Thumbnaili',
+'widthheight' => '$1 - $2',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|pele|peli}}',
 'file-info' => 'ebatê dosyayi: $1, MIME tip: $2',
 'file-info-size' => '$1 × $2 pixelan, ebatê dosya: $3, MIME type: $4',
@@ -2675,18 +3075,23 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'file-info-png-frames' => '$1 {{PLURAL:$1|çerçeve|çerçeveyi}}',
 
 # Special:NewFiles
-'newimages' => 'Galeyê dosyayanê newe',
+'newimages' => 'Galeriya dosyayan dê newan',
 'imagelisttext' => "Cêr de yew listeyê '''$1''' esto {{PLURAL:$1|dosya|dosyayi}} veçiniya $2.",
 'newimages-summary' => 'Ena pela xasi dosyayi ke peni de bar biyayeyi mocnane.',
 'newimages-legend' => 'Filtre',
 'newimages-label' => 'Nameyê dosya ( ya zi parçe ey)',
-'showhidebots' => '($1 botan)',
+'showhidebots' => '(bota $1)',
 'noimages' => 'Çik çini yo.',
 'ilsubmit' => 'Cıgeyre',
 'bydate' => 'goreyê zemani',
 'sp-newimages-showfrom' => 'Dosyayê newi ke $2, $1 ra dest pe keni bimocne',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'video-dims' => '$1, $2 × $3',
+'seconds-abbrev' => '$1s',
+'minutes-abbrev' => '$1m',
+'hours-abbrev' => '$1h',
+'days-abbrev' => '$1d',
 'seconds' => 'verdê {{PLURAL:$1|$1 saniya|$1 saniya}}',
 'minutes' => 'verdê {{PLURAL:$1|$1 daka|$1 daka}}',
 'hours' => 'Verdê {{PLURAL:$1|$1 seata|$1 seata}}',
@@ -2700,6 +3105,61 @@ Tenya çiyo ke beno lista (rezê ke be * dest kenê cı) çıman ver de vêniyen
 Yew rêze de gırêyo sıfteyın gani gırêyo de dosya xırabıne bo.
 Na rêze de her gırêyo bin zey istisna vêniyeno, yanê pelê ke dosya beno ke sero rêzbiyaye asena.',
 
+/*
+Short names for language variants used for language conversion links.
+To disable showing a particular link, set it to 'disable', e.g.
+'variantname-zh-sg' => 'disable',
+Variants for Chinese language
+*/
+'variantname-zh-hans' => 'hans',
+'variantname-zh-hant' => 'hant',
+'variantname-zh-cn' => 'cn',
+'variantname-zh-tw' => 'tw',
+'variantname-zh-hk' => 'hk',
+'variantname-zh-mo' => 'mo',
+'variantname-zh-sg' => 'sg',
+'variantname-zh-my' => 'my',
+'variantname-zh' => 'zh',
+
+# Variants for Gan language
+'variantname-gan-hans' => 'hans',
+'variantname-gan-hant' => 'hant',
+'variantname-gan' => 'gan',
+
+# Variants for Serbian language
+'variantname-sr-ec' => 'sr-ec',
+'variantname-sr-el' => 'sr-el',
+'variantname-sr' => 'sr',
+
+# Variants for Kazakh language
+'variantname-kk-kz' => 'kk-kz',
+'variantname-kk-tr' => 'kk-tr',
+'variantname-kk-cn' => 'kk-cn',
+'variantname-kk-cyrl' => 'kk-cyrl',
+'variantname-kk-latn' => 'kk-latn',
+'variantname-kk-arab' => 'kk-arab',
+'variantname-kk' => 'kk',
+
+# Variants for Kurdish language
+'variantname-ku-arab' => 'ku-Arab',
+'variantname-ku-latn' => 'ku-Latn',
+'variantname-ku' => 'ku',
+
+# Variants for Tajiki language
+'variantname-tg-cyrl' => 'tg-Cyrl',
+'variantname-tg-latn' => 'tg-Latn',
+'variantname-tg' => 'tg',
+
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'ike-Cans',
+'variantname-ike-latn' => 'ike-Latn',
+'variantname-iu' => 'iu',
+
+# Variants for Tachelhit language
+'variantname-shi-tfng' => 'shi-Tfng',
+'variantname-shi-latn' => 'shi-Latn',
+'variantname-shi' => 'shi',
+
 # Metadata
 'metadata' => 'Melumato serên',
 'metadata-help' => 'Ena dosya dı zafyer informasyoni esto. Belki ena dosya yew kamareyo dijital ya zi skaner ra vıraziyo.
@@ -2721,6 +3181,8 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 * gpslatitude
 * gpslongitude
 * gpsaltitude',
+'metadata-langitem' => "'''$2:''' $1",
+'metadata-langitem-default' => '$1',
 
 # EXIF tags
 'exif-imagewidth' => 'Herayey',
@@ -2768,6 +3230,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-exposuretime' => 'Zemanê orta de vinderdişi',
 'exif-exposuretime-format' => '$1 san ($2)',
 'exif-fnumber' => 'F Amar',
+'exif-fnumber-format' => 'f/$1',
 'exif-exposureprogram' => 'Programê Orta de Vinderdişi',
 'exif-spectralsensitivity' => 'Hesasiyetê spektrali',
 'exif-isospeedratings' => 'ISO değerê piti',
@@ -2781,6 +3244,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-lightsource' => 'Çimeyê roşni',
 'exif-flash' => 'Flaş',
 'exif-focallength' => 'Deganiyê fokus ê lensi',
+'exif-focallength-format' => '$1 mm',
 'exif-subjectarea' => 'Wareyê ey',
 'exif-flashenergy' => 'Kuvetê flaşi',
 'exif-focalplanexresolution' => 'Focal plane X resolution',
@@ -2835,8 +3299,15 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-gpsareainformation' => 'Nameyê wareyê GPSi',
 'exif-gpsdatestamp' => 'Tarixê GPSi',
 'exif-gpsdifferential' => 'GPS differential correction',
+'exif-coordinate-format' => '$1° $2′ $3″ $4',
 'exif-jpegfilecomment' => "Vatışê dosyada JPEG'i",
 'exif-keywords' => 'Qesa kelimey',
+'exif-worldregioncreated' => 'Resim dınya dı qanci mıntıqara gêriyayo',
+'exif-countrycreated' => 'Resim qanci dewlet ra gêriyayo',
+'exif-countrycodecreated' => 'Cayo ke resim ancıyayo kodê dewlet da cı',
+'exif-provinceorstatecreated' => 'Cayê resim antışi dewlet yana wılayet',
+'exif-citycreated' => 'Suka ke resim gêriyayao',
+'exif-sublocationcreated' => 'Bın lokasyonê resimê suker da cı grot',
 'exif-worldregiondest' => 'Wareyo ke mocneyêno',
 'exif-countrydest' => 'Dewleta ke mocneyêna',
 'exif-countrycodedest' => 'Kodê dewleto ke mocneyoêno',
@@ -2848,25 +3319,39 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-headline' => 'Sername',
 'exif-credit' => 'Kredi/Destegdaren',
 'exif-source' => 'Çıme',
+'exif-editstatus' => 'Resmi vurnayışê weziyeti',
 'exif-urgency' => 'Aciliyet',
 'exif-fixtureidentifier' => 'Namey fiksturi',
 'exif-locationdest' => 'Tarifê cay',
+'exif-locationdestcode' => 'Lokasyon kodi vaciya',
+'exif-objectcycle' => 'Qandê medyay deme u roce cı',
 'exif-contact' => 'Zanışiya irtibati',
 'exif-writer' => 'Nuştekar',
 'exif-languagecode' => 'Zıwan',
 'exif-iimversion' => 'Verqaydê IIM',
 'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
 'exif-datetimeexpires' => 'No peyra mekarênê',
 'exif-datetimereleased' => 'Bıroşe',
 'exif-originaltransmissionref' => 'Oricinal pusula da kodê açarnayışi',
 'exif-identifier' => 'Şınasnayer',
 'exif-lens' => 'Lensê karkerdışi',
+'exif-serialnumber' => 'Seri nımreyê kamera',
 'exif-cameraownername' => 'Wayırê kamera',
 'exif-label' => 'Etiket',
+'exif-datetimemetadata' => 'Malumatê metamalumati peyd timarya',
+'exif-nickname' => 'Bêresmi namey cı',
 'exif-rating' => 'Rey dayış (5i sera)',
+'exif-rightscertificate' => 'Sertifikayê idariya heqan',
 'exif-copyrighted' => 'Weziyetê telifi',
 'exif-copyrightowner' => 'Wayırê Telifi',
 'exif-usageterms' => 'Şertê karkerdışi',
+'exif-webstatement' => 'Heqê telifiya miyandene',
+'exif-originaldocumentid' => 'Xasiya ID ya dokuman de orcinali',
+'exif-licenseurl' => 'Qandê Lisans de heqê telifiye URL',
+'exif-morepermissionsurl' => 'Alternatif malumatê lisansi',
+'exif-attributionurl' => 'No nuşte çı wext karyayo, şıma ra reca gre dekerê de',
+'exif-preferredattributionname' => 'No nuşte çı wext karyayo, Şıma ra reca morkerê',
 'exif-pngfilecomment' => "Vatışê dosyada PNG'i",
 'exif-disclaimer' => 'Reddê mesuliyeti',
 'exif-contentwarning' => 'İkazê zerreki',
@@ -2877,14 +3362,40 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-event' => 'Weqaya ke nameycıyo ravreno',
 'exif-organisationinimage' => 'Organizasyono ke ravêreno',
 'exif-personinimage' => 'Merdumo ke nameycıyo ravêreno',
+'exif-originalimageheight' => 'Veror de resim nêkırpnayışi dergeya cı',
+'exif-originalimagewidth' => 'Veror de resim nêkırpnayışi herayeya cı',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8',
+'exif-subjectnewscode-value' => '$2 ($1)',
 
 # EXIF attributes
-'exif-compression-1' => 'têhet nêanciyayo',
-'exif-compression-6' => 'wext o ke nêzaniyeno',
+'exif-compression-1' => 'Nêdegusneyayo',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensiyonel dergeya cı timarkerdışê cı bıwanê',
+'exif-compression-3' => 'CCITT Group 3 fax kodkerdış',
+'exif-compression-4' => 'CCITT Group 4 fax kodkerdış',
+'exif-compression-5' => 'LZW',
+'exif-compression-6' => 'JPEG (verên)',
+'exif-compression-7' => 'JPEG',
+'exif-compression-8' => 'Deflate (Adobe)',
+'exif-compression-32773' => 'PackBits (Macintosh RLE)',
+'exif-compression-32946' => 'Deflate (PKZIP)',
+'exif-compression-34712' => 'JPEG2000',
 
 'exif-copyrighted-true' => 'Heqê telifiye',
 'exif-copyrighted-false' => 'Malê umumiye',
 
+'exif-photometricinterpretation-2' => 'RGB',
+'exif-photometricinterpretation-6' => 'YCbCr',
+
 'exif-unknowndate' => 'Tarix nizanyano',
 
 'exif-orientation-1' => 'Normal',
@@ -2899,9 +3410,19 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-planarconfiguration-1' => 'chunky format',
 'exif-planarconfiguration-2' => 'planar format',
 
+'exif-xyresolution-i' => '$1 dpi',
+'exif-xyresolution-c' => '$1 dpc',
+
+'exif-colorspace-1' => 'sRGB',
 'exif-colorspace-65535' => 'Kalibrasyon nêvıraziyayo',
 
 'exif-componentsconfiguration-0' => 'çini yo',
+'exif-componentsconfiguration-1' => 'Y',
+'exif-componentsconfiguration-2' => 'Cb',
+'exif-componentsconfiguration-3' => 'Cr',
+'exif-componentsconfiguration-4' => 'R',
+'exif-componentsconfiguration-5' => 'G',
+'exif-componentsconfiguration-6' => 'B',
 
 'exif-exposureprogram-0' => 'nêdiya daşınasnayişi',
 'exif-exposureprogram-1' => 'Pê/bı dest',
@@ -2939,6 +3460,10 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-lightsource-17' => 'Roşna standarde A',
 'exif-lightsource-18' => 'Roşna standarde B',
 'exif-lightsource-19' => 'Roşna standarde C',
+'exif-lightsource-20' => 'D55',
+'exif-lightsource-21' => 'D65',
+'exif-lightsource-22' => 'D75',
+'exif-lightsource-23' => 'D50',
 'exif-lightsource-24' => 'ISO volframê studyoyi',
 'exif-lightsource-255' => 'Çimeyê roşni yê bini',
 
@@ -3052,6 +3577,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-ycbcrpositioning-2' => 'Wayırê-site',
 
 'exif-dc-contributor' => 'İştırakdari',
+'exif-dc-coverage' => 'Heruna yana wextin grotışa medya',
 'exif-dc-date' => 'Tarix(i)',
 'exif-dc-publisher' => 'Wılakar',
 'exif-dc-relation' => 'Medyay cı',
@@ -3063,6 +3589,8 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 
 'exif-isospeedratings-overflow' => '65535 ra gırdo',
 
+'exif-maxaperturevalue-value' => '$1 APEX (f/$2)',
+
 'exif-iimcategory-ace' => 'Zagon, kultur u keyfiye',
 'exif-iimcategory-clj' => 'Arey u huquq',
 'exif-iimcategory-dis' => 'Weqey u Qezey',
@@ -3099,9 +3627,9 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 # E-mail address confirmation
 'confirmemail' => 'Adresê emaîlî xo konfirme bike',
 'confirmemail_noemail' => 'Yew emaîlê tu raştîyê çin o ke [[Special:Preferences|tercihê karberî]] ayar bike.',
-'confirmemail_text' => 'qey şuxulnayişê e-postayê wikiyi gani ewwil e-posyaê şıma tesdiq bıbo.
-adresa şıma re qey erşawıtışê e-postayê tesdiqi, butonê cêrıni bıtıknê.
-e-posta yo ke erşawiyeno tede gıreyê kodê tesdiqi esto, gıreyi bıtıkne akerê u e-postayê xo tesdiq kerê.',
+'confirmemail_text' => 'Qey gurweyayışê e-postayê wikiyi gani veror e-postayê şıma araşt bıbo.
+Adresa şıma re qey erşawıtışê e-postayê araştin, butonê cêrıni pıploxnê.
+E-posta yo ke erşawiyeno tede gıreyê kodê araşti esto, gıreyi pıploxne akerê u e-postayê xo araşt kerê.',
 'confirmemail_pending' => 'Yew codê konfirmasyonî ma ti ra şiravt;
 Eka ti newe hesabê xo viraşt, ti gani yew di dekika vindero u email xo kontrol bike, yani reyna yew hesab meviraz.',
 'confirmemail_send' => 'Yew kodê konfirmasyonî email mina bişirave',
@@ -3123,15 +3651,15 @@ Ti eşkeno [[Special:UserLogin|ci kewt]].',
 'confirmemail_body' => 'Brayo delal, mara ke şıma no IP-adresi ra,
 keyepelê {{SITENAME}}i de pêno $2 e-postayi hesab kerda.
 
-eke raşta no e-posta eyê şımayo şıma gani tesdiq bıkerî, qey tesdiq kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrêni bıtıkne.
+eke raşta no e-posta eyê şımayo şıma gani araşt bıkerî, qey araşt kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrêni bıtıkne.
 
 $3
 
-eke şıma hesab *nê akerdo*, qey ibtalê tesdiqkerdışê adresa e-postayi gıreyê cêrıni bıtıknê:
+eke şıma hesab *nê akerdo*, qey terqnayışê araşt kerdışê adresa e-postayi gıreyê cêrıni pıploxnê:
 
 $5
 
-kodê tesdiqi heta ıney tarixi $4 meqbulo.',
+kodê araşti heta ıney tarixi $4 meqbulo.',
 'confirmemail_body_changed' => 'Yew ten, muhtemelen şıma no IP-adresi $1 ra,
 keyepelê {{SITENAME}}i de pê no $2 e-postayi hesab kerd a.
 
@@ -3170,8 +3698,11 @@ kodê tesdiqi heta ıney tarixi $4 meqbul o.',
 'deletedwhileediting' => "'''Teme''': Ena pele  verniyê ti de eseteriyaya!",
 'confirmrecreate' => "Karberê [[User:$1|$1]]î ([[User talk:$1|mesac]]), verniyê vurnayîşê ti ra ena pele wedarno, sebeb: ''$2''
 Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
+'confirmrecreate-noreason' => 'karbero [[User:$1|$1]] ([[User talk:$1|mesac]]) , dest pêkerdışiena pela sero vurnayışiya tepya ena pela besternê. Şıma qayıli ke ena pela fına vırazê se ena pela tesdiq kerê.',
 'recreate' => 'Reyna viraz',
 
+'unit-pixel' => 'px',
+
 # action=purge
 'confirm_purge_button' => 'Temam',
 'confirm-purge-top' => 'Cacheyê eno pel biestere?',
@@ -3183,6 +3714,18 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'confirm-unwatch-button' => 'TEMAM',
 'confirm-unwatch-top' => 'Ena pele lista xoya seyirkerdışi ra bıvece?',
 
+# Separators for various lists, etc.
+'semicolon-separator' => '&#32;',
+'comma-separator' => ',&#32;',
+'colon-separator' => ':&#32;',
+'autocomment-prefix' => '-&#32;',
+'pipe-separator' => '&#32;|&#32;',
+'word-separator' => '&#32;',
+'ellipsis' => '...',
+'percent' => '$1%',
+'parentheses' => '($1)',
+'brackets' => '[$1]',
+
 # Multipage image navigation
 'imgmultipageprev' => '← peleyê verin',
 'imgmultipagenext' => 'pela badê cû →',
@@ -3205,7 +3748,29 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'autosumm-blank' => 'Pele de her çi wederna',
 'autosumm-replace' => "Maqale pê '$1' vuriya",
 'autoredircomment' => 'Pele [[$1]] rê redirek biyo',
-'autosumm-new' => "Pê '$1' pele viraziyo.",
+'autosumm-new' => "Pela vıraziyê, '$1' bıvinê",
+
+# Size units
+'size-bytes' => '$1 B',
+'size-kilobytes' => '$1 KB',
+'size-megabytes' => '$1 MB',
+'size-gigabytes' => '$1 GB',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
+
+# Bitrate units
+'bitrate-bits' => '$1bps',
+'bitrate-kilobits' => '$1kbps',
+'bitrate-megabits' => '$1Mbps',
+'bitrate-gigabits' => '$1Gbps',
+'bitrate-terabits' => '$1Tbps',
+'bitrate-petabits' => '$1Pbps',
+'bitrate-exabits' => '$1Ebps',
+'bitrate-zetabits' => '$1Zbps',
+'bitrate-yottabits' => '$1Ybps',
 
 # Live preview
 'livepreview-loading' => 'Ho bar keni...',
@@ -3234,7 +3799,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist/raw|edit the raw list]].',
 Eka vurnayîşê ti qediyo, Listeyê Seyr Kerdişî Rocaniye Bike "{{int:Watchlistedit-raw-submit}}" klik bike.
 Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'watchlistedit-raw-titles' => 'Seroğî:',
-'watchlistedit-raw-submit' => 'Listeyê seyr kerdişî xo update bike',
+'watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
 'watchlistedit-raw-done' => 'Listeyê tuyê seyrkerdişi rocaniye biyo',
 'watchlistedit-raw-added' => '{{PLURAL:$1|1 seroğ|$1 seroğî}} de kerd:',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 seroğ|$1 seroğî}} de wedarno:',
@@ -3244,8 +3809,67 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'watchlisttools-edit' => 'listey seyrkerdışi bevin u edit bık',
 'watchlisttools-raw' => 'Listeyê seyr-kerdışi bıvin',
 
+# Iranian month names
+'iranian-calendar-m1' => 'Farvardin',
+'iranian-calendar-m2' => 'Ordibeheşt',
+'iranian-calendar-m3' => 'Xordad',
+'iranian-calendar-m4' => 'Tir',
+'iranian-calendar-m5' => 'Morded',
+'iranian-calendar-m6' => 'Şahrivar',
+'iranian-calendar-m7' => 'Mehr',
+'iranian-calendar-m8' => 'Aban',
+'iranian-calendar-m9' => 'Azar',
+'iranian-calendar-m10' => 'Dey',
+'iranian-calendar-m11' => 'Behman',
+'iranian-calendar-m12' => 'Esfend',
+
+# Hijri month names
+'hijri-calendar-m1' => 'Muharram',
+'hijri-calendar-m2' => 'Sefer',
+'hijri-calendar-m3' => 'Rebiel ewwel',
+'hijri-calendar-m4' => 'Rebiel sani',
+'hijri-calendar-m5' => 'Cemaziel ewwel',
+'hijri-calendar-m6' => 'Cemaziel tani',
+'hijri-calendar-m7' => 'Receb',
+'hijri-calendar-m8' => 'Şehban',
+'hijri-calendar-m9' => 'Remezan',
+'hijri-calendar-m10' => 'Şewwal',
+'hijri-calendar-m11' => 'Zil Qade',
+'hijri-calendar-m12' => 'Zil Hicce',
+
+# Hebrew month names
+'hebrew-calendar-m1' => 'Tişrei',
+'hebrew-calendar-m2' => 'Çeşvan',
+'hebrew-calendar-m3' => 'Kislev',
+'hebrew-calendar-m4' => 'Tevet',
+'hebrew-calendar-m5' => 'Şevat',
+'hebrew-calendar-m6' => 'Adar',
+'hebrew-calendar-m6a' => 'Adar I',
+'hebrew-calendar-m6b' => 'Adar II',
+'hebrew-calendar-m7' => 'Nisan',
+'hebrew-calendar-m8' => 'Iyar',
+'hebrew-calendar-m9' => 'Sivan',
+'hebrew-calendar-m10' => 'Tamuz',
+'hebrew-calendar-m11' => 'Av',
+'hebrew-calendar-m12' => 'Elul',
+'hebrew-calendar-m1-gen' => 'Tişrei',
+'hebrew-calendar-m2-gen' => 'Çeşvan',
+'hebrew-calendar-m3-gen' => 'Kislev',
+'hebrew-calendar-m4-gen' => 'Tevet',
+'hebrew-calendar-m5-gen' => 'Şevat',
+'hebrew-calendar-m6-gen' => 'Adar',
+'hebrew-calendar-m6a-gen' => 'Adar I',
+'hebrew-calendar-m6b-gen' => 'Adar II',
+'hebrew-calendar-m7-gen' => 'Nisan',
+'hebrew-calendar-m8-gen' => 'Iyar',
+'hebrew-calendar-m9-gen' => 'Sivan',
+'hebrew-calendar-m10-gen' => 'Tamuz',
+'hebrew-calendar-m11-gen' => 'Av',
+'hebrew-calendar-m12-gen' => 'Elul',
+
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mesac]])',
+'timezone-utc' => 'ŞWC',
 
 # Core parser functions
 'unknown_extension_tag' => 'Etiketê ekstensiyon ê "$1"î nizanyeno',
@@ -3259,6 +3883,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-variables' => 'Vurnayeyî',
 'version-antispam' => 'Spam vındarnayış',
 'version-skins' => 'Cıldi',
+'version-api' => 'API',
 'version-other' => 'Bin',
 'version-mediahandlers' => 'Kulbê medyayî',
 'version-hooks' => 'Çengelî',
@@ -3268,6 +3893,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-hook-name' => 'Nameyê çengelî',
 'version-hook-subscribedby' => 'Eza biyayoğ',
 'version-version' => '(Versiyon $1)',
+'version-svn-revision' => '(r$2)',
 'version-license' => 'Lisans',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
 'version-poweredby-others' => 'Zewmi',
@@ -3282,16 +3908,18 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 'version-entrypoints' => "heruna dekewtış de GRE'i",
 'version-entrypoints-header-entrypoint' => 'Heruna dekewtışi',
 'version-entrypoints-header-url' => 'GRE',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Article path]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:FilePath
-'filepath' => 'Raherê dosyayi',
+'filepath' => 'Heruna dosyayer',
 'filepath-page' => 'Dosya:',
 'filepath-submit' => 'Şo',
 'filepath-summary' => 'Na pela xısusiye raya temame jû dosya rê ana.
 Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqedar direkt dest keno pê.',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch' => 'kopyayê dosyayi bigêre',
+'fileduplicatesearch' => 'Dosyayanê zey pêyan cı geyrê',
 'fileduplicatesearch-summary' => 'Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.',
 'fileduplicatesearch-legend' => 'kopyayê ena dosya bigêre',
 'fileduplicatesearch-filename' => 'Nameyê dosyayi',
@@ -3313,11 +3941,11 @@ Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqed
 'specialpages-group-changes' => 'Vurnayişê peni u logan',
 'specialpages-group-media' => 'Raporê medya u bar kerdîşî',
 'specialpages-group-users' => 'Karber u heqqî',
-'specialpages-group-highuse' => 'Pelî ke zaf klik benê',
+'specialpages-group-highuse' => 'Peleyê ke vêşi karênê',
 'specialpages-group-pages' => 'listeyanê pelan',
-'specialpages-group-pagetools' => 'hacetanê pelayan',
-'specialpages-group-wiki' => 'Data u hacetê wîkîyî',
-'specialpages-group-redirects' => 'Pela xasî reyna direk kenê',
+'specialpages-group-pagetools' => 'Hacetê pelan',
+'specialpages-group-wiki' => 'Malumatê wiki u haceti',
+'specialpages-group-redirects' => 'Pela xasîyê ke heteneyayê',
 'specialpages-group-spam' => 'hacetê spami',
 
 # Special:BlankPage
@@ -3335,7 +3963,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 #parçeyê ifadeya rêzbiyayeyani bıerzê serê ney satıri. no satır zey xo verde/raverde </pre>',
 
 # Special:Tags
-'tags' => 'Etiketê vurnayîş ê raştî',
+'tags' => 'Etiketê vurnayîşê raştî',
 'tag-filter' => '[[Special:Tags|Tag]] filitre:',
 'tag-filter-submit' => 'Filitre',
 'tags-title' => 'Etiketan',
@@ -3348,21 +3976,25 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'tags-hitcount' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
 
 # Special:ComparePages
-'comparepages' => 'Peleyan miqeyese bike',
+'comparepages' => 'Pela miqeyese ke',
 'compare-selector' => 'Revizyonê pele miqayese bike',
 'compare-page1' => 'Pel 1',
 'compare-page2' => 'Pel 2',
 'compare-rev1' => 'Revizyonê 1i',
 'compare-rev2' => 'Revizyonê 2i',
 'compare-submit' => 'Miqayese',
+'compare-invalid-title' => 'Sernameyo ke şımayê vanê ravêrde niyo.',
+'compare-title-not-exists' => 'Sernameyo ke şımayê vanê mewcud niyo.',
+'compare-revision-not-exists' => 'Revizyono ke şımaye vanê mewcud niyo.',
 
 # Database error messages
 'dberr-header' => 'Ena Wiki de yew ğelet esta',
-'dberr-problems' => 'Qusir ma mevin! Site ma de nika ğeletê teknikî  esto.',
+'dberr-problems' => 'Mayê muxulêm!
+Ena sita dı newke xırabiya teknik esta.',
 'dberr-again' => 'Yew di dekika vinder u hin bar bike.',
-'dberr-info' => '(Nieşkenî serverê databaseyî bireso: $1)',
+'dberr-info' => '(Erzmelumati ra xızmetkari nêreseno: $1)',
 'dberr-usegoogle' => 'Ti eşkeno hem zi ser Google de bigêre.',
-'dberr-outofdate' => 'Note bike ke belki îdeksê tedesteyî rocaniye niyo.',
+'dberr-outofdate' => 'Ekê raten da ma deyê belki zi newen niyo qandê coy diqet kerê.',
 'dberr-cachederror' => 'Pel ke ti wazeno yew kopyayê cacheyî ay esto, ay belki rocaniyeyo.',
 
 # HTML forms
@@ -3377,20 +4009,36 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'htmlform-reset' => 'Vurnayişî reyna biyar',
 'htmlform-selectorother-other' => 'Bin',
 
+# SQLite database support
+'sqlite-has-fts' => '$1 tam-metn destegê cı geyrayışiya piya',
+'sqlite-no-fts' => '$1 tam-metn bê destegê cı geyrayışi',
+
 # New logging system
 'logentry-delete-delete' => "Karber $1' pelay $3' besternê",
 'logentry-delete-restore' => "Karber $1' pelay $3' peyser grot",
+'logentry-delete-event' => '$1 asaneyaışê {{PLURAL:$5|weqey roceke|$5 weqey rocekan}} kerdi het de $3: $4 vurna',
+'logentry-delete-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı vurna',
+'logentry-delete-event-legacy' => '$1 Asayışê vurnayışê $3 dekerde de',
+'logentry-delete-revision-legacy' => '$1 revizyonê pela da $3 asayışê cı vurna',
 'logentry-suppress-delete' => '$1  $3 rê pıloxneyê',
-'revdelete-content-hid' => 'nusno nımte',
-'revdelete-summary-hid' => 'Vurnayışi nımtey niyê',
-'revdelete-uname-hid' => 'Namey karberi nımteyo',
-'revdelete-content-unhid' => 'Zerrek mocneya',
+'logentry-suppress-event' => '$1 asayışê  {{PLURAL:$5|weqey rocaka|$5 weqey rocekan}}  $3: $4 miyanıki vurna',
+'logentry-suppress-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı xısusiye vurna',
+'logentry-suppress-event-legacy' => '$1 Asayışê vurnayışê ciyo xısusiyeta cı $3 dekerde de',
+'logentry-suppress-revision-legacy' => '$1 revizyonê pela da $3 asayışê cıyo xısuiye vurna',
+'revdelete-content-hid' => 'zerreko nımte',
+'revdelete-summary-hid' => 'xulusaya vurnayışa nımneyê',
+'revdelete-uname-hid' => 'namey karberi nımteyo',
+'revdelete-content-unhid' => 'errek mocneya',
 'revdelete-summary-unhid' => 'Xulusaya vurnayışa mucneyê',
-'revdelete-uname-unhid' => 'Namey karberi ne nımteyo',
+'revdelete-uname-unhid' => 'namey karberi ne nımteyo',
 'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
 'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
 'logentry-move-move' => "Karber $1' pelay $3' berd $4",
 'logentry-move-move-noredirect' => "$1'i pelay $3 raçarnayış neker dı u berd $4",
+'logentry-move-move_redir' => '$1 pela $3 pela da $4 sera hetenayış ra ahulnê',
+'logentry-move-move_redir-noredirect' => '$1 hetenayışê qeydê pela da  $3 ahulnê $4 sero hetenayış vıraşt',
+'logentry-patrol-patrol' => '$1 revizyonê pela da $4 $3 ke kontrol',
+'logentry-patrol-patrol-auto' => '$1 Otomatik revizyonê pela da $4  $3 ke kontrol',
 'logentry-newusers-newusers' => '$1 deye namey karberi vıraziya',
 'logentry-newusers-create' => '$1 deye namey karberi vıraziya',
 'logentry-newusers-create2' => "$1'i $3 rê hesab vıraşt",
@@ -3398,6 +4046,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
 
 # Feedback
+'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1  jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3  $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
 'feedback-subject' => 'Muhtewa:',
 'feedback-message' => 'Mesac:',
 'feedback-cancel' => 'Bıterkne',
@@ -3406,19 +4055,48 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
 'feedback-error2' => 'Xeta: Timar kerdış nebı',
 'feedback-error3' => 'Xeta: API ra cewab çıno',
+'feedback-thanks' => 'Teşekkur kemê! Vatışê şıma pela da "[$2 $1]" esta.',
 'feedback-close' => 'Biya star',
+'feedback-bugcheck' => 'Harika! Sadece [xırabina ke $1 ] çınyayışê cı kontrol keno.',
 'feedback-bugnew' => 'Mı qontrol ke. Xetaya newi xeber ke',
 
 # API errors
+'api-error-badaccess-groups' => 'Ena wiki de dosya barkerdışi rê mısade nêdeyêno.',
+'api-error-badtoken' => 'Xirabiya zerrek:Xırab resim.',
+'api-error-copyuploaddisabled' => 'URL barkerdış ena waster dı qefılyayo.',
 'api-error-duplicate' => 'Ena {{PLURAL:$1|ze ke [zey $2]|biya [zey dosya da $2]}} zeq wesiqa biya wendeyê.',
 'api-error-duplicate-archive' => 'Ena {{PLURAL:$1|vurneyaya [$2 zey na dosya]| [zerrey cı zey $2 dosya]}} aseno,feqet {{PLURAL:$1|ena dosya|tewr veri}} besterneyaya.',
 'api-error-duplicate-archive-popup-title' => 'Ena {{PLURAL:$1|Dosya besterneyaya|dosya}} xora  besterneyaya.',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|dosyaya|dosyaya}} dılet',
+'api-error-empty-file' => 'Dosyaya ke şıma rışta venga.',
+'api-error-emptypage' => 'Newi, pelaya veng vıraştışi rê mısade nêdeyêno.',
+'api-error-fetchfileerror' => 'Xırabiya zerrek:Dosya grotış dı tay çi raşt nêşı.',
+'api-error-file-too-large' => 'Dosyaye ke şıma rışta zaf gırda.',
+'api-error-filename-tooshort' => 'Namayê dosyayi zaf kilm a.',
 'api-error-filetype-banned' => 'Tipê ena dosya qedexe biya.',
+'api-error-filetype-missing' => 'Derganiya dosya kemiya',
+'api-error-hookaborted' => 'Vurnayişê tu ke to cerbna pê yew çengal ra terkneya.',
+'api-error-http' => 'Xırabiya zerreki:Wasteriya irtabet bırya.',
 'api-error-illegal-filename' => 'Ena nameyê dosyayi kebul nibena.',
+'api-error-internal-error' => 'Xırabiye zerrek:Na wikide barkerdış de şıma dı çıyê raşt nêşı.',
+'api-error-invalid-file-key' => 'Xırabiye zerrek:İdari  depokerdışê dosya nêvineya.',
+'api-error-missingparam' => 'Xırabiye zerrek:Parametre waştış dı xırabin',
+'api-error-missingresult' => 'Xırabiya zerrek:Kopya kerdışê cı nêbı.',
+'api-error-mustbeloggedin' => 'Dosya barkerdışi re cıkewtış icab keno.',
+'api-error-mustbeposted' => 'Zırabiya zerrek:HTTP POST waştış icab keno',
+'api-error-noimageinfo' => 'Barkerdışê dosya temamya lakin wasterira marê malumat nêdeyayo.',
+'api-error-nomodule' => 'Xırabiya zerrek:Sazkerdışê modul dê barkerdışi nêvıraziyayo.',
+'api-error-ok-but-empty' => 'Xırabiya zerrek:Wastero cıwan nêdano.',
+'api-error-overwrite' => 'Ser yew dosyayê ke hama esta, ser ey qeyd nibena.',
+'api-error-stashfailed' => 'Xırabiya zerrek:Wasteri idari dosyey kerdi vıni.',
+'api-error-timeout' => 'Cıwab dayışê wasteri peyra mend.',
+'api-error-unclassified' => 'Yew xeteyê nizanyeni biya.',
 'api-error-unknown-code' => "$1'dı jew xeta vıciye",
+'api-error-unknown-error' => 'Zerre xırabin:Dasoya barkerdış de tay çi raşt nêşı.',
 'api-error-unknown-warning' => "$1'dı ikazo xırab:",
 'api-error-unknownerror' => "$1'dı jew xeta vıciye",
+'api-error-uploaddisabled' => 'BArkerdış ena wikide qefılneyayo',
+'api-error-verification-error' => 'Dosya xırabiya yana derganiya cı xıraba.',
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|saniya|saniyey}}',
@@ -3431,4 +4109,6 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'duration-centuries' => '$1 {{PLURAL:$1|seserre|seserri}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyum|milenyumi}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Kılitê teqdimkarê $1i nêvêniyenê.',
 );
index 50012d0..d7ce8be 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lower Sorbian (Dolnoserbski)
+/** Lower Sorbian (dolnoserbski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -166,7 +166,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Doglědowane změny w aktualnych změnach schowaś',
 'tog-newpageshidepatrolled' => 'Doglědowane boki z lisćiny nowych bokow schowaś',
 'tog-extendwatchlist' => 'Wobglědowańku wócyniś, aby wšě změny pokazał, nic jano nejnowše',
-'tog-usenewrc' => 'Rozšyrjonu lisćinu aktualnych změnow (JavaScript trěbny) wužywaś',
+'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach (trjeba JavaScript)',
 'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
 'tog-showtoolbar' => 'Wobźěłańsku lejstwu pokazaś (JavaScript)',
 'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś (JavaScript)',
@@ -544,6 +544,8 @@ Wótpšašanje: $2',
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
@@ -1079,9 +1081,9 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
 'mergelogpagetext' => 'Dołojce jo lisćina nejnowejšych zjadnośenjow historije boka z drugej.',
 
 # Diffs
-'history-title' => 'Stawizny wersijow boka „$1“',
-'difference-title' => 'Rozdźěl mjazy wersijami "$1"',
-'difference-title-multipage' => 'Rozdźěl mjazy bokami "$1" a "$2"',
+'history-title' => '$1: Wersijowe stawizny',
+'difference-title' => '$1: Rozdźěl mjazy wersijami',
+'difference-title-multipage' => '$1 a $2: Rozdźěl mjazy bokami',
 'difference-multipage' => '(Rozdźěl mjazy bokami)',
 'lineno' => 'Rědka $1:',
 'compareselectedversions' => 'Wuzwólonej wersiji pśirownaś',
@@ -1176,6 +1178,7 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
 'prefs-beta' => 'Preizkusne funkcije',
 'prefs-datetime' => 'Datum a cas',
 'prefs-labs' => 'Laborowe funkcije',
+'prefs-user-pages' => 'Wužywarske boki',
 'prefs-personal' => 'Wužywarski profil',
 'prefs-rc' => 'Aktualne změny',
 'prefs-watchlist' => 'Wobglědowańka',
@@ -1637,14 +1640,15 @@ $1',
 'backend-fail-writetemp' => 'Temporerna dataja njedajo se pisaś.',
 'backend-fail-closetemp' => 'Temporerna dataja njedajo se zacyniś.',
 'backend-fail-read' => 'Dataja $1 njedajo se cytaś.',
-'backend-fail-create' => 'Dataja $1 njedajo se napóraś.',
-'backend-fail-maxsize' => 'Dataja $1 njedajo se napóraś, dokulaž jo wětša ako {{PLURAL:$2|$2 bajt|$2 bajta|$2 bajty|$2 bajtow}}.',
+'backend-fail-create' => 'Dataja $1 njedajo se pisaś.',
+'backend-fail-maxsize' => 'Dataja $1 njedajo se pisaś, dokulaž jo wětša ako {{PLURAL:$2|jaden bajt|$2 bajta|$2 bajty|$2 bajtow}}.',
 'backend-fail-readonly' => 'Składowański backend "$1" dajo se tuchylu jano cytaś. Pśicyna jo była: "$2"',
 'backend-fail-synced' => 'Dataja "$1" jo  w internem składowańskem backenźe w inkonsistentnem stawje',
 'backend-fail-connect' => 'Zwisk z datajowym składowańskem backendom "$1" njejo móžno.',
 'backend-fail-internal' => 'W składowańskem backenźe "$1" jo njeznata zmólka nastała.',
 'backend-fail-contenttype' => 'Wopśimjeśowy typ dataje, kótaraž ma se na "$1" składowaś, njedajo se zwěsćiś.',
 'backend-fail-batchsize' => 'Štapjelowa dataja, kótaraž wopśimujo {{PLURAL:$1|jadnu operaciju|$1 operaciji|$1 operacije|$1 operacijow}},  jo se  na składowański backend pósłała; limit jo $2 {{PLURAL:$1|operaciju|operaciji|operacije|operacijow}}.',
+'backend-fail-usable' => 'Dataja $1 njedajo se dla njedosegajucych  abo felujucych zapisow pisaś.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Njejo žeden zwisk ze žurnaloweju datoweju banku za składowański backend "$1" móžno.',
@@ -1959,6 +1963,7 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
 'alllogstext' => 'To jo kombiněrowane zwobraznjenje wšyknych we {{GRAMMAR:lokatiw|{{SITENAME}}}} k dispoziciji stojecych protokolow. Móžoš naglěd pśez wubraśe protokolowego typa, wužywarskego mjenja (pód źiwanim wjelikopisanja) abo pótrjefjonego boka (teke pód źiwanim wjelikopisanja) wobgranicowaś.',
 'logempty' => 'Žedne se góźece zapise njeeksistěruju.',
 'log-title-wildcard' => 'Pytaś nadpismo, kótarež zachopijo z ...',
+'showhideselectedlogentries' => 'Wubrane protokolowe zapiski pokazaś/schowaś',
 
 # Special:AllPages
 'allpages' => 'Wšykne boki',
@@ -2814,6 +2819,7 @@ W zespominanju dajo se pśicyna pódaś.',
 'spambot_username' => 'MediaWikijowe spamowe rěšenje',
 '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',
 
 # Info page
 'pageinfo-title' => 'Informacije za bok "$1"',
@@ -3722,4 +3728,6 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Zastajenja na serwer $1 njedaju se wótwołaś.',
 );
index 9965380..f701a65 100644 (file)
@@ -1276,7 +1276,7 @@ $1",
 'mergelogpagetext' => 'Παρακάτω είναι μια λίστα με τις πιο πρόσφατες συγχωνεύσεις ιστορικού μιας σελίδας σε άλλο.',
 
 # Diffs
-'history-title' => 'Ιστορικό εκδόσεων για τη σελίδα "$1"',
+'history-title' => '"$1": Ιστορικό εκδόσεων',
 'difference-title' => 'Διαφορά μεταξύ των αναθεωρήσεων του "$1"',
 'difference-title-multipage' => 'Διαφορά μεταξύ των σελίδων "$1" και "$2"',
 'difference-multipage' => '(Διαφορές μεταξύ των σελίδων)',
@@ -1373,6 +1373,7 @@ $1",
 'prefs-beta' => 'Λειτουργίες της Beta',
 'prefs-datetime' => 'Ημερομηνία και ώρα',
 'prefs-labs' => 'Λειτουργίες των Labs',
+'prefs-user-pages' => 'Σελίδες του χρήστη',
 'prefs-personal' => 'Στοιχεία χρήστη',
 'prefs-rc' => 'Πρόσφατες αλλαγές και εμφάνιση πολύ σύντομων άρθρων',
 'prefs-watchlist' => 'Λίστα παρακολούθησης',
@@ -1633,7 +1634,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|αλλαγή|αλλαγές}}',
 'recentchanges' => 'Πρόσφατες αλλαγές',
 'recentchanges-legend' => 'Επιλογές των πρόσφατων αλλαγών',
-'recentchanges-summary' => 'ΠαÏ\81ακολοÏ\85θείστε σε αυτή τη σελίδα τις πιο πρόσφατες αλλαγές στο Wiki.',
+'recentchanges-summary' => 'ΠαÏ\81ακολοÏ\85θήστε σε αυτή τη σελίδα τις πιο πρόσφατες αλλαγές στο Wiki.',
 'recentchanges-feed-description' => 'Παρακολουθήστε τις πιο πρόσφατες αλλαγές στο wiki σε αυτή τη ροή δεδομένων.',
 'recentchanges-label-newpage' => 'Αυτή η επεξεργασία δημιούργησε μια νέα σελίδα',
 'recentchanges-label-minor' => 'Αυτή είναι μια αλλαγή μικρής κλίμακας',
@@ -3839,6 +3840,7 @@ $5
 'logentry-delete-delete' => 'Ο/η $1 διέγραψε τη σελίδα $3',
 'logentry-delete-restore' => 'Ο/η $1 αποκατέστησε τη σελίδα $3',
 'logentry-delete-event' => '$1 άλλαξε την ορατότητα σε  {{PLURAL:$5|ένα γεγονός καταγραφής|$5 log events}} στο  $3: $4',
+'logentry-suppress-delete' => 'Ο $1 διέγραψε τη σελίδα $3',
 'revdelete-content-hid' => 'το περιεχόμενο αποκρύφθηκε',
 'revdelete-summary-hid' => 'Η σύνοψη επεξεργασίας αποκρύφθηκε',
 'revdelete-uname-hid' => 'Το όνομα χρήστη αποκρύφθηκε',
index 146230b..b8c2405 100644 (file)
@@ -191,6 +191,7 @@ $bookstoreList = array(
  * Customisable syntax for wikitext and elsewhere.
  *
  * IDs must be valid identifiers, they cannot contain hyphens.
+ * CASE is 0 to match all case variants, 1 for case-sensitive
  *
  * Note to translators:
  *   Please include the English words as synonyms.  This allows people
@@ -287,7 +288,8 @@ $magicWords = array(
        'nse'                    => array( 0,    'NSE:'                   ),
        'localurl'               => array( 0,    'LOCALURL:'              ),
        'localurle'              => array( 0,    'LOCALURLE:'             ),
-       'articlepath'            => array( 0,    'ARTICLEPATH'            ),
+       'articlepath'            => array( 0,    'ARTICLEPATH'            ),
+       'pageid'                 => array( 0,    'PAGEID'                 ),
        'server'                 => array( 0,    'SERVER'                 ),
        'servername'             => array( 0,    'SERVERNAME'             ),
        'scriptpath'             => array( 0,    'SCRIPTPATH'             ),
@@ -635,7 +637,7 @@ XHTML id names.
 'tog-hidepatrolled'           => 'Hide patrolled edits in recent changes',
 'tog-newpageshidepatrolled'   => 'Hide patrolled pages from new page list',
 'tog-extendwatchlist'         => 'Expand watchlist to show all changes, not just the most recent',
-'tog-usenewrc'                => 'Use enhanced recent changes (requires JavaScript)',
+'tog-usenewrc'                => 'Group changes by page in recent changes and watchlist (requires JavaScript)',
 'tog-numberheadings'          => 'Auto-number headings',
 'tog-showtoolbar'             => 'Show edit toolbar (requires JavaScript)',
 'tog-editondblclick'          => 'Edit pages on double click (requires JavaScript)',
@@ -758,6 +760,7 @@ XHTML id names.
 'index-category'                 => 'Indexed pages',
 'noindex-category'               => 'Noindexed pages',
 'broken-file-category'           => 'Pages with broken file links',
+'categoryviewer-pagedlinks'      => '($1) ($2)',
 
 'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', # only translate this message to other languages if you have to change it
 
@@ -1084,6 +1087,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 Please choose a different name.',
 'loginerror'                 => 'Login error',
 'createaccounterror'         => 'Could not create account: $1',
+'exception-nologin'          => 'Not logged in',
+'exception-nologin-text'     => 'This page or action requires you to be logged in on this wiki.',
 'nocookiesnew'               => 'The user account was created, but you are not logged in.
 {{SITENAME}} uses cookies to log in users.
 You have cookies disabled.
@@ -1661,6 +1666,7 @@ Note that using the navigation links will reset this column.',
 'mergehistory-comment'             => 'Merged [[:$1]] into [[:$2]]: $3',
 'mergehistory-same-destination'    => 'Source and destination pages cannot be the same',
 'mergehistory-reason'              => 'Reason:',
+'mergehistory-revisionrow'         => '$1 ($2) $3 . . $4 $5 $6',
 
 # Merge log
 'mergelog'           => 'Merge log',
@@ -1669,9 +1675,9 @@ Note that using the navigation links will reset this column.',
 'mergelogpagetext'   => 'Below is a list of the most recent merges of one page history into another.',
 
 # Diffs
-'history-title'              => '$1: Revision history',
-'difference-title'           => '$1: Difference between revisions',
-'difference-title-multipage' => '$1 and $2: Difference between pages',
+'history-title'              => 'Revision history of "$1"',
+'difference-title'           => 'Difference between revisions of "$1"',
+'difference-title-multipage' => 'Difference between pages "$1" and "$2"',
 'difference-multipage'       => '(Difference between pages)',
 'lineno'                     => 'Line $1:',
 'compareselectedversions'    => 'Compare selected revisions',
@@ -1791,6 +1797,7 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'prefs-beta'                    => 'Beta features',
 'prefs-datetime'                => 'Date and time',
 'prefs-labs'                    => 'Labs features',
+'prefs-user-pages'              => 'User pages',
 'prefs-personal'                => 'User profile',
 'prefs-rc'                      => 'Recent changes',
 'prefs-watchlist'               => 'Watchlist',
@@ -2306,6 +2313,7 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
 'lockmanager-fail-releaselock' => 'Could not release lock for "$1".',
 'lockmanager-fail-db-bucket'   => 'Could not contact enough lock databases in bucket $1.',
 'lockmanager-fail-db-release'  => 'Could not release locks on database $1.',
+'lockmanager-fail-svr-acquire' => 'Could not acquire locks on server $1.',
 'lockmanager-fail-svr-release' => 'Could not release locks on server $1.',
 
 # ZipDirectoryReader
@@ -2654,14 +2662,15 @@ Please note that other web sites may link to a file with a direct URL, and so ma
 'pubmedurl' => '//www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', # do not translate or duplicate this message to other languages
 
 # Special:Log
-'specialloguserlabel'  => 'Performer:',
-'speciallogtitlelabel' => 'Target (title or user):',
-'log'                  => 'Logs',
-'all-logs-page'        => 'All public logs',
-'alllogstext'          => 'Combined display of all available logs of {{SITENAME}}.
+'specialloguserlabel'        => 'Performer:',
+'speciallogtitlelabel'       => 'Target (title or user):',
+'log'                        => 'Logs',
+'all-logs-page'              => 'All public logs',
+'alllogstext'                => 'Combined display of all available logs of {{SITENAME}}.
 You can narrow down the view by selecting a log type, the username (case-sensitive), or the affected page (also case-sensitive).',
-'logempty'             => 'No matching items in log.',
-'log-title-wildcard'   => 'Search titles starting with this text',
+'logempty'                   => 'No matching items in log.',
+'log-title-wildcard'         => 'Search titles starting with this text',
+'showhideselectedlogentries' => 'Show/hide selected log entries',
 
 # Special:AllPages
 'allpages'                => 'All pages',
@@ -3051,6 +3060,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",
 
 # Namespace form on various pages
 'namespace'                     => 'Namespace:',
@@ -3188,8 +3198,8 @@ See the [[Special:BlockList|block list]] to review blocks.',
 'expiringblock'                   => 'expires on $1 at $2',
 'anononlyblock'                   => 'anon. only',
 'noautoblockblock'                => 'autoblock disabled',
-'createaccountblock'              => 'account creation blocked',
-'emailblock'                      => 'e-mail blocked',
+'createaccountblock'              => 'account creation disabled',
+'emailblock'                      => 'e-mail disabled',
 'blocklist-nousertalk'            => 'cannot edit own talk page',
 'ipblocklist-empty'               => 'The block list is empty.',
 'ipblocklist-no-results'          => 'The requested IP address or username is not blocked.',
@@ -3214,7 +3224,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'block-log-flags-anononly'        => 'anonymous users only',
 'block-log-flags-nocreate'        => 'account creation disabled',
 'block-log-flags-noautoblock'     => 'autoblock disabled',
-'block-log-flags-noemail'         => 'e-mail blocked',
+'block-log-flags-noemail'         => 'e-mail disabled',
 'block-log-flags-nousertalk'      => 'cannot edit own talk page',
 'block-log-flags-angry-autoblock' => 'enhanced autoblock enabled',
 'block-log-flags-hiddenname'      => 'username hidden',
@@ -3686,6 +3696,7 @@ This is probably caused by a link to a blacklisted external site.',
 'spambot_username'    => 'MediaWiki spam cleanup',
 'spam_reverting'      => 'Reverting to last revision not containing links to $1',
 'spam_blanking'       => 'All revisions contained links to $1, blanking',
+'spam_deleting'       => 'All revisions contained links to $1, deleting',
 
 # Info page
 'pageinfo-title'            => 'Information for "$1"',
@@ -4425,6 +4436,7 @@ Please confirm that you really want to recreate this page.",
 'ellipsis'            => '...', # only translate this message to other languages if you have to change it
 'percent'             => '$1%', # only translate this message to other languages if you have to change it
 'parentheses'         => '($1)', # only translate this message to other languages if you have to change it
+'brackets'            => '[$1]', # only translate this message to other languages if you have to change it
 
 # Multipage image navigation
 'imgmultipageprev' => '← previous page',
index 51f3477..1f7eea9 100644 (file)
@@ -17,6 +17,7 @@
  * @author Iketsi
  * @author Jens Liebenau
  * @author Kaganer
+ * @author Karika
  * @author Lucas
  * @author LyzTyphone
  * @author Malafaya
@@ -700,6 +701,8 @@ $2',
 'ns-specialprotected' => 'Paĝoj en la {{ns:special}} nomspaco ne povas esti redaktataj.',
 'titleprotected' => "Ĉi titolo estas protektita de kreado de [[User:$1|$1]].
 La kialo donata estis ''$2''.",
+'invalidtitle-knownnamespace' => 'Nevalida titolo kun nomspaco "$2" kaj teksto "$3"',
+'invalidtitle-unknownnamespace' => 'Nevalida titolo kun nekonata nomspaca numero $1 kaj teksto "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Malbona konfiguro: nekonata virusa skanilo: ''$1''",
@@ -789,6 +792,7 @@ Neniu retpoŝto estos sendita pro iuj jenaj kialoj.',
 'invalidemailaddress' => 'La retadreso ne povas esti akceptita, ĉar ĝi verŝajne havas malvalidan formaton.
 Enigi bone formatita adreso aŭ malplenigi tiun kampon.',
 'cannotchangeemail' => 'Kontaj retpoŝtadresoj ne povas esti ŝanĝita en ĉi tiu vikio.',
+'emaildisabled' => 'Ĉi tiu paĝaro ne povas sendi retpoŝtojn.',
 'accountcreated' => 'Konto kreita',
 'accountcreatedtext' => 'La uzanto-konto por $1 estas kreita.',
 'createaccount-title' => 'Konto-kreado por {{SITENAME}}',
@@ -1234,8 +1238,8 @@ Bonvolu kontroli la protokolojn.',
 
 # Suppression log
 'suppressionlog' => 'Protokolo pri subigado',
-'suppressionlogtext' => 'Jen listo de forigoj kaj forbaroj pri enhavo kaŝita per administrantoj.
-Rigardu la [[Special:BlockList|IP-forbarliston]] por la listo de nune operaciaj forbaroj kaj forigoj.',
+'suppressionlogtext' => 'Malsupre estas listo de forigoj kaj forbaroj pri enhavo kaŝita de administrantoj.
+Rigardu la [[Special:BlockList|forbarliston]] por la listo de nune operaciaj forbaroj kaj forigoj.',
 
 # History merging
 'mergehistory' => 'Kunfandigi historiojn de paĝoj',
@@ -1267,7 +1271,9 @@ Certigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.',
 'mergelogpagetext' => 'Jen listo de la plej lastatempaj kunigoj de unu paĝhistorio en alian.',
 
 # Diffs
-'history-title' => 'Redakto-historio de "$1"',
+'history-title' => 'Revizio-historio de "$1"',
+'difference-title' => '$1: Malsamoj inter versioj',
+'difference-title-multipage' => 'Malsamoj inter la paĝoj $1 kaj $2',
 'difference-multipage' => '(Diferenco inter paĝoj)',
 'lineno' => 'Linio $1:',
 'compareselectedversions' => 'Kompari la elektitajn versiojn',
@@ -1816,7 +1822,7 @@ Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|sisteman administran
 'backend-fail-writetemp' => 'Ne povis skribi intertempan dosieron.',
 'backend-fail-closetemp' => 'Ne povis fermi provizoran dosieron.',
 'backend-fail-read' => 'Ne povas legi dosieron "$1".',
-'backend-fail-create' => 'Ne povas krei dosieron $1.',
+'backend-fail-create' => 'Ne povas skribi dosieron $1.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Ne povis malŝlosi "$1"; ĝi ne estas ŝlosita.',
@@ -2147,6 +2153,9 @@ Vi povas plistrikti la mendon per selektado de protokola speco, la salutnomo (in
 'allpages-bad-ns' => '{{SITENAME}} ne havas nomspacon "$1".',
 'allpages-hide-redirects' => 'Kaŝi alidirektilojn',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Vidas plej nova.',
+
 # Special:Categories
 'categories' => 'Kategorioj',
 'categoriespagetext' => 'La {{PLURAL:$1|jena kategorio|jenaj kategorioj}} ekzistas jam en la vikio.
@@ -2280,7 +2289,7 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
 'watcherrortext' => 'Eraro okazis ŝanĝinte vian agordojn de atentaro por "$1".',
 
 'enotif_mailer' => 'Averta retmesaĝo de {{SITENAME}}',
-'enotif_reset' => 'Marki ĉiujn vizititajn paĝojn',
+'enotif_reset' => 'Marki ĉiujn paĝojn vizititaj',
 'enotif_newpagetext' => 'Tiu ĉi estas nova paĝo',
 'enotif_impersonal_salutation' => 'Uzanto de {{SITENAME}}',
 'changed' => 'ŝanĝita',
@@ -2577,7 +2586,7 @@ Jen la lasta ero de la forbara protokolo:',
 'badipaddress' => 'Neniu uzanto, aŭ la IP-adreso estas misformita.',
 'blockipsuccesssub' => 'Oni sukcese forbaris la adreson/nomon.',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] estas forbarita. <br />
-Vidu la [[Special:BlockList|liston de IP-forbaroj]] por kontroli.',
+Vidu la [[Special:BlockList|liston de forbaroj]] por kontroli.',
 'ipb-blockingself' => 'Vi preskaŭ forbaros vin mem! Ĉu vi certas ke vi volas fari ĉi tiel?',
 'ipb-confirmhideuser' => 'Vi preskaŭ forbaras uzanto kun "kaŝi uzanton" ŝalta. Ĉi tiu kaŝi la nomon de uzanto en ĉiuj listoj ka protokoloj. Ĉu vi certas ke vi volas fari ĉi tiel?',
 'ipb-edit-dropdown' => 'Redakti kialojn por forbaro.',
@@ -2629,7 +2638,7 @@ La kialo donita por la forbaro de $1 estis: "$2"',
 'blocklog-showsuppresslog' => 'Ĉi tiu uzanto estis forbarita kaj kaŝita antaŭe. Jen la protokolo pri subpremado por via informo:',
 'blocklogentry' => 'forbaris [[$1]] por daŭro de $2 $3',
 'reblock-logentry' => 'ŝanĝis forbarajn opciojn [[$1]] kun findato de $2 $3',
-'blocklogtext' => 'Ĉi tio estas protokolo pri forbaraj kaj malforbaraj agoj. Aŭtomate forbaritaj IP adresoj ne estas listigitaj. Vidu la [[Special:BlockList|IP forbarliston]] por ĉi-momente fobaritaj uzantoj kaj IP-adresoj.',
+'blocklogtext' => 'Ĉi tio estas protokolo pri forbaraj kaj malforbaraj agoj. Aŭtomate forbaritaj IP-adresoj ne estas listigitaj. Vidu la [[Special:BlockList|forbarliston]] por ĉi-momente forbaritaj uzantoj kaj IP-adresoj.',
 'unblocklogentry' => '$1 estis restarigita',
 'block-log-flags-anononly' => 'nur anonimaj uzantoj',
 'block-log-flags-nocreate' => 'kreado de kontoj malebligita',
index 845d163..3e1b273 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Spanish (Español)
+/** Spanish (español)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -24,6 +24,7 @@
  * @author Candalua
  * @author Capmo
  * @author Cerealito
+ * @author Ciencia Al Poder
  * @author Clerc
  * @author Crazymadlover
  * @author Cvmontuy
@@ -350,7 +351,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ocultar ediciones patrulladas en los cambios recientes',
 'tog-newpageshidepatrolled' => 'Ocultar páginas patrulladas de la lista de páginas nuevas',
 'tog-extendwatchlist' => 'Expandir la lista de seguimiento a todos los cambios, no sólo a los más recientes.',
-'tog-usenewrc' => 'Cambios recientes mejorados (requiere JavaScript)',
+'tog-usenewrc' => 'Agrupar los cambios por página en los cambios recientes y en la lista de vigilancia (requiere JavaScript)',
 'tog-numberheadings' => 'Numerar automáticamente los encabezados',
 'tog-showtoolbar' => 'Mostrar la barra de edición (requiere JavaScript)',
 'tog-editondblclick' => 'Editar páginas con doble clic (requiere JavaScript)',
@@ -840,7 +841,7 @@ Puedes ignorar este mensaje si esta cuenta fue creada por error.',
 'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
 
 # E-mail sending
-'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP',
+'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
 'user-mail-no-addy' => 'Se ha intentado enviar correo electrónico sin una dirección de correo electrónico.',
 
 # Change password dialog
@@ -1406,6 +1407,7 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'prefs-beta' => 'Características de prueba',
 'prefs-datetime' => 'Fecha y hora',
 'prefs-labs' => 'Características de los laboratorios',
+'prefs-user-pages' => 'Páginas de usuario',
 'prefs-personal' => 'Perfil de usuario',
 'prefs-rc' => 'Cambios recientes',
 'prefs-watchlist' => 'Seguimiento',
@@ -1709,7 +1711,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'recentchangeslinked-to' => 'Muestra los cambios recientes en lugar de la página indicada',
 
 # Upload
-'upload' => 'Subir archivo',
+'upload' => 'Subir un archivo',
 'uploadbtn' => 'Subir un archivo',
 'reuploaddesc' => 'Regresar al formulario para subir.',
 'upload-tryagain' => 'Envíe la descripción del archivo modificado',
@@ -1819,6 +1821,20 @@ No se permite subir archivos Java, porque pueden causar que se puedan saltar res
 'filename-bad-prefix' => "El nombre del archivo que estás subiendo comienza por '''«$1»''', un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.
 
 Por favor, elige un nombre más descriptivo.",
+'filename-prefix-blacklist' => ' #<!-- deja esta línea exactamente como está --> <pre>
+# La sintaxis de esta página es la siguiente:
+#   * Todo texto que se encuentre después del carácter "#" hasta el final de la línea se tratará como un comentario y será ignorado
+#   * Cualquier línea que no esté en blanco será interpretada como un prefijo típico en nombres de archivo que suelen asignar automáticamente las cámaras digitales
+CIMG # Casio
+DSC_ # Nikon
+DSCF # Fuji
+DSCN # Nikon
+DUW # algunos teléfonos móviles / celulares
+IMG # genérico
+JD # Jenoptik
+MGP # Pentax
+PICT # misc.
+ #</pre> <!-- deja esta línea exactamente como está -->',
 'upload-success-subj' => 'Subida con éxito',
 'upload-success-msg' => 'Tu carga de [$2] fue exitosa. Está disponible aquí: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problema en la carga',
@@ -1996,6 +2012,7 @@ Tal vez desee editar la descripción de su [$2 página de descripción del archi
 'uploadnewversion-linktext' => 'Subir una nueva versión de este archivo',
 'shared-repo-from' => 'de $1',
 'shared-repo' => 'un repositorio compartido',
+'filepage.css' => '/* Los estilos CSS colocados aquí se incluirán en las páginas de descripción de archivos, incluso en los wikis externos que incluyan estas páginas */',
 
 # File reversion
 'filerevert' => 'Revertir $1',
@@ -2184,6 +2201,7 @@ Por favor note que otros sitios web pueden vincular a un archivo con un URL dire
 Puedes filtrar la vista seleccionando un tipo de registro, el nombre del usuario o la página afectada. Se distinguen mayúsculas de minúsculas.',
 'logempty' => 'No hay elementos en el registro con esas condiciones.',
 'log-title-wildcard' => 'Buscar títulos que empiecen con este texto',
+'showhideselectedlogentries' => 'Mostrar u ocultar las entradas del registro seleccionado',
 
 # Special:AllPages
 'allpages' => 'Todas las páginas',
@@ -2342,7 +2360,7 @@ La dirección electrónica que indicaste en [[Special:Preferences|tus preferenci
 'watcherrortext' => 'Ocurrió un error al cambiar la configuración de tu lista de seguimiento para «$1».',
 
 'enotif_mailer' => 'Notificación por correo de {{SITENAME}}',
-'enotif_reset' => 'Marcar todas las páginas visitadas',
+'enotif_reset' => 'Marcar todas las páginas como visitadas',
 'enotif_newpagetext' => 'Se trata de una nueva página.',
 'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
 'changed' => 'modificada',
@@ -3042,6 +3060,11 @@ Permite añadir una razón al resumen de edición.',
 'vector.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios que usen la piel Vector */',
 'print.css' => '/* Los estilos CSS colocados aquí afectarán la impresión */',
 'handheld.css' => '/* Los estilos CSS colocados aquí afectarán a los dispositivos móviles basados en las pieles configuradas en $wgHandheldStyle */',
+'noscript.css' => '/* Los estilos CSS colocados aquí se aplicarán a los usuarios que hayan desactivado el JavaScript en su navegador */',
+'group-autoconfirmed.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Usuarios autoconfirmados */',
+'group-bot.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Bots */',
+'group-sysop.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Administradores */',
+'group-bureaucrat.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Burócratas */',
 
 # Scripts
 'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */',
@@ -3054,6 +3077,10 @@ Permite añadir una razón al resumen de edición.',
 'simple.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Simple */',
 'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna */',
 'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
+'group-autoconfirmed.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Usuarios autoconfirmados */',
+'group-bot.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Bots */',
+'group-sysop.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */',
+'group-bureaucrat.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Burócratas */',
 
 # Metadata
 'notacceptable' => 'El servidor wiki no puede proveer los datos en un formato que su cliente (navegador) pueda entender.',
@@ -3078,6 +3105,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'spambot_username' => 'Limpieza de spam de MediaWiki',
 'spam_reverting' => 'Revirtiendo a la última versión que no contenga enlaces a $1',
 'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
+'spam_deleting' => 'Todas las revisiones que contienen enlaces a $1, en proceso de eliminación',
 
 # Info page
 'pageinfo-title' => 'Información para «$1»',
@@ -3139,6 +3167,7 @@ $1',
 Ejecutarlo podría comprometer la seguridad de su equipo.",
 'imagemaxsize' => "Límite de tamaño de imagen:<br />''(para páginas de descripción de archivo)''",
 'thumbsize' => 'Tamaño de las vistas en miniatura:',
+'widthheight' => '$1 × $2',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:|página|páginas}}',
 'file-info' => 'tamaño de archivo: $1; tipo MIME: $2',
 'file-info-size' => '$1 × $2 píxeles; tamaño de archivo: $3; tipo MIME: $4',
@@ -3168,8 +3197,10 @@ Ejecutarlo podría comprometer la seguridad de su equipo.",
 'sp-newimages-showfrom' => 'Mostrar nuevas imágenes empezando por $2, $1',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds-abbrev' => '$1s',
 'minutes-abbrev' => '$1m',
 'hours-abbrev' => '$1h',
+'days-abbrev' => '$1d',
 'seconds' => '{{PLURAL:$1|un segundo|$1 segundos}}',
 'minutes' => '{{PLURAL:$1|un minuto|$1 minutos}}',
 'hours' => '{{PLURAL:$1|una hora|$1 horas}}',
@@ -3992,4 +4023,6 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|siglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'No se pudieron obtener bloqueos en el servidor $1.',
 );
index 6a7663d..2f2e77e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Estonian (Eesti)
+/** Estonian (eesti)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1330,6 +1330,7 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'prefs-beta' => 'Beetafunktsioonid',
 'prefs-datetime' => 'Kuupäev ja kellaaeg',
 'prefs-labs' => 'Katsefunktsioonid',
+'prefs-user-pages' => 'Kasutajaleheküljed',
 'prefs-personal' => 'Kasutaja andmed',
 'prefs-rc' => 'Viimased muudatused',
 'prefs-watchlist' => 'Jälgimisloend',
@@ -1622,6 +1623,7 @@ See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
 'newsectionsummary' => '/* $1 */ uus alajaotus',
 'rc-enhanced-expand' => 'Näita üksikasju (nõuab JavaScripti)',
 'rc-enhanced-hide' => 'Peida üksikasjad',
+'rc-old-title' => 'alustatud pealkirja "$1" all',
 
 # Recent changes linked
 'recentchangeslinked' => 'Seotud muudatused',
index 801b18a..d9478bf 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Basque (Euskara)
+/** Basque (euskara)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -753,7 +753,8 @@ Azken blokeoaren erregistroa ageri da behean, erreferentzia gisa:',
 'userinvalidcssjstitle' => "'''Oharra:''' Ez da \"\$1\" itxura existitzen. Kontuan izan .css eta .js fitxategi pertsonalizatuen izenak letra xehez idatzi behar direla; adibidez, {{ns:user}}:Adibide/vector.css, eta ez {{ns:user}}:Adibide/Vector.css.",
 'updated' => '(Eguneratua)',
 'note' => "'''Oharra:'''",
-'previewnote' => "'''Gogoratu hau aurreikusketa bat dela, beraz gorde egin beharko duzu!'''",
+'previewnote' => "'''Gogoratu hau aurrikuspen bat dela.'''
+Zure aldaketak ez dira oraindik gorde!",
 'previewconflict' => 'Aurreikuspenak aldaketen koadroan idatzitako testua erakusten du, gorde ondoren agertuko den bezala.',
 'session_fail_preview' => "'''Sentitzen dugu! Ezin izan da zure aldaketa prozesatu, saioko datu batzuen galera dela-eta. Mesedez, saiatu berriz. Arazoak jarraitzen badu, saiatu saioa amaitu eta berriz hasten.'''",
 'session_fail_preview_html' => "'''Sentitzen dugu! Ezin izan dugu zure aldaketa burutu, saio datu galera bat medio.'''
@@ -1016,7 +1017,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
 
 # Diffs
-'history-title' => '"$1" orrialdearen historia laburpena',
+'history-title' => '"$1" orrialdearen historia berrikuspena',
 'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
 'lineno' => '$1. lerroa:',
 'compareselectedversions' => 'Hautatutako bertsioak alderatu',
@@ -1359,7 +1360,7 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
 'nchanges' => '{{PLURAL:$1|aldaketa 1|$1 aldaketa}}',
 'recentchanges' => 'Aldaketa berriak',
 'recentchanges-legend' => 'Azken aldaketen aukerak',
-'recentchangestext' => 'Orrialde honetan wiki honetan egindako azken aldaketak erakusten dira.',
+'recentchanges-summary' => 'Orrialde honetan wiki honetan egindako azken aldaketak erakusten dira.',
 'recentchanges-feed-description' => 'Sindikazio honetan wikian eginiko azkeneko aldaketak jarrai daitezke.',
 'recentchanges-label-newpage' => 'Aldaketa honek orrialde berri bat sortu du',
 'recentchanges-label-minor' => 'Hau aldaketa txikia da',
@@ -1599,6 +1600,8 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
 'linkstoimage-redirect' => '$1 (fitxategi birzuzenketa) $2',
 'duplicatesoffile' => 'Ondorengo fitxategi {{PLURAL:$1|hau beste honen berdina da|$1 hauek beste honen berdinak dira}} ([[Special:FileDuplicateSearch/$2|zehaztasun gehiago]]):',
 'sharedupload' => 'Elkarbanatutako fitxategi hau $1-(e)ko igoera bat da eta beste proiektuek ere erabil dezakete.',
+'sharedupload-desc-here' => 'Fitxategi hau $1-(e)koa da eta beste proeiktuetan erabilia izan liteke.
+Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'filepage-nofile' => 'Izen horrekin ez dago fitxategirik.',
 'uploadnewversion-linktext' => 'Fitxategi honen bertsio berri bat igo',
 'shared-repo-from' => '$1-tik',
index 7970945..15e16c9 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Extremaduran (Estremeñu)
+/** Extremaduran (estremeñu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -984,7 +984,7 @@ Amás premiti qu'otrus ussuárius contatin contigu pol mé la tu página d'ussu
 'nchanges' => '$1 {{PLURAL:$1|chambu|chambus}}',
 'recentchanges' => 'Úrtimus chambus',
 'recentchanges-legend' => 'Ocionis enos úrtimus chambus',
-'recentchangestext' => 'Sigui los úrtimus chambus d´esti güiqui nesta páhina.',
+'recentchanges-summary' => 'Sigui los úrtimus chambus d´esti güiqui nesta páhina.',
 'recentchanges-feed-description' => 'Sigui los úrtimus chambus nel güiqui nesti feed.',
 'rcnote' => "Embahu se {{PLURAL:$1|muestra '''1''' chambu|muestran los úrtimus '''$1''' chambus}} {{PLURAL:$2|dendi ayel|enus úrtimus '''$2''' dias}}, de $4 a las $5.",
 'rcnotefrom' => "Embahu se muestran los chambus hechus dendi el '''$2''' (hata el '''$1''').",
index e6663a5..734b00c 100644 (file)
@@ -78,10 +78,10 @@ $specialPageAliases = array(
        'Booksources'               => array( 'منابع_کتاب' ),
        'BrokenRedirects'           => array( 'تغییرمسیرهای_خراب' ),
        'Categories'                => array( 'رده‌ها' ),
-       'ChangeEmail'               => array( 'تغییر_رایانامه', 'تغییر_پست_الکترونیکی' ),
+       'ChangeEmail'               => array( 'تغییر_رایانامه' ),
        'ChangePassword'            => array( 'از_نو_کردن_گذرواژه' ),
        'ComparePages'              => array( 'مقایسه_صفحات' ),
-       'Confirmemail'              => array( 'تایید_رایانامه', 'تایید_پست_الکترونیکی' ),
+       'Confirmemail'              => array( 'تایید_رایانامه' ),
        'Contributions'             => array( 'مشارکت‌ها' ),
        'CreateAccount'             => array( 'ایجاد_حساب_کاربری' ),
        'Deadendpages'              => array( 'صفحه‌های_بن‌بست' ),
@@ -95,7 +95,7 @@ $specialPageAliases = array(
        'FileDuplicateSearch'       => array( 'جستجوی_پرونده_تکراری' ),
        'Filepath'                  => array( 'مسیر_پرونده' ),
        'Import'                    => array( 'درون_ریزی_صفحه' ),
-       'Invalidateemail'           => array( 'باطل_کردن_رایانامه', 'باطل_کردن_پست_الکترونیکی' ),
+       'Invalidateemail'           => array( 'باطل_کردن_رایانامه' ),
        'BlockList'                 => array( 'فهرست_بستن_نشانی_آی‌پی' ),
        'LinkSearch'                => array( 'جستجوی_پیوند' ),
        'Listadmins'                => array( 'فهرست_مدیران' ),
@@ -254,18 +254,17 @@ $dateFormats = array(
        'persian date' => '‏xij xiF xiY',
        'persian both' => '‏xij xiF xiY، ساعت H:i',
 
-    'hebrew time' => '‏H:i',
+       'hebrew time' => '‏H:i',
        'hebrew date' => '‏xij xjF xjY',
        'hebrew both' => '‏H:i, xij xjF xjY',
 
-
        'ISO 8601 time' => 'xnH:xni:xns',
        'ISO 8601 date' => 'xnY-xnm-xnd',
        'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
 );
 
 $magicWords = array(
-       'redirect'                => array( '0', '#تغییر_مسیر', '#تغییرمسیر', '#تغییرمسیر', '#REDIRECT' ),
+       'redirect'                => array( '0', '#تغییر_مسیر', '#تغییرمسیر', '#REDIRECT' ),
        'notoc'                   => array( '0', '__بی‌فهرست__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__بی‌نگارخانه__', '__NOGALLERY__' ),
        'forcetoc'                => array( '0', '__بافهرست__', '__FORCETOC__' ),
@@ -830,6 +829,8 @@ $2',
 'filereadonlyerror' => "تغییر پرونده «$1» ممکن نیست چون مخزن پرونده «$2» در حالت فقط خواندنی قرار دارد.
 
 مدیری که آن را قفل کرده چنین توضیحی را ذکر کرده:  ''$3''.",
+'invalidtitle-knownnamespace' => 'عنوان نامعتبر با فضای نام «$2» و متن «$3»',
+'invalidtitle-unknownnamespace' => 'عنوان نامعتبر با فضای نام ناشناختهٔ شمارهٔ $1 و متن «$2»',
 
 # Virus scanner
 'virus-badscanner' => "پیکربندی بد: پویشگر ویروس ناشناخته: ''$1''",
@@ -1231,6 +1232,12 @@ $2
 'parser-template-loop-warning' => 'حلقه در الگو پیدا شد: [[$1]]',
 'parser-template-recursion-depth-warning' => 'محدودیت عمق بازگشت الگو رد شد ($1)',
 'language-converter-depth-warning' => 'محدودیت عمق مبدل زبانی رد شد ($1)',
+'node-count-exceeded-category' => 'صفحه‌هایی که از حداکثر تعداد گره تجاوز کرده‌اند',
+'node-count-exceeded-warning' => 'صفحه از حداکثر تعداد گره تجاوز کرد',
+'expansion-depth-exceeded-category' => 'صفحه‌هایی که از حداکثر عمق بسط دادن تجاوز کرده‌اند',
+'expansion-depth-exceeded-warning' => 'صفحه حداکثر عمق بسط دادن تجاوز کرد',
+'parser-unstrip-loop-warning' => 'حلقه در دستور unstrip پیدا شد',
+'parser-unstrip-recursion-limit' => 'از حداکثر ارجاع در دستور unstrip تجاوز شد ($1)',
 
 # "Undo" feature
 'undo-success' => 'این ویرایش را می‌توان خنثی کرد.
@@ -1407,7 +1414,9 @@ $1",
 'mergelogpagetext' => 'در زیر سیاهه آخرین موارد ادغام تاریخچه یک صفحه در صفحه‌ای دیگر را می‌بینید.',
 
 # Diffs
-'history-title' => 'تاریخچهٔ ویرایش‌های «$1»',
+'history-title' => '$1: تاریخچهٔ ویرایش‌ها',
+'difference-title' => '$1: تفاوت بین نسخه‌ها',
+'difference-title-multipage' => '$1 و $2: تفاوت بین صفحه‌ها',
 'difference-multipage' => '(تفاوت بین صفحه‌ها)',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'مقایسهٔ نسخه‌های انتخاب‌شده',
@@ -1505,6 +1514,7 @@ $1",
 'prefs-beta' => 'ابزارهای کارآمد',
 'prefs-datetime' => 'تاریخ و زمان',
 'prefs-labs' => 'قسمت‌های آزمایشی',
+'prefs-user-pages' => 'صفحه‌های کاربری',
 'prefs-personal' => 'داده‌های کاربر',
 'prefs-rc' => 'تغییرات اخیر',
 'prefs-watchlist' => 'فهرست پی‌گیری‌ها',
@@ -1973,14 +1983,19 @@ $1',
 'backend-fail-writetemp' => 'امکان نوشتن بر روی پروندهٔ موقتی وجود ندارد.',
 'backend-fail-closetemp' => 'نمی‌توان پروندهٔ موقتی را بست.',
 'backend-fail-read' => 'نمی‌توان پروندهٔ $1 را خواند.',
-'backend-fail-create' => 'نمی‌توان پروندهٔ $1 را ایجاد کرد.',
-'backend-fail-maxsize' => 'نمی‌توان پروندهٔ $1 را ایجاد کرد چون بزرگتر از {{PLURAL:$2|یک بایت|$2 بایت}} است.',
+'backend-fail-create' => 'نمی‌توان بر روی پروندهٔ $1 اطلاعات نوشت.',
+'backend-fail-maxsize' => 'نمی‌توان بر روی پروندهٔ $1 اطلاعات نوشت چون بزرگتر از {{PLURAL:$2|یک بایت|$2 بایت}} است.',
 'backend-fail-readonly' => 'پشتیبان «$1» درحال حاضر در وضیت فقط خواندنی است. دلیل ارائه شده چنین است: «$2»',
 'backend-fail-synced' => 'پرونده «$1» در پشتیبان‌های ذخیره داخلی در وضعیتی ناپایدار قرار دارد',
 'backend-fail-connect' => 'ارتباط با پشیبان ذخیره «$1» برقرار نشد.',
 'backend-fail-internal' => 'خطایی نامعلوم در پشتیبان ذخیره «$1» رخ داد.',
 'backend-fail-contenttype' => 'تعیین نوع محتوای پرونده برای ذخیره در «$1» ناموفق بود.',
 'backend-fail-batchsize' => 'دسته‌ای مشتمل بر $1 {{PLURAL:$1|عملکرد|عملکرد}} پرونده به پشتیبان ذخیره داده شد؛ حداکثر مجاز $2 {{PLURAL:$2|عملکرد|عملکرد}} است.',
+'backend-fail-usable' => 'امکان نوشتن در پروندهٔ $1 وجود نداشت چرا که سطح دسترسی کافی نیست یا شاخه مورد نظر وجود ندارد.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'امکان وصل شدن به پایگاه داده دفترخانه برای پشتیبان ذخیره‌سازی «$1» وجود نداشت.',
+'filejournal-fail-dbquery' => 'امکان به روز کردن پایگاه داده دفترخانه برای پشتیبان ذخیره‌سازی «$1» وجود نداشت.',
 
 # Lock manager
 'lockmanager-notlocked' => 'نمی‌توان قفل «$1» را گشود؛ چون قفل نشده‌است.',
@@ -2092,7 +2107,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'linkstoimage-more' => 'بیش از $1 صفحه به این پرونده پیوند {{PLURAL:$1|دارد|دارند}}.
 فهرست زیر تنها {{PLURAL:$1|اولین پیوند|اولین $1 پیوند}} به این صفحه را نشان می‌دهد.
 [[Special:WhatLinksHere/$2|فهرست کامل]] نیز موجود است.',
-'nolinkstoimage' => 'هیچ صفحه‌ای به این تصویر پیوند ندارد.',
+'nolinkstoimage' => 'این پرونده در هیچ صفحه‌ای به کار نرفته‌است.',
 'morelinkstoimage' => '[[Special:WhatLinksHere/$1|پیوندهای دیگر]] به این پرونده را ببینید.',
 'linkstoimage-redirect' => '$1 (تغییرمسیر پرونده) $2',
 'duplicatesoffile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر نسخهٔ تکراری این پرونده {{PLURAL:$1|است|هستند}} ([[Special:FileDuplicateSearch/$2|اطلاعات بیشتر]]):',
@@ -2101,6 +2116,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 برای اطلاعات بیشتر لطفاً [$2 صفحهٔ توضیحات پرونده] را ببینید.',
 'sharedupload-desc-here' => 'این پرونده در $1 قرار دارد و ممکن است در پروژه‌های دیگر هم استفاده شود.
 توضیحات موجود در [$2 صفحهٔ توضیحات پرونده در آنجا]، در زیر نشان داده شده‌است.',
+'sharedupload-desc-edit' => 'این پرونده از $1 است و می‌تواند توسط پروژه‌های دیگر هم استفاده شود.
+اگر خواستید می‌توانید توضیحات پرونده را از [$2 صفحهٔ توضیحاتش] در آنجا ویرایش کنید.',
+'sharedupload-desc-create' => 'این پرونده از $1 است و می‌تواند توسط پروژه‌های دیگر هم استفاده شود.
+اگر خواستید می‌توانید توضیحات پرونده را از [$2 صفحهٔ توضیحاتش] در آنجا ویرایش کنید.',
 'filepage-nofile' => 'پرونده‌ای با این نام وجود ندارد.',
 'filepage-nofile-link' => 'پرونده‌ای با این نام وجود ندارد، اما شما می‌توانید آن را [$1 بارگذاری کنید].',
 'uploadnewversion-linktext' => 'بارگذاری نسخهٔ جدیدی از پرونده',
@@ -2297,6 +2316,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 می‌توانید با انتخاب نوع سیاهه، نام کاربری (حساس به کوچکی و بزرگی حروف) و صفحه‌های تغییریافته (حساس به بزرگی و کوچکی حروف)، نمایش را محدودتر سازید.',
 'logempty' => 'مورد منطبق با منظور شما در سیاهه یافت نشد.',
 'log-title-wildcard' => 'صفحه‌هایی را جستجو کن که عنوانشان با این عبارت آغاز می‌شود',
+'showhideselectedlogentries' => 'نمایش/نهفتن موارد انتخابی در سیاهه',
 
 # Special:AllPages
 'allpages' => 'همهٔ صفحه‌ها',
@@ -2317,6 +2337,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'allpages-hide-redirects' => 'پنهان‌کردن تغییرمسیرها',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'شما در حال مشاهدهٔ نسخه‌ای از این صفحه که در میانگیر قرار دارد هستید که ممکن است برای $1 قبل باشد.',
+'cachedspecial-viewing-cached-ts' => 'شما در حال مشاهدهٔ نسخه‌ای از این صفحه که در میانگیر قرار دارد هستید، و این نسخه ممکن است کاملاً واقعی نباشد.',
 'cachedspecial-refresh-now' => 'مشاهده آخرین.',
 
 # Special:Categories
@@ -3187,6 +3209,7 @@ $1',
 'spambot_username' => 'هرزه‌تمیزکارِ مدیاویکی',
 'spam_reverting' => 'واگردانی به آخرین نسخه‌ای که پیوندی به $1 ندارد.',
 'spam_blanking' => 'تمام نسخه‌ها حاوی پیوند به $1 بود، در حال خالی کردن',
+'spam_deleting' => 'تمام نسخه‌ها حاوی پیوند به $1 بود، در حال حذف',
 
 # Info page
 'pageinfo-title' => 'اطلاعات در مورد «$1»',
@@ -4163,4 +4186,6 @@ $5
 'duration-centuries' => '$1 قرن',
 'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'امکان گرفتن قفل‌های سرور $1 وجود ندارد.',
 );
index 09f032a..13f27ce 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Finnish (Suomi)
+/** Finnish (suomi)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -17,6 +17,7 @@
  * @author Jafeluv
  * @author Kaganer
  * @author Kulmalukko
+ * @author Linnea
  * @author Mobe
  * @author Nedergard
  * @author Nike
@@ -688,10 +689,13 @@ $2',
 'customcssprotected' => 'Sinulla ei ole oikeutta muuttaa tätä CSS-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
 'customjsprotected' => 'Sinulla ei ole oikeutta muuttaa tätä JavaScript-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
 'ns-specialprotected' => 'Toimintosivuja ei voi muokata.',
-'titleprotected' => "Käyttäjä [[User:$1|$1]] on asettanut tämän sivun luontikieltoon: ''$2''.",
+'titleprotected' => "Käyttäjä [[User:$1|$1]] on suojannut tämän sivunimen, ja sivua ei voi luoda.
+Syynä on: ''$2''.",
 'filereadonlyerror' => 'Tiedostoa "$1" ei voi muuttaa, koska jaettu mediavarasto "$2" on "vain luku" -tilassa.
 
 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',
 
 # Virus scanner
 'virus-badscanner' => "Virheellinen asetus: Tuntematon virustutka: ''$1''",
@@ -1003,7 +1007,7 @@ Alla on viimeisin lokitapahtuma:",
 'semiprotectedpagewarning' => 'Tämä sivu on lukittu siten, että vain rekisteröityneet käyttäjät voivat muokata sitä.
 Alla on viimeisin lokitapahtuma:',
 'cascadeprotectedwarning' => '<strong>Vain ylläpitäjät voivat muokata tätä sivua, koska se on sisällytetty alla {{PLURAL:$1|olevaan laajennetusti suojattuun sivuun|oleviin laajennetusti suojattuihin sivuihin}}</strong>:',
-'titleprotectedwarning' => "'''Tämä sivun luominen on rajoitettu vain osalle käyttäjistä [[Special:ListGroupRights|tietyillä oikeuksilla]].'''
+'titleprotectedwarning' => "'''Varoitus: Tämä sivunimi on suojattu niin, että sivun luomiseen tarvitaan [[Special:ListGroupRights|erityisiä oikeuksia]].'''
 Alla on viimeisin lokitapahtuma:",
 'templatesused' => 'Tällä sivulla {{PLURAL:$1|käytetty malline|käytetyt mallineet}}:',
 'templatesusedpreview' => 'Esikatselussa mukana {{PLURAL:$1|oleva malline|olevat mallineet}}:',
@@ -1047,6 +1051,10 @@ Nämä muuttujat on jätetty käsittelemättä.",
 'parser-template-loop-warning' => 'Mallinesilmukka havaittu: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Mallineen rekursioraja ylittyi ($1)',
 'language-converter-depth-warning' => 'Kielimuuntimen syvyysraja ylittyi ($1)',
+'node-count-exceeded-category' => 'Sivut, joissa solmumäärä on ylitetty',
+'node-count-exceeded-warning' => 'Sivu ylitti solmumäärän',
+'expansion-depth-exceeded-category' => 'Sivut, joissa laajentamissyvyys on ylitetty',
+'expansion-depth-exceeded-warning' => 'Sivu ylitti laajentamissyvyyden.',
 
 # "Undo" feature
 'undo-success' => 'Kumoaminen onnistui. Valitse <em>tallenna</em> toteuttaaksesi muutokset.',
@@ -1133,25 +1141,25 @@ Voit silti nähdä tämän muutoksen. Lisätietoja löytyy [{{fullurl:{{#Special
 'revdelete-no-file' => 'Määritettyä tiedostoa ei ole olemassa.',
 'revdelete-show-file-confirm' => 'Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?',
 'revdelete-show-file-submit' => 'Kyllä',
-'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta '''$1:''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta [[:$1]]'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:'''",
-'revdelete-text' => "'''Poistetut versiot näkyvät sivun historiassa, mutta niiden sisältö ei ole julkisesti saatavilla.'''
-Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti lukea piilotetun sisällön ja he voivat palauttaa sen tämän käyttöliittymän kautta, ellei sitä ole rajoitettu.",
+'revdelete-text' => "'''Poistetut versiot ja lokitapahtumat näkyvät edelleen sivun historiassa ja lokeissa, mutta osa niiden sisällöstä ei ole julkisesti saatavilla.'''
+Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti tarkastella piilotettua sisältöä, ja he voivat palauttaa sen näkyviin tämän käyttöliittymän kautta, ellei tätä ole erikseen rajoitettu.",
 'revdelete-confirm' => 'Varmista, että haluat tehdä tämän – ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
 'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
 * Sopimattomat henkilötiedot
 *: ''kotiosoitteet, puhelinnumerot, sosiaaliturvatunnukset ja muut.''",
-'revdelete-legend' => 'Version rajoitukset',
-'revdelete-hide-text' => 'Piilota version sisältö',
+'revdelete-legend' => 'Aseta version näkyvyyden rajoitukset',
+'revdelete-hide-text' => 'Piilota version tekstisisältö',
 'revdelete-hide-image' => 'Piilota tiedoston sisältö',
 'revdelete-hide-name' => 'Piilota toiminto ja kohde',
 'revdelete-hide-comment' => 'Piilota yhteenveto',
 'revdelete-hide-user' => 'Piilota tekijän tunnus tai IP-osoite',
-'revdelete-hide-restricted' => 'Piilota tiedot ylläpitäjiltä kuten muilta',
+'revdelete-hide-restricted' => 'Häivytä tiedot sekä ylläpitäjien että muiden käyttäjien näkyviltä',
 'revdelete-radio-same' => '(älä muuta)',
 'revdelete-radio-set' => 'Kyllä',
 'revdelete-radio-unset' => 'Ei',
-'revdelete-suppress' => 'Piilota myös ylläpitäjiltä',
+'revdelete-suppress' => 'Häivytä tiedot myös ylläpitäjien näkyviltä samalla kun piilotat ne muilta käyttäjiltä',
 'revdelete-unsuppress' => 'Poista rajoitukset palautetuilta versiolta',
 'revdelete-log' => 'Syy',
 'revdelete-submit' => 'Toteuta {{PLURAL:$1|valittuun versioon|valittuihin versioihin}}',
@@ -1217,7 +1225,9 @@ Uuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa men
 'mergelogpagetext' => 'Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.',
 
 # Diffs
-'history-title' => 'Sivun $1 muutoshistoria',
+'history-title' => 'Sivun "$1" muutoshistoria',
+'difference-title' => 'Ero sivun "$1" versioiden välillä',
+'difference-title-multipage' => 'Erot sivujen "$1" ja "$2" välillä',
 'difference-multipage' => '(Sivujen välinen eroavaisuus)',
 'lineno' => 'Rivi $1:',
 'compareselectedversions' => 'Vertaile valittuja versioita',
@@ -1287,9 +1297,9 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'powersearch-ns' => 'Hae nimiavaruuksista:',
 'powersearch-redir' => 'Luettele ohjaukset',
 'powersearch-field' => 'Etsi',
-'powersearch-togglelabel' => 'Muuta valinta',
+'powersearch-togglelabel' => 'Muuta valintaa',
 'powersearch-toggleall' => 'Valitse kaikki',
-'powersearch-togglenone' => 'Poista kaikki',
+'powersearch-togglenone' => 'Valitse ei mitään',
 'search-external' => 'Ulkoinen haku',
 'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
 
@@ -1315,6 +1325,7 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'prefs-beta' => 'Beta-ominaisuudet',
 'prefs-datetime' => 'Aika ja päiväys',
 'prefs-labs' => 'Kokeelliset ominaisuudet',
+'prefs-user-pages' => 'Käyttäjäsivut',
 'prefs-personal' => 'Käyttäjätiedot',
 'prefs-rc' => 'Tuoreet muutokset',
 'prefs-watchlist' => 'Tarkkailulista',
@@ -1468,7 +1479,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
 # Rights
 'right-read' => 'Lukea sivuja',
 'right-edit' => 'Muokata sivuja',
-'right-createpage' => 'Luoda sivuja pois lukien keskustelusivut',
+'right-createpage' => 'Luoda sivuja (jotka eivät ole keskustelusivuja)',
 'right-createtalk' => 'Luoda keskustelusivuja',
 'right-createaccount' => 'Luoda uusia käyttäjätunnuksia',
 'right-minoredit' => 'Merkitä muokkauksensa pieniksi',
@@ -1751,6 +1762,7 @@ $1',
 'upload-too-many-redirects' => 'URL sisälsi liian monta ohjausta',
 'upload-unknown-size' => 'Tuntematon koko',
 'upload-http-error' => 'HTTP-virhe: $1',
+'upload-copy-upload-invalid-domain' => 'Tiedostojen tallentamista tästä verkko-osoitteesta ei ole sallittu.',
 
 # File backend
 'backend-fail-stream' => 'Tiedoston $1 virtauttaminen epäonnistui.',
@@ -1769,7 +1781,10 @@ $1',
 'backend-fail-closetemp' => 'Väliaikaista tiedostoa ei voitu sulkea.',
 'backend-fail-read' => 'Tiedostoa $1 ei voitu lukea.',
 'backend-fail-create' => 'Tiedostoa $1 ei voitu luoda.',
+'backend-fail-maxsize' => 'Tiedostoa $1 ei voitu luoda, koska se on suurempi kuin {{PLURAL:$2|yksi tavu|$2 tavua}}.',
 'backend-fail-connect' => 'Varastojärjestelmään "$1" ei saada yhteyttä.',
+'backend-fail-contenttype' => 'Tiedostoa ei voitu tallentaa kohteeseen $1, koska tiedostomuotoa ei voitu määrittää.',
+'backend-fail-usable' => 'Ei voitu luoda tiedostoa $1, koska käyttöoikeudet eivät riittäneet tai hakemisto puuttuu.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Kohteen $1 lukitusta ei voitu poistaa, koska se ei ole lukittu.',
@@ -2039,7 +2054,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'protectedpages-indef' => 'Vain ikuisesti suojatut',
 'protectedpages-cascade' => 'Vain laajennetusti suojatut',
 'protectedpagestext' => 'Seuraavat sivut ovat suojattuja siirtämiseltä tai muutoksilta',
-'protectedpagesempty' => 'Ei suojattu sivuja.',
+'protectedpagesempty' => 'Mitään sivuja ei ole tällä hetkellä suojattu näillä asetuksilla.',
 'protectedtitles' => 'Suojatut sivunimet',
 'protectedtitlestext' => 'Seuraavien sivujen luonti on estetty.',
 'protectedtitlesempty' => 'Ei suojattuja sivunimiä näillä hakuehdoilla.',
@@ -2082,6 +2097,7 @@ Huomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla,
 Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muutos on kohdistunut. Jälkimmäiset ovat kirjainkokoherkkiä.',
 'logempty' => 'Ei tapahtumia lokissa.',
 'log-title-wildcard' => 'Kohde alkaa merkkijonolla',
+'showhideselectedlogentries' => 'Näytä tai piilota valitut lokimerkinnät',
 
 # Special:AllPages
 'allpages' => 'Kaikki sivut',
@@ -2389,16 +2405,18 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
 
 # Undelete
 'undelete' => 'Palauta poistettuja sivuja',
-'undeletepage' => 'Poistettujen sivujen selaus',
+'undeletepage' => 'Katsele ja palauta poistettuja sivuja',
 'undeletepagetitle' => "'''Poistetut versiot sivusta [[:$1]]'''.",
 'viewdeletedpage' => 'Poistettujen sivujen selaus',
 'undeletepagetext' => '{{PLURAL:$1|Seuraava sivu|Seuraavat sivut}} on poistettu, mutta {{PLURAL:$1|se löytyy|ne löytyvät}} vielä arkistosta, joten {{PLURAL:$1|se on|ne ovat}} palautettavissa. Arkisto saatetaan tyhjentää aika ajoin.',
 'undelete-fieldset-title' => 'Palauta versiot',
-'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian, jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.
-Voit palauttaa versiota valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
+'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.
+Voit palauttaa versioita valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
 'undeleterevisions' => '{{PLURAL:$1|Versio|$1 versiota}} arkistoitu.',
 'undeletehistory' => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan.',
-'undeleterevdel' => 'Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain poistettu. Tässä tilanteessa poista uusimman poistettavan version piilotus. Tiedostoversioita, joihin sinulla ei ole katseluoikeutta ei palauteta.',
+'undeleterevdel' => "Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain piilotettu. 
+Tässä tilanteessa älä valitse palautettavaksi näkyviin viimeisintä poistettua versiota tai poista version piilotus.<br />
+Tiedostoversioita, joihin sinulla ei ole katseluoikeutta (''häivytetyt versiot''), ei palauteta.",
 'undeletehistorynoadmin' => 'Tämä sivu on poistettu. Syy sivun poistamiseen näkyy yhteenvedossa, jossa on myös tiedot, ketkä ovat muokanneet tätä sivua ennen poistamista. Sivujen varsinainen sisältö on vain ylläpitäjien luettavissa.',
 'undelete-revision' => 'Poistettu sivu $1 hetkellä $4 kello $5. Tekijä: $3.',
 'undeleterevision-missing' => 'Virheellinen tai puuttuva versio. Se on saatettu palauttaa tai poistaa arkistosta.',
@@ -2806,6 +2824,9 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'import-invalid-interwiki' => 'Määritellystä wikistä ei voi tuoda.',
 'import-error-edit' => 'Sivua $1 ei tuotu, koska sinulla ei ole oikeutta muokata sitä.',
 'import-error-create' => 'Sivua $1 ei tuotu, koska sinulla ei ole oikeutta luoda sitä.',
+'import-error-interwiki' => 'Sivua $1 ei voitu tuoda, koska sen nimi on varattu ulkoisen linkittämisen (interwiki).',
+'import-error-special' => 'Sivua $1 ei tuoda, koska se kuuluu nimitilaan, joka ei salli sivuja.',
+'import-error-invalid' => 'Sivua $1 ei tuoda, koska sen nimi ei kelpaa.',
 
 # Import log
 'importlogpage' => 'Tuontiloki',
index 567e114..a20078a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Meänkieli (Meänkieli)
+/** meänkieli (meänkieli)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 394f985..e50f273 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Faroese (Føroyskt)
+/** Faroese (føroyskt)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 1345d47..75da985 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** French (Français)
+/** French (français)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -66,6 +66,7 @@
  * @author Tpt
  * @author Urhixidur
  * @author Verdy p
+ * @author WikiEoFrEn
  * @author Wyz
  * @author Yumeki
  * @author Zebulon84
@@ -366,16 +367,16 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Souligner les liens :',
 'tog-justify' => 'Justifier les paragraphes',
-'tog-hideminor' => 'Masquer les modifications mineures parmi les modifications récentes',
-'tog-hidepatrolled' => 'Masquer les modifications surveillées parmi les modifications récentes',
+'tog-hideminor' => 'Masquer les modifications mineures dans les modifications récentes',
+'tog-hidepatrolled' => 'Masquer les modifications surveillées dans les modifications récentes',
 'tog-newpageshidepatrolled' => 'Masquer les pages surveillées parmi les nouvelles pages',
 'tog-extendwatchlist' => 'Étendre la liste de suivi pour afficher toutes les modifications et non seulement les plus récentes',
-'tog-usenewrc' => 'Utiliser les modifications récentes améliorées (nécessite JavaScript)',
+'tog-usenewrc' => 'Grouper les changements dans les modifications récentes et la liste de suivi (nécessite JavaScript)',
 'tog-numberheadings' => 'Numéroter automatiquement les titres de section',
-'tog-showtoolbar' => 'Montrer la barre de menu de modification (nécessite JavaScript)',
-'tog-editondblclick' => 'Double-cliquer permet de modifier une page (nécessite JavaScript)',
+'tog-showtoolbar' => "Montrer la barre d'outils de modification (nécessite JavaScript)",
+'tog-editondblclick' => 'Modifier des pages sur double-clic (nécessite JavaScript)',
 'tog-editsection' => 'Activer les modifications de sections grâce aux liens « [modifier] »',
-'tog-editsectiononrightclick' => 'Un clic droit sur un titre de section permet de modifier celle-ci (nécessite JavaScript)',
+'tog-editsectiononrightclick' => 'Activer la modification de sections par clic droit sur leurs titres (nécessite JavaScript)',
 'tog-showtoc' => 'Afficher la table des matières (pour les pages ayant plus de 3 sections)',
 'tog-rememberpassword' => 'Se souvenir de mon identification avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})',
 'tog-watchcreations' => 'Ajouter les pages que je crée à ma liste de suivi',
@@ -462,7 +463,7 @@ $messages = array(
 'november-gen' => 'novembre',
 'december-gen' => 'décembre',
 'jan' => 'janv',
-'feb' => 'févr',
+'feb' => 'fév',
 'mar' => 'mars',
 'apr' => 'avr',
 'may' => 'mai',
@@ -534,7 +535,7 @@ $messages = array(
 
 'errorpagetitle' => 'Erreur',
 'returnto' => 'Revenir à la page $1.',
-'tagline' => 'De {{SITENAME}}.',
+'tagline' => 'De {{SITENAME}}',
 'help' => 'Aide',
 'search' => 'Rechercher',
 'searchbutton' => 'Rechercher',
@@ -643,7 +644,7 @@ $1',
 'thisisdeleted' => 'Désirez-vous afficher ou restaurer $1 ?',
 'viewdeleted' => 'Voir $1 ?',
 'restorelink' => '{{PLURAL:$1|la modification effacée|les $1 modifications effacées}}',
-'feedlinks' => 'Flux',
+'feedlinks' => 'Flux :',
 'feed-invalid' => 'Type de flux invalide.',
 'feed-unavailable' => 'Les flux de syndication ne sont pas disponibles',
 'site-rss-feed' => 'Flux RSS de $1',
@@ -714,9 +715,9 @@ Veuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oubli
 'filedeleteerror' => 'Impossible de supprimer le fichier « $1 ».',
 'directorycreateerror' => 'Impossible de créer le dossier « $1 ».',
 'filenotfound' => 'Impossible de trouver le fichier « $1 ».',
-'fileexistserror' => 'Impossible d’écrire dans le dossier « $1 » : le fichier existe',
+'fileexistserror' => 'Impossible d’écrire le fichier « $1 » : le fichier existe.',
 'unexpected' => 'Valeur inattendue : « $1 » = « $2 ».',
-'formerror' => 'Erreur : Impossible de soumettre le formulaire',
+'formerror' => 'Erreur : Impossible de soumettre le formulaire.',
 'badarticleerror' => 'Cette action ne peut pas être effectuée sur cette page.',
 'cannotdelete' => 'Impossible de supprimer la page ou le fichier « $1 ».
 La suppression a peut-être déjà été effectuée par quelqu’un d’autre.',
@@ -753,6 +754,8 @@ Le motif avancé est « ''$2'' ».",
 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é',
+'exception-nologin-text' => "Cette page ou cette action nécessite d'être connecté sur ce wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
@@ -773,7 +776,7 @@ N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{S
 'yourpasswordagain' => 'Confirmez le mot de passe :',
 'remembermypassword' => 'Me reconnecter automatiquement aux prochaines visites avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})',
 'securelogin-stick-https' => 'Rester connecté en HTTPS après la connexion',
-'yourdomainname' => 'Votre domaine',
+'yourdomainname' => 'Votre domaine :',
 'externaldberror' => 'Une erreur s’est produite avec la base de données d’authentification externe, ou bien vous n’êtes pas autorisé{{GENDER:||e|(e)}} à mettre à jour votre compte externe.',
 'login' => 'Connexion',
 'nav-login-createaccount' => 'Créer un compte ou se connecter',
@@ -1306,9 +1309,9 @@ Assurez-vous que cette opération conservera la continuité de l’historique de
 'mergelogpagetext' => 'Voici la liste des fusions de l’historique d’une page dans celui d’une autre les plus récentes.',
 
 # Diffs
-'history-title' => 'Historique des versions de «&nbsp;$1&nbsp;»',
-'difference-title' => 'Différence entre des versions de « $1 »',
-'difference-title-multipage' => 'Différence entre les pages « $1 » et « $2 »',
+'history-title' => '$1 : Historique des versions',
+'difference-title' => '$1 : Différence entre versions',
+'difference-title-multipage' => 'Différences entre les pages « $1 » et « $2 »',
 'difference-multipage' => '(Différence entre les pages)',
 'lineno' => 'Ligne $1 :',
 'compareselectedversions' => 'Comparer les versions sélectionnées',
@@ -1404,6 +1407,7 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'prefs-beta' => 'Fonctionnalités bêta',
 'prefs-datetime' => 'Date et heure',
 'prefs-labs' => 'Fonctionnalités « labs »',
+'prefs-user-pages' => 'Pages utilisateur',
 'prefs-personal' => 'Informations personnelles',
 'prefs-rc' => 'Modifications récentes',
 'prefs-watchlist' => 'Liste de suivi',
@@ -2203,6 +2207,7 @@ Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier
 Vous pouvez personnaliser l’affichage en sélectionnant le type de journal, le nom d’utilisateur ou la page concernée (ces deux derniers étant sensibles à la casse).',
 'logempty' => 'Aucune opération correspondante dans les journaux.',
 'log-title-wildcard' => 'Chercher parmi les titres commençant par ce texte',
+'showhideselectedlogentries' => 'Afficher/masquer les entrées de journal sélectionnées',
 
 # Special:AllPages
 'allpages' => 'Toutes les pages',
@@ -3111,6 +3116,7 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 'spambot_username' => 'Nettoyage de pourriels par MediaWiki',
 'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
 'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
+'spam_deleting' => 'Toutes les versions contenaient des liens vers $1, suppression',
 
 # Info page
 'pageinfo-title' => 'Informations pour « $1 »',
@@ -4049,4 +4055,6 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'duration-centuries' => '$1 {{PLURAL:$1|siècle|siècles}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millénaire|millénaires}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "Impossible d'acquérir des verrous sur le serveur $1.",
 );
index 0dd57ec..768dad1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Franco-Provençal (Arpetan)
+/** Franco-Provençal (arpetan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 90dc827..cf92b49 100644 (file)
@@ -25,7 +25,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Latje änringe fersteege',
 'tog-newpageshidepatrolled' => 'Kontroliirde side aw e list "Naie side" fersteege',
 'tog-extendwatchlist' => 'Ütwidede wåchelist tun wisen foon åle änringe',
-'tog-usenewrc' => 'Ütwidede deerstaling foon da "Leeste Änringe" (brükt JavaScript)',
+'tog-usenewrc' => "Ütwidede deerstaling foon da ''Leeste Änringe'' än aw da ''Eefterkiikliste'' (brükt JavaScript)",
 'tog-numberheadings' => 'Ouerschrafte automatisch numeriire',
 'tog-showtoolbar' => 'Beårbe-wärktjüch wise',
 'tog-editondblclick' => 'Side ma dööweltklik beårbe (brükt JavaScript)',
@@ -262,7 +262,7 @@ $1',
 'edithelp' => 'Beårbingsheelp',
 'edithelppage' => 'Help:Beårbe',
 'helppage' => 'Help:Inhåltsfertiiknis',
-'mainpage' => 'Hoodsid',
+'mainpage' => 'Wikipedia:Hoodsid',
 'mainpage-description' => 'Hoodsid',
 'policy-url' => 'Project:Ruchtliinje',
 'portal' => 'Gemiinschaps-portåål',
@@ -409,6 +409,8 @@ $2',
 Jü späre wörd döör [[User:$1|$1]] ma grün "$2" inruchted.',
 'filereadonlyerror' => 'Det datei „$1“ koon ei feranert wurd, auer uun det fertiaknis „$2“ bluas leesen wurd koon.
 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“',
 
 # Virus scanner
 'virus-badscanner' => "Hiinje konfigurasjoon: ünbekånde fiirusscanner: ''$1''",
@@ -501,6 +503,7 @@ Besäkere, da iüheer IP-adräse brüke, koone tu jü tutids niinj benutserkonte
 'invalidemailaddress' => 'Jü E-mail adräs wörd ai aksäptiird, ouerdåt jü en üngülti formoot (ewentuäl üngültie tiikne) tu heewen scheent.
 Wees sü gödj än jeef en koräkt adräs önj unti mäág dåt fäalj lääsi.',
 'cannotchangeemail' => 'E-mail-adresen kön uun detheer wiki ei feranert wurd.',
+'emaildisabled' => 'Fann detdiar sidj kön nian E-Mails fersjüürd wurd',
 'accountcreated' => 'Benjüterkonto mååged',
 'accountcreatedtext' => 'Dåt benjüteraccount for $1 as mååged wörden.',
 'createaccount-title' => 'Måågen foon en benjüterkonto for {{SITENAME}}',
@@ -696,11 +699,12 @@ For informasjoon füliet di leeste üttooch üt dåt benjüterspär-logbök:',
 'note' => "'''Påås aw:'''",
 'previewnote' => "'''Heer könst dü sä, hü det sidj wurd skal.'''
 Det sidj as oober noch ei seekert!",
+'continue-editing' => 'Widjer bewerke',
 'previewconflict' => 'Dideer forbekiik jeeft di inhålt foon dåt boowerst takstfälj wider. Sü wårt jü sid ütsiinj, wan dü nü spiikerst.',
 'session_fail_preview' => "'''Din werk küd ei ufseekert wurd, diar as wat skiaf gingen.'''
 Fersjük det man noch ans an trak do üüb ''Sid spiikre''.
 Wan't do imer noch ei loket, [[Special:UserLogout|melde di uf]] an weder uun.",
-'session_fail_preview_html' => "'''Din werk küd ei seekerd wurd. Diar as wat skiaf gingen.'''
+'session_fail_preview_html' => "'''Din werk küd ei seekert wurd. Diar as wat skiaf gingen.'''
 
 ''Uun {{SITENAME}} as HTML aktiwiaret, an diaram as JavaScript deaktiwiaret wurden.''
 
@@ -712,6 +716,7 @@ Det komt flooksis föör, wan Dan anonym Proxy-siinst ei rocht werket.",
 'edit_form_incomplete' => "'''Enkelt dialen faan det formulaar san ei rocht uunkimen.'''
 Wees so gud an kontroliare ales noch ans.",
 'editing' => 'Beårbe foon $1',
+'creating' => 'Maage $1',
 'editingsection' => 'Beårben foon $1 (oufsnaas)',
 'editingcomment' => 'Beårben foon $1 (naien oufsnaas)',
 'editconflict' => 'Beårbingskonflikt: $1',
@@ -737,20 +742,20 @@ Wan dü heer wat iinskrafst, do beest dü diarmä iinferstenen an seekerst tu, d
 Wees sü gödj än sääkre di täkst lokool aw din kompjuuter än fersäk tu n lääsern tidpunkt, da änringe tu ouerdreegen.'''.
 
 Grün for jü späre: $1",
-'protectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
-For informasjoon füliet di aktuäle logbökönjdråch:",
-'semiprotectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
-For informasjoon füliet di aktuäle logbökönjdråch:",
-'cascadeprotectedwarning' => "'''Woorschauing:''' Jüheer sid wörd sü önj ferbading hülen, dåt jü bloot döör benjütere ma administraator-ruchte beårbed wårde koon. Jü as önj {{PLURAL:$1|jü füliend sid|da füliende side}} önjbünen, da döör jü kaskaadespäropsjoon önj ferbading hülen {{PLURAL:$1|wårt|wårde}}:",
-'titleprotectedwarning' => "'''PÅÅS AW: \"Dåt måågen foon side wörd spärd. Bloot benjütere ma [[Special:ListGroupRights|spetsjäle ruchte]] koone da side mååge.'''
-For informasjoon füliet jü leest logbök-önjdråch:",
+'protectedpagewarning' => "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''
+Uun't logbuk stäänt muar diartu:",
+'semiprotectedpagewarning' => "'''Paase üüb: Detdiar sidj as dialwiis tu't bewerkin speret wurden. Bluas gudkäänd brükern kön det bewerke.'''
+Uun't logbuk stäänt muar diartu:",
+'cascadeprotectedwarning' => "'''Paase üüb:''' Detdiar sidj koon bluas faan administratooren bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaaden-optsjuun seekert {{PLURAL:$1|as|san}}:",
+'titleprotectedwarning' => "'''Paase üüb: \"Detdiar sidj mä didiar nööm koon ei faan arken bewerket wurd. Bluas enkelt brükern mä [[Special:ListGroupRights|was brükerrochten]] kön detdiar sidj nei maage of bewerke.'''
+Uun't logbuk stäänt muar diartu:",
 'templatesused' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon jüdeer sid ferwånd:',
 'templatesusedpreview' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon diheere sideforlök ferwånd:',
 'templatesusedsection' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon dideer oufsnaas ferwånd:',
-'template-protected' => '(önj ferbading hülen iinj schriwen)',
-'template-semiprotected' => '(schriwschütsed for ünönjmäldede än naie brükere)',
+'template-protected' => '(seekert)',
+'template-semiprotected' => '(hualew-seekert)',
 'hiddencategories' => 'Jüdeer sid as lasmoot foon {{PLURAL:$1|1 ferstäägen kategorii|$1 ferstäägene kategoriie}}:',
-'nocreatetitle' => 'Dåt måågeb foon naie side as begränsed.',
+'nocreatetitle' => 'Det maagin faan nei sidjen as ei saner aanj mögelk.',
 'nocreatetext' => 'Aw {{SITENAME}} wörd dåt måågen foon naie side begränsed.
 Dü koost bestönjene side änre unti de [[Special:UserLogin|önjmälde unti mååg en account]].',
 'nocreate-loggedin' => 'Dü heest niinj beruchtiging, naie side tu måågen.',
@@ -761,8 +766,8 @@ Dü koost bestönjene side änre unti de [[Special:UserLogin|önjmälde unti må
 'permissionserrorstext-withaction' => 'Dü bast ai beruchtit, $2.
 {{PLURAL:$1|grün|grüne}}:',
 'recreate-moveddeleted-warn' => "'''Paase üüb: Dü wel en artiikel maage, diar iar al ans stregen wurden as.'''
-
-Auerlei di det gud, amdat dü niks ferkiard maagest. At logbuk faan diheer artiikel stäänt diar:",
+Auerlei di det gud, amdat dü niks ferkiard maagest.
+Uun't logbuk stäänt muar diartu:",
 'moveddeleted-notice' => 'Jüheer sid wörd sleeked. Deer füliet en üttooch üt dåt sleek- än ferschüwingslogbök for jüheer sid.',
 'log-fulllog' => 'Åle logbük-önjdrååge önjkiike',
 'edit-hook-aborted' => 'Jü beårbing wörd suner ferklååring döör en snaasstää oufbräägen.',
@@ -772,6 +777,7 @@ Jü wörd önjscheened sleeked.',
 'edit-no-change' => 'Din beårbing wörd ignoriird, deer niinj änring an e täkst fornümen wörd.',
 'edit-already-exists' => 'Köö niinj nai sid mååge.
 Dåt bestöö ål.',
+'defaultmessagetext' => 'Standard tekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Woorschauing: Jüdeer sid önjthålt tu fool apteele foon widluftie parserfunksjoone.
@@ -785,6 +791,12 @@ Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} wees
 'parser-template-loop-warning' => 'Forlåågesloif önjtdäkt: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Forloagerekursjoonsdiipgränse ouerschran ($1)',
 'language-converter-depth-warning' => 'Spräkekonwärsjoonsdiipdegränse ouerschren ($1)',
+'node-count-exceeded-category' => 'Jodiar sidjen haa tuföl ferbinjangen (nodes)',
+'node-count-exceeded-warning' => 'Detdiar sidj hää tuföl ferbinjangen (nodes)',
+'expansion-depth-exceeded-category' => 'Jodiar sidjen haa tuföl ütjwidjangen (expansion)',
+'expansion-depth-exceeded-warning' => 'Detdiar sidj hää tuföl ütjwidjangen (expansion)',
+'parser-unstrip-loop-warning' => 'Diar as en jinsidjag ferwisang',
+'parser-unstrip-recursion-limit' => 'Tuföl jinsidjag ferwisangen bi $1',
 
 # "Undo" feature
 'undo-success' => 'Detheer feranerang koon turag nimen wurd. 
@@ -960,7 +972,9 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'mergelogpagetext' => 'Dåtheer as dåt logbök foon da feriinde färsjoonshistoorie.',
 
 # Diffs
-'history-title' => 'Färsjoonshistoori foon "$1"',
+'history-title' => '$1: Ferluup faan a wersjuunen',
+'difference-title' => 'Ferskeel tesken a wersjuunen faan "$1"',
+'difference-title-multipage' => 'Ferskeel tesken a sidjen "$1" an "$2"',
 'difference-multipage' => '(Ferschääl twasche side)',
 'lineno' => 'Ra $1:',
 'compareselectedversions' => 'Wäälde färsjoone ferglike',
@@ -1055,6 +1069,7 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'prefs-beta' => 'Beta mögelkhaiden',
 'prefs-datetime' => 'Dai an klooktidj',
 'prefs-labs' => 'Alpha mögelkhaiden',
+'prefs-user-pages' => 'Brükersidjen',
 'prefs-personal' => 'Brüker dooten',
 'prefs-rc' => 'Leeste änringe',
 'prefs-watchlist' => "Uun't uug behual",
@@ -1085,8 +1100,14 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'recentchangescount' => 'Soföl feranerangen skel uunwiset wurd:',
 'prefs-help-recentchangescount' => 'Det san a leetst feranerangen, wersjuunen an logbuken.',
 'prefs-help-watchlist-token' => "Wan dü detdiar fial mä en hiamelken code ütjfalst, woort en RSS-feed iinracht. Arken mä didiar code koon do sä, wat dü uun't uug behual wel. Diaram skul hi ei so ianfach wees, nem dach didiar: $1",
-'savedprefs' => 'Di iinstelangen san seekerd wurden.',
+'savedprefs' => 'Din iinstelangen san seekert wurden.',
+'timezonelegend' => 'Tidjsoon:',
 'localtime' => 'lokaal tid',
+'timezoneuseserverdefault' => 'Wiki standard tidj brük ($1)',
+'timezoneuseoffset' => 'Öödern (ferskeel uundu)',
+'timezoneoffset' => 'Ferskeel¹:',
+'servertime' => 'Server klooktidj:',
+'guesstimezone' => 'Faan a browser auernem',
 'timezoneregion-africa' => 'Afrikaa',
 'timezoneregion-america' => 'Ameerikaa',
 'timezoneregion-antarctica' => 'Antarktikaa',
@@ -1114,34 +1135,75 @@ Do san jo ual iinstelangen wech.',
 'username' => 'Brükernoome:',
 'uid' => 'Brüker ID:',
 'prefs-memberingroups' => 'Lasmoot faan {{PLURAL:$1|brükerskööl|brükersköölen}}:',
-'prefs-registration' => 'Uunmeldetidj',
+'prefs-registration' => 'Uunmelde-tidj',
 'yourrealname' => 'Rocht nööm:',
 'yourlanguage' => 'Spräke:',
 'yourvariant' => 'Spriak:',
 'prefs-help-variant' => 'Uun hün skriiwwiis skel a sidjen uunwiset wurd:',
 'yournick' => 'Nai signatuur:',
 'prefs-help-signature' => 'Wees so gud an onerskriiw üüb diskusjuunssidjen mä „<nowiki>~~~~</nowiki>“. Diar komt do dan brükernööm an det klooktidj bi ütj.',
+'badsig' => "Diar stemet wat ei mä't signatuur. Preewe at HTML.",
+'badsiglength' => 'Din signatuur mut ei muar üs $1 {{PLURAL:$1|tiaken|tiakens}} haa.',
+'yourgender' => 'Slach:',
+'gender-unknown' => 'Ei bekäänd',
+'gender-male' => 'Maan',
+'gender-female' => 'Wüf',
+'prefs-help-gender' => "Stäänt tu wool: Det woort brükt för't paasin uunspreegen faan maaner an wüfen. Arken koon det lees.",
 'email' => 'E-mail',
+'prefs-help-realname' => 'Stäänt tu wool. Wan dü dan rochten nööm uundääst, koon hi mä din bewerkangen ferbünjen wurd.',
 'prefs-help-email' => 'Dü säärst din e-mail-adres ei uundu, oober do könst dü uk nian mädialangen fu, wan dü ans din paaswurd ferjiden heest.',
 'prefs-help-email-others' => 'Mä ööder brükern könst dü uk auer hör an din brükersidj kontakt apnem. Diarför woort din e-mail-adres ei brükt.',
+'prefs-help-email-required' => 'Du en rocht E-Mail-adres uun.',
+'prefs-info' => 'Baasisdooten',
 'prefs-i18n' => 'Spriak',
 'prefs-signature' => 'Signatuur',
+'prefs-dateformat' => "Formaat faan't dootem",
+'prefs-timeoffset' => 'Ferskeel faan a klooktidj',
 'prefs-advancedediting' => 'Ütwided möölikhäide',
 'prefs-advancedrc' => 'Ütwided möölikhäide',
 'prefs-advancedrendering' => 'Ütwided möölikhäide',
 'prefs-advancedsearchoptions' => 'Ütwided möölikhäide',
 'prefs-advancedwatchlist' => 'Ütwided möölikhäide',
+'prefs-displayrc' => "Mögelkhaiden för't uunwisin",
+'prefs-displaysearchoptions' => "Mögelkhaiden för't uunwisin",
+'prefs-displaywatchlist' => "Mögelkhaiden för't uunwisin",
+'prefs-diffs' => 'Ferskeel',
+
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'Detdiar E-Mail-adres schocht gud ütj.',
+'email-address-validity-invalid' => 'Du en echt E-Mail-adres uun.',
 
 # User rights
-'userrights-user-editname' => 'Brükernoome:',
+'userrights' => 'Brükerrochten bewerke',
+'userrights-lookup-user' => 'Brükersköölen bewerke',
+'userrights-user-editname' => 'Brükernööm:',
+'editusergroup' => 'Brükersköölen bewerke',
+'editinguser' => "Brükerrochten faan '''[[User:$1|$1]]''' $2 feranere",
+'userrights-editusergroup' => 'Lasmootskap tu brükersköölen bewerke',
+'saveusergroups' => 'Brükersköölen seekre',
+'userrights-groupsmember' => 'Lasmoot faan:',
+'userrights-groupsmember-auto' => 'Faan salew lasmoot faan:',
+'userrights-groups-help' => 'Dü könst feranere, tu hün brükerskööl di brüker hiirt:
+* En uunkrüsagt kasche ment, di brüker hiirt diartu.
+* En ei uunkrüsagt kasche ment, di brüker hiart ei diartu.
+* En * ment, dat dü det brükerrocht ei weder wechnem könst (of amkiard).',
+'userrights-reason' => 'Grünj:',
+'userrights-no-interwiki' => 'Dü heest ei det rocht, am brükerrochten uun ööder wikis tu feranerin.',
+'userrights-nodatabase' => 'Det dootenbeenk $1 jaft at ei, tumanst ei lokaal.',
+'userrights-nologin' => 'Dü mutst di mä en administraator-brükerkonto [[Special:UserLogin|uunmelde]], wan dü brükerrochten feranere wel.',
+'userrights-notallowed' => 'Dü heest ei det rocht, am brükerrochten tu feranerin.',
+'userrights-changeable-col' => 'Lasmootskapen, diar dü feranere könst',
+'userrights-unchangeable-col' => 'Lasmootskapen, diar dü ei feranere könst',
 
 # Groups
+'group' => 'Skööl:',
 'group-user' => 'Brükere',
 'group-autoconfirmed' => 'Registriirde brükere',
 'group-bot' => 'Bots',
 'group-sysop' => 'Administratoore',
 'group-bureaucrat' => 'Bürokraate',
 'group-suppress' => 'Oversighter',
+'group-all' => '(aaltumaal)',
 
 'group-user-member' => '{{GENDER:$1|brüker}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|gudkäänd brüker}}',
@@ -1158,6 +1220,31 @@ Do san jo ual iinstelangen wech.',
 'grouppage-suppress' => '{{ns:project}}:Oversighter',
 
 # Rights
+'right-read' => 'Sidjen lees',
+'right-edit' => 'Sidjen bewerke',
+'right-createpage' => 'Sidjen maage (saner diskusjuunssidjen)',
+'right-createtalk' => 'Diskusjuunssidjen maage',
+'right-createaccount' => 'Brükerkonto iinracht',
+'right-minoredit' => 'Feranerangen üs letj kääntiakne.',
+'right-move' => 'Sidjen fersküüw',
+'right-move-subpages' => 'Sidjen mä onersidjen fersküüw',
+'right-move-rootuserpages' => 'Hood-brükersidj fersküüw',
+'right-movefile' => 'Dateien fersküüw',
+'right-suppressredirect' => "Bi't fersküüwen nian widjerfeerang iinracht",
+'right-upload' => 'Dateien huuchsjüür',
+'right-reupload' => 'Dateien auerskriiw',
+'right-reupload-own' => 'En datei auerskriiw, diar dü salew huuchsjüürd heest',
+'right-reupload-shared' => 'En datei auerskriiw, diar uun en gemiansoom archiif leit',
+'right-upload_by_url' => 'Dateien faan en URL-adress huuchsjüür',
+'right-purge' => 'Sidjen-cache leesag maage saner efterfraagin',
+'right-autoconfirmed' => 'Hualew-seekert sidjen bewerke',
+'right-bot' => 'Automatisiaret bewerke',
+'right-nominornewtalk' => 'Letj feranerangen üüb diskusjuunssidjen wurd ei üs „nei noorachten“ uunwiset.',
+'right-apihighlimits' => 'Huuger taalen für API-uunfraagen brük',
+'right-writeapi' => 'Write-API brük',
+'right-delete' => 'Sidjen strik',
+'right-bigdelete' => 'Sidjen mä föl wersjuunen strik',
+'right-deleterevision' => 'Enkelt wersjuunen faan en sidj strik of turaghaale',
 'right-sendemail' => 'E-mails tu oudere brükere schake',
 
 # User rights log
@@ -1169,6 +1256,7 @@ Do san jo ual iinstelangen wech.',
 'action-createpage' => 'side mååge',
 'action-createtalk' => 'diskusjoonside mååge',
 'action-createaccount' => 'jüdeer brükerkonto mååge',
+'action-minoredit' => 'detdiar feranerang üs letj kääntiakne',
 'action-move' => 'jüdeer sid ferschüwe',
 'action-move-subpages' => 'jüdeer sid än unerside ferschüwe',
 'action-movefile' => 'jüdeer sid ferschüwe',
@@ -1177,7 +1265,7 @@ Do san jo ual iinstelangen wech.',
 'nchanges' => '$1 {{PLURAL:$1|änring|änringe}}',
 'recentchanges' => 'Leeste änringe',
 'recentchanges-legend' => 'Wis-opsjoone',
-'recentchanges-summary' => "Üüb detheer sidj könst dü a leetst feranerangen faan '''{{SITENAME}}''' ferfulge.",
+'recentchanges-summary' => "Üüb detheer sidj könst dü a leetst feranerangen faan't Nuurdfresk Wikipedia ferfulge.",
 'recentchanges-feed-description' => 'Ferfülie ma dåtheer feed da leeste änringe önj {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Nei sidj uunlaanj',
 'recentchanges-label-minor' => 'Letj feranerang',
@@ -1395,8 +1483,8 @@ Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jü
 'restriction-upload' => 'Huuchsjüür',
 
 # Restriction levels
-'restriction-level-sysop' => 'seekerd (bluas för administratooren)',
-'restriction-level-autoconfirmed' => 'hualew seekerd (bluas för gudkäänd brükern)',
+'restriction-level-sysop' => 'seekert (bluas för administratooren)',
+'restriction-level-autoconfirmed' => 'hualew-seekert (bluas för gudkäänd brükern)',
 'restriction-level-all' => 'aaltumaal',
 
 # Undelete
index e4f32ab..2fe2c25 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Friulian (Furlan)
+/** Friulian (furlan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index c09e27e..8e3c271 100644 (file)
@@ -1206,7 +1206,7 @@ Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwi
 'nchanges' => '$1 {{PLURAL:$1|bewurking|bewurkings}}',
 'recentchanges' => 'Koartlyn feroare',
 'recentchanges-legend' => 'Opsjes foar resinte feroarings',
-'recentchangestext' => 'De lêste feroarings fan de {{SITENAME}}.',
+'recentchanges-summary' => 'De lêste feroarings fan de {{SITENAME}}.',
 'recentchanges-feed-description' => 'Mei dizze feed kinne jo de nijste feroarings yn dizze wiki besjen.',
 'recentchanges-label-newpage' => 'Mei dizze wiziging is in nije side makke',
 'recentchanges-label-minor' => 'Dit is in tekstwiziging',
index f497826..f9ea105 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Simplified Gan script (‪赣语(简体)‬)
+/** Simplified Gan script (‪赣语(简体)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -16,6 +16,7 @@
  * @author Symane
  * @author Urhixidur
  * @author Vipuser
+ * @author Xiaomingyan
  */
 
 $fallback = 'zh-hans';
@@ -887,7 +888,7 @@ $2',
 'nchanges' => '$1道改动',
 'recentchanges' => '最晏𠮶改动',
 'recentchanges-legend' => '个朝子𠮶更改选项',
-'recentchangestext' => '跟到个只wiki上𠮶最新改动。',
+'recentchanges-summary' => '跟到个只wiki上𠮶最新改动。',
 'recentchanges-feed-description' => '跟到个只 wiki 上集合𠮶最后改动。',
 'recentchanges-label-newpage' => '个只编辑会建立只新页',
 'recentchanges-label-minor' => '个系只细修改',
@@ -1074,7 +1075,7 @@ $2',
 ** 档案重复',
 
 # MIME search
-'mimesearch' => 'MIME 搜索',
+'mimesearch' => 'MIME搜索',
 'mimesearch-summary' => '个只页面启用档案MIME类型筛检程式。输入:内容类型/子类型,像 <tt>image/jpeg</tt>。',
 'mimetype' => 'MIME 类型:',
 'download' => '下载',
index dbceb31..c50da29 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Traditional Gan script (‪贛語(繁體)‬)
+/** Traditional Gan script (‪贛語(繁體)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -910,7 +910,7 @@ $2',
 'nchanges' => '$1道改動',
 'recentchanges' => '最晏嗰改動',
 'recentchanges-legend' => '箇晝子嗰更改選項',
-'recentchangestext' => '跟到箇隻wiki上嗰最新改動。',
+'recentchanges-summary' => '跟到箇隻wiki上嗰最新改動。',
 'recentchanges-feed-description' => '跟到箇隻 wiki 上集合嗰最後改動。',
 'recentchanges-label-newpage' => '箇隻編輯會建立隻新頁',
 'recentchanges-label-minor' => '箇係隻細修改',
index 5a6a52b..8d25e60 100644 (file)
@@ -696,7 +696,7 @@ Mìneachadh: '''({{int:cur}})''' = an diofar eadar e 's am mùthadh as ùire, ''
 'revertmerge' => 'Dì-aontaich',
 
 # Diffs
-'history-title' => 'Eachdraidh nam mùthaidhean de "$1"',
+'history-title' => 'Eachdraidh nam mùthaidhean aig "$1"',
 'lineno' => 'Loidhne $1:',
 'compareselectedversions' => 'Dèan coimeas eadar na mùthaidhean a thagh thu',
 'editundo' => 'neo-dhèan',
@@ -796,7 +796,7 @@ Chan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.
 'nchanges' => '{{PLURAL:$1|mhùthadh|mhùthadh|mhùthadh|mhùthadh|mùthaidhean|mùthadh}}',
 'recentchanges' => 'Mùthaidhean ùra',
 'recentchanges-legend' => 'Roghainnean nam mùthaidhean ùra',
-'recentchangestext' => 'Cum sùil air na mùthaidhean as ùire a nithear air an uici air an duilleag seo.',
+'recentchanges-summary' => 'Cum sùil air na mùthaidhean as ùire a nithear air an uici air an duilleag seo.',
 'recentchanges-feed-description' => 'Cum sùil air na mùthaidhean as ùire a nithear air an uici seo san inbhir seo.',
 'recentchanges-label-newpage' => 'Chruthaich thu duilleag ùr leis a sin',
 'recentchanges-label-minor' => 'Seo mùthadh beag',
index 1266907..30fea4a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Galician (Galego)
+/** Galician (galego)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -229,7 +229,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Agochar as edicións patrulladas nos cambios recentes',
 'tog-newpageshidepatrolled' => 'Agochar as páxinas revisadas da lista de páxinas novas',
 'tog-extendwatchlist' => 'Expandir a lista de vixilancia para mostrar todos os cambios e non só os máis recentes',
-'tog-usenewrc' => 'Usar os cambios recentes avanzados (cómpre JavaScript)',
+'tog-usenewrc' => 'Agrupar as modificacións por páxina nos cambios recentes e na lista de vixilancia (cómpre JavaScript)',
 'tog-numberheadings' => 'Numerar automaticamente as cabeceiras',
 'tog-showtoolbar' => 'Mostrar a caixa de ferramentas de edición (cómpre JavaScript)',
 'tog-editondblclick' => 'Editar as páxinas logo de facer dobre clic (cómpre JavaScript)',
@@ -1298,6 +1298,7 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-beta' => 'Características en probas',
 'prefs-datetime' => 'Data e hora',
 'prefs-labs' => 'Características experimentais',
+'prefs-user-pages' => 'Páxinas de usuario',
 'prefs-personal' => 'Información do usuario',
 'prefs-rc' => 'Cambios recentes',
 'prefs-watchlist' => 'Lista de vixilancia',
@@ -1308,7 +1309,7 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-watchlist-token' => 'Pase para a lista de vixilancia:',
 'prefs-misc' => 'Preferencias varias',
 'prefs-resetpass' => 'Cambiar o contrasinal',
-'prefs-changeemail' => 'Cambiar o correo electrónico',
+'prefs-changeemail' => 'Cambiar o enderezo de correo electrónico',
 'prefs-setemail' => 'Establecer un enderezo de correo electrónico',
 'prefs-email' => 'Opcións de correo electrónico',
 'prefs-rendering' => 'Aparencia',
@@ -1559,8 +1560,8 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
 'nchanges' => '$1 {{PLURAL:$1|cambio|cambios}}',
 'recentchanges' => 'Cambios recentes',
 'recentchanges-legend' => 'Opcións dos cambios',
-'recentchanges-summary' => 'Siga, nesta páxina, as modificacións máis recentes no wiki.',
-'recentchanges-feed-description' => 'Nesta fonte de novas pode seguir os cambios máis recentes no wiki.',
+'recentchanges-summary' => 'Nesta páxina pode seguir as modificacións máis recentes feitas no wiki.',
+'recentchanges-feed-description' => 'Nesta fonte de novas pode seguir as modificacións máis recentes feitas no wiki.',
 'recentchanges-label-newpage' => 'Esta edición creou unha nova páxina',
 'recentchanges-label-minor' => 'Esta é unha edición pequena',
 'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
@@ -2102,6 +2103,7 @@ Por favor, teña en conta que outras páxinas web poden ligar cara a un ficheiro
 Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario ou o título da páxina afectada.',
 'logempty' => 'Non se atopou ningún elemento relacionado no rexistro.',
 'log-title-wildcard' => 'Procurar os títulos que comecen con este texto',
+'showhideselectedlogentries' => 'Mostrar/agochar as entradas do rexistro seleccionadas',
 
 # Special:AllPages
 'allpages' => 'Todas as páxinas',
@@ -2846,7 +2848,7 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importunknownsource' => 'Fonte de importación descoñecida',
 'importcantopen' => 'Non se pode abrir o ficheiro importado',
 'importbadinterwiki' => 'Ligazón interwiki incorrecta',
-'importnotext' => 'Texto baleiro ou inexistente',
+'importnotext' => 'Baleiro ou sen texto',
 'importsuccess' => 'A importación rematou!',
 'importhistoryconflict' => 'Existe un conflito no historial de revisións (por ter importado esta páxina antes)',
 'importnosources' => 'Non se defininiu ningunha fonte de importación transwiki e os envíos directos dos historiais están desactivados.',
@@ -2856,8 +2858,8 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importuploaderrortemp' => 'Fallou o envío do ficheiro de importación. Falta un cartafol temporal.',
 'import-parse-failure' => 'Fallo de análise da importación de XML',
 'import-noarticle' => 'Ningunha páxina para importar!',
-'import-nonewrevisions' => 'Todas as revisións son previamente importadas.',
-'xml-error-string' => '$1 na liña $2, col $3 (byte $4): $5',
+'import-nonewrevisions' => 'Todas as revisións foron importadas previamente.',
+'xml-error-string' => '$1 na liña $2, columna $3 (byte $4): $5',
 'import-upload' => 'Cargar datos XML',
 'import-token-mismatch' => 'Perdéronse os datos da sesión. Por favor, inténteo de novo.',
 'import-invalid-interwiki' => 'Non se pode importar desde o wiki escificado.',
@@ -3012,8 +3014,9 @@ Pode ver o código fonte.',
 Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.',
 'spamprotectionmatch' => 'O seguinte texto foi o que activou o noso filtro de spam: $1',
 'spambot_username' => 'Limpeza de spam de MediaWiki',
-'spam_reverting' => 'Revertida á última edición sen ligazóns a $1',
+'spam_reverting' => 'Revertida á última edición sen ligazóns a "$1"',
 'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
+'spam_deleting' => 'Borráronse todas as revisións con ligazóns a "$1"',
 
 # Info page
 'pageinfo-title' => 'Información sobre "$1"',
@@ -3505,7 +3508,7 @@ Os demais agocharanse por omisión.
 
 'exif-isospeedratings-overflow' => 'Superior a 65535',
 
-'exif-iimcategory-ace' => 'Arte, cultura e entretemento',
+'exif-iimcategory-ace' => 'Arte, cultura e lecer',
 'exif-iimcategory-clj' => 'Crime e dereito',
 'exif-iimcategory-dis' => 'Desastres e accidentes',
 'exif-iimcategory-fin' => 'Economía e negocios',
@@ -3735,8 +3738,8 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'version-entrypoints' => 'Enderezos URL de punto de entrada',
 'version-entrypoints-header-entrypoint' => 'Punto de entrada',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Ruta do artigo]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta da escritura]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Ruta dos artigos]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta das escrituras]',
 
 # Special:FilePath
 'filepath' => 'Ruta do ficheiro',
@@ -3935,4 +3938,6 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Non se puideron obter os peches no servidor $1.',
 );
index 7a564ab..5733ff5 100644 (file)
@@ -31,6 +31,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Ñemohenda_myangekõi',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline'       => 'Haiguy joajuha',
index f0467fc..8abcd89 100644 (file)
@@ -1097,7 +1097,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|μεταβολή|μεταβολαί}}',
 'recentchanges' => 'Αἱ νέαι μεταβολαί',
 'recentchanges-legend' => 'Ἐπιλογαὶ προσφάτων μεταβολῶν',
-'recentchangestext' => 'Ἀνιχνεύσειν τὰς πλείω πρόσφατους ἀλλαγὰς οῦ βίκι ἐν τῇδε τῇ δέλτῳ.',
+'recentchanges-summary' => 'Ἀνιχνεύσειν τὰς πλείω πρόσφατους ἀλλαγὰς οῦ βίκι ἐν τῇδε τῇ δέλτῳ.',
 'recentchanges-feed-description' => 'Παρακολουθεῖν τὰς πλείω προσφάτους ἀλλαγὰς τοῦ βίκι ἐν ταύτῃ περιλήψει.',
 'recentchanges-label-newpage' => 'Ἥδε ἡ μεταγραφὴ ἐποίησεν νέαν δέλτον τινά',
 'recentchanges-label-minor' => 'Ἥδε μικρὰ μεταγραφή ἐστιν',
index 254869b..69f8b78 100644 (file)
@@ -518,6 +518,8 @@ Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''
 'filereadonlyerror' => 'D Datei „$1“ cha nit gänderet wäre, wel uf s Dateirepositorium „$2“ nume Läsezuegriff megli isch.
 
 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“',
 
 # Virus scanner
 'virus-badscanner' => "Fählerhafti Konfiguration: Virescanner, wu nid bekannt isch: ''$1''",
@@ -804,6 +806,7 @@ As Information chunnt do ne aktuälle Uuszug us em Benutzersperr-Logbuech:',
 'note' => "'''Obacht: '''",
 'previewnote' => "'''Das isch numen e Vorschau und nonig gspycheret!'''
 Die Syte isch nonig gspycheret wore!",
+'continue-editing' => 'Wyter bearbeite',
 'previewconflict' => 'Die Vorschau zeigt dr Inhalt vum obere Täxtfäld. Eso siht dr Artikel us, wän Du jetz uf Spychere drucksch.',
 'session_fail_preview' => "'''Dyyni Bearbeitig het nid chenne gspycheret wäre, wel Sitzigsdate verlore gange sin.
 Bitte versuech s nomol. Derzue drucksch unter däre Täxtvorschau nomol uf „Syte spychere“.
@@ -895,6 +898,12 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
 'parser-template-loop-warning' => 'Vorlagelätsch entdeckt: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Vorlagerekursionstiefegränz iberschritte ($1)',
 'language-converter-depth-warning' => 'Gränz vu dr Sprochkonvertertiefi iberschritte ($1)',
+'node-count-exceeded-category' => 'Syte, wo d Chnotezaal überschritte hen',
+'node-count-exceeded-warning' => 'Die Syte het d Chnotepunktzaal überschritte.',
+'expansion-depth-exceeded-category' => 'Syte, wo d Expansionsdiefi überschritte hen',
+'expansion-depth-exceeded-warning' => 'Die Syte het d Expansionsdiefi überschritte.',
+'parser-unstrip-loop-warning' => 'Zirkelbezug festgstellt',
+'parser-unstrip-recursion-limit' => 'Rekursionsgränz bim Ufflöse überschritte ($1)',
 
 # "Undo" feature
 'undo-success' => 'Zum die Änderig ruckgängig z mache, kontrollier bitte d Bearbeitig in dr Verglichsaasicht un druck derno uf „Syte spichere“.',
@@ -1068,7 +1077,9 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'mergelogpagetext' => 'Des isch e Lischt vu dr letschte Zämefierige vu Versionsgschichte.',
 
 # Diffs
-'history-title' => 'Versionsgschicht vo „$1“',
+'history-title' => '$1: Versionsgschicht',
+'difference-title' => '$1: Unterschid zwüsche de Versione',
+'difference-title-multipage' => '$1 un $2: Unterschid zwüsche de Syte',
 'difference-multipage' => '(Unterschid zwische Syte)',
 'lineno' => 'Zyle $1:',
 'compareselectedversions' => 'Usgwählti Versione verglyche',
@@ -1163,6 +1174,7 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'prefs-beta' => 'Betafunktione',
 'prefs-datetime' => 'Datum un Zyt',
 'prefs-labs' => 'Alphafunktione',
+'prefs-user-pages' => 'Benutzersyte',
 'prefs-personal' => 'Benutzerdate',
 'prefs-rc' => 'Letschti Änderige',
 'prefs-watchlist' => 'Beobachtigslischte',
@@ -1615,14 +1627,15 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
 'backend-fail-writetemp' => 'Di temporär Datei het nit chenne gschribe wäre.',
 'backend-fail-closetemp' => 'Di temporär Datei het nit chenne zuegmacht wäre.',
 'backend-fail-read' => 'D Datei $1 het nit chenne gläse wäre.',
-'backend-fail-create' => 'D Datei $1 het nit chenne aagleit wäre.',
-'backend-fail-maxsize' => 'D Datei $1 het nit chenne aalgeit wäre, wel si greßer isch wie {{PLURAL:$2|ei Byte|$2 Byte}}.',
+'backend-fail-create' => 'D Datei $1 het nit chenne gspyycheret wäre.',
+'backend-fail-maxsize' => 'D Datei $1 het nit chenne gspycheret wäre, wel si greßer isch wie {{PLURAL:$2|ei Byte|$2 Byte}}.',
 'backend-fail-readonly' => 'S Spycher-Backend „$1“ isch zurzyt im Läsemodus. Dr Grund, wu aagee isch, isch: „$2“',
 'backend-fail-synced' => 'D Datei „$1“ isch im intärne Spycher-Backend in eme inkonsischtänte Zuestand.',
 'backend-fail-connect' => 'S het kei Verbindig chenne härgstellt wäre zum Spycher-Backend „$1“.',
 'backend-fail-internal' => 'Im Spycher-Backend „$1“ isch e nit bekannte Fähler ufträtte.',
 'backend-fail-contenttype' => 'Dr Inhaltstyp vu dr Datei, wu im Pfad „$1“ gspycheret soll wäre, het nit chenne bstimmt wäre.',
 'backend-fail-batchsize' => 'E Bygiverarbeitigsdatei, wu s {{PLURAL:$1|ei Operation|$1 Operatione}} din het, isch an s Spycher-Backend gschickt wore. D Gränz lyt aber bi {{PLURAL:$2|eire Operation|$2 Operatione}}.',
+'backend-fail-usable' => 'D Datei $1 het nit chönne gspyycheret werde, entweder wyl kei Verzeichniss vorhande isch oder wyl kei Berächtigung hesch.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'S het kei Verbindig chenne härgstellt würe zue dr Journaldatebank vum Spycher-Backend „$1“.',
index 2f98fe0..f6d58d5 100644 (file)
@@ -350,7 +350,7 @@ $messages = array(
 'newpage' => 'નવું પાનું',
 'talkpage' => 'આ પાના વિષે ચર્ચા કરો',
 'talkpagelinktext' => 'ચર્ચા',
-'specialpage' => 'ખાસ પાનુ',
+'specialpage' => 'ખાસ પાનુ',
 'personaltools' => 'વ્યક્તિગત સાધનો',
 'postcomment' => 'નવો વિભાગ',
 'articlepage' => 'લેખનું પાનું જુઓ',
@@ -902,7 +902,7 @@ $2
 'nocreatetitle' => 'પાનું બનાવવૌં મર્યાદિત છે',
 'nocreatetext' => '{{SITENAME}}માં નવું પાનુ બનાવવા ઉપર નિયંત્રણ આવી ગયું છે.
 <br />આપ પાછા જઇને હયાત પાનામાં ફેરફાર કરી શકો છો, નહિતર [[Special:UserLogin|પ્રવેશ કરો કે નવું ખાતું ખોલો]].',
-'nocreate-loggedin' => 'તમને નવા પાના રચવાની પરવાનગી નથી.',
+'nocreate-loggedin' => 'તમને નવાં પાનાં બનાવવાની પરવાનગી નથી.',
 'sectioneditnotsupported-title' => 'ખંડીય સંપાદન શક્ય નથી',
 'sectioneditnotsupported-text' => 'આ પાના પર ખંડીય સંપાદન શક્ય નથી',
 'permissionserrors' => 'પરવાનગીની ખામી',
@@ -1480,7 +1480,7 @@ HTML નાકું ચકાસો',
 'nchanges' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
 'recentchanges' => 'તાજા ફેરફારો',
 'recentchanges-legend' => 'હાલમાં થયેલા ફેરફારોના વિકલ્પ',
-'recentchanges-summary' => 'àª\86 àªªàª¾àª¨àª¾ àª¦à«\8dવારા àªµàª¿àª\95િમાàª\82 àª¥àª¯à«\87લા àª¤àª¾àª\9cા àª«à«\87રફારà«\8b àªªàª° àª§à«\8dયાન રાખો.',
+'recentchanges-summary' => 'વિàª\95િમાàª\82 àª¤àª¾àª\9cà«\87તરમાàª\82 àª¥àª¯à«\87લા àª«à«\87રફારà«\8b àªªàª° àª\85હિàª\82થà«\80 àª¨àª\9cર રાખો.',
 'recentchanges-feed-description' => 'આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.',
 'recentchanges-label-newpage' => 'આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું',
 'recentchanges-label-minor' => 'આ એક નાનો સુધારો છે.',
@@ -1662,7 +1662,7 @@ $1',
 'upload-too-many-redirects' => 'URLમાં ઘણાં ઉપ નિર્દેશનો છે.',
 'upload-unknown-size' => 'અજ્ઞાત કદ',
 'upload-http-error' => ' HTTP ત્રુટિ : $1',
-'upload-copy-upload-invalid-domain' => 'આ વેબસાઇટ પર થી ફાયલ નહી ચડાવાય',
+'upload-copy-upload-invalid-domain' => 'આ વેબસાઇટ પરથી ફાઈલ નહીં ચડાવાય.',
 
 # File backend
 'backend-fail-stream' => 'ફાઈલ $1 ને લાવી ન શકાઈ.',
@@ -1680,7 +1680,7 @@ $1',
 'backend-fail-writetemp' => 'હંગામી ફાઇલમાં લખી ન શકાયું.',
 'backend-fail-closetemp' => 'હંગામી ફાઇલ બંધ ન કરી શકાઇ',
 'backend-fail-read' => 'ફાઈલ $1 ને વાંચી ન શકાઈ.',
-'backend-fail-create' => 'ફાàª\88લ $1 àª¨à«\87 àª¬àª¨àª¾àªµà«\80 àª¶àª\95ાàª\88.',
+'backend-fail-create' => 'ફાàª\88લ $1 àª²àª\96à«\80 àª¶àª\95ાàª\88 àª¨àª¹à«\80àª\82.',
 'backend-fail-readonly' => 'સંગ્રહ પાર્શ્વભૂમિ  "$1" એ હાલમાં માત્ર વાંચન સક્ષમ છે. તેનું કારણ આપવામાં આવ્યું હતું: "$2"',
 'backend-fail-synced' => 'ફાઈલ "$1"  અંતરિક સ્ટોરેજ બેકઍંડ માં એક અસંગત સ્થિતિમાં છે',
 'backend-fail-connect' => 'સંગ્રહ પૃષ્ઠભૂમિ "$1" સાથે સંપર્ક સ્થાપી ના શકાયો.',
@@ -1897,7 +1897,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 તેના કરતા તેને યોગ્ય તે વિષ્ય સાથે જોડાયેલા હોવા જોઇએ.<br />
 આ પાનાને સંદિગ્ધ  વાક્યો વાળા પાના ત્યારે કહી શકાય જ્યારે તે [[MediaWiki:Disambiguationspage]] નામના ઢાંચા સાથે જોડાયેલા હોય.",
 
-'doubleredirects' => 'બનણà«\81àª\82 àª¦àª¿àª¶àª¾àª¨àª¿àª°à«\8dદà«\87શિત',
+'doubleredirects' => 'બમણà«\81àª\82 àª¦àª¿àª¶àª¾àª¨àª¿àª°à«\8dદà«\87શન',
 'doubleredirectstext' => 'આ પાનું દિશા નિર્દેશિત પાના પર થયેલા દિશા નિર્દેશિત પાનાની યાદિ બતાવે છે.
 દરેક લિટીમાં પાના પ્રથમ અને દ્વીતીય દિશા નિર્દેશન ક્ડી બતાવે છે, તે સિવાય દ્વીતીય દિશા નિર્દેશનનું લક્ષ્ય પણ બતાવે છે કે મોટે ભાગે મૂળ પાનું હોઇ શકે છેૢ જેના પર પ્રથમ દિશા નિર્દેશન લક્ષિત છે. <del>Crossed out</del> લિટીઓ  નો ઉત્તર મેળવાયો છે.',
 'double-redirect-fixed-move' => '[[$1]] હટાવી દેવાયું છે.
@@ -1968,9 +1968,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'listusers-creationsort' => 'તારીખ અનુસાર ગોઠવો',
 'usereditcount' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
 'usercreated' => '$1 તારીખે $2 વાગ્યે {{GENDER:$3|બનાવ્યું}}',
-'newpages' => 'નવા પાના',
+'newpages' => 'નવાં પાનાં',
 'newpages-username' => 'સભ્ય નામ:',
-'ancientpages' => 'સૌથી જૂનાં પાના',
+'ancientpages' => 'સૌથી જૂનાં પાના',
 'move' => 'નામ બદલો',
 'movethispage' => 'આ પાનું ખસેડો',
 'unusedimagestext' => 'નીચેની ફાઇલો અસ્તિત્વમાં તો છે પણ કોઇ પાના પર તેનો ઉપયોગ થયેલ નથી.
@@ -2002,6 +2002,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 તમે લોગનો પ્રકાર,સભ્ય નામ અથવા અસરગ્રસ્ત પાના આદિ પસંદ કરી તમારી યાદિ ટૂંકાવી શકો.',
 'logempty' => 'લોગમાં આને મળતી કોઇ વસ્તુ નથી',
 'log-title-wildcard' => 'આ શબ્દો દ્વારા શરૂ થનાર શીર્ષકો શોધો',
+'showhideselectedlogentries' => 'પસંદગીની લોગ નોંધણીઓ બતાવો/છૂપાવો',
 
 # Special:AllPages
 'allpages' => 'બધા પાના',
@@ -2016,10 +2017,14 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'allpagesprev' => 'પહેલાનું',
 'allpagesnext' => 'પછીનું',
 'allpagessubmit' => 'જાઓ',
-'allpagesprefix' => 'પà«\82રà«\8dવરà«\8dàª\97 àª§àª°àª¾àªµàª¤àª¾ àªªàª¾àª¨àª¾ શોધો',
+'allpagesprefix' => 'àª\89પસરà«\8dàª\97 àª§àª°àª¾àªµàª¤àª¾ àªªàª¾àª¨àª¾àª\82 શોધો',
 'allpagesbadtitle' => 'આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.
 શક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.',
 'allpages-bad-ns' => '{{SITENAME}} ને નામસ્થળ  "$1" નથી.',
+'allpages-hide-redirects' => 'અન્યત્ર વાળેલાં પાનાંઓ છૂપાવો',
+
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'આધૂનિક બતાવો.',
 
 # Special:Categories
 'categories' => 'શ્રેણીઓ',
@@ -2047,17 +2052,17 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'linksearch-error' => 'યજમાન નામની શરૂઆતમાં જ વાઈલ્ડકાર્ડ પ્રકટ થશે',
 
 # Special:ListUsers
-'listusersfrom' => 'àª\85હà«\80àª\82થà«\80 àª¸àª­à«\8dયà«\8b àª¬àª¤àª¾àªµà«\8b',
+'listusersfrom' => 'àª\86નાથà«\80 àª¶àª°à«\82 àª¥àª¤àª¾ àª¸àª­à«\8dયà«\8b àª¦àª°à«\8dશાવà«\8b:',
 'listusers-submit' => 'બતાવો',
 'listusers-noresult' => 'કોઇ સભ્ય ન મળ્યો',
 'listusers-blocked' => '(પ્રતિબંધિત)',
 
 # Special:ActiveUsers
-'activeusers' => 'સàª\95à«\8dરà«\80યા àª¸àª­à«\8dય àª\9bà«\81પાવà«\8b',
-'activeusers-intro' => 'àª\9bà«\87લà«\8dલા  $1 {{PLURAL:$1|દિવસ|દિવસà«\8b}}માàª\82 àª\9cà«\87 àª¸àª­à«\8dયà«\8bàª\8f àª\95à«\8bàª\87àª\95 àª¯à«\8bàª\97દાન àª\95રà«\8dયà«\81àª\82 àª¹à«\8bય àª¤à«\87મનà«\80 àª¯àª¾àª¦àª¿.',
+'activeusers' => 'સàª\95à«\8dરિય àª¸àª­à«\8dયà«\8bનà«\80 àª¯àª¾àª¦à«\80',
+'activeusers-intro' => 'àª\9bà«\87લà«\8dલા  $1 {{PLURAL:$1|દિવસ|દિવસà«\8b}}માàª\82 àª\9cà«\87 àª¸àª­à«\8dયà«\8bàª\8f àª\95àª\82àª\88àª\95 àª¯à«\8bàª\97દાન àª\95રà«\8dયà«\81àª\82 àª¹à«\8bય àª¤à«\87મનà«\80 àª¯àª¾àª¦à«\80.',
 'activeusers-count' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}} છેલ્લા {{PLURAL:$3|દિવસ |$3 દિવસો }}માં',
 'activeusers-from' => 'આનાથી શરૂ થતા સભ્યો દર્શાવો:',
-'activeusers-hidebots' => 'બà«\8bàª\9fનà«\87 àª¸àª\82તાડો',
+'activeusers-hidebots' => 'બà«\8bàª\9fનà«\87 àª\9bà«\81પાવો',
 'activeusers-hidesysops' => 'પ્રબંધકો છુપાવો',
 'activeusers-noresult' => 'કોઇ સક્રીય સભ્ય ન મળ્યો',
 
@@ -2132,7 +2137,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 ભવિષ્યમાં આ પાના અને તેનાં સંલગ્ન ચર્ચાનાં પાનામાં થનારા ફેરફારોની યાદી ત્યાં આપવામાં આવશે અને આ પાનું [[Special:RecentChanges|તાજેતરમાં થયેલા ફેરફારોની યાદી]]માં ઘાટા અક્ષરે જોવા મળશે, જેથી આપ સહેલાઇથી તેને અલગ તારવી શકો.',
 'removewatch' => 'ધ્યાનસૂચિમાંથી કાઢી નાખો',
 'removedwatchtext' => '"[[:$1]]" શીર્ષક હેઠળનું પાનું [[Special:Watchlist|તમારી ધ્યાનસૂચિમાંથી]] કાઢી નાંખવામાં આવ્યું છે.',
-'watch' => 'ધ્યાન માં રાખો',
+'watch' => 'ધ્યાનમાં રાખો',
 'watchthispage' => 'આ પાનું ધ્યાનમાં રાખો',
 'unwatch' => 'ધ્યાનસૂચિમાંથી હટાવો',
 'unwatchthispage' => 'નીરીક્ષણ બંધ કરો',
@@ -2140,7 +2145,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'notvisiblerev' => 'અન્ય સભ્ય દ્વારા થયેલું સંપાદન ભૂંસી નખાયું છે.',
 'watchnochange' => 'તમારા દ્વારા નિરીક્ષિત પાના આપેલ સમય ગાળામાં ફેરફારીત થયા',
 'watchlist-details' => 'ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.',
-'wlheader-enotif' => '*ઈ-મેલા સૂચના પદ્ધતિ સક્રીય કરાઈ',
+'wlheader-enotif' => '*ઈ-મેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.',
 'wlheader-showupdated' => "*તમારી મુલાકાત લીધા પછી બદલાયેલા પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે",
 'watchmethod-recent' => 'હાલમાં ફેરફાર થયેલ પાનાની ચકાસણી જારી',
 'watchmethod-list' => 'હાલમાં થયેલ ફેરફાર માટે નીરીક્ષીત પાના તપાસાય છે',
@@ -2208,7 +2213,7 @@ $UNWATCHURL
 'historywarning' => "'''ચેતવણી:''' જે પાનું તમે હટાવવા જઇ રહ્યાં છો તેને આશરે $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}નો ઇતિહાસ છે:",
 'confirmdeletetext' => 'આપ આ પાનું તેના ઇતિહાસ (બધાજ પૂર્વ  ફેરફારો) સાથે હટાવી રહ્યાં છો.
 કૃપા કરી મંજૂરી આપો કે, આપ આમ કરવા ચાહો છો, આપ આના સરા-નરસા પરિણામોથી વાકેફ છો, અને આપ આ કૃત્ય [[{{MediaWiki:Policy-url}}|નીતિ]]ને અનુરૂપ જ કરી રહ્યાં છો.',
-'actioncomplete' => 'àª\95ામ àªªà«\82રà«\81àª\82 àª¥àª\88 àª\97યà«\81àª\82',
+'actioncomplete' => 'àª\95ામ àªªà«\82રà«\8dણ',
 'actionfailed' => 'કાર્ય અસફળ',
 'deletedtext' => '"$1" દૂર કરવામાં આવ્યું છે.
 તાજેતરમાં દૂર કરેલા લેખોની વિગત માટે $2 જુઓ.',
@@ -2414,7 +2419,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'sp-contributions-submit' => 'શોધો',
 
 # What links here
-'whatlinkshere' => 'àª\85હિયાàª\82 àª¶à«\81àª\82 àª\9cà«\8bડાય àª\9bà«\87',
+'whatlinkshere' => 'અહિં શું જોડાય છે',
 'whatlinkshere-title' => '"$1" સાથે જોડાયેલાં પાનાં',
 'whatlinkshere-page' => 'પાનું:',
 'linkshere' => "નીચેના પાનાઓ '''[[:$1]]''' સાથે જોડાય છે:",
@@ -2623,7 +2628,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'moveuserpage-warning' => "'''ચેતવણી :''' તમે સભ્યનું પાનું હટાવી રહ્યાં છો.  કૃપયા યાદરાખશો કે માત્ર પાનું જ હટાવીશકાશે અને સભ્ય્ને નૂતન નામ નહીં અપાય.",
 'movenologin' => 'પ્રવેશ કરેલ નથી',
 'movenologintext' => 'કોઇ પાનું હટાવવા માટે તેમે નોંધણી કૃત સભ્ય અને [[Special:UserLogin|logged in]]  હોવા જોઇએ',
-'movenotallowed' => 'તમનà«\87 àª¨àªµàª¾ àªªàª¾àª¨àª¾ ખસેડવાની પરવાનગી નથી.',
+'movenotallowed' => 'તમનà«\87 àªªàª¾àª¨àª¾àª\82 ખસેડવાની પરવાનગી નથી.',
 'movenotallowedfile' => 'તમને ફાઈલ ખસેડવાની પરવાનગી નથી.',
 'cant-move-user-page' => 'તમને સભ્ય પાના હટાવવાની પરવાનગી નથી (ઉપપાના સિવાય).',
 'cant-move-to-user-page' => 'તમને   કોઇ પાનાને સભ્ય પાનામાં ખસેડવાની પ્રવાનગી નથી (સિવાય કે સભ્ય ઉપપાના)',
@@ -2717,7 +2722,7 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'allmessages-filter-unmodified' => 'અસંપાદિત',
 'allmessages-filter-all' => 'બધા',
 'allmessages-filter-modified' => 'સુધારીત',
-'allmessages-prefix' => 'પà«\82રà«\8dવરà«\8dàª\97 àª¦à«\8dવારા àª\9aાળો',
+'allmessages-prefix' => 'àª\89પસરà«\8dàª\97 àª¦à«\8dવારા àª\85લàª\97 àª¤àª¾àª°àªµો',
 'allmessages-language' => 'ભાષા:',
 'allmessages-filter-submit' => 'કરો',
 
@@ -3504,7 +3509,7 @@ $5
 'table_pager_next' => 'આગળનું પાનું',
 'table_pager_prev' => 'પાછળનું પાનું',
 'table_pager_first' => 'પહેલું પાનું',
-'table_pager_last' => 'àª\9bà«\87લà«\8dલà«\82ં પાનું',
+'table_pager_last' => 'àª\9bà«\87લà«\8dલà«\81ં પાનું',
 'table_pager_limit' => 'પ્રતિ પાને $1 વસ્તુ બતાવો',
 'table_pager_limit_label' => 'વસ્તિઓ પ્રતિ પાને',
 'table_pager_limit_submit' => 'જાઓ',
@@ -3749,7 +3754,7 @@ $5
 'api-error-duplicate-archive-popup-title' => 'ડ્યુપ્લીકેટ {{PLURAL:$1|ફાઈલ|ફાઈલો}} પહેલેથી મોજુદ છે.',
 'api-error-duplicate-popup-title' => 'આબેહુબ અન્ય {{PLURAL:$1|ફાઈલ|ફાઈલો}}.',
 'api-error-empty-file' => 'તમે ચડાવેલ ફાઈલ ખાલી છે',
-'api-error-emptypage' => 'નવા ખાલી પાના રચવાની અપ્રવાનગી નથી',
+'api-error-emptypage' => 'નવા ખાલી પાનાં બનાવવાની પરવાનગી નથી.',
 'api-error-fetchfileerror' => 'આંતરીક ત્રુટી: ફાઈલ લાવતી વખતે અમુક ગડબડ થઈ',
 'api-error-file-too-large' => 'તમે ચડાવેલી ફાઈલ ખૂબ મોટી છે',
 'api-error-filename-tooshort' => 'ફાઇલ નામ ખૂબ ટૂંકું છે',
index 1f8c61a..c7fbd44 100644 (file)
@@ -738,7 +738,7 @@ My bailliu eh y chiarail, bee eh ymmydit son cur gys lieh y chur dhyt er son yn
 'nchanges' => '$1 {{PLURAL:$1|caghlaa|chaghlaa|chaghlaa|caghlaaghyn}}',
 'recentchanges' => "Caghlaaghyn s'noa",
 'recentchanges-legend' => "Reihyssyn da ny caghlaaghyn s'noa",
-'recentchangestext' => "Shirr ny caghlaaghyn s'noa da'n wiki er y duillag shoh.",
+'recentchanges-summary' => "Shirrey ny caghlaaghyn s'noa da'n wiki er y duillag shoh.",
 'recentchanges-feed-description' => "Shirr ny caghlaaghyn jeianagh er y wiki 'sy scoltey shoh.",
 'recentchanges-label-newpage' => 'Ren y reaghey shoh croo duillag noa',
 'recentchanges-label-minor' => "She myn-arraghey t'ayn",
index 7e8a16a..a48bd4f 100644 (file)
@@ -734,7 +734,7 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'nchanges' => '$1-chhṳ kiên-kói',
 'recentchanges' => 'Chui-khiûn ke kiên-kói',
 'recentchanges-legend' => 'Chui-khiun kiên-kói sién-chet',
-'recentchangestext' => 'Kiên-chiûng liá-ke wiki song ke chui-sîn kiên-kói.',
+'recentchanges-summary' => 'Kiên-chiûng liá-ke wiki song ke chui-sîn kiên-kói.',
 'recentchanges-feed-description' => 'Kiên-chiûng chhṳ-thin chhai wiki song chui-khiûn ke kiên-kói.',
 'rcnote' => "Yî-ha he chhai $3, chui-khiûn '''$2''' thiên-nui ke '''$1'''-chhṳ chui-khiûn ke kiên-kói ki-liu̍k:",
 'rcnotefrom' => "Ha-mien he chhṳ '''$2''' (Chui-tô hién-sṳ '''$1'''):",
index aba4106..3776098 100644 (file)
@@ -7,10 +7,12 @@
  * @ingroup Language
  * @file
  *
+ * @author Bulaisen
  * @author Kalani
  * @author Kolonahe
  * @author Node ue
  * @author Singularity
+ * @author Xqt
  */
 
 $namespaceNames = array(
@@ -253,7 +255,7 @@ $messages = array(
 'jumptosearch' => 'huli',
 
 # 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) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'No {{SITENAME}}',
+'aboutsite' => 'E pili ana iā {{SITENAME}}',
 'aboutpage' => 'Project:E pili ana',
 'copyrightpage' => '{{ns:project}}:Palapala ho‘okuleana',
 'currentevents' => 'Ka nū hou',
@@ -263,7 +265,7 @@ $messages = array(
 'edithelp' => 'Kōkua me ka ho‘ololi ‘ana',
 'edithelppage' => 'Help:Ho‘ololi',
 'helppage' => 'Help:Papa kuhikuhi',
-'mainpage' => 'Papa kinohi',
+'mainpage' => "Kahua pa'a",
 'mainpage-description' => 'Ka papa kinohi',
 'policy-url' => 'Project:Palapala',
 'portal' => 'Ka hui kaiaulu',
@@ -298,7 +300,7 @@ $messages = array(
 'red-link-title' => '$1 (ʻaʻole i kākau ʻia)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'ʻaoʻao',
+'nstab-main' => 'ʻAoʻao',
 'nstab-user' => 'Inoa mea ho‘ohana',
 'nstab-media' => 'Pāpaho',
 'nstab-special' => 'Papa nui',
@@ -588,6 +590,8 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 # Statistics
 'statistics' => 'Papa helu',
 
+'disambiguationspage' => 'Template:Huaʻōlelo puana like',
+
 'brokenredirects-edit' => 'e ho‘ololi',
 'brokenredirects-delete' => 'e kāpae',
 
index 57aa405..36a1603 100644 (file)
@@ -234,7 +234,7 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( 'הפניות_לא_תקינות', 'הפניות_שבורות' ),
        'Categories'                => array( 'קטגוריות', 'רשימת_קטגוריות' ),
        'ChangeEmail'               => array( 'שינוי_דואר_אלקטרוני', 'שינוי_דואל' ),
-       'ChangePassword'            => array( 'שינוי_סיסמה', 'איפוס_סיסמה' ),
+       'ChangePassword'            => array( 'שינוי_סיסמה' ),
        'ComparePages'              => array( 'השוואת_דפים' ),
        'Confirmemail'              => array( 'אימות_כתובת_דואר' ),
        'Contributions'             => array( 'תרומות', 'תרומות_המשתמש' ),
@@ -359,7 +359,7 @@ $messages = array(
 'tog-hidepatrolled' => 'הסתרת שינויים בדוקים ברשימת השינויים האחרונים',
 'tog-newpageshidepatrolled' => 'הסתרת דפים בדוקים ברשימת הדפים החדשים',
 'tog-extendwatchlist' => 'הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף',
-'tog-usenewrc' => 'ש×\99×\9e×\95ש ×\91רש×\99×\9eת ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d ×\9eש×\95פרת (דרוש JavaScript)',
+'tog-usenewrc' => 'ק×\99×\91×\95×¥ ×\94ש×\99× ×\95×\99×\99×\9d ×\9cפ×\99 ×\93×£ ×\91ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\95×\91רש×\99×\9eת ×\94×\9eעק×\91 (דרוש JavaScript)',
 'tog-numberheadings' => 'מספור כותרות אוטומטי',
 'tog-showtoolbar' => 'הצגת סרגל העריכה (דרוש JavaScript)',
 'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה (דרוש JavaScript)',
@@ -419,13 +419,13 @@ $messages = array(
 'thursday' => 'חמישי',
 'friday' => 'שישי',
 'saturday' => 'שבת',
-'sun' => "ר×\90ש'",
-'mon' => 'שני',
-'tue' => "ש×\9c×\99'",
-'wed' => "ר×\91×\99'",
-'thu' => "×\97×\9e×\99'",
-'fri' => "ש×\99ש'",
-'sat' => 'שבת',
+'sun' => "×\90'",
+'mon' => "ב'",
+'tue' => "×\92'",
+'wed' => "×\93'",
+'thu' => "×\94'",
+'fri' => "×\95'",
+'sat' => "ש'",
 'january' => 'ינואר',
 'february' => 'פברואר',
 'march' => 'מרץ',
@@ -746,6 +746,8 @@ $2',
 מנהל המערכת שנעל את המאגר סיפק את ההסבר הבא: "\'\'\'$3\'\'\'".',
 'invalidtitle-knownnamespace' => 'כותרת בלתי־תקינה עם מרחב השם "$2" ושם דף "$3"',
 'invalidtitle-unknownnamespace' => 'כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף "$2"',
+'exception-nologin' => 'לא בחשבון',
+'exception-nologin-text' => 'כדי לראות את הדף הזה או לבצע את הפעולה הזאת צריך להיכנס לחשבון בוויקי הזה.',
 
 # Virus scanner
 'virus-badscanner' => "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
@@ -777,7 +779,7 @@ $2',
 'notloggedin' => 'לא בחשבון',
 'nologin' => 'אין לכם חשבון? $1.',
 'nologinlink' => 'הרשמה',
-'createaccount' => '×\99צ×\99רת ×\9eשת×\9eש חדש',
+'createaccount' => '×\99צ×\99רת ×\97ש×\91×\95×\9f חדש',
 'gotaccount' => 'כבר נרשמתם? $1.',
 'gotaccountlink' => 'כניסה לחשבון',
 'userlogin-resetlink' => 'שכחת את פרטי הכניסה?',
@@ -1318,9 +1320,9 @@ $1",
 'mergelogpagetext' => 'זוהי רשימה של המיזוגים האחרונים של גרסאות מדף אחד לתוך דף שני.',
 
 # Diffs
-'history-title' => 'היסטוריית הגרסאות של $1',
-'difference-title' => 'הבדלים בין גרסאות של "$1"',
-'difference-title-multipage' => 'הבדלים בין הדפים $1 ו{{GRAMMAR:תחילית|$2}}',
+'history-title' => '$1: היסטוריית גרסאות',
+'difference-title' => '$1: הבדלים בין גרסאות',
+'difference-title-multipage' => '$1 ו{{GRAMMAR:תחילית|$2}}: הבדלים בין דפים',
 'difference-multipage' => '(הבדלים בין דפים)',
 'lineno' => 'שורה $1:',
 'compareselectedversions' => 'השוואת הגרסאות שנבחרו',
@@ -1417,6 +1419,7 @@ $1",
 'prefs-beta' => 'אפשרויות בטא',
 'prefs-datetime' => 'תאריך ושעה',
 'prefs-labs' => 'אפשרויות מעבדה',
+'prefs-user-pages' => 'דפי משתמש',
 'prefs-personal' => 'פרטי המשתמש',
 'prefs-rc' => 'שינויים אחרונים',
 'prefs-watchlist' => 'רשימת המעקב',
@@ -1911,9 +1914,9 @@ $1',
 'lockmanager-fail-acquirelock' => 'לא הייתה אפשרות לקבל נעילה עבור "$1".',
 'lockmanager-fail-openlock' => 'לא הייתה אפשרות לפתוח את קובץ הנעילה עבור "$1".',
 'lockmanager-fail-releaselock' => 'לא הייתה אפשרות לשחרר את הנעילה עבור "$1".',
-'lockmanager-fail-db-bucket' => 'לא הייתה אפשרות לקבל מספיק מסדי נתונים של נעילות בדלי $1',
-'lockmanager-fail-db-release' => 'לא הייתה אפשרות לשחרר נעילות על מסד הנתונים $1',
-'lockmanager-fail-svr-release' => 'לא הייתה אפשרות לשחרר נעילות על השרת $1',
+'lockmanager-fail-db-bucket' => 'לא הייתה אפשרות לקבל מספיק מסדי נתונים של נעילות בדלי $1.',
+'lockmanager-fail-db-release' => 'לא הייתה אפשרות לשחרר נעילות על מסד הנתונים $1.',
+'lockmanager-fail-svr-release' => 'לא הייתה אפשרות לשחרר נעילות על השרת $1.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'אירעה שגיאה במהלך פתיחת הקובץ לבדיקות ZIP.',
@@ -2220,6 +2223,7 @@ $1',
 ניתן לצמצם את התצוגה על ידי בחירת סוג היומן, שם המשתמש (תלוי רישיות) או הדף המושפע (גם כן תלוי רישיות).',
 'logempty' => 'אין פריטים תואמים ביומן.',
 'log-title-wildcard' => 'חיפוש כותרות המתחילות באותיות אלה',
+'showhideselectedlogentries' => 'הצגת/הסתרת פעולות היומן שנבחרו',
 
 # Special:AllPages
 'allpages' => 'כל הדפים',
@@ -3129,6 +3133,7 @@ $1',
 'spambot_username' => 'מנקה הספאם של מדיה ויקי',
 'spam_reverting' => 'שחזור לגרסה אחרונה שלא כוללת קישורים ל־$1',
 'spam_blanking' => 'כל הגרסאות כוללות קישורים ל־$1, מרוקן את הדף',
+'spam_deleting' => 'כל הגרסאות כוללות קישורים ל־$1, מוחק את הדף',
 
 # Info page
 'pageinfo-title' => 'מידע על "$1"',
@@ -3228,7 +3233,8 @@ $1',
 # Bad image list
 'bad_image_list' => 'דרך הכתיבה בהודעה היא כמתואר להלן:
 
-רק פריטי רשימה (שורות המתחילות עם *) נחשבים. הקישור הראשון בשורה חייב להיות קישור לקובץ שאין להציג.
+רק פריטי רשימה (שורות המתחילות עם *) נחשבים.
+הקישור הראשון בשורה חייב להיות קישור לקובץ בעייתי.
 כל הקישורים הבאים באותה השורה נחשבים לחריגים, כלומר לדפים שבהם ניתן להציג את הקובץ.',
 
 # Metadata
@@ -3895,9 +3901,9 @@ $5
 'version-poweredby-others' => 'אחרים',
 'version-license-info' => "מדיה־ויקי היא תוכנה חופשית; באפשרותכם להפיץ אותה מחדש ו/או לשנות אותה לפי תנאי הרישיון הציבורי הכללי של גנו המפורסם על ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון זה, או (לפי בחירתכם) כל גרסה מאוחרת יותר.
 
\9e×\93×\99×\94Ö¾×\95×\99ק×\99 ×\9e×\95פצת ×\91תק×\95×\95×\94 ×©×\94×\99×\90 ×ª×\94×\99×\94 ×©×\99×\9e×\95ש×\99ת, ×\90×\9a '''×\9c×\9c×\90 ×\9b×\9c ×\94×\91×\98×\97×\94 ×\9c×\90×\97ר×\99×\95ת'''; ×\90פ×\99×\9c×\95 ×\9c×\90 ×\90×\97ר×\99×\95ת ×\9eשת×\9eעת ×©×\9c '''×\99×\9b×\95×\9cת ×\9c×\94×\99ס×\97ר''' ×\90×\95 '''×\94ת×\90×\9e×\94 ×\9cר×\99ש×\99×\95×\9f ×\9eס×\95×\99×\9d'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
\9e×\93×\99×\94Ö¾×\95×\99ק×\99 ×\9e×\95פצת ×\91תק×\95×\95×\94 ×©×\94×\99×\90 ×ª×\94×\99×\94 ×©×\99×\9e×\95ש×\99ת, ×\90×\9a '''×\9c×\9c×\90 ×\9b×\9c ×\94×\91×\98×\97×\94 ×\9c×\90×\97ר×\99×\95ת'''; ×\90פ×\99×\9c×\95 ×\9c×\90 ×\90×\97ר×\99×\95ת ×\9eשת×\9eעת ×©×\9c '''×\99×\9b×\95×\9cת ×\9c×\94×\99ס×\97ר''' ×\90×\95 '''×\94ת×\90×\9e×\94 ×\9c×\9e×\98ר×\94 ×\9eס×\95×\99×\9eת'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
 
\94×\99×\99ת×\9d ×¦×¨×\99×\9b×\99×\9d ×\9cק×\91×\9c [{{SERVER}}{{SCRIPTPATH}}/COPYING ×\94עתק ×©×\9c ×\94ר×\99ש×\99×\95×\9f ×\94צ×\99×\91×\95ר×\99 ×\94×\9b×\9c×\9c×\99 ×©×\9c ×\92× ×\95] ×\99×\97×\93 ×¢×\9d ×ª×\95×\9b× ×\94 ×\96×\95; ×\90×\9d ×\9c×\90, ×\9bת×\91×\95 ×\9c×\9e×\95ס×\93 ×\9cת×\95×\9b× ×\94 ×\97×\95פש×\99ת: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×\90×\95 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ×§ראו אותו ברשת].",
\94×\99×\99ת×\9d ×\90×\9e×\95ר×\99×\9d ×\9cק×\91×\9c [{{SERVER}}{{SCRIPTPATH}}/COPYING ×\94עתק ×©×\9c ×\94ר×\99ש×\99×\95×\9f ×\94צ×\99×\91×\95ר×\99 ×\94×\9b×\9c×\9c×\99 ×©×\9c ×\92× ×\95] ×\99×\97×\93 ×¢×\9d ×ª×\95×\9b× ×\94 ×\96×\95; ×\90×\9d ×\9c×\90, ×\9bִת×\91×\95 ×\9c×\9e×\95ס×\93 ×\9cת×\95×\9b× ×\94 ×\97×\95פש×\99ת: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×\90×\95 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ×§Ö´ראו אותו ברשת].",
 'version-software' => 'תוכנות מותקנות',
 'version-software-product' => 'תוכנה',
 'version-software-version' => 'גרסה',
@@ -4102,4 +4108,6 @@ $5
 'duration-centuries' => '{{PLURAL:$1|מאה שנה|$1 מאות שנים|מאתיים שנה}}',
 'duration-millennia' => '{{PLURAL:$1|אלף שנה|$1 אלפי שנים|אלפיים שנה}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'לא הייתה אפשרות לבצע נעילות על השרת $1.',
 );
index b215944..e9ce52d 100644 (file)
@@ -566,6 +566,8 @@ $2',
 'ns-specialprotected' => 'विशेष पृष्ठ सम्पादित नहीं किये जा सकते।',
 'titleprotected' => 'सदस्य [[User:$1|$1]] ने इस शीर्षक का पृष्ठ बनाने से सुरक्षित किया हुआ है।
 इसके लिये निम्न कारण दिया गया है: "\'\'$2\'\'"',
+'invalidtitle-knownnamespace' => '"$2" नामस्थान और "$3" नाम वाला गलत शीर्षक',
+'invalidtitle-unknownnamespace' => 'अज्ञात नामस्थान संख्या $1 और नाम "$2" वाला गलत शीर्षक',
 
 # Virus scanner
 'virus-badscanner' => "गलत जमाव: अज्ञात वायरस जाँचक: ''$1''",
@@ -658,6 +660,7 @@ $2',
 'invalidemailaddress' => 'ई-मेल पता नहीं माना जा सकता क्योंकि ये किसी अवैध स्वरूप में है।
 कृपया एक सही तरीके से स्वरूपित ई-मेल पता दें अथवा उस कोष्ठक को रिक्त ही रहने दें।',
 'cannotchangeemail' => 'इस विकी पर सदस्य खाते का ई-मेल पता नहीं बदला जा सकता।',
+'emaildisabled' => 'यह साइट ई-मेल नहीं भेज सकती।',
 'accountcreated' => 'खाता निर्मित',
 'accountcreatedtext' => '$1 के लिये खाता निर्मित कर दिया गया है।',
 'createaccount-title' => '{{SITENAME}} के लिये खाता बनाएँ',
@@ -859,6 +862,7 @@ $2
 'note' => "'''सूचना:'''",
 'previewnote' => "'''याद रखें, यह केवल एक झलक है।'''
 आपके बदलाव अभी तक संजोये नहीं गए हैं!",
+'continue-editing' => 'संपादन जारी रखें',
 'previewconflict' => 'यह झलक ऊपरी पाठ सम्पादन क्षेत्र में हुए बदलाव दिखाती है, और यदि आप अभी संजोते हैं तो यही पाठ संजोया जाएगा।',
 'session_fail_preview' => "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''
 कृपया पुन: यत्न करें।
@@ -942,11 +946,12 @@ $2
 'edit-no-change' => 'आपने कोई बदलाव ही नहीं किए, अतः आपके इस संपादन को नज़रंदाज़ कर दिया गया है।',
 'edit-already-exists' => 'नया पृष्ठ बनाया नहीं जा सका।
 यह पहले से मौजूद है।',
+'defaultmessagetext' => 'संदेश का डिफ़ॉल्ट पाठ',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''चेतावनी:''' इस पृष्ठ पर बहुत अधिक संख्या में कीमती पार्सर फ़ंक्शनों का प्रयोग किया गया है।
 
-इनका प्रयोग $2 से कम बार होना चाहिये, इस समय प्रयोग $1 बार {{PLURAL:$2|है|हैं}}।",
+इनका प्रयोग $2 से कम बार होना चाहिये, इस समय प्रयोग $1 बार {{PLURAL:$1|है|हैं}}।",
 'expensive-parserfunction-category' => 'कीमती पार्सर फ़ंक्शनों का अत्यधिक प्रयोग कर रहे पृष्ठ',
 'post-expand-template-inclusion-warning' => "'''चेतावनी:''' साँचे जुड़ने की सीमा पार हो चुकी है।
 कुछ साँचे नहीं जुड़ेंगे।",
@@ -1137,6 +1142,7 @@ $1",
 
 # Diffs
 'history-title' => '"$1" का अवतरण इतिहास',
+'difference-title' => '"$1" के अवतरणों में अंतर',
 'difference-multipage' => '(पृष्ठों के बीच अन्तर)',
 'lineno' => 'पंक्ति $1:',
 'compareselectedversions' => 'चुने हुए अवतरणों की तुलना करें',
@@ -1233,6 +1239,7 @@ $1",
 'prefs-beta' => 'बीटा विशेषताएँ',
 'prefs-datetime' => 'दिनांक तथा समय',
 'prefs-labs' => 'लैब विशेषताएँ',
+'prefs-user-pages' => 'सदस्य पृष्ठ',
 'prefs-personal' => 'सदस्य व्यक्तिरेखा',
 'prefs-rc' => 'हाल में हुए बदलाव',
 'prefs-watchlist' => 'ध्यानसूची',
@@ -1527,6 +1534,7 @@ HTML टैग की जाँच करें।',
 'newsectionsummary' => '/* $1 */ नया अनुभाग',
 'rc-enhanced-expand' => 'विस्तृत जानकारी दिखाएँ (इसके लिए जावास्क्रिप्ट चाहिए)',
 'rc-enhanced-hide' => 'विस्तृत जानकारी छिपाएँ',
+'rc-old-title' => 'मूल रूप से "$1" नाम से बनाया गया था',
 
 # Recent changes linked
 'recentchangeslinked' => 'पृष्ठ से जुड़े बदलाव',
@@ -2055,6 +2063,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'allpagesbadtitle' => 'दिया गया शीर्षक अमान्य था या उसमें अंतरभाषीय अथवा अंतरविकी उपसर्ग था।
 इसमें संभवतः एक या एक से अधिक ऐसे कैरैक्टर हैं जो शीर्षकों में प्रयुक्त नहीं हो सकते हैं।',
 'allpages-bad-ns' => '{{SITENAME}} में "$1" नामस्थान नहीं है।',
+'allpages-hide-redirects' => 'पुनर्निर्देश छुपाएँ',
 
 # Special:Categories
 'categories' => 'श्रेणियाँ',
index a056e70..20a65da 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Croatian (Hrvatski)
+/** Croatian (hrvatski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -15,6 +15,7 @@
  * @author Dnik
  * @author Ex13
  * @author Excaliboor
+ * @author FriedrickMILBarbarossa
  * @author Herr Mlinka
  * @author Kaganer
  * @author Luka Krstulovic
@@ -1243,6 +1244,7 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
 
 # Diffs
 'history-title' => 'Povijest izmjena stranice "$1"',
+'difference-title' => '$1: Razlika između inačica',
 'difference-multipage' => '(Razlika između stranica)',
 'lineno' => 'Redak $1:',
 'compareselectedversions' => 'Usporedi odabrane inačice',
@@ -1595,7 +1597,7 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'nchanges' => '{{PLURAL:$1|$1 promjena|$1 promjene|$1 promjena}}',
 'recentchanges' => 'Nedavne promjene',
 'recentchanges-legend' => 'Izbornik nedavnih promjena',
-'recentchangestext' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
+'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
 'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
 'recentchanges-label-newpage' => 'Ova izmjena stvorila je novu stranicu',
 'recentchanges-label-minor' => 'Ovo je manja izmjena',
@@ -2265,7 +2267,7 @@ Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu
 'actionfailed' => 'Radnja nije uspjela',
 'deletedtext' => '"$1" je izbrisana.
 Vidi $2 za evidenciju nedavnih brisanja.',
-'dellogpage' => 'Evidencija_brisanja',
+'dellogpage' => 'Evidencija brisanja',
 'dellogpagetext' => 'Dolje je popis nedavnih brisanja.
 Sva vremena su prema poslužiteljevom vremenu.',
 'deletionlog' => 'evidencija brisanja',
index 8b134b1..a0ef469 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Upper Sorbian (Hornjoserbsce)
+/** Upper Sorbian (hornjoserbsce)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -160,7 +160,7 @@ $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' => 'Rozšěrjenu lisćinu aktualnych změnow (trjeba JavaScript) wužiwać',
+'tog-usenewrc' => 'Skupinske změny po stronje w aktualnych změnach a wobkedźbowankach (trjeba JavaScript)',
 '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)',
@@ -540,6 +540,8 @@ Podata přičina je \'\'"$2"\'\'.',
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
@@ -1077,9 +1079,9 @@ Zawěsć, zo tuta změna stawiznisku kontinuitu strony wobchowuje.',
 'mergelogpagetext' => 'Deleka je lisćina najaktualnišich zjednoćenjow stawiznow dweju stronow.',
 
 # Diffs
-'history-title' => 'Stawizny wersijow strony „$1“',
-'difference-title' => 'Rozdźěl mjez wersijemi "$1"',
-'difference-title-multipage' => 'Rozdźěl mjez stronami "$1" a "$2"',
+'history-title' => '$1: Wersijowe stawizny',
+'difference-title' => '$1: Rozdźěl mjez wersijemi',
+'difference-title-multipage' => '$1 a $2: Rozdźěl mjez stronami',
 'difference-multipage' => '(Rozdźěl mjez stronami)',
 'lineno' => 'Rjadka $1:',
 'compareselectedversions' => 'Wubranej wersiji přirunać',
@@ -1175,6 +1177,7 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'prefs-beta' => 'Betafunkcije',
 'prefs-datetime' => 'Datum a čas',
 'prefs-labs' => 'Laborowe funkcije',
+'prefs-user-pages' => 'Wužiwarske strony',
 'prefs-personal' => 'Wužiwarski profil',
 'prefs-rc' => 'Aktualne změny',
 'prefs-watchlist' => 'Wobkedźbowanki',
@@ -1640,14 +1643,15 @@ $1',
 'backend-fail-writetemp' => 'Njeda so do temporerneje dataje pisać.',
 'backend-fail-closetemp' => 'Temporerna dataja njeda so začinić.',
 'backend-fail-read' => 'Dataja $1 njeda so čitać',
-'backend-fail-create' => 'Dataja $1 njeda so wutworić',
-'backend-fail-maxsize' => 'Dataja $1 njeda so wutworić, dokelž je wjetša hač {{PLURAL:$2|$2 bajt|$2 bajtaj|$2 bajty|$2 bajtow}}.',
+'backend-fail-create' => 'Dataja $1 njeda so pisać.',
+'backend-fail-maxsize' => 'Dataja $1 njeda so pisać, dokelž je wjetša hač {{PLURAL:$2|jedyn bajt|$2 bajtaj|$2 bajty|$2 bajtow}}.',
 'backend-fail-readonly' => 'Składowanski backend "$1" da so tuchwilu jenož čitać. Přičina je była: "$2"',
 'backend-fail-synced' => 'Dataja "$1" je znutřka interneho składowanskeho backenda w inkonsistentnym stawje',
 'backend-fail-connect' => 'Zwisk z datajowym składowanskim backendom "$1" móžno njeje.',
 'backend-fail-internal' => 'W składowanskim backendźe "$1" je njeznaty zmylk wustupił.',
 'backend-fail-contenttype' => 'Wobsahowy typ dataje, kotraž ma so na "$1" składować, njeda so zwěsćić.',
 'backend-fail-batchsize' => 'Staplowa dataja, kotraž {{PLURAL:$1|jednu operaciju|$1 operaciji|$1 operacije|$1 operacijow}} wobsahuje,  je so  na składowanski backend pósłała; limit je $2 {{PLURAL:$2|operaciju|operaciji|operacije|operacijow}} .',
+'backend-fail-usable' => 'Dataja $1 njeda so njedosahacych prawow  dla abo falowacych zapisow dla pisać.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Njeje žadyn zwisk ze žurnalowej datowej banku za składowanski backend "$1" móžno.',
@@ -1959,6 +1963,7 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
 'alllogstext' => 'Kombinowane zwobraznjenje wšěch k dispozicij stejacych protokolow w {{GRAMMAR:lokatiw|{{SITENAME}}}}. Móžeš napohlad wobmjezować, wuběrajo typ protokola, wužiwarske mjeno (dźiwajo na wulkopisanje) abo potrjechu stronu (tež dźiwajo na wulkopisanje).',
 'logempty' => 'Žane wotpowědowace zapiski w protokolu.',
 'log-title-wildcard' => 'Titul započina so z …',
+'showhideselectedlogentries' => 'Wubrane protokolowe zapiski pokazać/schować',
 
 # Special:AllPages
 'allpages' => 'Wšě nastawki',
@@ -2808,7 +2813,8 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'spamprotectionmatch' => 'Sćěhowacy tekst je naš spamowy filter wotpokazał: $1',
 'spambot_username' => 'MediaWiki čisćenje wot spama',
 'spam_reverting' => 'wróćo na poslednju wersiju, kotraž wotkazy na $1 njewobsahuje',
-'spam_blanking' => 'Wšě wersije wobsahowachu wotkazy na $1, wučisćene.',
+'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
+'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
 
 # Info page
 'pageinfo-title' => 'Informacije za stronu "$1"',
@@ -3712,4 +3718,6 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Zawěry na serwer $1 njehodźa so wotwołać.',
 );
index e032235..f71379d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Hungarian (Magyar)
+/** Hungarian (magyar)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -29,6 +29,7 @@
  * @author R-Joe
  * @author Samat
  * @author Sucy
+ * @author TK-999
  * @author Terik
  * @author Tgr
  * @author Xbspiro
@@ -318,7 +319,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése a friss változtatások lapon',
 'tog-newpageshidepatrolled' => 'Ellenőrzött lapok elrejtése az új lapok listájáról',
 'tog-extendwatchlist' => 'A figyelőlistán az összes változtatás látszódjon, ne csak az utolsó',
-'tog-usenewrc' => 'Fejlettebb friss változások listája (JavaScript-alapú)',
+'tog-usenewrc' => 'Fejlettebb friss változások használata (JavaScript-alapú)',
 'tog-numberheadings' => 'Fejezetcímek automatikus számozása',
 'tog-showtoolbar' => 'Szerkesztőeszközsor megjelenítése (JavaScript-alapú)',
 'tog-editondblclick' => 'A lapok szerkesztése dupla kattintásra (JavaScript-alapú)',
@@ -784,6 +785,7 @@ A visszaélések elkerülése végett {{PLURAL:$1|egy|$1}} óránként csak egy
 'emailconfirmlink' => 'E-mail cím megerősítése',
 'invalidemailaddress' => 'A megadott e-mail cím érvénytelen formátumú. Kérlek, adj meg egy érvényes e-mail címet vagy hagyd üresen azt a mezőt.',
 'cannotchangeemail' => 'Ezen a wikin nem módosítható a fiókhoz tartozó e-mail cím.',
+'emaildisabled' => 'Ezen az oldalon nem lehet küldeni e-mailek.',
 'accountcreated' => 'Felhasználói fiók létrehozva',
 'accountcreatedtext' => '$1 felhasználói fiókja sikeresen létrejött.',
 'createaccount-title' => 'Új {{SITENAME}}-azonosító létrehozása',
@@ -1056,6 +1058,7 @@ Nem lett magyarázat csatolva.',
 'edit-no-change' => 'A szerkesztésed figyelmen kívül lett hagyva, mivel nem változtattál a lap szövegén.',
 'edit-already-exists' => 'Az új lap nem készíthető el.
 Már létezik.',
+'defaultmessagetext' => 'Alapértelmezett szöveg',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Figyelem: ezen a lapon túl sok erőforrásigényes elemzőfüggvény-hívás található.
@@ -1210,7 +1213,7 @@ Ellenőrizd a naplókat.',
 
 # Suppression log
 'suppressionlog' => 'Adatvédelmibiztos-napló',
-'suppressionlogtext' => 'Lenn látható az adminisztrátorok elől legutóbb elrejtett törlések és blokkok listája. Lásd a [[Special:BlockList|blokkolt IP-címek listája]] lapot a jelenleg érvényben lévő kitiltásokhoz és blokkokhoz.',
+'suppressionlogtext' => 'Lenn látható az adminisztrátorok elől legutóbb elrejtett törlések és blokkok listája. Lásd a [[Special:BlockList|blokkok listája]] lapot a jelenleg érvényben lévő kitiltásokhoz és blokkokhoz.',
 
 # History merging
 'mergehistory' => 'Laptörténetek egyesítése',
@@ -1243,6 +1246,8 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
 
 # Diffs
 'history-title' => 'A(z) „$1” laptörténete',
+'difference-title' => '„$1” változatai közötti eltérés',
+'difference-title-multipage' => 'Oldalak közötti különbség " $1 "és" $2 "',
 'difference-multipage' => '(Lapok közti eltérés)',
 'lineno' => '$1. sor:',
 'compareselectedversions' => 'Kiválasztott változatok összehasonlítása',
@@ -1337,6 +1342,7 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
 'prefs-beta' => 'Béta funkciók',
 'prefs-datetime' => 'Dátum és idő',
 'prefs-labs' => 'Kísérleti funkciók',
+'prefs-user-pages' => 'Felhasználói lapok',
 'prefs-personal' => 'Felhasználói adatok',
 'prefs-rc' => 'Friss változtatások',
 'prefs-watchlist' => 'Figyelőlista',
@@ -1467,7 +1473,7 @@ A műveletet nem lehet visszavonni.',
 # Groups
 'group' => 'Csoport:',
 'group-user' => 'szerkesztők',
-'group-autoconfirmed' => 'automatikusan megerősített felhasználók',
+'group-autoconfirmed' => 'automatikusan megerősített szerkesztők',
 'group-bot' => 'botok',
 'group-sysop' => 'adminisztrátorok',
 'group-bureaucrat' => 'bürokraták',
@@ -1482,7 +1488,7 @@ A műveletet nem lehet visszavonni.',
 'group-suppress-member' => '{{GENDER:$1|adatvédelmi biztos}}',
 
 'grouppage-user' => '{{ns:project}}:Felhasználók',
-'grouppage-autoconfirmed' => '{{ns:project}}:Automatikusan megerősített felhasználók',
+'grouppage-autoconfirmed' => '{{ns:project}}:Munkatársak#Automatikusan megerősített szerkesztők',
 'grouppage-bot' => '{{ns:project}}:Botok',
 'grouppage-sysop' => '{{ns:project}}:Adminisztrátorok',
 'grouppage-bureaucrat' => '{{ns:project}}:Bürokraták',
@@ -1800,7 +1806,8 @@ Kérjük, hogy lépj kapcsolatba egy  [[Special:ListUsers/sysop|adminisztrátorr
 'backend-fail-writetemp' => 'Nem lehet írni az ideiglenes fájlba.',
 'backend-fail-closetemp' => 'Nem lehet lezárni az ideiglenes fájlt.',
 'backend-fail-read' => 'Nem sikerült olvasni ebből a fájlból: $1.',
-'backend-fail-create' => 'Nem sikerült létrehozni ezt a fájlt: $1.',
+'backend-fail-create' => 'Nem sikerült írni ebbe a fájlba: $1.',
+'backend-fail-maxsize' => 'Nem lehet írni ezt a fájlt: $1, mert a mérete nagyobb, mint $2 bájt.',
 'backend-fail-readonly' => 'A(z) „$1” tárolórendszer jelenleg csak olvasható. Ennek oka a következő: „$2”',
 'backend-fail-synced' => 'A(z) „$1” fájl inkonzisztens állapotban van a tárolórendszerek között',
 'backend-fail-connect' => 'Nem sikerült csatlakozni a(z) „$1” tárolórendszerhez.',
@@ -2137,6 +2144,11 @@ A napló típusának, a szerkesztő nevének (kis- és nagybetűérzékeny), vag
 'allpages-bad-ns' => 'A(z) {{SITENAME}} webhelyen nincs "$1" névtér.',
 'allpages-hide-redirects' => 'Átirányítások elrejtése',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'A lap tárolt változatát látod, aminek utolsó frissítése ennyi ideje volt:  $1',
+'cachedspecial-viewing-cached-ts' => 'Az oldal tárolt változatát látod, ami eltérhet az aktuálistól.',
+'cachedspecial-refresh-now' => 'A legfrissebb változat megjelenítése.',
+
 # Special:Categories
 'categories' => 'Kategóriák',
 'categoriespagetext' => 'A következő {{PLURAL:$1|kategória tartalmaz|kategóriák tartalmaznak}} lapokat vagy fájlokat.
@@ -2627,7 +2639,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'blocklog-showsuppresslog' => 'Ez a felhasználó korábban blokkot kapott, és a naplóbejegyzés el lett rejtve. Az elrejtési napló alább látható tájékoztatásként:',
 'blocklogentry' => '„[[$1]]” blokkolva $2 $3 időtartamra',
 'reblock-logentry' => 'megváltoztatta [[$1]] blokkjának beállításait, a blokk lejárta: $2 $3',
-'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az IP-autoblokkok nem szerepelnek a listában. Lásd még [[Special:BlockList|a jelenleg életben lévő blokkok listáját]].',
+'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az automatikus blokkolt IP címek nem szerepelnek a listában. Lásd még [[Special:BlockList|a jelenleg életben lévő blokkok listáját]].',
 'unblocklogentry' => '„$1” blokkolása feloldva',
 'block-log-flags-anononly' => 'csak anonok',
 'block-log-flags-nocreate' => 'nem hozhat létre új fiókot',
@@ -3732,6 +3744,9 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'version-software' => 'Telepített szoftverek',
 'version-software-product' => 'Termék',
 'version-software-version' => 'Verzió',
+'version-entrypoints' => 'Belépési pont URL-címek',
+'version-entrypoints-header-entrypoint' => 'Belépési pont',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Fájlelérés',
@@ -3918,4 +3933,15 @@ A képek teljes méretben jelennek meg, más fájltípusok közvetlenül a hozz
 'api-error-uploaddisabled' => 'A feltöltés le van tiltva ezen a wikin.',
 'api-error-verification-error' => 'A fájl feltehetőleg sérült, vagy hibás a kiterjesztése.',
 
+# Durations
+'duration-seconds' => '{{PLURAL: $1|másodperc|másodperc}}',
+'duration-minutes' => '$1 {{PLURAL: $1|perc|perc}}',
+'duration-hours' => '{{PLURAL:$1|egy|$1}} óra',
+'duration-days' => '{{PLURAL:$1|egy|$1}} nap',
+'duration-weeks' => '$1 {{PLURAL:$1|hét|hét}}',
+'duration-years' => '{{PLURAL: $1|Egy év|$1 év}}',
+'duration-decades' => '{{PLURAL:$1|egy|$1}} évtized',
+'duration-centuries' => '{{PLURAL:$1|egy|$1}} évszázad',
+'duration-millennia' => '{{PLURAL:$1|egy|$1}} évezred',
+
 );
index 9598fd8..ce350d1 100644 (file)
@@ -1027,6 +1027,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'revdelete-success' => "'''Տարբերակի տեսանելիությունը բարեհաջող թարմացված է։'''",
 'logdelete-success' => "'''Իրադարձության տեսանելիությունը փոփոխված է։'''",
 'revdel-restore' => 'Փոխել տեսանելիությունը',
+'revdel-restore-deleted' => 'ջնջված խմբագրումներ',
+'revdel-restore-visible' => 'տեսանելի խմբագրումներ',
 'pagehist' => 'Էջի պատմություն',
 'deletedhist' => 'Ջնջումների պատմություն',
 'revdelete-otherreason' => 'Ուրիշ/հավելյալ պատճառ՝',
@@ -1034,11 +1036,17 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'revdelete-edit-reasonlist' => 'Խմբագրել ջնջման պատճառների ցանկը',
 'revdelete-offender' => 'Էջի տարբերակի հեղինակ՝',
 
+# History merging
+'mergehistory-reason' => 'Պատճառ.',
+
 # Merge log
 'revertmerge' => 'Անջատել',
 
 # Diffs
 'history-title' => '«$1» էջի փոփոխումների պատմություն',
+'difference-title' => '$1: Խմագրումների տարբերություն',
+'difference-title-multipage' => '$1 և $2: Խմբագրումների տարբերություն',
+'difference-multipage' => '(Էջերի տարերություն)',
 'lineno' => 'Տող  $1.',
 'compareselectedversions' => 'Համեմատել ընտրած տարբերակները',
 'showhideselectedversions' => 'Ցուցադրել/թաքցնել ընտրված խմբագրումները',
index 3470d1f..20ab73a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Interlingua (Interlingua)
+/** Interlingua (interlingua)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -149,7 +149,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Celar le modificationes patruliate in le modificationes recente',
 'tog-newpageshidepatrolled' => 'Celar le paginas patruliate del lista de nove paginas',
 'tog-extendwatchlist' => 'Displicar le observatorio pro monstrar tote le modificationes, non solmente les plus recente',
-'tog-usenewrc' => 'Usar le modificationes recente meliorate (require JavaScript)',
+'tog-usenewrc' => 'Gruppar modificationes per pagina in modificationes recente e observatorio (require JavaScript)',
 'tog-numberheadings' => 'Numerar titulos automaticamente',
 'tog-showtoolbar' => 'Monstrar instrumentario de modification (require JavaScript)',
 'tog-editondblclick' => 'Duple clic pro modificar un pagina (require JavaScript)',
@@ -799,7 +799,7 @@ Per favor entra e valida tu adresse de e-mail per medio de tu [[Special:Preferen
 'nosuchsectiontitle' => 'Section non trovate',
 '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 requirite',
+'loginreqtitle' => 'Identification necessari',
 'loginreqlink' => 'aperir un session',
 'loginreqpagetext' => 'Tu debe $1 pro poter vider altere paginas.',
 'accmailtitle' => 'Contrasigno inviate.',
@@ -1131,9 +1131,9 @@ Nota que le uso del ligamines de navigation causara le perdita de tote cambios i
 'mergelogpagetext' => 'Infra es un lista del fusiones le plus recente de un historia de pagina in un altere.',
 
 # Diffs
-'history-title' => 'Historia de versiones de "$1"',
-'difference-title' => 'Differentia inter versiones de "$1"',
-'difference-title-multipage' => 'Differentia inter paginas "$1" e "$2"',
+'history-title' => '$1: Historia de versiones',
+'difference-title' => '$1: Differentia inter versiones',
+'difference-title-multipage' => '$1 e $2: Differentia inter paginas',
 'difference-multipage' => '(Differentia inter paginas)',
 'lineno' => 'Linea $1:',
 'compareselectedversions' => 'Comparar versiones seligite',
@@ -1223,7 +1223,7 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'mypreferences' => 'Mi 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 un session]</span> pro poter configurar tu preferentias.',
+'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aperir session]</span> pro configurar preferentias de usator.',
 'changepassword' => 'Cambiar contrasigno',
 'prefs-skin' => 'Apparentia',
 'skin-preview' => 'Previsualisation',
@@ -1231,6 +1231,7 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'prefs-beta' => 'Functiones beta',
 'prefs-datetime' => 'Data e hora',
 'prefs-labs' => 'Functiones experimental',
+'prefs-user-pages' => 'Paginas de usator',
 'prefs-personal' => 'Profilo del usator',
 'prefs-rc' => 'Modificationes recente',
 'prefs-watchlist' => 'Observatorio',
@@ -2037,6 +2038,7 @@ executar iste function.',
 Pro restringer le presentation, selige un typo de registro, le nomine de usator (sensibile al majusculas e minusculas), o le pagina in question (etiam sensibile al majusculas e minusculas).',
 'logempty' => 'Le registro contine nihil pro iste pagina.',
 'log-title-wildcard' => 'Cercar titulos que comencia con iste texto',
+'showhideselectedlogentries' => 'Monstrar/celar le entratas de registro seligite',
 
 # Special:AllPages
 'allpages' => 'Tote le paginas',
@@ -2963,7 +2965,8 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
 'spamprotectionmatch' => 'Le sequente texto es lo que activava nostre filtro antispam: $1',
 'spambot_username' => 'Nettamento de spam in MediaWiki',
 'spam_reverting' => 'Revertite al ultime version que non contine ligamines a $1',
-'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina ha essite vacuate.',
+'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina es vacuate.',
+'spam_deleting' => 'Tote le versiones contineva ligamines a $1. Le pagina es delite.',
 
 # Info page
 'pageinfo-title' => 'Informationes pro "$1"',
@@ -3881,4 +3884,6 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'duration-centuries' => '$1 {{PLURAL:$1|seculo|seculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millennios}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Non poteva acquirer le serraturas sur le servitor $1.',
 );
index 5f9e573..7394dda 100644 (file)
@@ -693,8 +693,8 @@ Mungkin telah dihapus oleh orang lain.',
 'cannotdelete-title' => 'Tidak dapat menghapus halaman "$1"',
 'badtitle' => 'Judul tidak sah',
 'badtitletext' => 'Judul halaman yang diminta tidak sah, kosong, atau judul antarbahasa atau antarwiki yang salah sambung.',
-'perfcached' => 'Data berikut ini diambil dari singgahan dan mungkin bukan data mutakhir: A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Data berikut ini diambil dari singgahan dan terakhir diperbarui pada $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'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',
@@ -716,6 +716,11 @@ $2',
 'ns-specialprotected' => 'Halaman pada ruang nama {{ns:special}} tidak dapat disunting.',
 'titleprotected' => "Judul ini dilindungi dari pembuatan oleh [[User:$1|$1]].
 Alasan yang diberikan adalah ''$2''.",
+'filereadonlyerror' => 'Tidak dapat memodifikasi file " $1 " karena file repositori " $2 " adalah pada mode baca-saja.
+
+Administrator yang terkunci menawarkan penjelasan ini: " $3 ".',
+'invalidtitle-knownnamespace' => 'Judul yang tidak sah dengan ruangnama "$2" dan teks "$3"',
+'invalidtitle-unknownnamespace' => 'Judul yang tidak sah dengan nomor ruang nama tidak diketahui $1 dan teks "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Kesalahan konfigurasi: pemindai virus tidak dikenal: ''$1''",
@@ -1093,6 +1098,12 @@ Beberapa templat akan diabaikan.',
 'parser-template-loop-warning' => 'Hubungan berulang templat terdeteksi: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Limit kedalaman hubungan berulang templat terlampaui ($1)',
 'language-converter-depth-warning' => 'Batas kedalaman pengonversi bahasa terlampaui ($1)',
+'node-count-exceeded-category' => 'Pages where node-count is exceeded',
+'node-count-exceeded-warning' => 'Page exceeded the node-count',
+'expansion-depth-exceeded-category' => 'Pages where expansion depth is exceeded',
+'expansion-depth-exceeded-warning' => 'Page exceeded the expansion depth',
+'parser-unstrip-loop-warning' => 'Unstrip loop detected',
+'parser-unstrip-recursion-limit' => 'Unstrip recursion limit exceeded ($1)',
 
 # "Undo" feature
 'undo-success' => 'Suntingan ini dapat dibatalkan. Tolong cek perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembatalan suntingan.',
@@ -1234,8 +1245,8 @@ Silakan periksa catatan log.',
 
 # Suppression log
 'suppressionlog' => 'Log penyembunyian',
-'suppressionlogtext' => 'Berikut adalah daftar penghapusan dan pemblokiran, termasuk konten yang disembunyikan dari para opsis.
-Lihat [[Special:BlockList|IP block list]] untuk daftar terkininya.',
+'suppressionlogtext' => 'Berikut adalah daftar penghapusan dan pemblokiran, termasuk konten yang disembunyikan dari para pengurus.
+Lihat [[Special:BlockList|daftar pemblokiran]] untuk daftar terkininya.',
 
 # History merging
 'mergehistory' => 'Gabung sejarah halaman',
@@ -1268,7 +1279,7 @@ Pastikan bahwa perubahan ini tetap mempertahankan kontinuitas versi terdahulu ha
 
 # Diffs
 'history-title' => 'Riwayat revisi dari "$1"',
-'difference-title' => 'Perbedaan antarrevisi "$1"',
+'difference-title' => '$1: Perbedaan revisi',
 'difference-title-multipage' => 'Perbedaan antara halaman "$1" dan "$2"',
 'difference-multipage' => '(Perbedaan antarhalaman)',
 'lineno' => 'Baris $1:',
@@ -1366,6 +1377,7 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'prefs-beta' => 'Fitur Beta',
 'prefs-datetime' => 'Tanggal dan waktu',
 'prefs-labs' => 'Fitur Labs',
+'prefs-user-pages' => 'Halaman pengguna',
 'prefs-personal' => 'Profil',
 'prefs-rc' => 'Perubahan terbaru',
 'prefs-watchlist' => 'Pemantauan',
@@ -1815,13 +1827,27 @@ Silakan hubungi salah seorang [[Special:ListUsers/sysop|pengurus]].',
 'backend-fail-closetemp' => 'Tidak dapat menutup berkas sementara.',
 'backend-fail-read' => 'Tidak dapat membaca berkas $1.',
 'backend-fail-create' => 'Tidak dapat membuat berkas $1.',
-'backend-fail-maxsize' => 'Tidak dapat membuat berkas $1 karena ukurannya lebih besar dari {{PLURAL:$2|$2 bita|$2 bita}}.',
+'backend-fail-maxsize' => 'Tidak dapat membuat berkas $1 karena ukurannya lebih besar dari {{PLURAL:$2||}}$2 bita.',
+'backend-fail-readonly' => 'Backend penyimpanan "$1" ini saat ini hanya bisa dibaca. Alasan yang diberikan adalah: "\'\'$2\'\'"',
+'backend-fail-synced' => 'Berkas "$1" dalam keadaan yang tidak konsisten dalam backends penyimpanan internal',
+'backend-fail-connect' => 'Tidak dapat menyambung ke penyimpanan backend "$1".',
+'backend-fail-internal' => 'Kesalahan yang tidak dikenal terjadi di backend penyimpanan "$1".',
+'backend-fail-contenttype' => 'Tidak dapat menentukan tipe konten dari berkas yang disimpan di "$1".',
+'backend-fail-batchsize' => 'Penyimpanan backend diberikan batch $1 berkas {{PLURAL:$1||}}operasi; batasnya adalah $2 {{PLURAL:$2||}}operasi.',
+'backend-fail-usable' => 'Tidak dapat membuat berkas $1 karena izin tidak memadai atau direktori/kontainer yang hilang.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Tidak dapat menyambung ke database jurnal untuk penyimpanan backend "$1".',
+'filejournal-fail-dbquery' => 'Tidak bisa update database jurnal untuk penyimpanan backend "$1".',
 
 # Lock manager
+'lockmanager-notlocked' => 'Tidak bisa membuka kunci "$1" karena "$1" tidak terkunci.',
 'lockmanager-fail-closelock' => 'Tidak dapat menutup penguncian berkas untuk "$1".',
 'lockmanager-fail-deletelock' => 'Tidak dapat menghapus penguncian berkas untuk "$1".',
 'lockmanager-fail-acquirelock' => 'Tidak dapat mendapatkan penguncian untuk "$1"',
 'lockmanager-fail-openlock' => 'Tidak dapat membuka penguncian berkas untuk "$1".',
+'lockmanager-fail-releaselock' => 'Tidak dapat melepaskan penguncian untuk "$1"',
+'lockmanager-fail-db-bucket' => 'Tidak bisa menghubungi database kunci yang mencukupi dalam ember $1.',
 'lockmanager-fail-db-release' => 'Tidak dapat melepaskan penguncian pada basis data $1.',
 'lockmanager-fail-svr-release' => 'Tidak dapat melepaskan penguncian pada server $1.',
 
@@ -1930,6 +1956,10 @@ Juga tersedia [[Special:WhatLinksHere/$2|daftar selengkapnya]].',
 Silakan lihat [$2 halaman deskripsi berkas] untuk informasi lebih lanjut.',
 'sharedupload-desc-here' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.
 Deskripsi dari [$2 halaman deskripsinya] ditunjukkan di bawah ini.',
+'sharedupload-desc-edit' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek lain.
+Mungkin Anda ingin menyunting keterangan pada [$2 halaman deskripsi berkas] di sana.',
+'sharedupload-desc-create' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek lain.
+Mungkin Anda ingin menyunting keterangan pada [$2 halaman deskripsi berkas] di sana.',
 'filepage-nofile' => 'Tidak ada berkas dengan nama ini.',
 'filepage-nofile-link' => 'Tidak ada berkas dengan nama ini, tetapi Anda dapat [$1 mengunggahnya].',
 'uploadnewversion-linktext' => 'Muatkan versi yang lebih baru dari berkas ini',
@@ -2063,6 +2093,8 @@ Nama yang telah <del>dicoret</del> berarti telah dibetulkan.',
 'wantedpages' => 'Halaman yang diinginkan',
 'wantedpages-badtitle' => 'Judul tak valid dalam himpunan hasil: $1',
 'wantedfiles' => 'Berkas yang diinginkan',
+'wantedfiletext-cat' => 'Berkas-berkas berikut digunakan tetapi tidak ada. Berkas dari repositori asing mungkin tercantum meskipun ada. Setiap "false positive" akan <del>dicoret</del>. Selain itu, halaman yang menggunakan berkas yang tidak ada eksis akan dicantumkan dalam [[:$1]].',
+'wantedfiletext-nocat' => 'Berkas-berkas berikut digunakan tetapi tidak ada. Berkas dari repositori asing mungkin tercantum meskipun ada. Setiap "false positive" akan <del>dicoret</del>.',
 'wantedtemplates' => 'Templat yang diinginkan',
 'mostlinked' => 'Halaman yang tersering dituju',
 'mostlinkedcategories' => 'Kategori yang tersering digunakan',
@@ -2115,13 +2147,14 @@ Harap perhatikan bahwa situs web lain mungkin memiliki pranala ke suatu berkas d
 
 # Special:Log
 'specialloguserlabel' => 'Pengguna:',
-'speciallogtitlelabel' => 'Taget (judul atau pengguna):',
+'speciallogtitlelabel' => 'Target (judul atau pengguna):',
 'log' => 'Log',
 'all-logs-page' => 'Semua log publik',
 'alllogstext' => 'Gabungan tampilan semua log yang tersedia di {{SITENAME}}.
-Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapital), atau judul halaman (juga sensitif kapital).',
+Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapitalisasi), atau judul halaman (juga sensitif kapitalisasi).',
 'logempty' => 'Tidak ditemukan entri log yang sesuai.',
 'log-title-wildcard' => 'Cari judul yang diawali dengan teks tersebut',
+'showhideselectedlogentries' => 'Tampilkan/sembunyikan entri log terpilih',
 
 # Special:AllPages
 'allpages' => 'Semua halaman',
@@ -2139,6 +2172,12 @@ Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna
 'allpagesprefix' => 'Tampilkan halaman dengan awalan:',
 'allpagesbadtitle' => 'Judul halaman yang diberikan tidak sah atau memiliki awalan antar-bahasa atau antar-wiki. Judul tersebut mungkin juga mengandung satu atau lebih aksara yang tidak dapat digunakan dalam judul.',
 'allpages-bad-ns' => '{{SITENAME}} tidak memiliki ruang nama "$1".',
+'allpages-hide-redirects' => 'Sembunyikan pengalihan',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Anda melihat versi tembolok halaman ini, yang mungkin sudah berumur $1.',
+'cachedspecial-viewing-cached-ts' => 'Anda melihat versi tembolok halaman ini, yang mungkin tidak akan benar-benar aktual.',
+'cachedspecial-refresh-now' => 'Lihat versi terbaru.',
 
 # Special:Categories
 'categories' => 'Kategori',
@@ -2376,6 +2415,8 @@ Lihat [[Special:ProtectedPages|daftar halaman terlindungi]] untuk daftar perlind
 'protect-title' => 'Melindungi "$1"',
 'protect-title-notallowed' => 'Lihat tingkat perlindungan dari "$1"',
 'prot_1movedto2' => '[[$1]] dipindahkan ke [[$2]]',
+'protect-badnamespace-title' => 'Ruang nama yang tidak dapat dilindungi',
+'protect-badnamespace-text' => 'Halaman dalam ruang nama ini tidak dapat dilindungi.',
 'protect-legend' => 'Konfirmasi pelindungan',
 'protectcomment' => 'Alasan:',
 'protectexpiry' => 'Kedaluwarsa:',
@@ -2569,7 +2610,7 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
 'badipaddress' => 'Format alamat IP atau nama pengguna salah.',
 'blockipsuccesssub' => 'Pemblokiran sukses',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] telah diblokir.<br />
-Lihat [[Special:BlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
+Lihat [[Special:BlockList|daftar pemblokiran]] untuk meninjau kembali pemblokiran.',
 'ipb-blockingself' => 'Anda akan memblokir diri sendiri! Apakah Anda yakin akan melakukannya?',
 'ipb-confirmhideuser' => 'Anda akan memblokir pengguna dengan mengaktifkan "sembunyikan pengguna" diaktifkan. Ini akan menyembunyikan nama pengguna pada semua daftar dan entri log. Apakah Anda yakin ingin melakukannya?',
 'ipb-edit-dropdown' => 'Sunting alasan pemblokiran',
@@ -2589,6 +2630,7 @@ Lihat [[Special:BlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
 'blocklist-userblocks' => 'Sembunyikan pemblokiran akun',
 'blocklist-tempblocks' => 'Sembunyikan pemblokiran sementara',
 'blocklist-addressblocks' => 'Sembunyikan pemblokiran IP tunggal',
+'blocklist-rangeblocks' => 'Menyembunyikan jangkauan blokir (http://www.mediawiki.org/wiki/Help:Range_blocks)',
 'blocklist-timestamp' => 'Stempel waktu',
 'blocklist-target' => 'Target',
 'blocklist-expiry' => 'Kedaluwarsa',
@@ -2621,7 +2663,7 @@ Alasan yang diberikan untuk pemblokiran $1 adalah: "$2"',
 'reblock-logentry' => 'mengubah pemblokiran [[$1]] dengan waktu kedaluwarsa $2 $3',
 'blocklogtext' => 'Di bawah ini adalah log pemblokiran dan pembukaan blokir terhadap pengguna.
 Alamat IP yang diblokir secara otomatis tidak terdapat di dalam daftar ini.
-Lihat [[Special:BlockList|daftar alamat IP yang diblokir]] untuk daftar pemblokiran terkini.',
+Lihat [[Special:BlockList|daftar pemblokiran]] untuk semua pengguna yang saat ini diblokir.',
 'unblocklogentry' => 'menghilangkan blokir "$1"',
 'block-log-flags-anononly' => 'hanya pengguna anonim',
 'block-log-flags-nocreate' => 'pembuatan akun dimatikan',
@@ -2770,6 +2812,7 @@ Jika Anda hanya ingin mengimpor versi terbaru, Anda melakukannya lebih cepat den
 'exportcuronly' => 'Hanya ekspor revisi sekarang, bukan seluruh versi terdahulu',
 'exportnohistory' => "----
 '''Catatan:''' Mengekspor keseluruhan riwayat suntingan halaman melalui isian ini telah dinon-aktifkan karena alasan kinerja.",
+'exportlistauthors' => 'Termasuk daftar lengkap kontributor untuk setiap halaman',
 'export-submit' => 'Ekspor',
 'export-addcattext' => 'Tambahkan halaman dari kategori:',
 'export-addcat' => 'Tambahkan',
@@ -2802,6 +2845,8 @@ Silakan kunjungi [//www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan
 'thumbnail_error' => 'Gagal membuat miniatur: $1',
 'djvu_page_error' => 'Halaman DjVu di luar rentang',
 'djvu_no_xml' => 'XML untuk berkas DjVu tak dapat diperoleh',
+'thumbnail-temp-create' => 'Tidak dapat membuat berkas kecil temporer',
+'thumbnail-dest-create' => 'Tidak dapat menyimpan berkas kecil ke tujuan',
 'thumbnail_invalid_params' => 'Kesalahan parameter miniatur',
 'thumbnail_dest_directory' => 'Direktori tujuan tak dapat dibuat',
 'thumbnail_image-type' => 'Tipe gambar tidak didukung',
@@ -2848,6 +2893,8 @@ Simpan ke komputer Anda dan unggah ke sini.',
 'import-invalid-interwiki' => 'Tidak dapat mengimpor dari wiki tersebut.',
 'import-error-edit' => 'Halaman "$1" tidak diimpor karena Anda tidak diizinkan untuk menyuntingnya.',
 'import-error-create' => 'Halaman "$1" tidak diimpor karena Anda tidak diizinkan untuk membuatnya.',
+'import-error-interwiki' => 'Halaman " $1 " tidak diimpor karena namanya dicadangkan untuk pranala eksternal (interwiki).',
+'import-error-special' => 'Halaman " $1 " tidak diimpor karena milik ruang nama khusus yang tidak mengizinkan adanya halaman.',
 'import-error-invalid' => 'Halaman "$1" tidak diimpor karena namanya tidak valid.',
 
 # Import log
@@ -2867,6 +2914,7 @@ Simpan ke komputer Anda dan unggah ke sini.',
 'javascripttest-pagetext-frameworks' => 'Silakan pilih satu di antara kerangka kerja pengujian berikut: $1',
 'javascripttest-pagetext-skins' => 'Pilih kulit yang ingin Anda uji:',
 'javascripttest-qunit-intro' => 'Lihat [$1 dokumentasi pengujian] di mediawiki.org.',
+'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Halaman pengguna Anda',
@@ -2986,6 +3034,7 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
 'spambot_username' => 'Pembersihan span MediaWiki',
 'spam_reverting' => 'Mengembalikan ke versi terakhir yang tak memiliki pranala ke $1',
 'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, pengosongan',
+'spam_deleting' => 'Semua revisi yang memiliki pranala ke $1, penghapusan',
 
 # Info page
 'pageinfo-title' => 'Informasi untuk "$1"',
@@ -3731,6 +3780,9 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'version-software' => 'Perangkat lunak terinstal',
 'version-software-product' => 'Produk',
 'version-software-version' => 'Versi',
+'version-entrypoints' => 'URL titik entri',
+'version-entrypoints-header-entrypoint' => 'Titik entri',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Lokasi berkas',
@@ -3835,6 +3887,15 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 # New logging system
 'logentry-delete-delete' => '$1 menghapus halaman $3',
 'logentry-delete-restore' => '$1 mengembalikan halaman $3',
+'logentry-delete-event' => '$1 mengubah ketertampilan {{PLURAL:$5||}} $5  log peristiwa di $3: $4',
+'logentry-delete-revision' => '$1 mengubah ketertampilan {{PLURAL:$5||}} $5  revisi di halaman $3: $4',
+'logentry-delete-event-legacy' => '$1 mengubah ketertampilan log peristiwa pada $3',
+'logentry-delete-revision-legacy' => '$1 mengubah ketertampilan revisi pada halaman $3',
+'logentry-suppress-delete' => '$1 mensupresi halaman $3',
+'logentry-suppress-event' => '$1 secara diam-diam mengubah ketertampilan  {{PLURAL:$5||}} $5  log peristiwa di $3: $4',
+'logentry-suppress-revision' => '$1 diam-diam mengubah ketertampilan {{PLURAL:$5||}} $5 revisi di halaman $3: $4',
+'logentry-suppress-event-legacy' => '$1 diam-diam mengubah ketertampilan log peristiwa pada $3',
+'logentry-suppress-revision-legacy' => '$1 diam-diam mengubah ketertampilan revisi pada halaman $3',
 'revdelete-content-hid' => 'konten disembunyikan',
 'revdelete-summary-hid' => 'ringkasan suntingan disembunyikan',
 'revdelete-uname-hid' => 'nama pengguna disembunyikan',
@@ -3856,6 +3917,8 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 'newuserlog-byemail' => 'kata sandi dikirim melalui surel',
 
 # Feedback
+'feedback-bugornote' => 'Jika Anda sudah siap untuk mendeskripsikan masalah teknis secara rinci silakan [$1 melaporkan bug].
+Jika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda akan ditambahkan ke halaman "[$3 $2]", bersama dengan nama pengguna Anda dan apa browser yang Anda gunakan.',
 'feedback-subject' => 'Perihal:',
 'feedback-message' => 'Pesan:',
 'feedback-cancel' => 'Batal',
@@ -3864,6 +3927,7 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 'feedback-error1' => 'Galat: Hasil tidak dikenal dari API',
 'feedback-error2' => 'Galat: Penyuntingan gagal',
 'feedback-error3' => 'Error: API tidak merespons',
+'feedback-thanks' => 'Terima kasih! Umpan balik Anda telah diposting ke halaman "[$2 $1]".',
 'feedback-close' => 'Selesai',
 'feedback-bugcheck' => 'Hebat! Hanya periksa bahwa itu bukan satu di antara [$1 bug yang telah dikenal].',
 'feedback-bugnew' => 'Saya telah memeriksa. Laporkan bug baru',
@@ -3906,4 +3970,15 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 'api-error-uploaddisabled' => 'Pengunggahan dinonaktifkan di wiki ini.',
 'api-error-verification-error' => 'Berkas ini mungkin rusak atau memiliki ekstensi yang salah.',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1||}}$1 detik',
+'duration-minutes' => '{{PLURAL:$1||}}$1 menit',
+'duration-hours' => '{{PLURAL:$1||}}$1 jam',
+'duration-days' => '{{PLURAL:$1||}}$1 hari',
+'duration-weeks' => '{{PLURAL: $1||}}$1 minggu',
+'duration-years' => '{{PLURAL: $1||}}$1 tahun',
+'duration-decades' => '{{PLURAL:$1||}}$1 dekade',
+'duration-centuries' => '{{PLURAL:$1||}}$1 abad',
+'duration-millennia' => '{{PLURAL:$1||}}$1 milenium',
+
 );
index 1a9bfc9..0c21f44 100644 (file)
@@ -612,7 +612,7 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'revertmerge' => 'Desfar fusion',
 
 # Diffs
-'history-title' => 'Revision del historie de "$1"',
+'history-title' => 'Historic del revision de "$1"',
 'lineno' => 'Linea $1:',
 'compareselectedversions' => 'Comparar revisiones selectet',
 'editundo' => 'anullar',
@@ -732,7 +732,7 @@ Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
 'nchanges' => '$1 {{PLURAL:$1|change|changes}}',
 'recentchanges' => 'Nov changes',
 'recentchanges-legend' => 'Optiones de nov changes',
-'recentchangestext' => 'Seque sur ti-ci págine li ultim modificationes al wiki.',
+'recentchanges-summary' => 'Seque sur ti-ci págine li ultim modificationes al wiki.',
 'recentchanges-feed-description' => 'Monstra li max nov changes to li wiki in ti feed.',
 'recentchanges-label-newpage' => 'Ti redaction creat un nov págine',
 'recentchanges-label-minor' => 'Ti es un redaction minori',
index 4c6f239..282d871 100644 (file)
@@ -965,7 +965,7 @@ Ihü nọr na [[Special:Watchlist|ndétu ihe Í ne lé]] di na mkpụrụ edemed
 'filehist-filesize' => 'Ívù usòrò',
 'filehist-comment' => 'Okwu-nokwu',
 'filehist-missing' => 'Usòrò è fwuólé',
-'imagelinks' => 'Jikodo usòrò',
+'imagelinks' => 'Mgbanwe usòrò',
 'linkstoimage' => '{{PLURAL:$1|Ihü nká|Ihü nke $1}} na jikodo gá usòrò nká:',
 'nolinkstoimage' => 'Àdíghị ihü na jikodo usòrò nke.',
 'sharedupload' => 'Ákwúkwó runotu nke shì $1 na ó nwèríkí di na orürü nke ndi ozor.',
@@ -1487,7 +1487,7 @@ Jikodo nke gị byá àzú na áhìrì nke òfu á bu nke nwéríkí gáfè, dí
 Ȯ bụ nà usòrò à gabnwere shí òtù ȯ di nà mgbe mbu, ótù ụmà àgághị è zí ya.',
 'metadata-expand' => 'Zi nkówá di ógólógó',
 'metadata-collapse' => 'Zonari nkówá di ógólógó',
-'metadata-fields' => 'Ómárí nso nke nkeji nke EXIF détùrù na ozi nká gí banyé na nlé ihü nhuunuche mgbè ómárí nso mgbe àgàdà gi dátù.
+'metadata-fields' => 'Ómárí nso nke nkeji nke nhuunuche détùrù na ozi nká gí banyé na nlé ihü nhuunuche mgbè ómárí nso mgbe àgàdà gi dátù.
 Nke ozor gí zonari na áká onwe ha.
 * make
 * model
index 288eac9..348424a 100644 (file)
@@ -37,17 +37,17 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Pinag-ugisan ti silpo:',
 'tog-justify' => 'Limpiaen dagiti parapo',
-'tog-hideminor' => 'Ilemmeng dagiti babassit a panag-urnos idiay kinaudian a sinuk-sukatan',
-'tog-hidepatrolled' => 'Ilemmeng dagiti napatruliaan nga inurnos idiay kinaudian a sinuk-sukatan',
+'tog-hideminor' => 'Ilemmeng dagiti babassit a panag-urnos kadagiti naudi a sinuk-sukatan',
+'tog-hidepatrolled' => 'Ilemmeng dagiti napatruliaan nga inurnos kadagiti naudi a sinuk-sukatan',
 'tog-newpageshidepatrolled' => 'Ilemmeng dagiti napatruliaan a panid idiay baro a listaan ti panid',
-'tog-extendwatchlist' => 'Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, ta saan laeng dagita nabiit',
-'tog-usenewrc' => 'Usaren dagiti napasayaat a kinaudian a sinuk-sukatan (masapul ti JavaScript)',
+'tog-extendwatchlist' => 'Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, tapno saan laeng a dagiti nabiit',
+'tog-usenewrc' => 'Usaren ti napasayaat a kinaudi a sinuk-sukatan (masapul ti JavaScript)',
 'tog-numberheadings' => 'Automatiko a pabilangan dagiti paulo',
-'tog-showtoolbar' => 'Ipakita ti alikamen ti panag-urnos (masapul ti JavaScript)',
-'tog-editondblclick' => 'Urnosen ti pampanid iti mamindua a panagtakla (masapul ti JavaScript)',
+'tog-showtoolbar' => 'Ipakita ti ramit ti panag-urnos (masapul ti JavaScript)',
+'tog-editondblclick' => 'Urnosen dagiti panid iti mamindua a panagtakla (masapul ti JavaScript)',
 'tog-editsection' => 'Pakabaelan ti panag-urnos iti paset babaen kadagiti [urnosen] a  panilpo',
-'tog-editsectiononrightclick' => 'Ikkan ti pakabaelan ti paset  a panag-urnos no agtakla ti kannawan kadagiti paset a titulo (masapul ti JavaScript)',
-'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga addaan ti ad-adu ngem dagiti 3 a paulo)',
+'tog-editsectiononrightclick' => 'Ikkan ti pakabaelan ti paset  a panag-urnos no agtakla ti kanawan kadagiti paset a titulo (masapul ti JavaScript)',
+'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga addan ti ad-adu ngem dagiti 3 a paulo)',
 'tog-rememberpassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (iti kaadu nga $1 {{PLURAL:$1|aldaw|al-aldaw}})',
 'tog-watchcreations' => 'Inayon dagiti inaramidko a pampanid iti listaan ti bambantayak',
 'tog-watchdefault' => 'Inayon dagiti inurnos ko a pampanid iti listaan ti bambantayak',
@@ -62,7 +62,7 @@ $messages = array(
 'tog-enotifminoredits' => 'E-suratannak met kadagiti bassit a panag-urnos ti pampanid',
 'tog-enotifrevealaddr' => 'Iparang ti pagtaengan ti e-surat ko kadagiti pammalagip ti  e-surat',
 'tog-shownumberswatching' => 'Ipakita ti bilang dagiti agbambantay nga agar-aramat',
-'tog-oldsig' => 'Ti addaan a pirma:',
+'tog-oldsig' => 'Ti adda a pirma:',
 'tog-fancysig' => 'Tratuen ti pirma a kas wikitext (nga awan ti automatiko a panagsilpo)',
 'tog-externaleditor' => 'Isigud ti panag-usar iti ruar a pnag-urnos (para dagiti eksperto laeng, masapul ti nangruna a kasasaad a pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay a pakaammo.])',
 'tog-externaldiff' => 'Isigud ti panag-usar iti ruar a  sabali (para dagiti eksperto laeng, masapul ti nagruna a kasasaad a pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay a pakaammo.])',
@@ -76,9 +76,9 @@ $messages = array(
 'tog-watchlisthideanons' => 'Ilemmeng idiay listaan ti bambantayan dagiti inurnos ti di am-ammo nga agar-aramat',
 'tog-watchlisthidepatrolled' => 'Ilemmeng idiay listaan ti bambantayan dagiti napatruliaan nga inurnos',
 'tog-ccmeonemails' => 'Patulodandak iti kopia kadagiti e-surat nga ipatulodko kadagiti sabsabali nga agar-aramat',
-'tog-diffonly' => 'Saan nga iparang ti nagyan ti panid iti baba kadagiti sasabali',
+'tog-diffonly' => 'Saan nga iparang ti linaon ti panid dita baba dagiti pagiddiatan',
 'tog-showhiddencats' => 'Ipakita dagiti nailemmeng a kategoria',
-'tog-norollbackdiff' => 'Laksiden ti sabali a kalpasan ti panagi-subli',
+'tog-norollbackdiff' => 'Laksiden ti paggiddiatan kalpasan ti panagaramid ti panagi-subli',
 
 'underline-always' => 'Kanayon',
 'underline-never' => 'Saan uray kaanoman',
@@ -145,18 +145,18 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategoria|Dagiti kategoria}}',
-'category_header' => 'Dagiti panid iti kategoria  "$1"',
+'category_header' => 'Dagiti panid ti kategoria  "$1"',
 'subcategories' => 'Dagiti apo ti kategoria',
-'category-media-header' => 'Dagiti midia iti kategoria  "$1"',
-'category-empty' => "''Daytoy a kategoria ket awan ti agdama a nagyan na a pampanid wenno midia.''",
-'hidden-categories' => '{{PLURAL:$1|Nailemmeng a kategoria|Dagiti nailemmeng a kategoria}}',
+'category-media-header' => 'Dagiti midia ti kategoria  "$1"',
+'category-empty' => "''Daytoy a kategoria ket agdama a saan nga aglaon kadagiti panid wenno midia.''",
+'hidden-categories' => '{{PLURAL:$1|Nailemmeng a kategoria|Nailemmeng a katkategoria}}',
 'hidden-category-category' => 'Dagiti nailemmeng a kategoria',
-'category-subcat-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad nga apo ti kategoria.|Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|apo ti kategoria|$1 apo dagiti kategoria}}, manipud iti dagup a $2.}}',
-'category-subcat-count-limited' => 'Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|apo ti kategoria|$1 apo dagiti kategoria}}.',
-'category-article-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad a panid.|Ti sumaganad a {{PLURAL:$1|panid|$1 pampanid}} iti daytoy a kategoria, manipud iti dagup a $2.}}',
-'category-article-count-limited' => 'Ti sumaganad a {{PLURAL:$1|panid ket|$1 pampanid ket}} adda iti agdama a kategoria.',
-'category-file-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng kadagiti sumaganad a papeles.|Ti sumaganad a {{PLURAL:$1|papeles|$1 pap-papeles}} ket adda ti daytoy a kategoria, iti $2 a dagup.}}',
-'category-file-count-limited' => 'Ti sumaganad {{PLURAL:$1|a papeles|$1 a dagiti papeles}} ket adda ti agdama a kategoria.',
+'category-subcat-count' => '{{PLURAL:$2|Daytoy a kategoria ket adda laeng ti sumaganad nga apo ti kategoria.|Daytoy a kategoria ket adda kadagiti sumaganad nga {{PLURAL:$1|nga apo ti kategoria|$1 nga apo dagiti kategoria}}, manipud ti dagup nga $2.}}',
+'category-subcat-count-limited' => 'Daytoy a kategoria ket adda ti sumaganad nga {{PLURAL:$1|nga apo ti kategoria|$1 nga apo dagiti kategoria}}.',
+'category-article-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a panid.|Ti sumaganad nga {{PLURAL:$1|a panid|$1 a pampanid}} ket adda iti daytoy a kategoria, manipud ti dagup nga $2.}}',
+'category-article-count-limited' => 'Ti sumaganad nga {{PLURAL:$1|a panid |$1 a pampanid}} ket adda iti agdama a kategoria.',
+'category-file-count' => '{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a papeles.|Ti sumaganad nga {{PLURAL:$1| a papeles|$1  a pappapeles}} ket adda iti daytoy a kategoria, ti $2 a dagup.}}',
+'category-file-count-limited' => 'Ti sumaganad nga {{PLURAL:$1|a papeles|$1 a pappapeles}} ket adda iti agdama a kategoria.',
 'listingcontinuesabbrev' => 'tuloy.',
 'index-category' => 'Dagiti pagsurutan a panid',
 'noindex-category' => 'Dagiti saan a pagsurutan a panid',
@@ -222,8 +222,8 @@ $messages = array(
 'create-this-page' => 'Aramidem daytoy a panid',
 'delete' => 'Ikkaten',
 'deletethispage' => 'Ikkaten daytoy a panid',
-'undelete_short' => 'Isubli ti naikkat a {{PLURAL:$1|maysa a naurnos|$1 dagiti naurnos}}',
-'viewdeleted_short' => 'Kitaen {{PLURAL:$1|ti maysa a naikkat a naurnos|$1 digiti naikkat a naurnos}}',
+'undelete_short' => 'Isubli ti naikkat a  {{PLURAL:$1|maysa a naurnos|$1 a naururnos}}',
+'viewdeleted_short' => 'Kitaen {{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}',
 'protect' => 'Salakniban',
 'protect_change' => 'sukatan',
 'protectthispage' => 'Salakniban daytoy a panid',
@@ -233,7 +233,7 @@ $messages = array(
 'talkpage' => 'Pagtungtongan daytoy a panid',
 'talkpagelinktext' => 'Makipatang',
 'specialpage' => 'Espesial a panid',
-'personaltools' => 'Kinabukod a ram-ramit',
+'personaltools' => 'Bukod a ram-ramit',
 'postcomment' => 'Baro a paset',
 'articlepage' => 'Kitaen ti naglaon a panid',
 'talk' => 'Pagtungtongan',
@@ -249,11 +249,11 @@ $messages = array(
 'viewtalkpage' => 'Kitaen ti pagtungtungan',
 'otherlanguages' => 'Dagiti sabali a pagsasao',
 'redirectedfrom' => '(Naibaw-ing manipud idiay $1)',
-'redirectpagesub' => 'Ibaw-ing ti panid',
+'redirectpagesub' => 'Baw-ing a panid',
 'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $1, ti oras nga $2.',
 'viewcount' => 'Naserrekan daytoy a panid iti {{PLURAL:$1|naminsan|$1 a daras}}.',
 'protectedpage' => 'Nasalakniban a panid',
-'jumpto' => 'Mapan iti:',
+'jumpto' => 'Mapan idiay:',
 'jumptonavigation' => 'pagdaliasatan',
 'jumptosearch' => 'biruken',
 'view-pool-error' => 'Pasensian a, dagiti servers ket nadagsenan unay tattan.
@@ -293,8 +293,8 @@ $1',
 'versionrequiredtext' => 'Masapul ti bersion $1 ti MediaWiki tapno maaramat daytoy a panid. Kitaen ti [[Special:Version|panid ti bersion]].',
 
 'ok' => 'OK',
-'retrievedfrom' => 'Naala manipud iti "$1"',
-'youhavenewmessages' => 'Addaanka iti $1 ($2).',
+'retrievedfrom' => 'Naala manipud idiay "$1"',
+'youhavenewmessages' => 'Addaanka ti $1 ($2).',
 'newmessageslink' => 'dagiti baro a mensahe',
 'newmessagesdifflink' => 'naudi a sinukatan',
 'youhavenewmessagesmulti' => 'Adda dagiti baro a mensahem iti $1',
@@ -311,7 +311,7 @@ $1',
 'collapsible-expand' => 'Palawaen',
 'thisisdeleted' => 'Kitaen wenno isubli ti $1?',
 'viewdeleted' => 'Kitaen ti $1?',
-'restorelink' => '{{PLURAL:$1|maysa a naikkat a naurnos|$1 dagiti naikkat a naurnos}}',
+'restorelink' => '{{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}',
 'feedlinks' => 'Pakan:',
 'feed-invalid' => 'Saan a mabalin a kita ti maalala a pakan.',
 'feed-unavailable' => 'Awan dagiti pakan a sindikasion',
@@ -354,7 +354,7 @@ Ti pinaudi a pinagsapul ti database ket:
 <blockquote><tt>$1</tt></blockquote>
 naggapu ti uneg ti opisio "<tt>$2</tt>".
 Ti database ket nangipatulod ti biddut "<tt>$3: $4</tt>".',
-'dberrortextcl' => 'Adda biddut ti database ti  gramatika a pinagsapul.
+'dberrortextcl' => 'Adda biddut ti database ti  gramatika a panagsapul.
 Ti kinaudi a panagsapul ti database ket:
 "$1"
 naggapu ti uneg ti opisio "$2".
@@ -365,37 +365,37 @@ Ti database ket nangipatulod ti biddut "$3: $4".',
 'readonlytext' => 'Ti database ket naikandado iti baro a panagikabil ken panagbaliw, gapu dagiti kanayon nga pagsimpa, ket no malpas absublin to ti kasla idi.
 
 Ti administrador a nagkandado ket daytoy ti palawag na: $1',
-'missing-article' => 'Ti database ket saan a nakabiruk ti testo ti panid  a nabirukan na kuman, ti napanaganan a/nga "$1" $2.
+'missing-article' => 'Ti database ket saan a nakabiruk ti testo ti panid  a nabirukanna kuman, ti napanaganan ti "$1" $2.
 
-Dagiti sumaganad a gapu na daytoy ket ti nagpaso a sabali wenno pakasaritaan ti panilpo ti panid a naikkat.
+Dayoty ket gapu babaen ti sumaganad a baak a paggiddiatan wenno panilpo ti pakasaritaan ti maysa panid a dati a naikkat.
 
 No saan a kasta, baka nakasarak ti kiteb ti "software".
 
-Panngaasim ta ibagam kadagiti [[Special:ListUsers/sysop|administrador]], isurat mo ti pakaammo dayta URL.',
+Panngaasi nga  ibagam kadagiti [[Special:ListUsers/sysop|administrador]], isurat mo ti pakaammo dayta URL.',
 'missingarticle-rev' => '(binaliwan#: $1)',
 'missingarticle-diff' => '(Sabali: $1, $2)',
 'readonly_lag' => 'Automatiko a narikpan ti database kabayatan a dagiti tagabu a database servers ket kumamakam iti agturay',
 'internalerror' => 'Akin-uneg a biddut',
 'internalerror_info' => 'Akin-uneg a biddut: $1',
-'fileappenderrorread' => 'Saan nga mabasa "$1" no agpanayon.',
+'fileappenderrorread' => 'Saan a mabasa ti "$1" idi agpanayon.',
 'fileappenderror' => 'Saan a manayonan ti "$1" iti  "$2".',
-'filecopyerror' => 'Saan a matulad ti papeles "$1" iti "$2".',
-'filerenameerror' => 'Saan a managanan ti papeles "$1" iti "$2".',
-'filedeleteerror' => 'Saan a maikkat ti papeles a "$1".',
-'directorycreateerror' => 'Saan a maaramid ti direktorio a "$1".',
-'filenotfound' => 'Saan a masarakan ti papeles a "$1".',
-'fileexistserror' => 'Di mabalin a maisurat ti papeles a "$1": adda kastan a papeles',
+'filecopyerror' => 'Saan a makopia ti papeles $1 iti $2.',
+'filerenameerror' => 'Saan a managanan ti papeles "$1" iti "$2".',
+'filedeleteerror' => 'Saan a maikkat ti papeles  "$1".',
+'directorycreateerror' => 'Saan a maaramid ti direktorio  "$1".',
+'filenotfound' => 'Saan a masarakan ti papeles  "$1".',
+'fileexistserror' => 'Di mabalin a maisurat ti papeles  "$1": Adda kastan a papeles',
 'unexpected' => 'Di mapakpakadaaan a kuwenta: "$1"="$2".',
 'formerror' => 'Biddut: saan a maited ti nakabuklan.',
 'badarticleerror' => 'Saan a matungpal daytoy nga aramid iti daytoy a panid.',
 'cannotdelete' => 'Ti panid wenno ti papeles "$1" ket saan a maikkat.
 Amangan no addan sabali a nangikkat.',
-'cannotdelete-title' => 'Saan a maikkat ti panid a "$1"',
+'cannotdelete-title' => 'Saan a maikkat ti panid  "$1"',
 'badtitle' => 'Madi a titulo',
 'badtitletext' => 'Ti nakiddaw a titulo ti panid ket imbalido, blanko, wenno saan nga umno a naisilpo a titulo a maki-pagsasao wenno maki-wiki.
 Adda ngata nagyan a maysa wenno ad-adu pay a kababalin a saan a mausar iti titulo.',
-'perfcached' => 'Ti sumaganad a data ket naka-cached ken mabalin a saan a napabaro. T kangato a {{PLURAL:$1|maysa a nagbanagan ket|$1 dagiti nagbanagan}} ket magun-od idiay cache.',
-'perfcachedts' => 'Ti sumaganad a data ket naka-cached, ken naudi a napabaro idi $1. T kangato a {{PLURAL:$4|maysa a nagbanagan ket|$4 dagiti nagbanagan}} ket magun-od idiay cache.',
+'perfcached' => 'Ti sumaganad a data ket naka-cached ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagant|dagiti $1 a nagbanagan}} ket magun-od idiay cache.',
+'perfcachedts' => 'Ti sumaganad a data ket naka-cached, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan |dagiti $4 nagbanagan}} ket magun-od idiay cache.',
 'querypage-no-updates' => 'Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. 
 Saan a mipasaradiwa ita dagiti data ditoy.',
 'wrong_wfQuery_params' => 'Kamali a parametro iti wfQuery()<br />
@@ -405,26 +405,28 @@ Panagsapul: $2',
 'viewsource-title' => 'Kitaen ti taudan iti $1',
 'actionthrottled' => 'Napabuntog ti aramid',
 'actionthrottledtext' => 'Para ti pagkontra ti spam, naipatingga ka ti pinagtungpal ti adu unay iti daytoy nga aramid iti nasiket nga oras, ken nalippasamon ti patingga.
-Pangngaasi ta ipadas mo manen no madamdama.',
-'protectedpagetext' => 'Nasalakniban daytoy a panid tapno pawilan ti panag-urnos.',
+Pangngaasi nga ipadas mo manen no madamdama.',
+'protectedpagetext' => 'Nasalakniban daytoy a panid tapno mapawilan ti panag-urnos.',
 'viewsourcetext' => 'Mabalinmo a kitaen ken tuladen ti taudan daytoy a panid:',
-'viewyourtext' => "Mabalin mo a makita ken tuladen ti taudan dagiti '''inurnosmo''' ditoy a panid:",
-'protectedinterface' => 'Daytoy a panid ket mangited ti testo nga interface para iti software, ken nasalakniban tapno pawilan ti panag-abuso.',
-'editinginterface' => "'''Ballaag:''' Ururnosam ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti software.
+'viewyourtext' => "Mabalinmo a makita ken tuladen ti taudan dagiti '''inurnosmo''' ditoy a panid:",
+'protectedinterface' => 'Daytoy a panid ket mangited ti testo nga interface para iti software, ken nasalakniban tapno mapawilan ti panag-abuso.',
+'editinginterface' => "'''Ballaag:''' Ururnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti software.
 Dagiti panagsukat iti daytoy a panid ket maarigan ti langa ti agaramat nga interface dagiti sabali nga agar-aramat.
-Para kadagiti patarus, pangngaasim ta padasem nga aramaten ti [//translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti gandat a panagipatarus iti MediaWiki.",
+Para kadagiti panagipatarus, pangngaasim a padasen ti agaramat ti [//translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti gandat a panagipatarus ti MediaWiki.",
 'sqlhidden' => '(nakalemmeng ti biniruk a SQL )',
-'cascadeprotected' => 'Daytoy a panid ket nasalakniban ti panag-urnos, ngamin ket nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga|dagiti panid, nga}} nasalakniban iti pagpilian nga "agsariap"  :
+'cascadeprotected' => 'Daytoy a panid ket nasalakniban para iti panag-urnos, ngamin ket nairaman kadagiti sumaganad {{PLURAL:$1|a panid, a|a pampanid, a}} nasalakniban nga adda ti napili nga "agsariap"  :
 $2',
-'namespaceprotected' => "Awananka iti pammalubos nga agurnos kadagiti panid iti '''$1''' a nagan ti lugar.",
-'customcssprotected' => 'Awan ti pammalubos mo ti agurnos ditoy panid ti CSS, ngamin ta adda linaonna a kukua dagiti agar-aramat ti sabali a kasasaad.',
-'customjsprotected' => 'Awan ti pammalubos mo ti agurnos ditoy panid ti JavaScript, ngamin ta adda linaonna a kukua dagiti agar-aramat ti sabali a kasasaad.',
-'ns-specialprotected' => 'Saan a mapaurnos dagiti espesial a panid.',
-'titleprotected' => "Nasalakniban daytoy a titulo manipud iti pianaka-aramid ni [[User:$1|$1]].
+'namespaceprotected' => "Awan ti pammalubosmo nga agurnos kadagiti panid iti '''$1''' a nagan ti lugar.",
+'customcssprotected' => 'Awan ti pammalubosmo nga agurnos ditoy panid ti CSS, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.',
+'customjsprotected' => 'Awan ti pammalubosmo nga agurnos ditoy panid ti JavaScript, ngamin ket adda linaonna a tagikua dagiti agar-aramat ti sabali a kasasaad.',
+'ns-specialprotected' => 'Saan a mabalin nga urnosen dagiti espesial a panid.',
+'titleprotected' => "Daytoy a titulo ket nasalakniban manipud ti panakapartuat babaen ni [[User:$1|$1]].
 Ti naited a rason ket ''$2''.",
 'filereadonlyerror' => 'Di nabaliwan ti papales "$1" gapu ket ti repositorio ti papeles "$2" ket basaen laeng a moda.
 
 Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'".',
+'invalidtitle-knownnamespace' => 'Imbalido a titulo nga adda ti nagan ti lugar "$2" ken testo "$3"',
+'invalidtitle-unknownnamespace' => 'Imbalido a titulo nga adda di-amammo a nagan ti lugar a numero $1 ken testo "$2"',
 
 # Virus scanner
 'virus-badscanner' => 'Madi di panaka-aramidna: Di am-ammo a birus a panagskan: "$1"',
@@ -437,15 +439,15 @@ Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'"
 Mabalinmo nga ituloy ti agusar iti {{SITENAME}} a di am-ammo, wenno [[Special:UserLogin|sumrek ka manen]] iti sigud wenno sabali nga agar-aramat.
 Laglagipem a sumagmamano a pampanid ti mabalin a nakaparang latta a kasla nakaserrek ka pay laeng, agingga na nga dalusam ti \"cache\" ti panagbasabasam.",
 'welcomecreation' => '== Kablaaw, $1! ==
-Naramiden ti pakabilangam.
+Naaramiden ti pakabilangam.
 Dimo liplipatan a sukatan dagita kaykayatmo idiay [[Special:Preferences|{{SITENAME}} kaykayat]].',
 'yourname' => 'Nagan ti agar-aramat:',
 'yourpassword' => 'Kontrasenias:',
 'yourpasswordagain' => 'Uliten ti kontrasenias:',
-'remembermypassword' => 'Laglagipem ti iseserrekko daytoy a pagbasabasa (iti kadakkelan $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}})',
+'remembermypassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (para iti kaadu iti $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}})',
 'securelogin-stick-https' => 'Agyan ka a nakasilpo iti HTTPS no nakastrekka',
 'yourdomainname' => 'Ti bukodmo a pagturayan:',
-'externaldberror' => 'Addaan a biddut ti panakasingked ti database wenno saan mo a mabalin ti agpabaro ti ruar a pakabilangan.',
+'externaldberror' => 'Adda biddut idi ti panakapasingked ti database wenno saanmo a mabalin ti agpabaro ti bukodmo a ruar a pakabilangan.',
 'login' => 'Sumrek',
 'nav-login-createaccount' => 'Sumrek / agaramid ti pakabilangan',
 'loginprompt' => 'Nasken nga adda pakabaelan dagiti "galietas" ti "pagbasabasam" tapno maka-serrek ditoy {{SITENAME}}.',
@@ -473,10 +475,10 @@ Nabaldado dagiti galietas mo.
 Pangngaasi ta pakabaelam ida,  ken sumrek ka nga agusar ti baro a nagan ken kontrasenias.',
 'nocookieslogin' => 'Ti {{SITENAME}} ket agus-usar  kadagiti galietas tapno makastrek dagiti agar-aramat.
 Nabaldado dagiti galietas mo.
-Pangngaasim ta pakabaelam ida ken padasem manen ti sumrek.',
+Pangngaasi a pakabaelam ida ken padasem manen ti sumrek.',
 'nocookiesfornew' => 'Ti pakabilangan ti agar-aramat ket saan a naaramid, saan mi a masingkedan ti naggapuan na.
 Usarem dagita galietas mo, ipadas mo manen daytoy a panid.',
-'noname' => 'Saan mo a nainaganan ti maisu a nagan ti agar-aramat.',
+'noname' => 'Saanmo a nainaganan ti agpayso a nagan ti agar-aramat.',
 'loginsuccesstitle' => 'Balligi ti panagserrek',
 'loginsuccess' => "'''Nakastrekkan iti {{SITENAME}} a kas ni \"\$1\".'''",
 'nosuchuser' => 'Awan ti agar-aramat nga agnagan iti "$1". 
@@ -484,11 +486,11 @@ Usarem dagita galietas mo, ipadas mo manen daytoy a panid.',
 Kitaem ti panangiletra, wenno [[Special:UserLogin/signup|agaramid ka ti baro a pakabilangan]].',
 'nosuchusershort' => 'Awan ti agar-aramat nga addaan iti nagan a "$1".
 Kitaem ti panangiletra.',
-'nouserspecified' => 'Nasken nga inaganam ti nagan ti agar-aramat.',
+'nouserspecified' => 'Nasken nga agikabilka ti nagan ti agar-aramat.',
 'login-userblocked' => 'Naserraan daytoy nga agar-aramat. Maiparit ti sumrek.',
 'wrongpassword' => 'Biddut (wenno awan) ti kontrasenias nga ikabil mo. Padasem koma manen, apo.',
 'wrongpasswordempty' => 'Blanko ti impanmo a kontrasenias. Padasem koma manen apo.',
-'passwordtooshort' => 'Ti kontrasenias ket nasken nga addaan ti {{PLURAL:$1| 1 a karakter|$1 a dagiti karakter}}.',
+'passwordtooshort' => 'Ti kontrasenias ket nasken nga adda  {{PLURAL:$1|iti 1 a karakter|kadagiti $1 a karakter}}.',
 'password-name-match' => 'Masapul a saan nga agpadpada ti  nagan mo nga agar-aramat ken kontrasenias',
 'password-login-forbidden' => 'Maiparit daytoy ususarem a nagan ti agar-aramat ken kontrasenias.',
 'mailmypassword' => 'E-surat ti baro a kontrasenias',
@@ -497,7 +499,7 @@ Kitaem ti panangiletra.',
 a kontrasenias para iti {{SITENAME}} ($4). Ti saan nga agnayon a kontrasenias ti agususar
 "$2" ket naaramiden ken naidisso iti "$3". No kastan ti kinayatmo,
 masapul a sumrek ka ta agpili ka ti baro a kontrasenias.
-Madinton ti saan nga agnayon a kontrasenias iti {{PLURAL:$5|aldaw|$5 al-aldaw}}.
+Ti temporario a bukodmo a kontrasenias ket agpaso  {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 
 No sabali ti nagkiddaw, wenno no malagipmo pay ti kontrasenias mo ket dimon kayat a suktan daytoy, mabalin a dimo lattan ikaskaso daytoy a mensahe ket itultuloymo latta nga usaren ti daan a kontrasenias.',
 'noemail' => 'Awan ti nagtaengan ti e-surat  a nairehistro iti agar-aramat a ni "$1".',
@@ -507,18 +509,18 @@ Sumrekka koma manen kalpasan a maawatmo daytoy a baro a kontrasenias.',
 'blocked-mailpassword' => 'Ti IP a pagtaengam ket naserraan iti panagurnos, isu nga saan a mabalin nga agusar ti panagala ti kontrasenias nga opisio tapno mapawilan ti panag-abuso.',
 'eauthentsent' => 'Naipatuloden ti pammasingked nga e-surat iti naited nga e-surat a pagtaengan.
 Sakbay nga ania man nga e-surat ti maipatulod iti pakabilangan, masapul a surotem dagiti maibagbaga iti e-surat, tapno mapasingkedan a ti pakabilangan ket agpayso a kukuam.',
-'throttled-mailpassword' => 'Ti palagip ti kontrasenias ket naipatuloden, iti napalabas nga {{PLURAL:$1|oras|$1 oras}}.
-Tapno maipawilan ti panag-abuso, maysa laeng a palagip ti kontrasenias ti maipatulod iti {{PLURAL:$1|oras|$1 oras}}.',
+'throttled-mailpassword' => 'Ti palagip ti kontrasenias ket naipatuloden, iti napalabas nga {{PLURAL:$1|oras|$1 nga oras}}.
+Tapno maipawilan ti panag-abuso, maysa laeng a palagip ti kontrasenias ti maipatulod ti tunggal maysa nga {{PLURAL:$1|oras|$1 nga oras}}.',
 'mailerror' => 'Biddut iti panagipatulod iti surat: $1',
-'acct_creation_throttle_hit' => 'Dagiti bisita daytoy wiki nga agususar ti IP a pagtaengan ket nakaaramid iti {{PLURAL:$1|1 pakabilangan|$1 dagiti pakabilangan}} ti maysa nga aldaw, dagita laeng ti mabalin a mausar.
-Ti nagbanagan na, dagitoy bisita nga agususar ti IP a pagtaengan ket saan a makaaramid ti pakabilangan tatta.',
+'acct_creation_throttle_hit' => 'Dagiti bisita daytoy wiki nga agususar ti IP a pagtaengan ket nakaaramid {{PLURAL:$1|iti 1 a pakabilangan|kadagiti $1 a pakabilangan}} ti maysa nga aldaw, dagita laeng ti mabalin a mausar.
+Ti nagbanaganna, dagitoy bisita nga agususar ti IP a pagtaengan ket saan a makaaramid ti pakabilangan tatta.',
 'emailauthenticated' => 'Napasingkedan ti e-surat a pagtaengan idi $2 ti oras nga $3.',
 'emailnotauthenticated' => 'Saan pay a napasingkedan ti e-surat mo.
 Awan ti e-surat nga ipatulod para dagitoy a langa.',
 'noemailprefs' => 'Ipanaganan ti e-surat a pagtaengan tapno agbalin dagitoy a langa.',
 'emailconfirmlink' => 'Pasingkedam ti e-surat a pagtaengam',
 'invalidemailaddress' => 'Ti e-surat a pagtaengam ket saan a maawat, ket kasla addaan ti saan a napudno a nakabuklan.
-Pangngaasi ta ikkam ti nasayaat  a  nakabuklan a pagtaengan wenno ikkatem amin dagiti naikabil mo.',
+Pangngaasi nga ikkam ti nasayaat  a  nakabuklan a pagtaengan wenno ikkatem amin dagiti naikabil mo.',
 'cannotchangeemail' => 'Dagiti pakabilangan nga e-surat a pagtaengan ket saan a mabaliwan ditoy a wiki.',
 'emaildisabled' => 'Daytoy a pagsaaadan ket saan a makaipatuod kadagiti e-surat.',
 'accountcreated' => 'Naaramiden ti pakabilangan',
@@ -532,7 +534,7 @@ Saan mo nga ikaskaso daytoy a mensahe, no biddut a naaramid daytoy a pakabilanga
 Pangaasim ta aguray ka sakbay nga agipadas manen.',
 'login-abort-generic' => 'Madi ti panakastrekmo - Napasardeng',
 'loginlanguagelabel' => 'Pagsasao: $1',
-'suspicious-userlogout' => 'Madi ti kiniddaw mo a rummuar, ngamin ket kasla inpatulod ti nadadael a "panagbasabasa" wenno "caching proxy".',
+'suspicious-userlogout' => 'Madi ti kiniddawmo a rummuar, ngamin ket kasla inpatulod ti nadadael a "panagbasabasa" wenno "caching proxy".',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Di am-ammo a biddut ti kukua ti PHP a surat () nga opisio.',
@@ -563,30 +565,30 @@ Baka mabalin a nasukatam metten ti kontrasenias mo wenno nagkiddaw ka ti saan ng
 'passwordreset-text' => 'Lippasem daytoy a kinabuklan tapno maipatulodan ka ti e-surat a palagipan kadagiti dsalaysay ti pakabilangam.',
 'passwordreset-legend' => 'Ipasubli ti kontrasenias',
 'passwordreset-disabled' => 'Naikkat dagiti pagisubli iti kontrasenias daytoy a wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Ikabil ti maysa a bukel ti data dita baba}}',
+'passwordreset-pretext' => '{{PLURAL:$1||Ikabil ti maysa a bukel ti datos dita baba}}',
 'passwordreset-username' => 'Nagan ti agar-aramat:',
 'passwordreset-domain' => 'Pagturayan:',
 'passwordreset-capture' => 'Kayatmo a kitaen ti nagbanagan ti e-surat?',
 'passwordreset-capture-help' => 'No markaam daytoy a kahon, ti e-surat (nga adda saan nga agnayon a kontrasenias) ket maipakita kenka ken maipatulod iti agar-aramat.',
 'passwordreset-email' => 'E-surat a pagtaengan:',
-'passwordreset-emailtitle' => 'Detalye ti pakabilangan iti {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Addaan (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti palagip para
-dagiti detalye ti pakabilangam para iti {{SITNAME}} ($4) . Ti sumaganad {{PLURAL:$3|a pakabilangan|a dadagiti pakabilangan}} ti agar-aramat ket
+'passwordreset-emailtitle' => 'Salaysay ti pakabilangan iti {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti palagip para
+dagiti salaysay ti pakabilangam para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket
 nakairaman iti daytoy nga e-surat a pagtaengan:
 
 $2
 
-{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso iti {{PLURAL:$5|maysa nga aldaw|$5 nga al-aldaw}}.
+{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso  {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 Sumrekka kuman ta agpili ka ti baro a kontrasenias mo tattan. No adda met sabali a nagaramid daytoy a 
 panagkiddaw, wenno malagip mo ti dati a kontrasenias mo, ket saan mo a kayaten a sukatan, saan mo nga ikaskaso daytoy a mensahe ken 
 agtuloy ka nga agusar ti daan a kontrasenias.',
-'passwordreset-emailtext-user' => 'Daytoy nga  agar-aramat  $1 iti {{SITENAME}} ket nagkiddaw ti palagip para dagiti detalye ti pakabilangan iti {{SITENAME}}
-($4) . Ti sumaganad {{PLURAL:$3|a pakabilangan|kadagiti pakabilangan}}  ti agar-aramat ket
+'passwordreset-emailtext-user' => 'Daytoy nga  agar-aramat  $1 iti {{SITENAME}} ket nagkiddaw ti palagip para dagiti salaysay ti pakabilangan iti {{SITENAME}}
+($4) .  {{PLURAL:$3|Ti|Dagiti}} sumaganad a pakabilanagn ti agar-aramat ket
 nakairaman iti daytoy nga e-surat a pagtaengan:
 
 $2
 
-{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso iti {{PLURAL:$5|maysa nga aldaw|$5 nga al-aldaw}}.
+{{PLURAL:$3|Daytoy a saan nga agnayon a kontrasenias|Dagitoy a saan nga agnayon a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.
 Sumrekka kuman ta agpili ka ti baro a kontrasenias mo tattan. No adda met sabali a nagaramid daytoy a 
 panagkiddaw, wenno malagip mo ti dati a kontrasenias mo, ket saan mo a kayaten a sukatan, saan mo nga ikaskaso daytoy a mensahe ken 
 agtuloy kan nga agusar ti daan a kontrasenias mo.',
@@ -599,7 +601,7 @@ Saan nga agnayon a kontrasenias: $2',
 # Special:ChangeEmail
 'changeemail' => 'Sukatan ti e-surat a pagtaengan',
 'changeemail-header' => 'Sukatan ti e-surat a pagtaengan ti pakabilangan',
-'changeemail-text' => 'Lippasem daytoy a kabuklan ti panagsukat ti e-surat a pagtaengam. Masapul mo nga ikabil ti kontrasenias mo tapno mapasingkedan ti panagsukat.',
+'changeemail-text' => 'Lippasem daytoy a kabuklan ti panagsukat ti e-surat a pagtaengam. Nasken nga ikabilmo ti kontrasenias tapno mapasingkedan daytoy a panagsukat.',
 'changeemail-no-info' => 'Masapul a nakastrekka tapno dagus ka a makapan ditoy a panid.',
 'changeemail-oldemail' => 'Agdama nga E-surat a pagtaengam:',
 'changeemail-newemail' => 'Baro nga e-surat a pagtaengam:',
@@ -622,7 +624,7 @@ Saan nga agnayon a kontrasenias: $2',
 'nowiki_tip' => 'Saan nga ikaskaso ti panagbuklan a wiki',
 'image_tip' => 'Naibinggas a papeles',
 'media_tip' => 'Panilpo ti papeles',
-'sig_tip' => 'Ti pirmam nga addaan ti oras ken petsa',
+'sig_tip' => 'Ti pirmam nga adda ti oras ken petsa',
 'hr_tip' => 'Pakuros a linia (manmano laeng nga aramaten)',
 
 # Edit pages
@@ -642,7 +644,7 @@ Mairehistro ti IP a pagtaengam iti pakasaritaan ti panagurnos iti daytoy a panid
 No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnos mo nga awan ti pakabuklan na.",
 'missingcommenttext' => 'Pangngaasim a mangipanka iti komentario dita baba.',
 'missingcommentheader' => "'''Palagip:''' Saanka a nangipan iti suheto/paulo para iti daytoy a komentario.
-No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnos mo nga awan ti pakabuklan na.",
+No agtakla ka ti \"{{int:savearticle}}\" manen, maidulin ti inurnormo nga awan ti pakabuklanna.",
 'summary-preview' => 'Naipadas a  pakabuklan:',
 'subject-preview' => 'Suheto/naipadas a paulo:',
 'blockedtitle' => 'Naseraan ti agar-aramat',
@@ -669,17 +671,17 @@ Ti rason nga inted ket:
 
 Mabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panag-serra.
 
-Laglagipem nga saan mo a mabalin nga usaren ti "e-suratam daytoy nga agar-aramat "  ket laeng no addaan ka ti napudno nga e-surat a pagtaengan a nakarehistro idiay [[Special:Preferences|kakaykayatam]] ken saan ka a
+Laglagipem nga saanmo a mabalin nga usaren ti "e-suratam daytoy nga agar-aramat "  ket laeng no addaan ka ti napudno nga e-surat a pagtaengan a nakarehistro idiay [[Special:Preferences|kakaykayatam]] ken saan ka a
 naserraan ti panag-usar na.
 
 Ti tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.
-Pangaasi nga iraman mo amin dagiti detalye ti amin a panagsaludsod mo.',
+Pangaasi nga iramanmo amin dagiti salaysay ti amin a panagsaludsodmo.',
 'blockednoreason' => 'awan ti naited a rason',
-'whitelistedittext' => 'Masapul a/nga $1 ka tapno makaurnos kadagiti panid.',
+'whitelistedittext' => 'Nasken ti $1 tapno makaurnos kadagiti panid.',
 'confirmedittext' => 'Masapul a pasingkedam ti e-surat sakbay a makaurnos ka kadagiti panid.
 Pangngaasim nga ikabil ken ipapudnom ti e-suratmo idiay [[Special:Preferences|kaykayat dagiti agar-aramat ]].',
 'nosuchsectiontitle' => 'Saan a mabirukan ti kasta a paset',
-'nosuchsectiontext' => 'Pinadasmo nga inurnos ti maysa a paet nga awan pay.
+'nosuchsectiontext' => 'Pinadasmo nga inurnos ti maysa a paset nga awan pay.
 Naiyalis ngatan wenno naikkat idi kitkitaen dayta a panid.',
 'loginreqtitle' => 'Masapul ti sumrek',
 'loginreqlink' => 'sumrek',
@@ -689,14 +691,14 @@ Naiyalis ngatan wenno naikkat idi kitkitaen dayta a panid.',
 
 Ti kontrasenias ti baro a pakabilangan ket masukatan idiay ''[[Special:ChangePassword|pagsukatan ti kontrasenias]]'' a panid no sumrekka.",
 'newarticle' => '(Baro)',
-'newarticletext' => "Nasurotmo ti maysa a panilpo iti saan pay a narugian wenno naaramid a panid. Tapno marugian daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay a pakaammo). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, agtakla ka laeng ti '''agsubli'' a buton ti pabasabasam tapno makasublika iti naggapuam a panid.",
+'newarticletext' => "Nasurotmo ti maysa a panilpo ti panid a saan pay a napartuat. Tapno pmapartuat daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay a pakaammo). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, agtakla ka laeng ti '''agsubli'' a buton ti pabasabasam tapno makasublika iti naggapuam a panid.",
 'anontalkpagetext' => "----''Daytoy ti pakitungtungan a panid para iti di am-ammo nga agar-aramat a saan pay a nakaaramid ti pakabilangan, wenno saan na nga us-usaren.
 Dakami ket agusar kami ti numero nga IP a pagtaengan ti panangilasin dagiti lalaki/babai.
 Ti kastoy nga IP a pagtaengan ket us-usaren a bingayan ti adu pay a sabsabali nga agar-aramat.
 No sika ket maysa a di am-ammo nga agar-aramat ken dagiti awan ti kapategan a komentario ket napaitudo kenka, pangngaasi nga [[Special:UserLogin/signup|agaramid ka ti pakabilangam]] wenno [[Special:UserLogin|sumrekka]] 
 tapno maawanan ti pinakaulaw kadagiti sabali a di am-ammo nga agar-aramat.",
-'noarticletext' => 'Awan pay ti  nagyan na daytoy a panid.
-Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] iti sabsabali a pampanid,
+'noarticletext' => 'Awan ti agdama a testo  daytoy a panid.
+Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] kadagiti sabsabali a pampanid,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirukka],
 wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} urnosem daytoy a panid].',
 'noarticletext-nopermission' => 'Awan pay ti  nagyan na daytoy a panid.
@@ -706,7 +708,7 @@ wenno <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'userpage-userdoesnotexist' => 'Ti pakabilangan ti agar-aramat "$1" ket saan a nakarehistro. 
 Pangngaasi a kitaem no kayatmo ti agaramid/urnosen daytoy a panid.',
 'userpage-userdoesnotexist-view' => 'Ti pakabilangan ni agar-aramat "$1" ket saan a nakarehistro.',
-'blocked-notice-logextract' => 'Naserraan tatta daytoy nga agar-aramat.
+'blocked-notice-logextract' => 'Agdama a naserraan daytoy nga agar-aramat.
 Ti naudi a listaan ti panaka-serra ket adda dita baba tapno mausar a reperensia:',
 'clearyourcache' => "'''Pakaammo:''' No nalpas ka nga agidulin, kuma ket masapul nga ipalabas ti cahe ti pinagbasabasam tapno makita dagiti sinukatam.
 * '''Firefox / Safari:''' Tenglen ti ''Sukatan'' bayat nga agtakla ti ''Ikarga manen'', wenno itakla ti ''Ctrl-F5'' wenno''Ctrl-R'' (''⌘-R'' Mac)
@@ -714,15 +716,15 @@ Ti naudi a listaan ti panaka-serra ket adda dita baba tapno mausar a reperensia:
 * '''Internet Explorer:''' Tenglen ti ''Ctrl'' bayat nga agtakla ti ''Ipasaradiwa'', wenno itakla ti ''Ctrl-F5''
 * '''Konqueror:''' Itakla ti ''Ikarga manen'' wenno itakla ti ''F5''
 * '''Opera:''' Dalusan ti cache iti ''Ramramit → Kakaykayatan''",
-'usercssyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a CSS sakbay nga idulin mo.",
-'userjsyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a JavaScript sakbay nga idulin mo.",
-'usercsspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a CSS.'''
+'usercssyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a CSS sakbay nga idulinmo.",
+'userjsyoucanpreview' => "'''Paammo:''' Usaren ti \"{{int:showpreview}}\" buton ti panagsubok ti baro a JavaScript sakbay nga idulinmo.",
+'usercsspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''
 '''Saan pay a naidulin!'''",
-'userjspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a JavaScript.'''
+'userjspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a JavaScript.'''
 '''Saan pay a naidulin!'''",
-'sitecsspreview' => "'''Laglagipem nga ipadpadas mo laeng daytoy a CSS.'''
+'sitecsspreview' => "'''Laglagipem nga ipadpadasmo laeng daytoy a CSS.'''
 '''Saan pay a naidulin!'''",
-'sitejspreview' => "'''Laglagipem nga ipadpadas mo laeng ti kodigo daytoy a JavaScript.'''
+'sitejspreview' => "'''Laglagipem nga ipadpadasmo laeng ti kodigo daytoy a JavaScript.'''
 '''Saan pay nga naidulin!'''",
 'userinvalidcssjstitle' => "'''Ballaag:''' Awan ti kudil a \"\$1\".
 Annawid a .css ken .js dagiti titulo ket agususar ti napababa a letra, a kas dagiti {{ns:user}}:Foo/vector.css saan ket a {{ns:user}}:Foo/Vector.css.",
@@ -732,19 +734,19 @@ Annawid a .css ken .js dagiti titulo ket agususar ti napababa a letra, a kas dag
 Dagiti sinukatam ket saan pay a naidulin!",
 'continue-editing' => 'Agtultuloy nga agurnos',
 'previewconflict' => 'Daytoy a panagpadas ket agiparang ti testo dita ngato a panagurnos a lugar a kasla agparang no kayatmo nga idulin.',
-'session_fail_preview' => "'''Pasensian a! Saan mi a maaramid ti panag-urnos gapu ngamin ta naawanan ti gimong ti data.'''
-Pangngaasi ta padasem manen.
+'session_fail_preview' => "'''Pasensian a! Saanmi a maaramid ti panag-urnos gapu ngamin ta naawanan ti gimong ti data.'''
+Pangngaasi a padasem manen.
 No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek ka manen.",
-'session_fail_preview_html' => "'''Pangngaasi! Saan mi a maaramid ti panagurnos mo ngamin ket naawanan ti gimong a datos.'''
+'session_fail_preview_html' => "'''Pangngaasi! Saanmi a maaramid ti panagurnosmo ngamin ket naawanan ti gimong a datos.'''
 
-''Gapu ti {{SITENAME}} ket addaan ti nakilaw a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti pinagraut ti dakes a JavaScript.''
+''Gapu ti {{SITENAME}} ket addaa ti nakilaw a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut ti dakes a JavaScript.''
 
-'''No daytoy ket pudno a panagurnos, pangngaasi ta padasem manen.'''
+'''No daytoy ket pudno a panagurnos, pangngaasi a padasem manen.'''
 No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
-'token_suffix_mismatch' => "'''Ti panag-urnos mo ket saan a naawat ngamin ket ti klientem ket dinadael na ti kuldit ti kababalin idiay pinagpudno ti panag-urnos.'''
+'token_suffix_mismatch' => "'''Ti panag-urnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna ti kuldit ti kababalin idiay pinagpudno ti panag-urnos.'''
 Ti panag-urnos ket saan a naawat tapno mapawilan ti panakadadael ti testo ti panid.
-Mapasamak daytoy no agus-usar ka ti saan a nasayaat a naibasta ti sapot a diamammo a proxy a panagserbi.",
-'edit_form_incomplete' => "'''Adda dagiti paset ti panag-urnos a kabuklan a saan a nakadanon dita server; kitkitaen nga dagiti pianag-urnos mo ket saan a naikkatan ken padasem manen.'''",
+Mapasamak daytoy no agus-usarka ti saan a nasayaat a naibasta ti sapot a diamammo a proxy a panagserbi.",
+'edit_form_incomplete' => "'''Adda dagiti paset ti panag-urnos a kabuklan a saan a nakadanon dita server; kitkitaen nga dagiti panag-urnosmo ket saan a naikkatan ken padasem manen.'''",
 'editing' => 'Ururnosen ti $1',
 'creating' => 'Agparpartuat ti $1',
 'editingsection' => 'Ururnosen ti $1 (paset)',
@@ -752,7 +754,7 @@ Mapasamak daytoy no agus-usar ka ti saan a nasayaat a naibasta ti sapot a diamam
 'editconflict' => 'Adda kasinnungat ti panag-urnos: $1',
 'explainconflict' => "Adda sabali a nagsukat iti daytoy a panid idi nangrugi ka a nagurnos.
 Ti ngato a lugar ti testo ket adda dagiti nagyanna a testo ti panid a kasla agdama a kita na.
-Ti inurnos mo ket maipakita dita babba a lugar ti testo
+Ti inurnosmo ket maipakita dita babba a lugar ti testo
 Ipatipon mo dagiti sinukatam idiay lugar ti testo.
 '''Iti laeng'' testo dita ngato a lugar ti testo ti maidulin no pesselem ti \"{{int:savearticle}}\".",
 'yourtext' => 'Ti testom',
@@ -760,53 +762,53 @@ Ipatipon mo dagiti sinukatam idiay lugar ti testo.
 'nonunicodebrowser' => "'''Ballaag: Ti  pabasabasam ket saan a kasla unicode .'''
 Adda sabali a mausar tapno makaurnos ka kadagiti panid: Ti saan nga-ASCII a kababalin ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
 'editingold' => "'''Ballag: Ururnosem ti daan a panag-baliw iti daytoy a panid.'''
-No idulin mo, mapukaw amin a sinukatam iti daytoy a panag-baliw.",
+No idulinmo, mapukaw amin a sinukatam iti daytoy a panag-baliw.",
 'yourdiff' => 'Dagiti nagdudumaan',
 'copyrightwarning' => "Laglagipenyo koma, apo, nga amin a parawad iti {{SITENAME}} ket maibilang a nairuar iti babaen ti $2 (kitaen ti $1 para kadagiti salaysay). 
 No dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />
 Kasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladmo ngem iti maysa a nawaya a pagturayan ti publiko wenno pumadmad a libre a pagtaudan.
  '''Saan a mangipan iti addaan a karbengan ti pinagpablaak nga obra no awan ti  pammalubos!'''",
-'copyrightwarning2' => "Pangngaasiyo, apo, ta laglagipen nga amin a parawad iti {{SITENAME}} ket mabalin a maurnos, masuktan, wenno ikkaten dagiti sabali pay nga agar-aramat.
+'copyrightwarning2' => "Pangngaasiyo, apo, a laglagipen nga amin a parawad iti {{SITENAME}} ket mabalin a maurnos, masuktan, wenno ikkaten dagiti sabali pay nga agar-aramat.
 No dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmo laengen nga ip-ipan wenno ipabpablaak ditoy.<br />
 Kasta met nga ikarim kadakami a bukodmo a sinurat wenno gapuanan daytoy, wenno tinuladam ngem iti maysa a nawaya a pagturayan ti publiko wenno pumadmad a libre a pagtaudan (kitaen ti $1 para iti salaysay).
 '''Saan a mangipan iti addaan ti karbengan ti pinagpablaak nga obra no awan ti  pammalubos!'''",
 'longpageerror' => "'''Biddut: Ti testo nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kil-kilobyte}} a katiddog, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kil-kilobyte}}.'''
 Isu ti gapuna a saan a maidulin.",
-'readonlywarning' => "'''Ballaag: Narikepan ti database tapno masimpaan, saan mo a mabalin nga idulin dagita inurnos mo tattan.'''
-No kayatmo i \"cut-n-paste\" mo dagiti testo iti testo a papeles ken idulin mo no madamdama.
+'readonlywarning' => "'''Ballaag: Narikepan ti database tapno masimpaan, saan mo a mabalin nga idulin dagita inurnosmo tattan.'''
+No kayatmo i \"cut-n-paste\" mo dagiti testo iti testo a papeles ken idulinmo no madamdama.
 
 Ti administrador a nangrikep ket saan a nangted ti palawag: \$1",
 'protectedpagewarning' => "'''Ballaag:  Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti makaurnos ditoy.'''
 Ti nakaudi a naikabil a listaan ket adda dita baba tapno usarena  reperensia:",
-'semiprotectedpagewarning' => "''Pakaammo:''' Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.
+'semiprotectedpagewarning' => "'''Pakaammo:'''Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.
 Ti naudi a naikabil a listaan ket adda dita baba tapno usaren a reperensia:",
 'cascadeprotectedwarning' => "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng administrador nga addaan ti  gundaway ti makaurnos, ngamin ket nairaman kadagiti sumaganad a sariap a nasalakniban
-{{PLURAL:$1|panid|dagiti panid}}:",
-'titleprotectedwarning' => "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ti masapul a makaaramid.'''
+{{PLURAL:$1|a panid|a pampanid}}:",
+'titleprotectedwarning' => "'''Ballaag:  Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan a karbengan ]] ket nasken ti agpartuat iti daytoy.'''
 Ti kinaudi a naikabil iti listaan ket naikabil dita baba tapno usaren a reperensia:",
-'templatesused' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:',
-'templatesusedpreview' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} ti nausar daytoy a pagpadas:',
-'templatesusedsection' => '{{PLURAL:$1|Plantilia|Dagiti plantilia}} a naaramat iti daytoy a paset:',
+'templatesused' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:',
+'templatesusedpreview' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a nausar iti daytoy a panagpadas:',
+'templatesusedsection' => '{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a paset:',
 'template-protected' => '(nasalakniban)',
 'template-semiprotected' => '(nasalakniban-bassit)',
-'hiddencategories' => 'Daytoy a panid ket kameng {{PLURAL:$1|1 ti nakalemmeng a kategoria|$1 dagiti nakalemmeng a kategoria}}:',
+'hiddencategories' => 'Daytoy a panid ket kameng  {{PLURAL:$1|ti 1 a nailemmeng a kategoria|dagiti $1 a nailemmeng a kategoria}}:',
 'nocreatetitle' => 'Napatinggaan ti panagaramid iti panid',
 'nocreatetext' => 'Pinaritan ti {{SITENAME}} ti kabaelan a panagaramid iti kabarbaro a pampanid.
 Mabalinmo ti agsubli ken urnosen ti adda a panid, wenno [[Special:UserLogin|sumrek wenno agaramid ti pakabilangan]].',
-'nocreate-loggedin' => 'Awan ti nangpalubos kenka a mangaramid kadagiti kabarbaro a panid.',
+'nocreate-loggedin' => 'Awan ti pammalubosmo nga agpartuat kadagiti baro a panid.',
 'sectioneditnotsupported-title' => 'Saan a mabalin ti agurnos ti paset',
 'sectioneditnotsupported-text' => 'Saan a mabalin ti panag-urnos ti paset iti daytoy a panid.',
 'permissionserrors' => 'Dagiti biddut ti pammalubos',
-'permissionserrorstext' => 'Awan ti pammalubos mo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|dagiti rason}}:',
-'permissionserrorstext-withaction' => 'Awan ti pammalubos mo nga $2, gapu ti sumaganad {{PLURAL:$1|a rason|dagiti rason}}:',
-'recreate-moveddeleted-warn' => "''Ballaag: Agar-aramidka ti panid a naikkaten iti kallabes.'''
+'permissionserrorstext' => 'Awan ti pammalubosmo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|a rasrason}}:',
+'permissionserrorstext-withaction' => 'Awan ti pammalubosmo nga $2, gapu ti sumaganad {{PLURAL:$1|a rason|rasrason}}:',
+'recreate-moveddeleted-warn' => "''Ballaag: Agparpartuatka manen ti naikkat idi a panid.'''
 
 Nasken a siguraduem no maikanatad nga ituloymo a parnuayen manen wenno urnosen daytoy a panid.
 Ti panaka-ikkat ken panka-iyalis a listaan para iti daytoy  a panid ket adda ditoy a pakakitaan:",
 'moveddeleted-notice' => 'Naikkaten daytoy a panid.
 Ti listaan a panaka-ikkat ken panaka-iyalis ti panid ket naikabil dita baba tapno usaren a reperensia.',
 'log-fulllog' => 'Kitaem amin dagita listaan',
-'edit-hook-aborted' => 'Iti panag-urnos ket napasardeng ti kawit.
+'edit-hook-aborted' => 'Ti panag-urnos ket napasardeng ti kawit.
 Awan ti intedna a palawag.',
 'edit-gone-missing' => 'Saan a mapabaro daytoy a panid.
 Kasla met naikkaten.',
@@ -819,21 +821,27 @@ Adda met daytoyen.',
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Ballaag:''' Daytoy a panid ket adu unay kadagiti nangina a parser nga opisio a pinagtawtawag.
 
-Adda kuman basbasit ngem $2 {{PLURAL:$2|pinagtawtawag|dagiti pinagtawtawag}}, adda {{PLURAL:$1|idiayen a $1 pinagtawtawag|a $1 kadagiti pinagtawtawag}}.",
-'expensive-parserfunction-category' => 'Dagiti panid nga addaan iti adu la unay a nangina a parser nga opisio a pinagtawtawag',
+Adda kuman basbasit ngem $2 {{PLURAL:$2|a panagtawtawag|kadagiti panagtawtawag}}, adda {{PLURAL:$1|tattan $1 a panagtawtawag|tattan kadagiti $1 a panagtawtawag}}.",
+'expensive-parserfunction-category' => 'Dagiti panid nga adda ti adu unay a nangina a parser nga opisio a panagtawtawag',
 'post-expand-template-inclusion-warning' => "'''Ballaag:''' Dakkel unay ti naikabil a plantilia.
 Addan to dagiti plantilia a saan a maikabil.",
 'post-expand-template-inclusion-category' => 'Dagiti pampanid nga ayan dagiti nagsobra ti rukod dagiti naikabil a plantilia',
-'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket adda nagyan na a maysa a panagpalawag a plantilia a dakkel unay ti panagpadakkel na.
+'post-expand-template-argument-warning' => "'''Ballaag:''' Daytoy a panid ket adda nagyanna a maysa a panagpalawag a plantilia a dakkel unay ti panagpadakkel na.
 Dagitoy a panagpalawag  ket naikkaten.",
-'post-expand-template-argument-category' => 'Dagiti panid a naglaon iti naikkat kadagiti kasinnungat ti plantilia',
+'post-expand-template-argument-category' => 'Dagiti panid a naglaon ti naikkat a plantilia kadagiti kasinnungat',
 'parser-template-loop-warning' => 'Adda nasarakan a silo ti plantilia: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Ti kinauneg ti pinagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
+'parser-template-recursion-depth-warning' => 'Ti kinauneg ti panagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
 'language-converter-depth-warning' => 'Ti kauneg ti panagaramid ti pagsasao ket napalabes ti agpatingga a ($1)',
+'node-count-exceeded-category' => 'Dagiti panid a simmurok ti bilang ti node',
+'node-count-exceeded-warning' => 'Ti panid ket nasurokanna ti bilang ti node',
+'expansion-depth-exceeded-category' => 'Dagiti panid a nasurokan ti kauneg ti panagpadakkel',
+'expansion-depth-exceeded-warning' => 'Ti panid ket nasurokanna ti kauneg ti panagpadakkel',
+'parser-unstrip-loop-warning' => 'Adda  nakita a di-naukisan a silo',
+'parser-unstrip-recursion-limit' => 'Ti di-naukisan a panagsumro manen a patingga ket nasurokan ($1)',
 
 # "Undo" feature
-'undo-success' => 'Ti panag-urnos ket san a maisubli.
-Pangngaasi ta kitaen ti pinagpada dita baba tapno maamuan no agpaypayso ti kayatmo nga aramiden, ken idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.',
+'undo-success' => 'Ti panag-urnos ket saan a maisubli.
+Pangngaasi a kitaen ti pagipadaan dita baba tapno maamuan no agpaypayso ti kayatmo nga aramiden, ken idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.',
 'undo-failure' => 'Ti inurnos ket saan a maipasubli ta adda dagiti nakisinnungat a patingnga a naurnos.',
 'undo-norev' => 'Saan a maibabawi ti naurnos ngamin ket awan met daytoy wenno mabalin a naikkat.',
 'undo-summary' => 'Ibabawi ti binaliwan $1 ni [[Special:Contributions/$2|$2]] ([[User talk:$2|Makipatang]])',
@@ -847,11 +855,11 @@ Ti inted a rason ni $3 ket ''$2''",
 # History pages
 'viewpagelogs' => 'Kitaen dagiti listaan para iti daytoy a panid',
 'nohistory' => 'Awan ti pakasaritaan ti panag-urnos iti daytoy a panid.',
-'currentrev' => 'Kinaudi a panagbaliwan',
-'currentrev-asof' => 'Pinakaudi a panagbalbaliw idi sipud a $1',
-'revisionasof' => 'Panangbalbaliw sipud $1',
-'revision-info' => 'Panangbaliw ni $2 sipud idi $1',
-'previousrevision' => '←Nadadaan a panangbalbaliw',
+'currentrev' => 'Kinaudi a binaliwan',
+'currentrev-asof' => 'Kinaudi a panagbalbaliw manipud idi $1',
+'revisionasof' => 'Panangbalbaliw manipud idi $1',
+'revision-info' => 'Panangbaliw manipud idi $1 babaen ni $2',
+'previousrevision' => '←Daan a panangbalbaliw',
 'nextrevision' => 'Nabarbaro a panangbalbaliw→',
 'currentrevisionlink' => 'kitaen ti agdama a panangbaliw',
 'cur' => 'agdama',
@@ -869,8 +877,8 @@ Sarita: '''({{int:cur}})''' = naggidiatan ti kinaudi a panagbaliw, '''({{int:las
 'historyempty' => '(blanko)',
 
 # Revision feed
-'history-feed-title' => 'Pakasaritaan ti panamalbaliw',
-'history-feed-description' => 'Pakasaritaan ti panamalbaliw para ti panid ditoy a wiki',
+'history-feed-title' => 'Pakasaritaan ti panagbalbaliw',
+'history-feed-description' => 'Pakasaritaan ti panagbalbaliw para iti daytoy a panid ditoy a wiki',
 'history-feed-item-nocomment' => '$1 iti $2',
 'history-feed-empty' => 'Awan ti kiniddaw a panid..
 Baka naikkaten ditoy a wiki, wenno nanaganan.
@@ -885,37 +893,37 @@ Padasem ti [[Special:Search|agbiruk ditoy a wiki]] kadagiti mapaay a baro a pani
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
 'rev-deleted-text-unhide' => "Ti panakabaliw daytoy a panid ket '''naikkaten'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].
-Mabalin mo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
+Mabalinmo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
 'rev-suppressed-text-unhide' => "Ti panakabaliw daytoy a panid ket '''napasardeng'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].
 Mabalin mo pay a [$1 makita daytoy a panakabaliw] no kayatmo ti agtuloy.",
 'rev-deleted-text-view' => "Ti panakabaliw daytoy a panid ket '''naikkaten'''.
-Mabalin mo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
+Mabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
 'rev-suppressed-text-view' => "Ti panakabaliw daytoy a panid ket '''napasardeng'''.
-Mabalin mo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
-'rev-deleted-no-diff' => "Saan mo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.
+Mabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
+'rev-deleted-no-diff' => "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a panagbaliw ket '''naikkat''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-'rev-suppressed-no-diff' => "Saan mo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.",
-'rev-deleted-unhide-diff' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''naikkaten'''.
+'rev-suppressed-no-diff' => "Saanmo a makita daytoy a paggiddiatan ngamin ket maysa a panagbaliwan ket '''naikkat''.",
+'rev-deleted-unhide-diff' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].
-Mabalin mo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-'rev-suppressed-unhide-diff' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''napasardeng'''.
+Mabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+'rev-suppressed-unhide-diff' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.
 Dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].
-Mabalin mo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-'rev-deleted-diff-view' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''naikkaten'''.
-Mabalin mo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
-'rev-suppressed-diff-view' => "Maysa a panagbaliwan iti daytoy a paggiddiatan ket '''napasardeng'''.
-Mabalin mo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
+Mabalinmo pay a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+'rev-deleted-diff-view' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''naikkaten'''.
+Mabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti naikkat].",
+'rev-suppressed-diff-view' => "Maysa a panagbaliw iti daytoy a paggiddiatan ket '''napasardeng'''.
+Mabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti napasardeng].",
 'rev-delundel' => 'ipakita/ilemmeng',
 'rev-showdeleted' => 'ipakita',
-'revisiondelete' => 'Naikkat/isubli dagiti naikkat a panagbaliwan',
-'revdelete-nooldid-title' => 'Imbalido ti napuntaan a panagbaliwan',
-'revdelete-nooldid-text' => 'Baka saan mo nga imbaga ti pagpuntaan ti panagbaliwan (dagiti panagbaliwan) ti panagaramid daytoy,
-awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti kadama a panagbaliwan.',
+'revisiondelete' => 'Naikkat/isubli dagiti naikkat a panagbaliw',
+'revdelete-nooldid-title' => 'Imbalido ti napuntaan a panagbaliw',
+'revdelete-nooldid-text' => 'Baka saanmo nga imbaga ti pagpuntaan ti panagbaliw  (dagiti panagbaliwan) ti panagaramid daytoy,
+awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti agdama a panagbaliw.',
 'revdelete-nologtype-title' => 'Awan ti naited a kita ti listaan',
-'revdelete-nologtype-text' => 'Saan mo nga nainaganan ti kita a listaan ti agtungpal daytoy nga aramid.',
+'revdelete-nologtype-text' => 'Saanmo nga nainaganan ti kita a listaan ti agtungpal daytoy nga aramid.',
 'revdelete-nologid-title' => 'Imbalido a panangikabil dita listaan',
-'revdelete-nologid-text' => 'Saan mo a nainaganan ti puntaan ti listaan a paspasamak ti agaramid daytoy a pagusar wenno ti nainaganan nga inkabil ket saan nga adda idiay.',
+'revdelete-nologid-text' => 'Saanmo a nainaganan ti puntaan ti listaan a paspasamak ti agaramid daytoy a pagusar wenno ti nainaganan nga inkabil ket saan nga adda idiay.',
 'revdelete-no-file' => 'Awan dayta ti nainaganan a papeles.',
 'revdelete-show-file-confirm' => 'Segurado a kayatmo ti mangkita ti naikkat a baliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
 'revdelete-show-file-submit' => 'Wen',
@@ -923,11 +931,11 @@ awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti kadama a panag
 'logdelete-selected' => "'''{{PLURAL:$1|Ti napili a listaan ti napasamak|Dagiti napili a listaan ti napasamak}}:'''",
 'revdelete-text' => "'''Dagiti naikkat a binaliwan ken dagiti napasamak ket agparang idiay panid ti pakasaritaan ken dagiti listaan, ngem addaan dagiti paset ti nagyanda a saan a maserrekan ti publiko.'''
 Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalin da a serrekan ti nailemmeng a nagyan ken isubli ti panakaikkat da manen idiay dati nga interface, ngem saan no adda dagiti nainayon a naikabil a panagparit.",
-'revdelete-confirm' => 'Pangngaasi ti pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].',
+'revdelete-confirm' => 'Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].',
 'revdelete-suppress-text' => "Ti pinagdepdep ket usaren '''laeng''' kadagiti sumaganad;
 * Makapataud a dakes a pakaammo
 * Di maiparbeng a  kabukbukodan a pakaammo
-* : ''dagiti pagtaengan ken numero ti telepono, numero ti social security, ken dadduma pay.''",
+* : ''dagiti pagtaengan ken numero ti telepono, numero ti sosial a seguridad, ken dadduma pay.''",
 'revdelete-legend' => 'Iplastar dagiti pinagparit ti panagkita',
 'revdelete-hide-text' => 'Ilemmeng ti testo ti binaliwan',
 'revdelete-hide-image' => 'Ilemmeng ti linaon ti papeles',
@@ -941,28 +949,28 @@ Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalin da a serrekan
 'revdelete-suppress' => 'Depdepen ti data a naggapu kadagiti administrador ken dagiti sabsabali',
 'revdelete-unsuppress' => 'Ikkaten dagiti pannakaiparit kadagiti naisubli a binaliwan',
 'revdelete-log' => 'Rason:',
-'revdelete-submit' => 'Ipakat iti napili {{PLURAL:$1|a panamalbaliw|dagiti panamalbaliw}}',
-'revdelete-success' => "'''Balligi ti pinakabaro ti pinakakita ti pinagbaliwan.'''",
+'revdelete-submit' => 'Ipakat ti napili {{PLURAL:$1|a panagbalbaliw|a dagiti panagbalbaliw}}',
+'revdelete-success' => "'''Balligi ti panagpabaro ti pinakakita ti pinagbaliwan.'''",
 'revdelete-failure' => "'''Saan a napabaro ti pinakakita ti pinagbaliwan.'''
 $1",
 'logdelete-success' => "'''Balligi ti panagikabil ti listaan ti panagkita.'''",
 'logdelete-failure' => "'''Napaay ti panagikabil ti listaan ti panagkita:'''
 $1",
 'revdel-restore' => 'Sukatan ti panagkita',
-'revdel-restore-deleted' => 'naikkat a pinagbaliwan',
-'revdel-restore-visible' => 'makita a pinagbaliwan',
+'revdel-restore-deleted' => 'naikkat a binaliwan',
+'revdel-restore-visible' => 'makita a binaliwan',
 'pagehist' => 'Pakasaritaan ti panid',
 'deletedhist' => 'Naikkat a pakasaritaan',
-'revdelete-hide-current' => 'Biddut ti pinakailemmeng ti banag napetsado a $2, $1: Daytoy ti kinaudian a pinagbaliwan.
-Saan nga mailemmeng.',
+'revdelete-hide-current' => 'Biddut ti panakailemmeng ti banag a napetsado a $2, $1: Daytoy ti kinaudi a panagbaliw
+Saan a mailemmeng.',
 'revdelete-show-no-access' => 'Biddut ti panagpakita ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
 Saan mo a mabalin a serrekan.',
-'revdelete-modify-no-access' => 'Biddut ti pinagpabaro ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
+'revdelete-modify-no-access' => 'Biddut ti panagpabaro ti banag a petsado a $2, $1: Daytoy ket namarkaan a "nakedngan".
 Saan mo a mabalin a serrekan.',
-'revdelete-modify-missing' => 'Biddut ti pinagpabaro daytoy ID $1: Saan a nasarakan idiay database!',
+'revdelete-modify-missing' => 'Biddut ti panagpabaro daytoy ID $1: Saan a nasarakan idiay database!',
 'revdelete-no-change' => "'''Biddut:''' Daytoy a banag a petsado a  $2, $1 ket addaan ti kiniddaw kadagiti pakakita a kasasaad.",
-'revdelete-concurrent-change' => 'Biddut ti pinagpabaro daytoy a banag a petsado a $2, $1: Ti pinakaikabil na ket mabalin a nasuktanen ti sabsabli idi pinadas mo a pinabaro.',
-'revdelete-only-restricted' => 'Biddut pinagilemmeng daytoy banag a petsado a $2, $1: Saan mo a maidepdep dagita iti pinagkita dagiti adminitrador no saan mo a pilian ti maysa kadagiti pinagpili ti panagkita.',
+'revdelete-concurrent-change' => 'Biddut ti panagpabaro daytoy a banag a petsado a $2, $1: Ti panakaikabil na ket mabalin a nasuktanen ti sabsabli idi pinadas mo a pinabaro.',
+'revdelete-only-restricted' => 'Biddut ti panagilemmeng daytoy banag a petsado a $2, $1: Saan mo a maidepdep dagita iti panagkita dagiti adminitrador no saan mo a pilian ti maysa kadagiti pinagpili ti panagkita.',
 'revdelete-reason-dropdown' => '*Dagiti kadawyan a panagikkat
 ** Panaglabsing ti karbengan ti pinagipablaak
 ** Saan a maibagay a kabukbukodan a pakaammo
@@ -979,22 +987,22 @@ Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagi
 
 # History merging
 'mergehistory' => 'Pagtiponen dagiti pakasaritaan ti pampanid',
-'mergehistory-header' => 'Daytoy a panid ket mabalin mo ti agpatipon kadagiti pinagbaliwan ti pakasaritaan iti maysa a taudan idiay barbaro a panid.
-Masapul a saraduem a daytoy a pinagsukat ket agsustento ti pinakaituoy ti pakasaritaan ti panid.',
+'mergehistory-header' => 'Daytoy a panid ket mabalinmo ti agitipon kadagiti pinagbaliwan ti pakasaritaan iti maysa a taudan idiay barbaro a panid.
+Masapul a sigaraduem a daytoy a panagsukat ket agsustento ti panakaituloy ti pakasaritaan ti panid.',
 'mergehistory-box' => 'Pagtiponen dagiti nasukatan iti dua a pampanid:',
 'mergehistory-from' => 'Taudan ti panid:',
 'mergehistory-into' => 'Pangipanan a panid:',
 'mergehistory-list' => 'Mabalin nga itipon ti pakasaritaan ti inurnos',
-'mergehistory-merge' => 'Dagiti sumaganad a pinagbaliw iti [[:$1]] ket mabalin nga itipon iti [[:$2]].
-Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid idiay ken sakbay ti nainagan nga oras.',
+'mergehistory-merge' => 'Dagiti sumaganad a panagbaliw iti [[:$1]] ket mabalin nga itipon iti [[:$2]].
+Usaren ti radio a buton a tukol ti pinagtipon iti laeng panagbaliw a naaramid idiay ken sakbay ti nainagan nga oras.',
 'mergehistory-go' => 'Ipakita dagiti mabalin a maitipon a panag-urnos',
-'mergehistory-submit' => 'Pagtiponen dagiti panamalbaliw',
+'mergehistory-submit' => 'Pagtitiponen dagiti binalbaliwan',
 'mergehistory-empty' => 'Awan dagiti mabalin nga itipon.',
 'mergehistory-success' => '$3 {{PLURAL:$3|a binaliwan|dagiti binaliwan}} ti [[:$1]] balligi ti pinagtipon idiay [[:$2]].',
-'mergehistory-fail' => 'Saan a nakaaramid ti pinagtipon ti pakasaritaan, pangngaasi ta kitaen ti panid ken parametro ti oras.',
+'mergehistory-fail' => 'Saan a nakaaramid ti panagtipon ti pakasaritaan, pangngaasi ta kitaen ti panid ken parametro ti oras.',
 'mergehistory-no-source' => 'Awan ti taudan ti panid a $1.',
 'mergehistory-no-destination' => 'Awan ti papanan ti panid a $1.',
-'mergehistory-invalid-source' => 'Masapul nga addaan ti umisu a titulo ti taudan ti panid.',
+'mergehistory-invalid-source' => 'Masapul nga adda ti umisu a titulo ti taudan ti panid.',
 'mergehistory-invalid-destination' => 'Ti pangipanan ti panid ket masapul nga umisu a titulo.',
 'mergehistory-autocomment' => 'Naitipon ti [[:$1]] iti [[:$2]]',
 'mergehistory-comment' => 'Naitipon ti [[:$1]] iti [[:$2]]: $3',
@@ -1002,60 +1010,62 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'mergehistory-reason' => 'Rason:',
 
 # Merge log
-'mergelog' => 'Listaan ti pinagtipon',
-'pagemerge-logentry' => 'itipon ti [[$1]] iti [[$2]] (dagiti binaliwan agingga iti $3)',
+'mergelog' => 'Listaan ti panagtipon',
+'pagemerge-logentry' => 'itipon ti [[$1]] iti [[$2]] (dagiti binaliwan aginggana iti $3)',
 'revertmerge' => 'Pagsinaen',
-'mergelogpagetext' => 'Adda dita baba ti listaan dagiti kinaudian a pinagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.',
+'mergelogpagetext' => 'Adda dita baba ti listaan dagiti kinaudian a panagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.',
 
 # Diffs
-'history-title' => 'Pakasaritaan ti pannakabalbaliw ti "$1"',
+'history-title' => 'Panagbalbaliw a pakasaritaan iti "$1"',
+'difference-title' => 'Paggiddiatan a nagbaetan dagiti panagbalbaliw iti "$1"',
+'difference-title-multipage' => 'Paggiddiatan a nagbaetan dagiti panid  "$1" ken "$2"',
 'difference-multipage' => '(Paggiddiatan dagiti panid)',
 'lineno' => 'Linia $1:',
-'compareselectedversions' => 'Paggidiaten dagiti pinili a binaliwan',
+'compareselectedversions' => 'Ipada dagiti pinili a binaliwan',
 'showhideselectedversions' => 'Ipakita/ilemmeng dagiti napili a nabaliwan',
 'editundo' => 'ibabawi',
-'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|$1 dagiti agtennga a panangbalbaliw}} ni {{PLURAL:$2|agararamat|$2 dagidiay agararamat}} ti saan a naipakita)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|$1 dagiti agtengnga a panangbalbaliw}} iti ad-adu nga $2 {{PLURAL:$2|agar-aramat|dagiti agar-aramat}} a saan a naipakita)',
+'diff-multi' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtennga a panangbalbaliw}} babaen {{PLURAL:$2|ti agararamat|dagiti $2 nga agararamat}} ti saan a naipakita)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Maysa nga agtengnga a panangbalbaliw|Dagiti $1 nga agtengnga a panangbalbaliw}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} a saan a naipakita)',
 
 # Search results
 'searchresults' => 'Dagiti nagbanagan ti panagbiruk',
 'searchresults-title' => 'Dagiti nabirukan a nagbanagan ti "$1"',
 'searchresulttext' => 'Ti adu pay a pakaammo ti pinagbiruk {{SITENAME}}, kitaem ti [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Nagbiruk ka  iti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|amin a panid aguna iti "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|amin a panid nga agsilpo iti "$1"]])',
-'searchsubtitleinvalid' => "Nagbiruk ka  iti '''$1'''",
-'toomanymatches' => 'Adu unay ti napasubli  nga agpapada, pangngaasim a padasen ti sabali a pinagsapul',
+'searchsubtitle' => 'Nagbiruk ka  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' => "Nagbiruk ka 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 teksto ti panid',
 'prevn' => 'napalabas {{PLURAL:$1|$1}}',
 'nextn' => 'sumaruno {{PLURAL:$1|$1}}',
-'prevn-title' => 'Napalabas $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}',
-'nextn-title' => 'Sumaruno $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}',
-'shown-title' => 'Ipakita $1 {{PLURAL:$1|a nagbanagan|dagiti nagbanagan}}  tunggal maysa a panid',
+'prevn-title' => 'Napalabas a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}',
+'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 nagan ti panid nga \"[[:\$1]]\" daytoy a wiki.'''",
-'searchmenu-new' => "'''Aramidem ti panid nga \"[[:\$1]]\" daytoy a wiki!'''",
+'searchmenu-exists' => "'''Adda panid a nanaganan ti \"[[:\$1]]\" iti daytoy a wiki.'''",
+'searchmenu-new' => "'''Partuaten ti panid ti \"[[:\$1]]\" iti daytoy a wiki!'''",
 'searchhelp-url' => 'Help:Dagiti linaon',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda naipasaruno na a kastoy]]',
+'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 pam-panid',
 'searchprofile-images' => 'Sabsabali a midia',
 'searchprofile-everything' => 'Amin amin',
-'searchprofile-advanced' => 'Antenamo',
+'searchprofile-advanced' => 'Napasayaat',
 'searchprofile-articles-tooltip' => 'Agbiruk ka idiay $1',
 'searchprofile-project-tooltip' => 'Agbiruk ka idiay $1',
 'searchprofile-images-tooltip' => 'Agbiruk ka iti papeles',
 'searchprofile-everything-tooltip' => 'Birukem amin a linaon (uray dagiti makipatangan a panid)',
 'searchprofile-advanced-tooltip' => 'Agbiruk ka kadagiti naiduma a "nagan ti lugar"',
-'search-result-size' => '$1 ({{PLURAL:$2|1 a balikas|$2 dagiti balikas}})',
-'search-result-category-size' => '{{PLURAL:$1|1 kameng|$1 dagiti kameng}} ({{PLURAL:$2|1 apo ti kategoria|$2 dagiti apo ti kategoria}}, {{PLURAL:$3|1 papeles|$3 dagiti papeles}})',
+'search-result-size' => '$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})',
+'search-result-category-size' => '{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 nga apo ti kategoria|dagiti $2  nga apo ti kategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})',
 'search-result-score' => 'Kapategan: $1%',
 'search-redirect' => '(ibaw-ing ti $1)',
 'search-section' => '(paset $1)',
 'search-suggest' => 'Daytoy kadi: $1',
-'search-interwiki-caption' => 'Dagiti agkakabsat a gandat',
+'search-interwiki-caption' => 'Dagiti kakabsat a gandat',
 'search-interwiki-default' => '$1 dagiti nagbanagan:',
 'search-interwiki-more' => '(adu pay)',
 'search-mwsuggest-enabled' => 'addaan ti singasing',
@@ -1065,24 +1075,24 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'searcheverything-enable' => 'Agbiruk ka kadagiti amin a nagan ti lugar',
 'searchrelated' => 'mainaig',
 'searchall' => 'amin',
-'showingresults' => "Maiparang iti baba ti agingga iti {{PLURAL:$1|'''1''' a nagbanagan|'''$1''' dagiti nagbanagan}} a mangrugi iti #'''$2'''.",
-'showingresultsnum' => "Makita iti baba ti {{PLURAL:$3|'''1''' a nagbanagan|'''$3''' dagiti nagbanagan}} a mangrugi iti #'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Nagbanagan '''$1''' of '''$3'''|Dagiti Nagbanagan '''$1 - $2''' of '''$3'''}} ti '''$4'''",
+'showingresults' => "Maiparang iti baba ti agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
+'showingresultsnum' => "Makita 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 lugar a masigud a biruken.
-Padasem a  pasarunuan ti pinagbiruk 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 lugar.",
+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 lugar.",
 'search-nonefound' => 'Awan ti nagbanagan a kapadpada ti sinapul.',
 'powersearch' => 'Napasayat a panagbiruk',
 'powersearch-legend' => 'Napasayat a panagbiruk',
 'powersearch-ns' => 'Agbiruk ka kadagiti nagan ti lugar:',
-'powersearch-redir' => 'Ilista dagiti panagibaw-ing',
+'powersearch-redir' => 'Ilista dagiti baw-ing',
 'powersearch-field' => 'Biruken iti',
 'powersearch-togglelabel' => 'Markaan:',
 'powersearch-toggleall' => 'Amin',
 'powersearch-togglenone' => 'Awan',
 'search-external' => 'Akinruar a panagbiruk',
-'searchdisabled' => 'Ti pinagbiruk iti {{SITENAME}} ket nabaldado.
+'searchdisabled' => 'Ti panagbiruk iti {{SITENAME}} ket nabaldado.
 Mabalin mo ti agbiruk idiay Google tattan.
-Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
+Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 
 # Quickbar
 'qbsettings' => 'Quickbar',
@@ -1091,7 +1101,7 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'qbsettings-fixedright' => 'Agyan latta iti kanawan',
 'qbsettings-floatingleft' => 'Tumpaw ti kanigid',
 'qbsettings-floatingright' => 'Tumpaw ti kanawan',
-'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti pinagsurat mo ti pagsasaom.',
+'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti panagsurat ti pagsasaom',
 
 # Preferences page
 'preferences' => 'Kaykayatan',
@@ -1106,13 +1116,14 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'prefs-beta' => 'Dagiti beta a langa',
 'prefs-datetime' => 'Petsa ken oras',
 'prefs-labs' => 'Dagiti subokan a langa',
+'prefs-user-pages' => 'Dagiti panid ti agar-aramat',
 'prefs-personal' => 'Bariweswes ti agar-aramat',
-'prefs-rc' => 'Kaudian a balbaliw',
+'prefs-rc' => 'Kinaudi a binalbaliwan',
 'prefs-watchlist' => 'Listaan ti bambantayan',
-'prefs-watchlist-days' => 'Manu nga aldaw nga agparang iti listaan ti bambantayan:',
-'prefs-watchlist-days-max' => 'Pinakangato nga $1 {{PLURAL:$1|aldaw|al-aldaw}}',
-'prefs-watchlist-edits' => 'Pinakangato a bilang ti ipakita kadagiti sinukatan a napadakkel a bambantayan:',
-'prefs-watchlist-edits-max' => 'Pinakangato a bilang: 1000',
+'prefs-watchlist-days' => 'Manu nga aldaw nga agparang ti listaan iti bambantayan:',
+'prefs-watchlist-days-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
+'prefs-watchlist-edits' => 'Kaadu a bilang ti ipakita kadagiti sinukatan iti napadakkel a bambantayan:',
+'prefs-watchlist-edits-max' => 'Kaadu a bilang: 1000',
 'prefs-watchlist-token' => 'Tandaan ti bambantayan:',
 'prefs-misc' => 'Sabsabali',
 'prefs-resetpass' => 'Sukatan ti kontrasenias',
@@ -1121,7 +1132,7 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'prefs-email' => 'Pagpilian ti e-surat',
 'prefs-rendering' => 'Tabas',
 'saveprefs' => 'Idulin',
-'resetprefs' => 'Dalusan dagiti saan a naidulin a panamalbaliw',
+'resetprefs' => 'Dalusan dagiti saan a naidulin a sinuksukatan',
 'restoreprefs' => 'Isublim amin dagiti kinasigud a kasasaad',
 'prefs-editing' => 'Ururnosen',
 'prefs-edit-boxsize' => 'Kadakkel ti tawa ti panag-urnos.',
@@ -1131,20 +1142,20 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
 'stub-threshold' => 'Pangruggian ti <a href="#" class="stub">pungol a panilpo</a>pinagbukel (bytes):',
 'stub-threshold-disabled' => 'Nabaldado',
-'recentchangesdays' => 'Mano nga aldaw nga ipakita dagiti kaudian a balbaliw:',
-'recentchangesdays-max' => 'Pinakangato $1 {{PLURAL:$1\\aldaw|al-aldaw}}',
+'recentchangesdays' => 'Mano nga aldaw nga ipakita dagiti kinaudi a binalbaliwan:',
+'recentchangesdays-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
 'recentchangescount' => 'Dagiti bilang dagiti naurnos a kinasigud a maiparang:',
 'prefs-help-recentchangescount' => 'Nairaman dagiti kinaudian a baliwan, dagiti pakasaritaan ti panid, ken dagiti listaan.',
 'prefs-help-watchlist-token' => 'No ikkam daytoy pagikabilan ti sekreto a tulbek, agaramid ti pakan a RSS para ti binambantayam.
 No adda makaammo daytoy a tulbek ditoy a pagikabilan ket mabalin da a basaen ti binambantayam, masapul nga agpili ka ti kuwenta a seguridad.
 
-Adda ditoy ti pugto a kuwenta a mausar mo: $1',
+Adda ditoy ti pugto a kuwenta a mausarmo: $1',
 'savedprefs' => 'Naidulin dagitoy kaykayatmon.',
 'timezonelegend' => 'Sona ti oras:',
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Usaren ti wiki a kinasigud ($1)',
-'timezoneuseoffset' => 'Sabsabali (ibaga ti supli)',
-'timezoneoffset' => 'Supli¹:',
+'timezoneuseoffset' => 'Sabsabali (inaganan ti tangdan)',
+'timezoneoffset' => 'Tangda¹:',
 'servertime' => 'Oras ti server:',
 'guesstimezone' => 'Ikabil idiay pabasabasam',
 'timezoneregion-africa' => 'Aprika',
@@ -1166,25 +1177,25 @@ Adda ditoy ti pugto a kuwenta a mausar mo: $1',
 'prefs-custom-css' => 'Naiduma a CSS',
 'prefs-custom-js' => 'Naiduma a JavaScript',
 'prefs-common-css-js' => 'Bingay a CSS/JavaScript dagiti amin a kudil:',
-'prefs-reset-intro' => 'Mabalin mo nga usaren daytoy a panid tapno maisublim dagita kaykayat mo iti kinasigud daytoy a wiki.
+'prefs-reset-intro' => 'Mabalinmo nga usaren daytoy a panid tapno maisublim dagita kaykayatmo iti kinasigud daytoy a wiki.
 Ngem saanto a mabalinen nga ipasubli.',
 'prefs-emailconfirm-label' => 'Pagsingkedan ti e-surat:',
-'prefs-textboxsize' => 'Ti kadakkel ti pamalbaliw a tawa',
+'prefs-textboxsize' => 'Ti kadakkel ti pagurnosan a tawa',
 'youremail' => 'E-surat:',
 'username' => 'Nagan ti agar-aramat:',
 'uid' => 'ID ti agar-aramat:',
-'prefs-memberingroups' => 'Kameng {{PLURAL:$1| bunggoy| dagiti bunggoy}}:',
+'prefs-memberingroups' => 'Kameng iti {{PLURAL:$1|a bunggoy| a bungbunggoy}}:',
 'prefs-registration' => 'Oras a nagrehistro:',
 'yourrealname' => 'Pudno a nagan:',
 'yourlanguage' => 'Pagsasao:',
 'yourvariant' => 'Linaon ti sabali a pagsasao:',
-'prefs-help-variant' => 'Ti kaykayat mo a sabsabali a pinagsurat a maipakita kadagiti linaon ti panid daytoy a wiki.',
+'prefs-help-variant' => 'Ti kaykayatmo a sabsabali a panagsurat a maipakita kadagiti linaon ti panid daytoy a wiki.',
 'yournick' => 'Baro a pirma:',
 'prefs-help-signature' => 'Komentario kadagiti  pakipatangan a panid ket  mapirmaan koma iti "<nowiki>~~~~</nowiki>" nga agpabalin ti pirmam ken ti petsa.',
 'badsig' => 'Saan a pudno a kilaw a pirma.
 Ikur-it dagiti HTML nga etiketa.',
 'badsiglength' => 'Atiddog unay ti pirmam.
-Masapul a nababbaba ngem $1 {{PLURAL:$1| a kabalinan|dagiti kabalinan}} ti kaatiddog na.',
+Masapul a nababbaba ngem $1 {{PLURAL:$1| a karakter|kadagiti karakter}} ti kaatiddog na.',
 'yourgender' => 'Lalaki wenno Babai:',
 'gender-unknown' => 'Saan a naibagbaga',
 'gender-male' => 'Lalaki',
@@ -1195,14 +1206,14 @@ Daytoy a pakaammo ket makita ti publiko.',
 'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
 Ngem no kayatmo nga ited, maaramat daytoy a kas pammadayaw ken pangpatalged iti obram.',
 'prefs-help-email' => 'Ti e-surat a pagtaengan ket saan a masapul, ngem masapul no agsukat ka ti kontrasenias, no baka malipatam ti kontrasenias mo.',
-'prefs-help-email-others' => 'Mabalin mo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
+'prefs-help-email-others' => 'Mabalinmo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
 Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak kenka.',
 'prefs-help-email-required' => 'Masapul ti e-surat a pagtaengan.',
 'prefs-info' => 'Kangrunaan a pakaammuan',
 'prefs-i18n' => 'Internasionalisasion',
 'prefs-signature' => 'Pirma',
 'prefs-dateformat' => 'Kita ti petsa',
-'prefs-timeoffset' => 'Supli ti oras',
+'prefs-timeoffset' => 'Tangda ti oras',
 'prefs-advancedediting' => 'Dagiti nangato a pagpilian',
 'prefs-advancedrc' => 'Dagiti nangato a pagpilian',
 'prefs-advancedrendering' => 'Dagiti nangato a pagpilian',
@@ -1232,7 +1243,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 * Ti saan a nakur-it a kahon ket kayatna a saoen nga awan ti agar-aramat dita a bunggoy.
 * A * ti kunana ket saan mo a maikkat ti bunggoy no nainayonmon, wenno pagbalittaden.',
 'userrights-reason' => 'Rason:',
-'userrights-no-interwiki' => 'Awananka iti pammalubos nga agbaliw ti karkarbengan ti agar-aramat kadagiti sabali a wiki.',
+'userrights-no-interwiki' => 'Awan ti pammalubosmo nga agbaliw ti karbengan ti agar-aramat kadagiti sabali a wiki.',
 'userrights-nodatabase' => 'Awan ti database a $1 wenno baka saan a lokal.',
 'userrights-nologin' => 'Masapul a [[Special:UserLogin|sumrekka]] nga adda pakabilangan nga administrador ti magted kadagiti karbengan ti agar-aramat.',
 'userrights-notallowed' => 'Awan ti pammalubos ti pakabilangam a mangted iti kakaberngan ti agar-aramat.',
@@ -1265,7 +1276,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 
 # Rights
 'right-read' => 'Basaen dagiti panid',
-'right-edit' => 'Urnosen dagiti pampanid',
+'right-edit' => 'Agurnos kadagiti pampanid',
 'right-createpage' => 'Agaramid kadagiti panid (saan a pagtutungtongan a pampanid)',
 'right-createtalk' => 'Agaramid ti pagtungtungan a pampanid',
 'right-createaccount' => 'Agaramid kadagiti baro a pakabilangan ti agar-aramat',
@@ -1283,14 +1294,14 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-purge' => 'Pasariwaam ti cache ti pagsaadan a ti panid ket awan ti pasingkedan na.',
 'right-autoconfirmed' => 'Urnosen dagiti nasalakniban-bassit a panid',
 'right-bot' => 'Matrato a kas automatiko a panagaramid',
-'right-nominornewtalk' => 'Nga awanan ti bassit a pinagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe',
+'right-nominornewtalk' => 'Nga awanan ti bassit a panagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe',
 'right-apihighlimits' => 'Agusar ti nangatngato a patingga kadagiti pinagsapul ti API.',
-'right-writeapi' => 'Pinagusar ti pagsurat ti API',
+'right-writeapi' => 'Panagusar ti panagsurat nga API',
 'right-delete' => 'Ikkaten dagiti panid',
-'right-bigdelete' => 'Ikkaten dagiti panid nga addaan ti dadakkel a pakasaritaan',
+'right-bigdelete' => 'Ikkaten dagiti panid nga adda dagiti dakkel a pakasaritaanna',
 'right-deleterevision' => 'Ikkaten ken ipasubli dagiti nainagan a pinagbaliwan ti panid',
 'right-deletedhistory' => 'Kitaen dagiti naikabil a pakasaritaan, nga awan kaniada kadagiti nairaman a testo',
-'right-deletedtext' => 'Kitaen dagiti naikkat a testo ken dagiti nasukatan a baet ti pinagbaliwan',
+'right-deletedtext' => 'Kitaen dagiti naikkat a testo ken dagiti nasukatan a nagbaetan dagiti binaliwan',
 'right-browsearchive' => 'Biruken dagiti naikkat a panid',
 'right-undelete' => 'Isubli ti naikkat a panid',
 'right-suppressrevision' => 'Kitaen ken ipasubli dagiti binaliwan a nailemmeng kadagiti administrador',
@@ -1300,7 +1311,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-hideuser' => 'Serraan ti maysa a nagan ti agar-aramat, ilemmeng manipud ti publiko',
 'right-ipblock-exempt' => 'Labsan dagiti IP a serra, dagiti automatiko a serra ken dagiti nasakup a serra.',
 'right-proxyunbannable' => 'Labsan dagiti automatiko a serra dagiti proxie',
-'right-unblockself' => 'Ikkaten ti panaka-serra da',
+'right-unblockself' => 'Ikkaten ti panaka-serra kaniada',
 'right-protect' => 'Sukatan dagiti lessaad ti salaknib ken dagiti panid a nasalakniban ti panag-urnos',
 'right-editprotected' => 'Urnosen dagiti nasalakniban a panid (nga awan ti sariap a salaknib")',
 'right-editinterface' => 'Urnosen ti "interface" ti agar-aramat',
@@ -1313,7 +1324,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'right-import' => 'Agala ti pampanid manipud kadagiti sabsabali a wiki',
 'right-importupload' => 'Agala kadagiti panid a naggapu iti papeles ti pinag-ipan',
 'right-patrol' => 'Markaan a kas napatruliaan dagiti inurnos ti dadduma',
-'right-autopatrol' => 'Dagiti inurnos mo ket mamarkaan nga automatiko a napatruliaan',
+'right-autopatrol' => 'Dagiti inurnosmo ket mamarkaan nga automatiko a kas napatruliaan',
 'right-patrolmarks' => 'Kitaen dagiti kinaudian a binaliwan a  napatruliaan a marka',
 'right-unwatchedpages' => 'Kitaen ti listaan dagiti saan a nabambantayan a panid',
 'right-mergehistory' => 'Pagtitiponen ti pakasaritaan dagiti panid',
@@ -1327,42 +1338,42 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 # User rights log
 'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
 'rightslogtext' => 'Listaan daytoy kadagiti sinukatan a karbengan ti agararamat.',
-'rightslogentry' => 'Nasukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
+'rightslogentry' => 'sinukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
 'rightslogentry-autopromote' => 'na automatiko a naipangato a naggapo iti $2 idiay $3',
 'rightsnone' => '(awan)',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'basaem datoy a panid',
-'action-edit' => 'baliwam datoy a panid',
-'action-createpage' => 'Agaramid ka kadagiti panid',
+'action-edit' => 'agurnos iti datoy a panid',
+'action-createpage' => 'agpartuat kadagiti panid',
 'action-createtalk' => 'agaramid kadagiti pagtungtungan a panid',
-'action-createaccount' => 'Aramiden ti pakabilangan daytoy nga agar-aramat',
+'action-createaccount' => 'agpartuat ti pakabilangan daytoy nga agar-aramat',
 'action-minoredit' => 'markaam a bassit nga urnos daytoy',
-'action-move' => 'Iyalis daytoy a panid',
+'action-move' => 'iyalis daytoy a panid',
 'action-move-subpages' => 'iyalis daytoy a panid, ken dagiti apo na a panid',
 'action-move-rootuserpages' => 'iyalis dagiti ramut a panid ti agar-aramat',
-'action-movefile' => 'Iyalis daytoy a papeles',
+'action-movefile' => 'iyalis daytoy a papeles',
 'action-upload' => 'ipapan daytoy a papeles',
 'action-reupload' => 'suratam manen dagiti adda a papeles',
 'action-reupload-shared' => 'paawanen daytoy a papeles idiay pagbingayan a nagikabilan',
 'action-upload_by_url' => 'ipag-ipan daytoy a papeles a naggapu ti URL',
-'action-writeapi' => 'usaren ti pinagsurat ti API',
+'action-writeapi' => 'usaren ti panagsurat ti API',
 'action-delete' => 'ikkaten daytoy a panid',
 'action-deleterevision' => 'ikkaten daytoy a binaliwan',
 'action-deletedhistory' => 'kitaen dagiti naikkat a pakasaritaan daytoy a panid',
-'action-browsearchive' => 'Birukem dagiti naikkat a panid',
-'action-undelete' => 'isublim ti pinakaikkat daytoy a panid',
-'action-suppressrevision' => 'kitaen ken ipasubli daytoy nailemmeng a pinagbaliw',
+'action-browsearchive' => 'birukem dagiti naikkat a panid',
+'action-undelete' => 'isublim ti panakaikkat daytoy a panid',
+'action-suppressrevision' => 'kitaen ken ipasubli daytoy nailemmeng a panagbaliw',
 'action-suppressionlog' => 'kitaen ti listaan a pribado',
 'action-block' => 'serraan daytoy nga agar-aramat manipud ti panag-urnos',
 'action-protect' => 'sukatan dagiti lessaad ti salaknib iti daytoy a panid',
-'action-rollback' => 'pardasan nga ipasubli dagiti inurnos ti kinaudi nga agar-aramat a nagurnos ti kaskasta a panid',
+'action-rollback' => 'pardasan nga ipasubli dagiti inurnos ti kinaudi nga agar-aramat a nagurnos ti naisangsangayan a panid',
 'action-import' => 'agala ka ti panid iti sabali a wiki',
 'action-importupload' => 'alaem daytoy a panid idiay naipan a papeles',
-'action-patrol' => 'Markaan a kas napatruliaan dagiti inurnos ti dadduma',
+'action-patrol' => 'markaan a kas napatruliaan dagiti inurnos ti dadduma',
 'action-autopatrol' => 'markaam dagiti napatruliam nga inurnos',
 'action-unwatchedpages' => 'kitaen ti listaan dagiti saan a nabambantayan a panid',
-'action-mergehistory' => 'Pagtitiponen ti pakasaritaan daytoy a panid',
+'action-mergehistory' => 'pagtitiponen ti pakasaritaan daytoy a panid',
 'action-userrights' => 'urnosen amin dagiti karbengan ti agar-aramat',
 'action-userrights-interwiki' => 'urnosen dagiti karbengan ti agar-aramat iti agar-aramat kadagiti sabsabali a wiki',
 'action-siteadmin' => 'kandaduan wenno lukatan daytoy "database"',
@@ -1372,15 +1383,15 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'nchanges' => '$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}',
 'recentchanges' => 'Kaudian a balbaliw',
 'recentchanges-legend' => 'Pagpilian kadagiti kaudian a balbaliw',
-'recentchanges-summary' => 'Bantayan iti daytoy a panid dagiti kauudian a panakabalbaliw ti wiki.',
-'recentchanges-feed-description' => 'Siputen dagiti kakaudian a panamalbaliw iti wiki iti daytoy a pakan.',
-'recentchanges-label-newpage' => 'Daytoy nga inurnos ket nakaaramid ti baro a panid',
-'recentchanges-label-minor' => 'Bassit a panag-urnos laeng daytoy',
-'recentchanges-label-bot' => 'Daytoy a panag-urnos ket inaramid ti bot',
-'recentchanges-label-unpatrolled' => 'Saan pay a napatrulian daytoy a panag-urnos',
+'recentchanges-summary' => 'Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a panid.',
+'recentchanges-feed-description' => 'Siputen dagiti kinaudi a panagbalbaliw ti wiki iti daytoy a pakan.',
+'recentchanges-label-newpage' => 'Daytoy a panag-urnos ket nakapartuat ti baro a panid',
+'recentchanges-label-minor' => 'Daytoy ket bassit a panag-urnos',
+'recentchanges-label-bot' => 'Daytoy a panag-urnos ket inaramid babaen ti maysa a bot',
+'recentchanges-label-unpatrolled' => 'Daytoy a panag-urnos ket saan pay a naptruliaan',
 'rcnote' => "Adda dita baba {{PLURAL:$1|ti '''1''' sinukatan|dagiti naudi '''$1''' a sinukatan}} iti naudi nga {{PLURAL:$2|aldaw|'''$2''' al-aldaw}}, sipud iti $5, $4.",
 'rcnotefrom' => "Makita dita baba dagiti sinukatan manipud idi '''$2''' (agingga iti '''$1''' ti naipakita).",
-'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan mangrugi idi $1',
+'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $1',
 'rcshowhideminor' => '$1 dagiti bassit a panag-urnos',
 'rcshowhidebots' => '$1 dagiti bots',
 'rcshowhideliu' => '$1 dagiti nakastrek nga agar-aramat',
@@ -1401,7 +1412,7 @@ Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} kalpasan ti panag-sukat',
 'newsectionsummary' => '/* $1 */ baro a paset',
 'rc-enhanced-expand' => 'Ipakita dagiti salaysay (masapul ti JavaScript)',
-'rc-enhanced-hide' => 'Illemmeng dagiti salaysay',
+'rc-enhanced-hide' => 'Ilemmeng dagiti salaysay',
 'rc-old-title' => 'kasisigud nga inaramid a kas ti "$1"',
 
 # Recent changes linked
@@ -1419,7 +1430,7 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''napuskol'''
 'upload' => 'Mangipan iti papeles',
 'uploadbtn' => 'Mangipan iti papeles',
 'reuploaddesc' => 'Ukasen ti pag-ipan ken absubli idiay kabuklan ti pag-ipan',
-'upload-tryagain' => 'Ited ti napabaro a pinagipalawag ti papeles',
+'upload-tryagain' => 'Ited ti napabaro a panagipalawag ti papeles',
 'uploadnologin' => 'Saan a nakastrek',
 'uploadnologintext' => 'Masapul a [[Special:UserLogin|nakaserrekka]] tapno makaipanka iti papeles.',
 'upload_directory_missing' => 'Ti direktorio ti pag-ipan ($1) ket napukaw ken saan a mabalin nga aramiden iti webserver.',
@@ -1429,12 +1440,12 @@ Dagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket '''napuskol'''
 
 Ti listaan ti panagikkat ken panagiyalis daytoy a panid ket adda ditoy tapno makitam:",
 'uploadtext' => "Usaren ti kabuklan dita baba ti pinag-ipan ti papeles.
-Ti panagkita wenno panagbiruk ti napalubos a pinag-ipan ti papeles mapan ka idiay [[Special:FileList|listaan dagiti napag-ipan a papeles]], dagiti pinag-ipan wenno pinag-ipan manen ket nakalista pay idiay [[Special:Log/upload|listaan ti pinag-ipan]], dagiti pinagikkat ket idiay [[Special:Log/delete|listaan ti pinagikkat]].
+Ti panagkita wenno panagbiruk ti napalubos a pinag-ipan ti papeles mapan ka idiay [[Special:FileList|listaan dagiti napag-ipan a papeles]], dagiti pinag-ipan wenno pinag-ipan manen ket nakalista pay idiay [[Special:Log/upload|listaan ti pinag-ipan]], dagiti panagikkat ket idiay [[Special:Log/delete|listaan ti panagikkat]].
 
 Ti panagikabil ti papeles iti panid, usaren ti panilpo a kas dagiti sumaganad a kabuklan:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' ti panag-usar ti dakkel a bersion ti papeles
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' ti agusar ti 200 pixel a kaakaba  a pinagparang iti kahon idiay kannigid nga adda 'sabali a testo' ti pinagipalpalawag
-* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' ti dagus a panagsilpo idiay papeles nga awan ti pinagparang ti papeles",
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></tt>''' ti agusar ti 200 pixel a kaakaba  a panagparang iti kahon idiay kannigid nga adda 'sabali a testo' ti panagipalpalawag
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' ti dagus a panagsilpo idiay papeles nga awan ti panagparang ti papeles",
 'upload-permitted' => 'Dagiti mapalubosan a kita ti papeles: $1.',
 'upload-preferred' => 'Dagiti mabalbalin a kita ti papeles: $1.',
 'upload-prohibited' => 'Dagiti maiparit a kita ti papeles: $1.',
@@ -1460,56 +1471,56 @@ Pangngaasi ta naganan manen ti papeles ken padasen manen nga ipapan.',
 'filetype-badmime' => 'Dagiti papeles a kas MIME a kita "$1" ket saan a mapalubosan a maipan.',
 'filetype-bad-ie-mime' => 'Saan a makapag-ipan ti papeles ngamin ket masarakan ti Internet Explorer a kas "$1", a saan a mabalin ken makapataud a dakes a kita ti papeles.',
 'filetype-unwanted-type' => "'''\".\$1\"''' ti saan a mapalubusan a kita ti papeles.
-Mapalubusan a {{PLURAL:\$3|kita ti papeles ket|kadagiti kita ti papeles ket}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|saan a mapalubusan a kita ti papeles|dagiti saan a mapalubusan a kita ti papeles}}.
-Mapalubusan a {{PLURAL:$3|kita ti papeles ket|dagiti kita ti papeles ket}} $2.',
+Ti mapalubusan  {{PLURAL:\$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} \$2.",
+'filetype-banned-type' => 'Ti \'\'\'".$1"\'\'\' {{PLURAL:$4|ket saan a mapalubusan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}.
+Ti mapalubusan{{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.',
 'filetype-missing' => 'Daytoy a papeles ket awan ti kita na a (kasla ".jpg").',
 'empty-file' => 'Ti papeles nga intedmo ket awan ti nagyan na.',
 'file-too-large' => 'Ti papeles nga intedmo ket dakkel unay.',
 'filename-tooshort' => 'Ti nagan daytoy a papeles ket bassit unay.',
 'filetype-banned' => 'Ti kita daytoy a papeles ket maiparit.',
 'verification-error' => 'Daytoy a papeles ket saan a nakapasa ti pagsingkedan.',
-'hookaborted' => 'Ti pinagbabaro a pinadas mo ket napasardeng iti pangpa-atiddog a kawit.',
+'hookaborted' => 'Ti panagbabaro a pinadasmo ket napasardeng babaen ti pangpa-atiddog a kawit.',
 'illegal-filename' => 'Ti nagan daytoy a papeles ket saan a maipalubos.',
 'overwrite' => 'Saan a mabalin a suratan manen iti papeles nga adda ditan.',
 'unknown-error' => 'Adda di amammo a biddut.',
 'tmp-create-error' => 'Saan a makaaramid ti saan nga agnayon a papeles.',
-'tmp-write-error' => 'Biddut ti pinakasurat  dagiti saan nga agnayon a papeles.',
+'tmp-write-error' => 'Biddut ti panakaisurat  dagiti saan nga agnayon a papeles.',
 'large-file' => 'Ti maipatalked a papeles ket saan koma a dakdakkel ngem $1;
 daytoy a papeles ket $2.',
 'largefileserver' => 'Daytoy a papeles ket dakdakel ngem ti naaramid a mabalin para iti server.',
-'emptyfile' => 'Ti papeles nga impapan mo ket kasla awan ti nagyan na.
+'emptyfile' => 'Ti papeles nga ipanmo ket kasla awan ti nagyan na.
 Baka daytoy ket gapu ti kamali ti inkabil a nagan ti papeles.
 Pangngaasi ta kitaem no kayatmo latta nga ipapan daytoy a papeles.',
-'windows-nonascii-filename' => 'Daytoy a wiki ket saan na a tapayaen dagiti nagan ti papeles nga addaan ti kangrunaan a kababalin',
-'fileexists' => "Addaan ti nagan ti papeles a kastoy, pangngaasi ta kitaem '''<tt>[[:$1]]</tt>''' no saan ka a sigurado ti agpasukat.
+'windows-nonascii-filename' => 'Daytoy a wiki ket saanna a tapayaen dagiti nagan ti papeles nga adda ti kangrunaan a kababalin',
+'fileexists' => "Adda ti papeles nga agnagan ti kastoy, pangngaasi a kitaemti  '''<tt>[[:$1]]</tt>''' no saanka a sigurado a mangsukat.
 [[$1|thumb]]",
-'filepageexists' => "Ti pinagipalpalawag a panid ti daytoy a papeles ket naaramiden idiay '''<tt>[[:$1]]</tt>''', mgem awan ti papeles a kastoy ti addaan ti nagan na.
-Ti pakabuklan nga inkabil mo ket saan nga agparang idiay panid ti pinagipalpalawag.
+'filepageexists' => "Ti panangipalpalawag a panid ti daytoy a papeles ket naaramiden idiay '''<tt>[[:$1]]</tt>''', mgem awan ti agnagan ti katoy a papeles.
+Ti pakabuklan nga inkabilmo ket saan nga agparang idiay panid ti panangipalpalawag.
 Tapno ti pakabuklan ket agparang idiay, masapul  a baliwam idiay.
 [[$1|thumb]]",
-'fileexists-extension' => "Addaan ti papeles a kastoy ti nagan na: [[$2|thumb]]
+'fileexists-extension' => "Adda papeles nga agnagan ti kastoy: [[$2|thumb]]
 * Nagan ti naipapan a papeles: '''<tt>[[:$1]]</tt>'''
-* Nagan ti addaan a papeles: '''<tt>[[:$2]]</tt>'''
-Pangngaasi ka nga agpili ti sabali a nagan.",
+* Nagan ti adda a papeles: '''<tt>[[:$2]]</tt>'''
+Pangngaasi nga agpili ti sabali a nagan.",
 'fileexists-thumbnail-yes' => "Daytoy a papeles ket kasla imahen a napabassit ''(thumbnail)''.
 [[$1|thumb]]
-Pangngaasi ta kitaem ti papeles a '''<tt>[[:$1]]</tt>'''.
-No ti nakitam a papeles ket isu met laeng dayta dati a kadakkel, saan kan a mang-ipan iti sabali pay a napabassit nga imahen.",
+Pangngaasi a kitaem ti papeles a '''<tt>[[:$1]]</tt>'''.
+No ti nakitam a papeles ket isu met laeng dayta dati a kadakkel, saanka a mang-ipan iti sabali pay a napabassit nga imahen.",
 'file-thumbnail-no' => "Ti nagan ti papeles ket mangrugi ti '''<tt>$1</tt>'''.
 Kasla imahen a napabassit ''(thumbnail)''.
 No addaan ka ti dakkel a resolusion daytoy nga imahen ipag-ipan daytoy, no saan ket pangngaasi ta sukatam ti nagan ti papeles.",
-'fileexists-forbidden' => 'Daytoy a nagan ti papeles ket addaan dita, ken saan a mabalin a masuratan manen.
+'fileexists-forbidden' => 'Daytoy a nagan ti papeles ket adda dita, ken saan a mabalin a masuratan manen.
 No ket kayatmo latta nga agipan ti papeles, pangngaasi ta agsubli ka ken usarem ti baro a nagan.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Daytoy a nagan ti papeles ket addaan dita pagbingayan a nagikabilan ti papeles.
+'fileexists-shared-forbidden' => 'Daytoy a nagan ti papeles ket adda dita pagbingayan a nagikabilan ti papeles.
 No ket kayatmo latta nga agipan ti papeles, pangngaasi ta agsubli ka ken usarem ti baro a nagan.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Daytoy a papeles ket duplikado kadagiti sumaganad a {{PLURAL:$1|papeles|dagiti papeles}}:',
-'file-deleted-duplicate' => 'Addaan ti papeles a kastoy ([[:$1]]) a naikkat idin.
-Kitaem kuma ti pakasaritaan a pinakaikkat ti papeles sakbay a mangirugi ka ti pinag-ipan.',
+'file-exists-duplicate' => 'Daytoy a papeles ket duplikado kadagiti sumaganad a {{PLURAL:$1|papeles|pappapeles}}:',
+'file-deleted-duplicate' => 'Ti papeles a kapadpada ti papeles a ([[:$1]]) ket naikkat idin.
+Kitaem kuma ti pakasaritaan a panakaikkat ti papeles sakbay a mangirugi ka ti pinag-ipan.',
 'uploadwarning' => 'Ballaag iti pinag-ipan',
-'uploadwarning-text' => 'Pangngaasi ta baliwam ti deskripsion ti papeles ken padasem manen.',
+'uploadwarning-text' => 'Pangngaasi a baliwam ti deskripsion ti papeles ken padasem manen.',
 'savefile' => 'Idulin ti papeles',
 'uploadedimage' => 'naipanen ti "[[$1]]"',
 'overwroteimage' => 'naipan ti baro a bersion ti "[[$1]]"',
@@ -1517,9 +1528,9 @@ Kitaem kuma ti pakasaritaan a pinakaikkat ti papeles sakbay a mangirugi ka ti pi
 'copyuploaddisabled' => 'Naiddep ti pinag-ipan iti URL.',
 'uploadfromurl-queued' => 'Dagiti pinag-ipan mo ket naikabil ti pinagurayan.',
 'uploaddisabledtext' => 'Napawilan ti pinag-ipan iti papeles.',
-'php-uploaddisabledtext' => 'Ti pag-ipan ti papeles ket naiddep idiay PHP.
-Panngaasi ta kitaem ti pannakaikabil ti pag-ipan ti papeles.',
-'uploadscripted' => 'Daytoy a papeles ket adda nagyan na a HTML wenno panagsurat a kodigo na baka agpakamali ti pinagbasa ti sapot a  pagbasabasa.',
+'php-uploaddisabledtext' => 'Ti pinag-ipan ti papeles ket naiddep idiay PHP.
+Panngaasi a kitaem ti pannakaikabil ti pinag-ipan ti papeles.',
+'uploadscripted' => 'Daytoy a papeles ket adda nagyan na a HTML wenno panagsurat a kodigo a mabalin nga agpakamali ti panagbasa ti sapot a  pagbasabasa.',
 'uploadvirus' => 'Addaan ti birus daytoy a papeles! Salaysay: $1',
 'uploadjava' => 'Daytoy a papeles ket ZIP a papeles nga adda nagyan na a Java .a kita ti papeles.
 Saan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsan da dagiti seguridad a pangrestrikto.',
@@ -1527,8 +1538,8 @@ Saan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsan da dagiti se
 'sourcefilename' => 'Taudan a nagan ti papeles:',
 'sourceurl' => 'Taudan ti URL:',
 'destfilename' => 'Pangipanan ti nagan ti papeles:',
-'upload-maxfilesize' => 'Pinakangato ti kadakkel ti papeles: $1',
-'upload-description' => 'Pinagipalpalawag ti papeles',
+'upload-maxfilesize' => 'Kadakkel a rukod ti papeles: $1',
+'upload-description' => 'Panagipalpalawag ti papeles',
 'upload-options' => 'Pagpilian ti pinag-ipan',
 'watchthisupload' => 'Bantayan daytoy a papeles',
 'filewasdeleted' => 'Ti papeles a nanaganan ti kastoy ket naipapan idin ken napaikkaten.
@@ -1551,10 +1562,10 @@ $1',
 Pangngaasi a kontaken ti [[Special:ListUsers/sysop|administrador]]',
 'upload-misc-error' => 'Di ammo a biddut ti panag-ipan',
 'upload-misc-error-text' => 'Adda saan nga ammo a biddut ti napasamak idi agdama a nag-ipan.
-Pangngaasinga a  kitaen ti URL ket umisu  ken maserrekan ken padasem manen.
+Pangngaasi a  kitaen ti URL ket umisu  ken maserrekan ken padasem manen.
 No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administrador]].',
 'upload-too-many-redirects' => 'Adu unay ti baw-ing daytoy nga URL',
-'upload-unknown-size' => 'Di ammo ti kadakkel na',
+'upload-unknown-size' => 'Di amammo ti kadakkelna',
 'upload-http-error' => 'Naka-adda ti biddut ti HTTP: $1',
 'upload-copy-upload-invalid-domain' => 'Ti kopia a panagipan ket saan a magun-od manipud iti daytoy a pagturayan.',
 
@@ -1562,11 +1573,11 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-stream' => 'Saan a maiwaig ti papeles $1.',
 'backend-fail-backup' => 'Saan a maidulin ti papeles $1.',
 'backend-fail-notexists' => 'Ti papeles a $1 ket awanen.',
-'backend-fail-hashes' => 'Saana maala dagiti papeles a hash tapno maipada.',
+'backend-fail-hashes' => 'Saan a maala dagiti papeles a hash tapno maipada.',
 'backend-fail-notsame' => 'Addaan ti saan a kapada tipapeles idiay $1.',
 'backend-fail-invalidpath' => '$1 ket imbalido a pagnaan ti pagidulinan.',
 'backend-fail-delete' => 'Saan a maikkat ti papeles $1.',
-'backend-fail-alreadyexists' => 'Ti papeles $1 ket aaddanen.',
+'backend-fail-alreadyexists' => 'Ti papeles $1 ket addan.',
 'backend-fail-store' => 'Saan a maidulin ti papeles $1 idiay $2.',
 'backend-fail-copy' => 'Saan a makopia ti papeles $1 idiay $2.',
 'backend-fail-move' => 'Saan a maiyalis ti papeles $1 idiay $2.',
@@ -1574,13 +1585,14 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-writetemp' => 'Saan a masuratan ti temporario a papeles.',
 'backend-fail-closetemp' => 'Saan a marikpan ti temporario a papeles.',
 'backend-fail-read' => 'Saan a mabasa ti papeles $1.',
-'backend-fail-create' => 'Saan a maaramid ti papeles $1.',
-'backend-fail-maxsize' => 'Saan a naaramid ti papeles $1 gapu ket dakdakkel ngem {{PLURAL:$2|maysa a byte|$2 a dagiti bytes}}.',
+'backend-fail-create' => 'Saan a masuratan ti papeles $1.',
+'backend-fail-maxsize' => 'Saan a masuratan ti papeles $1 gapu ta dakdakkel ngem {{PLURAL:$2|maysa a byte|dagiti $2 a bytes}}.',
 'backend-fail-readonly' => 'Ti pagidulinan a kalikudan ti "$1" ket agdama a mabasa laeng. Ti rason a naited idi ket: "$2"',
 'backend-fail-synced' => 'Ti papeles "$1" ket bangking ti kasasaad na  iti kinauneg a pagidulinan ti kalikudan',
 'backend-fail-connect' => 'Saan a makaikapet idiay pagidulinan a kalikudan  "$1".',
 'backend-fail-internal' => 'Adda di amammo a biddut ti napasamak idiay pagidulinan a kalikudan "$1".',
 'backend-fail-contenttype' => 'Saan a maammoan ti kita ti linaon ti papeles nga idulin idiay "$1".',
+'backend-fail-usable' => 'Saan a masuratan ti papeles $1 gapu ta awan ti makaanay a pammalubos wenno awan dagiti direktorio/pangikabilan.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Saan a malukatan ti "$1"; saan a nakandaduan.',
@@ -1606,8 +1618,8 @@ Saan a matutup ti pinagkita ti seguridad na.',
 'uploadstash-summary' => 'Daytoy a panid ket mangted ti panagserrek ti papeles a napag-ipan (wenno nairugi nga ipan) ngem saan pay na naipablaak dita wiki. Dagitoy a papeles ket saan a makita ti sabsabali ngem laeng ti agar-aramat a nag-ipan kaniada.',
 'uploadstash-clear' => 'Dalusan dagiti na stash a papeles',
 'uploadstash-nofiles' => 'Awan ti na stash a papeles mo.',
-'uploadstash-badtoken' => 'Ti pinag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talek mo ti panag-urnos ket nagpaso. Padasem manen.',
-'uploadstash-errclear' => 'Ti pinagdalus kadagiti papeles ket napaay.',
+'uploadstash-badtoken' => 'Ti panag-tungpal dayta nga aramid ket napaay, ngamin ta dagiti talek mo ti panag-urnos ket nagpaso. Padasem manen.',
+'uploadstash-errclear' => 'Ti panagdalus kadagiti papeles ket napaay.',
 'uploadstash-refresh' => 'Pasadiwaam dagiti listaan ti papeles',
 'invalid-chunk-offset' => 'Imbalido ti maysa a supli',
 
@@ -1620,10 +1632,10 @@ Kitaen ti https://www.mediawiki.org/wiki/Manual:Image_Authorization .',
 'img-auth-badtitle' => 'Saan a makaaramid ti umisu a titulo a naggapu idiay "$1".',
 'img-auth-nologinnWL' => 'Saan ka a nakastrek ken ti "$1" ket awan idiay mabalin a listaan.',
 'img-auth-nofile' => 'Ti papeles "$1" ket awan dita.',
-'img-auth-isdir' => 'Agserserrek ka ti direktorio ti papeles "$1".
+'img-auth-isdir' => 'Agserserrekka ti direktorio ti papeles "$1".
 Ti iseserrek ti papeles ti mabalin laeng.',
 'img-auth-streaming' => 'Agwaig "$1".',
-'img-auth-public' => 'Ti opisio ti img_auth.php ket mangiruar kadagiti papeles manipud ti pribado a wiki.
+'img-auth-public' => 'Ti pamay-an ti img_auth.php ket mangiruar kadagiti papeles manipud ti pribado a wiki.
 Daytoy a wiki naipabalin a kas publiko a wiki.
 Para iti kangatuan a talinaay, nabaldado ti img_auth.php.',
 'img-auth-noread' => 'Ti agar-aramat ket awan ti pammalubos na nga agbasa "$1".',
@@ -1687,14 +1699,14 @@ No sagaten ti agar-aramat, dagiti laeng papeles a pinag-ipan ti agar-aramat ti k
 'filehist-comment' => 'Komentario',
 'filehist-missing' => 'Mapukpukaw ti papeles',
 'imagelinks' => 'Panagusar iti daytoy a papeles',
-'linkstoimage' => 'Ti sumaganad {{PLURAL:$1|a silpo ti panid|$1 a dagiti silpo ti panid}} ditoy a papeles:',
-'linkstoimage-more' => 'Adadu a $1 {{PLURAL:$1|paninillpo ti panid|panilpo ti pampanid}} ditoy a papeles.
-Dagiti sumaganad a listaan ket ipakita na ti {{PLURAL:$1|umona a panilpo ti panid|umuna a $1 paninilpo ti panid}} ditoy a papeles laeng.
+'linkstoimage' => 'Ti sumaganad {{PLURAL:$1|a silpo ti panid|kadagiti $1 a silpo ti panid}} ditoy a papeles:',
+'linkstoimage-more' => 'Adadu ngem $1 {{PLURAL:$1|a paninillpo ti panid|kadagiti panilpo ti pampanid}} ditoy a papeles.
+Ti sumaganad a listaan ket ipakita na {{PLURAL:$1|ti umona a panilpo ti panid|dagiti umuna a $1 panilpo ti panid}} ditoy a papeles laeng.
 Ti [[Special:WhatLinksHere/$2|kompleto a listaan]] ket addaan.',
 'nolinkstoimage' => 'Awan ti pampanid a nakasilpo iti daytoy a papeles.',
 'morelinkstoimage' => 'Kitaen ti [[Special:WhatLinksHere/$1|ad-adu pay a panilpo]] iti daytoy a papeles.',
 'linkstoimage-redirect' => '$1 (baw-ing ti papeles) $2',
-'duplicatesoffile' => 'Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|$1 kadagiti papeles ket duplikado}} daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):',
+'duplicatesoffile' => 'Ti sumaganad a {{PLURAL:$1|papeles ket duplikado|kadagiti $1 papeles ket duplikado}} daytoy a papeles ([[Special:FileDuplicateSearch/$2|adu pay a salaysay]]):',
 'sharedupload' => 'Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.',
 'sharedupload-desc-there' => 'Daytoy a papeles ket naggapu idiay $1 ken mabalin a mausar kadagiti sabsabali a gandat.
 Pangngaasim a kitaem ti [$2 pagipalpalawag ti panid] ti adu pay a pakaammo.',
@@ -1713,28 +1725,28 @@ Baka kayatmo nga urnosen ti bukodna a deskripsionna idiay [$2 deskripsion ti pap
 # File reversion
 'filerevert' => 'Isubli ti $1',
 'filerevert-legend' => 'Isubli ti papeles',
-'filerevert-intro' => "Mangmangrugi ka ti agpasubli ti papeles '''[[Media:$1|$1]]''' iti [$4 bersion ti oras ket petsa nga $3, $2].",
+'filerevert-intro' => "Mangrugrugika nga agipasubli ti papeles '''[[Media:$1|$1]]''' iti [$4 bersion ti oras ket petsa nga $3, $2].",
 'filerevert-comment' => 'Rason:',
-'filerevert-defaultcomment' => 'Naisubli ti bersion sipud iti $2, $1',
+'filerevert-defaultcomment' => 'Naisubli ti bersion manipud idi $2, $1',
 'filerevert-submit' => 'Isubli',
-'filerevert-success' => "'''[[Media:$1|$1]]''' ket naipasubli idiay [$4 bersion ti oras ken petsa $3, $2].",
+'filerevert-success' => "Ti '''[[Media:$1|$1]]''' ket naipasubli idiay [$4 bersion ti oras ken petsa $3, $2].",
 'filerevert-badversion' => 'Awan ti napalubos a lokal a bersion daytoy a papeles nga adda naikkan dayta nga oras ken petsa.',
 
 # File deletion
 'filedelete' => 'Ikkaten ti $1',
 'filedelete-legend' => 'ikkaten ti papeles',
-'filedelete-intro' => "Makarugi ka ti agikkat ti '''[[Media:$1|$1]]''' ken dagiti amin a pakasaritaan na.",
-'filedelete-intro-old' => "Ikikatem ti bersion daytoy '''[[Media:$1|$1]]''' nangrugi idi [$4 $3, $2].",
+'filedelete-intro' => "Mangrugrugika nga agikkat ti '''[[Media:$1|$1]]''' ken mairaman amin a pakasaritaanna.",
+'filedelete-intro-old' => "Ikikatem ti bersion iti '''[[Media:$1|$1]]''' manipud idi [$4 $3, $2].",
 'filedelete-comment' => 'Rason:',
 'filedelete-submit' => 'Ikkaten',
 'filedelete-success' => "Naikkaten ti '''$1'''.",
-'filedelete-success-old' => "Ti bersion iti '''[[Media:$1|$1]]''' nakarugi idi $3, $2 ket naikkaten.",
+'filedelete-success-old' => "Ti bersion iti '''[[Media:$1|$1]]''' manipud idi $3, $2 ket naikkaten.",
 'filedelete-nofile' => "awan ti '''$1''' .",
 'filedelete-nofile-old' => "Awan ti nailebbeng a bersion ti '''$1''' nga addaan ti naited a kakitkita na.",
 'filedelete-otherreason' => 'Sabali/nayon a rason:',
 'filedelete-reason-otherlist' => 'Sabali a rason',
 'filedelete-reason-dropdown' => '*Kadawyan a rasrason ti pannakaikkat
-** Panagsalungasing iti karbengan ti pianagtulad
+** Panagsalungasing iti karbengan ti panagkopia
 ** Nadoble a papeles',
 'filedelete-edit-reasonlist' => 'Unosen ti rason ti panagikkat',
 'filedelete-maintenance' => 'Saan nga agnayon a naibaldado ti pinagikkat ken pinagisubli dagiti papeles iti dagdama a pinagsimpa.',
@@ -1751,13 +1763,13 @@ Ikabil: kita ti nagyan/apo a kita, e.g. <tt>image/jpeg</tt>.',
 'unwatchedpages' => 'Di mabambantayan a pampanid',
 
 # List redirects
-'listredirects' => 'Listaan dagiti panangibaw-ing',
+'listredirects' => 'Listaan dagiti baw-ing',
 
 # Unused templates
 'unusedtemplates' => 'Dagiti saan a nausar a plantilia',
-'unusedtemplatestext' => 'Daytoy a panid ket ilista na dagiti panid idiay {{ns:template}} a nagan ti lugar a saan a nairaman iti sabali a panid.
-Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem ida.',
-'unusedtemplateswlh' => 'sabali pay a panpanilpo',
+'unusedtemplatestext' => 'Daytoy a panid ket ilistana dagiti panid idiay {{ns:template}} a nagan ti lugar a saan a nairaman iti sabali a panid.
+Laglagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem ida.',
+'unusedtemplateswlh' => 'dagiti sabali pay a panilpo',
 
 # Random page
 'randompage' => 'Pugto a panid',
@@ -1765,7 +1777,7 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 
 # Random redirect
 'randomredirect' => 'Pugto a baw-ing',
-'randomredirect-nopages' => 'Awan ti bawbaw-ing iti daytoy a nagan ti lugar "$1".',
+'randomredirect-nopages' => 'Awan dagiti baw-ing iti daytoy a nagan ti lugar "$1".',
 
 # Statistics
 'statistics' => 'Estadistika',
@@ -1776,13 +1788,13 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 'statistics-header-hooks' => 'Estadistika a sabsabali',
 'statistics-articles' => 'Dagiti naglaon a panid',
 'statistics-pages' => 'Pampanid',
-'statistics-pages-desc' => 'Dagiti panid ti wiki, nairaman dagitoy kapatangan a panid, dagitoy baw-ing, ken dadduma pay',
+'statistics-pages-desc' => 'Dagiti amin a panid ti wiki, a mairaman dagiti tungtungan a panid, dagiti baw-ing, ken dadduma pay',
 'statistics-files' => 'Ti naipapan a papeles',
 'statistics-edits' => 'Dagit naurnos a panid manipud idi nairugi ti {{SITENAME}}',
-'statistics-edits-average' => 'Napipia nga urnos tungal maysa a panid',
+'statistics-edits-average' => 'Pagtengngaan nga urnos tungal maysa a panid',
 'statistics-views-total' => 'Dagiti dagup ti panagkita',
-'statistics-views-total-desc' => 'Saan a naikabil ti pagkita dagiti awan a panid ken dagiti espesial a panid',
-'statistics-views-peredit' => 'Mano a pagkita tunggal ti maysa nga urnos',
+'statistics-views-total-desc' => 'Saan a naikabil ti panagkita dagiti awan a panid ken dagiti espesial a panid',
+'statistics-views-peredit' => 'Mano a panagkita tunggal maysa nga urnos',
 'statistics-users' => 'Dagiti nakarehistro nga [[Special:ListUsers|agar-aramat]]',
 'statistics-users-active' => 'Dagiti nasiglat nga agar-aramat',
 'statistics-users-active-desc' => 'Dagiti agar-aramat a nagtungpal iti aramid idi napalubos nga {{PLURAL:$1|aldaw|$1 al-aldaw}}',
@@ -1794,36 +1806,36 @@ Palagipem ti agkita kadagiti sabsabali a panilpo ti plantilia sakbay nga ikkatem
 Ngem agpasilpo da kuma ti husto a topiko.<br />
 Ti panid ket matrato a kas panangilawlawag a panid no agusar ti plantilia a nakasilpo idiay [[MediaWiki:Disambiguationspage]]",
 
-'doubleredirects' => 'Dagiti naminduan a panangbaw-ing',
-'doubleredirectstext' => 'Daytoy a panid ket ilista na dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
-Iti maysanga aray ket adda nagyan na kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudo na.
+'doubleredirects' => 'Dagiti namindua a naibaw-ing',
+'doubleredirectstext' => 'Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
+Iti tunggal maysa nga aray ket adda nagyanna kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikadua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudona.
 <del>Nakurosan</del> dagita naikabil ket napadtuan.',
 'double-redirect-fixed-move' => 'Ti [[$1]] ket naiyalisen.
 Tattan ket naibaw-ing idiay [[$2]].',
 'double-redirect-fixed-maintenance' => 'Simsimpaen dagiti namindua a naibaw-ing a naggapo idiay [[$1]] nga ipan idiay [[$2]].',
-'double-redirect-fixer' => 'Pagsimpa ti baw-ing',
+'double-redirect-fixer' => 'Panagsimpa ti baw-ing',
 
-'brokenredirects' => 'Dagiti naputed a panangbaw-ing',
+'brokenredirects' => 'Dagiti naputed a baw-ing',
 'brokenredirectstext' => 'Dagitoy sumaganad a baw-ing ket napasilpo kadagiti awan a panid:',
 'brokenredirects-edit' => 'urnosen',
 'brokenredirects-delete' => 'ikkaten',
 
-'withoutinterwiki' => 'Dagiti panid nga awanan ti panilpo a pagsasao',
+'withoutinterwiki' => 'Dagiti panid nga awan ti silpona ti pagsasao',
 'withoutinterwiki-summary' => 'Dagitoy a pampanid ket saan a nakasilpo ti sabali a bersion ti pagsasao.',
 'withoutinterwiki-legend' => 'Pagpasaruno',
 'withoutinterwiki-submit' => 'Ipakita',
 
-'fewestrevisions' => 'Dagiti panid nga addaan ti kababassitan a panangbalbaliw',
+'fewestrevisions' => 'Dagiti panid nga adda kadagiti kabassitan a panangbalbaliw',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|a byte|a bytes}}',
-'ncategories' => '$1 {{PLURAL:$1|kategoria|dagiti kategoria}}',
-'nlinks' => '$1 {{PLURAL:$1|panilpo|pampanilpo}}',
-'nmembers' => '$1 {{PLURAL:$1|kameng|kamkameng}}',
-'nrevisions' => '$1 {{PLURAL:$1|a pinagbaliwan|dagiti pinagbaliwan}}',
-'nviews' => '$1 {{PLURAL:$1|a panangkita|dagiti panangkita}}',
-'nimagelinks' => 'Inusar idiay $1 {{PLURAL:$1|panid|pampanid}}',
-'ntransclusions' => 'inusar idiay $1 {{PLURAL:$1|panid|pampanid}}',
+'nbytes' => '$1 {{PLURAL:$1|a byte|kadagiti byte}}',
+'ncategories' => '$1 {{PLURAL:$1|a kategoria|kadagiti kategoria}}',
+'nlinks' => '$1 {{PLURAL:$1|a panilpo|kadagiti panilpo}}',
+'nmembers' => '$1 {{PLURAL:$1|a kameng|kadagiti kameng}}',
+'nrevisions' => '$1 {{PLURAL:$1|a panagbalbaliw|kadagiti panagbalbaliw}}',
+'nviews' => '$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}',
+'nimagelinks' => 'Inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}',
+'ntransclusions' => 'inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}',
 'specialpage-empty' => 'Awan dagiti nagbanagan na daytoy a padamag.',
 'lonelypages' => 'Dagiti naulila a panid',
 'lonelypagestext' => 'Dagiti sumaganad a panid ket saan a nakasilpo idiay wenno naipakita kadagiti sabali a panid idiay {{SITENAME}}.',
@@ -1833,7 +1845,7 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'uncategorizedtemplates' => 'Dagiti saan a nakategoria a plantilia',
 'unusedcategories' => 'Dagiti saan a nausar a kategoria',
 'unusedimages' => 'Dagiti saan a nausar a papeles',
-'popularpages' => 'Dagiti nalatak a panid',
+'popularpages' => 'Dagiti nadayeg a panid',
 'wantedcategories' => 'Dagiti makidkiddaw a kategoria',
 'wantedpages' => 'Dagiti makidkiddaw a panid',
 'wantedpages-badtitle' => 'Saan nga umisu a titulo idiay naikabil a pagbanagan: $1',
@@ -1862,26 +1874,26 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'protectedtitlestext' => 'Dagitoy a titulo ket nasalakniban ti panakaaramid',
 'protectedtitlesempty' => 'Awan dagiti titulo a madama a nasalakniban iti dagitoy a parametro.',
 'listusers' => 'Listaan dagiti agar-aramat',
-'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnos na',
+'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnosda',
 'listusers-creationsort' => 'Ilasin no ania a petsa ti panakaaramid',
-'usereditcount' => '$1 {{PLURAL:$1|inurnos|dagiti inurnos}}',
+'usereditcount' => '$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}}',
 'usercreated' => '{{GENDER:$3|Inaramid}} idi $1 ti oras nga $2',
 'newpages' => 'Baro a pampanid',
 'newpages-username' => 'Nagan ti agar-aramat:',
 'ancientpages' => 'Dagiti kadaanan a panid',
 'move' => 'Iyalis',
 'movethispage' => 'Iyalis daytoy a panid',
-'unusedimagestext' => 'Dagiti sumaganad a papeles ket addaan ngem saanda a naikabil iti ania man a panid.
-Pangngaasi a laglagipen a dagiti sabali a pagsaadan ti apot ket makapanilpo ti papeles iti dagus a URL, ken isu pay a nailista da ditoy uray no saan da a naus-usar iti agdama.',
+'unusedimagestext' => 'Adda dagiti sumaganad a papeles ngem saanda a naikabil iti ania man a panid.
+Pangngaasi a laglagipen a dagiti sabali a sapot ti pagsaadan  ket makasilpoda ti papeles iti dagus a URL, ken isu pay a nailista da ditoy uray no saan da a naus-usar iti agdama.',
 'unusedcategoriestext' => 'Adda dagiti sumaganad a kategoria a panid, ngem awan ti sabali a panid wenno kategoria ti agus-usar kaniada.',
 'notargettitle' => 'Awan ti napuntaan',
-'notargettext' => 'Saan mo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal daytoy nga opisio.',
+'notargettext' => 'Saanmo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal daytoy nga opisio.',
 'nopagetitle' => 'Awan ti kasta a puntaan a panid',
 'nopagetext' => 'Awan ti puntaan a panid a nainaganam.',
 'pager-newer-n' => '{{PLURAL:$1|nabarbaro 1|dagiti nabarbaro $1}}',
 'pager-older-n' => '{{PLURAL:$1|nadadaan 1|nadadaan $1}}',
 'suppress' => 'Pakapansin',
-'querypage-disabled' => 'Daytoy a nangruna a panid ket nabaldado gapu kadagiti rason a pinagtungpal.',
+'querypage-disabled' => 'Daytoy a nangruna a panid ket nabaldado gapu kadagiti rason a panagtungpal.',
 
 # Book sources
 'booksources' => 'Nagtaudan ti liblibro',
@@ -1899,6 +1911,7 @@ Pangngaasi a laglagipen a dagiti sabali a pagsaadan ti apot ket makapanilpo ti p
 Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (ket sensitibo met ti kadakkel ti letra).',
 'logempty' => 'Awan ti agpada a bagay dita listaan.',
 'log-title-wildcard' => 'Agsapul kadagiti titulo nga agrugi iti daytoy a testo',
+'showhideselectedlogentries' => 'Ipakita/ilemmeng dagiti napili a naikabil ti listaan',
 
 # Special:AllPages
 'allpages' => 'Amin a panid',
@@ -1919,21 +1932,22 @@ Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-arama
 'allpages-hide-redirects' => 'Ilemmeng dagiti baw-ing',
 
 # SpecialCachedPage
-'cachedspecial-viewing-cached-ttl' => 'Kitkitaenm ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.',
+'cachedspecial-viewing-cached-ttl' => 'Kitkitaem ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.',
+'cachedspecial-viewing-cached-ts' => 'Kitkitaem ti maysa a naidulin a bersion iti daytoy a panid, a baka daytoy ket saan a kompleto nga agpayso.',
 'cachedspecial-refresh-now' => 'Kitaen ti kinaudian.',
 
 # Special:Categories
 'categories' => 'Dagiti kategoria',
-'categoriespagetext' => 'Dagiti sumaganad a {{PLURAL:$1|nagyan ti kategoria|dagiti nagyan ti kategoria}} pampanid wenno midia.
-[[Special:UnusedCategories|Saan nga nausar nga kategoria]] ket saan nga maiparang ditoy.
-Kitaen met ti [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
+'categoriespagetext' => 'Ti sumaganad a {{PLURAL:$1|kategoria ket aglaon|katkategoria ket aglaon}} kadagiti panid wenno midia.
+[[Special:UnusedCategories|Dagiti saan a nausar a kategoria]] ket saan a maiparang ditoy.
+Kitaen met [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
 'categoriesfrom' => 'Ipakita dagiti kategoria a mangrugi iti:',
 'special-categories-sort-count' => 'paglalasinen babaen ti bilang',
 'special-categories-sort-abc' => 'paglalasinen a pang-abesedario',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'Dagiti naikkat nga inararamid ti agar-aramat',
-'deletedcontributions-title' => 'Dagiti naikkat nga inararamid iti agar-aramat',
+'deletedcontributions-title' => 'Dagiti naikkat nga inararamid ti agar-aramat',
 'sp-deletedcontributions-contribs' => 'dagiti parawad',
 
 # Special:LinkSearch
@@ -1943,8 +1957,8 @@ Kitaen met ti [[Special:WantedCategories|dagiti makidkiddaw a kategoria]].',
 'linksearch-ok' => 'Biruken',
 'linksearch-text' => 'Ti naataap a tarheta a kas "*.wikipedia.org" ket mabalin nga usaren.
 Masapul ti kangatuan a pagturayan, a kaspagarigan "*.org".<br />
-Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo) .',
-'linksearch-line' => '$1 ket nakasilpo idiay $2',
+Natapayaen a protokol: <tt>$1</tt> (saanmo nga inayon dagitoy iti panagbirukmo) .',
+'linksearch-line' => 'Ti $1 ket nakasilpo idiay $2',
 'linksearch-error' => 'Ti naatap a tarheta ket agparang laeng iti pinagrugi ti nagan ti agsangaili.',
 
 # Special:ListUsers
@@ -1955,9 +1969,9 @@ Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo
 
 # Special:ActiveUsers
 'activeusers' => 'Listaan dagiti nasiglat nga agar-aramat',
-'activeusers-intro' => 'Daytoy ti listaan dagiti agar-aramat nga adda inararamidda idi napalabas $1 {{PLURAL:$1|nga aldaw|nga dagiti aldaw}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|inurnos|dagiti inurnos}} idi kalpasan {{PLURAL:$3|nga aldaw|$3 dagiti aldaw}}',
-'activeusers-from' => 'Iparang dagiti agar-aramat mangrugi iti:',
+'activeusers-intro' => 'Daytoy ti listaan dagiti agar-aramat nga adda inararamidda kadagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga alaldaw}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|nga inurnos|kadagiti inurnos}} idi kalpasan ti  {{PLURAL:$3|nga aldaw|$3 nga alaldaw}}',
+'activeusers-from' => 'Iparang dagiti agar-aramat mangrugi iti:',
 'activeusers-hidebots' => 'Ilemmeng dagiti bots',
 'activeusers-hidesysops' => 'Ilemmeng dagiti administrador',
 'activeusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
@@ -1968,34 +1982,34 @@ Natapayaen a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti panagbiruk mo
 
 # Special:ListGroupRights
 'listgrouprights' => 'Dagiti karbengan ti bunggoy ti agar-aramat',
-'listgrouprights-summary' => 'Dagiti sumaganad a listaan ti bunggoy ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrek da.
-Adda pay ngata [[{{MediaWiki:Listgrouprights-helppage}}|adu pay a pakaammo]] a maipapan kadagiti kabukbukod da a karbengan.',
+'listgrouprights-summary' => 'Dagiti sumaganad a listaan ti bunggoy ti agar-aramat a naipalawag iti daytoy a wiki, a nairaman dagiti karbengan ti panagserrekda.
+Adda pay ngata [[{{MediaWiki:Listgrouprights-helppage}}|adu pay a pakaammo]] a maipapan kadagiti kabukbukodda a karbengan.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">Naikkan ti karbengan</span>
 * <span class="listgrouprights-revoked">Naikkat ti karbengan</span>',
 'listgrouprights-group' => 'Bunggoy',
 'listgrouprights-rights' => 'Dagiti karbengan',
 'listgrouprights-helppage' => 'Help:Karbengan ti bunggoy',
 'listgrouprights-members' => '(listaan dagiti kameng)',
-'listgrouprights-addgroup' => 'Inayon {{PLURAL:$2|bunggoy|dagiti bunggoy}} : $1',
+'listgrouprights-addgroup' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} : $1',
 'listgrouprights-removegroup' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bunggoy}}: $1',
 'listgrouprights-addgroup-all' => 'Inayon amin dagiti bunggoy',
 'listgrouprights-removegroup-all' => 'Ikkatem amin dagiti bunggoy',
-'listgrouprights-addgroup-self' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} ti bukod da a pakabilangan: $1',
-'listgrouprights-removegroup-self' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bungoy}} ti bukod da a pakabilangan: $1',
-'listgrouprights-addgroup-self-all' => 'Inayon amin dagiti bunggoy ti bukod mo a pakabilangan',
+'listgrouprights-addgroup-self' => 'Inayon {{PLURAL:$2|ti bunggoy|dagiti bunggoy}} ti bukodda a pakabilangan: $1',
+'listgrouprights-removegroup-self' => 'Ikkaten {{PLURAL:$2|ti bunggoy|dagiti bungoy}} ti bukodda a pakabilangan: $1',
+'listgrouprights-addgroup-self-all' => 'Inayon amin dagiti bunggoy ti bukodmo a pakabilangan',
 'listgrouprights-removegroup-self-all' => 'Ikkatem amin dagiti bunggoy ti bukod a pakabilangan',
 
 # E-mail user
-'mailnologin' => 'Awan pagipatulodan a pagtaengan',
+'mailnologin' => 'Awan ti pagipatulodan a pagtaengan',
 'mailnologintext' => 'Masapul a [[Special:UserLogin|nakastrekka]] ken adda umisu nga e-surat a pagtaengan idiay [[Special:Preferences|kaykayatmo]] ti agipatulod ti e-surat kadagiti sabsabali nga agar-aramat.',
 'emailuser' => 'E-suratan daytoy nga agar-aramat',
 'emailpage' => 'E-suratan ti agar-aramat',
-'emailpagetext' => 'Mabalin mo nga usaren ti kinabuklan dita baba nga agipatulod ti e-surat a mensahe daytoy nga agar-aramat.
-Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agparang a kas "Naggapu" a pagtaengan ti e-surat, tapno ti nagipatulodam ket makasungbat kenka.',
+'emailpagetext' => 'Mabalinmo nga usaren ti kinabuklan dita baba nga agipatulod ti e-surat a mensahe daytoy nga agar-aramat.
+Ti e-surat nga inkabilmo idiay  [[Special:Preferences|kakaykayatam]] ket agparang a kas "Naggapu" a pagtaengan ti e-surat, tapno ti nagipatulodam ket makasungbat kenka.',
 'usermailererror' => 'Kita ti surat ket nangisubli ti biddut:',
 'defemailsubject' => '{{SITENAME}} e-surat naggapo ken ni "$1"',
-'usermaildisabled' => 'Saan mo a mabalin ti agipatulod ti e-surat',
-'usermaildisabledtext' => 'Saan mo a mabalin ti agipatulod ti e-surat kadagiti sabali nga agar-aramat ditoy a wiki',
+'usermaildisabled' => 'Saanmo a mabalin ti agipatulod ti e-surat',
+'usermaildisabledtext' => 'Saanmo a mabalin ti agipatulod ti e-surat kadagiti sabali nga agar-aramat ditoy a wiki',
 'noemailtitle' => 'Awan ti e-surat a pagtaengan',
 'noemailtext' => 'Ti agar-aramat ket saan a nagikabil ti umisu nga e-surat a pagtaengan.',
 'nowikiemailtitle' => 'Maiparit ti e-surat',
@@ -2005,13 +2019,13 @@ Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agpara
 'emailusername' => 'Nagan ti agar-aramat:',
 'emailusernamesubmit' => 'Ited',
 'email-legend' => 'Ipatulod ti e-surat ti sabali a {{SITENAME}} ti agar-aramat',
-'emailfrom' => 'Naggapo ken ni:',
+'emailfrom' => 'Naggapo kenni:',
 'emailto' => 'Para kenni:',
 'emailsubject' => 'Suheto:',
 'emailmessage' => 'Mensahe:',
 'emailsend' => 'Ipatulod',
 'emailccme' => 'E-surat iti kopia ti mensahek.',
-'emailccsubject' => 'Kopya ti mensahem ken ni $1: $2',
+'emailccsubject' => 'Kopia ti mensahem kenni $1: $2',
 'emailsent' => 'Naipatuloden ti e-surat',
 'emailsenttext' => 'Naipatuloden ti e-surat a mensahem.',
 'emailuserfooter' => 'Daytoy nga e-surat ket impatulod ni $1 kenni $2 iti "E-surat" a panagararamid idiay {{SITENAME}}',
@@ -2025,7 +2039,7 @@ Ti e-surat nga inkabil mo idiay  [[Special:Preferences|kakaykayatam]] ket agpara
 'mywatchlist' => 'Bambantayak',
 'watchlistfor2' => 'Para iti $1 $2',
 'nowatchlist' => 'Awan ti banag iti listaan dagiti bambantayam.',
-'watchlistanontext' => 'Pangngaasim ti $1 tapno makitam dagiti inurnos mo dita bambantayam.',
+'watchlistanontext' => 'Pangngaasim ti $1 tapno makitam dagiti inurnosmo dita bambantayam.',
 'watchnologin' => 'Saan a nakastrek',
 'watchnologintext' => 'Masapul a [[Special:UserLogin|nakastrekka]] tapno mabaliwam dagiti bambantayam a panid.',
 'addwatch' => 'Inayon iti bambantayan',
@@ -2042,12 +2056,12 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 'watchnochange' => 'Awan dagiti binambantayam ket naurnos dita panawen a naipakita.',
 'watchlist-details' => '{{PLURAL:$1|$1 panid|$1 dagiti panid}} a bambantayam, saan a mairaman dagiti panid ti tungtongan.',
 'wlheader-enotif' => '* Napakabaelan ti pakiammo ti e-surat.',
-'wlheader-showupdated' => "* Dagiti panid a nasukatan idi kinaudi a pinagbisitam ket naipakita iti '''napuskol'''",
+'wlheader-showupdated' => "* Dagiti panid a nasukatan manipud ti kinaudi a panagsarungkarmo ket naipakita iti '''napuskol'''",
 'watchmethod-recent' => 'kitkitaen dagiti kinaudi nga inurnos kadagiti bambantayan a panid',
 'watchmethod-list' => 'kitkitaen dagiti bambantayan a panid kadagiti kinaudi nga inurnos',
-'watchlistcontains' => 'Addaan ti listaan ti bambantayam iti $1 {{PLURAL:$1|a panid|a pampanid}}.',
+'watchlistcontains' => 'Ti listaan ti bambantayam ket aglaon ti $1 {{PLURAL:$1|a panid|a pampanid}}.',
 'iteminvalidname' => "Parikut iti banag '$1', imbalido a nagan...",
-'wlnote' => "Adda dita baba {{PLURAL:$1|ti kaudian a panagsukat|dagiti kaudian '''$1''' a pinagsukat}} iti naudi a {{PLURAL:$2|oras|'''$2''' oras}}, sipud idi $3, $4.",
+'wlnote' => "Adda dita baba {{PLURAL:$1|ti kaudian a panagsukat|dagiti kaudian '''$1''' a panagsukat}} iti naudi  {{PLURAL:$2|nga oras| a '''$2''' nga oras}}, manipud idi $3, $4.",
 'wlshowlast' => 'Ipakita dagiti naudi a $1 nga or-oras $2 nga al-aldaw $3',
 'watchlist-options' => 'Dagiti pagpilian ti listaan a bambantayan',
 
@@ -2063,7 +2077,7 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 'changed' => 'nasukatan',
 'created' => 'naaramid',
 'enotif_subject' => 'Ti {{SITENAME}} a panid a $PAGETITLE ket $CHANGEDORCREATED ni $PAGEEDITOR',
-'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a pinagsukat sipud ti naudi nga isasarungkarmo.',
+'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a panagsukat sipud ti naudi nga isasarungkarmo.',
 'enotif_lastdiff' => 'kitaen ti $1 tapno mabuya daytoy a pinagsukat.',
 'enotif_anon_editor' => 'di am-ammo nga agar-aramat $1',
 'enotif_body' => 'Nadungngo a $WATCHINGUSERNAME,
@@ -2106,7 +2120,7 @@ Ti makunkunam ken no masapulmo pay ti tulong:
 'exblank' => 'blanko ti panid',
 'delete-confirm' => 'Ikkaten ti "$1"',
 'delete-legend' => 'Ikkaten',
-'historywarning' => "'''Ballaag: ''' Ti panid a kayatmo nga ikkaten ket addaan iti pakasaritaan nga adda $1 {{PLURAL:$1|binaliwan|dagiti binaliwan}}:",
+'historywarning' => "'''Ballaag: ''' Ti panid a kayatmo nga ikkaten ket adda pakasaritaanna ti agarup a $1 {{PLURAL:$1|a binaliwan|kadagiti binaliwan}}:",
 'confirmdeletetext' => 'Ikkatemon ti maysa a panid agraman am-amin a pakasaritaanna.
 Pangngaasim ta pasingkedam a talaga a kayatmo nga aramiden daytoy, a maawatam ti bunga ti panangikkatmo, ken aramidem daytoy kas maiyannugot iti [[{{MediaWiki:Policy-url}}|annuroten]].',
 'actioncomplete' => 'Nalpasen a naaramid',
@@ -2116,18 +2130,18 @@ Kitaen ti $2 para iti panakrehistro dagiti naudi a naikkat.',
 'dellogpage' => 'Listaan ti panagikkat',
 'dellogpagetext' => 'Adda dita baba ti listaan dagiti kaudian a panangikkat.',
 'deletionlog' => 'listaan ti panagikkat',
-'reverted' => 'Naisubli iti immun-una a panamalbaliw',
+'reverted' => 'Naisubli iti immuna a panagbalbaliw',
 'deletecomment' => 'Rason:',
 'deleteotherreason' => 'Sabali/dadduma pay a rason:',
 'deletereasonotherlist' => 'Sabali a rason',
 'deletereason-dropdown' => '*Kadawyan a gapgapu dagiti pannakaikkat
 ** Kiddaw ti mannurat
-** Panaglabsing iti karbengan ti pinagpablaak
+** Panaglabsing iti karbengan ti panagipablaak
 ** Bandalismo',
-'delete-edit-reasonlist' => 'Urnosen dagiti rason ti pinagikkat',
-'delete-toobig' => 'Daytoy a panid ket dakkel ti pakasaritaan na, mabalin ket $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.
+'delete-edit-reasonlist' => 'Urnosen dagiti rason ti panagikkat',
+'delete-toobig' => 'Daytoy a panid ket dakkel ti pakasaritaanna, sumurok  $1 {{PLURAL:a panagbaliwan|dagiti panagbaliwan}}.
 Ti panagikkat ti kastoy a pammpanid ket naparitan tapno mapawilan ti saan nga inkarkaro a panakadadael ti {{SITENAME}}.',
-'delete-warning-toobig' => 'Daytoy a panid ket addaan ti dakkel unay ti pakasaritaan na a panag-urnos, ti kaadu nga $1 {{PLURAL:$1|panagbaliw|dagiti panagbaliw}}.
+'delete-warning-toobig' => 'Daytoy a panid ket adda ti dakkel unay a pakasaritaan ti panag-urnos, ti kaadu nga $1 {{PLURAL:$1|panagbaliw|dagiti panagbaliw}}.
 Ti panagikkat ket madisturbo ti panagpataray ti database ti {{SITNAME}};
 agal-aluad ka a mangrugi.',
 
@@ -2136,22 +2150,22 @@ agal-aluad ka a mangrugi.',
 'rollback_short' => 'Isubli',
 'rollbacklink' => 'isubli',
 'rollbackfailed' => 'Napaay ti panangisubli',
-'cantrollback' => 'Saan a maisubli ti pinagurnos;
+'cantrollback' => 'Saan a maisubli ti panagurnos;
 ti naudi a nakaaramid ket iti laeng nagsurat daytoy a panid..',
-'alreadyrolled' => 'Saan a maipasubli ti kinaudi a pinagurnos iti [[:$1]] ni [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
-addaan sabali a naurnos wenno nagipasubli ti panid.
+'alreadyrolled' => 'Saan a maipasubli ti kinaudi a panagurnos iti [[:$1]] ni [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+adda sabali a naurnos wenno nagipasubli ti panid.
 
-Ti kinaudi a nagurnos daytoy a panid ket ni [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
-'editcomment' => "Ti pinagurnos a pakabuklan ket: \"''\$1''\".",
-'revertpage' => 'Insubli ti pinagurnos ni [[Special:Contributions/$2|$2]] ([[User talk:$2|pagtutungtongan]]), naisubli iti kaudian a pinagbaliw ni [[User:$1|$1]]',
-'revertpage-nouser' => 'Insubli ti pinagurnos ni (naikkat ti nagan ti agar-aramat) iti kinaudi a pinagbaliw ni [[User:$1|$1]]',
+Ti kinaudi a panagurnos daytoy a panid ket babaen ni [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Ti panagurnos a pakabuklan ket: \"''\$1''\".",
+'revertpage' => 'Insubli ti panagurnos ni [[Special:Contributions/$2|$2]] ([[User talk:$2|pagtutungtongan]]), naisubli ti kinaudi a panagbaliw ni [[User:$1|$1]]',
+'revertpage-nouser' => 'Naisubli ti panagurnos ni (naikkat ti nagan ti agar-aramat) ti kinaudi a panagbaliw ni [[User:$1|$1]]',
 'rollback-success' => 'Naibabawi dagiti panag-urnos ni $1;
-naisubli manen iti naudi a panagbaliw ni $2.',
+naisubli manen ti naudi a panagbaliw ni $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Napaay ti gimong',
-'sessionfailure' => 'Addaan ti parikut ti gimong ti pinagserrek mo;
-daytoy nga aramid ket naibabawi a kas pagpawilan ti pinaghijack ti gimong.
+'sessionfailure' => 'Adda parikut ti gimong ti panagserrekmo;
+daytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti gimong.
 Agsubli ka ti naggapuam a panid, ikargam ti panid ken padasem manen.',
 
 # Protect
@@ -2173,14 +2187,14 @@ Kitaen ti [[Special:ProtectedPages|listaan kadagiti nasalakniban a panid]] ti li
 'protect_expiry_invalid' => 'Imbalido ti oras a panagpaso.',
 'protect_expiry_old' => 'Napalabasen ti oras ti panagpaso.',
 'protect-unchain-permissions' => 'Lukatan dagiti pagpilian ti salaknib',
-'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti saluad ditoy ti panid a '''$1'''.",
-'protect-locked-blocked' => "Saan mo a mabalin a sukatan dagiti kita ti salaknib no naserraan ka.
+'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti salaknib para iti panid ti '''$1'''.",
+'protect-locked-blocked' => "Saanmo a mabalin a sukatan dagiti kita ti salaknib no naserraan ka.
 Adda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
 'protect-locked-dblock' => "Ti kita ti salaknib ket saan a masukatan gapu ti agdama a kandado ti database.
 Adda ditoy kadagiti agdama a kasasaad ti panid '''$1''':",
 'protect-locked-access' => "Awan ti pammalubos ti pakabilangam a mangsukat kadagiti lessaad ti salaknib ti panid.
 Dagitoy dagiti agdama a kasasaad ti panid a '''$1''':",
-'protect-cascadeon' => 'Daytoy a panid ket nasalakniban iti agdama gapu ta nairaman iti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti sipapakat a salaknib ti amin-amin.
+'protect-cascadeon' => 'Daytoy a panid ket agdama a  nasalakniban gapu ta nairaman kadagiti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} ti sipapakat a salaknib ti amin-amin.
 Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignayen ti salaknib nga amin-amin.',
 'protect-default' => 'Mabalin amin nga agar-aramat',
 'protect-fallback' => 'Masapul ti "$1" a pammalubos',
@@ -2191,10 +2205,10 @@ Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignaye
 'protect-expiring-local' => 'agpaso $1',
 'protect-expiry-indefinite' => "inggana't inggana",
 'protect-cascade' => 'Salakniban dagiti pampanid a nairaman iti daytoy a panid (babaen ti sariap a salaknib)',
-'protect-cantedit' => 'Saanmo a masuktan ti lessaad ti salaknib daytoy a panid, ta awananka iti pammalubos nga agurnos',
+'protect-cantedit' => 'Saanmo a masuktan ti lessaad ti salaknib iti daytoy a panid, gapu ta awan ti pammalubosmo nga agurnos iti daytoy.',
 'protect-othertime' => 'Sabali nga oras:',
 'protect-othertime-op' => 'sabali nga oras',
-'protect-existing-expiry' => 'Daytoy agpaso nga oras: $3, $2',
+'protect-existing-expiry' => 'Ti adda a panagpaso ti oras: $3, $2',
 'protect-otherreason' => 'Sabali/dadduma a rason:',
 'protect-otherreason-op' => 'Sabali a rason',
 'protect-dropdown' => '*Kadawyan a rason ti panagsalaknib
@@ -2217,31 +2231,31 @@ Mabalinmo a sukatan ti lessaad ti salaknib daytoy a panid, ngem saanna a tignaye
 'restriction-upload' => 'Pang-ipan',
 
 # Restriction levels
-'restriction-level-sysop' => 'sibubukel a nasalakniban',
+'restriction-level-sysop' => 'napno a nasalakniban',
 'restriction-level-autoconfirmed' => 'nasalakniban bassit',
 'restriction-level-all' => 'ania man a lessaad',
 
 # Undelete
 'undelete' => 'Kitaen dagiti naikkat a pampanid',
 'undeletepage' => 'Kitaen ken isubli dagiti naikkat a panid',
-'undeletepagetitle' => "'''TI sumaganad ket buklen dagiti naikkat a pinagbaliw ti [[:$1|$1]]'''.",
+'undeletepagetitle' => "'''TI sumaganad ket buklen dagiti naikkat a panagbaliw ti [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Kitaen dagiti naikkat a pampanid',
-'undeletepagetext' => 'Dagiti sumaganad {{PLURAL:a panid ket naikkaten ngem|$1 dagiti panid ket naikkaten ngem}} addaan da pay idiay a nailebbeng ken maipasubli pay.
-Ti lebbeng ket mabalin a mapaminsanan a dalusan.',
+'undeletepagetext' => 'Ti sumaganad a {{PLURAL:$1|panid ket naikkaten ngem|$1 pampanid ket naikkaten ngem}} adda pay naarkibo ken mabalin pay a maipasubli .
+Ti arkibo ket mabalin a sagpaminsan a madalusan.',
 'undelete-fieldset-title' => 'Ipasubli dagiti pinagbaliwan',
-'undeleteextrahelp' => "Ti pinagisubli dagiti amin a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken agtakla ti '''''{{int:undeletebtn}}'''''.
+'undeleteextrahelp' => "Ti panagisubli dagiti amin a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken agtakla ti '''''{{int:undeletebtn}}'''''.
 Ti agaramid ti napilian a pagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken agtakla ti '''''{{int:undeletebtn}}'''''.",
-'undeleterevisions' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} ti nailebben',
+'undeleterevisions' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}} ti nailebben',
 'undeletehistory' => 'No ipasublim daytoy a panid, amin dagiti pinagbaliwan ket maipasubli idiay pakasaritaan.
 Ket no adda baro a panid a kanagnagan na a naaramid ti napalabas a pinagikkat, dagiti naipasubli a pinagbaliwan ket agparang idiay napalabas a pakasaritaan.',
-'undeleterevdel' => 'Ti pinagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti pinagbaliwan ti papeles ket maikkatan ti bassit.
+'undeleterevdel' => 'Ti panagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti pinagbaliwan ti papeles ket maikkatan ti bassit.
 Iti kastoy a kaso, masapul nga ikkatem ti kur-it wenno ikkatem ti lemmeng dagiti kabarbaro a naikkat a pinagbaliwan.',
 'undeletehistorynoadmin' => 'Daytoy a panid ket naikkaten.
-Ti rason ti pinagikkat ket naipakita ti pinakabuklan dita baba, ken dagita detalye ti agar-aramat a nagpabaliw ditoy a panid sakbay a naikkat.
-Ti usto a testo ti nabaliwan a panagbaliw ket adda kadagiti administrador laeng.',
-'undelete-revision' => 'Naikkat ti pinagbaliwan a $1 (sipud $4, iti $5) ni $3:',
-'undeleterevision-missing' => 'Imbalido wenno napukaw a pinagbaliw.
-Addaan ka ngata ti madi a panilpo, wenno ti pinagbaliwan ket naipasubli wenno naikkat manipud idiay nailebbeng.',
+Ti rason ti panagikkat ket naipakita ti pinakabuklan dita baba, ken dagita dsalaysay ti agar-aramat a nagpabaliw ditoy a panid sakbay a naikkat.
+Ti husto a testo ti nabaliwan a panagbaliw ket adda kadagiti administrador laeng.',
+'undelete-revision' => 'Naikkat ti binaliwan a $1 (manipud idi $4, idi $5) babaen ni $3:',
+'undeleterevision-missing' => 'Imbalido wenno napukaw a panagbaliw.
+Addaan ka ngata ti madi a panilpo, wenno ti panagbaliw ket naipasubli wenno naikkat manipud idiay nailebbeng.',
 'undelete-nodiff' => 'Awan ti nasarakan a kallabes a binaliwan.',
 'undeletebtn' => 'Isubli',
 'undeletelink' => 'kitaen/isubli',
@@ -2249,9 +2263,9 @@ Addaan ka ngata ti madi a panilpo, wenno ti pinagbaliwan ket naipasubli wenno na
 'undeletereset' => 'Isubli',
 'undeleteinvert' => 'Baliktaden ti napili',
 'undeletecomment' => 'Rason:',
-'undeletedrevisions' => '{{PLURAL:$1|1 binaliwan|$1 dagiti binaliwan}} ti naisubli',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 binaliwan|$1 dagiti binaliwan}} ken {{PLURAL:$2|1 file|$2 dagiti papeles}} ti naisubli',
-'undeletedfiles' => '{{PLURAL:$1|1 a papeles|$1 a papeles}} ti naisubli',
+'undeletedrevisions' => '{{PLURAL:$1|1 a  binaliwan|dagiti $1 a binaliwan}} ti naisubli',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 a binaliwan|dagiti $1 a binaliwan}} ken {{PLURAL:$2|1 a papeles|dagiti $2 a papeles}} ti naisubli',
+'undeletedfiles' => '{{PLURAL:$1|1 a papeles|dagiti $1 a papeles}} ti naisubli',
 'cannotundelete' => 'Napaay ti panagikkat;
 adda ngata immuna a nagikkat ti panid.',
 'undeletedpage' => "'''Naisublin ti $1'''
@@ -2270,10 +2284,10 @@ Binsiren ti [[Special:Log/delete|listaan ti naik-ikkat]] para iti listaan dagiti
 Baka laeng ket naikkaten.',
 'undelete-error' => 'Ballaag ti panagisubli ti pinagikkat ti panid',
 'undelete-error-short' => 'Biddut ti panakaikkat ti papeles: $1',
-'undelete-error-long' => 'Adda nasarakan a biddut idi pinasubli ti pinagikkat ti papeles:
+'undelete-error-long' => 'Adda nasarakan a biddut idi pinasubli ti panagikkat ti papeles:
 
 $1',
-'undelete-show-file-confirm' => 'Sigurado ka a kayatmo ti mangkita ti naikkat a baliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
+'undelete-show-file-confirm' => 'Sigurado  a kayatmo ti mangkita ti naikkat a nabaliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 ti oras nga $3?',
 'undelete-show-file-submit' => 'Wen',
 
 # Namespace form on various pages
@@ -2281,7 +2295,7 @@ $1',
 'invert' => 'Baliktaden ti napili',
 'tooltip-invert' => 'Ikur-it daytoy a kahon ti panagilemmeng kadagiti sinukatan a panid iti uneg ti napili a nagan ti lugar (ken ti nairaman a nagan ti lugar no naikur-it)',
 'namespace_association' => 'Nairaman a nagan ti lugar',
-'tooltip-namespace_association' => 'Ikur-it daytoy a kahon ti pinagiraman ti kapatangan wenno suheto ti nagan ti lugar a nairaman kadagiti napili a nagan ti lugar.',
+'tooltip-namespace_association' => 'Ikur-it daytoy a kahon ti panagiraman ti kapatangan wenno suheto ti nagan ti lugar a nairaman kadagiti napili a nagan ti lugar.',
 'blanknamespace' => '(Umuna)',
 
 # Contributions
@@ -2301,8 +2315,8 @@ $1',
 'sp-contributions-deleted' => 'dagiti naikkat nga inararamid ti agar-aramat',
 'sp-contributions-uploads' => 'dagiti pang-ipan',
 'sp-contributions-logs' => 'listaan',
-'sp-contributions-talk' => 'makipatang',
-'sp-contributions-userrights' => 'mang-iggem dagiti kaberngan ti agar-aramat',
+'sp-contributions-talk' => 'tungtungan',
+'sp-contributions-userrights' => 'panagtaripatu kadagiti kaberngan ti agar-aramat',
 'sp-contributions-blocked-notice' => 'Naserraan tatta daytoy nga agar-aramat.
 Ti naudi a listaan ti panakaserra ket adda dita baba ta usaren a reperensia:',
 'sp-contributions-blocked-notice-anon' => 'Daytoy nga IP a pagtaengan ket naserraan.
@@ -2319,14 +2333,14 @@ Ti naudi a listaan ti panakaserra ket adda dita baba ta usaren a reperensia:',
 'linkshere' => "Nakasilpo ti sumaganad a pampanid iti '''[[:$1]]''':",
 'nolinkshere' => "Awan ti pampanid a nakasilpo iti '''[[:$1]]'''.",
 'nolinkshere-ns' => "Awan dagiti panid a nakasilpo idiay '''[[:$1]]''' iti napili a nagan ti lugar.",
-'isredirect' => 'ibaw-ing ti panid',
+'isredirect' => 'baw-ing a panid',
 'istemplate' => 'mairaman',
 'isimage' => 'panilpo ti papeles',
 'whatlinkshere-prev' => '{{PLURAL:$1|kallabes|kallabes $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sumaruno|sumaruno $1}}',
 'whatlinkshere-links' => '← silsilpo',
 'whatlinkshere-hideredirs' => '$1 a panangibaw-ing',
-'whatlinkshere-hidetrans' => '$1 dagiti mairaman',
+'whatlinkshere-hidetrans' => '$1 a mairamraman',
 'whatlinkshere-hidelinks' => '$1 a pampanilpo',
 'whatlinkshere-hideimages' => '$1 a pampanilpo ti imahen',
 'whatlinkshere-filters' => 'Dagiti sagat',
@@ -2354,8 +2368,8 @@ Ikkan ti nainaganan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid
 ** Ab-abuso kadagiti sabsabali a pakabilangan
 ** Saan a maawat a nagan ti agar-aramat',
 'ipb-hardblock' => 'Iparit kadagiti nakastrek nga agar-aramat ti agpabaliw iti naggapo ditoy nga IP a pagtaengan',
-'ipbcreateaccount' => 'Serraan ti panagparnuay iti pakabilangan',
-'ipbemailban' => 'Serraan ti agar-aramat nga agipatulod ti e-surat',
+'ipbcreateaccount' => 'Pawilan ti panagpartuat iti pakabilangan',
+'ipbemailban' => 'Pawilan ti agar-aramat nga agipatulod ti e-surat',
 'ipbenableautoblock' => 'Automatiko ti serra ti naudi nga IP a pagtaengan nga inusar daytoy nga agar-aramat, ken dagiti sumaruno nga IP a pagtaengan a padasen da nga agpabaliw',
 'ipbsubmit' => 'Serraan daytoy nga agar-aramat',
 'ipbother' => 'Sabali nga oras:',
@@ -2364,15 +2378,15 @@ Ikkan ti nainaganan a rason dita baba (kas pagarigan, dakamaten ti maysa a panid
 'ipbotherreason' => 'Sabali/nayon a rason:',
 'ipbhidename' => 'Ilemmeng ti nagan ti agar-aramat kadagiti listaan ken inurnos',
 'ipbwatchuser' => 'Bantayan ti panid ti agar-ramat ken panid ti tungtongan daytoy nga agar-aramat',
-'ipb-disableusertalk' => 'No naserran da iparit daytoy nga agar-aramat ti agbaliw kadagiti bukodda a kapatangan a panid',
+'ipb-disableusertalk' => 'Pawilan daytoy nga agar-aramat nga agurnos kadagiti bukodda a tungtungan a panid no naserraan',
 'ipb-change-block' => 'Serraan manen ti agar-aramat kadagitoy a disso',
 'ipb-confirm' => 'Pasingkedan ti serra',
 'badipaddress' => 'Imbalido nga IP a pagtaengan',
 'blockipsuccesssub' => 'Balligi ti panangserra',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ket naserraanen.<br />
 Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti serra.',
-'ipb-blockingself' => 'Mangrugrugi ka nga agserra kenka! Sigurado nga kayatmo nga aramiden daytoy?',
-'ipb-confirmhideuser' => 'Mangrugrugi ka ti mangserra ti agar-aramat nga addaan ti napabalin na nga "ilemmeng ti agar-aramat". Iddeppen na ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Sigurado ka a kasta ti kayatmo?',
+'ipb-blockingself' => 'Mangrugrugika nga agserra kenka! Sigurado nga kayatmo nga aramiden daytoy?',
+'ipb-confirmhideuser' => 'Mangrugrugika ti mangserra ti agar-aramat nga adda ti napabalinna nga "ilemmeng ti agar-aramat". Iddeppenna ti nagan daytoy nga agar-aramat kadagiti amin a listaan ken dagiti naikabkabil ti listaan. Sigurado ka a kasta ti kayatmo?',
 'ipb-edit-dropdown' => 'Urnosen dagiti rason ti panagserra',
 'ipb-unblock-addr' => 'Lukatan ti serra ni $1',
 'ipb-unblock' => 'Lukatan ti serra ti nagan ti agar-aramat wenno IP a pagtaengan',
@@ -2381,32 +2395,32 @@ Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti
 'unblockip' => 'Lukatan ti serra ti agar-aramat',
 'unblockiptext' => 'Usaren ti kinabuklan dita baba ti pinagisubli ti pinagserrek nga agsurat ti napalubos a naserran nga IP a pagtaengan wenno nagan ti agar-aramat.',
 'ipusubmit' => 'Ikkaten daytoy a serra',
-'unblocked' => 'Naikkat ti panagserra ni [[User:$1|$1]]',
+'unblocked' => 'Naikkat ti panakaserra ni [[User:$1|$1]]',
 'unblocked-range' => '$1 naikkaten ti serra na',
 'unblocked-id' => 'Naikkaten ti serra ni $1',
 'blocklist' => 'Dagiti naserraan nga agar-aramat',
 'ipblocklist' => 'Dagiti naserraan nga agar-aramat',
 'ipblocklist-legend' => 'Biruken ti naserraan nga agar-aramat',
 'blocklist-userblocks' => 'Ilemmeng dagiti serra ti pakabilangan',
-'blocklist-tempblocks' => 'Ilemmeng dagiti saan nga agnanayon a serra',
+'blocklist-tempblocks' => 'Ilemmeng dagiti temporario a serra',
 'blocklist-addressblocks' => 'Ilemmeng ti maysa a serra dagiti IP',
-'blocklist-rangeblocks' => 'Ilemming dagiti nasakup a serra',
+'blocklist-rangeblocks' => 'Ilemmeng dagiti nasakup a serra',
 'blocklist-timestamp' => 'Petsa ken oras',
 'blocklist-target' => 'Puntaan',
 'blocklist-expiry' => 'Agpaso',
-'blocklist-by' => 'Ti naserraan nga admin',
+'blocklist-by' => 'Ti nagserra nga admin',
 'blocklist-params' => 'Parametro ti serra',
 'blocklist-reason' => 'Rason',
 'ipblocklist-submit' => 'Biruken',
 'ipblocklist-localblock' => 'Serra a lokal',
-'ipblocklist-otherblocks' => 'Sabali {{PLURAL:$1|serra|dagiti serra}}',
+'ipblocklist-otherblocks' => 'Sabali {{PLURAL:$1|a serra|kadagiti serra}}',
 'infiniteblock' => "inggana't inggana",
 'expiringblock' => 'agpaso no $1 ti oras nga $2',
 'anononlyblock' => 'di am-ammo laeng',
 'noautoblockblock' => 'nabaldado ti auto a serra',
 'createaccountblock' => 'naserraan ti pannakapartuat ti pakabilangan',
 'emailblock' => 'naserraan ti e-surat',
-'blocklist-nousertalk' => 'saan na a mabalin nga urnosen ti kapatang na a panid',
+'blocklist-nousertalk' => 'saanna a mabalin nga urnosen ti bukod a tungtungan a panid',
 'ipblocklist-empty' => 'Awan nagyan ti listaan ti serra.',
 'ipblocklist-no-results' => 'Ti kiniddaw nga IP a pagtaengan wenno nagan ti agar-aramat ket saan a naserraan',
 'blocklink' => 'serraan',
@@ -2417,21 +2431,21 @@ Kitaen ti [[Special:BlockList|listaan ti lapden nga IP ]] tapno marepaso dagiti
 'autoblocker' => 'Na-auto a serra ngamin ket ti IP a pagtaengan ket damdama nga inusar ni "[[User:$1|$1]]".
 Ti rason nga inted ti $1\'s serra ket: "$2"',
 'blocklogpage' => 'Listaan ti naserraan',
-'blocklog-showlog' => 'Daytoy nga agar-aramat ket naserraan idin.
+'blocklog-showlog' => 'Daytoy nga agar-aramat ket dati a naserraan.
 Ti listaan ti serra ket naikabil dita baba tapno mausar a reperensia:',
-'blocklog-showsuppresslog' => 'Daytoy nga agar-aramat ket naserraan ken nailemmeng idin.
+'blocklog-showsuppresslog' => 'Daytoy nga agar-aramat ket dati a naserraan ken nailemmeng.
 Ti listaan ti napasardeng ket naikabil dita baba tapno mausar a reperensia:',
-'blocklogentry' => 'naserraan ni [[$1]] nga addaan ti oras ti panagpaso nga $2 $3',
-'reblock-logentry' => 'sinukatan ti panakaserra ni [[$1]] ti agtapos nga oras nga $2 $3',
-'blocklogtext' => 'Daytoy ket listaan ti agar-aramat kadagiti pinagserra ken panaglukat ti serra
+'blocklogentry' => 'naserraan ni [[$1]] nga adda ti oras a panagpaso iti $2 $3',
+'reblock-logentry' => 'sinukatan ti panakaserra para kenni [[$1]] nga adda ti oras a panagpaso iti  $2 $3',
+'blocklogtext' => 'Daytoy ket listaan ti agar-aramat kadagiti panagserra ken panaglukat ti serra
 Dagiti na-atomatiko a panakaserra ti IP a pagtaengan ket saan a nailista.
 Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagiti agdama a naiparit a pagpataray ken dagiti serra.',
 'unblocklogentry' => 'lukatan ti serra ni $1',
 'block-log-flags-anononly' => 'dagiti di am-ammo nga agar-aramat laeng',
-'block-log-flags-nocreate' => 'naisardeng ti pinagaramid iti pakabilangan',
+'block-log-flags-nocreate' => 'nabaldado ti panagpartuat ti pakabilangan',
 'block-log-flags-noautoblock' => 'naiddep ti auto-serra',
 'block-log-flags-noemail' => 'naserraan ti e-surat',
-'block-log-flags-nousertalk' => 'saan na a mabalin nga urnosen ti tungtunganna a panid',
+'block-log-flags-nousertalk' => 'saanna a mabalin nga urnosen ti bukod a tungtungan a panid',
 'block-log-flags-angry-autoblock' => 'napabalin ti napasayaat nga auto-serra',
 'block-log-flags-hiddenname' => 'nailemmeng ti nagan ti agar-aramat',
 'range_block_disabled' => 'Ti abilidad ti administrador nga agaramid ti naabutan a serra ket naiddep.',
@@ -2440,7 +2454,7 @@ Kitaen ti [[Special:BlockList|Listaan ti lapden nga IP]] para iti listaan kadagi
 'ipb_hide_invalid' => 'Saan a mapasardeng daytoy a pakabilangan; adda ngata adu unay nga inurnos na.',
 'ipb_already_blocked' => ' "$1" ket naserraan',
 'ipb-needreblock' => '$1 ket naseraan. Kayatmo a sukatan ti serra na?',
-'ipb-otherblocks-header' => 'Sabali {{PLURAL:$1|naserraan|dagiti naserraan}}',
+'ipb-otherblocks-header' => 'Sabali {{PLURAL:$1|a naserraan|kadagiti naserraan}}',
 'unblock-hideuser' => 'Saanmo a maisubli ti serra daytoy nga agar-aramat, nailemmengen ti nagan daytoy nga agar-aramat.',
 'ipb_cant_unblock' => 'Biddut: ID $1 ti serra a nabirukan. Baka nalukatan ti serranan.',
 'ipb_blocked_as_range' => 'Ballag: Ti IP a pagtaengan $1 ket saan a dagus a naserraan ken saan a malukatan ti serra na.
@@ -2449,14 +2463,14 @@ Ngem, naserran a kas paset ti naabutan $2, a mabalin a malukatan ti serra na.',
 'ip_range_toolarge' => 'Dagiti serra a nasakup a dakdakkel ngem /$1 ket saan a maipalubos.',
 'blockme' => 'Serraannak',
 'proxyblocker' => 'Proxy a panagserra',
-'proxyblocker-disabled' => 'Daytoy a pinagaramid ket nabaldado.',
+'proxyblocker-disabled' => 'Daytoy a panagaramid ket nabaldado.',
 'proxyblockreason' => 'Ti IP a pagtaengam ket naserraan ngamin ket daytoy ket nakalukat a proxy.
 Pangngaasi ta kontakem ti agit-ited ti serbisio ti Internet mo wenno teknikal a tapayaen ti kaurnusam ken ibagam kaniada ti nakaro a talinaay a parikut.',
 'proxyblocksuccess' => 'Nalpasen.',
 'sorbsreason' => 'Ti IP a pagtaengam ket nakalista a kasla "nalukatan a proxy" idiay DNSBL nga inusar ti {{SITNAME}}.',
 'sorbs_create_account_reason' => 'Ti IP a pagtaengam ket nakalista a kasla "nalukatan proxy" idiay DNSBL nga inusar ti {{SITNAME}}.
-Saan ka a makaaramid ti pakabilangan',
-'cant-block-while-blocked' => 'Saan mo a maserraan dagiti sabali nga agar-aramat no naserraan ka met.',
+Saanka a makaaramid ti pakabilangan',
+'cant-block-while-blocked' => 'Saanmo a maserraan dagiti sabali nga agar-aramat no naserraan ka met.',
 'cant-see-hidden-user' => 'Ti agar-aramat a kayatmo a serraan ket naserraan ken nailemmeng.
 Ket awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno mabaliwan ti serra ti agar-aramat.',
 'ipbblocked' => 'Saan mo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraan ka met.',
@@ -2467,7 +2481,7 @@ Ket awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno
 'unlockdb' => 'Lukatan ti database',
 'lockdbtext' => 'Ti panagserra ti database ket makaikkat ti abilidad kadagiti amin nga agar-aramat ti agurnos kadagiti panid, ti panagsukat dagiti kaykayat da, ti panagurnos dagiti bambantayan da, ken dagiti sabsabali pay a masapul ti panagsukat idiay database.
 Pangngaasi ta pasingkedam daytoy a kayatmo nga aramiden, ken luktam dayta database no malpas kan nga agsimpa.',
-'unlockdbtext' => 'Ti pinaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti pinagurnos kadagiti panid, ti pinagsukat dagiti kaykayat da, ti pinagurnos dagiti bambantaya da, ken dagiti amin a makasapul ti pinagsukat idiay database.
+'unlockdbtext' => 'Ti panaglukat ti database ket mangipasubli ti abilidad dagiti amin nga agar-aramat ti panagurnos kadagiti panid, ti panagsukat dagiti kaykayat da, ti panagurnos dagiti bambantayanda, ken dagiti amin a makasapul ti panagsukat idiay database.
 Pangngaasi ta pasingkedam a daytoy ti kayatmo nga aramiden.',
 'lockconfirm' => 'Wen, talaga a kayatko a balunetan ti database.',
 'unlockconfirm' => 'Wen, talaga a kayatko a balunetan ti database.',
@@ -2510,39 +2524,39 @@ Kayat a sawen daytoy a mabalinmo a suktan ti nagan ti maysa a panid manipud iti
 '''Ballaag!'''
 Mabalin a maysa daytoy a nakaro ken saan a bigla a panagbaliw iti maysa a nasikat a panid;
 pangngaasim ta pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a mangbaliw.",
-'movepagetalktext' => "Ti mainaig a panid-tungtongan ket giddato a maiyalis a karamanna '''malaksid:'''
-*No addan sigud nga adda linaonna a panid-tungtongan iti babaen ti baro a nagan, wenno
+'movepagetalktext' => "Ti mainaig a tungtungan ti panid ket giddato a maiyalis a karamanna '''malaksid:'''
+*No addan sigud nga awan linaonna a tungtungan ti panid babaen ti baro a nagan, wenno
 *No ikkatem ti kur-itna ti kahon iti baba.
 
-Kadagitoy a kaso, masapul nga iyalisr wenno itiponmo a manual ti panid no kayatmo.",
+Kadagitoy a kaso, masapul nga iyalis wenno itiponmo a manual ti panid no kayatmo.",
 'movearticle' => 'Iyalis ti panid:',
 'moveuserpage-warning' => "'''Ballaag:''' Mangrugrugi ka nga agiyalis ti panid ti agar-aramat. Pangngaasi a laglapipen a ti panid ket isu laeng ti mabalin nga iyalis ken ti agar-aramat ket ''saan'' a managanan.",
 'movenologin' => 'Saan a nakastrek',
 'movenologintext' => 'Masapul a nakarehistroka nga agar-aramat ken [[Special:UserLogin|nakastrek]] tapno makaiyalis iti panid.',
-'movenotallowed' => 'Awanka iti pammalubos mo nga agiyalis iti pampanid.',
-'movenotallowedfile' => 'Awanka iti pammalubos mo nga agiyalis iti papeles.',
+'movenotallowed' => 'Awan ti pammalubosmo nga agiyalis kadagiti panid.',
+'movenotallowedfile' => 'Awan ti pammalubosmo nga agiyalis kadagiti papeles.',
 'cant-move-user-page' => 'Awan ti pammalubos mo nga agiyalis kadagiti panid ti agar-aramat (mabalin dagiti apo ti panid).',
 'cant-move-to-user-page' => 'Awan ti pammalubos mo nga agiyalis ti panid idiay panid ti agar-aramat (mabalin dagiti apo ti panid ti agar-aramat).',
 'newtitle' => 'Iti baro a titulo:',
 'move-watch' => 'Bantayan daytoy a panid',
 'movepagebtn' => 'Iyalis ti panid',
-'pagemovedsub' => 'Balligi ti pinangiyalis',
+'pagemovedsub' => 'Balligi ti panangiyalis',
 'movepage-moved' => 'Naiyalis ti \'\'\'"$1" iti "$2"\'\'\'',
-'movepage-moved-redirect' => 'Adda met baw-ing a naramiden.',
-'movepage-moved-noredirect' => 'Ti pinagaramid ti baw-ing ket napasardeng.',
-'articleexists' => 'Addan panid nga addaan iti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
-Pangngaasim ta mangpilika iti sabali a nagan.',
-'cantmove-titleprotected' => 'Saan mo a maiyalis ti panid ditoy nga lugar, ngamin ket ti baro a titulo ket nasalaknibanti pinnakaaramid na.',
+'movepage-moved-redirect' => 'Napartuaten ti maysa a baw-ing.',
+'movepage-moved-noredirect' => 'Ti panagaramid ti baw-ing ket napasardeng.',
+'articleexists' => 'Adda panid nga adda ti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
+Pangngaasim a mangpilika iti sabali a nagan.',
+'cantmove-titleprotected' => 'Saanmo a maiyalis ti panid iti daytoy a lokasion, ngamin ket ti baro a titulo ket nasalakniban para iti panakapartuat.',
 'talkexists' => "'''Sibaballigi a naiyalis ti panid, nupay kasta saan a maiyalis ti panid ti tungtongan gapu ta addan panid-tungtongan iti baro a titulo.
 Pangngaasim ta i-manualmo lattan a pagtiponem ida.'''",
 'movedto' => 'naiyalis iti',
 'movetalk' => 'Iyalis ti mainaig a panid ti tungtongan',
-'move-subpages' => 'Iyalis dagiti apo ti panid (pangato nga $1)',
-'move-talk-subpages' => 'Iyalis dagiti apo ti panid nga kapatangan a panid (pangato nga $1)',
-'movepage-page-exists' => 'Ti panid a $1 ket addaan ken saan a mautomatiko a suratan manen.',
+'move-subpages' => 'Iyalis dagiti apo ti panid (aginggana ti $1)',
+'move-talk-subpages' => 'Iyalis dagiti apo ti panid iti tungtungan ti panid (aginggana ti $1)',
+'movepage-page-exists' => 'Ti panid ti $1 ket addan ken saan a mautomatiko a suratan manen.',
 'movepage-page-moved' => 'Naiyalis ti panid a $1 iti $2.',
 'movepage-page-unmoved' => 'Saan a maiyalis ti panid $1 iti $2.',
-'movepage-max-pages' => 'Ti kangato ti $1 {{PLURAL:$1|panid|dagiti panid}} ket naiyalis ken awan ti automatiko a maiyalis.',
+'movepage-max-pages' => 'Ti kaadu iti $1 a {{PLURAL:$1|panid|pampanid}} ket naiyalis ken awanen ti automatiko a maiyalis.',
 'movelogpage' => 'Listaan ti naiyalis',
 'movelogpagetext' => 'Adda dita baba ti listaan dagiti naiyalis a pampanid.',
 'movesubpage' => '{{PLURAL:$1|Apo ti panid|Dagiti apo ti panid}}',
@@ -2557,12 +2571,12 @@ Kayatmo nga ikkaten  tapno makaiyalis ka?',
 'delete_and_move_confirm' => 'Wen, ikkatenen ti panid',
 'delete_and_move_reason' => 'Naikkat tapno mawayaan ti panaka-iyalis idiay "[[$1]]"',
 'selfmove' => 'Ti titulo ti taudan ken ti pangipanan ket agpadpada;
-saan mo a maiyalis ti panid ti isu met laeng a panid.',
+saanmo a maiyalis ti panid ti isu met laeng a panid.',
 'immobile-source-namespace' => 'Saan a maiyalis dagiti panid idiay nagan ti lugar  "$1"',
 'immobile-target-namespace' => 'Saan a maiyalis dagiti panid idiay nagan ti lugar "$1"',
 'immobile-target-namespace-iw' => 'Ti panilpo nga interwiki ket saan na mabalin nga iyalis.',
 'immobile-source-page' => 'Saan a mabalin nga iyalis daytoy a panid.',
-'immobile-target-page' => 'Saan a maiyalis dita a papanan na a titulo.',
+'immobile-target-page' => 'Saan a maiyalis dita a papananna a titulo.',
 'imagenocrossnamespace' => 'Saan a maiyalis ti papeles idiay saan a papeles a nagan ti lugar',
 'nonfile-cannot-move-to-file' => 'Saan a maiyalis ti saan a papeles idiay papeles a nagan a lugar',
 'imagetypemismatch' => 'Ti baro a pagpaatiddog ti papeles ket saan nga agpada ti kita na',
@@ -2570,29 +2584,29 @@ saan mo a maiyalis ti panid ti isu met laeng a panid.',
 'fix-double-redirects' => 'Agpabaro ti amin a baw-ing nga agtudtudo ti kasigud a titulo',
 'move-leave-redirect' => 'Mangibati ka ti baw-ing',
 'protectedpagemovewarning' => "'''Ballaag:''' Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan ti gundaway nga administrador ti  makaiyalis.
-Ti nakaudi a naikabil a listaan ket adda iti baba tapno pag reperensia:",
-'semiprotectedpagemovewarning' => "''Pakaammo:''' Nasaluadan daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis itoy.
-Ti nakaudi a naikabil a listaan ket adda iti baba tapno mausar a reperensia:",
+Ti kinaudi a naikabil ti listaan ket adda dita baba tapno mausar a reperensia:",
+'semiprotectedpagemovewarning' => "'''Pakaammo:''' Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaiyalis daytoy.
+Ti kinaudi a naikabil ti listaan ket adda iti baba tapno mausar a reperensia:",
 'move-over-sharedrepo' => '== Addaan ti papeles ==
-[[:$1]] addaan idiay pagbingayan a nagikabilan. Ti pinagiyalis ti papeles iti titulo nga itoy ket paawanen na ti pagbingayan a papeles.',
+[[:$1]] addaan idiay pagbingayan a nagikabilan. Ti panagiyalis ti papeles iti titulo nga itoy ket paawanen na ti pagbingayan a papeles.',
 'file-exists-sharedrepo' => 'Ti napilim a nagan ti papeles ket naususaren idiay pagbingayan a nagikabilan.
 Pangngaasi ta agpili ka ti sabali a nagan.',
 
 # Export
 'export' => 'Agipan dagiti panid',
-'exporttext' => 'Maipan mo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.
+'exporttext' => 'Maipanmo ti testo ken pakasaritaan ti inurnos iti maysa a panid wenno pampanid a nabalkut ti XML.
 Daytoy ket mabalin a maikabil iti sabali a wiki nga agususar ti MediaWiki nga usaren ti [[Special:Import|pinagala ti panid]].
 
 Ti pinagipan ti panid, ikabil ti titulo dita kahon ti teksto dita baba, maysa a titulo iti maysa a linia, ken agpili ka no ti kayatmo ket ti agdama a pinagbaliw ken amin nga daan a pinagbalbaliw, nga addaan ti linia ti pakasaritaan ti pampanid, wenno ti agdama a pinagbaliw nga addaan ti pakaammo a maipapan ti kinaudi a pinagurnos.
 
-No iti kinaudi a kaso mabalin mo nga usaren ti panilpo, a kaspagarigan [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para iti panid "[[{{MediaWiki:Mainpage}}]]".',
+No iti kinaudi a kaso mabalinmo nga usaren ti panilpo, a kas pagarigan [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para iti panid "[[{{MediaWiki:Mainpage}}]]".',
 'exportall' => 'Ipan amin a pampanid',
-'exportcuronly' => 'Iraman laeng ti agdadama pinagbaliwan, saan a ti amin a pakasaritaan',
+'exportcuronly' => 'Iraman laeng ti kinaudi a panagbaliw, saan a ti napno a pakasaritaan',
 'exportnohistory' => "----
 '''Palagip:''' Ti pagipapan dagiti punno a pakasaritaan dagiti panid iti daytoy a kinabuklan ket nabaldado gapu dagiti pinakalaing ti pinagandar a rason.",
 'exportlistauthors' => 'Iraman ti amin a listaan kadagiti nagaramid iti tunggal a maysa a panid',
 'export-submit' => 'Agipan',
-'export-addcattext' => 'Nayunan dagiti panid a naggapu idiay kategoria:',
+'export-addcattext' => 'Agnayon kadagiti panid a naggapu idiay kategoria:',
 'export-addcat' => 'Inayon',
 'export-addnstext' => 'Nayunan dagiti panid a naggapu idiay nagan ti lugar:',
 'export-addns' => 'Inayon',
@@ -2603,10 +2617,10 @@ No iti kinaudi a kaso mabalin mo nga usaren ti panilpo, a kaspagarigan [[{{#Spec
 # Namespace 8 related
 'allmessages' => 'Dagiti mensahe ti sistema',
 'allmessagesname' => 'Nagan',
-'allmessagesdefault' => 'Naisigud a testo ti mensahe',
+'allmessagesdefault' => 'Kasisigud a testo ti mensahe',
 'allmessagescurrent' => 'Agdama a testo ti mensahe',
-'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema nga addaan idiay MediaWiki nagan ti lugar.
-Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [//translatewiki.net translatewiki.net] no kayatmo ti mangted kadagiti pinagpatarus ti MediaWiki.',
+'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema a magun-od idiay MediaWiki a nagan ti lugar.
+Pangngaasi a bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [//translatewiki.net translatewiki.net] no kayatmo ti agparawad kadagiti sapasap a panagipatarus ti MediaWiki.',
 'allmessagesnotsupportedDB' => "Saan a mausar daytoy a panid ngamin ket ti '''\$wgUseDatabaseMessages''' ket nabaldado.",
 'allmessages-filter-legend' => 'Sagat',
 'allmessages-filter' => 'Sagaten ti naiduma a estado:',
@@ -2620,7 +2634,7 @@ Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Loca
 # Thumbnails
 'thumbnail-more' => 'Padakkelen',
 'filemissing' => 'Mapukpukaw ti papeles',
-'thumbnail_error' => 'Biddut ti panagaramid iti bassit nga imahen: $1',
+'thumbnail_error' => 'Biddut ti panagaramid ti bassit nga imahen: $1',
 'djvu_page_error' => 'Ti DjVu a panid ket saan a nasakup',
 'djvu_no_xml' => 'Saan a naala ti XML iti DjVu a papeles',
 'thumbnail-temp-create' => 'Saan a makaaramid ti temporario a bassit a papeles',
@@ -2635,7 +2649,7 @@ Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Loca
 'import' => 'Agala dagiti panid',
 'importinterwiki' => 'Agala ti transwiki',
 'import-interwiki-text' => 'Agpili ka ti wiki ken titulo ti panid nga alaem.
-Ti pinagbaliwan dagiti petsa ken dagiti nagan ti mannurat ket maibati a kinasigud.
+Dagit panagbaliw a petsa ken dagiti nagan ti mannurat ket maipreserba.
 Amin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pinagala]].',
 'import-interwiki-source' => 'Taudan ti wiki/panid:',
 'import-interwiki-history' => 'Kopiaen amin dagiti bersion ti pakasaritaan daytoy a panid',
@@ -2644,11 +2658,11 @@ Amin a transwiki nga alaem ket mailista idiay [[Special:Log/import|listaan ti pi
 'import-interwiki-namespace' => 'Pangipanan ti nagan ti lugar:',
 'import-upload-filename' => 'Nagan ti papeles:',
 'import-comment' => 'Komentario:',
-'importtext' => 'Pangngaasi ta ipanmo ti papeles a naggapu iti nagtaudan a wiki nga agusar ti [[Special:Export|agipan]].',
+'importtext' => 'Pangngaasi nga ipanmo ti papeles a naggapu iti nagtaudan a wiki nga agusar ti [[Special:Export|agipan]].',
 'importstart' => 'Agal-ala dagiti panid...',
-'import-revision-count' => '$1 {{PLURAL:$1|a pinagbaliwan|dagiti pinagbaliwan}}',
+'import-revision-count' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}',
 'importnopages' => 'Awan dagiti panid ti maala.',
-'imported-log-entries' => 'Naala $1 {{PLURAL:$1|nailista|dagiti nailista}}.',
+'imported-log-entries' => 'Naala ti $1 {{PLURAL:$1|a nailista|kadagiti nailista}}.',
 'importfailed' => 'Napaay ti panagala: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Di amammo a kita ti taudan ti innala',
 'importcantopen' => 'Saan a maluktan ti innala a papeles',
@@ -2666,23 +2680,23 @@ Paset laeng ti papeles ti napag-ipan.',
 Awan ti saan nga agnayon a polder.',
 'import-parse-failure' => 'Napaay ti pinagala ti XML parse',
 'import-noarticle' => 'Awan ti panid a maaala!',
-'import-nonewrevisions' => 'Amin a pinagbaliwan ket naala da idi.',
+'import-nonewrevisions' => 'Amin a panagbalbaliw ket dati a naala.',
 'xml-error-string' => '$1 iti linia $2, tukol $3 (byte $4): $5',
 'import-upload' => 'Ipan ti XML data',
 'import-token-mismatch' => 'Napukaw ti gimong ti data.
 Pangngaasi ta padasem manen.',
 'import-invalid-interwiki' => 'Saan a makaala dita naited a wiki.',
-'import-error-edit' => 'Ti panid a "$1" ket saan a naala ngamin ket saan mo a mabalin nga urnosen.',
-'import-error-create' => 'Ti panid a "$1" ket saan a naala ngamin ket saan mo a mabalin nga aramiden.',
-'import-error-interwiki' => 'Ti panid "$1" ket saan a naala ngamin ket ti nagan ket nailasin para iti ruar a panagsilpo (interwiki).',
-'import-error-special' => 'Ti panid "$1" ket saan a naala ngamin ket bukod ti  espesial a nagan a lugar a saan nga agpalubos ti pampanid.',
-'import-error-invalid' => 'Ti panid "$1" ket saan a naala ngamin ket ti nagan ket imbalido.',
+'import-error-edit' => 'Ti panid ti "$1" ket saan a naala ngamin ket saan mo a mabalin nga urnosen.',
+'import-error-create' => 'Ti panid ti "$1" ket saan a naala ngamin ket saan mo a mabalin nga aramiden.',
+'import-error-interwiki' => 'Ti panid ti "$1" ket saan a naala ngamin ket ti nagan ket nailasin para iti ruar a panagsilpo (interwiki).',
+'import-error-special' => 'Ti panid ti "$1" ket saan a naala ngamin ket bukod ti  espesial a nagan a lugar a saan nga agpalubos ti pampanid.',
+'import-error-invalid' => 'Ti panid ti "$1" ket saan a naala ngamin ket ti nagan ket imbalido.',
 
 # Import log
 'importlogpage' => 'Alaen ti listaan',
-'importlogpagetext' => 'Ti taripatuen a pinagala dagiti panid nga addaan ti pakasaritaan na nga urnosen kadagiti sabsabali a wiki.',
+'importlogpagetext' => 'Ti administratibo a panagala dagiti panid nga adda ti pakasaritaanna nga urnos kadagiti sabsabali a wiki.',
 'import-logentry-upload' => 'innala ti [[$1]] iti papeles a pinag-ipan',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|a pinagbaliwan|kadagiti pinagbaliwan}}',
 'import-logentry-interwiki' => 'nai-transwiki ti $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} manipud iti $2',
 
@@ -2694,7 +2708,7 @@ Pangngaasi ta padasem manen.',
 'javascripttest-pagetext-unknownframework' => 'Di amamo a pagsubsubokan a tabas "$1".',
 'javascripttest-pagetext-frameworks' => 'Pangngaasi nga agpili ti maysa kadagiti sumaganad a pagsubokan a tabas: $1',
 'javascripttest-pagetext-skins' => 'Agpili ti kudil a pangipatarayan ti pagsubokan:',
-'javascripttest-qunit-intro' => 'Kitaen [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.',
+'javascripttest-qunit-intro' => 'Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.',
 'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
@@ -2705,11 +2719,11 @@ Pangngaasi ta padasem manen.',
 'tooltip-pt-preferences' => 'Dagiti kaykayatmo',
 'tooltip-pt-watchlist' => 'Listaan dagiti panid a sipsiputem ti panagsuksutda',
 'tooltip-pt-mycontris' => 'Listaan dagiti naaramidmo',
-'tooltip-pt-login' => 'Maisingasing ti inka koma panag-serrek; nupay kasta ket saan a maipapilit',
-'tooltip-pt-anonlogin' => 'Maisingasing ti inka koma panag-serrek; nupay kasta ket saan a maipapilit',
+'tooltip-pt-login' => 'Maisingasing ti inka panag-serrek; nupay kasta, daytoy ket saan a maipapilit',
+'tooltip-pt-anonlogin' => 'Maisingasing ti inka panag-serrek; nupay kasta, daytoy ket saan a maipapilit',
 'tooltip-pt-logout' => 'Rummuar',
-'tooltip-ca-talk' => 'Pagtutungtongan maipapan iti linaon ti panid',
-'tooltip-ca-edit' => 'Mabalinmo a balbaliwan daytoy a panid. Pangngaasim ta aramaten ti buton ti ipadas sakbay nga idulinmo ti panid.',
+'tooltip-ca-talk' => 'Pagtutungtongan a maipapan ti linaon ti panid',
+'tooltip-ca-edit' => 'Mabalinmo nga urnosen daytoy a panid. Pangngaasi nga aramatem ti buton ti panagipadas sakbay nga agidulin',
 'tooltip-ca-addsection' => 'Mangirugi ti baro a paset',
 'tooltip-ca-viewsource' => 'Nasalakniban daytoy a panid.
 Mabalinmo a kitaen ti taudanna.',
@@ -2722,24 +2736,24 @@ Mabalinmo a kitaen ti taudanna.',
 'tooltip-ca-watch' => 'Inayon daytoy a panid kadagiti bambantayam',
 'tooltip-ca-unwatch' => 'Ikkatem daytoy a panid kadagiti bambantayam',
 'tooltip-search' => 'Biruken idiay {{SITENAME}}',
-'tooltip-search-go' => 'Inka idiay panid no adda kapada na a nagan',
+'tooltip-search-go' => 'Inka idiay panid nga adda kastoy a naganna no adda',
 'tooltip-search-fulltext' => 'Birukem dagiti panid daytoy a testo',
 'tooltip-p-logo' => 'Sarungkaran ti umuna a panid',
 'tooltip-n-mainpage' => 'Sarungkaran ti umuna a panid',
 'tooltip-n-mainpage-description' => 'Sarungkaran ti umuna a panid',
-'tooltip-n-portal' => 'Maipapan iti gandat no ania ti maaramidam, no sadino ti pakasarak kadagiti bambanag',
+'tooltip-n-portal' => 'Maipapan ti gandat, ti aniaman a maaramidam, no sadino ti pagbirukam kadagiti banbanag',
 'tooltip-n-currentevents' => 'Agsapul iti lugar ti likud a pakaammo kadagiti agdama a paspasamak',
 'tooltip-n-recentchanges' => 'Listaan dagiti naudi a sinukatan iti wiki.',
 'tooltip-n-randompage' => 'Mangiparuar iti pugto a panid',
 'tooltip-n-help' => 'Ti lugar a pakasapulan.',
 'tooltip-t-whatlinkshere' => 'Listaan ti am-amin a pampanid ti wiki a nakasilpo ditoy',
 'tooltip-t-recentchangeslinked' => 'Kinaudian a sinukatan  dagiti panid a nakasilpo ditoy a panid',
-'tooltip-feed-rss' => 'RSS na pakan para iti daytoy a panid',
+'tooltip-feed-rss' => 'RSS a pakan para iti daytoy a panid',
 'tooltip-feed-atom' => 'Atom a pakan para itoy a panid',
 'tooltip-t-contributions' => 'Kitaen ti listaan dagiti naaramidan daytoy nga agar-aramat',
-'tooltip-t-emailuser' => 'Patulodan iti e-surat daytoy nga agar-aramat',
+'tooltip-t-emailuser' => 'Patulodan ti e-surat daytoy nga agar-aramat',
 'tooltip-t-upload' => 'Agipan iti papeles',
-'tooltip-t-specialpages' => 'Listaan ti am-amin nga espesial a pampanid',
+'tooltip-t-specialpages' => 'Listaan ti amin nga espesial a pampanid',
 'tooltip-t-print' => 'Maimaldit a bersion ti panid',
 'tooltip-t-permalink' => 'Permanente a silpo idiay binaliwan daytoy a panid',
 'tooltip-ca-nstab-main' => 'Kitaen ti naglaon a panid',
@@ -2754,13 +2768,13 @@ Mabalinmo a kitaen ti taudanna.',
 'tooltip-ca-nstab-category' => 'Kitaen ti panid ti kategoria',
 'tooltip-minoredit' => 'Markaan daytoy a kas bassit a panag-urnos',
 'tooltip-save' => 'Idulin dagiti sinukatam',
-'tooltip-preview' => 'Ipadas dagiti sinukatam, pangngaasim ta usarem daytoy sakbay nga idulinmo ti panid!',
+'tooltip-preview' => 'Ipadas dagiti sinukatam, pangngaasimnga usarem daytoy sakbay nga idulinmo ti panid!',
 'tooltip-diff' => 'Ipakita no ania dagiti sinukatan nga inaramidmo iti testo',
 'tooltip-compareselectedversions' => 'Kitaen ti naggidiatan dagiti dua a napili a bersion daytoy a panid.',
-'tooltip-watch' => 'Inayon daytoy a panid iti listaan dagiti bambantayam',
+'tooltip-watch' => 'Inayon daytoy a panid idiay listaan dagiti bambantayam',
 'tooltip-watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
 'tooltip-watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
-'tooltip-recreate' => 'Aramidem ti panid uray no naikkat idin.',
+'tooltip-recreate' => 'Aramidem manen ti panid urayno dati a naikkat.',
 'tooltip-upload' => 'Rugian ti agip-ipan',
 'tooltip-rollback' => '"Baliktaden"   isubli ti inurnos (dagiti inurnos) ti daytoy a panid ti kinaudi a nangaramid iti maysa a takla',
 'tooltip-undo' => '"Ibabawi" ipasubli daytoy nga urnos ken lukatanna ti kinabuklan ti urnos iti panagpadas. Agpabalin daytoy a mangikabil ti rason idiay pinakabuklan.',
@@ -2771,25 +2785,26 @@ Mabalinmo a kitaen ti taudanna.',
 'notacceptable' => 'Ti server ti wiki ket saan a makaited ti data iti kinabuklan a saan a mabasa ti kliente.',
 
 # Attribution
-'anonymous' => 'Di am-ammo nga {{PLURAL:$1|agar-aramat|dagit agar-aramat}} iti {{SITENAME}}',
+'anonymous' => 'Di am-ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}',
 'siteuser' => '{{SITENAME}} nga agar-aramat $1',
 'anonuser' => '{{SITENAME}} di amammo nga agar-aramat $1',
 'lastmodifiedatby' => 'Daytoy a panid ket naudi a binalbaliwan idi $2, $1 ni $3.',
 'othercontribs' => 'Naibasar iti obra ni $1.',
 'others' => 'dadduma pay',
-'siteusers' => '!{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1',
-'anonusers' => '{{SITENAME}} di am-ammo {{PLURAL:$2|agar-aramat|digiti agar-aramat}} $1',
+'siteusers' => '{{SITENAME}}  {{PLURAL:$2|agar-aramat|dagiti agar-aramat}}  $1',
+'anonusers' => '{{SITENAME}} di am-ammo {{PLURAL:$2|nga agar-aramat|a digiti agar-aramat}} $1',
 'creditspage' => 'Dagiti pagdaydayaw ti panid',
 'nocredits' => 'Awan dagiti pakaammo ti pammadayaw nga adda ditoy a panid.',
 
 # Spam protection
 'spamprotectiontitle' => 'Panagsalaknib a sagat  para ti spam',
-'spamprotectiontext' => 'Ti teksto a kayat mo nga idulin ket sinerraan ti sagat ti spam.
-Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
+'spamprotectiontext' => 'Ti testo a kayatmo nga idulin ket sinerraan ti sagat ti spam.
+Daytoy ket mabalin a gapuanan babaen ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'spamprotectionmatch' => 'Ti sumaganad a testo ti nangirugi ti sagat ti spam: $1',
 'spambot_username' => 'Panagdalus iti MediaWiki spam',
-'spam_reverting' => 'Ipasubli ti kinaudi a pinagbaliwan nga awan dagiti nagyanna a panilpo idiay $1',
-'spam_blanking' => 'Dagiti amin nga pinagbaliw ket adda panilpo na idiay $1, ipina-blanko',
+'spam_reverting' => 'Ipasubli ti kinaudi a panagbaliw nga awan dagiti linaon a panilpo idiay $1',
+'spam_blanking' => 'Dagiti amin a panagbaliw ket aglaon kadagiti panilpo idiay $1, iblanko',
+'spam_deleting' => 'Dagiti amin a panagbaliw ket naglaon kadagiti panilpo idiay $1, ik-ikkaten',
 
 # Info page
 'pageinfo-title' => 'Pakaammo para iti "$1"',
@@ -2797,7 +2812,7 @@ Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'pageinfo-header-watchlist' => 'Listaan ti bambantayan',
 'pageinfo-header-views' => 'Dagiti pangkitaan',
 'pageinfo-subjectpage' => 'Panid',
-'pageinfo-talkpage' => 'Pakipatangan a panid',
+'pageinfo-talkpage' => 'Tungtungan a panid',
 'pageinfo-watchers' => 'Bilang dagiti agbuybuya',
 'pageinfo-edits' => 'Bilang dagiti inurnos:',
 'pageinfo-authors' => 'Ti bilang dagiti sabsabali a mannurat',
@@ -2808,16 +2823,16 @@ Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a pagsaadan.',
 'markaspatrolleddiff' => 'Markaan a kas napatruliaan',
 'markaspatrolledtext' => 'Markaan daytoy a panid a kas napatruliaan',
 'markedaspatrolled' => 'Markaan a kas napatruliaan',
-'markedaspatrolledtext' => 'Ti napili a pinagbaliw iti [[:$1]] ket namarkaan a kas napatrulian.',
-'rcpatroldisabled' => 'Nabaldado ti pinagpatrulia kadagiti kinaudian a pinagbaliw',
+'markedaspatrolledtext' => 'Ti napili a panagbaliw iti [[:$1]] ket namarkaan a kas napatrulian.',
+'rcpatroldisabled' => 'Nabaldado ti panagpatrulia kadagiti kinaudian a pinagbaliw',
 'rcpatroldisabledtext' => 'Dagiti langa a patrulia ti kinaudi a pinagbaliwan ket agdama a nabaldado',
 'markedaspatrollederror' => 'Madi a mamarkaan a kas napatruliaan',
-'markedaspatrollederrortext' => 'Masapul nga ibagam ti markaan a kas napatruliaan a pinagbaliwan.',
-'markedaspatrollederror-noautopatrol' => 'Saan mo a mabalin a markaan dagita sinukatam a kas napatruliaan.',
+'markedaspatrollederrortext' => 'Nasken a naganam ti maysa a rebision tapno mamarkaan a kas napatruliaan.',
+'markedaspatrollederror-noautopatrol' => 'Saanmo a mabalin a markaan dagita sinukatam a kas napatruliaan.',
 
 # Patrol log
 'patrol-log-page' => 'Listaan ti napatruliaan',
-'patrol-log-header' => 'Daytoy ket listaan dagiti napatruliaan a pinagbaliwan.',
+'patrol-log-header' => 'Daytoy ket listaan dagiti napatruliaan a panagbabaliw.',
 'log-show-hide-patrol' => '$1 listaan ti napatruliaan',
 
 # Image deletion
@@ -2836,8 +2851,8 @@ $1',
 'nextdiff' => 'Sumaruno a naurnos →',
 
 # Media information
-'mediawarning' => "'''Ballaag'': Daytoy a papeles ket adda nagyan na a dakes a kodigo.
-No usarem ket, baka makompromiso ti sistema.",
+'mediawarning' => "'''Ballaag'': Daytoy a papeles ket naglaon ti dakes a kodigo.
+No usarem daytoy, baka makompromiso ti sistema.",
 'imagemaxsize' => "Ti patingga a kadakkel ti papeles:<br />''(para dagiti pagpalpalawag ti papeles a panid)''",
 'thumbsize' => 'Rukod ti imahen:',
 'widthheightpage' => '$1 × $2, $3 a {{PLURAL:$3|panid|pampanid}}',
@@ -2848,18 +2863,18 @@ No usarem ket, baka makompromiso ti sistema.",
 'svg-long-desc' => 'SVG a papeles, babassit ngem $1 × $2 pixels, kadakkel ti papeles: $3',
 'show-big-image' => 'Sibubukel a resolusion',
 'show-big-image-preview' => 'Kadakkel na daytoy a pagpadas: $1.',
-'show-big-image-other' => 'Sabali a {{PLURAL:$2|resolusion|dagiti resolusion}}: $1.',
+'show-big-image-other' => 'Sabali  {{PLURAL:$2|a resolusion|kadagiti resolusion}}: $1.',
 'show-big-image-size' => '$1 × $2 dagiti piksel',
 'file-info-gif-looped' => 'nasiluan',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kuadro| dagiti kuadro}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}',
 'file-info-png-looped' => 'nasiluan',
-'file-info-png-repeat' => 'pinaayayam $1 {{PLURAL:$1|beses|beses}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kuadro| dagiti kuadro}}',
+'file-info-png-repeat' => 'pinaayayam ti $1 {{PLURAL:$1|a beses|a beses}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|a kuadro| kadagiti kuadro}}',
 
 # Special:NewFiles
 'newimages' => 'Galeria dagiti kabarbaro a papeles',
 'imagelisttext' => "Adda dita baba ti listaan ti ''$1''' {{PLURAL:$1|a papeles|dagiti papeles}} a nailasin a kas $2.",
-'newimages-summary' => 'Daytoy nga espesial a panid ket ipakita na ti kinaudi a pinag-ipan kadagiti papeles.',
+'newimages-summary' => 'Daytoy nga espesial a panid ket ipakitana ti kinaudi a pinag-ipan kadagiti papeles.',
 'newimages-legend' => 'Sagat',
 'newimages-label' => 'Nagan ti papeles (wenno paset na) :',
 'showhidebots' => '($1 bots)',
@@ -2884,8 +2899,8 @@ Ania man a sumarsaruno a panpanilpo iti isu met la a linia ket maikonsidera kas
 
 # Metadata
 'metadata' => 'Metadata',
-'metadata-help' => 'Addaan daytoy a papeles iti nayon a pakaammo, a mabalin a nainayon manipud iti digital kamera wenno scanner a naaramat a pangpartuat wenno pang-digitize itoy.
-No ti papeles ket saan a nabalbaliwan manipud iti kasisigudna a kasasaad, sumagmamano a detalye ket mabalin a saan a sibubukel a mangipakita iti nabaliwan a papeles.',
+'metadata-help' => 'Daytoy a papeles ket naglaon ti naipatinayon a pakaammo, a mabalin a nainayon manipud ti digital a kamera wenno skanner a naaramat a pangpartuat wenno pang-digitize itoy.
+No ti papeles ket saan a nabalbaliwan manipud iti kasisigud a kasasaad, adda dagiti sumagmamano a salaysay a mabalin a saan a napno a maipakita ti nabaliwan a papeles.',
 'metadata-expand' => 'Ipakita dagiti napaatiddogan a salaysay',
 'metadata-collapse' => 'Ilemmeng dagiti napaatiddogan a salaysay',
 'metadata-fields' => 'Dagiti metadata a pagikabilana nakalista iti daytoy a mensahe ket mairaman iti maipakita a panid ti imahen no ti metadata a lamisaan ket maipabassit.
@@ -2910,7 +2925,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-bitspersample' => 'Bits tunggal maysa a  nagyan',
 'exif-compression' => 'Pekkelen a pamuspusan',
 'exif-photometricinterpretation' => 'Piksel a kabuklan',
-'exif-orientation' => 'Orientation',
+'exif-orientation' => 'Pagturongan',
 'exif-samplesperpixel' => 'Bilang ti nagnagyan',
 'exif-planarconfiguration' => 'Pinakaurnong ti datos',
 'exif-ycbcrsubsampling' => 'Subsampling ratio ti Y iti C',
@@ -3022,9 +3037,9 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-countrycodecreated' => 'Kodigo ti pagilian nga nakaalaan ti litrato',
 'exif-provinceorstatecreated' => 'Probinsia wenno estado nga nakaalaan ti litrato',
 'exif-citycreated' => 'Ti siudad nga nakaalaan ti litrato',
-'exif-sublocationcreated' => 'Sabali pay a lokasion ti ciudad a nakaalaan ti retrato',
+'exif-sublocationcreated' => 'Sabali pay a lokasion ti siudad a nakaalaan ti retrato',
 'exif-worldregiondest' => 'Paset ti lubong a naipakita',
-'exif-countrydest' => 'Naipakita nga pagilian',
+'exif-countrydest' => 'Naipakita a pagilian',
 'exif-countrycodedest' => 'Kodigo ti pagilian a naipakita',
 'exif-provinceorstatedest' => 'Probinsia wenno estado a naipakita',
 'exif-citydest' => 'Naipakita a siudad',
@@ -3034,12 +3049,12 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-headline' => 'Paulo',
 'exif-credit' => 'Pammadayaw/Nangted',
 'exif-source' => 'Taudan',
-'exif-editstatus' => 'Pinagurnos nga estado ti imahen',
+'exif-editstatus' => 'Panagurnos a kasasaad ti imahen',
 'exif-urgency' => 'Ganat',
 'exif-fixtureidentifier' => 'Nagan ti naikabit a banag',
 'exif-locationdest' => 'Lugar a naibaga',
 'exif-locationdestcode' => 'Kodigo ti lugar a naibaga',
-'exif-objectcycle' => 'Oras ti aldaw a maipanggepan iti daytoy a midia',
+'exif-objectcycle' => 'Oras ti aldaw a nairebbeng para iti daytoy a midia',
 'exif-contact' => 'Pakaammo ti pagdamagan',
 'exif-writer' => 'Mannurat',
 'exif-languagecode' => 'Pagsasao',
@@ -3054,7 +3069,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-serialnumber' => 'Agsasaruno a numero ti kamera',
 'exif-cameraownername' => 'Akinkukua ti kamera',
 'exif-label' => 'Etiketa',
-'exif-datetimemetadata' => 'Petsa ti kinaudi a binaliwan ti metadata',
+'exif-datetimemetadata' => 'Petsa ti kinaudi a panagbaliw ti metadata',
 'exif-nickname' => 'Di pormal a nagan ti imahen',
 'exif-rating' => 'Pategan (ti maysa kadagiti  5)',
 'exif-rightscertificate' => 'Paneknek ti panagtaripatu dagiti karbengan',
@@ -3065,8 +3080,8 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-originaldocumentid' => 'Naisangsangyan nga ID iti kinasigud a dokumento',
 'exif-licenseurl' => 'URL iti ti karbengan ti kopia a lisensia',
 'exif-morepermissionsurl' => 'Sabali a pakaammo ti lisensia',
-'exif-attributionurl' => 'No usaren manen daytoy nga obra, pangngaasi ta isilpo idiay',
-'exif-preferredattributionname' => 'No usaren manen daytoy nga obra, pangngaasi ta padayawen ni',
+'exif-attributionurl' => 'No usaren manen daytoy nga obra, pangngaasi nga agisilpo idiay',
+'exif-preferredattributionname' => 'No usaren manen daytoy nga obra, pangngaasi a padayawen ni',
 'exif-pngfilecomment' => 'Komentario ti PNG a papeles',
 'exif-disclaimer' => 'Dagiti karbengan ken rebbeng',
 'exif-contentwarning' => 'Ballaag ti nagyan',
@@ -3215,8 +3230,8 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-gpslongitude-w' => 'Abagatan a longitude',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nangatngato ngem ti baybay',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nababbaba ngem ti baybay',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|a metro|kadagiti metro}} a nangatngato ngem ti baybay',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|a metro|kadagiti metro}} a nababbaba ngem ti baybay',
 
 'exif-gpsstatus-a' => 'Agrukrukoden',
 'exif-gpsstatus-v' => 'Panag-rukod ken pannakabin ti pang-usar ti sabali',
@@ -3268,6 +3283,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-iimcategory-dis' => 'Dagiti disatro ken aksidente',
 'exif-iimcategory-fin' => 'Ekonomia ken negosio',
 'exif-iimcategory-edu' => 'Edukasion',
+'exif-iimcategory-evn' => 'Enbironmento',
 'exif-iimcategory-hth' => 'Salun-at',
 'exif-iimcategory-hum' => 'Kaykayat ti tattao',
 'exif-iimcategory-lab' => 'Trabaho',
@@ -3283,41 +3299,42 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-urgency-normal' => 'Kadawyan ($1)',
 'exif-urgency-low' => 'Nababa ($1)',
 '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 [//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' => 'am-amin',
+'watchlistall2' => 'amin',
 'namespacesall' => 'amin',
-'monthsall' => 'am-amin',
+'monthsall' => 'amin',
 'limitall' => 'amin',
 
 # E-mail address confirmation
 'confirmemail' => 'Pasingkedan ti e-surat a pagtaengam',
 'confirmemail_noemail' => 'Awan ti umisu nga e-surat a pagtaengam a naikabil idiay [[Special:Preferences|kaykayat ti agar-aramat]].',
-'confirmemail_text' => '{{SITNAME}} ket masapul na a pasingkedam ti e-surat a pagtaengam sakbay nga agusar ti -surat a langa.
-Ipabalin mo dita baba a buton ti pinagitulod ti pasingkedan a surat dita a pagtaengam.
-Ti surat ket addaan to ti panilpo nga adda nagyan na a kodigo;
-ikabil ti panilpo dita pagbasabasam ta mapasingkedam a ti e-surat a pagtaengam ket umisu.',
+'confirmemail_text' => 'Ti {{SITNAME}} ket masapulna a pasingkedam ti e-surat a pagtaengam sakbay nga agusar ti -surat a langa.
+Ipabalinmo dita baba a buton ti panagitulod ti pasingkedan a surat dita a pagtaengam.
+Ti surat ket mangiraman ti panilpo nga aglaon ti maysa a kodigo;
+ikabil ti panilpo dita pagbasabasam tapno mapasingkedam a ti e-surat a pagtaengam ket umisu.',
 'confirmemail_pending' => 'Ti pasingkedan a kodigo ket naipatulod kenkan:
 no kadamdama ka a nangaramid ti pakabilangam, aguray ka pay ti mano a minutos a sumangpet sakbay ka nga agpadas ti agkiddaw ti baro a kodigo.',
 'confirmemail_send' => 'Agipatulod ti pasingkedan a kodigo',
 'confirmemail_sent' => 'Naipatuloden ti pammasingked nga e-surat.',
 'confirmemail_oncreate' => 'Ti pakasingkedan a kodigo ket naipatulod dita e-surat a pagtaengam.
-Daytoy a kodigo ket saan a masapul ti sumrek, ngem masapul mo nga ited sakbay ka nga agpabalin kadagiti e-surat a langa ti wiki.',
-'confirmemail_sendfailed' => '{{SITENAME}} ket saan a makaipatulod ti pakasingkedan a surat.
-Pangngaasi ta kitaem ti e-surat a pagtaengam kadagiti maisu a kabalinan.
+Daytoy a kodigo ket saan a masapul ti sumrek, ngem masapulmo nga ited sakbay ka nga agpabalin kadagiti e-surat a langa ti wiki.',
+'confirmemail_sendfailed' => 'Ti {{SITENAME}} ket saan a makaipatulod ti pammasingke a surat.
+Pangngaasi a kitaem ti e-surat a pagtaengam para kadagiti imbalido a karakter.
 
 Insubli ti nangisurat: $1',
-'confirmemail_invalid' => 'Saan a mabalin a kodigo ti pammasingked.
-Nalabit a nagpason daytoy a kodigo.',
-'confirmemail_needlogin' => 'Masapulmo nga $1 tapno mapasingkedan ti e-surat a pagtaengam.',
+'confirmemail_invalid' => 'Imbalido a kodigo ti pammasingked.
+Mabalin a nagpaso daytoy a kodigo.',
+'confirmemail_needlogin' => 'Masapulmo ti $1 tapno mapasingkedan ti e-surat a pagtaengam.',
 'confirmemail_success' => 'Napasingkedanen ti e-surat a pagtaengam.
-Mabalinmon [[Special:UserLogin|sumrek]] ken naragsak a panag-wiki.',
+Mabalinmo tattan ti [[Special:UserLogin|sumrek]] ken nanamen ti wiki.',
 'confirmemail_loggedin' => 'Napasingkedanen ti e-surat a pagtaengam.',
-'confirmemail_error' => 'Adda banag a biddut iti panangidulin iti pammasingkedmo.',
+'confirmemail_error' => 'Adda banag a biddut ti panangidulin ti pammasingkedmo.',
 'confirmemail_subject' => 'Pammasingked ti e-surat a pagtaengan ti {{SITENAME}}',
 'confirmemail_body' => 'Addaan, baka sika, ti naggapu ti IP a pagtaengan $1,
 ket nagrehistro ti pakabilangan "$2" iti daytoy nga e-surat a pagtaengan idiay {{SITENAME}}
@@ -3327,12 +3344,12 @@ pinagpabalin ti e-surat a kita idiay {{SITENAME}}, lukatam daytoy a panilpo dita
 
 $3
 
-No *saanmo* nga inrehistro ti pakabilangam, surutem daytoy a panilpo
+No *saanmo* nga inrehistro ti pakabilangam, surotem daytoy a panilpo
 ta pasardengem ti pinakasingkedan ti e-surat a  pagtaengam:
 
 $5
 
-Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
+Daytoy a pammasingked a kodigo ket agpaso iti $4.',
 'confirmemail_body_changed' => 'Addaan, baka sika, ti naggapu ti IP a apagtaengam $1,
 ket nangsukat ti e-surat a pagtaengan ti pakabilangan "$2" iti daytoy a pagtaengan idiay {{SITENAME}}
 
@@ -3361,8 +3378,8 @@ ta pasardengem ti pinakasingkedan ti e-surat a pagtaengam:
 $5
 
 Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
-'confirmemail_invalidated' => 'Saan a napapasingked ti e-surat a pagtaengam',
-'invalidateemail' => 'Ukasen ti pasingkedan ti e-surat',
+'confirmemail_invalidated' => 'Naukas ti pammasingked ti e-surat a pagtaengam',
+'invalidateemail' => 'Ukasen ti pammasingked ti e-surat',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Nabaldado ti Interwiki pinagiraman]',
@@ -3371,16 +3388,16 @@ Daytoy a kodigo a pasingkedan ket agpaso iti $4.',
 
 # Delete conflict
 'deletedwhileediting' => "'''Ballaag''': Naikkaten daytoy a panid kalpasan a rinugiam nga agurnos!",
-'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos nga adda rason:
+'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkatna daytoy a panid kalpasan ti panagrugim nga agurnos nga adda rason:
 : ''$2''
-Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
+Pangngaasi a pasingkedam nga agpayso a kayatmo a partuten manen daytoy a panid.",
 'confirmrecreate-noreason' => 'Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo a magirugi ti agurnos. Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.',
 'recreate' => 'Partuaten manen',
 
 # action=purge
 'confirm_purge_button' => 'OK',
 'confirm-purge-top' => 'Dalusan ti cache daytoy a panid?',
-'confirm-purge-bottom' => 'Ti pinagpasadiwa ti panid ket ipalabas na ti cache ken pursaran na dagiti agdama a pinagbaliwan ti agparang.',
+'confirm-purge-bottom' => 'Ti panagpurga ti panid ket dalusanna ti cache ken pursaranna nga agparang dagiti kinaudi a panagbaliw.',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'OK',
@@ -3408,70 +3425,71 @@ Pangngaasi ta pasingkedam a kayatmo nga aramiden manen daytoy a panid.",
 
 # Auto-summaries
 'autosumm-blank' => 'Naikkat amin ti linaon ti panid',
-'autosumm-replace' => "Masukatan ti panid iti '$1'",
-'autoredircomment' => 'Maibawbaw-ing iti [[$1]]',
-'autosumm-new' => 'Inaramid ti panid iti "$1"',
+'autosumm-replace' => "Sinukatan ti linaon iti '$1'",
+'autoredircomment' => 'Naibaw-ing ti panid iti [[$1]]',
+'autosumm-new' => 'Pinartuat ti panid iti "$1"',
 
 # Live preview
 'livepreview-loading' => 'Maikarkarga…',
 'livepreview-ready' => 'Maikarkarga… Agsagana!',
-'livepreview-failed' => 'Madi a mabalin ti agdama a pagpadas! Padasem ti normal a pinagpadas.',
+'livepreview-failed' => 'Napaay ti agdama a panagipadas! 
+Padasem ti kadawyan a panagipadas.',
 'livepreview-error' => 'Napaay a sumilpo: $1 "$2". Padasem ti normal a pinagpadas',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|segundo|segundo}} ket mabalin a saan a maiparang itoy a listaan.',
-'lag-warn-high' => 'Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|segundo|segundo}} ket mabalin nga saan nga agparang ditoy nga listaan.',
+'lag-warn-normal' => 'Dagiti panangbalbaliw a nabarbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan a maiparang itoy a listaan.',
+'lag-warn-high' => 'Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|a segundo|kadagiti segundo}} ket mabalin a saan nga agparang ditoy a listaan.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam iti {{PLURAL:$1|1 titulo|$1 dagiti titulo}}, di mairaman dagiti patungtungan a panid.',
-'watchlistedit-noitems' => 'Awan linaonna dagiti titulo ti listaan ti bambantayam.',
-'watchlistedit-normal-title' => 'Baliwan ti listaan ti bambantayan',
-'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo iti listaan ti bambantayam',
-'watchlistedit-normal-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba.
-Ti mangikkat ti titulo, ikur-it ti kaasideg na a kahon, ken agtakla ti "{{int:Watchlistedit-normal-submit}}".
-Mabalin mo met nga [[Special:EditWatchlist/raw|urnosen ti listaan a kilaw]].',
+'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam  {{PLURAL:$1|iti1 a titulo|kadagiti $1 a titulo}}, a di mairaman dagiti patungtungan a panid.',
+'watchlistedit-noitems' => 'Ti listaan ti banbantayam ket saan a naglaon kadagiti titulo.',
+'watchlistedit-normal-title' => 'Urnosem ti listaan ti bambantayan',
+'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo manipud ti listaan ti bambantayam',
+'watchlistedit-normal-explain' => 'Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba.
+Ti mangikkat ti titulo, ikur-it ti kaaripingna a kahon, ken agtakla ti "{{int:Watchlistedit-normal-submit}}".
+Mabalinmo pay nga [[Special:EditWatchlist/raw|urnosen ti kilaw a listaan]].',
 'watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
 'watchlistedit-normal-done' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} naikkat iti listaan ti bambantayam:',
-'watchlistedit-raw-title' => 'Urnosen ti kilaw a bambantayan',
-'watchlistedit-raw-legend' => 'Urnosen ti kilaw a bambantayan',
-'watchlistedit-raw-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba, ken mabaliwam no nayunam, ken ikkaten idiay listaan;
+'watchlistedit-raw-title' => 'Urnosen ti kilaw a listaan ti bambantayan',
+'watchlistedit-raw-legend' => 'Urnosen ti kilaw a listaan ti bambantayan',
+'watchlistedit-raw-explain' => 'Dagiti titulo ti listaan ti bambantayam ket naipakita dita baba, ken mabaliwam nga urnosen babaen ti panagnayon ken panagkissay manipud ti listaan;
 maysa a titulo tunggal maysa a linia.
-No malpas ka, agtakla ti "{{int:Watchlistedit-raw-submit}}".
-Mabalin mo met nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
+No malpas ka, itakla ti "{{int:Watchlistedit-raw-submit}}".
+Mabalinmo pay nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
 'watchlistedit-raw-titles' => 'Dagiti titulo:',
 'watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
 'watchlistedit-raw-done' => 'Napabaro ti listaan ti bambantayam.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} nainayon:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ti titulo a|$1 dagiti titulo a}} naikkat:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 a titulo ti|dagiti $1 a titulo ti}} nainayon:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 a titulo ti|dagiti $1 dagiti titulo ti}} naikkat:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Kitaen dagiti napatpateg a sinukatan',
-'watchlisttools-edit' => 'Kitaen ken baliwan ti listaan ti bambantayan',
-'watchlisttools-raw' => 'Urnosen ti kilaw a bambantayan',
+'watchlisttools-view' => 'Kitaen dagiti maitunos a sinukatan',
+'watchlisttools-edit' => 'Kitaen ken urnosen ti listaan ti bambantayan',
+'watchlisttools-raw' => 'Urnosen ti kilaw a listaan ti bambantayan',
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|patang]])',
 
 # Core parser functions
-'unknown_extension_tag' => 'Di ammo a pagpaatiddog a tag "$1"',
-'duplicate-defaultsort' => '\'\'\'Ballaag:\'\'\' Kinasigud a pinagilasin ti "$2" ket sukatan na ti immuna a kinasigud a pinagilasin "$1".',
+'unknown_extension_tag' => 'Di amammo a pagpaatiddog nga etiketa "$1"',
+'duplicate-defaultsort' => '\'\'\'Ballaag:\'\'\' Kinasigud a panagilasin ti "$2" ket sukatanna ti immuna a kinasigud a panagilasin "$1".',
 
 # Special:Version
 'version' => 'Bersion',
 'version-extensions' => 'Dagiti naikabil a pagpaatiddog',
 'version-specialpages' => 'Espesial a pampanid',
-'version-parserhooks' => 'Parser a kawit',
-'version-variables' => 'Sabsabali',
+'version-parserhooks' => 'Dagiti parser a kawit',
+'version-variables' => 'Nadumaduma a kita',
 'version-antispam' => 'Pawilan ti spam',
 'version-skins' => 'Dagiti Kudil',
 'version-other' => 'Sabali',
-'version-mediahandlers' => 'Agiggem kadagiti media',
+'version-mediahandlers' => 'Agtengtengngel kadagiti midia',
 'version-hooks' => 'Dagiti kawit',
-'version-extension-functions' => 'Pagpaatiddog nga opisio',
-'version-parser-extensiontags' => 'Dagiti pagpaatiddog nga etiketa a parser',
-'version-parser-function-hooks' => 'Parser nga opisio a kawit',
+'version-extension-functions' => 'Dagiti pagpaatiddog a pamay-an',
+'version-parser-extensiontags' => 'Dagiti parser a pagpaatiddog nga etiketa',
+'version-parser-function-hooks' => 'Parser a pamay-an dagiti kawit',
 'version-hook-name' => 'Nagan ti kawit',
-'version-hook-subscribedby' => 'Umanamong ni',
+'version-hook-subscribedby' => 'Umanamong babaen ti',
 'version-version' => '(Bersion $1)',
 'version-license' => 'Lisensia',
 'version-poweredby-credits' => "Daytoy a wiki ket pinaandar ti '''[//www.mediawiki.org/ MediaWiki]''', karbengan a kopia © 2001-$1 $2.",
@@ -3492,7 +3510,7 @@ Naka-awat ka kuman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 'filepath' => 'Dalanan ti papeles',
 'filepath-page' => 'Papeles:',
 'filepath-submit' => 'Inkan',
-'filepath-summary' => 'Daytoy nga espesiala panid ket agisubli ti kompleto a dalan ti papeles.
+'filepath-summary' => 'Daytoy nga espesial a panid ket agisubli ti kompleto a dalan ti papeles.
 Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti papeles ket mangrugi da a idiay nakairamanan da a programa.',
 
 # Special:FileDuplicateSearch
@@ -3502,8 +3520,8 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'fileduplicatesearch-filename' => 'Nagan ti papeles:',
 'fileduplicatesearch-submit' => 'Biruken',
 'fileduplicatesearch-info' => '$1 × $2 pixel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4',
-'fileduplicatesearch-result-1' => 'Awanan iti kapadpada na a duplikado ti papeles a "$1".',
-'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|$2 dagiti agpadpada a duplikado}}.',
+'fileduplicatesearch-result-1' => 'Awan ti kapadpadana a duplikado ti papeles a "$1".',
+'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|dagiti $2  nga agpadpada a duplikado}}.',
 'fileduplicatesearch-noresults' => 'Awan ti nagan ti papeles a "$1" ti nabirukan.',
 
 # Special:SpecialPages
@@ -3518,7 +3536,7 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'specialpages-group-changes' => 'Kaudian a sinukatan ken listaan',
 'specialpages-group-media' => 'Dagiti padamag ti media ken panag-ipan',
 'specialpages-group-users' => 'Dagiti agar-aramat ken karkarbengan',
-'specialpages-group-highuse' => 'Adu ti panaka-usar na a pampanid',
+'specialpages-group-highuse' => 'Adu ti panaka-usar a pampanid',
 'specialpages-group-pages' => 'Listaan dagiti panid',
 'specialpages-group-pagetools' => 'Dagiti ramramit ti panid',
 'specialpages-group-wiki' => 'Linaon ti wiki ken ramramit',
@@ -3526,8 +3544,8 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'specialpages-group-spam' => 'Ramramit kontra spam',
 
 # Special:BlankPage
-'blankpage' => 'Awan ti nagyan na a panid',
-'intentionallyblankpage' => 'Daytoy a panid  ket naikaro a blanko.',
+'blankpage' => 'Blanko a panid',
+'intentionallyblankpage' => 'Daytoy a panid  ket naigagara a blanko.',
 
 # External image whitelist
 'external_image_whitelist' => ' #Baybayan daytoy a linia a kastoy<pre>
@@ -3547,18 +3565,18 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'tags-intro' => 'Daytoy a panid ket ilista na dagiti etiketa nga usaren ti software nga agmarka ti panag-urnos, ken dagiti kayat da a saoen.',
 'tags-tag' => 'Nagan ti etiketa',
 'tags-display-header' => 'Tabas dagiti listaan ti panagsukat',
-'tags-description-header' => 'Amin a panagipalpalawag ti kayat na a saoen.',
+'tags-description-header' => 'Napno a panangipalpalawag iti kayatna a saoen.',
 'tags-hitcount-header' => 'Dagiti etiketa a sinukatan',
 'tags-edit' => 'urnosen',
-'tags-hitcount' => '$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|a sinukatan|kadagiti sinukatan}}',
 
 # Special:ComparePages
 'comparepages' => 'Ipada dagiti panid',
 'compare-selector' => 'Ipada dagiti panagbaliw ti panid',
 'compare-page1' => 'Panid 1',
 'compare-page2' => 'Panid 2',
-'compare-rev1' => 'Pinagbaliw 1',
-'compare-rev2' => 'Pinagbaliw 2',
+'compare-rev1' => 'Panagbaliw 1',
+'compare-rev2' => 'Panagbaliw 2',
 'compare-submit' => 'Ipada',
 'compare-invalid-title' => 'Ti titulo nga intedmo ket imbalido.',
 'compare-title-not-exists' => 'Awan met dayta titulo a nainaganam.',
@@ -3587,21 +3605,21 @@ Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.',
 'htmlform-selectorother-other' => 'Sabali',
 
 # SQLite database support
-'sqlite-has-fts' => '$1 adda ti suporta amin a teksto ti pinagbiruk',
-'sqlite-no-fts' => '$1 awan ti suporta amin a teksto ti pinagbiruk',
+'sqlite-has-fts' => '$1 adda ti suporta ti napno a teksto ti panagbiruk',
+'sqlite-no-fts' => '$1 awan ti suporta ti napno a teksto ti panagbiruk',
 
 # New logging system
-'logentry-delete-delete' => 'inikkat ni $1 daytoy panid  nga $3',
-'logentry-delete-restore' => 'insubli ni $1 daytoy panid nga $3',
-'logentry-delete-event' => '$1 pinagsukat ti pinagkita iti {{PLURAL:$5|listaan ti pasamak |$5 dagiti listaan ti pasamak }} iti $3: $4',
-'logentry-delete-revision' => '$1 pinagsukat ti pinagkita iti {{PLURAL:$5|pinagbaliw |$5 dagiti pinagbaliw}} iti panid $3: $4',
-'logentry-delete-event-legacy' => '$1 pinagsukat a pinagkita ti listaan dagiti pasamak idiay $3',
-'logentry-delete-revision-legacy' => '$1 pinagsukat a pinagkita dagiti pinagbaliw idiay panid $3',
-'logentry-suppress-delete' => '$1 napasardeng a panid $3',
-'logentry-suppress-event' => '$1 nasekreto pinagsukat ti pinagkita iti {{PLURAL:$5|listaan ti pasamak |$5 dagiti listaan ti pasamak }} iti $3: $4',
-'logentry-suppress-revision' => '$1 nasekreto pinagsukat ti pinagkita iti {{PLURAL:$5|pinagbaliw |$5 dagiti pinagbaliw}} iti panid $3: $4',
-'logentry-suppress-event-legacy' => '$1 nasekreto ti pinagsukat a pinagkita ti listaan dagiti pasamak idiay $3',
-'logentry-suppress-revision-legacy' => '$1 nasekreto ti pinagsukat a pinagkita dagiti pinagbaliw idiay panid $3',
+'logentry-delete-delete' => 'Inikkat ni $1 ti panid  ti $3',
+'logentry-delete-restore' => 'Insubli ni $1 ti panid ti $3',
+'logentry-delete-event' => 'Sinukatan ni $1  ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4',
+'logentry-delete-revision' => 'Sinukatan ni $1 ti panagkita  {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4',
+'logentry-delete-event-legacy' => 'Sinukatan ni $1  ti panagkita ti listaan dagiti pasamak idiay $3',
+'logentry-delete-revision-legacy' => 'Sinukatan ni $1 ti panagkita dagiti panagbaliw idiay panid $3',
+'logentry-suppress-delete' => 'Pinasardeng ni $1 ti panid ti $3',
+'logentry-suppress-event' => 'Sekreto a sinukatan ni $1 ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4',
+'logentry-suppress-revision' => 'Sekreto a sinukatan ni $1 ti panagkita {{PLURAL:$5|iti panagbaliw |dagiti $5 a panagbaliw}} iti panid $3: $4',
+'logentry-suppress-event-legacy' => 'Sekreto a sinukatan ni $1 ti panagkita ti listaan dagiti pasamak idiay $3',
+'logentry-suppress-revision-legacy' => 'Sekreto a sinukatan ni $1  ti panagkita dagiti panagbaliw idiay panid $3',
 'revdelete-content-hid' => 'nailemmeng ti nagyan na',
 'revdelete-summary-hid' => 'nailemmeng ti pakabuklan a naurnos',
 'revdelete-uname-hid' => 'nailemmeng ti nagan ti agar-aramat',
@@ -3610,21 +3628,21 @@ Daytoy a pagsaadan ket agdadama ti teknikal a pagrigrigatan.',
 'revdelete-uname-unhid' => 'saan a nailemmeng ti nagan ti agar-aramat',
 'revdelete-restricted' => 'naipakat dagiti pammarit kadagiti administrador',
 'revdelete-unrestricted' => 'naikkat dagiti pammarit para kadagiti administrador',
-'logentry-move-move' => 'inyalis ni  $1 daytoy panid $3 idiay $4',
-'logentry-move-move-noredirect' => '$1 inyalis ti panid $3 idiay $4 nga awan ti naibati a baw-ing',
-'logentry-move-move_redir' => '$1 inyalis ti panid $3 idiay $4 nga adda baw-ing',
-'logentry-move-move_redir-noredirect' => '$1 iniyalis ti panid $3 idiay $4 nga inikkan ti baw-ing ngem saan a nagibati ti baw-ing',
-'logentry-patrol-patrol' => '$1 markaan ti pinagbaliw $4 ti panid  $3 a napatruliaan',
-'logentry-patrol-patrol-auto' => '$1 automatiko a markaan ti panagbaliw $4 ti panid $3 a napatruliaan',
-'logentry-newusers-newusers' => '$1 nakaaramid ti pakabilangan ti agar-aramat',
-'logentry-newusers-create' => '$1 nakaaramid ti pakabilangan ti agar-aramat',
-'logentry-newusers-create2' => '$1 nakaaramid ti pakabilangan ti agar-aramat $3',
-'logentry-newusers-autocreate' => 'Ti pakabilangan $1 ket  naaramid nga automatiko',
+'logentry-move-move' => 'Inyalis ni  $1 daytoy panid $3 idiay $4',
+'logentry-move-move-noredirect' => 'Inyalis ni $1  ti panid ti $3 idiay $4 a saan a nangibati ti baw-ing',
+'logentry-move-move_redir' => 'Inyalis ni $1 ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing',
+'logentry-move-move_redir-noredirect' => 'Inyalis ni $1 ti panid ti $3 idiay $4 nga adda iti maysa a baw-ing a saan a nangibati ti baw-ing',
+'logentry-patrol-patrol' => 'Minarkaan ni $1 ti panagbaliw a $4 ti panid ti  $3 a napatruliaan',
+'logentry-patrol-patrol-auto' => 'Automatiko a minarkaan ni $1 ti panagbaliw a $4 ti panid ti $3 a napatruliaan',
+'logentry-newusers-newusers' => 'Nagpartuat ni $1 ti pakabilangan ti  agar-aramat',
+'logentry-newusers-create' => 'Nagpartuat ni $1 ti pakabilangan ti agar-aramat',
+'logentry-newusers-create2' => 'Nagpartuat ni $1 ti pakabilangan ti agar-aramat ti $3',
+'logentry-newusers-autocreate' => 'Ti pakabilangan ni $1 ket automatiko a napartuat',
 'newuserlog-byemail' => 'naipatulod ti kontrasenias ti e-surat',
 
 # Feedback
-'feedback-bugornote' => 'No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi a [$1 ireporta ti kiteb].
-Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket mainayon iti panid "[$3 $2], a mairaman ti nagan mo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.',
+'feedback-bugornote' => 'No agsagana kan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti kiteb].
+Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mainayon iti panid "[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.',
 'feedback-subject' => 'Suheto:',
 'feedback-message' => 'Mensahe:',
 'feedback-cancel' => 'Ukasen',
@@ -3635,17 +3653,17 @@ Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket m
 'feedback-error3' => 'Biddut: Awan ti sungbat manipud iti API',
 'feedback-thanks' => 'Agyaman! Ti panangparupaam ket naipablaak iti panid "[$2 $1]".',
 'feedback-close' => 'Nalpasen',
-'feedback-bugcheck' => 'Nasayaaten! Kitem tapno met saan a dagita adaanen a [$1 dagiti amammo a kiteb].',
+'feedback-bugcheck' => 'Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga amammo a kitkiteb].',
 'feedback-bugnew' => 'Kinitak. Ireporta ti baro a kiteb',
 
 # API errors
 'api-error-badaccess-groups' => 'Saan mo a mabalin ti agipan kadagiti papeles iti daytoy a wiki.',
 'api-error-badtoken' => 'Kinauneg a biddut: Dakes a tandaan.',
 'api-error-copyuploaddisabled' => 'Ti mangipan babaen ti URL ket nabaldado ditoy a server.',
-'api-error-duplicate' => 'Adda {{PLURAL:$1|ket [$2 sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addan ditoy a pagsaadan nga agpada ti nagyan da.',
-'api-error-duplicate-archive' => 'Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabalia papeles]}} nga adda ditoy a pagsaadan nga agpada ti nagyan da, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.',
+'api-error-duplicate' => 'Adda {{PLURAL:$1|ket [$2 sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addan ditoy a pagsaadan nga agpada ti nagyan da.',
+'api-error-duplicate-archive' => 'Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabali a papeles]}} nga adda ditoy a pagsaadan nga agpada ti nagyan da, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.',
 'api-error-duplicate-archive-popup-title' => 'Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}} a naikkaten.',
-'api-error-duplicate-popup-title' => 'Duplikado {{PLURAL:$1|papeles|dagiti papeles}}',
+'api-error-duplicate-popup-title' => 'Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}}.',
 'api-error-empty-file' => 'Ti papeles nga intedmo ket awan ti nagyan na.',
 'api-error-emptypage' => 'Agar-aramid ti baro, dagiti awan ti linaon na a panid ket saan a maipalubos.',
 'api-error-fetchfileerror' => 'Kinauneg a biddut: Addaan ti dakes a napasamak idi agalala ti papeles.',
@@ -3653,7 +3671,7 @@ Nupay kasta, mau-sar mo ti nakabuklan dita baba. Ti komentario nga ited mo ket m
 'api-error-filename-tooshort' => 'Ti nagan daytoy a papeles ket bassit unay.',
 'api-error-filetype-banned' => 'Ti kita daytoy a papeles ket maiparit.',
 'api-error-filetype-missing' => 'Ti papeles ket agkurang ti pagpa-atiddog.',
-'api-error-hookaborted' => 'Ti pinagbabaro a pinadas mo ket napasardeng iti pangpa-atiddog a kawit.',
+'api-error-hookaborted' => 'Ti panagbabaro a pinadasmo ket napasardeng iti pangpa-atiddog a kawit.',
 'api-error-http' => 'Kinauneg a biddut: Saan a makaikabit idiay server.',
 'api-error-illegal-filename' => 'Ti nagan daytoy a papeles ket saan a maipalubos.',
 'api-error-internal-error' => 'Kinauneg a biddut: Addaan ti dakes a napasamak ti panagaramid ti panagipan mo iti daytoy a wiki.',
index 43c2f50..89752bb 100644 (file)
@@ -811,7 +811,7 @@ Ol mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.',
 'nchanges' => '$1 {{PLURAL:$1|chanjo|chanji}}',
 'recentchanges' => 'Recenta chanji',
 'recentchanges-legend' => 'Recenta chanji preferaji',
-'recentchangestext' => 'Regardez la maxim recenta chanji en Wiki per ica pagino.',
+'recentchanges-summary' => 'Regardez la maxim recenta chanji en Wiki per ica pagino.',
 'recentchanges-label-newpage' => 'Ca redaktajo kreis nova pagino',
 'recentchanges-label-minor' => 'Ica es mikra redaktajo',
 'recentchanges-label-bot' => 'Ta chanjo facita da bot',
index 51b169c..62e2fcd 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Icelandic (Ã\8dslenska)
+/** Icelandic (íslenska)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -616,7 +616,7 @@ $2',
 Ástæðan sem gefin var ''$2''.",
 'filereadonlyerror' => 'Ekki var hægt að breyta skránni "$1" því skráin í skráarsafninu "$2" er engöngu hægt að lesa.
 
-Ástæðan fyrir þessu er "\'\'$3\'\'".',
+Möppudýrið sem læsti skránni gaf þessa ástæðu: "\'\'$3\'\'".',
 
 # Virus scanner
 'virus-badscanner' => "Slæm stilling: óþekktur veiruskannari: ''$1''",
@@ -647,7 +647,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
 'userlogout' => 'Útskrá',
 'notloggedin' => 'Ekki innskráð(ur)',
 'nologin' => "Ekki með aðgang? '''$1'''.",
-'nologinlink' => 'Stofnaðu til aðgangs',
+'nologinlink' => 'Stofnaðu aðgang',
 'createaccount' => 'Nýskrá',
 'gotaccount' => "Nú þegar með notandanafn? '''$1'''.",
 'gotaccountlink' => 'Skráðu þig inn',
@@ -1083,17 +1083,25 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGE
 'revdelete-show-file-submit' => 'Já',
 'revdelete-selected' => "'''{{PLURAL:$2|Valin breyting|Valdar breytingar}} fyrir [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Valin aðgerð|Valdar aðgerðir}}:'''",
+'revdelete-text' => "'''Eyddar útgáfur og breytingar munu birtast áfram í breytingarskrá síðunnar og í aðgerðarskrám, en hluti upplýsingana verða falin almenningi.'''
+Önnur möppudýr á {{SITENAME}} hafa aðgang að földu upplýsingunum og geta endurvakið upplýsingarnar í gegnum sama viðmót, nema sérstakar takmarkanir séu virkar.",
+'revdelete-confirm' => 'Vinsamlegast staðfestu að þú viljir gera þetta, að þú skiljir afleiðingarnar og að þú sért að gera þetta í samræmi við  [[{{MediaWiki:Policy-url}}]].',
+'revdelete-suppress-text' => "Bælingu á '''eingöngu''' að nota í eftirfarandi tilfellum:
+* Mögulegar ærumleiðandi upplýsingar
+* Óviðeigandi persónulegar upplýsingar
+*: ''heimilisfang, símanúmer, kennitala, osfrv.''",
 'revdelete-legend' => 'Setja sjáanlegar hamlanir',
 'revdelete-hide-text' => 'Fela breytingatexta',
 'revdelete-hide-image' => 'Fela efni skráar',
 'revdelete-hide-name' => 'Fela aðgerð og mark',
-'revdelete-hide-comment' => 'Fela breytingaathugasemdir',
+'revdelete-hide-comment' => 'Fela breytingarágrip',
 'revdelete-hide-user' => 'Fela notandanafn/vistfang',
 'revdelete-hide-restricted' => 'Dylja gögn frá stjórnendum og öðrum',
 'revdelete-radio-same' => '(ekki breyta)',
 'revdelete-radio-set' => 'Já',
 'revdelete-radio-unset' => 'Nei',
 'revdelete-suppress' => 'Dylja gögn frá stjórnendum og öðrum',
+'revdelete-unsuppress' => 'Fjarlægja takmarkanir á endurvöktum breytingum',
 'revdelete-log' => 'Ástæða:',
 'revdelete-submit' => 'Setja á {{PLURAL:$1|valda breytingu|valdar breytingar}}',
 'revdel-restore' => 'Breyta sýn',
@@ -1101,8 +1109,23 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGE
 'revdel-restore-visible' => 'sýnilegar breytingar',
 'pagehist' => 'Breytingaskrá',
 'deletedhist' => 'Eyðingaskrá',
+'revdelete-hide-current' => 'Mistókst að fela breytingu frá $1 $2: Þetta er núverandi útgáfa síðunnar.
+Ekki er hægt að fela hana.',
+'revdelete-show-no-access' => 'Mistókst að sýna breytingu frá $1 $2: Þessi breyting hefur verið merkt sem "takmörkuð".
+Þú hefur ekki aðgang að henni.',
+'revdelete-no-change' => "'''Viðvörun:''' Breytingin frá $1 $2 hefur þegar umbeðnar sýnileika stillingar.",
+'revdelete-only-restricted' => 'Mistókst að fela breytingu frá $1 $2: Þú getur ekki falið breytingu fyrir möppudýrum án þess að velja eina af hinum sýnileika stillingunum.',
+'revdelete-reason-dropdown' => '*Algengar eyðingarástæður
+** Höfundarréttarbrot
+** Óviðeigandi persónuuplýsingar
+** Mögulega ærumleiðandi upplýsingar',
+'revdelete-otherreason' => 'Aðrar/fleiri ástæður:',
+'revdelete-reasonotherlist' => 'Önnur ástæða',
 'revdelete-edit-reasonlist' => 'Eyðingarástæður',
 
+# Suppression log
+'suppressionlog' => 'Bælingarskrá',
+
 # History merging
 'mergehistory' => 'Sameina breytingaskrár',
 'mergehistory-header' => 'Þessi síða gerir þér kleift að sameina breytingarskrá tveggja síðna.
@@ -1120,7 +1143,9 @@ Sjáðu til þess að þessi breyting sameini breytingarskrárnar samfellt.',
 'mergelogpagetext' => 'Þetta er skrá yfir síðustu sameiningar einnar síðu við aðra.',
 
 # Diffs
-'history-title' => 'Breytingaskrá fyrir "$1"',
+'history-title' => '$1: Breytingaskrá',
+'difference-title' => '$1: Munur á milli útgáfa',
+'difference-title-multipage' => '$1 og $2: Munur á milli síðna',
 'difference-multipage' => '(Munur á milli síðna)',
 'lineno' => 'Lína $1:',
 'compareselectedversions' => 'Bera saman valdar útgáfur',
@@ -2350,7 +2375,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Nafnrými:',
 'invert' => 'allt nema valið',
-'tooltip-invert' => 'Hakaðu við þennan kassa til að fela breytingar á síðum innan við ákveðið nafnrými',
+'tooltip-invert' => 'Hakaðu við þennan kassa til að fela breytingar á síðum innan ákveðins nafnrýmis',
 'namespace_association' => 'Tengd nafnrými',
 'tooltip-namespace_association' => 'Hakaðu við þennan kassa til að hafa með spjallsíður eða tengd nafnrými.',
 'blanknamespace' => '(Aðalnafnrýmið)',
@@ -3628,7 +3653,7 @@ Ef ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemd
 'api-error-filename-tooshort' => 'Skráarnafnið er of stutt',
 'api-error-filetype-banned' => 'Þessi gerð skráar er bönnuð.',
 'api-error-filetype-missing' => 'Skráin hefur enga skráarendingu.',
-'api-error-hookaborted' => 'Hætt var við breytinguna sem þú reyndir að gera af viðbótar haka.',
+'api-error-hookaborted' => 'Hætt var við breytinguna sem þú reyndir að gera með viðbót.',
 'api-error-http' => 'Innri villa: Get ekki tengst vefþjón.',
 'api-error-illegal-filename' => 'Þetta skráarnafn er ekki leyft.',
 'api-error-internal-error' => 'Innri villa: Mistókst að vinna úr upphali þínu.',
@@ -3650,4 +3675,14 @@ Ef ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemd
 'api-error-uploaddisabled' => 'Ekki er leyft að hlaða inn á þessum wiki.',
 'api-error-verification-error' => 'Þessi skrá gæti verið skemmd, eða með vitlausa skráarendingu.',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|sekúnda|sekúndur}}',
+'duration-minutes' => '$1 {{PLURAL:$1|mínúta|mínútur}}',
+'duration-hours' => '$1 {{PLURAL:$1|klukkustund|klukkustundir}}',
+'duration-days' => '$1 {{PLURAL:$1|dagur|dagar}}',
+'duration-weeks' => '$1 {{PLURAL:$1|vika|vikur}}',
+'duration-years' => '$1 {{PLURAL:$1|ár|ár}}',
+'duration-decades' => '$1 {{PLURAL:$1|áratugur|áratugir}}',
+'duration-centuries' => '$1 {{PLURAL:$1|öld|aldir}}',
+
 );
index 0fffacf..33f5c56 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Italian (Italiano)
+/** Italian (italiano)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -126,7 +126,7 @@ $specialPageAliases = array(
        'DeletedContributions'      => array( 'ContributiCancellati' ),
        'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
-       'EditWatchlist'             => array( 'ModifcaListaSeguiti' ),
+       'EditWatchlist'             => array( 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
@@ -269,7 +269,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Nascondi le modifiche verificate nelle ultime modifiche',
 'tog-newpageshidepatrolled' => "Nascondi le pagine verificate dall'elenco delle pagine più recenti",
 'tog-extendwatchlist' => "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima",
-'tog-usenewrc' => 'Utilizza le ultime modifiche avanzate (richiede JavaScript)',
+'tog-usenewrc' => 'Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali (richiede JavaScript)',
 'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione',
 'tog-showtoolbar' => 'Mostra barra degli strumenti di modifica (richiede JavaScript)',
 'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic (richiede JavaScript)',
@@ -652,6 +652,8 @@ La motivazione è la seguente: ''$2''.",
 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 questo wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Errore di configurazione: antivirus sconosciuto: ''$1''",
@@ -1192,9 +1194,9 @@ Vedi l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi e dei blo
 'mergelogpagetext' => 'Di seguito sono elencate le ultime operazioni di unione della cronologia di due pagine.',
 
 # Diffs
-'history-title' => 'Cronologia delle modifiche di "$1"',
-'difference-title' => 'Differenza tra le versioni di "$1"',
-'difference-title-multipage' => 'Differenza tra le pagine "$1" e "$2"',
+'history-title' => '$1: cronologia delle modifiche',
+'difference-title' => '$1: differenze tra le versioni',
+'difference-title-multipage' => '$1 e $2: differenze tra le pagine',
 'difference-multipage' => '(Differenze fra le pagine)',
 'lineno' => 'Riga $1:',
 'compareselectedversions' => 'Confronta le versioni selezionate',
@@ -1289,6 +1291,7 @@ Vedi l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi e dei blo
 'prefs-beta' => 'Funzionalità beta',
 'prefs-datetime' => 'Data e ora',
 'prefs-labs' => 'Funzionalità dei laboratori',
+'prefs-user-pages' => 'Pagine utente',
 'prefs-personal' => 'Profilo utente',
 'prefs-rc' => 'Ultime modifiche',
 'prefs-watchlist' => 'Osservati speciali',
@@ -1296,7 +1299,7 @@ Vedi l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi e dei blo
 'prefs-watchlist-days-max' => 'Massimo $1 {{PLURAL:$1|giorno|giorni}}',
 'prefs-watchlist-edits' => 'Numero di modifiche da mostrare con le funzioni avanzate:',
 'prefs-watchlist-edits-max' => 'Numero massimo: 1000',
-'prefs-watchlist-token' => 'Token Osservati speciali:',
+'prefs-watchlist-token' => 'Token osservati speciali:',
 'prefs-misc' => 'Varie',
 'prefs-resetpass' => 'Cambia password',
 'prefs-changeemail' => 'Modifica e-mail',
@@ -1368,7 +1371,7 @@ L'operazione non può essere annullata.",
 'gender-male' => 'Maschile',
 'gender-female' => 'Femminile',
 'prefs-help-gender' => "Opzionale: consente di adattare i messaggi del software in funzione del genere dell'utente. Questa informazione sarà pubblica.",
-'email' => 'Indirizzo e-mail',
+'email' => 'Indirizzo email',
 'prefs-help-realname' => "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
 'prefs-help-email' => "L'inserimento del proprio indirizzo e-mail è facoltativo, ma permette di ricevere la propria password qualora venisse dimenticata.",
 'prefs-help-email-others' => 'Puoi anche scegliere di lasciare che gli altri ti contattino via posta elettronica con un collegamento dalla tua pagina utente o di discussione.
@@ -2068,6 +2071,7 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
 È possibile restringere i criteri di ricerca selezionando il tipo di registro, l'utente che ha eseguito l'azione, e/o la pagina interessata (entrambi i campi sono sensibili al maiuscolo/minuscolo).",
 'logempty' => 'Il registro non contiene elementi corrispondenti alla ricerca.',
 'log-title-wildcard' => 'Ricerca dei titoli che iniziano con',
+'showhideselectedlogentries' => 'Mostra/nascondi le voci di registro selezionate',
 
 # Special:AllPages
 'allpages' => 'Tutte le pagine',
@@ -2385,7 +2389,7 @@ Le impostazioni correnti per la pagina sono '''$1''':",
 'undeletepagetitle' => "'''Quanto segue è composto da revisioni cancellate di [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Visualizza le pagine cancellate',
 'undeletepagetext' => "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere recuperata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere recuperate}}. L'archivio può essere svuotato periodicamente.",
-'undelete-fieldset-title' => 'Recupera revisioni',
+'undelete-fieldset-title' => 'Ripristina versioni',
 'undeleteextrahelp' => "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.
 Per effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle revisioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => '{{PLURAL:$1|Una revisione|$1 revisioni}} in archivio',
@@ -2565,7 +2569,7 @@ Sei sicuro di voler continuare?',
 'unblocklink' => 'sblocca',
 'change-blocklink' => 'cambia blocco',
 'contribslink' => 'contributi',
-'emaillink' => 'invia e-mail',
+'emaillink' => 'invia email',
 'autoblocker' => 'Bloccato automaticamente perché l\'indirizzo IP è condiviso con l\'utente "[[User:$1|$1]]".
 Il blocco dell\'utente $1 è stato imposto per il seguente motivo: "$2".',
 'blocklogpage' => 'Blocchi',
@@ -2949,6 +2953,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'spambot_username' => 'MediaWiki - sistema di rimozione spam',
 'spam_reverting' => "Ripristinata l'ultima versione priva di collegamenti a $1",
 'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
+'spam_deleting' => 'Pagina cancellata, tutte le versioni contenevano collegamenti a $1',
 
 # Info page
 'pageinfo-title' => 'Informazioni per "$1"',
@@ -3654,7 +3659,7 @@ Si noti che è anche possibile [[Special:EditWatchlist|modificare la lista con l
 
 MediaWiki è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per maggiori dettagli.
 
-Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [//www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
+Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [http://www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
 'version-software' => 'Software installato',
 'version-software-product' => 'Prodotto',
 'version-software-version' => 'Versione',
@@ -3861,4 +3866,6 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'duration-centuries' => '$1 {{PLURAL:$1|secolo|secoli}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Impossibile acquisire blocchi sul server $1.',
 );
index e5743ba..8f42292 100644 (file)
@@ -376,7 +376,7 @@ $messages = array(
 'tog-editsection' => '[編集]リンクから節を編集できるようにする',
 'tog-editsectiononrightclick' => '節見出しの右クリックで節を編集できるようにする(JavaScriptが必要)',
 'tog-showtoc' => '目次を表示(ページに見出しが4つ以上ある場合)',
-'tog-rememberpassword' => 'このブラウザにログイン情報を記憶(最大 $1 {{PLURAL:$1|日間}})',
+'tog-rememberpassword' => 'ã\81\93ã\81®ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81«ã\83­ã\82°ã\82¤ã\83³æ\83\85å ±ã\82\92è¨\98æ\86¶ï¼\88æ\9c\80大 $1 {{PLURAL:$1|æ\97¥é\96\93}}ï¼\89',
 'tog-watchcreations' => '自分が作成したページをウォッチリストに追加',
 'tog-watchdefault' => '自分が編集したページをウォッチリストに追加',
 'tog-watchmoves' => '自分が移動したページをウォッチリストに追加',
@@ -384,7 +384,7 @@ $messages = array(
 'tog-minordefault' => '細部の編集に既定でチェックを入れる',
 'tog-previewontop' => 'プレビューを編集ボックスの前に配置',
 'tog-previewonfirst' => '編集開始時にもプレビューを表示',
-'tog-nocache' => 'ブラウザによるページのキャッシュを無効にする',
+'tog-nocache' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81«ã\82\88ã\82\8bã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8b',
 'tog-enotifwatchlistpages' => 'ウォッチリストにあるページが更新されたらメールを受け取る',
 'tog-enotifusertalkpages' => '自分のトークページが更新されたらメールを受け取る',
 'tog-enotifminoredits' => '細部の編集でもメールを受け取る',
@@ -412,11 +412,11 @@ $messages = array(
 
 'underline-always' => '常に付ける',
 'underline-never' => '常に付けない',
-'underline-default' => 'ブラウザの設定を使用',
+'underline-default' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\82\92使ç\94¨',
 
 # Font style option in Special:Preferences
 'editfont-style' => '編集エリアのフォントスタイル:',
-'editfont-default' => 'ブラウザの設定を使用',
+'editfont-default' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\82\92使ç\94¨',
 'editfont-monospace' => '等幅フォント',
 'editfont-sansserif' => 'Sans Serif フォント',
 'editfont-serif' => 'Serif フォント',
@@ -478,10 +478,10 @@ $messages = array(
 'category_header' => 'カテゴリ「$1」にあるページ',
 'subcategories' => '下位カテゴリ',
 'category-media-header' => 'カテゴリ「$1」にあるメディア',
-'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\81¨ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cã\81²ã\81¨ã\81¤もありません。''",
+'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\82\84ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cä½\95もありません。''",
 'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
 'hidden-category-category' => '隠しカテゴリ',
-'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}を表示しています。}}',
+'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の {{PLURAL:$1|$1 下位カテゴリ}}を表示しています。}}',
 'category-subcat-count-limited' => 'このカテゴリには以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}が含まれています。',
 'category-article-count' => '{{PLURAL:$2|このカテゴリには以下のページのみが含まれています。|このカテゴリには $2 ページが含まれており、そのうち以下の {{PLURAL:$1|$1 ページ}}を表示しています。}}',
 'category-article-count-limited' => '現在のカテゴリには以下の{{PLURAL:$1|ページ|&#32;$1 ページ}}が含まれています。',
@@ -553,7 +553,7 @@ $messages = array(
 'delete' => '削除',
 'deletethispage' => 'このページを削除',
 'undelete_short' => '{{PLURAL:$1|$1 版}}を復帰',
-'viewdeleted_short' => '削除された$1件の編集を閲覧',
+'viewdeleted_short' => '{{PLURAL:$1|削除された $1 編集}}を閲覧',
 'protect' => '保護',
 'protect_change' => '設定変更',
 'protectthispage' => 'このページを保護',
@@ -571,7 +571,7 @@ $messages = array(
 'toolbox' => 'ツールボックス',
 'userpage' => '利用者ページを表示',
 'projectpage' => 'プロジェクトのページを表示',
-'imagepage' => 'ファイルページを表示',
+'imagepage' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\83\9aã\83¼ã\82¸ã\82\92表示',
 'mediawikipage' => 'メッセージのページを表示',
 'templatepage' => 'テンプレートのページを表示',
 'viewhelppage' => 'ヘルプのページを表示',
@@ -580,13 +580,13 @@ $messages = array(
 'otherlanguages' => '他の言語',
 'redirectedfrom' => '($1から転送)',
 'redirectpagesub' => 'リダイレクトページ',
-'lastmodifiedat' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c\80çµ\82æ\9b´æ\96°ã\81¯ $1 $2 ã\81«è¡\8cã\82\8fã\82\8cã\81¾ã\81\97ã\81\9f。',
+'lastmodifiedat' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81\8cæ\9c\80å¾\8cã\81«æ\9b´æ\96°ã\81\95ã\82\8cã\81\9fã\81®ã\81¯ $1 $2 ã\81§ã\81\99。',
 'viewcount' => 'このページは {{PLURAL:$1|$1 回}}アクセスされました。',
 'protectedpage' => '保護されたページ',
 'jumpto' => '移動:',
 'jumptonavigation' => '案内',
 'jumptosearch' => '検索',
-'view-pool-error' => '申し訳ありません、現在サーバーに過大な負荷がかかっています。
+'view-pool-error' => 'ç\94³ã\81\97訳ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\81\8cã\80\81ç\8f¾å\9c¨ã\82µã\83¼ã\83\90ã\83¼ã\81«é\81\8e大ã\81ªè² è\8d·ã\81\8cã\81\8bã\81\8bã\81£ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82
 このページを閲覧しようとする利用者が多すぎます。
 しばらく時間を置いてから、もう一度このページにアクセスしてみてください。
 
@@ -625,8 +625,8 @@ $1',
 
 'ok' => 'OK',
 'retrievedfrom' => '「$1」から取得',
-'youhavenewmessages' => '$1が届いています($2)。',
-'newmessageslink' => '新しいメッセージ',
+'youhavenewmessages' => '$1があります($2)。',
+'newmessageslink' => '新メッセージ',
 'newmessagesdifflink' => '最終更新の差分',
 'youhavenewmessagesmulti' => '$1に新着メッセージがあります',
 'editsection' => '編集',
@@ -642,10 +642,10 @@ $1',
 'collapsible-expand' => '展開する',
 'thisisdeleted' => '$1を閲覧または復帰しますか?',
 'viewdeleted' => '$1を閲覧しますか?',
-'restorelink' => '削除された$1編集',
+'restorelink' => '{{PLURAL:$1|削除された $1 編集}}',
 'feedlinks' => 'フィード:',
-'feed-invalid' => 'フィード形式の指定が間違っています。',
-'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81«å¯¾å¿\9cã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'feed-invalid' => 'フィード形式の指定が正しくありません。',
+'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
 'site-rss-feed' => '$1のRSSフィード',
 'site-atom-feed' => '$1のAtomフィード',
 'page-rss-feed' => '「$1」のRSSフィード',
@@ -679,26 +679,26 @@ URL を間違って入力したか、正しくないリンクをたどった可
 # General errors
 'error' => 'エラー',
 'databaseerror' => 'データベース エラー',
-'dberrortext' => 'データベースクエリの構文エラーが発生しました。
+'dberrortext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82¯ã\82¨ã\83ªã\83¼ã\81®æ§\8bæ\96\87ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9fã\80\82
 ソフトウェアにバグがある可能性があります。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\81¯æ¬¡ã\81®é\80\9aã\82\8aã\81§ã\81\99
-関数「<tt>$2</tt>」内
-<blockquote><tt>$1</tt></blockquote>
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8d',
-'dberrortextcl' => 'データベース クエリの構文エラーが発生しました。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\81¯ä»¥ä¸\8bã\81®é\80\9aã\82\8aã\81§ã\81\99
-関数「$2」内から
-"$1"
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8d',
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\83¼
+<blockquote><tt>$1</tt></blockquote>
+(関数「<tt>$2</tt>」内)
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82',
+'dberrortextcl' => 'データベースクエリーの構文エラーが発生しました。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\83¼
+「$1」
+(関数「$2」内)。
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9f',
 'laggedslavemode' => "'''警告:'''ページに最新の編集が反映されていない可能性があります。",
 'readonly' => 'データベースがロックされています',
 'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
 'readonlytext' => 'データベースは現在、新しいページの追加や編集を受け付けない「ロック状態」になっています。これはおそらくデータベースの定期メンテナンスのためで、メンテナンス終了後は正常な状態に復帰します。
 
 データベースをロックした管理者による説明は以下の通りです:$1',
-'missing-article' => 'ページ「$1」$2の本文がデータベース内で見つかりませんでした。
+'missing-article' => '求められたページ「$1」$2 の本文がデータベース内で見つかりませんでした。
 
-ページの削除された版への古い差分表示や固定リンクをたどった時にこのようなことになります。
+通常、削除されたページの版への古い差分表示や固定リンクをたどった際に、このようなことが起きます。
 
 それ以外の操作でこのメッセージが表示された場合、ソフトウェアのバグである可能性があります。
 [[Special:ListUsers/sysop|管理者]]までそのURLを添えてお知らせください。',
@@ -712,25 +712,25 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'filecopyerror' => 'ファイル「$1」を「$2」へ複製できませんでした。',
 'filerenameerror' => 'ファイル名を「$1」から「$2」へ変更できませんでした。',
 'filedeleteerror' => 'ファイル「$1」を削除できませんでした。',
-'directorycreateerror' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\80\8c$1ã\80\8dã\82\92ä½\9cæ\88\90ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'directorycreateerror' => 'ディレクトリ「$1」を作成できませんでした。',
 'filenotfound' => 'ファイル「$1」が見つかりませんでした。',
-'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99',
+'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81«å¤±æ\95\97ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82',
 'unexpected' => '予期しない値「$1」=「$2」です。',
-'formerror' => 'エラー:フォームを送信できませんでした',
+'formerror' => 'エラー:フォームを送信できませんでした',
 'badarticleerror' => 'このページでは要求された操作を行えません。',
 'cannotdelete' => 'ページまたはファイル「$1」を削除できませんでした。
 他の人が既に削除した可能性があります。',
 'cannotdelete-title' => '「$1」というページを削除できません',
-'badtitle' => '不正なページ名',
+'badtitle' => '正しくないページ名',
 'badtitletext' => '要求されたページ名は、無効、空、正しくない言語間リンク/ウィキ間リンクのページ名、のいずれかです。
 ページ名に使用できない文字が1つ以上含まれている可能性があります。',
 'perfcached' => '以下のデータはキャッシュされており、最新ではない可能性があります。最大 $1 {{PLURAL:$1|件の結果}}がキャッシュされます。',
 'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery()に誤ったパラメーターが渡されました。<br />
+'wrong_wfQuery_params' => 'wfQuery()に正しくないパラメーターが渡されました<br />
 関数:$1<br />
-クエリ:$2',
+クエリ:$2',
 'viewsource' => 'ソースを表示',
 'viewsource-title' => '$1のソースを表示',
 'actionthrottled' => '操作が速度規制されました',
@@ -741,14 +741,14 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'viewyourtext' => "このページへの'''あなたの編集'''のソースの閲覧やコピーができます:",
 'protectedinterface' => 'このページはソフトウェアのインターフェイスに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。',
 'editinginterface' => "'''警告:'''ソフトウェアのインターフェイスの文章として使用しているページを編集しています。
-このページの変更は他の利用者のユーザー インターフェイスの外観に影響します。
-翻訳する場合、MediaWiki のローカライズ プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] の使用を検討してください。",
-'sqlhidden' => '(SQLクエリ非表示)',
+このページの変更は他の利用者のユーザーインターフェイスの外観に影響します。
+翻訳する場合、MediaWiki のローカライズプロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] の使用を検討してください。",
+'sqlhidden' => '(SQLクエリ非表示)',
 'cascadeprotected' => 'このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}で読み込まれているため、編集できないように保護されています:
 $2',
 'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
-'customcssprotected' => 'ã\81\93ã\81®CSSã\83\9aã\83¼ã\82¸ã\81¯ä»\96ã\81®å\88©ç\94¨è\80\85ã\81®å\80\8b人設å®\9aã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bため、あなたには編集する権限がありません。',
-'customjsprotected' => '他の利用者の個人設定を含むため、このJavaScriptのページを編集する権限がありません。',
+'customcssprotected' => 'ã\81\93ã\81®CSSã\83\9aã\83¼ã\82¸ã\81¯ä»\96ã\81®å\88©ç\94¨è\80\85ã\81®å\80\8b人設å®\9aã\82\92å\90«ã\82\80ため、あなたには編集する権限がありません。',
+'customjsprotected' => 'このJavaScriptページは他の利用者の個人設定を含むため、あなたには編集する権限がありません。',
 'ns-specialprotected' => '特別ページは編集できません。',
 'titleprotected' => "[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
 理由は「''$2''」です。",
@@ -765,7 +765,7 @@ $2',
 'logouttext' => "'''ログアウトしました。'''
 
 このまま匿名で{{SITENAME}}の使用を続行できます。同じまたは別の利用者として[[Special:UserLogin|もう一度ログイン]]することもできます。
-なお、ページによっては、ブラウザのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
\81ªã\81\8aã\80\81ã\83\9aã\83¼ã\82¸ã\81«ã\82\88ã\81£ã\81¦ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ã\82¯ã\83ªã\82¢ã\81\99ã\82\8bã\81¾ã\81§ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\81®ã\82\88ã\81\86ã\81«è¡¨ç¤ºã\81\95ã\82\8cç¶\9aã\81\91ã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
 'welcomecreation' => '== ようこそ、$1 さん! ==
 アカウントが作成されました。
 [[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
@@ -778,7 +778,7 @@ $2',
 'externaldberror' => '外部の認証データベースでエラーが発生したか、または外部アカウント情報の更新が許可されていません。',
 'login' => 'ログイン',
 'nav-login-createaccount' => 'ログインまたはアカウント作成',
-'loginprompt' => '{{SITENAME}}にログインするにはクッキーを有効にする必要があります。',
+'loginprompt' => '{{SITENAME}}にログインするにはCookieを有効にする必要があります。',
 'userlogin' => 'ログインまたはアカウント作成',
 'userloginnocreate' => 'ログイン',
 'logout' => 'ログアウト',
@@ -789,7 +789,7 @@ $2',
 'createaccount' => 'アカウント作成',
 'gotaccount' => '既にアカウントを持っている場合、$1。',
 'gotaccountlink' => 'ログインしてください',
-'userlogin-resetlink' => 'ログイン情報をå¿\98ã\82\8cã\81\9f',
+'userlogin-resetlink' => 'ログイン情報をã\81\8aå¿\98ã\82\8cã\81§ã\81\99ã\81\8bï¼\9f',
 'createaccountmail' => 'メールで送信',
 'createaccountreason' => '理由:',
 'badretype' => '入力したパスワードが一致しません。',
@@ -797,23 +797,23 @@ $2',
 他の名前を選んでください。',
 'loginerror' => 'ログインのエラー',
 'createaccounterror' => 'アカウントを作成できませんでした: $1',
-'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81\8cä½\9cæ\88\90ã\81\95ã\82\8cましたが、ログインしていません。
-{{SITENAME}}ではログインにクッキーを使用します。
-クッキーが無効になっているようです。
-クッキーを有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにクッキーを使用します。
-クッキーが無効になっているようです。
-クッキーを有効にして、もう一度試してください。',
+'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ましたが、ログインしていません。
+{{SITENAME}}ではログインにCookieを使用します。
+Cookieを無効にしているようです。
+Cookieを有効にしてから、新しい利用者名とパスワードでログインしてください。',
+'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
+Cookieを無効にしているようです。
+Cookieを有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
-クッキーが有効になっていることを確認して、このページを再読込してもう一度試してください。',
+Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'noname' => '利用者名を正しく指定していません。',
 'loginsuccesstitle' => 'ログイン成功',
 'loginsuccess' => "'''{{SITENAME}}に「$1」としてログインしました。'''",
 'nosuchuser' => '「$1」という名前の利用者は見当たりません。
 利用者名では大文字と小文字を区別します。
 綴りが正しいことを確認するか、[[Special:UserLogin/signup|新たにアカウントを作成]]してください。',
-'nosuchusershort' => 'ã\80\8c$1ã\80\8dã\81¨ã\81\84ã\81\86å\88©ç\94¨è\80\85ã\81¯è¦\8bå½\93ã\81\9fã\82\8aません。
-綴ã\82\8aã\81\8cæ­£ã\81\97ã\81\84ã\81\93ã\81¨ã\82\92å\86\8d度確認してください。',
+'nosuchusershort' => 'ã\80\8c$1ã\80\8dã\81¨ã\81\84ã\81\86å\90\8då\89\8dã\81®å\88©ç\94¨è\80\85ã\81¯å­\98å\9c¨ã\81\97ません。
+綴ã\82\8aã\82\92確認してください。',
 'nouserspecified' => '利用者名を指定してください。',
 'login-userblocked' => 'この利用者はブロックされています。ログインは拒否されます。',
 'wrongpassword' => 'パスワードが間違っています。 
@@ -821,7 +821,7 @@ $2',
 'wrongpasswordempty' => 'パスワードを空欄にはできません。
 もう一度やり直してください。',
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
-'password-name-match' => 'パスワードは利用者名と同じであってはいけません。',
+'password-name-match' => 'パスワードは利用者名とは異なる必要があります。',
 'password-login-forbidden' => 'この利用者名とパスワードの使用は禁止されています。',
 'mailmypassword' => '新しいパスワードをメールで送信',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
@@ -833,18 +833,18 @@ $2',
 この申請をしたのが他人の場合、あるいはパスワードを思い出してパスワード変更が不要になった場合は、
 このメッセージを無視して、引き続き以前のパスワードを使用し続けることができます。',
 'noemail' => '利用者「$1」のメールアドレスは登録されていません。',
-'noemailcreate' => '有効なメール アドレスを入力する必要があります',
+'noemailcreate' => '有効なメールアドレスを入力する必要があります',
 'passwordsent' => '新しいパスワードを「$1」に登録されたメールアドレスに送信しました。
 メールを受け取ったら、再度ログインしてください。',
-'blocked-mailpassword' => '使用しているIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
+'blocked-mailpassword' => 'ご使用中のIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
 'eauthentsent' => '指定されたメールアドレスにアドレス確認のためのメールを送信しました。
-その他のメールがこのアカウント宛に送信される前に、メールの指示に従って、このアカウントが本当にあなたのものか確認してください。',
+その他のメールがこのアカウント宛に送信される前に、メールの指示に従って、このアカウントが本当にあなたのものかご確認ください。',
 'throttled-mailpassword' => '新しいパスワードは過去 {{PLURAL:$1|$1 時間}}に送信済みです。
 悪用防止のため、パスワードの再発行は {{PLURAL:$1|$1 時間}}に 1 回のみです。',
 'mailerror' => 'メールの送信中にエラーが発生しました:$1',
 'acct_creation_throttle_hit' => 'あなたと同じ IP アドレスでこのウィキに訪れた人が、最近 24 時間で {{PLURAL:$1|$1 アカウント}}を作成しており、これはこの期間で作成が許可されている最大数です。
 そのため、現在この IP アドレスではアカウントをこれ以上作成できません。',
-'emailauthenticated' => 'メールアドレスは$2 $3に認証されています。',
+'emailauthenticated' => 'メールアドレスは$2 $3に認証済みです。',
 'emailnotauthenticated' => 'メールアドレスが認証されていません。
 認証されるまで、以下のいかなる機能でもメールは送信されません。',
 'noemailprefs' => 'これらの機能を有効にするためには個人設定でメールアドレスを登録する必要があります。',
@@ -856,21 +856,21 @@ $2',
 'accountcreated' => 'アカウントを作成しました',
 'accountcreatedtext' => '利用者アカウント「$1」を作成しました。',
 'createaccount-title' => '{{SITENAME}}のアカウント作成',
-'createaccount-text' => '誰か(おそらくあなた)が、{{SITENAME}} ($4) にあなたのメール アドレスのアカウントを作成しました。
+'createaccount-text' => '誰か(おそらくあなた)が、{{SITENAME}} ($4) にあなたのメールアドレスのアカウントを作成しました。
 アカウント名「$2」、パスワード「$3」です。
 今すぐログインしてパスワードを変更してください。
 
 このアカウントが何かの手違いで作成された場合は、このメッセージを無視してください。',
-'usernamehasherror' => 'å\88©ç\94¨è\80\85å\90\8dã\81«ã\81¯ç\95ªå\8f·è¨\98å\8f·ã\82\92å\90«ã\82\80ことができません',
+'usernamehasherror' => 'å\88©ç\94¨è\80\85å\90\8dã\81«ã\81¯ç\95ªå\8f·è¨\98å\8f·ã\82\92å\90«ã\82\81ã\82\8bことができません',
 'login-throttled' => 'ログインの失敗が制限回数を超えました。
 しばらく時間をおいてから再度お試しください。',
 'login-abort-generic' => 'ログインに失敗しました - 中止',
 'loginlanguagelabel' => '言語: $1',
-'suspicious-userlogout' => 'å£\8aã\82\8cã\81\9fã\83\96ã\83©ã\82¦ã\82¶ã\82\82ã\81\97ã\81\8fはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
+'suspicious-userlogout' => 'å£\8aã\82\8cã\81\9fã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81¾ã\81\9fはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
 
 # E-mail sending
-'php-mail-error-unknown' => 'PHPのmail()関数で不明なエラー',
-'user-mail-no-addy' => 'メール アドレスなしでメールを送信しようとしました。',
+'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
+'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
 
 # Change password dialog
 'resetpass' => 'パスワードの変更',
@@ -889,7 +889,7 @@ $2',
 'resetpass-submit-loggedin' => 'パスワードを変更',
 'resetpass-submit-cancel' => '中止',
 'resetpass-wrong-oldpass' => '仮パスワードまたは現在のパスワードが正しくありません。
-既にパスワード変更したか、新しい仮パスワードを依頼した可能性があります。',
+パスワードを既に変更した、または新しい仮パスワードを依頼した可能性があります。',
 'resetpass-temp-password' => '仮パスワード:',
 
 # Special:PasswordReset
@@ -897,11 +897,11 @@ $2',
 'passwordreset-text' => 'このフォームに入力すると、アカウント詳細のリマインダーをメールでお送りします。',
 'passwordreset-legend' => 'パスワードの再設定',
 'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
-'passwordreset-pretext' => '{{PLURAL:$1||以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\86ã\81¡ã\81® 1 つを入力してください}}',
+'passwordreset-pretext' => '{{PLURAL:$1||ä¸\8bè¨\98ã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\84ã\81\9aã\82\8cã\81\8b 1 つを入力してください}}',
 'passwordreset-username' => '利用者名:',
 'passwordreset-domain' => 'ドメイン:',
 'passwordreset-capture' => '送信されるメールの内容を表示しますか?',
-'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä¸\80æ\99\82ç\9a\84ã\81ªã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92å\90«ã\82\80ï¼\89ã\82\92ã\81\82ã\81ªã\81\9fã\82\82è¦\8bã\82\8bã\81\93ã\81¨ã\81\8cできます。',
+'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä»®ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92å\90«ã\82\80ï¼\89ã\82\92ã\81\82ã\81ªã\81\9fã\82\82é\96²è¦§できます。',
 'passwordreset-email' => 'メールアドレス:',
 'passwordreset-emailtitle' => '{{SITENAME}}上のアカウントの詳細',
 'passwordreset-emailtext-ip' => 'どなたか(おそらくあなた、IP アドレス $1)が {{SITENAME}} ($4) での
@@ -910,32 +910,32 @@ $2',
 
 $2
 
-{{PLURAL:$3|この|これらの}}一時的なパスワードは {{PLURAL:$5|$5 日間}}で有効期限が切れます。
-あなたはすぐにログインして新しいパスワードを変更する必要があります。
-これが他の誰かによる申請である場合、あるいはあなたが自の元のパスワードを
+{{PLURAL:$3|この仮パスワード|これらの仮パスワード}}は {{PLURAL:$5|$5 日間}}で有効期限が切れます。
+あなたはすぐにログインして新しいパスワードを設定する必要があります。
+これが他の誰かによる申請である場合、あるいはあなたが自の元のパスワードを
 覚えていてそれを変更したくない場合には、このメッセージを無視して以前のパスワードを
 使用し続けることができます。',
 'passwordreset-emailtext-user' => '{{SITENAME}} の利用者 $1 があなたの {{SITENAME}} ($4)
 におけるアカウントの詳細情報を送信するよう申請しました。
¸\8bè¨\98ã\81®å\88©ç\94¨è\80\85{{PLURAL:$3|ã\82¢ã\82«ã\82¦ã\83³ã\83\88}}がこのメールアドレスと紐付けられています。
»¥ä¸\8bã\81®å\88©ç\94¨è\80\85{{PLURAL:$3|ã\82¢ã\82«ã\82¦ã\83³ã\83\88\82¢ã\82«ã\82¦ã\83³ã\83\88群}}がこのメールアドレスと紐付けられています。
 
 $2
 
-{{PLURAL:$3|ã\81\93ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªパスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
\81\82ã\81ªã\81\9fã\81¯ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦æ\96°ã\81\97ã\81\84ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92ã\81\99ã\81\90ã\81«é\81¸ã\81必要があります。
-この申請が他の誰かによるものの場合、あるいはあなたが自の元のパスワードを
+{{PLURAL:$3|ã\81\93ã\81®ä»®ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä»®パスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
\81\82ã\81ªã\81\9fã\81¯ã\80\81ã\81\99ã\81\90ã\81«ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦æ\96°ã\81\97ã\81\84ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92設å®\9aã\81\99ã\82\8b必要があります。
+この申請が他の誰かによるものの場合、あるいはあなたが自の元のパスワードを
 覚えていて、変更したくない場合は、このメッセージを無視して
 以前のパスワードを使い続けることができます。',
 'passwordreset-emailelement' => '利用者名:$1
 仮パスワード:$2',
-'passwordreset-emailsent' => '確èª\8dã\81®ã\83¡ã\83¼ã\83«ã\81\8cé\80\81ä¿¡ã\81\95ã\82\8cました。',
-'passwordreset-emailsent-capture' => '確認のメールが送信されました。以下に表示します。',
-'passwordreset-emailerror-capture' => '生成された確認メールを以下に表示していますが、利用者への送信には失敗しました: $1',
+'passwordreset-emailsent' => '確èª\8dã\83¡ã\83¼ã\83«ã\82\92ã\81\8aé\80\81ã\82\8aã\81\97ました。',
+'passwordreset-emailsent-capture' => '下記の内容の、確認メールをお送りしました。',
+'passwordreset-emailerror-capture' => '下記の内容の確認メールを生成しましたが、利用者への送信に失敗しました:$1',
 
 # Special:ChangeEmail
 'changeemail' => 'メールアドレスの変更',
 'changeemail-header' => 'アカウントのメールアドレスを変更',
-'changeemail-text' => 'このフォームではメール アドレスを変更できます。この変更を確認するためにパスワードを入力する必要があります。',
+'changeemail-text' => 'このフォームではメールアドレスを変更できます。この変更を確認するためにパスワードを入力する必要があります。',
 'changeemail-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
 'changeemail-oldemail' => '現在のメールアドレス:',
 'changeemail-newemail' => '新しいメールアドレス:',
@@ -951,7 +951,7 @@ $2
 'link_sample' => 'リンクの名前',
 'link_tip' => '内部リンク',
 'extlink_sample' => 'http://www.example.com リンクの名前',
-'extlink_tip' => '外部リンク (http:// を忘れずにつけてください)',
+'extlink_tip' => '外部リンク(http:// を忘れずに付けてください)',
 'headline_sample' => '見出し文',
 'headline_tip' => '2段目の見出し',
 'nowiki_sample' => 'ここにマークアップを無効にするテキストを入力します',
@@ -960,7 +960,7 @@ $2
 'image_tip' => 'ファイルの埋め込み',
 'media_sample' => 'サンプル.ogg',
 'media_tip' => 'ファイルへのリンク',
-'sig_tip' => '時刻印きの署名',
+'sig_tip' => '時刻印きの署名',
 'hr_tip' => '水平線を挿入(利用は控えめに)',
 
 # Edit pages
@@ -974,12 +974,12 @@ $2
 'showlivepreview' => 'ライブプレビュー',
 'showdiff' => '差分を表示',
 'anoneditwarning' => "'''警告:'''ログインしていません。
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81使用中のIPアドレスがこのページの編集履歴に記録されます。",
-'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«ä½¿ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8c記録されます。''",
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\81\97ã\81\9få ´å\90\88ã\80\81ã\81\94使用中のIPアドレスがこのページの編集履歴に記録されます。",
+'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«記録されます。''",
 'missingsummary' => "'''注意:'''要約欄が空欄です。
 「{{int:savearticle}}」をもう一度クリックすると、編集は要約なしで保存されます。",
 'missingcommenttext' => '以下にコメントを入力してください。',
-'missingcommentheader' => "'''注意::'' このコメントに対する題名/見出しが空欄です。
+'missingcommentheader' => "'''注意:'''このコメントに対する題名/見出しが空欄です。
 「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
 'summary-preview' => '要約のプレビュー:',
 'subject-preview' => '題名/見出しのプレビュー:',
@@ -987,7 +987,7 @@ $2
 'blockedtext' => "'''この利用者名またはIPアドレスはブロックされています。'''
 
 ブロックは$1によって実施されました。
-ブロックの理由は「$2」です。
+ブロックの理由は ''$2'' です。
 
 * ブロック開始時期:$8
 * ブロック解除予定:$6
@@ -995,9 +995,9 @@ $2
 
 このブロックについて、$1もしくは他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]に問い合わせることができます。
 ただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。
\8f¾å\9c¨ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯$3ã\80\81ã\81\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯IDã\81¯&#x23;$5です。
-問い合わせを行う際には、上記の情報を必ず書いてください。",
-'autoblockedtext' => "用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
\8f¾å\9c¨ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯$3ã\80\81ã\81\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯IDã\81¯#$5です。
+お問い合わせの際には、上記の情報を必ず書いてください。",
+'autoblockedtext' => "ご使用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
 理由は次の通りです。
 
 :''$2''
@@ -1010,8 +1010,8 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 
 ただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、メール送信機能が使えないことに注意してください。
 
-現在利用中のIPアドレスは$3 、このブロックIDは&#x23;$5です。
-問い合わせを行う際には、この情報を必ず書いてください。",
+現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
+お問い合わせの際には、この情報を必ず書いてください。",
 'blockednoreason' => '理由が設定されていません',
 'whitelistedittext' => 'このページを編集するには$1する必要があります。',
 'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
@@ -1029,7 +1029,7 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 'newarticle' => '(新)',
 'newarticletext' => "まだ存在していないページへのリンクをたどりました。
 このページを新規に作成するには、下のボックスに内容を書き込んでください(詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。
-誤ってこのページにたどり着いた場合には、ブラウザの'''戻る'''ボタンで前のページに戻ってください。",
+誤ã\81£ã\81¦ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81\9fã\81©ã\82\8aç\9d\80ã\81\84ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®'''æ\88»ã\82\8b'''ã\83\9cã\82¿ã\83³ã\81§å\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\88»ã\81£ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
 'anontalkpagetext' => "----''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。
 匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。
 IP アドレスは複数の利用者で共有されている場合があります。
@@ -1038,13 +1038,13 @@ IP アドレスは複数の利用者で共有されている場合がありま
 他のページ内で[[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}}}} 関連記録を検索する]</span>ことができます。',
+'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索]]するか、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索]</span>することができます。',
 'userpage-userdoesnotexist' => '「$1」という利用者アカウントは登録されていません。
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ä½\9cæ\88\90/ç·¨é\9b\86ã\81\8cé\81©å\88\87ã\81\8bã\81©ã\81\86ã\81\8b確èª\8dã\81\97ã\81¦ください。',
\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ä½\9cæ\88\90/ç·¨é\9b\86ã\81\8cé\81©å\88\87ã\81\8bã\81\94確èª\8dください。',
 'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
 'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
-参考のために最新のブロック記録を以下に表示します',
-'clearyourcache' => "'''注意:''' 保存後、変更を確認するにはブラウザのキャッシュを消去する必要がある場合があります。
+参考のために最新のブロック記録を以下に表示します',
+'clearyourcache' => "'''注æ\84\8f:''' ä¿\9då­\98å¾\8cã\80\81å¤\89æ\9b´ã\82\92確èª\8dã\81\99ã\82\8bã\81«ã\81¯ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92æ¶\88å\8e»ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82
 * '''Firefox / Safari:''' ''Shift'' を押しながら ''再読み込み'' をクリックする、もしくは ''Ctrl-F5'' か ''Ctrl-R'' を押してください (Macでは ''&#x2318;-R'' )
 * '''Google Chrome:''' ''Ctrl-Shift-R'' を押してください (Macでは ''&#x2318;-Shift-R'' )
 * '''Internet Explorer:''' ''Ctrl'' を押しながら ''最新の情報に更新'' をクリックする、もしくは ''Ctrl-F5'' を押してください
@@ -1054,7 +1054,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'userjsyoucanpreview' => "'''ヒント:''' 「{{int:showpreview}}」ボタンを使うと、保存前に新しいスクリプトを試験できます。",
 'usercsspreview' => "'''利用者CSSをプレビューしています。'''
 '''まだ保存されていません!'''",
-'userjspreview' => "'''利用者JavaScriptを試験プレビューしています。'''
+'userjspreview' => "'''利用者JavaScriptを試験/プレビューしています。'''
 '''まだ保存されていません!'''",
 'sitecsspreview' => "'''ここでは、CSSをプレビューしているだけに過ぎません。'''
 '''まだ保存されていません!'''",
@@ -1077,10 +1077,10 @@ IP アドレスは複数の利用者で共有されている場合がありま
 
 '''この編集が問題ない場合はもう一度保存してください。'''
 それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
-'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
+'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
 ページ本文の破損を防ぐため、編集は反映されません。
 問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。",
-'edit_form_incomplete' => "'''一部の編集フォームの値がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
+'edit_form_incomplete' => "'''編集フォームの一部がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
 'editing' => '「$1」を編集中',
 'creating' => '「$1」を作成中',
 'editingsection' => '「$1」を編集中 (節単位)',
@@ -1093,7 +1093,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 上側のテキスト領域の内容'''だけ'''が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
 'yourtext' => '編集中の文章',
 'storedversion' => '保存された版',
-'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\82ã\81ªã\81\9fのブラウザーはUnicodeに未対応です。'''
+'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\94使ç\94¨ä¸­のブラウザーはUnicodeに未対応です。'''
 安全にページを編集する回避策を表示しています:編集ボックス内の非ASCII文字を16進数コードで表現しています。",
 'editingold' => "'''警告:このページの古い版を編集しています。'''
 保存すると、この版以降に追加されていた変更がすべて失われます。",
@@ -1108,23 +1108,23 @@ IP アドレスは複数の利用者で共有されている場合がありま
 '''著作権保護されている作品を、許諾なしに投稿してはいけません!'''",
 'longpageerror' => "'''エラー:投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。'''
 この編集は保存できません。",
-'readonlywarning' => "'''è­¦å\91\8aï¼\9aã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ã\81®ã\81\9fã\82\81ã\81«ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81、現在は編集を保存できません。'''
-必要であれば文章をカットアンドペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
+'readonlywarning' => "'''è­¦å\91\8aï¼\9aã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ã\81®ã\81\9fã\82\81ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\8aã\82\8a、現在は編集を保存できません。'''
+必要であれば文章をカット&amp;ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
 
 データベースをロックした管理者による説明は以下の通りです:$1",
 'protectedpagewarning' => "'''警告:このページは保護されているため、管理者権限を持つ利用者のみが編集できます。'''
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'semiprotectedpagewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが編集できます。
-参考として以下に一番最後の記録を表示します:",
-'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82«ã\82¹ã\82±ã\83¼ã\83\89ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b以ä¸\8bã\81®{{PLURAL:$1|ã\83\9aã\83¼ã\82¸|ã\83\9aã\83¼ã\82¸ç¾¤}}ã\81\8bã\82\89読ã\81¿è¾¼ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81管ç\90\86è\80\85権é\99\90ã\82\92æ\8c\81ã\81¤å\88©ç\94¨è\80\85ã\81\97ã\81\8bç·¨é\9b\86ã\81§ã\81\8dã\81ªã\81\84ã\82\88ã\81\86ã\81«ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
+参考として以下に最後の記録を表示します:",
+'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82«ã\82¹ã\82±ã\83¼ã\83\89ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b以ä¸\8bã\81®{{PLURAL:$1|ã\83\9aã\83¼ã\82¸|ã\83\9aã\83¼ã\82¸ç¾¤}}ã\81\8bã\82\89読ã\81¿è¾¼ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81管ç\90\86è\80\85権é\99\90ã\82\92æ\8c\81ã\81¤å\88©ç\94¨è\80\85ã\81®ã\81¿ã\81\8cç·¨é\9b\86ã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ï¼\9a",
 'titleprotectedwarning' => "'''警告:このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。'''
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'templatesused' => 'このページで使用されている{{PLURAL:$1|テンプレート}}:',
 'templatesusedpreview' => 'このプレビューで使用されている{{PLURAL:$1|テンプレート}}:',
 'templatesusedsection' => 'この節で使用されている{{PLURAL:$1|テンプレート}}:',
 'template-protected' => '(保護)',
 'template-semiprotected' => '(半保護)',
-'hiddencategories' => 'このページは$1隠しカテゴリに属しています:',
+'hiddencategories' => 'このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:',
 'edittools' => '<!-- ここに書いたテキストは編集及びアップロードのフォームの下に表示されます。 -->',
 'nocreatetitle' => 'ページの作成が制限されています',
 'nocreatetext' => '{{SITENAME}}ではページの新規作成を制限しています。
@@ -1137,7 +1137,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'permissionserrorstext-withaction' => 'あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:',
 'recreate-moveddeleted-warn' => "'''警告:以前削除されたページを再作成しようとしています。'''
 
-このページの編集を続行するのが適切かどうか確認してください。
+このページの編集を続行するのが適切かどうかご確認ください。
 参考のため以下にこのページの削除と移動の記録を表示します:",
 'moveddeleted-notice' => 'このページは削除されています。
 参考のため、このページの削除と移動の記録を以下に表示します。',
@@ -1155,13 +1155,13 @@ IP アドレスは複数の利用者で共有されている場合がありま
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''警告:'''このページでの高負荷なパーサー関数の呼び出し回数が多過ぎます。
 
-{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\81¯ $2 å\9b\9e}}以ä¸\8bにしてください({{PLURAL:$1|現在は $1 回}})。",
+{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\82\92 $2 å\9b\9e}}æ\9cªæº\80にしてください({{PLURAL:$1|現在は $1 回}})。",
 'expensive-parserfunction-category' => '高負荷な構文解析関数の呼び出しが多過ぎるページ',
 'post-expand-template-inclusion-warning' => "'''警告:'''テンプレートの読み込みサイズが大き過ぎます。
 いくつかのテンプレートは読み込まれません。",
 'post-expand-template-inclusion-category' => 'テンプレート読み込みサイズが制限値を越えているページ',
-'post-expand-template-argument-warning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81å±\95é\96\8bå¾\8cã\81®ã\82µã\82¤ã\82ºã\81\8c大ã\81\8dã\81\99ã\81\8eã\82\8bå\80¤ã\82\92渡ã\81\97ã\81\9fã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81\8c\81¤ä»¥ä¸\8aå\90«ã\81¾ã\82\8cã\81¦います。
\81\93ã\82\8cã\82\89ã\81®å\80¤ã\81¯ç\9c\81ç\95¥ã\81\95ã\82\8cました。",
+'post-expand-template-argument-warning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81å±\95é\96\8bå¾\8cã\81®ã\82µã\82¤ã\82ºã\81\8c大ã\81\8dã\81\99ã\81\8eã\82\8bå¼\95æ\95°ã\82\92渡ã\81\97ã\81\9fã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\82\92å°\91ã\81ªã\81\8fã\81¨ã\82\82\81¤å\90«ã\82\93ã\81§います。
\81\93ã\82\8cã\82\89ã\81®å¼\95æ\95°ã\82\92ç\9c\81ç\95¥ã\81\97ました。",
 'post-expand-template-argument-category' => '省略されたテンプレート引数を含むページ',
 'parser-template-loop-warning' => 'テンプレートのループが検出されました:[[$1]]',
 'parser-template-recursion-depth-warning' => 'テンプレートの再帰の深さ($1)が上限を超えました',
@@ -1175,7 +1175,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 
 # "Undo" feature
 'undo-success' => 'この編集を取り消せます。
-ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\99ã\81¹ã\81\8dã\81 ã\81¨ç¢ºèª\8dã\81\97ã\81¦ã\81\8bã\82\89ã\80\81変更を保存して取り消しを完了してください。',
+ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\81¦ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\97ã\81¦ã\81\84ã\81\84ã\81\8bæ¤\9c証ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\82\88ã\82\8dã\81\97ã\81\91ã\82\8cã\81°変更を保存して取り消しを完了してください。',
 'undo-failure' => '中間の版での編集と競合したため、取り消せませんでした。',
 'undo-norev' => '取り消そうとした編集が存在しないか削除済みのため取り消せませんでした。',
 'undo-summary' => '[[Special:Contributions/$2|$2]]([[User talk:$2|トーク]])による第$1版を取り消し',
@@ -1184,7 +1184,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'cantcreateaccounttitle' => 'アカウントを作成できません',
 'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
 
-$3が示した理由は ''$2'' です。",
+$3が示した理由:''$2''",
 
 # History pages
 'viewpagelogs' => 'このページに関する記録を閲覧',
@@ -1207,7 +1207,7 @@ $3が示した理由は ''$2'' です。",
 'history-show-deleted' => '削除済みのみ',
 'histfirst' => '最古',
 'histlast' => '最新',
-'historysize' => '$1バイト',
+'historysize' => '({{PLURAL:$1|$1バイト}})',
 'historyempty' => '(空)',
 
 # Revision feed
@@ -1227,35 +1227,35 @@ $3が示した理由は ''$2'' です。",
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-deleted-text-unhide' => "この版は'''削除されています'''。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この版を見る]ことができます。",
+このまま[$1 この版を閲覧]できます。",
 'rev-suppressed-text-unhide' => "この版は'''秘匿されています'''。
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この版を見る]ことができます。",
+このまま[$1 この版を閲覧]できます。",
 'rev-deleted-text-view' => "この版は'''削除されています'''。
-内容を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-suppressed-text-view' => "この版は'''秘匿されています'''。
-内容を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-deleted-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-no-diff' => "æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få·®å\88\86ã\81¯'''å\89\8aé\99¤ã\81\95ã\82\8cã\81\9f'''ç\89\88ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81é\96²è¦§ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82",
+'rev-suppressed-no-diff' => "指定された差分は'''削除された'''版を含んでいるため、閲覧できません。",
 'rev-deleted-unhide-diff' => "この差分の一方の版は'''削除されています'''。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を見る]ことができます。",
+このまま[$1 この差分を閲覧]できます。",
 'rev-suppressed-unhide-diff' => "この差分の一方の版は'''秘匿されています'''。
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を見る]ことができます。",
+このまま[$1 この差分を閲覧]できます。",
 'rev-deleted-diff-view' => "この差分の一方の版は'''削除されています'''。
-この差分を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-suppressed-diff-view' => "この差分の一方の版は'''秘匿されています'''。
-この差分を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-delundel' => '表示/非表示',
 'rev-showdeleted' => '表示',
 'revisiondelete' => '版の削除と復帰',
-'revdelete-nooldid-title' => '不正な対象版',
+'revdelete-nooldid-title' => '無効な対象版',
 'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を非表示しようとしています。',
-'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません',
+'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\82\92æ\8c\87å®\9aã\81\97ていません',
 'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
-'revdelete-nologid-title' => '不正な記録項目',
+'revdelete-nologid-title' => '無効な記録項目',
 'revdelete-nologid-text' => 'この操作の対象となる記録の項目を指定していないか、あるいは指定した項目が存在しません。',
 'revdelete-no-file' => '指定されたファイルは存在しません。',
 'revdelete-show-file-confirm' => '本当にファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を閲覧しますか?',
@@ -1295,15 +1295,16 @@ $1",
 'pagehist' => 'ページの履歴',
 'deletedhist' => '削除された履歴',
 'revdelete-hide-current' => '$1$2の項目の非表示に失敗しました:これは最新版であるため。
\9a ã\81\99ã\81\93ã\81¨はできません。',
-'revdelete-show-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®è¡¨ç¤ºã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81«è¨­å®\9aã\81\95ã\82\8cています。
\9d\9e表示ã\81«はできません。',
+'revdelete-show-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®è¡¨ç¤ºã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81«ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81®å\8d°ã\81\8cä»\98ã\81\84ています。
 アクセス権限がありません。',
-'revdelete-modify-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®ä¿®æ­£ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81«è¨­å®\9aã\81\95ã\82\8cています。
+'revdelete-modify-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®ä¿®æ­£ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81«ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81®å\8d°ã\81\8cä»\98ã\81\84ています。
 アクセス権限がありません。',
 'revdelete-modify-missing' => 'ID$1の項目の変更に失敗しました:データベースに見当たりません!',
 'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
-'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の利用者が変更したようです。',
-'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿することはできません。',
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の誰かが変更したようです。
+記録を確認してください。',
+'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
 'revdelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
 ** 名誉毀損のおそれ
@@ -1320,15 +1321,15 @@ $1",
 
 # History merging
 'mergehistory' => 'ページ履歴の統合',
-'mergehistory-header' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81§ã\81¯ã\80\81ã\81\82ã\82\8bå\85\83ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\82\92æ\96°ã\81\97ã\81\84ã\83\9aã\83¼ã\82¸ã\81«çµ±å\90\88ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82
+'mergehistory-header' => 'このページでは、ある元ページの履歴を新しいページに統合できます。
 この変更を行ってもページの履歴の連続性が確実に保たれるようにしてください。',
 'mergehistory-box' => '2ページの過去の版を統合する:',
 'mergehistory-from' => '統合元となるページ:',
 'mergehistory-into' => '統合先のページ:',
 'mergehistory-list' => '統合できる編集履歴',
 'mergehistory-merge' => '以下の [[:$1]] の履歴を [[:$2]] に統合できます。
\89¹å®\9aã\81®æ\99\82é\96\93以前に作成された版のみを統合するには、ラジオボタンで版を選択してください。
-案内リンクを使用すると、選択が初期化されるので注意してください。',
\89¹å®\9aã\81®æ\97¥æ\99\82以前に作成された版のみを統合するには、ラジオボタンで版を選択してください。
+案内リンクを使用すると選択が初期化されるためご注意ください。',
 'mergehistory-go' => '統合できる版を表示',
 'mergehistory-submit' => '版を統合',
 'mergehistory-empty' => '統合できる版がありません。',
@@ -1340,7 +1341,7 @@ $1",
 'mergehistory-invalid-destination' => '統合先のページは有効な名前でなければなりません。',
 'mergehistory-autocomment' => '[[:$1]]を[[:$2]]に統合',
 'mergehistory-comment' => '[[:$1]]を[[:$2]]に統合:$3',
-'mergehistory-same-destination' => 'çµ±å\90\88å\85\83ã\81¨çµ±å\90\88å\85\88ã\81«å\90\8cã\81\98ã\83\9aã\83¼ã\82¸ã\82\92設å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'mergehistory-same-destination' => 'çµ±å\90\88å\85\83ã\81¨çµ±å\90\88å\85\88ã\81®ã\83\9aã\83¼ã\82¸ã\82\92å\90\8cã\81\98ã\81«ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
 'mergehistory-reason' => '理由:',
 
 # Merge log
@@ -1351,15 +1352,15 @@ $1",
 
 # Diffs
 'history-title' => '「$1」の変更履歴',
-'difference-title' => '「$1」の版間の差分',
-'difference-title-multipage' => 'ページ「$1」と「$2」間の差分',
+'difference-title' => '$1:版間の差分',
+'difference-title-multipage' => '$1 と $2:ページ間の差分',
 'difference-multipage' => '(ページ間の差分)',
 'lineno' => '$1行:',
 'compareselectedversions' => '選択した版同士を比較',
-'showhideselectedversions' => '選択した版を表示もしくは非表示',
+'showhideselectedversions' => '選択した版を表示/非表示',
 'editundo' => '取り消し',
-'diff-multi' => '($2人の利用者による、間の$1版が非表示)',
-'diff-multi-manyusers' => '($2人以上の利用者による、間の$1版が非表示)',
+'diff-multi' => '({{PLURAL:$2|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-manyusers' => '({{PLURAL:$2|$2人を超える利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
 
 # Search results
 'searchresults' => '検索結果',
@@ -1374,13 +1375,13 @@ $1",
 'notextmatches' => 'どのページ本文とも一致しませんでした',
 'prevn' => '前の$1件',
 'nextn' => '次の$1件',
-'prevn-title' => '前の$1結果',
-'nextn-title' => '次の$1結果',
-'shown-title' => 'ページあたり$1件の結果を表示',
+'prevn-title' => '前の{{PLURAL:$1|$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|$1]]」を新規作成する'''",
+'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
 'searchhelp-url' => 'Help:目次',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
 'searchprofile-articles' => '本文ページ',
@@ -1393,8 +1394,8 @@ $1",
 'searchprofile-images-tooltip' => 'ファイルを検索',
 'searchprofile-everything-tooltip' => '全本文ページ(トークページ含む)を検索',
 'searchprofile-advanced-tooltip' => '特定の名前空間内を検索',
-'search-result-size' => '$1($2単語)',
-'search-result-category-size' => '$1件($2下位カテゴリ、$3ファイル)',
+'search-result-size' => '$1({{PLURAL:$2|$2単語}})',
+'search-result-category-size' => '{{PLURAL:$1|$1件}}({{PLURAL:$2|$2下位カテゴリ}}、{{PLURAL:$3|$3ファイル}})',
 'search-result-score' => '関連度:$1%',
 'search-redirect' => '($1からのリダイレクト)',
 'search-section' => '($1の節)',
@@ -1405,14 +1406,14 @@ $1",
 'search-mwsuggest-enabled' => '検索候補を表示',
 'search-mwsuggest-disabled' => '検索候補を表示しない',
 'search-relatedarticle' => '関連',
-'mwsuggest-disable' => 'AJAXによる検索候補の提示を無効にする',
+'mwsuggest-disable' => 'Ajaxによる検索候補の提示を無効にする',
 'searcheverything-enable' => 'すべての名前空間を検索',
 'searchrelated' => '関連',
 'searchall' => 'すべて',
-'showingresults' => "'''$2'''件目からの{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
-'showingresultsnum' => "'''$2'''件目からの{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
+'showingresults' => "'''$2'''件目以降の{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
+'showingresultsnum' => "'''$2'''件目以降の{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
 'showingresultsheader' => "「'''$4'''」に対する{{PLURAL:$5|'''$3'''件中の'''$1'''件の結果|'''$3'''件中の'''$1'''件目から'''$2'''件目の結果}}",
-'nonefound' => "'''注æ\84\8f'''ï¼\9aæ\97¢å®\9aã\81§ã\81¯ä¸\80é\83¨ã\81®å\90\8då\89\8d空é\96\93ã\81\97ã\81\8bæ¤\9cç´¢ã\81\95ã\82\8cã\81¾ã\81\9bã\82\93
+'nonefound' => "'''注æ\84\8f'''ï¼\9aæ\97¢å®\9aã\81§ã\81¯ä¸\80é\83¨ã\81®å\90\8då\89\8d空é\96\93ã\81®ã\81¿ã\82\92æ¤\9cç´¢ã\81\97ã\81¾ã\81\99
 ''all:''を前に付けると、すべて(トークページやテンプレートなどを含む)を対象にできます。検索する名前空間を前に付けることもできます。",
 'search-nonefound' => '問い合わせに合致する検索結果はありませんでした。',
 'powersearch' => '高度な検索',
@@ -1450,6 +1451,7 @@ $1",
 'prefs-beta' => 'ベータ版機能',
 'prefs-datetime' => '日付と時刻',
 'prefs-labs' => 'ラボの機能',
+'prefs-user-pages' => '利用者ページ',
 'prefs-personal' => '利用者情報',
 'prefs-rc' => '最近の更新',
 'prefs-watchlist' => 'ウォッチリスト',
@@ -1473,7 +1475,7 @@ $1",
 'columns' => '列数:',
 'searchresultshead' => '検索',
 'resultsperpage' => '1ページあたりの表示件数:',
-'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値(バイト):',
+'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値 (バイト):',
 'stub-threshold-disabled' => '無効',
 'recentchangesdays' => '最近の更新に表示する日数:',
 'recentchangesdays-max' => '(最大 $1 {{PLURAL:$1|日間}})',
@@ -1485,11 +1487,11 @@ $1",
 'savedprefs' => '個人設定を保存しました。',
 'timezonelegend' => 'タイムゾーン:',
 'localtime' => 'ローカルの時刻:',
-'timezoneuseserverdefault' => '既定を使用 ($1)',
+'timezoneuseserverdefault' => 'ウィキの既定を使用 ($1)',
 'timezoneuseoffset' => 'その他(時差を指定)',
 'timezoneoffset' => '時差¹:',
 'servertime' => 'サーバーの時刻:',
-'guesstimezone' => 'ブラウザの設定から入力',
+'guesstimezone' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\81\8bã\82\89å\85¥å\8a\9b',
 'timezoneregion-africa' => 'アフリカ',
 'timezoneregion-america' => 'アメリカ',
 'timezoneregion-antarctica' => '南極',
@@ -1521,12 +1523,13 @@ $1",
 'yourrealname' => '本名:',
 'yourlanguage' => '使用言語:',
 'yourvariant' => 'コンテンツ言語変種:',
-'prefs-help-variant' => 'ã\81\82ã\81ªã\81\9fã\81\8cã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ã\81\84ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95',
+'prefs-help-variant' => 'ã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ç\94¨ã\81\97ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95ã\80\82',
 'yournick' => '新しい署名:',
 'prefs-help-signature' => 'トークページ上での発言には「<nowiki>~~~~</nowiki>」と付けて署名すべきです。これは自分の署名に時刻印を付けたものに変換されます。',
 'badsig' => '署名用のソースが正しくありません。
 HTMLタグを見直してください。',
-'badsiglength' => '署名が長すぎます。$1文字以下でなければなりません。',
+'badsiglength' => '署名が長すぎます。
+$1 {{PLURAL:$1|文字}}以下である必要があります。',
 'yourgender' => '性別:',
 'gender-unknown' => '未指定',
 'gender-male' => '男',
@@ -1537,8 +1540,8 @@ HTMLタグを見直してください。',
 'prefs-help-realname' => '本名は省略できます。
 入力すると、あなたの著作物の帰属表記に本名を使用します。',
 'prefs-help-email' => 'メールアドレスは省略できますが、パスワードを忘れた際にパスワードをリセットするのに必要です。',
-'prefs-help-email-others' => '利用者ページやトークページ上のリンクを通じて、他の利用者があなたにメールで連絡をれるようにすることもできます。
-他の利用者が連絡をとろうとするとき、あなたのメールアドレスは開示されません。',
+'prefs-help-email-others' => '利用者ページやトークページ上のリンクを通じて、他の利用者があなたにメールで連絡をれるようにすることもできます。
+他の利用者が連絡を取る際にあなたのメールアドレスが開示されることはありません。',
 'prefs-help-email-required' => 'メールアドレスが必要です。',
 'prefs-info' => '基本情報',
 'prefs-i18n' => '国際化',
@@ -1556,7 +1559,7 @@ HTMLタグを見直してください。',
 'prefs-diffs' => '差分',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'メール アドレスは有効のようです',
+'email-address-validity-valid' => 'メールアドレスは有効のようです',
 'email-address-validity-invalid' => '有効なメールアドレスを入力',
 
 # User rights
@@ -1619,7 +1622,7 @@ HTMLタグを見直してください。',
 'right-suppressredirect' => 'ページの移動の際に元のページ名からのリダイレクトを作成しない',
 'right-upload' => 'ファイルをアップロード',
 'right-reupload' => '既存のファイルに上書き',
-'right-reupload-own' => '自分がアップロードした既存のファイルに上書き',
+'right-reupload-own' => '自分自身がアップロードした既存のファイルに上書き',
 'right-reupload-shared' => '共有メディアリポジトリ上のファイルのローカルでの上書き',
 'right-upload_by_url' => 'URLからファイルをアップロード',
 'right-purge' => '確認を省略してサイトのキャッシュを破棄',
@@ -1645,7 +1648,7 @@ HTMLタグを見直してください。',
 'right-unblockself' => '自分自身に対するブロックを解除',
 'right-protect' => '保護レベルを変更し、保護されたページを編集',
 'right-editprotected' => '保護ページ(カスケード保護を除く)を編集',
-'right-editinterface' => 'ユーザー インターフェイスを編集',
+'right-editinterface' => 'ユーザーインターフェイスを編集',
 'right-editusercssjs' => '他の利用者のCSSとJavaScriptファイルを編集',
 'right-editusercss' => '他の利用者のCSSファイルを編集',
 'right-edituserjs' => '他の利用者のJavaScriptファイルを編集',
@@ -1702,7 +1705,7 @@ HTMLタグを見直してください。',
 'action-import' => 'このページを他のウィキから取り込む',
 'action-importupload' => 'ファイルアップロードでこのページに取り込む',
 'action-patrol' => '他の利用者の編集を巡回済みにする',
-'action-autopatrol' => '自の編集を巡回済みにする',
+'action-autopatrol' => '自の編集を巡回済みにする',
 'action-unwatchedpages' => 'ウォッチされていないページ一覧を表示',
 'action-mergehistory' => 'このページの履歴を統合',
 'action-userrights' => '全利用者権限の変更',
@@ -1711,11 +1714,11 @@ HTMLタグを見直してください。',
 'action-sendemail' => 'メールを送信',
 
 # Recent changes
-'nchanges' => '$1回の変更',
+'nchanges' => '$1{{PLURAL:$1|回の変更}}',
 'recentchanges' => '最近の更新',
 'recentchanges-legend' => '最近の更新のオプション',
-'recentchanges-summary' => 'このページで最近の更新を確認できます。',
-'recentchanges-feed-description' => 'ã\81\93ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\81§ã\81\9dã\81®ã\82¦ã\82£ã\82­ã\81¸ã\81®æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\82\92追跡。',
+'recentchanges-summary' => 'このページでは、このウィキでの最近の更新を確認できます。',
+'recentchanges-feed-description' => 'ã\81\93ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\81§ã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\82\92追跡ã\81§ã\81\8dã\81¾ã\81\99。',
 'recentchanges-label-newpage' => 'この編集で新しいページが作成されました',
 'recentchanges-label-minor' => 'これは細部の編集です',
 'recentchanges-label-bot' => 'この編集はボットによって行われました',
@@ -1729,7 +1732,7 @@ HTMLタグを見直してください。',
 'rcshowhideanons' => '匿名利用者を$1',
 'rcshowhidepatr' => '巡回された編集を$1',
 'rcshowhidemine' => '自分の編集を$1',
-'rclinks' => '最近$2日間の$1件分を表示<br />$3',
+'rclinks' => '最近$2日間の更新$1件以内を表示<br />$3',
 'diff' => '差分',
 'hist' => '履歴',
 'hide' => '非表示',
@@ -1738,10 +1741,10 @@ HTMLタグを見直してください。',
 'newpageletter' => '新',
 'boteditletter' => 'ボ',
 'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 人の利用者がウォッチしています]',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]',
 'rc_categories' => 'カテゴリを限定(「|」で区切る)',
 'rc_categories_any' => 'すべて',
-'rc-change-size-new' => '変更後は$1バイト',
+'rc-change-size-new' => '変更後は $1 {{PLURAL:$1|バイト}}',
 'newsectionsummary' => '/* $1 */ 新しい節',
 'rc-enhanced-expand' => '詳細を表示(JavaScript が必要)',
 'rc-enhanced-hide' => '詳細を非表示',
@@ -1754,7 +1757,7 @@ HTMLタグを見直してください。',
 'recentchangeslinked-title' => '「$1」と関連する変更',
 'recentchangeslinked-noresult' => '指定期間中に指定ページのリンク先に変更はありませんでした。',
 'recentchangeslinked-summary' => "これは、指定したページからリンクされている(または指定したカテゴリに含まれている)ページへの最近の変更の一覧です。
-[[Special:Watchlist|è\87ªå\88\86ã\81®ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯'''太å­\97'''ã\81§è¡¨ç¤ºã\81\95ã\82\8cã\81¦ã\81\84ます。",
+[[Special:Watchlist|è\87ªå\88\86ã\81®ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«ã\81\82ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯'''太å­\97'''ã\81«ã\81ªã\82\8aます。",
 'recentchangeslinked-page' => 'ページ名:',
 'recentchangeslinked-to' => '代わりに、指定したページへのリンク元での変更を表示',
 
@@ -1765,8 +1768,8 @@ HTMLタグを見直してください。',
 'upload-tryagain' => '修正したファイル解説を投稿',
 'uploadnologin' => 'ログインしていません',
 'uploadnologintext' => 'ファイルをアップロードするには[[Special:UserLogin|ログイン]]する必要があります。',
-'upload_directory_missing' => 'アップロード先ディレクトリー($1)が見つからず、ウェブサーバーによって作成できませんでした。',
-'upload_directory_read_only' => 'アップロード先ディレクトリー($1)に、ウェブサーバーが書き込めません。',
+'upload_directory_missing' => 'アップロード先ディレクトリ($1)が見つからないため、ウェブサーバーによる作成ができませんでした。',
+'upload_directory_read_only' => 'アップロード先ディレクトリ($1)には、ウェブサーバーが書き込めません。',
 'uploaderror' => 'アップロードのエラー',
 'upload-recreate-warning' => "'''警告:その名前のファイルは、以前に削除または移動されています。'''
 
@@ -1792,9 +1795,9 @@ HTMLタグを見直してください。',
 'filestatus' => '著作権情報:',
 'filesource' => '出典:',
 'uploadedfiles' => 'アップロードされたファイル',
-'ignorewarning' => 'è­¦å\91\8aã\82\92ç\84¡è¦\96ã\81\97ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86',
+'ignorewarning' => 'è­¦å\91\8aã\82\92ç\84¡è¦\96ã\81\97ã\81¦ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98',
 'ignorewarnings' => '警告を無視',
-'minlength1' => 'ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81¯1æ\96\87å­\97以ä¸\8aã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾す。',
+'minlength1' => 'ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81«ã\81¯å°\91ã\81ªã\81\8fã\81¨ã\82\82\96\87å­\97å¿\85è¦\81ã\81§す。',
 'illegalfilename' => 'ファイル名「$1」にページ名として許可されていない文字が含まれています。
 ファイル名を変更してからもう一度アップロードしてください。',
 'filename-toolong' => '240バイトを超えるファイル名は禁止されています。',
@@ -1817,15 +1820,15 @@ HTMLタグを見直してください。',
 'overwrite' => '既存のファイルへの上書きは許可されていません。',
 'unknown-error' => '不明なエラーが発生しました。',
 'tmp-create-error' => '一時ファイルを作成できませんでした。',
-'tmp-write-error' => '一時ファイルへの書き込みエラー',
-'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\81¯$1ã\83\90ã\82¤ã\83\88ã\82\88ã\82\8a大ã\81\8dã\81\8fã\81\97ã\81ªã\81\84ã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cã\81¦ã\81\84ます。
-このファイルは$2バイトです。',
+'tmp-write-error' => '一時ファイルへの書き込みエラーです。',
+'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\82\92 $1 ã\83\90ã\82¤ã\83\88以ä¸\8bã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。
+このファイルは $2 バイトです。',
 'largefileserver' => 'このファイルは、サーバー設定で許されている最大サイズより大きいです。',
 'emptyfile' => 'アップロードしたファイルは内容が空のようです。
 ファイル名の指定が間違っている可能性があります。
 本当にこのファイルをアップロードしたいのか、確認してください。',
 'windows-nonascii-filename' => 'このwikiではファイル名に特殊文字を使用できません。',
-'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\82\8bã\81¹ã\81\8dã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cã\82\82てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
+'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\81¦ã\81\84ã\81\84ã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cæ\8c\81てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
 [[$1|thumb]]",
 'filepageexists' => "このファイルのための説明ページは既に'''<tt>[[:$1]]</tt>'''に作成されていますが、現在、ファイルが存在していません。
 入力した概要は説明ページに反映されません。
@@ -1854,7 +1857,7 @@ HTMLタグを見直してください。',
 'uploadwarning' => 'アップロード警告',
 'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
 'savefile' => 'ファイルを保存',
-'uploadedimage' => '「[[$1]]」をアップロードしました',
+'uploadedimage' => '「[[$1]]」をアップロードしました',
 'overwroteimage' => '「[[$1]]」の新しい版をアップロードしました',
 'uploaddisabled' => 'アップロード機能は無効になっています。',
 'copyuploaddisabled' => 'URLからのアップロードは無効になっています。',
@@ -1862,11 +1865,11 @@ HTMLタグを見直してください。',
 'uploaddisabledtext' => 'ファイルのアップロードは、無効になっています。',
 'php-uploaddisabledtext' => 'ファイルのアップロードがPHPで無効化されています。
 file_uploadsの設定を確認してください。',
-'uploadscripted' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81ã\82¦ã\82§ã\83\96ã\83\96ã\83©ã\82¦ã\82¶ã\81\8c誤ã\81£ã\81¦è§£é\87\88ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86ã\81\8aã\81\9dã\82\8cã\81®あるHTMLまたはスクリプトコードを含んでいます。',
+'uploadscripted' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81ã\82¦ã\82§ã\83\96ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81\8c誤ã\81£ã\81¦è§£é\87\88ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86ã\81\8aã\81\9dã\82\8cã\81\8cあるHTMLまたはスクリプトコードを含んでいます。',
 'uploadvirus' => 'このファイルにはウイルスが含まれています!
 詳細:$1',
 'uploadjava' => 'このファイルは、Javaの.classファイルを含むZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®å\88¶é\99\90ã\82\92å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\81\8aã\81\9dã\82\8cã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\80\81Javaã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\99ã\82\8bã\81\93ã\81¨は許可されていません。',
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®å\88¶é\99\90ã\82\92å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\81\8aã\81\9dã\82\8cã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\80\81Javaã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89は許可されていません。',
 'upload-source' => 'アップロード元ファイル',
 'sourcefilename' => 'アップロード元のファイル名:',
 'sourceurl' => 'アップロード元のURL:',
@@ -1880,9 +1883,9 @@ file_uploadsの設定を確認してください。',
 'filename-bad-prefix' => "アップロードしようとしているファイルの名前が'''「$1」'''から始まっていますが、これはデジタルカメラによって自動的に付与されるような具体性を欠いた名前です。
 ファイルの内容をより具体的に説明する名前を使用してください。",
 'filename-prefix-blacklist' => ' #<!-- この行はそのままにしておいてください --> <pre>
-# 構文は以下:
+# 構文は以下の通り:
 #   * "#" 記号から行末まではすべてがコメント
-#   * ç©ºã\81§ã\81ªã\81\84ã\81\99ã\81¹ã\81¦ã\81®è¡\8cã\81¯デジタルカメラによって自動的に付けられる典型的なファイル名の接頭辞
+#   * ç©ºã\81§ã\81¯ã\81ªã\81\84è¡\8cã\81¯ã\81\99ã\81¹ã\81¦デジタルカメラによって自動的に付けられる典型的なファイル名の接頭辞
 CIMG # カシオ
 DSC_ # ニコン
 DSCF # 富士フイルム
@@ -1894,7 +1897,7 @@ MGP # ペンタックス
 PICT # その他
  #</pre> <!-- この行はそのままにしておいてください -->',
 'upload-success-subj' => 'アップロード成功',
-'upload-success-msg' => '[$2] ã\81\8bã\82\89ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81«æ\88\90å\8a\9fしました。こちらで利用できます:[[:{{ns:file}}:$1]]',
+'upload-success-msg' => '[$2] ã\81\8bã\82\89ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89しました。こちらで利用できます:[[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'アップロードで発生した問題',
 'upload-failure-msg' => '[$2]からのアップロード中に問題が発生しました:
 
@@ -1902,7 +1905,7 @@ $1',
 'upload-warning-subj' => 'アップロードの警告',
 'upload-warning-msg' => '[$2] からアップロードしようとしたデータに問題があります。 [[Special:Upload/stash/$1|アップロードのフォーム]]に戻って問題を修正してください。',
 
-'upload-proto-error' => '不正なプロトコル',
+'upload-proto-error' => '無効なプロトコル',
 'upload-proto-error-text' => '遠隔アップロード機能では、URLが<code>http://</code>か<code>ftp://</code>で始まっている必要があります。',
 'upload-file-error' => '内部エラー',
 'upload-file-error-text' => '内部エラーのため、サーバー上の一時ファイル作成に失敗しました。
@@ -1922,7 +1925,7 @@ $1',
 'backend-fail-notexists' => 'ファイル $1 は存在しません。',
 'backend-fail-hashes' => 'ファイルの比較用のハッシュを取得できませんでした。',
 'backend-fail-notsame' => 'ファイル名 $1 は既に他のファイルが使用しています。',
-'backend-fail-invalidpath' => '$1 ã\81¯ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\91ã\82¹ã\81«ä½¿ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'backend-fail-invalidpath' => '$1 はストレージパスに使用できません。',
 'backend-fail-delete' => 'ファイル $1 を削除できませんでした。',
 'backend-fail-alreadyexists' => 'ファイル $1 は既に存在します。',
 'backend-fail-store' => 'ファイル $1 を $2 に格納できませんでした。',
@@ -1933,11 +1936,11 @@ $1',
 'backend-fail-closetemp' => '一時ファイルを閉じることができませんでした。',
 'backend-fail-read' => 'ファイル $1 を読み込めませんでした。',
 'backend-fail-create' => 'ファイル $1 に書き込めませんでした。',
-'backend-fail-maxsize' => '{{PLURAL:$2|$2 バイト}}よりも大きいため、ファイル「$1」に書き込めませんでした。',
-'backend-fail-readonly' => 'ストレージバックエンド「$1」は現在読み取り専用です。理由:「$2」',
-'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81«ã\81\8aã\81\84ã\81¦ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
-'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\80\8c$1ã\80\8d',
-'backend-fail-internal' => 'ストレージバックエンド「$1」で原因不明のエラーが発生しました。',
+'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル $1 に書き込めませんでした。',
+'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
+'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81§ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99',
+'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\80\8c$1ã\80\8dã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'backend-fail-internal' => 'ストレージバックエンド「$1」内で不明なエラーが発生しました。',
 'backend-fail-contenttype' => '「$1」に保存するコンテンツの種類が判断できませんでした。',
 'backend-fail-batchsize' => 'ストレージバックエンドは $1 件のファイル{{PLURAL:$1|操作}}のバッチを与えられました; 上限は $2 件の{{PLURAL:$2|操作}}です。',
 
@@ -1946,9 +1949,9 @@ $1',
 'filejournal-fail-dbquery' => 'ストレージバックエンド「$1」のジャーナルデータベースを更新できません。',
 
 # Lock manager
-'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\82¢ã\83³ã\83­ã\83\83ã\82¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\83­ã\83\83ã\82¯è§£é\99¤ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
 'lockmanager-fail-closelock' => '「$1」用のロックファイルを閉じることができませんでした。',
-'lockmanager-fail-deletelock' => 'ã\80\8c$1ã\80\8dç\94¨ã\81®ã\83­ã\83\83ã\82¯ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'lockmanager-fail-deletelock' => '「$1」用のロックファイルを削除できませんでした。',
 'lockmanager-fail-acquirelock' => '「$1」用のロックを取得できませんでした。',
 'lockmanager-fail-openlock' => '「$1」用のロックファイルを開くことができませんでした。',
 'lockmanager-fail-releaselock' => '「$1」用のロックを解放できませんでした。',
@@ -1960,38 +1963,38 @@ $1',
 'zip-file-open-error' => 'ZIPのチェックを行った際にエラーが検出されました。',
 'zip-wrong-format' => '指定されたファイルはZIPファイルではありませんでした。',
 'zip-bad' => 'このファイルは破損しているか解読不能のZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81«æ¤\9cæ\9f»ã\81\99ã\82\8bã\81\93ã\81¨ができません。',
-'zip-unsupported' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯MediaWikiã\81§å\88©ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\84ZIPå½¢å¼\8fを使用したZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81«æ¤\9cæ\9f»ã\81\99ã\82\8bã\81\93ã\81¨ができません。',
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81ªæ¤\9cæ\9f»ができません。',
+'zip-unsupported' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯MediaWikiã\81\8cæ\9cªå¯¾å¿\9cã\81®ZIPæ©\9fè\83½を使用したZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81ªæ¤\9cæ\9f»ができません。',
 
 # Special:UploadStash
 'uploadstash' => '未公開アップロード',
 'uploadstash-summary' => 'このページでは、アップロードされた、もしくはアップロード中の、ウィキ上でまだ公開されていないファイルを表示します。これらのファイルは、アップロードした利用者以外閲覧できません。',
 'uploadstash-clear' => '未公開ファイルを消去',
 'uploadstash-nofiles' => '未公開ファイルはありません。',
-'uploadstash-badtoken' => '実行することができませんでした。これは、編集するための認証が無効になったためである可能性があります。再度お試しください。',
+'uploadstash-badtoken' => '操作を実行できませんでした。編集するための認証の期限切れが原因である可能性があります。再度お試しください。',
 'uploadstash-errclear' => 'ファイルの消去に失敗しました。',
 'uploadstash-refresh' => 'ファイルの一覧を更新',
-'invalid-chunk-offset' => '不正なチャンクオフセット',
+'invalid-chunk-offset' => '無効なチャンクオフセット',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'アクセスが拒否されました',
 'img-auth-nopathinfo' => 'PATH_INFO が見つかりません。
 サーバーが、この情報を渡すように構成されていません。
 CGI ベースであるため、img_auth に対応できない可能性もあります。
-https://www.mediawiki.org/wiki/Manual:Image_Authorization を参照してください。',
-'img-auth-notindir' => '要求されたパスは、設定済みのアップロード用ディレクトリーの中にありません。',
+https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください。',
+'img-auth-notindir' => '要求されたパスは、設定済みのアップロード先ディレクトリ内にありません。',
 'img-auth-badtitle' => '「$1」からは有効なページ名を構築できません。',
 'img-auth-nologinnWL' => 'ログインしておらず、さらに「$1」はホワイトリストに入っていません。',
 'img-auth-nofile' => 'ファイル「$1」は存在しません。',
-'img-auth-isdir' => 'ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\80\8c$1ã\80\8dã\81«ã\82¢ã\82¯ã\82»ã\82¹ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82
+'img-auth-isdir' => 'ディレクトリ「$1」にアクセスしようとしています。
 ファイルへのアクセスのみが許可されています。',
 'img-auth-streaming' => '「$1」を転送中。',
-'img-auth-public' => 'img_auth.phpの機能は非公開ウィキからファイルを出力することです。
+'img-auth-public' => 'img_auth.phpの機能は、非公開ウィキからのファイルの出力です。
 このウィキは公開ウィキとして構成されています。
\9c\80é\81©ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\83¼ã\81®ã\81\9fã\82\81ã\80\81img_auth.phpã\81¯ç\84¡å\8a¹å\8c\96ã\81\95ã\82\8cています。',
\9c\80é\81©ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®ã\81\9fã\82\81ã\80\81img_auth.phpã\82\92ç\84¡å\8a¹ã\81«ã\81\97ています。',
 'img-auth-noread' => '利用者は「$1」の読み取り権限を持っていません。',
-'img-auth-bad-query-string' => 'URLの中に無効なクエリ文字列があります。',
+'img-auth-bad-query-string' => 'URLの中に無効なクエリ文字列があります。',
 
 # HTTP errors
 'http-invalid-url' => '無効なURL:$1',
@@ -2036,7 +2039,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 # File description page
 'file-anchor-link' => 'ファイル',
 'filehist' => 'ファイルの履歴',
-'filehist-help' => '過去の版のファイルを表示するには、表示したい版の日付/時刻をクリックしてください。',
+'filehist-help' => '過去の版のファイルを表示するには、その版の日時をクリックしてください。',
 'filehist-deleteall' => 'すべて削除',
 'filehist-deleteone' => '削除',
 'filehist-revert' => '差し戻す',
@@ -2058,7 +2061,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 'nolinkstoimage' => 'このファイルへリンクしているページはありません。',
 'morelinkstoimage' => 'このファイルへの[[Special:WhatLinksHere/$1|リンク元を更に]]を表示する。',
 'linkstoimage-redirect' => '$1 (リダイレクト) $2',
-'duplicatesoffile' => '以下の$1ファイルが、このファイルと内容が同一です([[Special:FileDuplicateSearch/$2|詳細]]):',
+'duplicatesoffile' => '以下の $1 {{PLURAL:$1|ファイル}}が、このファイルと重複しています([[Special:FileDuplicateSearch/$2|詳細]]):',
 'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。',
 'sharedupload-desc-there' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。
 詳細は[$2 ファイル解説ページ]を参照してください。',
@@ -2069,7 +2072,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'sharedupload-desc-create' => 'このファイルは$1から来ており、他のプロジェクトで使用されている可能性があります。
 $1での[$2 ファイル解説ページ]にある説明を編集したほうがいいかもしれません。',
 'filepage-nofile' => 'この名前のファイルは存在しません。',
-'filepage-nofile-link' => 'ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¾ã\81\9bã\82\93ã\81\8cã\80\81[$1 ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82',
+'filepage-nofile-link' => 'この名前のファイルは存在しませんが、[$1 アップロード]できます。',
 'uploadnewversion-linktext' => 'このファイルの新しい版をアップロードする',
 'shared-repo-from' => '$1 より',
 'shared-repo' => '共有リポジトリ',
@@ -2083,7 +2086,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filerevert-comment' => '理由:',
 '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
@@ -2102,14 +2105,14 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filedelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
 ** 重複ファイル',
-'filedelete-edit-reasonlist' => '削除理由を編集する',
+'filedelete-edit-reasonlist' => '削除理由を編集',
 'filedelete-maintenance' => 'メンテナンス中のため、ファイルの削除と復帰は一時的に無効化されています。',
 'filedelete-maintenance-title' => 'ファイルを削除できません',
 
 # MIME search
 'mimesearch' => 'MIMEタイプ検索',
-'mimesearch-summary' => '指定したMIMEタイプに合致するファイルを検索します。
-contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</tt>)。',
+'mimesearch-summary' => 'このページでは、ファイルをMIMEタイプで絞り込みます。
+contenttype/subtypeの形式で入力してください(例:<tt>image/jpeg</tt>)。',
 'mimetype' => 'MIMEタイプ:',
 'download' => 'ダウンロード',
 
@@ -2142,9 +2145,9 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'statistics-header-hooks' => 'その他の統計',
 'statistics-articles' => '記事数',
 'statistics-pages' => '総ページ数',
-'statistics-pages-desc' => 'ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\82\84ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81ªã\81©ã\82\92å\90«ã\82\93ã\81 ã\81\93ã\81®ã\82¦ã\82£ã\82­å\86\85ã\81®すべてのページです。',
+'statistics-pages-desc' => 'ã\82¦ã\82£ã\82­å\86\85ã\81®ã\80\81ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\80\81ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81ªã\81©ã\82\92å\90«ã\82\80すべてのページです。',
 'statistics-files' => 'アップロードされたファイル数',
-'statistics-edits' => '{{SITENAME}}ã\81\8cé\96\8b設ã\81\95ã\82\8cã\81¦ã\81\8bã\82\89の編集回数の総計',
+'statistics-edits' => '{{SITENAME}}ã\81®é\96\8b設以é\99\8dの編集回数の総計',
 'statistics-edits-average' => '1ページあたりの編集回数',
 'statistics-views-total' => '総閲覧回数',
 'statistics-views-total-desc' => '存在しないページと特別ページに対する閲覧は含まれていません',
@@ -2162,8 +2165,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 
 'doubleredirects' => '二重転送',
 'doubleredirectstext' => 'これは他のリダイレクトページへのリダイレクトの一覧です。
\90\84è¡\8cã\81«ã\81¯ã\80\81æ\9c\80å\88\9dã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81¨ã\80\81ã\81\9dã\81®è»¢é\80\81å\85\88ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\9dã\81®ã\81¾ã\81\9f転é\80\81å\85\88へのリンクが表示されています。多くの場合、最終の転送先が正しい転送先であり、最初のリダイレクトは直接最後の転送先に向けるべきです。
-<del>æ\89\93ã\81¡æ¶\88ã\81\97ç·\9a</del>ã\81®ã\81¯ã\81\84ã\81£ã\81\9fé \85ç\9b®ã\81¯æ\97¢ã\81«ä¿®æ­£ã\81\95ã\82\8cています。',
\90\84è¡\8cã\81«ã\81¯ã\80\81æ\9c\80å\88\9dã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\9dã\81®è»¢é\80\81å\85\88ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\80\81ã\81\95ã\82\89ã\81«ã\81\9dã\81®è»¢é\80\81å\85\88ã\80\81ã\81\9dã\82\8cã\81\9eã\82\8cへのリンクが表示されています。多くの場合、最終の転送先が正しい転送先であり、最初のリダイレクトは直接最後の転送先に向けるべきです。
+<del>æ\89\93ã\81¡æ¶\88ã\81\97ç·\9a</del>ã\81\8cå\85¥ã\81£ã\81\9fé \85ç\9b®ã\81¯æ\97¢ã\81«è§£æ±ºã\81\97ています。',
 'double-redirect-fixed-move' => '[[$1]]を移動しました。
 今後は[[$2]]に転送されます。',
 'double-redirect-fixed-maintenance' => '[[$1]]から[[$2]]への二重転送を修正します。',
@@ -2202,7 +2205,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'popularpages' => '人気のページ',
 'wantedcategories' => 'カテゴリページが存在しないカテゴリ',
 'wantedpages' => 'ページが存在しないリンク',
-'wantedpages-badtitle' => '結果に不正なページ名が含まれています:$1',
+'wantedpages-badtitle' => '結果に正しくないページ名が含まれています:$1',
 'wantedfiles' => 'ファイル情報ページが存在しないファイル',
 'wantedfiletext-cat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。さらに、存在しないファイルを埋め込んでいるページは[[:$1]]に列挙されます。',
 'wantedfiletext-nocat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。',
@@ -2229,7 +2232,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
 'listusers' => '利用者の一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
-'listusers-creationsort' => '作成日順に整列',
+'listusers-creationsort' => '作成日順に並べ替え',
 'usereditcount' => '$1{{PLURAL:$1|回の編集}}',
 'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
 'newpages' => '新しいページ',
@@ -2237,15 +2240,15 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'ancientpages' => '最古のページ',
 'move' => '移動',
 'movethispage' => 'このページを移動',
-'unusedimagestext' => '以下のファイルは存在していますが、どのページにも埋め込まれていません。
-ただし、他のウェブサイトが直接URLでファイルにリンクすることがあることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれていることがあります。',
+'unusedimagestext' => '以下のファイルは、存在しますがどのページにも埋め込まれていません。
+ただし、他のウェブサイトがURLでファイルに直接リンクする場合があることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれている場合があります。',
 'unusedcategoriestext' => '以下のカテゴリはページが存在しますが、他のどのページおよびカテゴリでも使用されていません。',
 'notargettitle' => '対象が存在しません',
 'notargettext' => 'この機能の実行対象となるページまたは利用者が指定されていません。',
 'nopagetitle' => 'そのようなページはありません',
 'nopagetext' => '指定したページは存在しません。',
-'pager-newer-n' => '以後の$1件',
-'pager-older-n' => '以前の$1件',
+'pager-newer-n' => '{{PLURAL:$1|以後の$1件}}',
+'pager-older-n' => '{{PLURAL:$1|以前の$1件}}',
 'suppress' => '秘匿する',
 'querypage-disabled' => 'パフォーマンスに悪影響を与えるおそれがあるため、この特別ページは無効になっています。',
 
@@ -2254,7 +2257,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'booksources-search-legend' => '書籍情報源を検索',
 'booksources-go' => '検索',
 'booksources-text' => '以下は、新古本を販売している外部サイトへのリンクの一覧で、検索中の本について、更に詳しい情報が提供されているかもしれません:',
-'booksources-invalid-isbn' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fISBNç\95ªå\8f·ã\81¯æ\9c\89å\8a¹ã\81§ã\81¯ã\81ªã\81\84ã\82\88ã\81\86ã\81§ã\81\99ã\80\82å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bæ\83\85å ±æº\90ã\81\8bã\82\89å\86\99ã\81\97é\96\93é\81\95ã\81\88ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\81\8b。',
+'booksources-invalid-isbn' => 'æ\8c\87å®\9aã\81\97ã\81\9fISBNç\95ªå\8f·ã\81¯æ\9c\89å\8a¹ã\81§ã\81¯ã\81ªã\81\84ã\82\88ã\81\86ã\81§ã\81\99ã\80\82æ\83\85å ±æº\90ã\81\8bã\82\89å\86\99ã\81\97é\96\93é\81\95ã\81\88ã\81¦ã\81\84ã\81ªã\81\84ã\81\8b確èª\8dã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 
 # Special:Log
 'specialloguserlabel' => '実行者:',
@@ -2265,6 +2268,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 記録の種類、実行した利用者(大文字小文字は区別)、影響を受けたページ(大文字小文字は区別)による絞り込みができます。',
 'logempty' => '該当する記録はありません。',
 'log-title-wildcard' => 'この文字列で始まるページ名を検索',
+'showhideselectedlogentries' => '選択した記録の項目を表示/非表示',
 
 # Special:AllPages
 'allpages' => '全ページ',
@@ -2296,8 +2300,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 [[Special:UnusedCategories|未使用のカテゴリ]]はここには表示していません。
 [[Special:WantedCategories|望まれるカテゴリ]]も参照してください。',
 'categoriesfrom' => '最初に表示するカテゴリ:',
-'special-categories-sort-count' => '項目数順',
-'special-categories-sort-abc' => 'アルファベット順',
+'special-categories-sort-count' => '項目数順に並べ替え',
+'special-categories-sort-abc' => '辞書順に並べ替え',
 
 # Special:DeletedContributions
 'deletedcontributions' => '利用者の削除された投稿',
@@ -2309,8 +2313,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'linksearch-pat' => '検索パターン:',
 'linksearch-ns' => '名前空間:',
 'linksearch-ok' => '検索',
-'linksearch-text' => '"*.wikipedia.org" のようにワイルドカードを使うことができます。
-少なくとも"*.org" のようなトップレベルドメインが必要です。<br />
+'linksearch-text' => '"*.wikipedia.org" のようにワイルドカードを使できます。
+少なくとも "*.org" のようなトップレベルドメインが必要です。<br />
 対応プロトコル: <tt>$1</tt> (これらを検索に含めないでください)。',
 'linksearch-line' => '$1 が $2 からリンクされています',
 'linksearch-error' => 'ワイルドカードはホスト名の先頭でのみ使用できます。',
@@ -2359,11 +2363,11 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'emailuser' => 'この利用者にメールを送信',
 'emailpage' => '利用者にメールを送信',
 'emailpagetext' => '以下のフォームを使用してこの利用者にメールを送信できます。
-[[Special:Preferences|利用者の個人設定]]で入力したメール アドレスが「差出人」に設定され、受信者があなたに直接返信できるようになります。',
+「差出人」として、[[Special:Preferences|利用者の個人設定]]で入力したメールアドレスが設定されます。これにより、受信者があなたに直接返信できるようになります。',
 'usermailererror' => 'メールが以下のエラーを返しました:',
 'defemailsubject' => '{{SITENAME}} 利用者「$1」からのメール',
 'usermaildisabled' => '利用者メール機能は無効になっています',
-'usermaildisabledtext' => 'このウィキ上で他の利用者へメールを送ることはできません。',
+'usermaildisabledtext' => 'このウィキでは他の利用者にメールを送信できません',
 'noemailtitle' => 'メールアドレスがありません',
 'noemailtext' => 'この利用者は有効なメールアドレスを登録していません。',
 'nowikiemailtitle' => 'メールは許可されていません',
@@ -2397,7 +2401,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'watchnologin' => 'ログインしていません',
 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:UserLogin|ログイン]]している必要があります。',
 'addwatch' => 'ウォッチリストに追加',
-'addedwatchtext' => "ページ 「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
+'addedwatchtext' => "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
 このページと付属のトークページに変更があった際には、ウォッチリストに表示されます。また、ウォッチリストに登録されているページは[[Special:RecentChanges|最近の更新の一覧]]に'''太字'''で表示され、見つけやすくなります。",
 'removewatch' => 'ウォッチリストから除去',
 'removedwatchtext' => 'ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]から除去しました。',
@@ -2408,13 +2412,13 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'notanarticle' => '記事ではありません',
 'notvisiblerev' => '別の利用者による最終版は削除されました',
 'watchnochange' => 'ウォッチリストに登録しているページで、指定期間内に編集されたものはありません。',
-'watchlist-details' => 'ウォッチリストには$1ページが登録されています(トークページは数えません)。',
+'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています(トークページを除く)。',
 'wlheader-enotif' => '* メール通知が有効になっています',
 'wlheader-showupdated' => "* 最後に訪問したあとに変更されたページは、'''太字'''で表示されます",
 'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
 'watchmethod-list' => 'ウォッチされているページ内の最近の更新を確認中',
-'watchlistcontains' => 'ウォッチリストには、$1ページが登録されています。',
-'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\81å\90\8då\89\8dã\81\8cä¸\8dæ­£ã\81§ã\81\99ã\80\82',
+'watchlistcontains' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています。',
+'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81«ã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81\82ã\82\8aã\81¾ã\81\9bã\82\93...',
 'wlnote' => "$3 $4 までの{{PLURAL:$2|'''$2'''時間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
 'wlshowlast' => '次の期間で表示:$1時間、$2日間、$3',
 'watchlist-options' => 'ウォッチリストのオプション',
@@ -2442,23 +2446,23 @@ $NEWPAGE
 
 編集内容の要約:$PAGESUMMARY($PAGEMINOREDIT)
 
\8a\95稿è\80\85ã\81«é\80£çµ¡
\8a\95稿è\80\85ã\81®é\80£çµ¡å\85\88
 メール:$PAGEEDITOR_EMAIL
 ウィキ:$PAGEEDITOR_WIKI
 
 このページを訪れない限り、これ以上の変更に対する通知は送信されません。
-ウォッチリストからすべての通知を再設定することもできます。
+ウォッチリスト内のすべてのページについて、通知を再設定することもできます。
 
                          {{SITENAME}}通知システム
 
 --
-メール通知の設定は、次のページから変更してください。
+メール通知の設定は、以下のページで変更してください:
 {{canonicalurl:{{#special:Preferences}}}}
 
-ウォッチリストの設定は、次のページから変更して下さい。
+ウォッチリストの設定は、以下のページで変更してください:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-このページは、次のページでウォッチリストから除去することが出来ます。
+このページは、以下のページでウォッチリストから削除できます:
 $UNWATCHURL
 
 ご意見、お問い合わせ:
@@ -2491,10 +2495,10 @@ $UNWATCHURL
 ** 投稿者依頼
 ** 著作権侵害
 ** 荒らし',
-'delete-edit-reasonlist' => '削除理由を編集する',
-'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-edit-reasonlist' => '削除理由を編集',
+'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 このようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。',
-'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
 
@@ -2513,35 +2517,35 @@ $UNWATCHURL
 'revertpage' => '[[Special:Contributions/$2|$2]]([[User talk:$2|トーク]])による編集を[[User:$1|$1]]による直前の版へ差し戻しました',
 'revertpage-nouser' => '(利用者名削除)による編集を[[User:$1|$1]]による最新版へ差し戻しました',
 'rollback-success' => '$1による編集を差し戻しました。
-$2による最後の版へ変更されました。',
+$2による直前の版へ変更されました。',
 
 # Edit tokens
 'sessionfailure-title' => 'セッションの失敗',
 'sessionfailure' => 'ログインのセッションに問題が発生しました。
\82»ã\83\83ã\82·ã\83§ã\83³ä¹\97ã\81£å\8f\96ã\82\8aã\82\92é\98²ã\81\90ã\81\9fã\82\81ã\81«æ\93\8dä½\9cã\81¯å\8f\96ã\82\8aæ¶\88ã\81\95ã\82\8cました。
\82»ã\83\83ã\82·ã\83§ã\83³ä¹\97ã\81£å\8f\96ã\82\8aã\82\92é\98²ã\81\90ã\81\9fã\82\81ã\80\81æ\93\8dä½\9cã\82\92å\8f\96ã\82\8aæ¶\88ã\81\97ました。
 前のページへ戻って再度読み込んだ後に、もう一度試してください。',
 
 # Protect
 'protectlogpage' => '保護記録',
 'protectlogtext' => '以下はページ保護に対する変更の記録です。
 現在、保護レベルを変更できるページについては[[Special:ProtectedPages|保護ページ一覧]]を参照してください。',
-'protectedarticle' => '「[[$1]]」を保護しました',
-'modifiedarticleprotection' => '「[[$1]]」の保護レベルを変更しました',
-'unprotectedarticle' => '「[[$1]]」の保護を解除しました',
-'movedarticleprotection' => '保護の設定を「[[$2]]」から「[[$1]]」へ移動しました',
+'protectedarticle' => ' が「[[$1]]」を保護しました',
+'modifiedarticleprotection' => ' が「[[$1]]」の保護レベルを変更しました',
+'unprotectedarticle' => ' が「[[$1]]」の保護を解除しました',
+'movedarticleprotection' => ' が保護の設定を「[[$2]]」から「[[$1]]」へ移動しました',
 'protect-title' => '「$1」の保護レベルを変更',
 'protect-title-notallowed' => '「$1」の保護レベルを表示',
 'prot_1movedto2' => '[[$1]] を [[$2]] へ移動',
 'protect-badnamespace-title' => '保護不可能な名前空間',
-'protect-badnamespace-text' => 'ã\81\93ã\81®å\90\8då\89\8d空é\96\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ä¿\9dè­·ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'protect-badnamespace-text' => 'この名前空間のページは保護できません。',
 'protect-legend' => '保護の確認',
 'protectcomment' => '理由:',
 'protectexpiry' => '有効期限:',
-'protect_expiry_invalid' => '有効期間が不正です。',
+'protect_expiry_invalid' => '有効期間が正しくありません。',
 'protect_expiry_old' => '有効期限が過去の時刻です。',
 'protect-unchain-permissions' => '追加保護オプションをロック解除',
 'protect-text' => "ページ「'''$1'''」に対する保護レベルの表示と操作ができます。",
-'protect-locked-blocked' => "ブロックは、保護レベルを変更できません。
+'protect-locked-blocked' => "ブロックされている間は、保護レベルを変更できません。
 ページ「'''$1'''」の現在の状態は以下の通りです:",
 'protect-locked-dblock' => "データベースのロックが有効なため、保護レベルを変更できません。
 ページ「'''$1'''」の現在の状態は以下の通りです:",
@@ -2569,7 +2573,7 @@ $2による最後の版へ変更されました。',
 ** 度重なるスパム投稿
 ** 非生産的な編集合戦
 ** 高負荷ページ',
-'protect-edit-reasonlist' => '保護理由を編集する',
+'protect-edit-reasonlist' => '保護理由を編集',
 'protect-expiry-options' => '1時間:1 hour,1日:1 day,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite',
 'restriction-type' => '許可:',
 'restriction-level' => '制限レベル:',
@@ -2591,14 +2595,14 @@ $2による最後の版へ変更されました。',
 # Undelete
 'undelete' => '削除されたページを表示',
 'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は、[[:$1]]の削除された版です'''。",
+'undeletepagetitle' => "'''以下は、[[:$1|$1]]の削除された版です'''。",
 'viewdeletedpage' => '削除されたページを表示',
-'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|削除されたページ群}}は、保存版に残っているため復元できます。
+'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|&#32;$1 件の削除されたページ}}は、保存版に残っているため復元できます。
 保存版は定期的に消去される可能性があります。',
 'undelete-fieldset-title' => '削除された版の復元',
 'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
 特定の版を復帰する場合は、復帰する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
-'undeleterevisions' => '$1版が保存されています',
+'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
 'undeletehistory' => 'ページの復帰を行うと、すべての版が履歴に復帰します。
 削除されたあとに同じ名前で新しくページが作成されていた場合、復帰した版はそれに先行する履歴として現れます。',
 'undeleterevdel' => '復帰した結果、版指定削除されているページまたはファイルの版が最新となる場合、復帰は実行されません。
@@ -2616,11 +2620,11 @@ $2による最後の版へ変更されました。',
 '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' => '復帰に失敗しました。
-誰かが、既にこのページを復帰した可能性があります。',
+他の誰かがこのページを既に復帰した可能性があります。',
 'undeletedpage' => "'''$1を復元しました。'''
 
 最近の削除と復帰の記録については[[Special:Log/delete|削除記録]]を参照してください。",
@@ -2633,7 +2637,7 @@ $2による最後の版へ変更されました。',
 'undelete-filename-mismatch' => 'ファイルの時刻印$1の版を復帰できません:ファイル名が一致しません。',
 'undelete-bad-store-key' => 'ファイルの時刻印$1の版を復帰できません:削除前にファイルが失われています。',
 'undelete-cleanup-error' => '未使用の保存版のファイル「$1」の削除中にエラーが発生しました。',
-'undelete-missing-filearchive' => 'データベースに存在しないため、ID$1を持つファイルの保存版を復元できません。
+'undelete-missing-filearchive' => 'データベースに存在しないため、ID $1を持つファイルの保存版を復元できません。
 既に復帰されている可能性があります。',
 'undelete-error' => 'ページの復帰エラー',
 'undelete-error-short' => 'ファイルの復帰エラー:$1',
@@ -2646,7 +2650,7 @@ $1',
 # Namespace form on various pages
 'namespace' => '名前空間:',
 'invert' => '選択したものを除く',
-'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\81¾ã\81\99ã\80\82',
+'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8b',
 'namespace_association' => '対応付けられた名前空間',
 'tooltip-namespace_association' => '選択した名前空間に関連付けられているトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
 'blanknamespace' => '(標準)',
@@ -2661,7 +2665,7 @@ $1',
 'month' => 'これ以前の月:',
 'year' => 'これ以前の年:',
 
-'sp-contributions-newbies' => '新規利用者の投稿のみ表示',
+'sp-contributions-newbies' => '新しい利用者からの投稿のみ表示',
 'sp-contributions-newbies-sub' => '新規利用者のみ',
 'sp-contributions-newbies-title' => '新規利用者の投稿記録',
 'sp-contributions-blocklog' => 'ブロック記録',
@@ -2705,7 +2709,7 @@ $1',
 'blockip' => '利用者をブロック',
 'blockip-title' => '利用者のブロック',
 'blockip-legend' => '利用者をブロック',
-'blockiptext' => '以ä¸\8bã\81®ã\83\95ã\82©ã\83¼ã\83 ã\82\92使ç\94¨ã\81\97ã\81¦ã\80\81æ\8c\87å®\9aã\81\97ã\81\9få\88©ç\94¨è\80\85ã\82\84IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8bã\82\89ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¢ã\82¯ã\82»ã\82¹ã\82\92ã\83\96ã\83­ã\83\83ã\82¯ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82
+'blockiptext' => '以下のフォームを使用して、指定した利用者やIPアドレスからの書き込みアクセスをブロックできます。
 このような措置は、荒らしからの防御のためにのみ行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
 以下にブロックの理由を具体的に書いてください(例えば、荒らされたページへの言及など)。',
 'ipadressorusername' => 'IPアドレスまたは利用者名:',
@@ -2720,7 +2724,7 @@ $1',
 ** 威圧的な態度/嫌がらせ
 ** 複数アカウントの不正利用
 ** 不適切な利用者名',
-'ipb-hardblock' => 'ログインしている利用者によるこのIPアドレスからの編集を不許可',
+'ipb-hardblock' => 'ログイン利用者によるこのIPアドレスからの編集を不許可',
 'ipbcreateaccount' => 'アカウント作成を禁止',
 'ipbemailban' => 'メール送信を防止',
 'ipbenableautoblock' => 'この利用者が最後に使用したIPアドレスと、後に編集しようとしたIPアドレスを自動的にブロック',
@@ -2731,18 +2735,18 @@ $1',
 'ipbotherreason' => '他の、または追加の理由:',
 'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
 'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチする',
-'ipb-disableusertalk' => 'この利用者がブロックに自分のトークページを編集するのを不許可',
+'ipb-disableusertalk' => 'この利用者がブロックされている間に自分のトークページを編集するのを不許可',
 'ipb-change-block' => 'これらの設定で、利用者を再びブロック',
 'ipb-confirm' => 'ブロックの確認',
-'badipaddress' => '不正なIPアドレス',
+'badipaddress' => '無効なIPアドレス',
 'blockipsuccesssub' => 'ブロックしました',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]をブロックしました。<br />
 [[Special:BlockList|ブロックの一覧]]を参照してください。',
-'ipb-blockingself' => '自分自身をブロックしようとしています本当に実行しますか?',
+'ipb-blockingself' => '自分自身をブロックしようとしています本当に実行しますか?',
 'ipb-confirmhideuser' => '秘匿が有効になっている利用者をブロックしようとしています。実行すると、すべてのリストやログでこの利用者名が表示されません。本当に実行しますか?',
-'ipb-edit-dropdown' => 'ブロック理由を編集する',
+'ipb-edit-dropdown' => 'ブロック理由を編集',
 'ipb-unblock-addr' => '$1のブロックを解除',
-'ipb-unblock' => '利用者またはIPアドレスのブロックを解除する',
+'ipb-unblock' => '利用者またはIPアドレスのブロックを解除',
 'ipb-blocklist' => '現在有効なブロックを表示',
 'ipb-blocklist-contribs' => '$1の投稿の一覧',
 'unblockip' => 'ブロックを解除',
@@ -2751,9 +2755,9 @@ $1',
 'unblocked' => '[[User:$1|$1]]のブロックを解除しました',
 'unblocked-range' => '$1のブロックは解除されています',
 'unblocked-id' => 'ブロック$1は除去されました',
-'blocklist' => 'ブロック中の利用者',
-'ipblocklist' => 'ブロック中の利用者',
-'ipblocklist-legend' => 'ブロック中の利用者を検索',
+'blocklist' => 'ブロックされている利用者',
+'ipblocklist' => 'ブロックされている利用者',
+'ipblocklist-legend' => 'ブロックされている利用者を検索',
 'blocklist-userblocks' => 'アカウントのブロックを非表示',
 'blocklist-tempblocks' => '有期ブロックを非表示',
 'blocklist-addressblocks' => '単一IPのブロックを非表示',
@@ -2762,7 +2766,7 @@ $1',
 'blocklist-target' => '対象',
 'blocklist-expiry' => '期限',
 'blocklist-by' => 'ブロックした管理者',
-'blocklist-params' => 'ブロックのパラメータ',
+'blocklist-params' => 'ブロックのパラメータ',
 'blocklist-reason' => '理由',
 'ipblocklist-submit' => '検索',
 'ipblocklist-localblock' => 'ローカルでのブロック',
@@ -2777,19 +2781,19 @@ $1',
 'ipblocklist-empty' => 'ブロック一覧は空です。',
 'ipblocklist-no-results' => '指定されたIPアドレスまたは利用者名はブロックされていません。',
 'blocklink' => 'ブロック',
-'unblocklink' => 'ブロック解除',
+'unblocklink' => 'ブロック解除',
 'change-blocklink' => '設定を変更',
 'contribslink' => '投稿記録',
 'emaillink' => 'メールを送信',
-'autoblocker' => '使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
-$1のブロックの理由は「$2」です。',
+'autoblocker' => "ご使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
+$1のブロックの理由は「''$2''」です。",
 'blocklogpage' => 'ブロック記録',
 'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
 参考のため、ブロックの記録を以下に示します:',
 'blocklog-showsuppresslog' => 'この利用者は以前にブロックされ、隠されたことがあります。
 参考のため、秘匿記録を以下に示します:',
-'blocklogentry' => '[[$1]] を$2ブロックしました。ブロックの詳細$3',
-'reblock-logentry' => '[[$1]]ブロック設定を$2に変更しました。ブロックの詳細$3',
+'blocklogentry' => ' が [[$1]] を$2ブロックしました。ブロックの詳細:$3',
+'reblock-logentry' => ' が [[$1]] のブロック設定を$2に変更しました。ブロックの詳細:$3',
 'blocklogtext' => 'このページは利用者のブロックと解除の記録です。
 自動的にブロックされたIPアドレスは表示されていません。
 現時点で有効なブロックは[[Special:BlockList|ブロックの一覧]]をご覧ください。',
@@ -2802,32 +2806,31 @@ $1のブロックの理由は「$2」です。',
 'block-log-flags-angry-autoblock' => '拡張自動ブロック有効',
 'block-log-flags-hiddenname' => '利用者名の秘匿',
 'range_block_disabled' => '範囲ブロックを作成する管理者機能は無効化されています。',
-'ipb_expiry_invalid' => '有効期限が不正です。',
+'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
 'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
 'ipb_already_blocked' => '「$1」は既にブロックされています',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
-'ipb_cant_unblock' => 'エラー:ブロック ID $1 がありません。
-ブロックが既に解除されている可能性があります。',
-'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロックを解除できませんでした。
-ただし、$2の範囲でブロックされており、こちらの設定を変更することでブロック解除できます。',
-'ip_range_invalid' => '不正なIP範囲です。',
+'ipb_cant_unblock' => 'エラー:ブロック ID $1 はありません。ブロックが既に解除されている可能性があります。',
+'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
+ただし、$2の範囲でブロックされており、こちらのブロックは別途解除できます。',
+'ip_range_invalid' => 'IP範囲が無効です。',
 'ip_range_toolarge' => '/$1よりサイズの広い範囲ブロックは許可されていません。',
 'blockme' => '自分をブロック',
 'proxyblocker' => 'プロキシブロック係',
 'proxyblocker-disabled' => 'この機能は無効になっています。',
-'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
-使ç\94¨ä¸­ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\8dã\83\83ã\83\88ã\82µã\83¼ã\83\93ã\82¹ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\80\81ã\82\82ã\81\97ã\81\8fã\81¯æ\89\80å±\9eçµ\84ç¹\94ã\81®æ\8a\80è¡\93æ\8b\85å½\93è\80\85ã\81«é\80£çµ¡ã\82\92å\8f\96ã\82\8aã\80\81ã\81\93ã\82\8cã\81\8cæ·±å\88»ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\83¼問題であることを伝えてください。',
+'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
+使ç\94¨ä¸­ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\8dã\83\83ã\83\88ã\82µã\83¼ã\83\93ã\82¹ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\80\81ã\81¾ã\81\9fã\81¯æ\89\80å±\9eçµ\84ç¹\94ã\81®æ\8a\80è¡\93æ\8b\85å½\93è\80\85ã\81«é\80£çµ¡ã\81\97ã\81¦ã\80\81ã\81\93ã\82\8cã\81\8cæ·±å\88»ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£問題であることを伝えてください。',
 'proxyblocksuccess' => '完了。',
-'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
-'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
-アカウントは作成できません',
-'cant-block-while-blocked' => 'ブロックは、他の利用者をブロックできません。',
+'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
+'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
+アカウント作成はできません',
+'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
 'cant-see-hidden-user' => '投稿ブロックしようとした利用者は、既にブロックされ隠されています。
 hideuser権限を持っていないため、この利用者のブロックを閲覧または編集できません。',
-'ipbblocked' => '自分をブロックしているため、他の利用者のブロックやブロック解除はできません',
+'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
 'ipbnounblockself' => '自分自身のブロックは解除できません',
 
 # Developer tools
@@ -2837,16 +2840,16 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 本当にデータベースをロックしていいかどうか確認し、メンテナンスが終了したらロックを解除してください。',
 'unlockdbtext' => 'データベースのロックを解除すると、すべての利用者がページの編集や、個人設定の変更、ウォッチリストの編集、その他データベースでの変更を要求する作業ができるようになります。
 本当にデータベースのロックを解除していいかどうか確認してください。',
-'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\99ã\82\8b。',
+'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\97ã\81¾ã\81\99。',
 'unlockconfirm' => '本当にデータベースのロックを解除します。',
 'lockbtn' => 'データベースをロック',
 'unlockbtn' => 'データベースのロックを解除',
 'locknoconfirm' => '確認ボックスにチェックが入っていません。',
 'lockdbsuccesssub' => 'データベースのロックに成功しました',
 'unlockdbsuccesssub' => 'データベースのロックを除去しました',
-'lockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cました。<br />
+'lockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\97ました。<br />
 メンテナンスが完了したら、忘れずに[[Special:UnlockDB|ロックを除去]]してください。',
-'unlockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®ã\83­ã\83\83ã\82¯ã\81¯è§£é\99¤ã\81\95ã\82\8cました。',
+'unlockdbsuccesstext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81®ã\83­ã\83\83ã\82¯ã\82\92解é\99¤ã\81\97ました。',
 'lockfilenotwritable' => 'データベースのロック ファイルが書き込み禁止です。
 データベースをロックまたはロック解除するには、ウェブ サーバーがこれに書き込める必要があります。',
 'databasenotlocked' => 'データベースはロックされていません。',
@@ -2855,17 +2858,18 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 # Move page
 'move-page' => '「$1」の移動',
 'move-page-legend' => 'ページの移動',
-'movepagetext' => "下のフォームを利用すると、ページ名が変更され、その履歴も変更先へ移動します。
-古いページは変更先へのリダイレクトページとなります。
-変更前のページへのリダイレクトは自動的に修正することができます。
-自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのはあなたの責任です。
+'movepagetext' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+移動元のページは移動先への転送ページになります。
+移動元のページへのリダイレクトを自動的に修正できます。
+[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
+リンクを正しく維持するのは移動した人の責任です。
 
 移動先が既に存在する場合は、そのページが空またはリダイレクトで、かつ過去の版を持たない場合を除いて移動'''できません'''。つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
 '''注意!'''
\82\88ã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84ã\80\81ä»\96ã\81®å¤\9aã\81\8fã\81®ã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨äº\88æ\9c\9fã\81\9bã\81¬結果が起こるかもしれません。ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
-'movepagetext-noredirectfixer' => "下のフォームを利用すると、ページ名が変更され、ページの履歴も変更先へ移動します。
-古いページは変更先への転送ページとなります。
\82\88ã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84ã\80\81ä»\96ã\81®å¤\9aã\81\8fã\81®ã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨äº\88æ\9c\9fã\81\97ã\81ªã\81\84結果が起こるかもしれません。ページの移動に伴う影響をよく考えてから踏み切るようにしてください。",
+'movepagetext-noredirectfixer' => "下のフォームを使用すると、ページ名を変更でき、そのページの履歴も変更先に移動できます。
+移動元のページは移動先への転送ページになります。
 自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。
 つながるべき場所にリンクがつながるよう維持するのは移動した人の責任です。
 
@@ -2873,15 +2877,15 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
 '''警告!'''
-å¤\9aã\81\8fé\96²è¦§ã\81\95ã\82\8cã\81\9fã\82\8aã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨ã\80\81äº\88æ\9c\9fã\81\9bã\81¬å¤§ã\81\8dã\81ªå¤\89å\8c\96ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93
+å¤\9aã\81\8fé\96²è¦§ã\81\95ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\84å¤\9aã\81\8fã\83ªã\83³ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\99ã\82\8bã\81¨ã\80\81äº\88æ\9c\9fã\81\97ã\81ªã\81\84大ã\81\8dã\81ªå¤\89å\8c\96ã\81\8cèµ·ã\81\93ã\82\8bã\81\8bã\82\82ã\81\97ã\82\8cã\81ªã\81\84ã\81\93ã\81¨ã\81«ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84
 ページの移動に伴う影響をよく考えてから移動してください。",
-'movepagetalktext' => '関連付けられたトークページは、自動的に一緒に移動されます。ただしこれは、以下の場合を除きます。
-* ç©ºã\81§ã\81ªã\81\84ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\96°ã\81\97ã\81\84å\90\8då\89\8dã\81§存在する場合
+'movepagetalktext' => "関連付けられたトークページも一緒に、自動的に移動されます。ただし、'''以下の場合を除きます:'''
+* ç§»å\8b\95å\85\88ã\81«ã\80\81空ã\81§ã\81¯ã\81ªã\81\84ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8c存在する場合
 * 下のボックスのチェックを消した場合
 
-これらの場合、必要に応じて、トークページを移動または統合する必要があります。',
+これらの場合、必要に応じて、トークページを移動または統合する必要があります。",
 'movearticle' => '移動するページ:',
-'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81 ã\81\91が移動され、利用者名は''変更されない''点に注意してください。",
+'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\81\97ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81®ã\81¿が移動され、利用者名は''変更されない''点に注意してください。",
 'movenologin' => 'ログインしていません',
 'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
 'movenotallowed' => 'ページを移動する権限がありません。',
@@ -2897,8 +2901,8 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
 別の名前を選択してください。',
-'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
-'talkexists' => "'''ã\83\9aã\83¼ã\82¸è\87ªèº«ã\81¯ç\84¡äº\8bã\81«ç§»å\8b\95ã\81\95ã\82\8cましたが、トークページは移動先のページが存在したため移動できませんでした。
+'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
+'talkexists' => "'''ã\83\9aã\83¼ã\82¸è\87ªèº«ã\81¯ç§»å\8b\95ã\81§ã\81\8dましたが、トークページは移動先のページが存在したため移動できませんでした。
 手動で統合してください。'''",
 'movedto' => '移動先:',
 'movetalk' => '付随するトークページも移動',
@@ -2922,22 +2926,22 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'delete_and_move_confirm' => 'はい、ページを削除します',
 'delete_and_move_reason' => '「[[$1]]」からの移動のために削除',
 'selfmove' => '移動元と移動先のページ名が同じです。
\87ªå\88\86è\87ªèº«ã\81¸は移動できません。',
-'immobile-source-namespace' => '$1名前空間のページを移動させることはできません。',
-'immobile-target-namespace' => 'ã\80\8c$1ã\80\8då\90\8då\89\8d空é\96\93ã\81¸ã\81¯ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\95ã\81\9bã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
-'immobile-target-namespace-iw' => 'ウィキ間リンクは、ページの移動では不正な対象です。',
\87ªå\88\86è\87ªèº«ã\81«は移動できません。',
+'immobile-source-namespace' => '「$1」名前空間のページは移動できません',
+'immobile-target-namespace' => 'ã\80\8c$1ã\80\8då\90\8då\89\8d空é\96\93ã\81«ã\81¯ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
+'immobile-target-namespace-iw' => 'ウィキ間リンクは、ページの移動先には指定できません。',
 'immobile-source-page' => 'このページは移動できません。',
-'immobile-target-page' => '目的のページ名へは移動させることができません。',
-'imagenocrossnamespace' => 'ファイル名前空間以外に、ファイルを移動することはできません。',
-'nonfile-cannot-move-to-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\81ªã\81\84ã\82\82ã\81®ã\82\92ã\80\81ã\83\95ã\82¡ã\82¤ã\83«å\90\8då\89\8d空é\96\93ã\81«ç§»å\8b\95ã\81\99ることはできません',
-'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
-'imageinvalidfilename' => '対象ファイル名が不正です',
+'immobile-target-page' => '対象ページ名に移動させることはできません。',
+'imagenocrossnamespace' => 'ファイルを、ファイル名前空間以外に移動させることはできません',
+'nonfile-cannot-move-to-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\81¯ã\81ªã\81\84ã\82\82ã\81®ã\82\92ã\80\81ã\83\95ã\82¡ã\82¤ã\83«å\90\8då\89\8d空é\96\93ã\81«ç§»å\8b\95ã\81\95ã\81\9bることはできません',
+'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
+'imageinvalidfilename' => '対象ファイル名が無効です',
 'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正',
 'move-leave-redirect' => '移動元にリダイレクトを作成する',
 'protectedpagemovewarning' => "'''警告:'''このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'semiprotectedpagemovewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが移動できます。
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'move-over-sharedrepo' => '== ファイルが存在します ==
 [[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。',
 'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリ上で使用されています。
@@ -2945,13 +2949,13 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 
 # Export
 'export' => 'ページの書き出し',
-'exporttext' => 'ã\81\93ã\81\93ã\81§ã\81¯å\8d\98ç\8b¬ã\81\82ã\82\8bã\81\84ã\81¯è¤\87æ\95°ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c¬æ\96\87ã\81¨ç·¨é\9b\86履歴ã\82\92ã\80\81XMLã\81®å½¢ã\81§æ\9b¸ã\81\8då\87ºã\81\99ã\81\93ã\81¨ができます。
\81\93ã\81®XMLã\81¯ã\80\81ä»\96ã\81®MediaWikiã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\82¦ã\82£ã\82­ã\81§[[Special:Import|å\8f\96ã\82\8aè¾¼ã\81¿ã\83\9aã\83¼ã\82¸]]ã\82\92使ç\94¨ã\81\97ã\81¦å\8f\96ã\82\8aè¾¼ã\82\80ã\81\93ã\81¨ができます。
+'exporttext' => 'ã\81\93ã\81\93ã\81§ã\81¯å\8d\98ç\8b¬ã\81\82ã\82\8bã\81\84ã\81¯è¤\87æ\95°ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c¬æ\96\87ã\81¨ç·¨é\9b\86履歴ã\82\92ã\80\81XMLã\81®å½¢ã\81§æ\9b¸ã\81\8då\87ºã\81\97ができます。
\81\93ã\81®XMLã\81¯ã\80\81ä»\96ã\81®MediaWikiã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\82¦ã\82£ã\82­ã\81§[[Special:Import|å\8f\96ã\82\8aè¾¼ã\81¿ã\83\9aã\83¼ã\82¸]]ã\82\92使ç\94¨ã\81\97ã\81¦å\8f\96ã\82\8aè¾¼ã\81¿ができます。
 
 ページを書き出すには、下の入力ボックスに一行に一つずつ書き出したいページの名前を記入してください。また、編集履歴とともにすべての過去版を含めて書き出すのか、最新版のみを書き出すのか選択してください。
 
 後者の場合ではリンクの形で使うこともできます。例えば、[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]はページ「[[{{MediaWiki:Mainpage}}]]」が対象になります。',
-'exportall' => 'すべてのページをエクスポート',
+'exportall' => 'すべてのページを書き出し',
 'exportcuronly' => '完全な履歴は含めず、最新版のみを含める',
 'exportnohistory' => "----
 '''注意:'''負荷上の理由により、このフォームによるページの完全な履歴の書き出しは無効化されています。",
@@ -2972,7 +2976,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'allmessagescurrent' => '現在のメッセージ文',
 'allmessagestext' => 'これは MediaWiki 名前空間で利用できるシステム メッセージの一覧です。
 MediaWiki 全般のローカライズ(地域化)に貢献したい場合は、[//www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ] や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ã\81\8cç\84¡å\8a¹ã\81ªã\81®ã\81§ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92使ã\81\86ã\81\93ã\81¨ã\81¯できません。",
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ã\81\8cç\84¡å\8a¹ã\81®ã\81\9fã\82\81ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92使ç\94¨できません。",
 'allmessages-filter-legend' => '絞り込み',
 'allmessages-filter' => '変更状態により絞り込む:',
 'allmessages-filter-unmodified' => '変更なし',
@@ -2990,7 +2994,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'djvu_no_xml' => 'DjVuファイルのXMLデータを取得できません',
 'thumbnail-temp-create' => '一時的なサムネイルファイルを作成できません',
 'thumbnail-dest-create' => 'サムネイルを保存先に保存できません',
-'thumbnail_invalid_params' => 'サムネイル引数が不正です',
+'thumbnail_invalid_params' => 'サムネイル引数が無効です',
 'thumbnail_dest_directory' => '出力ディレクトリを作成できません',
 'thumbnail_image-type' => '対応していない画像形式です',
 'thumbnail_gd-library' => 'GDライブラリの構成が不完全です:関数$1が不足',
@@ -3007,23 +3011,23 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import-interwiki-templates' => 'すべてのテンプレートを含める',
 'import-interwiki-submit' => '取り込み',
 'import-interwiki-namespace' => '目的の名前空間:',
-'import-upload-filename' => 'ファイルã\81®å\90\8då\89\8dï¼\9a',
+'import-upload-filename' => 'ファイルå\90\8dï¼\9a',
 'import-comment' => 'コメント:',
 'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
 それをコンピューターに保存した後、こちらへアップロードしてください。',
 'importstart' => 'ページを取り込み中...',
-'import-revision-count' => '$1',
+'import-revision-count' => '$1{{PLURAL:$1|版}}',
 'importnopages' => '取り込むページがありません。',
 'imported-log-entries' => '$1 件の{{PLURAL:$1|記録項目}}を取り込みました。',
 'importfailed' => '取り込みに失敗しました:<nowiki>$1</nowiki>',
 'importunknownsource' => '取り込み元のタイプが不明です',
 'importcantopen' => '取り込みファイルが開けませんでした',
 'importbadinterwiki' => 'ウィキ間リンクが正しくありません',
-'importnotext' => '空かもしくは本文がありません',
+'importnotext' => '内容が空、または本文がありません',
 'importsuccess' => '取り込みが完了しました!',
 'importhistoryconflict' => '取り込み時にいくつかの版が競合しました(以前に同じページが取り込まれているかもしれません)',
 'importnosources' => 'ウィキ間移動の取り込み元が定義されていないため、履歴の直接アップロードは無効になっています。',
-'importnofile' => 'ファイルがアップロードされませんでした',
+'importnofile' => '取り込みファイルはアップロードされませんでした。',
 'importuploaderrorsize' => '取り込みファイルのアップロードに失敗しました。
 ファイルが、アップロードできるサイズを超えています。',
 'importuploaderrorpartial' => '取り込みファイルのアップロードに失敗しました。
@@ -3040,17 +3044,17 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import-invalid-interwiki' => '指定されたウィキから取り込めませんでした。',
 'import-error-edit' => 'あなたにそのページを編集する許可がないため、ページ「$1」は取り込まれませんでした。',
 'import-error-create' => 'あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。',
-'import-error-interwiki' => 'å\90\8då\89\8dã\81\8cå¤\96é\83¨ã\83ªã\83³ã\82¯ (interwiki) ã\81«äº\88ç´\84ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dã\82\92ã\82¤ã\83³ã\83\9dã\83¼ã\83\88ã\81\97ませんでした。',
-'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているためインポートしません。',
-'import-error-invalid' => '名前が正しくないため、ページ「$1」をインポートしませんでした。',
+'import-error-interwiki' => 'å\90\8då\89\8dã\81\8cå¤\96é\83¨ã\83ªã\83³ã\82¯ (interwiki) ã\81«äº\88ç´\84ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dã\82\92å\8f\96ã\82\8aè¾¼ã\81¿ませんでした。',
+'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みません。',
+'import-error-invalid' => '名前が正しくないため、ページ「$1」を取り込みませんでした。',
 
 # Import log
 'importlogpage' => '取り込み記録',
 'importlogpagetext' => '管理された他のウィキから編集履歴を伴ったページ取り込みです。',
 'import-logentry-upload' => 'ファイルのアップロードにより[[$1]]を取り込みました',
-'import-logentry-upload-detail' => '$1',
+'import-logentry-upload-detail' => '$1{{PLURAL:$1|版}}',
 'import-logentry-interwiki' => '$1をウィキ間移動しました',
-'import-logentry-interwiki-detail' => '$2の$1',
+'import-logentry-interwiki-detail' => '$2の$1{{PLURAL:$1|版}}',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript をテスト中',
@@ -3069,34 +3073,34 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-pt-mytalk' => '自分のトークページ',
 'tooltip-pt-anontalk' => 'このIPアドレスからなされた編集についての議論',
 'tooltip-pt-preferences' => '個人設定',
-'tooltip-pt-watchlist' => '変更を監視しているページの一覧',
+'tooltip-pt-watchlist' => '変更をウォッチしているページの一覧',
 'tooltip-pt-mycontris' => '自分の投稿の一覧',
-'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
-'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
+'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
+'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
 'tooltip-pt-logout' => 'ログアウト',
 'tooltip-ca-talk' => '本文ページについての議論',
-'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使用してください。',
-'tooltip-ca-addsection' => '新しい節を開始',
+'tooltip-ca-edit' => 'このページを編集できます。保存前にプレビューボタンを使用してください。',
+'tooltip-ca-addsection' => '新しい節を開始する',
 'tooltip-ca-viewsource' => 'このページは保護されています。
 ページのソースを閲覧できます。',
 'tooltip-ca-history' => 'このページの過去の版',
-'tooltip-ca-protect' => 'このページを保護',
-'tooltip-ca-unprotect' => 'このページの保護設定を変更',
-'tooltip-ca-delete' => 'このページを削除',
-'tooltip-ca-undelete' => '削除される前になされた編集を復元',
-'tooltip-ca-move' => 'このページを移動',
-'tooltip-ca-watch' => 'このページをウォッチリストに追加',
-'tooltip-ca-unwatch' => 'このページをウォッチリストから除去',
-'tooltip-search' => '{{SITENAME}}内を検索',
-'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\97ã\81¾ã\81\99',
-'tooltip-search-fulltext' => '入力された文字列が含まれるページを検索します',
-'tooltip-p-logo' => 'メインページに移動',
-'tooltip-n-mainpage' => 'メインページに移動',
+'tooltip-ca-protect' => 'このページを保護する',
+'tooltip-ca-unprotect' => 'このページの保護設定を変更する',
+'tooltip-ca-delete' => 'このページを削除する',
+'tooltip-ca-undelete' => '削除される前になされた編集を復元する',
+'tooltip-ca-move' => 'このページを移動する',
+'tooltip-ca-watch' => 'このページをウォッチリストに追加する',
+'tooltip-ca-unwatch' => 'このページをウォッチリストから除去する',
+'tooltip-search' => '{{SITENAME}}内を検索する',
+'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\99ã\82\8b',
+'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-randompage' => '無作為に選択されたページを読み込む',
 'tooltip-n-help' => '情報を得る場所',
 'tooltip-t-whatlinkshere' => 'ここにリンクしている全ウィキページの一覧',
 'tooltip-t-recentchangeslinked' => 'このページからリンクしているページの最近の更新',
@@ -3111,7 +3115,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-main' => '本文を閲覧',
 'tooltip-ca-nstab-user' => '利用者ページを表示',
 'tooltip-ca-nstab-media' => 'メディアページを表示',
-'tooltip-ca-nstab-special' => 'ã\81\93ã\82\8cã\81¯ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81§ã\81\99ã\80\82ç·¨é\9b\86ã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'tooltip-ca-nstab-special' => 'これは特別ページです。編集はできません。',
 'tooltip-ca-nstab-project' => 'プロジェクトページを表示',
 'tooltip-ca-nstab-image' => 'ファイルページを表示',
 'tooltip-ca-nstab-mediawiki' => 'システムメッセージを表示',
@@ -3119,18 +3123,18 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-help' => 'ヘルプページを表示',
 'tooltip-ca-nstab-category' => 'カテゴリページを閲覧',
 'tooltip-minoredit' => 'この編集に細部の変更の印を付ける',
-'tooltip-save' => '変更を保存',
+'tooltip-save' => '変更を保存する',
 'tooltip-preview' => '変更をプレビューで確認できます。保存前に使用してください!',
-'tooltip-diff' => '文章中で変更した箇所を表示',
-'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\95ã\82\8cã\81\9fäº\8cã\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82',
-'tooltip-watch' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81¸è¿½å\8a ã\81\97ã\81¾ã\81\99',
-'tooltip-watchlistedit-normal-submit' => 'ã\82¿ã\82¤ã\83\88ã\83«ã\82\92å\89\8aé\99¤',
-'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新',
+'tooltip-diff' => '文章中で変更した箇所を表示する',
+'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\99ã\82\8b',
+'tooltip-watch' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¿½å\8a ã\81\99ã\82\8b',
+'tooltip-watchlistedit-normal-submit' => 'ã\83\9aã\83¼ã\82¸ã\82\92é\99¤å\8e»ã\81\99ã\82\8b',
+'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新する',
 'tooltip-recreate' => '削除されていても、ページを再作成する',
-'tooltip-upload' => 'アップロードを開始',
+'tooltip-upload' => 'アップロードを開始する',
 'tooltip-rollback' => '「巻き戻し」は、このページの最後の編集者によるこのページへの編集を1クリックで差し戻します',
-'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューをつけて開きます。要約欄に取り消しの理由を追加することができます。',
-'tooltip-preferences-save' => '設定を保存',
+'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューを付けて開きます。要約欄に取り消しの理由を追加できます。',
+'tooltip-preferences-save' => '設定を保存する',
 'tooltip-summary' => '短い要約を入力してください',
 
 # Stylesheets
@@ -3191,6 +3195,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'spambot_username' => 'MediaWikiスパム除去',
 'spam_reverting' => '$1へのリンクを含まない最新の版に差し戻し',
 'spam_blanking' => 'すべての版が$1へのリンクを含んでいます。白紙化します。',
+'spam_deleting' => 'すべての版が$1へのリンクを含んでいます。削除します。',
 
 # Info page
 'pageinfo-title' => '「$1」の情報',
@@ -3202,8 +3207,8 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'pageinfo-watchers' => 'ウォッチリストに入れている利用者数',
 'pageinfo-edits' => '編集回数',
 'pageinfo-authors' => '投稿者数',
-'pageinfo-views' => '閲覧数',
-'pageinfo-viewsperedit' => '閲覧回数に対する編集回数',
+'pageinfo-views' => '閲覧数',
+'pageinfo-viewsperedit' => '1編集あたりの閲覧回数',
 
 # Skin names
 'skinname-standard' => 'クラシック',
@@ -3220,11 +3225,11 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'markaspatrolleddiff' => '巡回済みにする',
 'markaspatrolledtext' => 'このページを巡回済みにする',
 'markedaspatrolled' => '巡回済みにしました',
-'markedaspatrolledtext' => '選択された[[:$1|$1]]の版を巡回済みにしました。',
+'markedaspatrolledtext' => '[[:$1]]の、選択した版を巡回済みにしました。',
 'rcpatroldisabled' => '最近の更新の巡回は無効です',
 'rcpatroldisabledtext' => '最近の更新の巡回機能は現在無効になっています。',
-'markedaspatrollederror' => '巡回済みにできません',
-'markedaspatrollederrortext' => 'å·¡å\9b\9eæ¸\88ã\81¿ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81ç\89\88ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
+'markedaspatrollederror' => '巡回済みにできません',
+'markedaspatrollederrortext' => '巡回済みにするには、版を指定する必要があります。',
 'markedaspatrollederror-noautopatrol' => '自分の編集を巡回済みにする権限がありません。',
 
 # Patrol log
@@ -3238,9 +3243,9 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'filedeleteerror-long' => 'ファイルの削除中にエラーが発生しました:
 
 $1',
-'filedelete-missing' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\81\9fã\82\81ã\80\81å\89\8aé\99¤ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
-'filedelete-old-unregistered' => '指定されたファイルの版「$1」はデータベースにありません。',
-'filedelete-current-unregistered' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\86\85ã\81«ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82',
+'filedelete-missing' => 'ファイル「$1」は存在しないため、削除できません。',
+'filedelete-old-unregistered' => '指定されたファイルの版「$1」はデータベースにありません。',
+'filedelete-current-unregistered' => '指定されたファイル「$1」はデータベース内にありません。',
 'filedelete-archive-read-only' => '保存版ディレクトリ「$1」は、ウェブサーバーから書き込み不可になっています。',
 
 # Browsing diffs
@@ -3253,16 +3258,16 @@ $1',
 'imagemaxsize' => "画像のサイズ制限:<br />''(ファイルページに対する)''",
 'thumbsize' => 'サムネイルの大きさ:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1×$2、$3 {{PLURAL:$3|ページ}}',
+'widthheightpage' => '$1 × $2、$3 {{PLURAL:$3|ページ}}',
 'file-info' => 'ファイルサイズ:$1、MIMEタイプ:$2',
-'file-info-size' => '$1×$2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4',
-'file-info-size-pages' => '$1×$2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4、$5 {{PLURAL:$5|ページ}}',
+'file-info-size' => '$1 × $2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4',
+'file-info-size-pages' => '$1 × $2 ピクセル、ファイルサイズ:$3、MIMEタイプ:$4、$5 {{PLURAL:$5|ページ}}',
 'file-nohires' => '高解像度版はありません。',
-'svg-long-desc' => 'SVG ファイル、$1×$2 ピクセル、ファイルサイズ:$3',
+'svg-long-desc' => 'SVG ファイル、$1 × $2 ピクセル、ファイルサイズ:$3',
 'show-big-image' => '高解像度での画像',
 'show-big-image-preview' => 'このプレビューのサイズ:$1。',
 'show-big-image-other' => 'その他の{{PLURAL:$2|解像度}}:$1。',
-'show-big-image-size' => '$1×$2 ピクセル',
+'show-big-image-size' => '$1 × $2 ピクセル',
 'file-info-gif-looped' => 'ループします',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|フレーム}}',
 'file-info-png-looped' => '繰り返し',
@@ -3271,7 +3276,7 @@ $1',
 
 # Special:NewFiles
 'newimages' => '新しいファイルのギャラリー',
-'imagelisttext' => "以下は、'''$1'''ファイルの$2で並び替えられた一覧です。",
+'imagelisttext' => "以下は、'''$1'''{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。",
 'newimages-summary' => 'この特別ページでは、最近アップロードされたファイルを表示します。',
 'newimages-legend' => '絞り込み',
 'newimages-label' => 'ファイル名(またはその一部):',
@@ -3284,8 +3289,8 @@ $1',
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'video-dims' => '$1、 $2 × $3',
 'seconds' => '{{PLURAL:$1|$1 秒}}',
-'minutes' => '{{PLURAL:$1|$1分}}',
-'hours' => '{{PLURAL:$1|$1時間}}',
+'minutes' => '{{PLURAL:$1|$1 分}}',
+'hours' => '{{PLURAL:$1|$1 時間}}',
 'days' => '{{PLURAL:$1|$1 日}}',
 'ago' => '$1前',
 
@@ -3294,7 +3299,7 @@ $1',
 
 箇条書き項目(*で始まる行)のみが考慮されます。
 各行最初のリンクは、好ましくないファイルへのリンクとしてください。
\90\8cã\81\98è¡\8cã\81§ã\81\9dã\82\8c以é\99\8dã\81«ã\81\82ã\82\8bã\83ªã\83³ã\82¯ã\81¯ä¾\8bå¤\96ã\80\81ã\81¤ã\81¾ã\82\8aã\82¤ã\83³ã\83©ã\82¤ã\83³æ\8c¿å\85¥ã\81\95ã\82\8cã\81¦ã\82\82ã\82\88ã\81\84ã\83\9aã\83¼ã\82¸ã\81¨ã\81¿なされます。',
\90\8cã\81\98è¡\8cã\81§ã\81\9dã\82\8c以é\99\8dã\81«ã\81\82ã\82\8bã\83ªã\83³ã\82¯ã\81¯ä¾\8bå¤\96ã\80\81ã\81¤ã\81¾ã\82\8aã\82¤ã\83³ã\83©ã\82¤ã\83³æ\8c¿å\85¥ã\81\95ã\82\8cã\81¦ã\82\82ã\81\84ã\81\84ã\83\9aã\83¼ã\82¸ã\81¨è¦\8bなされます。',
 
 /*
 Short names for language variants used for language conversion links.
@@ -3302,20 +3307,20 @@ To disable showing a particular link, set it to 'disable', e.g.
 'variantname-zh-sg' => 'disable',
 Variants for Chinese language
 */
-'variantname-zh-hans' => '簡体',
-'variantname-zh-hant' => '繁体',
+'variantname-zh-hans' => '中国語(簡体)',
+'variantname-zh-hant' => '中国語(繁体)',
 'variantname-zh-cn' => '中国簡体',
 'variantname-zh-tw' => '台湾正体',
 'variantname-zh-hk' => '香港正体',
-'variantname-zh-mo' => 'マカオ',
+'variantname-zh-mo' => 'マカオ繁体',
 'variantname-zh-sg' => 'シンガポール簡体',
-'variantname-zh-my' => 'マレーシア',
-'variantname-zh' => '中',
+'variantname-zh-my' => 'マレーシア簡体',
+'variantname-zh' => '中国語',
 
 # Variants for Gan language
-'variantname-gan-hans' => 'hans',
-'variantname-gan-hant' => 'hant',
-'variantname-gan' => 'ã\82¬ã\82¬ã\82¦ã\82º語',
+'variantname-gan-hans' => 'カン語(簡体)',
+'variantname-gan-hant' => 'カン語(繁体)',
+'variantname-gan' => 'ã\82«ã\83³語',
 
 # Variants for Serbian language
 'variantname-sr-ec' => 'セルビア語 (キリル文字)',
@@ -3352,7 +3357,7 @@ Variants for Chinese language
 このファイルが元の状態から変更されている場合、いくつかの項目は、修正されたファイルを完全に反映していないかもしれません。',
 'metadata-expand' => '拡張項目を表示',
 'metadata-collapse' => '拡張項目を非表示',
-'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
+'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81§å\88\97æ\8c\99ã\81\97ã\81¦ã\81\84ã\82\8bç\94»å\83\8fメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
 他のものは既定では非表示です。
 * make
 * model
@@ -3379,10 +3384,10 @@ Variants for Chinese language
 'exif-planarconfiguration' => '画像データの並び',
 'exif-ycbcrsubsampling' => 'YCCの画素構成 (Cの間引き率)',
 'exif-ycbcrpositioning' => 'YCCの画素構成 (YとCの位置)',
-'exif-xresolution' => '画像の幅の解像度',
-'exif-yresolution' => '画像の高さの解像度',
+'exif-xresolution' => '水平方向の解像度',
+'exif-yresolution' => '垂直方向の解像度',
 'exif-stripoffsets' => '画像データのロケーション',
-'exif-rowsperstrip' => '1ストリップごとの行数',
+'exif-rowsperstrip' => '1ストリップごとの行数',
 'exif-stripbytecounts' => 'ストリップの総バイト数',
 'exif-jpeginterchangeformat' => 'JPEGのSOIへのオフセット',
 'exif-jpeginterchangeformatlength' => 'JPEGデータのバイト数',
@@ -3392,10 +3397,10 @@ Variants for Chinese language
 'exif-referenceblackwhite' => '参照黒色点値と参照白色点値',
 'exif-datetime' => 'ファイル変更日時',
 'exif-imagedescription' => '画像の説明',
-'exif-make' => '画像入力機器のメーカ名',
-'exif-model' => '画像入力機器のモデル名',
+'exif-make' => '撮影機器のメーカー名',
+'exif-model' => '撮影機器のモデル名',
 'exif-software' => '使用ソフトウェア名',
-'exif-artist' => '作者',
+'exif-artist' => '作者',
 'exif-copyright' => '撮影著作権者/編集著作権者',
 'exif-exifversion' => 'Exifバージョン',
 'exif-flashpixversion' => '対応フラッシュピックスバージョン',
@@ -3416,14 +3421,14 @@ Variants for Chinese language
 'exif-fnumber' => 'F値',
 'exif-exposureprogram' => '露出プログラム',
 'exif-spectralsensitivity' => 'スペクトル感度',
-'exif-isospeedratings' => 'ISOスピードレート',
+'exif-isospeedratings' => 'ISO 感度',
 'exif-shutterspeedvalue' => 'シャッタースピード',
 'exif-aperturevalue' => '絞り値',
 'exif-brightnessvalue' => '輝度値',
 'exif-exposurebiasvalue' => '露出補正値',
 'exif-maxaperturevalue' => 'レンズ最小F値',
 'exif-subjectdistance' => '被写体距離',
-'exif-meteringmode' => '測光方式',
+'exif-meteringmode' => '測光モード',
 'exif-lightsource' => '光源',
 'exif-flash' => 'フラッシュ',
 'exif-focallength' => 'レンズ焦点距離',
@@ -3441,7 +3446,7 @@ Variants for Chinese language
 'exif-exposuremode' => '露出モード',
 'exif-whitebalance' => 'ホワイトバランス',
 'exif-digitalzoomratio' => 'デジタルズーム倍率',
-'exif-focallengthin35mmfilm' => '35mm換算レンズ焦点距離',
+'exif-focallengthin35mmfilm' => '35mmフィルム換算焦点距離',
 'exif-scenecapturetype' => '撮影シーンタイプ',
 'exif-gaincontrol' => 'ゲイン制御',
 'exif-contrast' => '撮影コントラスト',
@@ -3457,24 +3462,24 @@ Variants for Chinese language
 'exif-gpslongitude' => '経度',
 'exif-gpsaltituderef' => '高度の基準',
 'exif-gpsaltitude' => '高度',
-'exif-gpstimestamp' => 'GPSæ\99\82é\96\93\8e\9få­\90æ\99\82è¨\88ã\81®æ\99\82é\96\93)',
+'exif-gpstimestamp' => 'GPSæ\97¥æ\99\82ï¼\88å\8e\9få­\90æ\99\82è¨\88ï¼\89',
 'exif-gpssatellites' => '測位に用いた衛星信号',
 'exif-gpsstatus' => 'GPS受信機の状態',
 'exif-gpsmeasuremode' => 'GPSの測位方法',
 'exif-gpsdop' => '測位の信頼性',
 'exif-gpsspeedref' => '速度の単位',
-'exif-gpsspeed' => '速度',
+'exif-gpsspeed' => 'GPS 受信機の速度',
 'exif-gpstrackref' => '進行方向の単位',
 'exif-gpstrack' => '進行方向',
 'exif-gpsimgdirectionref' => '撮影方向の基準',
-'exif-gpsimgdirection' => '撮影した画像の方向',
+'exif-gpsimgdirection' => '画像の方向',
 'exif-gpsmapdatum' => '測位に用いた地図データ',
-'exif-gpsdestlatituderef' => '目的地の北緯または南緯',
+'exif-gpsdestlatituderef' => '目的地の北緯/南緯',
 'exif-gpsdestlatitude' => '目的地の緯度',
-'exif-gpsdestlongituderef' => '目的地の東経または西経',
+'exif-gpsdestlongituderef' => '目的地の東経/西経',
 'exif-gpsdestlongitude' => '目的地の経度',
 'exif-gpsdestbearingref' => '目的地の方角の単位',
-'exif-gpsdestbearing' => '目的の方角',
+'exif-gpsdestbearing' => '目的の方角',
 'exif-gpsdestdistanceref' => '目的地までの距離の単位',
 'exif-gpsdestdistance' => '目的地までの距離',
 'exif-gpsprocessingmethod' => '測位方式の名称',
@@ -3483,18 +3488,18 @@ Variants for Chinese language
 'exif-gpsdifferential' => 'GPS補正測位',
 'exif-jpegfilecomment' => 'JPEGファイルのコメント',
 'exif-keywords' => 'キーワード',
-'exif-worldregioncreated' => 'この写真が撮られた大陸や地域',
-'exif-countrycreated' => 'この写真が撮られた国',
-'exif-countrycodecreated' => 'この写真が撮られた国の国名コード',
-'exif-provinceorstatecreated' => 'この写真が撮られた州や県',
-'exif-citycreated' => 'この写真が撮られた市町村',
-'exif-sublocationcreated' => 'この写真が撮られた町名や通りの名前',
-'exif-worldregiondest' => '写っている大陸地域',
+'exif-worldregioncreated' => '写真が撮影された大陸/地域',
+'exif-countrycreated' => '写真が撮影された国',
+'exif-countrycodecreated' => '写真が撮影された国のコード',
+'exif-provinceorstatecreated' => '写真が撮影された州/県',
+'exif-citycreated' => '写真が撮影された都市',
+'exif-sublocationcreated' => '写真が撮影された町や通りの名前',
+'exif-worldregiondest' => '写っている大陸/地域',
 'exif-countrydest' => '写っている国',
-'exif-countrycodedest' => '写っている国の国名コード',
-'exif-provinceorstatedest' => '写っている州県',
-'exif-citydest' => '写っている市町村',
-'exif-sublocationdest' => '写っている町や通りの名前',
+'exif-countrycodedest' => '写っている国のコード',
+'exif-provinceorstatedest' => '写っている州/県',
+'exif-citydest' => '写っている都市',
+'exif-sublocationdest' => '写っている町や通りの名前',
 'exif-objectname' => '短いタイトル',
 'exif-specialinstructions' => '取扱いに関する特記事項',
 'exif-headline' => '見出し',
@@ -3510,8 +3515,8 @@ Variants for Chinese language
 'exif-writer' => '記入者',
 'exif-languagecode' => '言語',
 'exif-iimversion' => 'IIMバージョン',
-'exif-iimcategory' => 'カテゴリ',
-'exif-iimsupplementalcategory' => '補足カテゴリ',
+'exif-iimcategory' => 'カテゴリ',
+'exif-iimsupplementalcategory' => '補足カテゴリ',
 'exif-datetimeexpires' => '使用期限',
 'exif-datetimereleased' => '初公開日',
 'exif-originaltransmissionref' => '原転送位置コード',
@@ -3528,7 +3533,7 @@ Variants for Chinese language
 'exif-copyrightowner' => '著作権者',
 'exif-usageterms' => '使用条件',
 'exif-webstatement' => 'オンライン上の著作権文',
-'exif-originaldocumentid' => '元文書の一意な識別子',
+'exif-originaldocumentid' => '元文書の一意なID',
 'exif-licenseurl' => '著作権ライセンスのURL',
 'exif-morepermissionsurl' => '代替ライセンス情報',
 'exif-attributionurl' => 'この作品を再利用する際に、次のURLにリンクしてください',
@@ -3562,10 +3567,10 @@ Variants for Chinese language
 'exif-orientation-2' => '左右反転',
 'exif-orientation-3' => '180°回転',
 'exif-orientation-4' => '上下反転',
-'exif-orientation-5' => '反時計回りに90°回転 上下反転',
-'exif-orientation-6' => '90° 回転 CCW',
-'exif-orientation-7' => '時計回りに90°回転 上下反転',
-'exif-orientation-8' => '90° 回転 CW',
+'exif-orientation-5' => '反時計回りに90°回転上下反転',
+'exif-orientation-6' => '反時計回りに90°回転',
+'exif-orientation-7' => '時計回りに90°回転上下反転',
+'exif-orientation-8' => '時計回りに90°回転',
 
 'exif-planarconfiguration-1' => '点順次フォーマット',
 'exif-planarconfiguration-2' => '面順次フォーマット',
@@ -3775,14 +3780,14 @@ Variants for Chinese language
 以下のボタンを押すとメールアドレスに確認メールが送られます。
 メールには確認用コードを含むリンクが書かれています。
 そのリンクをブラウザーで読み込んで、メールアドレスの正当性を確認してください。',
-'confirmemail_pending' => '確認メールは既に送信されています
\81\93ã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9fã\81°ã\81\8bã\82\8aã\81§ã\81\82ã\82\8cã\81°ã\80\81ã\83¡ã\83¼ã\83«ã\81\8cå±\8aã\81\8fã\81¾ã\81§æ\95°å\88\86ã\81»ã\81©å¾\85ã\81\9fã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93。',
-'confirmemail_send' => '確認用コードを送信',
+'confirmemail_pending' => '確認用コードをメールで既にお送りしました
\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9fã\81°ã\81\8bã\82\8aã\81®å ´å\90\88ã\81¯ã\80\81ã\83¡ã\83¼ã\83«ã\81\8cå±\8aã\81\8fã\81¾ã\81§ã\81\97ã\81°ã\82\89ã\81\8fã\81\8aå¾\85ã\81¡ã\81\8fã\81 ã\81\95ã\81\84ã\80\82å±\8aã\81\8bã\81ªã\81\84å ´å\90\88ã\81¯æ\96°ã\81\97ã\81\84ã\82³ã\83¼ã\83\89ã\82\92å\86\8d度ç\94³è«\8bã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
+'confirmemail_send' => '確認用コードをメールで送信',
 'confirmemail_sent' => '確認メールを送信しました。',
-'confirmemail_oncreate' => 'ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81®æ­£å½\93æ\80§ã\82\92確èª\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\82³ã\83¼ã\83\89ã\82\92å\90«ã\82\93ã\81 ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡しました。
-この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。',
+'confirmemail_oncreate' => 'ã\81\82ã\81ªã\81\9fã\81®ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81«ç¢ºèª\8dç\94¨ã\82³ã\83¼ã\83\89ã\82\92ã\83¡ã\83¼ã\83«ã\81§ã\81\8aé\80\81ã\82\8aしました。
+この確認をしなくてもログインはできますが、確認するまでウィキ内のメール関連の機能は無効化されます。',
 'confirmemail_sendfailed' => '{{SITENAME}}は確認メールを送信できませんでした。
\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81«ä¸\8dæ­£ã\81ªæ\96\87å­\97ã\81\8cå\90«ã\81¾ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\81\8bã\81©ã\81\86ã\81\8b確èª\8dã\81\97ã\81¦ください。
\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\84¡å\8a¹ã\81ªæ\96\87å­\97ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\81ªã\81\84ã\81\8bã\81\94確èª\8dください。
 
 メールサーバーからの返答:$1',
 'confirmemail_invalid' => '確認用コードが正しくありません。
@@ -3808,7 +3813,7 @@ $5
 
 この確認用コードは、$4に期限切れになります。',
 'confirmemail_body_changed' => '誰か(おそらくあなた)が IP アドレス $1 から、
-{{SITENAME}} のアカウント「$2」のメール アドレスをこのアドレスに変更しました。
+{{SITENAME}} のアカウント「$2」のメールアドレスをこのアドレスに変更しました。
 
 このアカウントが本当にあなたのものであれば、以下のリンクをブラウザーで開いて、
 {{SITENAME}} のメール機能を再び有効にしてください:
@@ -3816,21 +3821,21 @@ $5
 $3
 
 もしあなたのアカウント *ではない* 場合は、
-ブラウザーで以下のリンクを開いて、メール アドレスの確認をキャンセルしてください:
+ブラウザーで以下のリンクを開いて、メールアドレスの確認をキャンセルしてください:
 
 $5
 
 この確認コードは $4 に期限切れになります。',
 'confirmemail_body_set' => '誰か(おそらくあなた)が IP アドレス $1 から
-{{SITENAME}} のアカウント「$2」のメール アドレスをこのアドレスに設定しました。
+{{SITENAME}} のアカウント「$2」のメールアドレスをこのアドレスに設定しました。
 
 このアカウントが本当にあなたのものであれば、以下のリンクをブラウザーで開いて、
 {{SITENAME}} のメール機能を再び有効にしてください。
 
 $3
 
-もしあなたのアカウントでない場合は、
-次のリンクをブラウザーで開いて、メール アドレスの確認をキャンセルしてください:
\82\82ã\81\97ã\81\82ã\81ªã\81\9fã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81§ã\81¯ã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81
+次のリンクをブラウザーで開いて、メールアドレスの確認をキャンセルしてください:
 
 $5
 
@@ -3847,13 +3852,13 @@ $5
 'deletedwhileediting' => "'''警告:'''このページが、編集開始後に削除されました!",
 'confirmrecreate' => "[[User:$1|$1]]([[User talk:$1|トーク]])が、このページの編集開始後に、このページを、次の理由で削除しました。
 : ''$2''
-本当にこのままこのページを再作成していか確認してください。",
-'confirmrecreate-noreason' => 'ã\81\82ã\81ªã\81\9fã\81®ç·¨é\9b\86ã\82\92é\96\8bå§\8bã\81\97ã\81\9få¾\8cã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92[[User:$1|$1]] ([[User talk:$1|ã\83\88ã\83¼ã\82¯]])ã\81\8cå\89\8aé\99¤ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82æ\9c¬å½\93ã\81«ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92å\86\8dä½\9cæ\88\90ã\81\97ã\81¦ã\81\84ã\81\84ã\81®ã\81\8bã\81\94確èª\8dã\81\8fã\81 ã\81\95ã\81\84ã\80\82',
+本当にこのままこのページを再作成していか確認してください。",
+'confirmrecreate-noreason' => 'あなたの編集を開始した後、このページを[[User:$1|$1]] ([[User talk:$1|トーク]])が削除しました。本当にこのページを再作成していいかご確認ください。',
 'recreate' => '再作成する',
 
 # action=purge
-'confirm_purge_button' => 'はい',
-'confirm-purge-top' => 'ã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\81¾ã\81\99ã\80\82ã\82\88ã\82\8dã\81\97ã\81\84ã\81§すか?',
+'confirm_purge_button' => 'OK',
+'confirm-purge-top' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\81¾すか?',
 'confirm-purge-bottom' => 'ページをパージすると、キャッシュが破棄され、強制的に最新の版が表示されます。',
 
 # action=watch/unwatch
@@ -3899,6 +3904,11 @@ $5
 'size-kilobytes' => '$1キロバイト',
 'size-megabytes' => '$1メガバイト',
 'size-gigabytes' => '$1ギガバイト',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
 
 # Live preview
 'livepreview-loading' => '読み込み中...',
@@ -3909,33 +3919,33 @@ $5
 通常のプレビューを試してください。',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'ウォッチリストには、$1件のページ名が含まれています(トークページは除く)。',
-'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\83\9aã\83¼ã\82¸å\90\8dã\81\8c\81¤ã\82\82ã\81\82ã\82\8aません。',
+'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています(トークページを除く)。',
+'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\81©ã\81®ã\83\9aã\83¼ã\82¸ã\82\82ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ません。',
 'watchlistedit-normal-title' => 'ウォッチリストの編集',
 'watchlistedit-normal-legend' => 'ウォッチリストからページ名を除去',
 'watchlistedit-normal-explain' => 'ウォッチリストに入っているページ名を以下に表示しています。
-ページを除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
+ページを除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
 また、[[Special:EditWatchlist/raw|ウォッチリストをそのまま編集]]も使用できます。',
 'watchlistedit-normal-submit' => 'ページを除去',
-'watchlistedit-normal-done' => 'ウォッチリストから $1 {{PLURAL:$1|件}}を削除しました:',
+'watchlistedit-normal-done' => 'ウォッチリストから {{PLURAL:$1|$1 件のページ}}を削除しました:',
 'watchlistedit-raw-title' => 'ウォッチリストをそのまま編集',
 'watchlistedit-raw-legend' => 'ウォッチリストをそのまま編集',
-'watchlistedit-raw-explain' => 'ウォッチリストに含まれるページ名を以下に表示しています。この一覧で追加または除去ができます。
+'watchlistedit-raw-explain' => '以下に、ウォッチリストに含まれるページ名を列挙しています。この一覧で追加や除去ができます。
 1行に1ページ名です。
 完了したら、「{{int:Watchlistedit-raw-submit}}」をクリックしてください。
 [[Special:EditWatchlist|標準の編集ページ]]も使用できます。',
 'watchlistedit-raw-titles' => 'ページ名:',
 'watchlistedit-raw-submit' => 'ウォッチリストを更新',
 'watchlistedit-raw-done' => 'ウォッチリストを更新しました。',
-'watchlistedit-raw-added' => '$1のページ名が追加されました:',
-'watchlistedit-raw-removed' => '$1件のページ名が除去されました:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|$1 件のページ}}を追加しました:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|$1 件のページ}}を除去しました:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'é\96¢é\80£ã\81\99ã\82\8bå¤\89æ\9b´ã\81®è¡¨ç¤º',
+'watchlisttools-view' => 'é\96¢é\80£ã\81\99ã\82\8bå¤\89æ\9b´ã\82\92é\96²è¦§',
 'watchlisttools-edit' => 'ウォッチリストの閲覧と編集',
 'watchlisttools-raw' => 'ウォッチリストをそのまま編集',
 
@@ -4002,7 +4012,7 @@ $5
 
 # Core parser functions
 'unknown_extension_tag' => '不明な拡張機能タグ「$1」です',
-'duplicate-defaultsort' => "'''警告:'''既定の並ã\81³æ\9b¿ã\81\88ã\82­ã\83¼ã\80\8c$2ã\80\8dã\81\8cã\80\81ã\81\9dã\81®å\89\8dã\81«æ\9b¸ã\81\8bã\82\8cã\81¦ã\81\84ã\82\8bæ\97¢å®\9aã\81®ä¸¦ã\81³æ\9b¿ã\81\88ã\82­ã\83¼ã\80\8c$1ã\80\8dã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
+'duplicate-defaultsort' => "'''警告:'''既定のã\82½ã\83¼ã\83\88ã\82­ã\83¼ã\80\8c$2ã\80\8dã\81\8cã\80\81ã\81\9dã\81®å\89\8dã\81«æ\9b¸ã\81\8bã\82\8cã\81¦ã\81\84ã\82\8bæ\97¢å®\9aã\81®ã\82½ã\83¼ã\83\88ã\82­ã\83¼ã\80\8c$1ã\80\8dã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
 
 # Special:Version
 'version' => 'バージョン情報',
@@ -4024,19 +4034,19 @@ $5
 'version-license' => 'ライセンス',
 'version-poweredby-credits' => "このウィキは、'''[//www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)で動作しています。",
 'version-poweredby-others' => 'その他',
-'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約にもとづき、このライブラリの再配布や改変をすることができます。
+'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約に基づき、このライブラリを再配布および改変できます。
 
-MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧さい。
+MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧ください。
 
-あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
+あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the 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-product' => '製品',
 'version-software-version' => 'バージョン',
-'version-entrypoints' => 'エントリー ポイントの URL',
-'version-entrypoints-header-entrypoint' => 'エントリー ポイント',
+'version-entrypoints' => 'エントリーポイントの URL',
+'version-entrypoints-header-entrypoint' => 'エントリーポイント',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 記事のパス]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath スクリプト パス]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath/ja 記事のパス]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:FilePath
 'filepath' => 'ファイルパス',
@@ -4051,17 +4061,16 @@ MediaWikiは、有用であることを期待して配布されていますが
 'fileduplicatesearch-legend' => '重複の検索',
 'fileduplicatesearch-filename' => 'ファイル名:',
 'fileduplicatesearch-submit' => '検索',
-'fileduplicatesearch-info' => '$1×$2 ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
+'fileduplicatesearch-info' => '$1 × $2 ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
 'fileduplicatesearch-result-1' => 'ファイル「$1」と重複するファイルはありません。',
-'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯$2件ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¨é\87\8dè¤\87ã\81\97ã\81¦ã\81\84ます。',
+'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81«ã\81¯ {{PLURAL:$2|$2 ä»¶ã\81®é\87\8dè¤\87ã\83\95ã\82¡ã\82¤ã\83«}}ã\81\8cã\81\82ã\82\8aます。',
 'fileduplicatesearch-noresults' => '「$1」という名前のファイルはありません。',
 
 # Special:SpecialPages
 'specialpages' => '特別ページ',
 'specialpages-note' => '----
 * 通常の特別ページ
-* <span class="mw-specialpagerestricted">制限されている特別ページ</span>
-* <span class="mw-specialpagecached">(廃止されたかもしれない)キャッシュされた特別ページ</span>',
+* <span class="mw-specialpagerestricted">制限されている特別ページ</span>',
 'specialpages-group-maintenance' => 'メンテナンス報告',
 'specialpages-group-other' => 'その他の特別ページ',
 'specialpages-group-login' => 'ログイン/利用者登録',
@@ -4080,21 +4089,21 @@ MediaWikiは、有用であることを期待して配布されていますが
 'intentionallyblankpage' => 'このページは意図的に白紙にされています。',
 
 # External image whitelist
-'external_image_whitelist' => '  #ã\81\93ã\81®è¡\8cã\81¯ã\81\9dのままにしておいてください<pre>
-#この下に正規表現(//の間にる記述)を置いてください
+'external_image_whitelist' => '  #ã\81\93ã\81®è¡\8cã\81¯ã\81\93のままにしておいてください<pre>
+#この下に正規表現(//の間にる記述)を置いてください
 #外部の(ホットリンクされている)画像の URL と一致するか検査されます
 #一致する場合は画像として、一致しない場合は画像へのリンクとして表示されます
-#行の頭に # をけるとコメントとして扱われます
+#行の頭に # をけるとコメントとして扱われます
 #大文字と小文字は区別されません
 
-#æ­£è¦\8f表ç\8f¾ã\81¯ã\81\99ã\81¹ã\81¦ã\81\93ã\81®è¡\8cã\81®ä¸\8aã\81«ç½®ã\81\84ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\81\93ã\81®è¡\8cã\82\92å¤\89æ\9b´ã\81\97ã\81ªã\81\84ã\81§ください</pre>',
+#æ­£è¦\8f表ç\8f¾ã\81¯ã\81\99ã\81¹ã\81¦ã\81\93ã\81®è¡\8cã\81®ä¸\8aã\81«ç½®ã\81\84ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\81\93ã\81®è¡\8cã\81¯ã\81\93ã\81®ã\81¾ã\81¾ã\81«ã\81\97ã\81¦ã\81\8aã\81\84ã\81¦ください</pre>',
 
 # Special:Tags
 'tags' => '有効な変更タグ',
 'tag-filter' => '[[Special:Tags|タグ]]絞り込み:',
 'tag-filter-submit' => '絞り込み',
 'tags-title' => 'タグ',
-'tags-intro' => 'このページは、ソフトウェアが編集に対してけるタグとその意味の一覧です。',
+'tags-intro' => 'このページは、ソフトウェアが編集に対してけるタグとその意味の一覧です。',
 'tags-tag' => 'タグ名',
 'tags-display-header' => '変更一覧に表示されるもの',
 'tags-description-header' => '詳細な意味の説明',
@@ -4115,22 +4124,22 @@ MediaWikiは、有用であることを期待して配布されていますが
 'compare-revision-not-exists' => '指定された版は存在しません。',
 
 # Database error messages
-'dberr-header' => '問題発生中です',
+'dberr-header' => 'このウィキには問題があります',
 'dberr-problems' => '申し訳ありません!
 このウェブサイトに技術的な問題が発生しています。',
 'dberr-again' => '数分間待った後、もう一度読み込んでください。',
-'dberr-info' => '(データベースサーバー:$1に接続できませんでした。)',
-'dberr-usegoogle' => 'å\85\83ã\81«æ\88»ã\82\8bã\81¾ã\81§ã\80\81Googleã\82\92å\88©ç\94¨ã\81\97ã\81¦æ¤\9cç´¢ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82',
+'dberr-info' => '(データベースサーバーに接続できませんでした:$1)',
+'dberr-usegoogle' => '元に戻るまで、Googleを利用して検索できます。',
 'dberr-outofdate' => 'それらが収集した内容は古い可能性があることに注意してください。',
 'dberr-cachederror' => 'これは要求されたページをキャッシュした複製であり、古くなっている可能性があります。',
 
 # HTML forms
-'htmlform-invalid-input' => '入力になんらかの問題があります',
-'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8cæ\9c\89å\8a¹ã\81ªã\82\82ã\81®ではありません。',
-'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c整数ではありません。',
-'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cた値は数値ではありません。',
-'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最小値未満です',
-'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最大値を超えています',
+'htmlform-invalid-input' => '入力にらかの問題があります',
+'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯æ\9c\89å\8a¹ã\81ªé\81¸æ\8a\9eè\82¢ではありません。',
+'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯整数ではありません。',
+'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\97た値は数値ではありません。',
+'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最小値未満です',
+'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最大値を超えています',
 'htmlform-required' => 'この値は必要です',
 'htmlform-submit' => '送信',
 'htmlform-reset' => '変更を取り消す',
@@ -4170,31 +4179,32 @@ MediaWikiは、有用であることを期待して配布されていますが
 'logentry-newusers-create' => '$1 が利用者アカウントを作成しました',
 'logentry-newusers-create2' => '$1 が利用者アカウント「$3」を作成しました',
 'logentry-newusers-autocreate' => 'アカウント「$1」が自動的に作成されました',
-'newuserlog-byemail' => 'パスワードをメールで送信しました',
+'newuserlog-byemail' => 'パスワードをメールでお送りしました',
 
 # Feedback
-'feedback-bugornote' => '技術的な問題の詳細をご説明する準備ができているなら[$1 バグを報告]してください。それ以外の場合、下の簡易フォームを使用すれば、あなたのコメントが"[$3 $2]"にあなたの利用者名と使用中のブラウザ名と共に追加されます。',
+'feedback-bugornote' => '技術的な問題の詳細を説明なさる準備ができている場合は[$1 バグを報告]してください。
+そうではない場合は、下の簡易フォームを使用してください。あなたのコメントがあなたの利用者名とご使用中のブラウザー名と共に、ページ"[$3 $2]"に追加されます。',
 'feedback-subject' => '件名:',
 'feedback-message' => 'メッセージ:',
 'feedback-cancel' => 'キャンセル',
 'feedback-submit' => 'フィードバックを送信',
-'feedback-adding' => 'ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\82\92追å\8a ã\81\99ã\82\8b...',
+'feedback-adding' => 'ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\81®è¿½å\8a ...',
 'feedback-error1' => 'エラー:APIから認識されない結果が返ってきました',
 'feedback-error2' => 'エラー:編集に失敗しました',
 'feedback-error3' => 'エラー:APIからの応答がありません',
-'feedback-thanks' => 'ã\81\82ã\82\8aã\81\8cã\81¨ã\81\86ã\81\94ã\81\96ã\81\84ã\81¾ã\81\99ã\80\82ã\81\82ã\81ªã\81\9fã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\81¯ã\80\8c[$2 $1]ã\80\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\8a\95稿ã\81\95ã\82\8cました。',
+'feedback-thanks' => 'ã\81\82ã\82\8aã\81\8cã\81¨ã\81\86ã\81\94ã\81\96ã\81\84ã\81¾ã\81\99ã\80\82ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\82\92ã\80\8c[$2 $1]ã\80\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\8a\95稿ã\81\97ました。',
 'feedback-close' => '完了',
-'feedback-bugcheck' => 'Great! [$1 既出のバグ]に既に含まれていないか確認してください。',
-'feedback-bugnew' => 'チェック済み。バグを報告する。',
+'feedback-bugcheck' => 'Great! [$1 既出のバグ]に既に含まれていないかご確認ください。',
+'feedback-bugnew' => 'チェックしました。バグを報告します。',
 
 # API errors
 'api-error-badaccess-groups' => 'このウィキへのファイルのアップロードが許可されていません。',
-'api-error-badtoken' => '内部エラー:トークンが不正です。',
+'api-error-badtoken' => '内部エラー:トークンが正しくありません。',
 'api-error-copyuploaddisabled' => 'URLによるアップロードはこのサーバーでは無効になっています。',
 'api-error-duplicate' => '当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}存在しています。',
-'api-error-duplicate-archive' => '同じ内容で既に削除済みの{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}サイト上にあります。',
+'api-error-duplicate-archive' => 'サイト上に同じ内容の{{PLURAL:$1|[$2 別のファイル]が|[$2 他のファイルがいくつか]}}既にありましたが、{{PLURAL:$1|それは|それらは}}削除されました。',
 'api-error-duplicate-archive-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}は削除済みです。',
-'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}',
+'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}です。',
 'api-error-empty-file' => '送信されたファイルは空でした。',
 'api-error-emptypage' => '内容がないページの新規作成は許可されていません。',
 'api-error-fetchfileerror' => '内部エラー:ファイルの取得中に問題が発生しました。',
@@ -4207,14 +4217,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'api-error-illegal-filename' => 'ファイル名が許可されていません。',
 'api-error-internal-error' => '内部エラー:ウィキ上でアップロードを処理する際に問題が発生しました。',
 'api-error-invalid-file-key' => '内部エラー:一時格納場所にファイルが見つかりませんでした。',
-'api-error-missingparam' => '内部エラー:リクエストのパラメータが足りません。',
+'api-error-missingparam' => 'å\86\85é\83¨ã\82¨ã\83©ã\83¼ï¼\9aã\83ªã\82¯ã\82¨ã\82¹ã\83\88ã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\81\8c足ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82',
 'api-error-missingresult' => '内部エラー:複製に成功したか判断できませんでした。',
 'api-error-mustbeloggedin' => 'ファイルをアップロードするにはログインする必要があります。',
-'api-error-mustbeposted' => 'このソフトウェアにバグがありました。適切なHTTPメソッドを使用していません。',
+'api-error-mustbeposted' => '内部エラー:リクエストはHTTP POSTである必要があります。',
 'api-error-noimageinfo' => 'アップロードには成功しましたが、サーバーはファイルに関する情報を返しませんでした。',
 'api-error-nomodule' => '内部エラー:アップロードを処理するモジュールが設定されていません。',
 'api-error-ok-but-empty' => '内部エラー:サーバーからの応答がありません。',
-'api-error-overwrite' => '既存のファイルへ上書きすることは許可されていません。',
+'api-error-overwrite' => '既存のファイルへの上書きは許可されていません。',
 'api-error-stashfailed' => '内部エラー:サーバーは一時ファイルを格納できませんでした。',
 'api-error-timeout' => 'サーバーが決められた時間内に応答しませんでした。',
 'api-error-unclassified' => '不明なエラーが発生しました。',
index 2f6704b..e3e527f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Jutish (Jysk)
+/** Jutish (jysk)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index b5fbceb..2aa66fb 100644 (file)
@@ -641,6 +641,7 @@ Yèn isih tetep ora kasil, cobanen metu log lan mlebu manèh.'''",
 '''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
 'token_suffix_mismatch' => "'''Suntingan panjenengan ditulak amerga aplikasi klièn panjenengan ngowahi karakter tandha wewacan ing suntingan. Suntingan iku ditulak kanggo untuk menggak kaluputan ing tèks artikel. Prekara iki kadhangkala dumadi yèn panjenengan ngangem dines layanan proxy anonim adhedhasar situs wèb sing duwé masalah.'''",
 'editing' => 'Nyunting $1',
+'creating' => 'Nggawé $1',
 'editingsection' => 'Nyunting $1 (bagian)',
 'editingcomment' => 'Nyunting $1 (bagéyan anyar)',
 'editconflict' => 'Konflik panyuntingan: $1',
@@ -867,6 +868,7 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
 
 # Diffs
 'history-title' => 'Sajarah revisi saka "$1"',
+'difference-title' => '$1: Bèntenipun revisi',
 'lineno' => 'Larikan $1:',
 'compareselectedversions' => 'Bandhingna vèrsi kapilih',
 'showhideselectedversions' => 'Tampilaké/dhelikaké révisi kapilih',
@@ -1201,7 +1203,7 @@ Panjenengan uga bisa milih supaya wong liya ngubungi panjenengan liwat jeneng pa
 'nchanges' => '$1 {{PLURAL:$1|pangowahan|owah-owahan}}',
 'recentchanges' => 'Owah-owahan',
 'recentchanges-legend' => 'Pilihan owah-owahan pungkasan',
-'recentchangestext' => 'Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.',
+'recentchanges-summary' => 'Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.',
 'recentchanges-feed-description' => "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.",
 'recentchanges-label-newpage' => 'Suntingan iki gawé kaca anyar',
 'recentchanges-label-minor' => 'Iki suntingan sithik',
index 8cef0f1..e06c3a2 100644 (file)
@@ -156,7 +156,7 @@ $messages = array(
 'tog-hidepatrolled' => 'დამალეთ შესწორებული რედაქტირებები ბოლო ცვლილებებში',
 'tog-newpageshidepatrolled' => 'დამალეთ შემოწმებული გვერდები ახალი გვერდების სიიდან',
 'tog-extendwatchlist' => 'გავრცობილი კონტროლის სია ყველა დაკავშირებული ცვლილების ჩვენების ჩათვლით',
-'tog-usenewrc' => 'á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\94 á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83£á\83\99á\83\94á\83\97á\83\94á\83¡á\83\98 á\83¡á\83\98á\83\90 (ჯავასკრიპტი)',
+'tog-usenewrc' => 'á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90 á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83¡á\83\98á\83\98á\83¡ á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90á\83¯á\83\92á\83£á\83¤á\83\94á\83\91á\83\90 (á\83¡á\83\90á\83­á\83\98á\83 á\83\9dá\83\90 ჯავასკრიპტი)',
 'tog-numberheadings' => 'ავტომატურად დანომრე ქვესათაურები',
 'tog-showtoolbar' => 'რედაქტირების ინსტრუმენტების ჩვენება (ჯავასკრიპტი)',
 'tog-editondblclick' => 'გვერდების რედაქტირება ორმაგი დაწკაპუნებით (ჯავასკრიპტი)',
@@ -946,6 +946,7 @@ $2
 'node-count-exceeded-warning' => 'გვერდზე გადამეტებულია კვანძების რაოდენობა',
 'expansion-depth-exceeded-category' => 'გვერდები გახსნის სიღრმის გადამეტებით',
 'expansion-depth-exceeded-warning' => 'გვერდზე გადამეტებულია ჩადგმების ზღვარი',
+'parser-unstrip-loop-warning' => 'აღმოჩენილია ციკლური ბმული',
 'parser-unstrip-recursion-limit' => 'გადამეტებულია რეკურსიის ზღვარი ($1)',
 
 # "Undo" feature
@@ -1124,9 +1125,9 @@ $1",
 'mergelogpagetext' => 'ქვემოთ წარმოდგენილია ამ გვერდის ბოლო გაერთიანებათა სია',
 
 # Diffs
-'history-title' => 'ცვლილებათა ისტორია სტატიაში „$1“',
-'difference-title' => 'განსხვავება გადახედვებს შორის " $1 "',
-'difference-title-multipage' => 'განსხვავება „$1“ და „$2“ გვერდებს შორის',
+'history-title' => '$1: ცვლილებათა ისტორია',
+'difference-title' => '$1: განსხვავება გადახედვებს შორის',
+'difference-title-multipage' => '$1 და $2: განსხვავება გვერდებს შორის',
 'difference-multipage' => '(განსხვავება გვერდებს შორის)',
 'lineno' => 'ხაზი $1:',
 'compareselectedversions' => 'არჩეული ვერსიების შედარება',
@@ -1222,6 +1223,7 @@ $1",
 'prefs-beta' => 'ბეტა შესაძლებლობები',
 'prefs-datetime' => 'თარიღი და დრო',
 'prefs-labs' => 'ექსპერიმენტალური ფუნქციები',
+'prefs-user-pages' => 'მომხმარებლის გვერდები',
 'prefs-personal' => 'მომხმარებლის მონაცემები',
 'prefs-rc' => 'ბოლო ცვლილებები',
 'prefs-watchlist' => 'კონტროლის სია',
@@ -1678,14 +1680,15 @@ $1',
 'backend-fail-writetemp' => 'დროებითი ფაილის დაწერა ვერ ხერხდება.',
 'backend-fail-closetemp' => 'დროებითი ფაილის დახურვა ვერ ხერხდება.',
 'backend-fail-read' => 'ფაილი $1-ის წაკითხვა ვერ მოხერხდა.',
-'backend-fail-create' => 'á\83¤á\83\90á\83\98á\83\9aá\83\98 $1-á\83\98á\83¡ á\83¨á\83\94á\83¥á\83\9bá\83\9cა ვერ მოხერხდა.',
-'backend-fail-maxsize' => 'á\83¤á\83\90á\83\98á\83\9aá\83\98 $1-á\83\98á\83¡ á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\90 á\83\95á\83\94á\83  á\83\9bá\83\9dá\83®á\83\94á\83 á\83®á\83\93á\83\90, á\83 á\83\90á\83\93á\83\92á\83\90á\83\9cá\83\90á\83ª á\83\9bá\83\98á\83¡á\83\98 á\83\96á\83\9dá\83\9bá\83\90 á\83\90á\83­á\83\90á\83 á\83\91á\83\94á\83\91á\83¡ {{PLURAL:$2|$2 ბაიტს|$2 ბაიტს}}.',
+'backend-fail-create' => 'á\83¤á\83\90á\83\98á\83\9aá\83\98 $1-á\83\98á\83¡ á\83©á\83\90á\83¬á\83\94á\83 ა ვერ მოხერხდა.',
+'backend-fail-maxsize' => 'á\83¤á\83\90á\83\98á\83\9aá\83\98 $1-á\83\98á\83¡ á\83©á\83\90á\83¬á\83\94á\83 á\83\90 á\83\95á\83\94á\83  á\83\9bá\83\9dá\83®á\83\94á\83 á\83®á\83\93á\83\90, á\83 á\83\90á\83\93á\83\92á\83\90á\83\9cá\83\90á\83ª á\83\9bá\83\98á\83¡á\83\98 á\83\96á\83\9dá\83\9bá\83\90 á\83\90á\83­á\83\90á\83 á\83\91á\83\94á\83\91á\83¡ {{PLURAL:$2|á\83\94á\83 á\83\97 ბაიტს|$2 ბაიტს}}.',
 'backend-fail-readonly' => 'საცავი "$1" ამჟამად ხელმისაწვდომია მხოლოდ წაკითხვის რეჟიმში. მიზეზი: "$2"',
 'backend-fail-synced' => 'ფაილი "$1" იმყოფება შიდა საცავის შეუთანხმებელ მდგომარეობაში',
 'backend-fail-connect' => '"$1" საცავთან დაკავშირება ვერ მოხერხდა.',
 'backend-fail-internal' => '"$1" საცავში მოხდა დაუდგენელი შეცდომა.',
 'backend-fail-contenttype' => 'ფაილის შემადგენლობის ტიპის დადგენა ვერ მოხერხდა, "$1"-ში შესანახად.',
 'backend-fail-batchsize' => 'საცავმა მიიღო {{PLURAL:$1|ფაილის ოპერაციის|ფაილების ოპერაციების}} ბლოკი $1-დან, შეზღუდვა შეადგენს $2 {{PLURAL:$1|ოპერაციას}}.',
+'backend-fail-usable' => 'Не удалось записать файлფაილი $1 ჩაწერა ვერ მოხერხდა უფლებების უკმარისობის ან საჭირო საქაღალდეების არქონის გამო.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'ჟურნალის მონაცემთა ბაზებთან დაკავშირება "$1" მონაცემთა შესანახად ვერ მოხერხდა.',
@@ -1887,7 +1890,7 @@ $1',
 'statistics-articles' => 'სტატიების',
 'statistics-pages' => 'გვერდები',
 'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
-'statistics-files' => 'á\83\90á\83\95á\83¢á\83\95á\83\98á\83 á\83\97á\83£á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\94á\83\91á\83\98',
+'statistics-files' => 'ატვირთული ფაილები',
 'statistics-edits' => 'გვერდის შესწორებები {{SITENAME}}-ის შექმნიდან',
 'statistics-edits-average' => 'რედაქტირების საერთო რაოდენობა გვერდზე',
 'statistics-views-total' => 'სულ ხილვა',
@@ -2011,6 +2014,7 @@ $1',
 შეგიძლიათ გაცხრილოთ იგი ჩანაწერის ტიპის, მომხმარებლის სახელის, ან დაკავშირებული გვერდის შერჩევით.',
 'logempty' => 'შედეგები არ არის სიაში.',
 'log-title-wildcard' => 'სათაურების ძებნა, რომლებიც იწყება ამ ტექსტით',
+'showhideselectedlogentries' => 'არჩეული ჟურნალის ჩანაწერის ჩვენება/დამალვა',
 
 # Special:AllPages
 'allpages' => 'ყველა გვერდი',
@@ -2893,6 +2897,7 @@ $1',
 'spambot_username' => 'სპამის გასუფთავება',
 'spam_reverting' => 'დაბრუნება ბოლო ვერსიასთან, რომელიც არ შეიცავს ბმულს $1-თან',
 'spam_blanking' => 'ყველა გვერდი შეიცავს ბმულს $1-გვერდზე. გასუფთავება',
+'spam_deleting' => 'ყველა ვერსია შეიცავდა ბმულს $1-ზე, მიმდინარეობს წაშლა',
 
 # Info page
 'pageinfo-title' => 'ინფორმაცია „$1“-თვის',
@@ -3879,4 +3884,6 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'duration-centuries' => '$1 {{PLURAL:$1|საუკუნე|საუკუნე}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ათასწლეული|ათასწლეული}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'ვერ მოხერხდა ბლოკირების მიღება სერვერზე $1.',
 );
index ce2593c..fe97fb1 100644 (file)
@@ -794,7 +794,7 @@ i yesɛan akk awalen i banen-d).",
 'nchanges' => '$1 {{PLURAL:$1|Abeddel|Ibeddlen}}',
 'recentchanges' => 'Ibeddlen imaynuten',
 'recentchanges-legend' => 'Tifranin n ibeddilen imaynuten',
-'recentchangestext' => 'Ḍfer ibeddilen imaynuten n {{SITENAME}}.',
+'recentchanges-summary' => 'Ḍfer ibeddilen imaynuten n {{SITENAME}}.',
 'recentchanges-feed-description' => 'Ḍfer ibeddilen imaynuten n wiki-yagi deg usuddem-agi.',
 'recentchanges-label-newpage' => 'Abeddel agi ad yesnulfu asebter amaynut',
 'recentchanges-label-minor' => 'Wagi d-abeddel amectuḥ',
index d68e560..04f8a7c 100644 (file)
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'ТехьэпIэхэр щIэтхъэн:',
-'tog-justify' => 'БгъуагъкIэ напэкIуэцIыр зэгъэзэхуэн',
-'tog-hideminor' => 'ГъэпщкIун: кIуэдкIэ зыхэмылэжьыхьа, щIэуэ яхъуэжа тхылъым',
-'tog-hidepatrolled' => 'ГъэпшкIун гъэтэрэзыгъуэ щIэлъыплъахэм я тхылъ гъэтэрэзыгъуэщIэхэр',
-'tog-newpageshidepatrolled' => 'Ð\93Ñ\8aÑ\8dпÑ\88кIÑ\83н Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86I Ñ\89\8dлÑ\8aÑ\8bплÑ\8aаÑ\85Ñ\8dм Ñ\8f Ñ\82Ñ\85Ñ\8bлÑ\8a Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86I-Ñ\89\8dÑ\85Ñ\8dÑ\80',
+'tog-underline' => 'ТехьэпӀэхэр щӀэтхъэн:',
+'tog-justify' => 'БгъуагъкӀэ напэкӀуэцӀыр зэгъэзэхуэн',
+'tog-hideminor' => 'Гъэтэрэзыгъуэ цӀыкӀухэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
+'tog-hidepatrolled' => 'Гъэтэрэзыгъуэ зыщӀэлъыплъахэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
+'tog-newpageshidepatrolled' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80 Ð·Ñ\8bÑ\89Ó\80Ñ\8dлÑ\8aÑ\8bплÑ\8aаÑ\85Ñ\8dÑ\80 Ð³Ñ\8aÑ\8dпÑ\88кÓ\80Ñ\83н, Ð½Ð°Ð¿Ñ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80 Ñ\89Ó\80Ñ\8dÑ\85Ñ\8dм Ñ\8f Ñ\82Ñ\85Ñ\8bлÑ\8aÑ\8bм',
 'tog-extendwatchlist' => 'ЩӀэлъыплъыгъуэм и тхылъышхуэ, яужырэй къуэдейхэм нэмыщӀу зэхъуэкӀыгъуэ псори хэту',
 'tog-usenewrc' => 'Гъэтэрэзыгъуэ щӀэхэм я тхылъ нэхъыфӀыр къэгъэсэбэпын (JavaScript хуэныкъуэ)',
 'tog-numberheadings' => 'Псалъащхьэхэм автоматику номер ятын',
@@ -143,6 +143,7 @@ $messages = array(
 'listingcontinuesabbrev' => '(кӀэлъыкуэгъуэ)',
 'index-category' => 'Индекс зырат напэкӀуэцӀхэр',
 'noindex-category' => 'НапэкӀуэцӀ индекс зыхуэмыныкуъэхэр',
+'broken-file-category' => 'Файл техьэпӀэхэр здэмылажэ напэкӀуэцӀхэр',
 
 'about' => 'И гугъу',
 'article' => 'Тхыгъэ',
@@ -199,7 +200,7 @@ $messages = array(
 'print' => 'КъыдэгъэкӀын',
 'view' => 'Еплъын',
 'edit' => 'Гъэтэрэзын',
-'create' => 'ЩIын',
+'create' => 'ЩӀын',
 'editthispage' => 'Мы напэкIуэцIыр гъэтэрэзын',
 'create-this-page' => 'Мыбы и напэкӀуэцӀ щӀын',
 'delete' => 'Ихын',
@@ -225,7 +226,7 @@ $messages = array(
 'projectpage' => 'Проэктым и напэкӀуэцӀым еплъын',
 'imagepage' => 'Файлым и напэкIуэцIым еплъын',
 'mediawikipage' => 'Тхыгъэм и напэкIуэцIым еплъын',
-'templatepage' => 'ШаблонÑ\8bм Ð¸ Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86\8bм Ñ\85Ñ\8dплÑ\8aÑ\8dн',
+'templatepage' => 'ЩапÑ\85Ñ\8aÑ\8dм Ð¸ Ð½Ð°Ð¿Ñ\8dкIÑ\83Ñ\8dÑ\86\8bм ÐµÐ¿Ð»Ñ\8aÑ\8bн',
 'viewhelppage' => 'ЩIэупщIэм и напэкIуэцI',
 'categorypage' => 'Категорием и напэкIуэцIым хэплъэн',
 'viewtalkpage' => 'Тепсэлъыхьыгъуэм еплъын',
@@ -302,6 +303,8 @@ $1',
 'page-rss-feed' => '$1 — RSS-тыныгъэ',
 'page-atom-feed' => '$1 — Atom-тыныгъэ',
 'red-link-title' => '$1 (апхуэдэ напэкӀуэцӀ щыӀэкъым)',
+'sort-descending' => 'Нэхъ цӀыкӀумкӀэ/жьымкӀэ екӀуэкӀыу зэгъэзэхуэн',
+'sort-ascending' => 'Нэхъ инымкӀэ/щӀэмкӀэ екӀуэкӀыу зэгъэзэхуэн',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Тхыгъэ',
@@ -309,9 +312,9 @@ $1',
 'nstab-media' => 'Медиэ напэкӀуэцӀ',
 'nstab-special' => 'Лэжыгъэ напэкӀуэцӀ',
 'nstab-project' => 'Проэктым теухуауэ',
-'nstab-image' => 'Файл',
+'nstab-image' => 'ТеплÑ\8aÑ\8d',
 'nstab-mediawiki' => 'Тхыгъэ',
-'nstab-template' => 'Шаблон',
+'nstab-template' => 'ЩапÑ\85Ñ\8aÑ\8d',
 'nstab-help' => 'ДэIэпыкъуэгъу',
 'nstab-category' => 'Категориэ',
 
@@ -367,6 +370,7 @@ $1',
 'badarticleerror' => 'А лэжьыгъэр мы напэкӀуэцӀым егъэкӀуэкӀыфынукъым.',
 'cannotdelete' => 'НапэкӀуэцӀыр иэ файл «$1»-р ихыфкъым.
 НэмыщӀ гуэрэм ирихагъэнкӀ хъун.',
+'cannotdelete-title' => 'НапэкӀуэцӀ «$1» ипх хъунукъым',
 'badtitle' => 'ЦӀэр хъунукъым',
 'badtitletext' => 'УзщӀэупщӀэ напэкӀуэцӀым и цӀэр тэрэзкъым, нэщӀ, мытэрэзу интервикир иэ бзэ-зэхуэкур щытщ. И цӀэм дэмыгъэ емыкӀуэалъэ хэтынкӀи хъун.',
 'perfcached' => 'Мы Ӏохугъуэхэр кэшым къыхахэ, яужырей зэхъуэкӀыгъуэхэр химыубыдэнкӀи мэхъу. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -377,11 +381,13 @@ $1',
 Функциэ: $1<br />
 ЩӀэлъэуэгъуэ: $2',
 'viewsource' => 'Хэплъэн',
+'viewsource-title' => 'НапэкӀуэцӀ $1 и япэрей тхыгъэ щытыкӀэм ухуоплъэщ',
 'actionthrottled' => 'ЩӀэхыгъэм убыдыгъэ иӀэ',
 'actionthrottledtext' => 'Анти-спамым пэщытыным шъхьэкӀэ, зэманыгъуэ кӀэщӀым уигугъэр куэду и къэгъэсэбэпыныр теубыдауэ щытщ. 
 Дэкъикъэ зытӀущ тегъэкӀи, иджыри зэ щӀыж.',
 'protectedpagetext' => 'Мы напэкӀуэцӀыр и гъэтэрэзыным теубыдауэ щытщ',
 'viewsourcetext' => 'Мы напэкӀуэцӀым и нэхъыщхьэ тхылъыр мыбдежьым уэплъыфыну, и копиэри ипхыфыну:',
+'viewyourtext' => "Мы напэкӀуэцӀым '''уи гъэтэрызыгъуэхэм''' я тхылъым уеплъыфынущ, тхылъым и копиэри пщӀыфынущ:",
 'protectedinterface' => 'Мы напэкӀуэцӀым интерфейс тхылъ хэтщ, программэтыныгъэм еуэ. Хьэуэйн имыӀэн щхьэкӀэ, и гъэтэрэзыныр теубыдауэ щытщ.',
 'editinginterface' => "'''Гу лъытэ:''' Бгъэтэрэз напэкӀуэцӀым интерфэйс тхылъ хэтщ, программэтыгъэм еуэ.
 И зэхъуэкӀыгъуэм интерфэйсым и сурэтым хэуэну адрей цӀыхухэтхэм щхьэкӀэ.
@@ -533,8 +539,8 @@ $2',
 'headline_tip' => 'ТІуанэ щхьэгъэ псалъащхьэ',
 'nowiki_sample' => 'Формациэ мыщӀа тхыгъэр мыбдеж игъэувэ',
 'nowiki_tip' => 'Вики-форматыр Iухын',
-'image_tip' => 'Файл кӀуэцӀылъу',
-'media_tip' => 'ФайлÑ\8bм и техьэпӀэ',
+'image_tip' => 'ТеплÑ\8aÑ\8d кӀуэцӀылъу',
+'media_tip' => 'ТеплÑ\8aÑ\8dм и техьэпӀэ',
 'sig_tip' => 'Уи ӀэпэщӀэдзымрэ зэман щытехуэмрэ',
 'hr_tip' => 'ЩӀэтхъэгъуэ щӀыхь (куэдрэ къэвмыгъэмэбэп)',
 
@@ -613,10 +619,10 @@ $2',
 'blocked-notice-logextract' => 'Мы цӀыхухэтыр иджыпсту теубыдауэ щытщ.
 ИщӀагъымкӀэ теубыдыгъэ тхылъым и яужырей итхэгъуэр гъэлъэгъуа:',
 'clearyourcache' => "'''Къэохугъуэ:'''Итха яуж зэхъуэкӀыгъу хъуар къэнэн щхьэкӀэ, уи браузэрым и кэшыр гъэкъэбзэн хуэй: '''Mozilla / Firefox''': ''Ctrl+Shift+R'', '''IE:''' ''Ctrl+F5'', '''Safari''': ''Cmd+Shift+R'', '''Konqueror''': ''F5'', '''Opera''': ''Tools→Preferences''-мкӀэ уикӀын хуэй.",
-'usercssyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и CSS-Ñ\84айлÑ\8bм еплъын щхьэкӀэ итхэным ипэкӀэ.",
-'userjsyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и JS-Ñ\84айл щӀэм еплъыным щхьэкӀэ итхэным ипэкӀэ.",
-'usercsspreview' => 'Уигу игъэлъ, мыр иджыри уи CSS-файлым и пыухыкӀа еплъыгъуэкъым , ар иджыри хъумакъым.',
-'userjspreview' => "'''Ð\97Ñ\8bÑ\89Ñ\83мгÑ\8aÑ\8dгÑ\8aÑ\83пÑ\88Ñ\8d, Ð¼Ñ\8bÑ\80 Ñ\8fпÑ\8d-еплÑ\8a ÐºÑ\8aÑ\83Ñ\8dдей Ñ\83и javascript-Ñ\84айлÑ\8bм, иджыри итхауэ щыткъым!'''",
+'usercssyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и CSS-Ñ\82еплÑ\8aÑ\8dм еплъын щхьэкӀэ итхэным ипэкӀэ.",
+'userjsyoucanpreview' => "'''Ð\94Ñ\8dÓ\80Ñ\8dпÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83 Ð¿Ñ\81алÑ\8aÑ\8d.''' Ð¢ÐµÐºÑ\8aÑ\83зÑ\8d Â«{{int:showpreview}}» Ñ\83и JS-Ñ\82еплÑ\8aÑ\8d щӀэм еплъыным щхьэкӀэ итхэным ипэкӀэ.",
+'usercsspreview' => "'''Гу лъытэ, мыр япэ-еплъ къуэдейщ уи CSS-теплъэм, иджыри итхауэ щыткъым!'''",
+'userjspreview' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d, Ð¼Ñ\8bÑ\80 Ñ\8fпÑ\8d-еплÑ\8a ÐºÑ\8aÑ\83Ñ\8dдейÑ\89 Ñ\83и javascript-Ñ\82еплÑ\8aÑ\8dм, иджыри итхауэ щыткъым!'''",
 'sitecsspreview' => "'''Зыщумгъэгъупшэ, мыр япэ-еплъ къуэдеуэ щытщ мы CSS-м.'''
 '''Иджыри итхауэ щыткъым!'''",
 'sitejspreview' => "'''Зыщумгъэгъупшэ, мыр япэ-еплъ къуэдеуэ щытщ мы JavaScript-кодым.'''
@@ -625,6 +631,7 @@ $2',
 'updated' => '(КъэгъэщӀырыщӀащ)',
 'note' => "'''Гулъытыгъуэ:'''",
 'previewnote' => "'''Мыр япэ-еплъ къуэдей, тхылъыр иджыри итхакъым!'''",
+'continue-editing' => 'Гъэтэрэзыгъуэм тегъэзэжьын',
 'previewconflict' => 'Мы япэ-еплъым тхылъыр редакторым и ищхьэ лъэныкъуэм дежь егъэлъыгъуэ зэрщытыным хуэду, иптхэн уигугъэ хъумэ.',
 'session_fail_preview' => "'''Хэукъуэгъуэ къыхэкӀа, серверым у гъэтэрэзыгъуэр къиштэфакъым сессиэм и идентификациэр фӀэкӀуэдри.
 Иджыри зэ щӀыжьи еплъ.
@@ -675,9 +682,9 @@ $2',
 'cascadeprotectedwarning' => "'''Гу лъытэ:''' Мы напэкӀуэцӀыр згъэтэрэзыфынухэр «Тхьэмадэхэр» щыщ гупым хэтхэра, {{PLURAL:$1|напэкӀуэцӀ къыкӀэлъыкӀуэм щхьэкӀэ|напэкӀуэцӀ къыкӀэлъыкӀуэхэм щхьэкӀэ}} каскад хъунэныгъэ зэрателъым теухуауэ:",
 'titleprotectedwarning' => "'''Гу лъытэ. Мы напэкӀуэцӀыр зэхъуэкӀыныгъэхэм щхьэкӀэ ятеубыдауэ щытщ, зэзхъуэкӀыфынухэр [[Special:ListGroupRights|абым теухуа пӀалъэ]] зиӀэ цӀыхухэтхэм.''' 
 ИщӀагъымкӀэ тхыдэтхылъым и яужырей тхыгъэр итщ:",
-'templatesused' => '{{PLURAL:$1|Шаблон|Шаблонхэр}} напэкӀуэцӀым и версиэ екӀуэкӀым хэтхэр:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонхэр}} напэкӀуэцӀым и япэ-еплъым хэтхэр:',
-'templatesusedsection' => 'Ð\9cÑ\8b Ð»Ñ\8aÑ\8dнÑ\8bкÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83м {{PLURAL:$1|Шаблон ÐºÑ\8aагÑ\8aÑ\8dÑ\89Ñ\85Ñ\8cÑ\8dпаÑ\80|Шаблон ÐºÑ\8aагъэщхьэпахэр}}:',
+'templatesused' => 'НапэкӀуэцӀым и версиэ екӀуэкӀым {{PLURAL:$1|щапхъэ|щапхъэ}} хэтхахэр:',
+'templatesusedpreview' => 'НапэкӀуэцӀым и япэ-еплъым {{PLURAL:$1|щапхъэ|щапхъэ}} хэтхахэр:',
+'templatesusedsection' => 'Ð\9cÑ\8b ÐºÑ\8aÑ\83дамÑ\8dм {{PLURAL:$1|Ñ\89апÑ\85Ñ\8aÑ\8d ÐºÑ\8aÑ\8dгÑ\8aÑ\8dÑ\89Ñ\85Ñ\8cÑ\8dпаÑ\80\89апÑ\85Ñ\8aÑ\8d ÐºÑ\8aÑ\8dгъэщхьэпахэр}}:',
 'template-protected' => '(теубыдащ)',
 'template-semiprotected' => '(иныкъуэр теубыдащ)',
 'hiddencategories' => 'Мы напэкӀуэцӀыр зхэхьэр $1 {{PLURAL:$1|1 категориэ зэхуэща|$1 категориэ зэхуэщахэр}}:',
@@ -705,21 +712,28 @@ $2',
 'edit-no-change' => 'Уи гъэтэрэзыгъуэр хахыжащ, тхыгъэм зэхъуэкӀыгъуэ зэрхэмыхьэм щхьэкӀэ.',
 'edit-already-exists' => 'НапэкӀуэцӀыщӀэ щӀыфынукъым.
 ЩыӀэщ апхуэдэ.',
+'defaultmessagetext' => 'КъыхигъэкӀа тхыгъэхэр',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Гу лъытэ. Мы напэкӀуэцӀым ресурсышхуэ хэзылъхьэ функциэ куэд хэлъщ.
 
 Хэлъхьэгъуэ хэтыфынур здынэгъэсар $2 {{PLURAL:$2|хэлъхьэгъу|хэлъхьэгъуэху}}, мыбдежым хуэныкъу щӀын хуэйр {{PLURAL:$1|$1 хэлъхьэгъуэ|$1 хэлъхьэгъу}}.',
 'expensive-parserfunction-category' => 'Ресурсышхуэ хэзылъхьэ функциэ куэду зыхэлъ напэкӀуэцӀхэр',
-'post-expand-template-inclusion-warning' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d:''' Ñ\88аблон хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытщ.
¨Ð°Ð±Ð»Ð¾Ð½Ñ\85Ñ\8dм Ñ\8fÑ\89Ñ\8bÑ\89 Ð³Ñ\83Ñ\8dÑ\80Ñ\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8dгÑ\8aÑ\8dкÓ\80Ñ\8bжаÑ\83Ñ\8d ÐºÑ\8aÑ\8dнÑ\8dнÑ\83Ñ\85Ñ\8dщ.",
-'post-expand-template-inclusion-category' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80Ñ\85Ñ\8dÑ\80, Ñ\88аблон я хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытхэр',
-'post-expand-template-argument-warning' => "'''Гу лъытэ:''' Мы напэкӀуэцӀым шаблоным и зы аргумент хэт, зэгъэзэнщӀэным щхьэкӀэ иныщу щыту.
+'post-expand-template-inclusion-warning' => "'''Ð\93Ñ\83 Ð»Ñ\8aÑ\8bÑ\82Ñ\8d:''' Ñ\89апÑ\85Ñ\8aÑ\8d хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытщ.
©Ð°Ð¿Ñ\85Ñ\8aÑ\8dÑ\85Ñ\8dм Ñ\8fÑ\89Ñ\8bÑ\89 Ð³Ñ\83Ñ\8dÑ\80Ñ\8dÑ\85Ñ\8dÑ\80 Ñ\85Ñ\8dмÑ\8bÑ\82Ñ\85аÑ\83Ñ\8d ÐºÑ\8aÑ\8dнÑ\8dнÑ\83щ.",
+'post-expand-template-inclusion-category' => 'Ð\9dапÑ\8dкÓ\80Ñ\83Ñ\8dÑ\86Ó\80Ñ\85Ñ\8dÑ\80, Ñ\89апÑ\85Ñ\8aÑ\8d я хэтхэм я бжыгъэр зэфӀэкӀыгъуэм къехъу щытхэр',
+'post-expand-template-argument-warning' => "'''Гу лъытэ!''' мы напэкӀуэцӀым зы щапхъэ, мынэхъмащӀэу хэтщ, и аргумент зэгъэзэнщӀэныр иныщэу щыту.
 Апхуэдэ аргументхэм гулъытэгъуэ ирамтауэ щытщ.",
-'post-expand-template-argument-category' => 'Шаблонхэм я аргументхэр хэзмыубыда напэкӀуэцӀхэр',
-'parser-template-loop-warning' => 'Ð¥Ñ\8dÑ\83кÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83Ñ\8d ÐºÑ\8aÑ\8bÑ\85Ñ\8dкÓ\80аÑ\89 Ñ\88аблонхэм: [[$1]]',
-'parser-template-recursion-depth-warning' => 'ШаблонÑ\8bм Ð¸ Ñ\80екÑ\83Ñ\80Ñ\81иÑ\8d Ð·Ñ\8dÑ\84Ó\80Ñ\8dкÓ\80Ñ\8bгÑ\8aÑ\83Ñ\8dр къегъэхъуауэ щытщ (1$)',
+'post-expand-template-argument-category' => 'ЩапÑ\85Ñ\8aÑ\8dхэм я аргументхэр хэзмыубыда напэкӀуэцӀхэр',
+'parser-template-loop-warning' => 'Ð¥Ñ\8dÑ\83кÑ\8aÑ\83Ñ\8dгÑ\8aÑ\83Ñ\8d ÐºÑ\8aÑ\8bÑ\85Ñ\8dкÓ\80аÑ\89 Ñ\89апÑ\85Ñ\8aÑ\8dхэм: [[$1]]',
+'parser-template-recursion-depth-warning' => 'ЩапÑ\85Ñ\8aÑ\8d Ñ\80екÑ\83Ñ\80Ñ\81иÑ\8dм Ð¸ ÐºÑ\83Ñ\83агÑ\8aÑ\8bр къегъэхъуауэ щытщ (1$)',
 'language-converter-depth-warning' => 'Бзэ гъэзанщӀэгъуэм и зэфӀэкӀыгъуэр къегъэхъуауэ щытщ (1$)',
+'node-count-exceeded-category' => 'ЗэпхырыкӀыгъуэхэм я бжыгъэр къехъу здэщыт напэкӀуэцӀхэр',
+'node-count-exceeded-warning' => 'НапэкӀуэцӀым зэпхырыкӀыгъуэ хэтым я бжыгъэр къехъу щытщ',
+'expansion-depth-exceeded-category' => 'НапэкӀуэцӀым и зыубгъуэн Ӏувагъыр къехъу щытщ',
+'expansion-depth-exceeded-warning' => 'НапэкӀуэцӀып и зэфӀэгъэкӀыгъуэр къегъэхъуауэ щытщ',
+'parser-unstrip-loop-warning' => 'Зэрыдзэгъуэ зэхуэмыщӀа къыхэкӀащ',
+'parser-unstrip-recursion-limit' => 'Рекурсым и зэфӀэгъэкӀыгъуэр къегъэхъуауэ щытщ ($1)',
 
 # "Undo" feature
 'undo-success' => 'Гъэтэрэзыгъуэр хахыжьыфынущ. Версиэхэм я зэгъэпшыгъуэ егъэкӀуэкӀ, узхуэныкъуэхэрамэ пщӀам еплъи «НапэкӀуэцӀыр итхэн»-ым текъузэ, зэхъуэкӀыгъуэхэр хэхьэным щхьэкӀэ.',
@@ -864,6 +878,9 @@ $1",
 'suppressionlogtext' => 'ИщӀагъымкӀэ гъэлъэгъуауэ щыт яужырей ихыгъуэхэмрэ теубыдэгъуэхэмрэ я тхылъ, тхьэмадэхэм ямгъэлъэгъуа хъыбархэр хэтху.
 Еплъ [[Special:IPBlockList|IP-теубыдыгъуэхэм я тхылъ]], екӀуэкӀ теубыдэгъуэхэр лъагъун щхьэкӀэ.',
 
+# History merging
+'mergehistory' => 'Гъэтэрэзыгъуэхэм я тхыдэ зыуэ зэхэгъэхьа',
+
 # Merge log
 'revertmerge' => 'Зыхэдзын',
 
@@ -895,12 +912,17 @@ $1",
 'search-interwiki-more' => '(иджыри)',
 'search-mwsuggest-enabled' => 'чэнджэш иӀэу',
 'search-mwsuggest-disabled' => 'чэнджэщыншэу',
-'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, шаблонхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
+'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, щапхъэхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
+'search-nonefound' => 'Узлъыхъуэм техуэу щыӀэкъым.',
 'powersearch' => 'Убгъуауэ лъыхъу',
 'powersearch-legend' => 'Убгъуауэ лъыхъу',
 'powersearch-ns' => 'ЦIэзэхэтыгъуэм щылъыхъуэн',
 'powersearch-redir' => 'ЕгъэзэкӀахэри гъэлъэгъуэн',
 'powersearch-field' => 'Лъыхъуэн',
+'powersearch-togglelabel' => 'Къыхэхын:',
+'powersearch-toggleall' => 'Псори',
+'powersearch-togglenone' => 'Зыри/пари',
+'search-external' => 'ХэкӀауэ лъыхъуэн',
 
 # Preferences page
 'preferences' => 'Зэгъэзэхуэпхъэхэр',
index 669d262..765ebf6 100644 (file)
@@ -434,6 +434,7 @@ Vurnaena [[Special:Preferences|melumatanê {{SITENAME}}]] ho vira mekerê.',
 'createaccount' => 'Hesab vıraze',
 'gotaccount' => "Hesabê sıma ke esto? '''$1'''.",
 'gotaccountlink' => 'Cı kuye',
+'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
 'createaccountmail' => 'e-poste sera',
 'createaccountreason' => 'Sebeb:',
 'badretype' => 'Parola sıma nêvêrena.',
@@ -550,8 +551,8 @@ Kerem ke, tı ke wazena na pele vırazê/bıvurnê, qontrol ke.',
 Dosyunê ebe namê .css u .js'y de herfa hurdiye bıgurêne, mesela hurêndia {{ns:user}}:Foo/Vector.css'i de {{ns:user}}:Foo/vector.css bınuse.",
 'updated' => '(Bi rozane)',
 'note' => "'''Not:'''",
-'previewnote' => "'''Bıfıkıriye ke no teyna jü verqayto.'''
-Vurnaişê to hona qeyd nêbiyê!",
+'previewnote' => "Teme! ena teyna verqeyda.'''
+Vurnayışê tu hama qeyd nıbiyo!",
 'editing' => 'Tıya $1 vurnena',
 'editingsection' => 'Vurnaena $1 (qısım)',
 'editingcomment' => '$1 vurnino (qısımo newe)',
@@ -570,18 +571,26 @@ Zobina ki ebe ita nustene ra sond wena ke nê iştıraki terefê to ra nuşiyê,
 'hiddencategories' => 'Na pele mensuba {{PLURAL:$1|1 kategoriya nımıtiya|$1 kategoriunê nımıtuna}}:',
 'permissionserrors' => 'Xetê desturi',
 'permissionserrorstext-withaction' => 'Desturê to be $2 çino, serba {{PLURAL:$1|na sebebi|nê sebebu}} ra:',
+'recreate-moveddeleted-warn' => "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''
+
+Diqet bıkeri no vurnayişê şıma re gerek esto:",
+'moveddeleted-notice' => 'Ma ena pele wederna.
+Qe referansi logê wedernayışi bın de mocnayiya.',
 'edit-conflict' => 'Têverabiyaena vurnaişi.',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Teme''': Zerrekê şabloni zaf gırso.
 Taê şabloni ilawe nêbenê.",
 'post-expand-template-inclusion-category' => 'Pelê ke tede gırşênia şabloni serde sono',
+'post-expand-template-argument-warning' => 'Hişyari: No pel de tewr tay yew şablono herayi esto.',
+'post-expand-template-argument-category' => 'Pelê ke şablonê eyi qebul niye',
 
 # History pages
 'viewpagelogs' => 'Qeydê ke na pele ra alaqedarê, inu bıasne',
 'currentrev' => 'Çımraviarnaoğo rozane',
 'currentrev-asof' => '$1 ra gore pele be halo nıkaên',
 'revisionasof' => 'Halê roca $1ine',
+'revision-info' => 'Tesdiq kerdışê roca $1ine be terefê $2',
 'previousrevision' => '← Halo khanêr',
 'nextrevision' => 'Tekrardiyaiso newêr →',
 'currentrevisionlink' => 'Halo nıkaên',
@@ -678,7 +687,7 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'revertmerge' => 'Cia ke',
 
 # Diffs
-'history-title' => 'Viartê pelga "$1"ine',
+'history-title' => 'Rewizyonê $1:',
 'lineno' => 'Rêza $1i:',
 'compareselectedversions' => 'Varyantunê weçinıtun têver sane',
 'editundo' => 'peyser bia',
@@ -698,6 +707,7 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'nextn-title' => 'Peyên $1 {{PLURAL:$1|netice|neticey}}',
 'shown-title' => 'Zu pele rê $1 {{PLURAL:$1|netice|neticu}} basne',
 'viewprevnext' => 'Bıvêne ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
 'searchmenu-new' => "'''Nê wiki de pela \"[[:\$1]]\" baferne!'''",
 'searchhelp-url' => 'Help:Tedeestey',
 'searchprofile-articles' => 'Pelê tedeesteu',
@@ -710,7 +720,7 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'searchprofile-images-tooltip' => 'Dosya bıfeteliye',
 'searchprofile-everything-tooltip' => 'Zerreki pêro sae ke (pelunê hurênaişi daxıl)',
 'searchprofile-advanced-tooltip' => 'Caunê namunê xısusiu de cıfeteliye',
-'search-result-size' => '$1 ({{PLURAL:$2|1 çekuye|$2 çekuy}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 kelime|$2 kelimey}})',
 'search-result-category-size' => '{{PLURAL:$1|1 eza|$1 ezey}} ({{PLURAL:$2|1 kategoriya bınêne|$2 kategoriyê bınêni}}, {{PLURAL:$3|1 dosya|$3 dosyey}})',
 'search-redirect' => '(hetêcıraberdene $1)',
 'search-section' => '(qısımo $1)',
@@ -818,6 +828,9 @@ Gunê $1 {{PLURAL:$1|herfe|herfun}} ra senık bo.',
 'email' => 'E-poste',
 'prefs-help-realname' => 'Namo rastıkên serbesto.
 Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
+'prefs-help-email' => 'Dayışê adresa e-postey keyfiyo, labelê seba eyarê parola lazıma, wexto ke şıma naye xo vira kerê.',
+'prefs-help-email-others' => 'Şıma şenê weçinê ke ê bini be yew gırey pela şımaya karberi ya zi pela werênayışi sera şıma de ebe e-poste irtıbat kewê.
+Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena.',
 'prefs-help-email-required' => 'Adresa emaili lazıma.',
 'prefs-signature' => 'İmza',
 'prefs-diffs' => 'Ferqi',
@@ -852,7 +865,7 @@ Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrati',
 
 # Rights
-'right-read' => 'Pelu bıwane',
+'right-read' => 'Pelan bıwanê',
 'right-edit' => 'Pelu bıvurne',
 'right-move' => 'Pelu bere',
 'right-movefile' => 'Dosyu bere',
@@ -889,6 +902,7 @@ Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
 'recentchanges-label-bot' => 'No vurnais terefê zu boti ra bi',
 'recentchanges-label-unpatrolled' => 'No vurnais hona çım ra ranêvêrdo',
 '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',
 'rcshowhideminor' => '$1 vurnaisê qızkeki',
 'rcshowhidebots' => 'botê $1i',
@@ -911,6 +925,7 @@ Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
 'recentchangeslinked' => 'Ney sero vurnaene',
 'recentchangeslinked-toolbox' => 'Ney sero vurnaene',
 'recentchangeslinked-title' => 'Heqa "$1"i de vurnais',
+'recentchangeslinked-noresult' => 'Pelanê ke link biye ey vurnayîşî çino.',
 'recentchangeslinked-summary' => "Lista cêrêne, pela bêlikerdiye rê (ya ki karberunê kategoriya bêlikerdiye rê) pelunê girêdaoğu de lista de vurnaisê peyênuna.
 [[Special:Watchlist|Lista sımawa şêrkedişi de]] peli be nusto '''qolınd''' bêli kerdê.",
 'recentchangeslinked-page' => 'Namê pele:',
@@ -934,6 +949,7 @@ Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
 'filestatus' => 'Halê heqa telifi:',
 'filesource' => 'Çıme:',
 'uploadedfiles' => 'Dosyê barkerdey',
+'empty-file' => 'Dosya ke ti şawit veng biy.',
 'savefile' => 'Dosya qeyd ke',
 'uploadedimage' => '"[[$1]]" bar bi',
 'upload-source' => 'Dosya çımey',
@@ -973,6 +989,7 @@ Sıma ke ney bıgurenê, karê sıma de no namdarêni dano.',
 'filehist-missing' => 'Dosya vindbiyaiya',
 'imagelinks' => 'Gurenaisê dosya',
 'linkstoimage' => 'Ano {{PLURAL:$1|girê pele|$1 girê pelu}} be na dosya:',
+'nolinkstoimage' => 'Pelanê ser ena dosyayê link biyê çin o.',
 'sharedupload' => 'Na dosya depoê $1 rawa u beno ke procunê binu de gurenina.',
 'sharedupload-desc-here' => 'Beno ke depoê na dosya $1 ra be terefê procunê bınu ra gurenino.
 Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
@@ -1030,7 +1047,7 @@ Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
 'shortpages' => 'Pelê kılmi',
 'longpages' => 'Pelê dergi',
 'listusers' => 'Lista karberi',
-'usercreated' => 'roca $1 de $2 de vıraciya',
+'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
 'newpages' => 'Pelê newey',
 'newpages-username' => 'Namê karberi:',
 'ancientpages' => 'Pelê khanêri',
@@ -1195,6 +1212,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 'undeletereset' => 'Vaz be',
 'undeleteinvert' => 'Weçinıtey ters bıçarne',
 'undeletecomment' => 'Sebeb:',
+'undelete-header' => 'Peleyê ke veror de besterneyayê êna bıvinê: [[Special:Log/delete|qeydê esterneya]].',
 'undelete-search-submit' => 'Cıfeteliye',
 'undelete-show-file-submit' => 'Heya',
 
@@ -1206,7 +1224,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 # Contributions
 'contributions' => 'İştırakê karberi',
 'contributions-title' => '$1 de iştırakê karberi',
-'mycontris' => 'İştıraxê mı',
+'mycontris' => 'İştıraqê mı',
 'contribsub2' => 'Serba $1 ($2)',
 'uctop' => '(ser)',
 'month' => 'Asme ra (u ravêr):',
@@ -1219,6 +1237,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 'sp-contributions-talk' => 'hurênais',
 'sp-contributions-search' => 'Ebe iştıraku cı feteliye',
 'sp-contributions-username' => 'IP ya ki karber:',
+'sp-contributions-toponly' => 'Teyna revizyonanê tewr peniyan bimocne',
 'sp-contributions-submit' => 'Cı feteliye',
 
 # What links here
@@ -1506,6 +1525,9 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
 'watchlisttools-edit' => 'Lista şêrkerdene bıvêne u vıraze',
 'watchlisttools-raw' => 'Lista şêrkerdena xame vıraze',
 
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Teme:\'\'\' Tuşê default sort "$2" sero tuşê default sort "$1"î ra şino.',
+
 # Special:FilePath
 'filepath-page' => 'Dosya:',
 'filepath-submit' => 'So',
@@ -1534,6 +1556,16 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
 # Special:BlankPage
 'blankpage' => 'Pela thale',
 
+# External image whitelist
+'external_image_whitelist' => '  #no satır zey xo verde/raverde<pre>
+#parçeyê ifadeya rêzbiyayeyani (têna zerreyê ıney de // ) u çıtayo/çiyo zi mende cêr de têare kerê.
+#ney URL ya (hotlink) resmê teberi de hemcıta benî.
+#Ê yê ke hemcıt (eşleşmek-hemçift) biyê zey resımi asenî, eqsê hal de zi zey gıreyê resmi aseno.
+satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
+#herfa gırd û qıci ferq nêkeno
+
+#parçeyê ifadeya rêzbiyayeyani bıerzê serê ney satıri. no satır zey xo verde/raverde </pre>',
+
 # Special:Tags
 'tag-filter' => 'Parzünê [[Special:Tags|etiket]]i:',
 
index 3565a67..6b5676e 100644 (file)
@@ -1324,7 +1324,7 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 # Recent changes
 'nchanges' => '$1 وزگەرىس',
 'recentchanges' => 'جۋىقتاعى وزگەرىستەر',
-'recentchangestext' => 'بۇل بەتتە وسى ۋىيكىيدەگى بولعان جۋىقتاعى وزگەرىستەر بايقالادى.',
+'recentchanges-summary' => 'بۇل بەتتە وسى ۋىيكىيدەگى بولعان جۋىقتاعى وزگەرىستەر بايقالادى.',
 'recentchanges-feed-description' => 'بۇل ارنامەنەن ۋىيكىيدەگى ەڭ سوڭعى وزگەرىستەر قاداعالانادى.',
 'rcnote' => "$3 كەزىنە دەيىن — تومەندە سوڭعى {{PLURAL:$2|كۇندەگى|'''$2''' كۇندەگى}}, سوڭعى '''$1''' وزگەرىس كورسەتىلەدى.",
 'rcnotefrom' => "'''$2''' كەزىنەن بەرى — تومەندە '''$1''' جەتكەنشە دەيىن وزگەرىستەر كورسەتىلەدى.",
index 9b9e1a1..93ff9dd 100644 (file)
@@ -1231,6 +1231,7 @@ $3 келтірілген себебі: ''$2''",
 
 # Diffs
 'history-title' => '«$1» — өңдеу тарихы',
+'difference-title' => 'Нұсқалар арасындағы айырмашылық: "$1"',
 'difference-multipage' => '(Беттер арасындағы айырмашылық)',
 'lineno' => 'Жол нөмірі $1:',
 'compareselectedversions' => 'Таңдалған нұсқаларды салыстыру',
@@ -3186,5 +3187,7 @@ $5
 # New logging system
 'revdelete-restricted' => 'әкімшілерге тиымдар қолдады',
 'revdelete-unrestricted' => 'әкімшілерден тиымдарды аластады',
+'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне жылжытты (айдатқыш қалдырылмады)',
+'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне жылжытты (айдатқыш қалдырылмады)',
 
 );
index b981fe1..3068bda 100644 (file)
@@ -1287,7 +1287,7 @@ Eger bunı jetistirwdi tañdasañız, bul tüzetwiñizdiñ awtorlığın anıqta
 # Recent changes
 'nchanges' => '$1 özgeris',
 'recentchanges' => 'Jwıqtağı özgerister',
-'recentchangestext' => 'Bul bette osı wïkïdegi bolğan jwıqtağı özgerister baýqaladı.',
+'recentchanges-summary' => 'Bul bette osı wïkïdegi bolğan jwıqtağı özgerister baýqaladı.',
 'recentchanges-feed-description' => 'Bul arnamenen wïkïdegi eñ soñğı özgerister qadağalanadı.',
 'rcnote' => "$3 kezine deýin — tömende soñğı {{PLURAL:$2|kündegi|'''$2''' kündegi}}, soñğı '''$1''' özgeris körsetiledi.",
 'rcnotefrom' => "'''$2''' kezinen beri — tömende '''$1''' jetkenşe deýin özgerister körsetiledi.",
index 1cf1258..f1c641d 100644 (file)
@@ -1029,7 +1029,7 @@ $2',
 'nchanges' => '$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}',
 'recentchanges' => 'ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳು',
 'recentchanges-legend' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳ ಆಯ್ಕೆಗಳು',
-'recentchangestext' => 'ವಿಕಿಗೆ ಮಾಡಲ್ಪಟ್ಟ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಪುಟದಲ್ಲಿ ನೀವು ಕಾಣಬಹುದು.',
+'recentchanges-summary' => 'ವಿಕಿಗೆ ಮಾಡಲ್ಪಟ್ಟ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಪುಟದಲ್ಲಿ ನೀವು ಕಾಣಬಹುದು.',
 'recentchanges-feed-description' => 'ವಿಕಿಯಲ್ಲಿ ಆಗುವ ಹೊಸ ಬದಲಾವಣೆಗಳ ಮೇಲೆ ನಿಗ ಇಡಲು ಉಪಯೋಗವಾಗುವ ಫೀಡು.',
 'recentchanges-label-minor' => 'ಇದು ಚುಟುಕಾದ ಬದಲಾವಣೆ',
 'rcnote' => "$5, $4 ವರೆಗೆ ಹಿಂದಿನ {{PLURAL:$2|ದಿನದಲ್ಲಿ|'''$2''' ದಿನಗಳಲ್ಲಿ}} ಮಾಡಲಾಗಿರುವ {{PLURAL:$1|'''೧''' ಬದಲಾವಣೆ|'''$1''' ಬದಲಾವಣೆಗಳು}} ಕೆಳಗಿವೆ.",
index 8683a2b..5e57de7 100644 (file)
@@ -24,6 +24,7 @@
  * @author Kaganer
  * @author Klutzy
  * @author Kwj2772
+ * @author Mintz0223
  * @author Pi.C.Noizecehx
  * @author PuzzletChung
  * @author TheAlpha for knowledge
@@ -31,6 +32,7 @@
  * @author Yknok29
  * @author לערי ריינהארט
  * @author 관인생략
+ * @author 아라
  */
 
 $namespaceNames = array(
@@ -72,7 +74,7 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( '끊긴넘겨주기' ),
        'Categories'                => array( '분류' ),
        'ChangeEmail'               => array( '이메일변경', '이메일바꾸기' ),
-       'ChangePassword'            => array( '비밀번호변경', '비밀번호바꾸기' ),
+       'ChangePassword'            => array( '비밀번호변경', '비밀번호바꾸기', '비밀단어변경', '비밀단어바꾸기' ),
        'ComparePages'              => array( '문서비교' ),
        'Confirmemail'              => array( '이메일인증' ),
        'Contributions'             => array( '기여', '기여목록', '사용자기여' ),
@@ -100,7 +102,7 @@ $specialPageAliases = array(
        'Listusers'                 => array( '사용자', '사용자목록' ),
        'Lockdb'                    => array( 'DB잠금', 'DB잠그기' ),
        'Log'                       => array( '기록', '로그' ),
-       'Lonelypages'               => array( '외톨이문서' ),
+       'Lonelypages'               => array( '외톨이문서', '홀로된문서' ),
        'Longpages'                 => array( '긴문서' ),
        'MergeHistory'              => array( '역사합치기' ),
        'MIMEsearch'                => array( 'MIME찾기', 'MIME검색' ),
@@ -117,7 +119,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '내가올린파일' ),
        'Newimages'                 => array( '새파일', '새그림' ),
        'Newpages'                  => array( '새문서' ),
-       'PasswordReset'             => array( '암호변경' ),
+       'PasswordReset'             => array( '비밀번호초기화', '비밀단어초기화' ),
        'PermanentLink'             => array( '고유링크', '영구링크' ),
        'Popularpages'              => array( '인기있는문서' ),
        'Preferences'               => array( '환경설정' ),
@@ -142,11 +144,11 @@ $specialPageAliases = array(
        'Uncategorizedtemplates'    => array( '분류안된틀' ),
        'Undelete'                  => array( '삭제취소', '삭제된문서' ),
        'Unlockdb'                  => array( 'DB잠금취소', 'DB잠금해제' ),
-       'Unusedcategories'          => array( '안쓰는분류' ),
-       'Unusedimages'              => array( '안쓰는파일', '안쓰는그림' ),
-       'Unusedtemplates'           => array( '안쓰는틀' ),
+       'Unusedcategories'          => array( '안쓰는분류', '쓰이지않는분류' ),
+       'Unusedimages'              => array( '안쓰는파일', '안쓰는그림', '쓰이지않는파일', '쓰이지않는그림' ),
+       'Unusedtemplates'           => array( '안쓰는틀', '쓰이지않는틀' ),
        'Unwatchedpages'            => array( '주시안되는문서' ),
-       'Upload'                    => array( '파일올리기', '그림올리기' ),
+       'Upload'                    => array( '올리기', '파일올리기', '그림올리기' ),
        'UploadStash'               => array( '올린비공개파일' ),
        'Userlogin'                 => array( '로그인' ),
        'Userlogout'                => array( '로그아웃' ),
@@ -165,10 +167,10 @@ $magicWords = array(
        'redirect'                => array( '0', '#넘겨주기', '#REDIRECT' ),
        'notoc'                   => array( '0', '__목차숨김__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__화랑숨김__', '__갤러리숨김__', '__NOGALLERY__' ),
-       'forcetoc'                => array( '0', '__목차보임__', '__FORCETOC__' ),
+       'forcetoc'                => array( '0', '__목차보임__', '__목차표시__', '__FORCETOC__' ),
        'toc'                     => array( '0', '__목차__', '__TOC__' ),
        'noeditsection'           => array( '0', '__단락편집숨김__', '__NOEDITSECTION__' ),
-       'noheader'                => array( '0', '__헤더숨김__', '__NOHEADER__' ),
+       'noheader'                => array( '0', '__머릿글숨김__', '__헤더숨김__', '__NOHEADER__' ),
        'currentmonth'            => array( '1', '현재월', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'           => array( '1', '현재월1', 'CURRENTMONTH1' ),
        'currentmonthname'        => array( '1', '현재월이름', 'CURRENTMONTHNAME' ),
@@ -202,6 +204,7 @@ $magicWords = array(
        'pagenamee'               => array( '1', '문서이름E', 'PAGENAMEE' ),
        'namespace'               => array( '1', '이름공간', 'NAMESPACE' ),
        'namespacee'              => array( '1', '이름공간E', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', '이름공간수', 'NAMESPACENUMBER' ),
        'talkspace'               => array( '1', '토론이름공간', 'TALKSPACE' ),
        'talkspacee'              => array( '1', '토론이름공간E', 'TALKSPACEE' ),
        'subjectspace'            => array( '1', '본문서이름공간', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -219,8 +222,9 @@ $magicWords = array(
        'msg'                     => array( '0', '메시지:', 'MSG:' ),
        'subst'                   => array( '0', '풀기:', 'SUBST:' ),
        'safesubst'               => array( '0', '안전풀기:', 'SAFESUBST:' ),
-       'img_thumbnail'           => array( '1', '섬네일', '썸네일', 'thumbnail', 'thumb' ),
-       'img_manualthumb'         => array( '1', '섬네일=$1', '썸네일=$1', 'thumbnail=$1', 'thumb=$1' ),
+       'msgnw'                   => array( '0', '위키잘못메시지:', 'MSGNW:' ),
+       'img_thumbnail'           => array( '1', '섬네일', '썸네일', '축소판', 'thumbnail', 'thumb' ),
+       'img_manualthumb'         => array( '1', '섬네일=$1', '썸네일=$1', '축소판=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'               => array( '1', '오른쪽', 'right' ),
        'img_left'                => array( '1', '왼쪽', 'left' ),
        'img_none'                => array( '1', '없음', 'none' ),
@@ -229,14 +233,19 @@ $magicWords = array(
        'img_framed'              => array( '1', '프레임', 'framed', 'enframed', 'frame' ),
        'img_frameless'           => array( '1', '프레임없음', 'frameless' ),
        'img_page'                => array( '1', '문서=$1', 'page=$1', 'page $1' ),
+       'img_upright'             => array( '1', '위오른쪽', '위오른쪽=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'              => array( '1', '테두리', 'border' ),
        'img_baseline'            => array( '1', '밑줄', 'baseline' ),
        'img_sub'                 => array( '1', '아래첨자', 'sub' ),
        'img_super'               => array( '1', '위첨자', 'super', 'sup' ),
        'img_top'                 => array( '1', '위', 'top' ),
+       'img_text_top'            => array( '1', '글자위', '텍스트위', 'text-top' ),
        'img_middle'              => array( '1', '중간', 'middle' ),
        'img_bottom'              => array( '1', '아래', 'bottom' ),
+       'img_text_bottom'         => array( '1', '글자아래', '텍스트아래', 'text-bottom' ),
        'img_link'                => array( '1', '링크=$1', 'link=$1' ),
+       'img_alt'                 => array( '1', '대체글=$1', 'alt=$1' ),
+       'int'                     => array( '0', '정수:', 'INT:' ),
        'sitename'                => array( '1', '사이트이름', 'SITENAME' ),
        'ns'                      => array( '0', '이름:', '이름공간:', 'NS:' ),
        'nse'                     => array( '0', '이름E:', '이름공간E:', 'NSE:' ),
@@ -249,6 +258,8 @@ $magicWords = array(
        'stylepath'               => array( '0', '스타일경로', 'STYLEPATH' ),
        'grammar'                 => array( '0', '문법:', 'GRAMMAR:' ),
        'gender'                  => array( '0', '성별:', 'GENDER:' ),
+       'notitleconvert'          => array( '0', '__제목변환없음__', '__제변없음__', '__제목변환안함__', '__제변안함__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'        => array( '0', '__내용변환없음__', '__내변없음__', '__내용변환안함__', '__내변안함__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'             => array( '1', '현재주', 'CURRENTWEEK' ),
        'currentdow'              => array( '1', '현재요일숫자', 'CURRENTDOW' ),
        'localweek'               => array( '1', '지역주', 'LOCALWEEK' ),
@@ -264,11 +275,14 @@ $magicWords = array(
        'plural'                  => array( '0', '복수:', '복수형:', 'PLURAL:' ),
        'fullurl'                 => array( '0', '전체주소:', 'FULLURL:' ),
        'fullurle'                => array( '0', '전체주소E:', 'FULLURLE:' ),
+       'canonicalurl'            => array( '0', '표준주소:', 'CANONICALURL:' ),
+       'canonicalurle'           => array( '0', '표준주소E:', 'CANONICALURLE:' ),
        'lcfirst'                 => array( '0', '첫소문자:', 'LCFIRST:' ),
        'ucfirst'                 => array( '0', '첫대문자:', 'UCFIRST:' ),
        'lc'                      => array( '0', '소문자:', 'LC:' ),
        'uc'                      => array( '0', '대문자:', 'UC:' ),
-       'displaytitle'            => array( '1', '제목표시', 'DISPLAYTITLE' ),
+       'raw'                     => array( '0', '원시:', 'RAW:' ),
+       'displaytitle'            => array( '1', '제목보이기', '제목표시', 'DISPLAYTITLE' ),
        'newsectionlink'          => array( '1', '__새글쓰기__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'        => array( '1', '__새글쓰기숨기기__', '__NONEWSECTIONLINK__' ),
        'currentversion'          => array( '1', '현재버전', 'CURRENTVERSION' ),
@@ -276,11 +290,16 @@ $magicWords = array(
        'anchorencode'            => array( '0', '책갈피인코딩', 'ANCHORENCODE' ),
        'currenttimestamp'        => array( '1', '현재타임스탬프', 'CURRENTTIMESTAMP' ),
        'localtimestamp'          => array( '1', '지역타임스탬프', 'LOCALTIMESTAMP' ),
+       'directionmark'           => array( '1', '명령검토', 'DIRECTIONMARK', 'DIRMARK' ),
        'language'                => array( '0', '#언어:', '#LANGUAGE:' ),
        'contentlanguage'         => array( '1', '기본언어', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'        => array( '1', '이름공간문서수', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'          => array( '1', '관리자수', 'NUMBEROFADMINS' ),
+       'formatnum'               => array( '0', '수형식', 'FORMATNUM' ),
+       'padleft'                 => array( '0', '대체왼쪽', 'PADLEFT' ),
+       'padright'                => array( '0', '대체오른쪽', 'PADRIGHT' ),
        'special'                 => array( '0', '특수기능', 'special' ),
+       'speciale'                => array( '0', '특수기능E', '특수기능e', 'speciale' ),
        'defaultsort'             => array( '1', '기본정렬:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                => array( '0', '파일경로:', '그림경로:', 'FILEPATH:' ),
        'tag'                     => array( '0', '태그', 'tag' ),
@@ -288,11 +307,16 @@ $magicWords = array(
        'pagesincategory'         => array( '1', '분류문서수', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                => array( '1', '문서크기', 'PAGESIZE' ),
        'index'                   => array( '1', '__색인__', '__INDEX__' ),
-       'noindex'                 => array( '1', '__색인거부__', '__NOINDEX__' ),
+       'noindex'                 => array( '1', '__색인안함__', '__색인거부__', '__NOINDEX__' ),
        'numberingroup'           => array( '1', '권한별사용자수', '그룹별사용자수', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'          => array( '1', '__넘겨주기고정__', '__STATICREDIRECT__' ),
        'protectionlevel'         => array( '1', '보호수준', 'PROTECTIONLEVEL' ),
        'formatdate'              => array( '0', '날짜형식', 'formatdate', 'dateformat' ),
+       'url_path'                => array( '0', '경로', 'PATH' ),
+       'url_wiki'                => array( '0', '위키', 'WIKI' ),
+       'url_query'               => array( '0', '쿼리', 'QUERY' ),
+       'defaultsort_noerror'     => array( '0', '오류없음', 'noerror' ),
+       'defaultsort_noreplace'   => array( '0', '바꾸기없음', 'noreplace' ),
 );
 
 $bookstoreList = array(
@@ -319,10 +343,10 @@ $messages = array(
 'tog-hidepatrolled' => '최근 바뀜에서 검토된 편집을 숨기기',
 'tog-newpageshidepatrolled' => '새 문서 목록에서 검토된 문서를 숨기기',
 'tog-extendwatchlist' => '주시문서 목록에서 가장 최근의 편집만이 아닌 모든 편집을 보기',
-'tog-usenewrc' => '향상된 최근 바뀜 (자바스크립트)',
+'tog-usenewrc' => '최근 바뀜 및 주시 문서 목록에서 문서별 그룹 바뀜 (자바스크립트 필요)',
 'tog-numberheadings' => '머릿글 번호 매기기',
 'tog-showtoolbar' => '편집창에 툴바 보이기 (자바스크립트)',
-'tog-editondblclick' => '더블클릭으로 문서 편집하기 (자바스크립트)',
+'tog-editondblclick' => '더블 클릭으로 문서 편집하기 (자바스크립트)',
 'tog-editsection' => '[편집] 링크로 부분 편집하기',
 'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 부분 편집하기 (자바스크립트)',
 'tog-showtoc' => '문서의 차례 보여주기 (머릿글이 4개 이상인 경우)',
@@ -353,9 +377,11 @@ $messages = array(
 'tog-watchlisthideliu' => '주시문서 목록에서 로그인한 사용자의 편집을 숨기기',
 'tog-watchlisthideanons' => '주시문서 목록에서 비등록 사용자의 편집을 숨기기',
 'tog-watchlisthidepatrolled' => '주시문서 목록에서 검토된 편집을 숨기기',
+'tog-nolangconversion' => '변형 변환을 비활성화',
 'tog-ccmeonemails' => '이메일을 보낼 때 내 이메일로 복사본을 보내기',
 'tog-diffonly' => '편집 차이를 비교할 때 문서 내용을 보지 않기',
 'tog-showhiddencats' => '숨은 분류 보기',
+'tog-noconvertlink' => '링크 제목 변환을 비활성화',
 'tog-norollbackdiff' => '되돌리기 후 차이를 보이지 않기',
 
 'underline-always' => '항상',
@@ -429,11 +455,11 @@ $messages = array(
 'category-empty' => '이 분류에 속하는 문서나 자료가 없습니다.',
 'hidden-categories' => '{{PLURAL:$1|숨은 분류}}',
 'hidden-category-category' => '숨은 분류',
-'category-subcat-count' => '다음은 이 분류에 속하는 하위 분류 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
+'category-subcat-count' => '{{PLURAL:$2|이 분류에는 하위 분류 1개만이 속해 있습니다.|다음은 이 분류에 속하는 하위 분류 $2개 가운데 $1개입니다.}}',
 'category-subcat-count-limited' => '이 분류에 하위분류가 $1개 있습니다.',
-'category-article-count' => '다음은 이 분류에 속하는 문서 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
+'category-article-count' => '{{PLURAL:$2|이 분류에는 문서 1개만이 속해 있습니다.|다음은 이 분류에 속하는 문서 $2개 가운데 $1개입니다.}}',
 'category-article-count-limited' => '이 분류에 문서가 $1개 있습니다.',
-'category-file-count' => '다음은 이 분류에 속하는 파일 {{PLURAL:$2|$1 개|$2 개 가운데 $1 개}} 입니다.',
+'category-file-count' => '{{PLURAL:$2|이 분류에는 파일 1개만이 속해 있습니다.|다음은 이 분류에 속하는 파일 $2개 가운데 $1개입니다.}}',
 'category-file-count-limited' => '이 분류에 파일이 $1개 있습니다.',
 'listingcontinuesabbrev' => ' (계속)',
 'index-category' => '색인된 문서',
@@ -457,7 +483,7 @@ $messages = array(
 'qbedit' => '편집',
 'qbpageoptions' => '문서 기능',
 'qbpageinfo' => '문서 정보',
-'qbmyoptions' => '내 문서',
+'qbmyoptions' => '내 사용자 문서',
 'qbspecialpages' => '특수 문서',
 'faq' => '자주 묻는 질문',
 'faqpage' => 'Project:FAQ',
@@ -470,7 +496,7 @@ $messages = array(
 'vector-action-undelete' => '되살리기',
 'vector-action-unprotect' => '보호 설정 변경',
 'vector-simplesearch-preference' => '향상된 검색어 제안 사용하기 (벡터 스킨 전용)',
-'vector-view-create' => '생성',
+'vector-view-create' => '만들기',
 'vector-view-edit' => '편집',
 'vector-view-history' => '역사',
 'vector-view-view' => '읽기',
@@ -495,7 +521,7 @@ $messages = array(
 'print' => '인쇄',
 'view' => '보기',
 'edit' => '편집',
-'create' => '생성',
+'create' => '만들기',
 'editthispage' => '이 문서 편집하기',
 'create-this-page' => '이 문서 만들기',
 'delete' => '삭제',
@@ -589,7 +615,7 @@ $1',
 'collapsible-expand' => '보이기',
 'thisisdeleted' => '$1을 보거나 되살리겠습니까?',
 'viewdeleted' => '$1을 보겠습니까?',
-'restorelink' => '삭제된 편집 $1 개',
+'restorelink' => '삭제된 편집 $1개',
 'feedlinks' => '피드:',
 'feed-invalid' => '잘못된 구독 피드 방식입니다.',
 'feed-unavailable' => '피드 서비스는 제공하지 않습니다',
@@ -668,8 +694,8 @@ $1',
 'cannotdelete-title' => '"$1" 문서를 삭제할 수 없습니다.',
 'badtitle' => '잘못된 제목',
 'badtitletext' => '문서 제목이 잘못되었거나 비어있습니다.',
-'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|$1개의 결과}}가 있습니다.',
-'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 갱신되었습니다.  캐시에 최대 {{PLURAL:$4|$4개의 결과}}가 있습니다.',
+'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 $1개}}가 있습니다.',
+'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 갱신되었습니다.  캐시에 최대 {{PLURAL:$4|결과 $4개}}가 있습니다.',
 'querypage-no-updates' => '이 문서의 갱신이 현재 비활성화되어 있습니다. 자료가 잠시 갱신되지 않을 것입니다.',
 'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />함수: $1<br />쿼리: $2',
 'viewsource' => '내용 보기',
@@ -694,6 +720,10 @@ $2',
 'filereadonlyerror' => '‘$2’ 파일 저장소가 읽기 전용이기 때문에 ‘$1’ 파일을 변경할 수 없습니다.
 
 저장소 관리자가 파일 저장소를 잠근 이유에 대해 "\'\'$3\'\'"이라는 설명을 남겼습니다.',
+'invalidtitle-knownnamespace' => '제목 오류: 이름공간 "$2"와 텍스트 "$3"',
+'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 이름공간 번호 "$1"과, 텍스트 "$2"',
+'exception-nologin' => '로그인하지 않음',
+'exception-nologin-text' => '이 문서나 행동은 이 위키에 로그인을 해야 합니다.',
 
 # Virus scanner
 'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: ''$1''",
@@ -722,12 +752,12 @@ $2',
 'userloginnocreate' => '로그인',
 'logout' => '로그아웃',
 'userlogout' => '로그아웃',
-'notloggedin' => '로그인하고 있지 않음',
+'notloggedin' => '로그인하지 않음',
 'nologin' => '계정이 없나요? $1.',
 'nologinlink' => '계정을 만들 수 있습니다',
 'createaccount' => '계정 만들기',
 'gotaccount' => "계정이 이미 있다면, '''$1'''.",
-'gotaccountlink' => '로그인하세요',
+'gotaccountlink' => '로그인',
 'userlogin-resetlink' => '계정 이름이나 비밀번호를 잊으셨나요?',
 'createaccountmail' => '이메일로 보내기',
 'createaccountreason' => '이유:',
@@ -750,7 +780,7 @@ $2',
 'nouserspecified' => '사용자 이름을 입력하지 않았습니다.',
 'login-userblocked' => '이 사용자는 차단되었습니다. 로그인할 수 없습니다.',
 'wrongpassword' => '입력한 비밀번호가 다릅니다. 다시 시도해 주세요.',
-'wrongpasswordempty' => 'ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\93°지 않았습니다.
+'wrongpasswordempty' => 'ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e\85ë ¥í\95\98지 않았습니다.
 다시 시도해 주세요.',
 'passwordtooshort' => '비밀번호는 $1 문자 이상이어야 합니다.',
 'password-name-match' => '비밀번호는 사용자 이름과 반드시 달라야 합니다.',
@@ -769,7 +799,7 @@ $2',
 'eauthentsent' => '확인 이메일을 보냈습니다. 이메일 내용의 지시대로 계정 확인 절차를 실행해 주십시오.',
 'throttled-mailpassword' => '비밀번호 확인 이메일을 이미 최근 $1 시간 안에 보냈습니다. 악용을 방지하기 위해 비밀번호 확인 메일은 $1 시간마다 오직 하나씩만 보낼 수 있습니다.',
 'mailerror' => '메일 보내기 오류: $1',
-'acct_creation_throttle_hit' => '당신의 IP 주소를 이용한 방문자가 이전에 이미 계정을 $1개 생성하여, 계정 생성 한도를 초과하였습니다.
+'acct_creation_throttle_hit' => '당신의 IP 주소를 이용한 방문자가 이전에 이미 계정을 $1개 만들어, 계정 생성 한도를 초과하였습니다.
 따라서 지금은 이 IP 주소로는 더 이상 계정을 만들 수 없습니다.',
 'emailauthenticated' => '당신의 이메일 주소는 $2 $3에 인증되었습니다.',
 'emailnotauthenticated' => '이메일 주소를 인증하지 않았습니다. 이메일 확인 절차를 거치지 않으면 다음 이메일 기능을 사용할 수 없습니다.',
@@ -799,6 +829,7 @@ $2',
 # Change password dialog
 'resetpass' => '비밀번호 바꾸기',
 'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다. 로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
+'resetpass_text' => '<!-- 여기에 텍스트를 추가하세요 -->',
 'resetpass_header' => '비밀번호 변경',
 'oldpassword' => '이전 비밀번호:',
 'newpassword' => '새 비밀번호:',
@@ -845,7 +876,7 @@ $2
 'passwordreset-emailerror-capture' => '비밀번호 찾기 이메일이 생성되어 아래에 표시되었지만 발송하는 데에는 실패했습니다: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'E-mail 주소 변경',
+'changeemail' => '이메일 주소 바꾸기',
 'changeemail-header' => '계정 메일 주소 변경',
 'changeemail-text' => '이메일 주소를 바꾸려면 이 양식을 채워주십시오. 변경 내용을 확인하기 위해 당신의 비밀번호를 입력해야합니다.',
 'changeemail-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
@@ -1015,11 +1046,11 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 'template-semiprotected' => '(준보호됨)',
 'hiddencategories' => '이 문서는 다음 숨은 분류 $1 개에 속해 있습니다:',
 'edittools' => '<!-- 이 문서는 편집 창과 파일 올리기 창에 출력됩니다. -->',
-'nocreatetitle' => '문서 생성 제한',
+'nocreatetitle' => '문서 만들기 제한',
 'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 생성하는 것은 제한되어 있습니다. 이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들 수 있습니다]].',
 'nocreate-loggedin' => '새 문서를 만들 권한이 없습니다.',
 'sectioneditnotsupported-title' => '부분 편집 지원 안됨',
-'sectioneditnotsupported-text' => '이 문서에서는  편집을 지원하지 않습니다.',
+'sectioneditnotsupported-text' => '이 문서에서는 문단 편집을 지원하지 않습니다.',
 'permissionserrors' => '권한 오류',
 'permissionserrorstext' => '해당 명령을 수행할 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해보세요:',
 'permissionserrorstext-withaction' => '$2 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해주세요:',
@@ -1057,6 +1088,8 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'node-count-exceeded-warning' => '페이지가 노드 수를 초과하였습니다.',
 'expansion-depth-exceeded-category' => '페이지가 확장 깊이를 초과하였습니다.',
 'expansion-depth-exceeded-warning' => '페이지가 확장 깊이를 초과하였습니다',
+'parser-unstrip-loop-warning' => '스트립하지 않는 반복이 감지됨',
+'parser-unstrip-recursion-limit' => '스트립하지 않는 재귀 한도가 초과됨 ($1)',
 
 # "Undo" feature
 'undo-success' => '이 편집을 되돌리려면 아래의 변경되는 사항을 확인한 후 저장해주세요.',
@@ -1086,7 +1119,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'page_first' => '처음',
 'page_last' => '마지막',
 'histlegend' => "비교하려는 판을 선택한 다음 엔터나 아래의 버튼을 누르세요.<br />
-설명: '''({{int:cur}})''' = 최신판과 비교,
+설명: '''({{int:cur}})''' = 최신 판과 비교,
 '''({{int:last}})''' = 이전 판과 비교, '''{{int:minoreditletter}}'''= 사소한 편집",
 'history-fieldset-title' => '문서의 변경 내력 찾기',
 'history-show-deleted' => '삭제된 것만',
@@ -1216,7 +1249,7 @@ $1",
 'mergehistory-go' => '합칠 수 있는 편집 보기',
 'mergehistory-submit' => '문서 역사 합치기',
 'mergehistory-empty' => '합칠 수 있는 판이 없습니다.',
-'mergehistory-success' => '[[:$1]] 문서의 $3개의 판이 [[:$2]]에 성공적으로 합쳐졌습니다.',
+'mergehistory-success' => '[[:$1]] 문서의 판 $3개가 [[:$2]]에 성공적으로 합쳐졌습니다.',
 'mergehistory-fail' => '문서 역사 합치기 명령을 수행할 수 없습니다. 문서와 시간 변수를 다시 확인하십시오.',
 'mergehistory-no-source' => '원본인 $1 문서가 존재하지 않습니다.',
 'mergehistory-no-destination' => '대상인 $1 문서가 존재하지 않습니다.',
@@ -1234,10 +1267,12 @@ $1",
 'mergelogpagetext' => '다음은 한 문서의 역사를 다른 문서의 역사와 합친 최근 기록입니다.',
 
 # Diffs
-'history-title' => '‘$1’ 문서의 변경 내력',
+'history-title' => '"$1"  문서의 변경 내력',
+'difference-title' => '"$1"의 두 판 사이의 차이',
+'difference-title-multipage' => '문서 "$1"과 "$2" 간의 차이',
 'difference-multipage' => '(문서간의 차이)',
 'lineno' => '$1번째 줄:',
-'compareselectedversions' => '선택된 판들을 비교하기',
+'compareselectedversions' => '선택한 판을 비교하기',
 'showhideselectedversions' => '선택한 판을 보이기/숨기기',
 'editundo' => '편집 취소',
 'diff-multi' => '({{PLURAL:$2|한 사용자의|사용자 $2명의}} 중간의 편집 $1개 숨겨짐)',
@@ -1279,7 +1314,7 @@ $1",
 'search-result-category-size' => '문서 {{PLURAL:$1|1|$1}}개, 하위 분류 {{PLURAL:$2|1|$2}}개, 파일 {{PLURAL:$3|1|$3}}',
 'search-result-score' => '유사도: $1%',
 'search-redirect' => '($1에서 넘어옴)',
-'search-section' => '($1 )',
+'search-section' => '($1 문단)',
 'search-suggest' => '$1 문서를 찾고 계신가요?',
 'search-interwiki-caption' => '자매 프로젝트',
 'search-interwiki-default' => '$1 결과:',
@@ -1329,6 +1364,7 @@ $1",
 'prefs-beta' => '베타 기능',
 'prefs-datetime' => '날짜와 시각',
 'prefs-labs' => '실험 중인 기능',
+'prefs-user-pages' => '사용자 문서',
 'prefs-personal' => '사용자 정보',
 'prefs-rc' => '최근 바뀜',
 'prefs-watchlist' => '주시문서 목록',
@@ -1485,8 +1521,8 @@ $1",
 # Rights
 'right-read' => '문서 읽기',
 'right-edit' => '문서 편집',
-'right-createpage' => '문서 생성 (토론 문서 제외)',
-'right-createtalk' => '토론 문서 생성',
+'right-createpage' => '문서 만들기 (토론 문서 제외)',
+'right-createtalk' => '토론 문서 만들기',
 'right-createaccount' => '새 계정 만들기',
 'right-minoredit' => '사소한 편집 사용 가능',
 'right-move' => '문서 이동',
@@ -1541,7 +1577,7 @@ $1",
 'right-siteadmin' => '데이터베이스를 잠그거나 잠금 해제',
 'right-override-export-depth' => '5단계로 링크된 문서를 포함하여 문서를 내보내기',
 'right-sendemail' => '다른 사용자에게 이메일 보내기',
-'right-passwordreset' => '호 재설정 이메일을 보기',
+'right-passwordreset' => '비밀번호 재설정 이메일을 보기',
 
 # User rights log
 'rightslog' => '사용자 권한 기록',
@@ -1554,7 +1590,7 @@ $1",
 'action-read' => '이 문서를 읽기',
 'action-edit' => '문서 편집',
 'action-createpage' => '문서 생성',
-'action-createtalk' => '토론 문서 생성하기',
+'action-createtalk' => '토론 문서 만들기',
 'action-createaccount' => '새 계정 만들기',
 'action-minoredit' => '이 편집을 사소한 편집으로 표시하기',
 'action-move' => '이 문서 옮기기',
@@ -1641,8 +1677,8 @@ $1",
 'upload-tryagain' => '수정된 파일 설명을 저장',
 'uploadnologin' => '로그인하지 않음',
 'uploadnologintext' => '파일을 올리려면 [[Special:UserLogin|로그인]]해야 합니다.',
-'upload_directory_missing' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ì\9a© ë\94\94ë \89í\86 리($1)가 없고 웹 서버가 생성하지 못했습니다.',
-'upload_directory_read_only' => 'í\8c\8cì\9d¼ ì \80ì\9e¥ ë\94\94ë \89í\86 리($1)에 쓰기 권한이 없습니다.',
+'upload_directory_missing' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ì\9a© ë\94\94ë \89í\84°리($1)가 없고 웹 서버가 생성하지 못했습니다.',
+'upload_directory_read_only' => 'í\8c\8cì\9d¼ ì \80ì\9e¥ ë\94\94ë \89í\84°리($1)에 쓰기 권한이 없습니다.',
 'uploaderror' => '올리기 오류',
 'upload-recreate-warning' => "'''경고: 이 파일로 된 이름이 삭제되었거나 옮겨졌습니다.'''
 
@@ -1663,7 +1699,7 @@ $1",
 갤러리 형식으로 확인하고 싶으시다면 [[Special:NewFiles|새 파일 목록]]을 보세요.',
 'filename' => '파일 이름',
 'filedesc' => '파일의 설명',
-'fileuploadsummary' => 'ì\84¤ëª\85:',
+'fileuploadsummary' => 'ì\9a\94ì\95½:',
 'filereuploadsummary' => '파일 변경에 대한 요약:',
 'filestatus' => '저작권 상태:',
 'filesource' => '출처:',
@@ -1746,7 +1782,7 @@ $1",
 'filename-bad-prefix' => '올리려고 하는 파일 이름이 \'\'\'"$1"\'\'\'(으)로 시작합니다.
 "$1"은(는) 디지털 사진기가 자동으로 붙이는 의미없는 이름입니다.
 파일에 대해 알기 쉬운 이름을 골라주세요.',
-'filename-prefix-blacklist' => ' #<!-- 이 줄은 그대로 두십시오. --> <pre>
+'filename-prefix-blacklist' => ' #<!-- 이 줄은 그대로 두십시오 --> <pre>
 # 문법은 다음과 같습니다:
 #   * "#"에서 그 줄의 끝까지는 코멘트입니다.
 #   * 비어 있지 않은 줄은 디지털 카메라에서 자동적으로 부여하는 파일 접두어입니다.
@@ -1759,7 +1795,7 @@ IMG # 일반
 JD # 제놉틱
 MGP # 펜탁스
 PICT # 기타
- #</pre> <!-- 이 줄은 그대로 두십시오. -->',
+ #</pre> <!-- 이 줄은 그대로 두십시오 -->',
 'upload-success-subj' => '올리기 성공',
 'upload-success-msg' => '파일을 [$2]에서 성공적으로 올렸습니다. 당신이 올린 파일이 여기 있습니다: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => '올리기 실패',
@@ -1796,14 +1832,15 @@ $1',
 'backend-fail-writetemp' => '임시 파일을 쓸 수 없습니다.',
 'backend-fail-closetemp' => '임시 파일을 닫을 수 없습니다.',
 'backend-fail-read' => '$1 파일을 읽을 수 없습니다.',
-'backend-fail-create' => '$1 í\8c\8cì\9d¼ì\9d\84 ì\93¸ ì\88\98 ì\97\86습니다.',
-'backend-fail-maxsize' => '$2{{PLURAL:$2|ë°\94ì\9d´í\8a¸}}ë³´ë\8b¤ ì»¤ì\84\9c $1 í\8c\8cì\9d¼ì\9d\84 ì\83\9dì\84±하지 못했습니다.',
+'backend-fail-create' => '$1 í\8c\8cì\9d¼ì\9d\84 ì \80ì\9e¥í\95\98ì§\80 ëª»í\96\88습니다.',
+'backend-fail-maxsize' => '$2{{PLURAL:$2|ë°\94ì\9d´í\8a¸}}ë³´ë\8b¤ ì»¤ì\84\9c $1 í\8c\8cì\9d¼ì\9d\84 ì \80ì\9e¥하지 못했습니다.',
 'backend-fail-readonly' => '‘$1’ 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: “$2”',
 'backend-fail-synced' => '파일 "$1"은 내부 저장 백엔드에 불안정한 상태로 있습니다.',
 'backend-fail-connect' => "'$1' 저장 백엔드에 접속하지 못했습니다.",
 'backend-fail-internal' => '"$1" 저장 백엔드에 알 수 없는 오류가 발생했습니다.',
 'backend-fail-contenttype' => '"$1"에 저장하기 위한 파일의 내용 유형을 판별하지 못했습니다.',
-'backend-fail-batchsize' => '저장 백엔드에서 $1개의 파일 {{PLURAL:$1|작업}}이 쌓여 있습니다; 한계는 $2개입니다.',
+'backend-fail-batchsize' => '저장 백엔드에서 파일 {{PLURAL:$1|작업}} $1개가 쌓여 있습니다; 한계는 $2개입니다.',
+'backend-fail-usable' => '파일 저장 권한이 없거나 저장 위치가 빠졌기 때문에 $1 파일을 저장할 수 없습니다.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => '저장소 백엔드 ‘$1’에 대한 저널 데이터베이스에 연결할 수 없습니다.',
@@ -1897,7 +1934,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist' => '파일 역사',
 'filehist-help' => '날짜/시간 링크를 클릭하면 해당 시간의 파일을 볼 수 있습니다.',
 'filehist-deleteall' => '모두 삭제',
-'filehist-deleteone' => 'ì§\80ì\9a°ê¸°',
+'filehist-deleteone' => 'ì\82­ì \9c',
 'filehist-revert' => '되돌리기',
 'filehist-current' => '최신',
 'filehist-datetime' => '날짜/시간',
@@ -1910,7 +1947,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-comment' => '내용',
 'filehist-missing' => '파일을 찾을 수 없음',
 'imagelinks' => '이 파일을 사용하는 문서',
-'linkstoimage' => '다음 $1ê°\9cì\9d\98 ë¬¸ì\84\9cê°\80 ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\8aµë\8b\88ë\8b¤:',
+'linkstoimage' => '다음 ë¬¸ì\84\9c $1ê°\9cê°\80 ì\9d´ í\8c\8cì\9d¼ì\9d\84 ì\82¬ì\9a©í\95\98ê³  ì\9e\88ì\8aµë\8b\88ë\8b¤:',
 'linkstoimage-more' => '$1개 이상의 문서가 이 파일을 가리키고 있습니다.
 다음 목록은 이 파일을 가리키는 처음 $1개 문서만 보여주고 있습니다.
 이 파일을 가리키는 모든 문서를 보려면 [[Special:WhatLinksHere/$2|여기]]를 참고해 주십시오.',
@@ -1933,6 +1970,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'shared-repo-from' => '($1)',
 'shared-repo' => '공용 저장소',
 'shared-repo-name-wikimediacommons' => '위키미디어 공용',
+'filepage.css' => '/* 이 CSS 설정은 파일 설명 페이지에 포함되며, 또한 해외 클라이언트 위키에 포함됩니다 */',
 
 # File reversion
 'filerevert' => '$1 되돌리기',
@@ -1965,7 +2003,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filedelete-maintenance-title' => '파일을 삭제할 수 없습니다',
 
 # MIME search
-'mimesearch' => 'MIME 검색',
+'mimesearch' => 'MIME 찾기',
 'mimesearch-summary' => 'MIME 타입에 해당하는 파일을 검색합니다. MIME 값을 <tt>image/jpeg</tt> 형태로 입력해주세요.',
 'mimetype' => 'MIME 종류:',
 'download' => '다운로드',
@@ -2045,8 +2083,8 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'nmembers' => '문서 $1개',
 'nrevisions' => '편집 $1개',
 'nviews' => '$1회 읽음',
-'nimagelinks' => '{{PLURAL:$1}}ê°\9c ë¬¸ì\84\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
-'ntransclusions' => '{{PLURAL:$1}}ê°\9c ë¬¸ì\84\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
+'nimagelinks' => '문ì\84\9c $1ê°\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
+'ntransclusions' => '문ì\84\9c $1ê°\9cì\97\90ì\84\9c ì\82¬ì\9a© ì¤\91',
 'specialpage-empty' => '명령에 대한 결과가 없습니다.',
 'lonelypages' => '외톨이 문서 목록',
 'lonelypagestext' => '{{SITENAME}}에서 다른 모든 문서에서 링크되거나 틀로 포함되지 않은 문서의 목록입니다.',
@@ -2122,10 +2160,11 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 로그 종류, 계정 이름, 문서 이름을 선택해서 볼 수 있습니다. 검색시에는 대소문자를 구별합니다.',
 'logempty' => '일치하는 항목이 없습니다.',
 'log-title-wildcard' => '다음 글로 시작하는 제목 검색',
+'showhideselectedlogentries' => '선택한 기록 항목 보이기/숨기기',
 
 # Special:AllPages
 'allpages' => '모든 문서 목록',
-'alphaindexline' => '$1에서 $2까지',
+'alphaindexline' => '$1부터 $2까지',
 'nextpage' => '다음 문서 ($1)',
 'prevpage' => '이전 문서 ($1)',
 'allpagesfrom' => '다음으로 시작하는 문서 보기:',
@@ -2193,7 +2232,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 # Special:ListGroupRights
 'listgrouprights' => '사용자 권한 목록',
 'listgrouprights-summary' => '다음은 이 위키에서 설정된 사용자 권한 그룹의 목록입니다.
-각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|이곳]]을 참조하십시오.',
+각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|이곳]]을 참고하세요.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">부여된 권한</span>
 * <span class="listgrouprights-revoked">해제된 권한</span>',
 'listgrouprights-group' => '그룹',
@@ -2243,6 +2282,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 # User Messenger
 'usermessage-summary' => '시스템 메시지 남기기',
 'usermessage-editor' => '시스템 메신저',
+'usermessage-template' => 'MediaWiki:UserMessage',
 
 # Watchlist
 'watchlist' => '주시문서 목록',
@@ -2329,7 +2369,7 @@ $UNWATCHURL
 'exblank' => '빈 문서',
 'delete-confirm' => '‘$1’ 삭제',
 'delete-legend' => '삭제',
-'historywarning' => "'''주의''': 삭제하려는 문서에 약 $1개의 과거 편집 내역이 있습니다:",
+'historywarning' => "'''주의:''' 삭제하려는 문서에 과거 편집 내역 약 $1개가 있습니다:",
 'confirmdeletetext' => '문서와 문서 역사를 삭제하려고 합니다. 삭제하려는 문서가 맞는지, 이 문서를 삭제하는 것이 [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지를 확인해 주세요.',
 'actioncomplete' => '명령 완료',
 'actionfailed' => '명령 실패',
@@ -2425,7 +2465,7 @@ $UNWATCHURL
 # Restrictions (nouns)
 'restriction-edit' => '편집',
 'restriction-move' => '이동',
-'restriction-create' => '생성',
+'restriction-create' => '만들기',
 'restriction-upload' => '올리기',
 
 # Restriction levels
@@ -2521,6 +2561,7 @@ $1',
 'sp-contributions-username' => 'IP 주소 혹은 계정 이름:',
 'sp-contributions-toponly' => '최신판만 보기',
 'sp-contributions-submit' => '찾기',
+'sp-contributions-explain' => '',
 
 # What links here
 'whatlinkshere' => '여기를 가리키는 문서',
@@ -2636,7 +2677,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 [[Special:BlockList|여기]]에서 현재 차단된 사용자 목록을 볼 수 있습니다.',
 'unblocklogentry' => '$1을 차단 해제했습니다.',
 'block-log-flags-anononly' => 'IP만 막음',
-'block-log-flags-nocreate' => '계정 생성 막음',
+'block-log-flags-nocreate' => '계정 생성 금지됨',
 'block-log-flags-noautoblock' => '자동 차단 비활성화됨',
 'block-log-flags-noemail' => '이메일 막음',
 'block-log-flags-nousertalk' => '자신의 토론 문서 편집 불가',
@@ -2753,7 +2794,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'movelogpage' => '이동 기록',
 'movelogpagetext' => '아래는 옮겨진 문서의 목록입니다.',
 'movesubpage' => '{{PLURAL:$1}}하위 문서',
-'movesubpagetext' => '이 문서에는 다음 $1ê°\9cì\9d\98 í\95\98ì\9c\84 ë¬¸ì\84\9cê°\80 ì\9e\88ì\8aµë\8b\88ë\8b¤.',
+'movesubpagetext' => '이 문서에는 다음 í\95\98ì\9c\84 ë¬¸ì\84\9c $1ê°\9cê°\80 ì\9e\88ì\8aµë\8b\88ë\8b¤.',
 'movenosubpage' => '이 문서에는 하위 문서가 존재하지 않습니다.',
 'movereason' => '이유:',
 'revertmove' => '되돌리기',
@@ -2915,7 +2956,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'tooltip-pt-logout' => '로그아웃',
 'tooltip-ca-talk' => '문서의 내용에 대한 토론 문서',
 'tooltip-ca-edit' => '문서를 편집할 수 있습니다. 저장하기 전에 미리보기를 해 주세요.',
-'tooltip-ca-addsection' => ' 추가하기',
+'tooltip-ca-addsection' => '문단 추가하기',
 'tooltip-ca-viewsource' => '문서가 잠겨 있습니다. 문서의 소스만 볼 수 있습니다.',
 'tooltip-ca-history' => '문서의 과거 버전들',
 'tooltip-ca-protect' => '문서 보호하기',
@@ -2973,16 +3014,39 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'tooltip-summary' => '짧은 편집 요약을 적어주세요',
 
 # Stylesheets
-'common.css' => '/** 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
+'common.css' => '/* 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
+'standard.css' => '/* 이 CSS 설정은 모든 스탠다드 스킨에 적용됩니다 */',
+'nostalgia.css' => '/* 이 CSS 설정은 모든 노스텔지아 스킨에 적용됩니다 */',
+'cologneblue.css' => '/* 이 CSS 설정은 모든 쾰른 블루 스킨에 적용됩니다 */',
 'monobook.css' => '/* 이 CSS 설정은 모든 모노북 스킨에 적용됩니다 */',
+'myskin.css' => '/* 이 CSS 설정은 모든 마이스킨 스킨에 적용됩니다 */',
+'chick.css' => '/* 이 CSS 설정은 모든 치크 스킨에 적용됩니다 */',
+'simple.css' => '/* 이 CSS 설정은 모든 심플 스킨에 적용됩니다 */',
 'modern.css' => '/* 이 CSS 설정은 모든 모던 스킨에 적용됩니다 */',
 'vector.css' => '/* 이 CSS 설정은 모든 벡터 스킨에 적용됩니다 */',
-'print.css' => '/* 이 CSS 설정은 출력/인쇄 화면에 적용됩니다. */',
+'print.css' => '/* 이 CSS 설정은 출력/인쇄 화면에 적용됩니다 */',
+'handheld.css' => '/* 이 CSS 설정은 $wgHandheldStyle에 설정한 스킨을 기반으로 한 휴대 기기에 적용됩니다 */',
+'noscript.css' => '/* 이 CSS 설정은 자바스크립트를 비활성화한 사용자에 적용됩니다 */',
+'group-autoconfirmed.css' => '/* 이 CSS 설정은 자동 인증된 사용자에만 적용됩니다 */',
+'group-bot.css' => '/* 이 CSS 설정은 봇에만 적용됩니다 */',
+'group-sysop.css' => '/* 이 CSS 설정은 관리자에만 적용됩니다 */',
+'group-bureaucrat.css' => '/* 이 CSS 설정은 사무관에만 적용됩니다 */',
 
 # Scripts
 'common.js' => '/* 이 자바스크립트 설정은 모든 문서, 모든 사용자에게 적용됩니다. */',
-'monobook.js' => '/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다. */',
-'vector.js' => '/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다. */',
+'standard.js' => '/* 이 자바스크립트 설정은 스탠다드 스킨을 사용하는 사용자에게 적용됩니다 */',
+'nostalgia.js' => '/* 이 자바스크립트 설정은 노스텔지아 스킨을 사용하는 사용자에게 적용됩니다 */',
+'cologneblue.js' => '/* 이 자바스크립트 설정은 쾰른 블루 스킨을 사용하는 사용자에게 적용됩니다 */',
+'monobook.js' => '/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */',
+'myskin.js' => '/* 이 자바스크립트 설정은 마이스킨 스킨을 사용하는 사용자에게 적용됩니다 */',
+'chick.js' => '/* 이 자바스크립트 설정은 치크 스킨을 사용하는 사용자에게 적용됩니다 */',
+'simple.js' => '/* 이 자바스크립트 설정은 심플 스킨을 사용하는 사용자에게 적용됩니다 */',
+'modern.js' => '/* 이 자바스크립트 설정은 모던 스킨을 사용하는 사용자에게 적용됩니다 */',
+'vector.js' => '/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */',
+'group-autoconfirmed.js' => '/* 이 자바스크립트 설정은 자동 인증된 사용자에만 적용됩니다 */',
+'group-bot.js' => '/* 이 자바스크립트 설정은 봇에만 적용됩니다 */',
+'group-sysop.js' => '/* 이 자바스크립트 설정은 관리자에만 적용됩니다 */',
+'group-bureaucrat.js' => '/* 이 자바스크립트 설정은 사무관에만 적용됩니다 */',
 
 # Metadata
 'notacceptable' => '클라이언트에서 인식 가능한 출력 포맷이 없습니다.',
@@ -3006,7 +3070,8 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'spamprotectionmatch' => '문제가 되는 부분은 다음과 같습니다: $1',
 'spambot_username' => 'MediaWiki 스팸 제거',
 'spam_reverting' => '$1을 포함하지 않는 최신 버전으로 되돌림',
-'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 문서를 비움',
+'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
+'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
 
 # Info page
 'pageinfo-title' => '"$1" 문서에 대한 정보',
@@ -3308,7 +3373,7 @@ Variants for Chinese language
 'exif-disclaimer' => '면책 조항',
 'exif-contentwarning' => '콘텐츠 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
-'exif-intellectualgenre' => '컨텐츠 정보',
+'exif-intellectualgenre' => 'ì½\98텐츠 정보',
 'exif-subjectnewscode' => '주제 코드',
 'exif-scenecode' => 'IPTC 장면 코드',
 'exif-event' => '묘사된 사건',
@@ -3322,6 +3387,10 @@ Variants for Chinese language
 'exif-compression-2' => 'CCITT 그룹-3 1차원 수정 허프먼 반복 길이 부호화',
 'exif-compression-3' => 'CCITT 그룹-3 팩스 인코딩',
 'exif-compression-4' => 'CCITT 그룹-4 팩스 인코딩',
+'exif-compression-6' => 'JPEG (오래됨)',
+'exif-compression-8' => '압축 (Adobe)',
+'exif-compression-32773' => 'PackBits (매킨토시 RLE)',
+'exif-compression-32946' => '압축 (PKZIP)',
 
 'exif-copyrighted-true' => '저작권의 보호를 받음',
 'exif-copyrighted-false' => '퍼블릭 도메인',
@@ -3639,7 +3708,7 @@ $5
 
 # Auto-summaries
 'autosumm-blank' => '문서를 비움',
-'autosumm-replace' => '문서 내용을 ‘$1’으로 교체',
+'autosumm-replace' => '문서 내용을 ‘$1’으로 바꿈',
 'autoredircomment' => '[[$1]] 문서로 넘겨주기',
 'autosumm-new' => '새 문서: $1',
 
@@ -3704,20 +3773,22 @@ $5
 'version-hook-name' => '훅 이름',
 'version-hook-subscribedby' => '훅이 사용된 위치',
 'version-version' => '(버전 $1)',
-'version-license' => 'ë\9d¼ì\9d´ì\84¼스',
+'version-license' => 'ë\9d¼ì\9d´ì\84 스',
 'version-poweredby-credits' => "이 위키는 '''[//www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
 'version-poweredby-others' => '그 외 다른 개발자',
-'version-license-info' => '미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
+'version-license-info' => "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
 
-미디어위키가 유용하게 사용될 수 있기를 바라지만 상용으로 사용되거나 특정 목적에 맞을 것이라는 것을 보증하지 않습니다. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
+미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 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 온라인]으로 읽어보시기 바랍니다.',
+당신은 이 프로그램을 통해 [{{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-product' => '제품',
 'version-software-version' => '버전',
 'version-entrypoints' => 'URL 진입점',
 'version-entrypoints-header-entrypoint' => '진입점',
 'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 문서 경로]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 스크립트 경로]',
 
 # Special:FilePath
 'filepath' => '파일 경로',
@@ -3744,7 +3815,7 @@ $5
 * <span class="mw-specialpagerestricted">제한된 특수 문서.</span>',
 'specialpages-group-maintenance' => '관리용 목록',
 'specialpages-group-other' => '다른 특수 문서',
-'specialpages-group-login' => '로그인 / 등록',
+'specialpages-group-login' => '로그인 / 가입',
 'specialpages-group-changes' => '최근 바뀜과 기록',
 'specialpages-group-media' => '파일 관리',
 'specialpages-group-users' => '사용자와 권한',
@@ -3822,13 +3893,13 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 사용자가 $3 문서를 삭제하였습니다.',
 'logentry-delete-restore' => '$1 사용자가 $3 문서를 복구하였습니다.',
-'logentry-delete-event' => '$1 사용자가 $3의 $5개의 기록에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-delete-event' => '$1 사용자가 $3의 기록 $5개에 대해 표시 설정을 바꾸었습니다: $4',
 'logentry-delete-revision' => '$1 사용자가 $3 문서의 {{PLURAL:$5|$5}}개 편집의 설정을 변경하였습니다: $4',
 'logentry-delete-event-legacy' => '$1 사용자가 $3 문서 기록의 표시 설정을 변경하였습니다.',
 'logentry-delete-revision-legacy' => '$1 사용자가 $3 문서 편집의 표시 설정을 변경하였습니다.',
 'logentry-suppress-delete' => '$1 사용자가 $3 문서를 숨겼습니다.',
-'logentry-suppress-event' => '$1 사용자가 비공개적으로 $3의 {{PLURAL:$5|$5개의 기록}}에 대해 표시 설정을 바꾸었습니다: $4',
-'logentry-suppress-revision' => '$1 사용자가 비공개적으로 $3 문서의 {{PLURAL:$5|$5개의 판}}에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-suppress-event' => '$1 사용자가 비공개적으로 $3의 {{PLURAL:$5|기록 $5개}}에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-suppress-revision' => '$1 사용자가 비공개적으로 $3 문서의 {{PLURAL:$5|판 $5개}}에 대해 표시 설정을 바꾸었습니다: $4',
 'logentry-suppress-event-legacy' => '$1 사용자가 비공개적으로 $3의 항목에 대한 표시 설정을 바꾸었습니다.',
 'logentry-suppress-revision-legacy' => '$1 사용자가 비공개적으로 $3 문서의 특정 판에 대한 표시 설정을 바꾸었습니다.',
 'revdelete-content-hid' => '내용 숨겨짐',
@@ -3849,7 +3920,7 @@ $5
 'logentry-newusers-create' => '$1 사용자가 계정을 생성했습니다.',
 'logentry-newusers-create2' => '$1 사용자가 $3 계정을 생성했습니다.',
 'logentry-newusers-autocreate' => '$1 계정이 자동적으로 생성되었습니다.',
-'newuserlog-byemail' => '이메일로 보낸 호',
+'newuserlog-byemail' => '이메일로 보낸 비밀번호',
 
 # Feedback
 'feedback-bugornote' => '기술적 문제를 구체적으로 설명할 준비가 되었다면 [$1 버그를 신고]해 주세요.
@@ -3864,8 +3935,8 @@ $5
 'feedback-error3' => '오류: API가 응답하지 않음',
 'feedback-thanks' => '감사합니다! ‘[$2 $1]’ 문서에 당신의 의견을 남겼습니다.',
 'feedback-close' => '완료',
-'feedback-bugcheck' => 'ê°\90ì\82¬í\95©ë\8b\88ë\8b¤! í\98¹ì\8b\9c í\95´ë\8b¹ ì\82¬í\95­ì\9d´ [$1 ê¸°ì¡´ì\9d\98 ë²\84ê·¸ ë¦¬í\8f¬í\8a¸]에 올라와 있는지 확인해주세요.',
-'feedback-bugnew' => 'í\99\95ì\9d¸í\96\88ì\8aµë\8b\88ë\8b¤. ì\83\88ë¡\9cì\9a´ ë²\84ê·¸ ë¦¬í\8f¬í\8a¸를 작성합니다.',
+'feedback-bugcheck' => 'ê°\90ì\82¬í\95©ë\8b\88ë\8b¤! í\98¹ì\8b\9c í\95´ë\8b¹ ì\82¬í\95­ì\9d´ [$1 ê¸°ì¡´ì\9d\98 ë²\84ê·¸ ë³´ê³ ì\84\9c]에 올라와 있는지 확인해주세요.',
+'feedback-bugnew' => 'í\99\95ì\9d¸í\96\88ì\8aµë\8b\88ë\8b¤. ì\83\88ë¡\9cì\9a´ ë²\84ê·¸ ë³´ê³ ì\84\9c를 작성합니다.',
 
 # API errors
 'api-error-badaccess-groups' => '당신은 이 위키에 파일을 올릴 권한이 없습니다.',
@@ -3916,4 +3987,6 @@ $5
 'duration-centuries' => '$1{{PLURAL:$1|세기}}',
 'duration-millennia' => '$1{{PLURAL:$1|천년}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => '서버 $1의 잠금을 걸지 못했습니다.',
 );
index 9b18c20..f484421 100644 (file)
@@ -47,7 +47,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Джангы тюрлениулени списогунда тинтилген тюрлениулени кёргюзме',
 'tog-newpageshidepatrolled' => 'Джангы бетлени списогунда тинтилген бетлени кёргюзме',
 'tog-extendwatchlist' => 'Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
-'tog-usenewrc' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ð¸Ð³Ð¸Ð»ÐµÐ½Ð½Ð³ÐµÐ½ Ñ\81пиÑ\81огÑ\83н Ñ\85айÑ\8bÑ\80ландÑ\8bÑ\80 (JavaScript керекди)',
+'tog-usenewrc' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83леде Ñ\8dм ÐºÑ\91здеги Ñ\82измеде Ð±ÐµÑ\82лени ÐºÑ\8aаÑ\83Ñ\83м Ñ\82Ñ\8eÑ\80лениÑ\83леÑ\80и (JavaScript керекди)',
 'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
 'tog-showtoolbar' => 'Тюрлендирген сагъатда, башындагъы инструмент панелни кёргюз (JavaScript)',
 'tog-editondblclick' => 'Эки басыу бла тюрлендириу бет ачылсын (JavaScript)',
@@ -174,7 +174,7 @@ $messages = array(
 'cancel' => 'Ызына алыу',
 'moredotdotdot' => 'Баргъаны…',
 'mypage' => 'Энчи бетим',
-'mytalk' => 'Ð\9cени Ñ\81юзюу бетим',
+'mytalk' => 'Сюзюу бетим',
 'anontalk' => 'Бу IP-адресге сюзюу бет',
 'navigation' => 'Навигация',
 'and' => '&#32;эм',
@@ -440,7 +440,7 @@ $2',
 'securelogin-stick-https' => 'Чыкъгъандан сора да HTTPS бла байламлы къой',
 'yourdomainname' => 'Сизни доменигиз:',
 'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
-'login' => 'Кир',
+'login' => 'Кириу',
 'nav-login-createaccount' => 'Кириу / регистрация этиу',
 'loginprompt' => '{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.',
 'userlogin' => 'Кир / регистрация эт',
@@ -452,7 +452,8 @@ $2',
 'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
 'createaccount' => 'Джангы къошулуучуну регистрация эт',
 'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
-'gotaccountlink' => 'Кир',
+'gotaccountlink' => 'Кириу',
+'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
 'createaccountmail' => 'e-mail бла',
 'createaccountreason' => 'Чурум:',
 'badretype' => 'Джазгъан паролларыгъыз бир-бирине келишмейдиле.',
@@ -475,7 +476,7 @@ $2',
 'wrongpasswordempty' => 'Пароль джазылмай къалгъанды. Джангыдан кёрюгюз.',
 'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
 'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
-'mailmypassword' => 'Ð\94жангÑ\8b Ð¿Ð°Ñ\80олÑ\8c Ð´Ð¶Ð¸Ð±ÐµÑ\80 E-mail Ð±Ð»Ð°',
+'mailmypassword' => 'Ð\9cеннге e-mail Ð±Ð»Ð° Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ð¿Ð°Ñ\80олÑ\8c Ð´Ð¶Ð¸Ð±ÐµÑ\80',
 'passwordremindertitle' => '{{SITENAME}}  къошулуучугъа джангы болджаллы пароль',
 'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
 
@@ -533,7 +534,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Паролну атыу',
 'passwordreset-text' => 'Электрон джазма бла тергеу джазыуугъузну (аккаунтугъузну) параметрлерини юсюнден билдириу алыр ючюн бу форманы толтуругъуз.',
-'passwordreset-legend' => 'Ð\9fаÑ\80олнÑ\83 Ð¸Ð¹',
+'passwordreset-legend' => 'Ð\9fаÑ\80олнÑ\83 Ð°Ñ\82Ñ\8bÑ\83',
 'passwordreset-disabled' => 'Бу викиде паролла атыу амал джукъланыбды.',
 'passwordreset-pretext' => '{{PLURAL:$1||Тюбюрекде берилген билгиледен бирин джазыгъыз}}',
 'passwordreset-username' => 'Къошулуучуну аты:',
@@ -541,11 +542,14 @@ $2',
 'passwordreset-capture' => 'Джазылгъан билдириуню эсебине къара?',
 'passwordreset-capture-help' => 'Бу белгини салсагъыз, къошулуучугъа ийилген болджаллы пароль бла билдириу сизге кёргюзюллюкдю.',
 'passwordreset-email' => 'Электрон почтаны адреси:',
+'passwordreset-emailtitle' => '{{SITENAME}} сайтдагъы тергеу джазыуну юсюнден билгиле',
 
 # Special:ChangeEmail
 'changeemail-no-info' => 'Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.',
+'changeemail-oldemail' => 'Почтаны бусагъатдагъы адреси:',
 'changeemail-newemail' => 'Электрон почтаны джангы адреси:',
 'changeemail-none' => '(джокъ)',
+'changeemail-submit' => 'Адресни тюрлендир',
 'changeemail-cancel' => 'Ызына алыу',
 
 # Edit page toolbar
@@ -619,7 +623,7 @@ $2',
 'nosuchsectiontext' => 'Сиз болмагъан бетни тюрлендирирге кюрешесиз.
 Бу бетге къарагъан заманыгъызда, кетерилирге неда башха джерге кёчюрюлюрге боллукъду.',
 'loginreqtitle' => 'Кирирге керекди',
-'loginreqlink' => 'Кир',
+'loginreqlink' => 'Кириу',
 'loginreqpagetext' => 'Сиз башха бетлеге къарар ючюн $1 керексиз.',
 'accmailtitle' => 'Пароль джиберилди',
 'accmailtext' => "[[User talk:$1|$1]] къошулуучугъа къуралгъан пароль $2 адресине джиберилгенди.
@@ -891,7 +895,7 @@ $1",
 ** Орунсуз энчи билгиле',
 'revdelete-otherreason' => 'Башха/къошакъ чурум:',
 'revdelete-reasonotherlist' => 'Башха чурум',
-'revdelete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\81пиÑ\81огÑ\83н тюрлендир',
+'revdelete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\82измеÑ\81ин тюрлендир',
 'revdelete-offender' => 'Бетни версиясыны автору:',
 
 # Suppression log
@@ -931,7 +935,9 @@ $1",
 'mergelogpagetext' => 'Тюбюрек бетлени тарихлерини ахыр бирлешдириулери берилгенди.',
 
 # Diffs
-'history-title' => '«$1» бетни тюрлениу тарихи',
+'history-title' => '$1 — тюрлениу тарихи',
+'difference-title' => '$1 — версияларыны арасында башхалыкъла',
+'difference-title-multipage' => '«$1» эм «$2» бетлени арасында башхалыкъла',
 'difference-multipage' => '(Бетле арасында башхалыкъ)',
 'lineno' => 'Тизгин $1:',
 'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
@@ -963,14 +969,14 @@ $1",
 'searchhelp-url' => 'Help:Ичиндегиле',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
 'searchprofile-articles' => 'Баш бетле',
-'searchprofile-project' => 'Болушлукъ бла проектлени бетлери',
+'searchprofile-project' => 'Болушлукъ эм проект бетле',
 'searchprofile-images' => 'Мультимедия',
-'searchprofile-everything' => 'ХаÑ\80 Ð½Ðµ',
+'searchprofile-everything' => 'ХаÑ\80 ÐºÑ\8aайда',
 'searchprofile-advanced' => 'Кенгерген',
 'searchprofile-articles-tooltip' => '$1 ичинде изле',
 'searchprofile-project-tooltip' => '$1 ичинде изле',
 'searchprofile-images-tooltip' => 'Файлланы изле',
-'searchprofile-everything-tooltip' => 'Бютеу бетледе изле (сюзюу бетледеда)',
+'searchprofile-everything-tooltip' => 'Бютёу бетледе изле (сюзюу бетледе да)',
 'searchprofile-advanced-tooltip' => 'Энчи ат аланладада изле',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сёз}})',
 'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элемент}} ({{PLURAL:$2|1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1 файл|$3 файл}})',
@@ -985,13 +991,13 @@ $1",
 'search-mwsuggest-disabled' => 'юретиулесиз',
 'search-relatedarticle' => 'Байламлы',
 'mwsuggest-disable' => 'AJAX юретиулени джукълатыгъыз',
-'searcheverything-enable' => 'Атланы бютеу аланларында изле',
+'searcheverything-enable' => 'Атланы бютёу аламларында изле',
 'searchrelated' => 'бейламлы',
-'searchall' => 'бютеу',
+'searchall' => 'бютёу',
 '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:'' префиксни хайырландырыгъыз неда керекли атланы аламын хайырландырыгъыз.",
+'nonefound' => "'''Эсгериу.''' Тынгылау бла излеу бютёу атланы аламында бардырылмайды. Бютёу атланы аламында (къошулуучуланы сюзюулери, шаблонла эмда башхала) излер ючюн аллындан ''all:'' префиксни хайырландырыгъыз неда керекли атланы аламын белгилегиз.",
 'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
 'powersearch' => 'Кенг излеу',
 'powersearch-legend' => 'Кенг излеу',
@@ -999,8 +1005,8 @@ $1",
 'powersearch-redir' => 'Джибериулени кёргюз',
 'powersearch-field' => 'Излеу:',
 'powersearch-togglelabel' => 'Белгиле:',
-'powersearch-toggleall' => 'Барысыда',
-'powersearch-togglenone' => 'Бирида',
+'powersearch-toggleall' => 'Барысы да',
+'powersearch-togglenone' => 'Бири да',
 'search-external' => 'Тыш излеу',
 'searchdisabled' => '{{SITENAME}} сайтда излеу талай заманнга тохтатылгъанды. Бусагъатда Google бла хайырланыб {{SITENAME}} ичинде излеу этерге боллукъсуз. Излеу сайтлада индекслери бир кесек эски болургъа боллугъун унутмагъыз.',
 
@@ -1011,6 +1017,7 @@ $1",
 'qbsettings-fixedright' => 'Онгу къатды',
 'qbsettings-floatingleft' => 'Солгъа джюзеди',
 'qbsettings-floatingright' => 'Оннга джюзеди',
+'qbsettings-directionality' => 'Тилигизни джазмасыны онг/сол таба джазылгъанына кёре бегитилибди',
 
 # Preferences page
 'preferences' => 'Джарашдырыула',
@@ -1112,6 +1119,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'prefs-help-realname' => 'Керти ат (излеуге байламлы).
 Аны кёргюзюрге излесегиз, сиз тюрлендирген бетлеригизни,сиз тюрлендиргенигизи белгили боллукъду.',
 'prefs-help-email' => 'Электрон почтагъызны адресин джазаргъа амалсыз керек тюлдю, алай а, паролюгъузну унутсагъыз, ажымсыз керек боллукъду.',
+'prefs-help-email-others' => 'Ол сизни энчи бетигизде болгъан джибериуню юсю бла сизни бла байлам этерге амал береди; электрон почтагъызны адресин да ачыкъ этерге керек болмайсыз.',
 'prefs-help-email-required' => 'Электрон почтагъызны кёргюзюгюз.',
 'prefs-info' => 'Баш билгиле',
 'prefs-i18n' => 'Интернационализация',
@@ -1467,8 +1475,13 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 'upload-unknown-size' => 'Билинмеген ёлчем',
 'upload-http-error' => 'HTTP хата болду: $1',
 
+# File backend
+'backend-fail-delete' => '«$1» файл кетерилмеди.',
+'backend-fail-store' => '$1 файл $2 ичинде сакъланылынмады.',
+
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
+'uploadstash-clear' => 'Джашырылгъан файлланы ариула',
 'uploadstash-nofiles' => 'Сизни джашырылгъан файлларыгъыз джокъду',
 'uploadstash-refresh' => 'Файлланы тизмесин джангырт',
 
@@ -1554,6 +1567,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 [[Special:WhatLinksHere/$2|Толу спиосок]] барды.',
 'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
+'linkstoimage-redirect' => '$1 (файл редирект) $2',
 'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
 'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
 'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
@@ -1594,6 +1608,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 ** дубликат файл',
 'filedelete-edit-reasonlist' => 'Кетериуню чурумларын тюрлендир',
 'filedelete-maintenance' => 'Техника ишлени кёзюуюнде файлланы кетериу эм ызына къайтарыу функцияла ишлеймедиле.',
+'filedelete-maintenance-title' => 'Файл кетерилмеди',
 
 # MIME search
 'mimesearch' => 'MIME бла излеу',
@@ -1605,7 +1620,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'unwatchedpages' => 'Киши кёзде тутмагъан бетле',
 
 # List redirects
-'listredirects' => 'Ð\94жибеÑ\80иÑ\83лени Ñ\81пиÑ\81огÑ\83',
+'listredirects' => 'Ð\94жибеÑ\80иÑ\83лени Ñ\82измеÑ\81и',
 
 # Unused templates
 'unusedtemplates' => 'Хайырландырылмагъан шаблонла',
@@ -1708,7 +1723,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'protectedtitles' => 'Джакъланнган башлыкъла',
 'protectedtitlestext' => 'Бу атланы хайырланыргъа эркинлик джокъду',
 'protectedtitlesempty' => 'Бусагъатда, бу параметрле бла джакъланнган башлыкъ джокъду.',
-'listusers' => 'Ð\9aÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83',
+'listusers' => 'Ð\9aÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81и',
 'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
 'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
 'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
@@ -1742,8 +1757,8 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'speciallogtitlelabel' => 'Ышан (башлыкъ неда къошулуучу):',
 'log' => 'Журналла',
 'all-logs-page' => 'Бютеу ачыкъ журналла',
-'alllogstext' => '{{SITENAME}} Ñ\8eÑ\87Ñ\8eн Ð±Ñ\8eÑ\82еÑ\83 Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ð³Ñ\8aан Ð¶Ñ\83Ñ\80налланÑ\8b Ð±Ð¸Ñ\80леÑ\88ген Ñ\81пиÑ\81огÑ\83.
-Журнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (олда уллу-гитче харифге кёре) элерге боллукъсуз.',
+'alllogstext' => '{{SITENAME}} Ñ\8eÑ\87Ñ\8eн Ð±Ñ\8eÑ\82еÑ\83 Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ð³Ñ\8aан Ð¶Ñ\83Ñ\80налланÑ\8b Ð±Ð¸Ñ\80леÑ\88ген Ñ\82измеÑ\81и.
+Журнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (ол да уллу-гитче харифге кёре) элерге боллукъсуз.',
 'logempty' => 'Журналлагъа келишген билги джокъду.',
 'log-title-wildcard' => 'Бу символладан башланнган башлыкъланы изле',
 
@@ -1763,6 +1778,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'allpagesprefix' => 'Былайда джазгъан харифледен башланнган бетлени список эт:',
 'allpagesbadtitle' => 'Кирилген бет аты тиллени арасы байлм неда викилени арасында байлам болгъаны себебли джараусузду. Башлыкълада хайырланыуу джасакъ болгъан бир неда андан аслам символ тутаргъа болур.',
 'allpages-bad-ns' => '{{SITENAME}} сайтда «$1» ат алам джокъду.',
+'allpages-hide-redirects' => 'Башха бетлеге джиберген бетлени (редиректлени) джашыр',
 
 # Special:Categories
 'categories' => 'Категорияла',
@@ -1796,7 +1812,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listusers-blocked' => '(блокга салыныбды)',
 
 # Special:ActiveUsers
-'activeusers' => 'Ð\90кÑ\82ив ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83',
+'activeusers' => 'Ð\90кÑ\82ив ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81и',
 'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы списогуду.',
 'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
 'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
@@ -1817,7 +1833,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listgrouprights-group' => 'Къауум',
 'listgrouprights-rights' => 'Хакъла',
 'listgrouprights-helppage' => 'Help:Къауумланы хакълары',
-'listgrouprights-members' => '(гÑ\80Ñ\83ппанÑ\8b Ñ\81пиÑ\81огÑ\83)',
+'listgrouprights-members' => '(кÑ\8aаÑ\83Ñ\83мнÑ\83 Ñ\82измеÑ\81и)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>',
 'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
@@ -1865,7 +1881,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Watchlist
 'watchlist' => 'Кёзюмде тургъан тизмем',
-'mywatchlist' => 'Кёзюмде тургъан тизмем',
+'mywatchlist' => 'Кёзюмдеги тизмем',
 'watchlistfor2' => '$1 ючюн $2',
 'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
 'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни статьяланы кёрюр неда тюрлендирир ючюн $1.',
@@ -2103,12 +2119,13 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Атла алам:',
 'invert' => 'Сайланнганны айландыр',
+'namespace_association' => 'Байламлы ат алам',
 'blanknamespace' => '(Баш)',
 
 # Contributions
 'contributions' => 'Къошулуучуну къошханы',
 'contributions-title' => '$1 къошулуучуну къошагъы',
-'mycontris' => 'Ð\9cени Ðºъошханым',
+'mycontris' => 'Ð\9aъошханым',
 'contribsub2' => '$1 ($2) къошакъ',
 'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
 'uctop' => '(ахыргъы)',
@@ -2120,6 +2137,7 @@ $1',
 'sp-contributions-newbies-title' => 'Джангы тергеу джазыуладан этилген къошакъ',
 'sp-contributions-blocklog' => 'Блок этиуню журналы',
 'sp-contributions-deleted' => 'къошулуучуну кетерилген тюрлендириулери',
+'sp-contributions-uploads' => 'джюкленнгенле',
 'sp-contributions-logs' => 'журналла',
 'sp-contributions-talk' => 'сюзюу',
 'sp-contributions-userrights' => 'къошулуучуну хакъларына оноу этиу',
@@ -2140,7 +2158,7 @@ $1',
 'nolinkshere-ns' => "Сайланнган атла аламда '''[[:$1]]''' бетге джиберген бет джокъду.",
 'isredirect' => 'джибериу бет',
 'istemplate' => 'къошуу',
-'isimage' => 'Ñ\81Ñ\83Ñ\80аÑ\82Ñ\85а джибериу',
+'isimage' => 'Ñ\84айлгÑ\8aа джибериу',
 'whatlinkshere-prev' => '{{PLURAL:$1|алдагъы|алдагъы $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|эндиги|эндиги $1}}',
 'whatlinkshere-links' => '← джибериуле',
@@ -2192,7 +2210,7 @@ $1',
 'ipusubmit' => 'Бу тыйгъычны кетер',
 'unblocked' => '[[User:$1|$1]]- тыйылыу тохтатылгъанды',
 'unblocked-id' => '$1 тыйылыу къоратылгъанды',
-'ipblocklist' => 'Блок этилиннген IP-адресле эм къошулуучуланы атлары',
+'ipblocklist' => 'Блок этилиннген къошулуучула',
 'ipblocklist-legend' => 'Тыйылгъан къошулуучуну аты',
 'blocklist-expiry' => 'Бошалыу датасы',
 'blocklist-reason' => 'Чурум',
@@ -2475,7 +2493,7 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'tooltip-pt-anonuserpage' => 'Сизни IP-адресигиз ючюн къошулуучу бет',
 'tooltip-pt-mytalk' => 'Сизни сюзюу бетигиз',
 'tooltip-pt-anontalk' => 'Бу IP-адресден этилген тюрлендириулени сюзюу бет',
-'tooltip-pt-preferences' => 'Ð\94жарашдырыуларыгъыз',
+'tooltip-pt-preferences' => 'Сизни Ð´жарашдырыуларыгъыз',
 'tooltip-pt-watchlist' => 'Сиз кёзюгюзде тутхан бетлени тизмеси',
 'tooltip-pt-mycontris' => 'Сизни тюрлендириулеригизни тизмеси',
 'tooltip-pt-login' => 'Былайда системада регистрация этерге боллукъду, алай а ол ажымсыз керекли тюйюлдю',
@@ -2500,18 +2518,18 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'tooltip-n-mainpage' => 'Баш бетге кёчюу',
 'tooltip-n-mainpage-description' => 'Баш бетге кёчюу',
 'tooltip-n-portal' => 'Проектни юсюнден, сизни не этерге боллугъугъузню юсюнден, хар не къайда болгъаныны юсюнден',
-'tooltip-n-currentevents' => 'Ð\91Ñ\83Ñ\81агÑ\8aаÑ\82да Ð±Ð¾Ð»Ð³Ñ\8aан Ð¸Ñ\88лени Ñ\81пиÑ\81огÑ\83',
-'tooltip-n-recentchanges' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\81пиÑ\81огÑ\83',
+'tooltip-n-currentevents' => 'Ð\91Ñ\83Ñ\81агÑ\8aаÑ\82да Ð±Ð¾Ð»Ð³Ñ\8aан Ð¸Ñ\88лени Ñ\82измеÑ\81и',
+'tooltip-n-recentchanges' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\82измеÑ\81и',
 'tooltip-n-randompage' => 'Эсде болмагъан бир бетге къара',
 'tooltip-n-help' => '«{{SITENAME}}» проектге джардам этиу',
-'tooltip-t-whatlinkshere' => 'Бу бетге джибериу берген бютеу бетлени списогу',
+'tooltip-t-whatlinkshere' => 'Бу бетге джибериу берген бютёу бетлени тизмеси',
 'tooltip-t-recentchangeslinked' => 'Бу бет джибериуле берген бетледе ахыр тюрлениуле',
 'tooltip-feed-rss' => 'Бу битге RSS-трансляция',
 'tooltip-feed-atom' => 'Бу бетге Atom-трансляция',
 'tooltip-t-contributions' => 'Къошулуучуну тюрлендирген бетлерине къара',
 'tooltip-t-emailuser' => 'Бу къошулуучугъа письмо джибер',
 'tooltip-t-upload' => 'Файлланы джюклеу',
-'tooltip-t-specialpages' => 'Бютеу къуллукъчу бетлени списогу',
+'tooltip-t-specialpages' => 'Бютёу къуллукъчу бетлени тизмеси',
 'tooltip-t-print' => 'Бу бетни басмагъа версиясы',
 'tooltip-t-permalink' => 'Бетни бу версиясына дайым джибериу',
 'tooltip-ca-nstab-main' => 'Статьяны ичиндеги',
@@ -3297,6 +3315,8 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'version-software' => 'Салыннган программа баджарыу',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версия',
+'version-entrypoints' => 'Кириу нохталаны адреслери',
+'version-entrypoints-header-entrypoint' => 'Кириу нохта',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -3398,6 +3418,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'sqlite-no-fts' => '$1 толу текст излеуню хайырландыра билмеген',
 
 # New logging system
+'logentry-delete-delete' => '$1, $3 бетни кетерди',
 'revdelete-content-hid' => 'ичиндегиси джашырылыбды',
 'revdelete-summary-hid' => 'тюрлендириуню ачыкълауу джашырылыбды',
 'revdelete-uname-hid' => 'къошулуучуну аты джашырылыбды',
@@ -3407,6 +3428,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
 'logentry-move-move' => '$1, $3 бетни атын $4 деб тюрлендирди',
 'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
+'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къурады',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
 
 # Feedback
@@ -3431,6 +3453,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'api-error-invalid-file-key' => 'Ич халат: болджаллы асыраучу джерде файл  табылмады.',
 'api-error-mustbeposted' => 'Ич халат: соруу, HTTP POST инструкцияны излейди.',
 'api-error-ok-but-empty' => 'Ич халат: сервер джууаб бермейди.',
+'api-error-timeout' => 'Сакълагъан заманны ичинде сервер джуууб бермейди.',
 'api-error-unclassified' => 'Белгили болмагъан халат чыкъды',
 'api-error-unknown-code' => 'Билинмеген халат: «$1».',
 'api-error-unknown-error' => 'Ич халат: файлны джюклерге излеген сагъатда не эсе да терс болду.',
index af85fe5..ca218f9 100644 (file)
@@ -198,7 +198,7 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                => array( '0', '#ÖMLEIDE_OP', '#ÖMLEIDE', '#LEIDT_ÖM_OP', '#ÖMLEIDUNG', '#WEITERLEITUNG', '#REDIRECT' ),
-       'nogallery'               => array( '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__NOGALLERY__' ),
+       'nogallery'               => array( '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__KEINEGALERIE__', '__NOGALLERY__' ),
        'toc'                     => array( '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
        'img_right'               => array( '1', 'rähß', 'räts', 'rechts', 'right' ),
        'img_left'                => array( '1', 'lengks', 'lenks', 'links', 'left' ),
@@ -614,6 +614,11 @@ $2',
 'customjsprotected' => 'Do darfs di JavaSkep-Sigg heh nit ändere. Se jehööt enem andere Metmacher un es e Stöck funn dämm sing eije Enstellunge.',
 'ns-specialprotected' => '{{int:nstab-special}}e künne mer nit ändere.',
 'titleprotected' => "Dä Tittel för en Sigg eß verbodde, fum [[User:$1]], un dr Jrond wohr: ''„$2“''",
+'filereadonlyerror' => 'Mer künne di Dattei „$1“ nit ändere, weil dä Dateijebeshtand „$2“ bloß för ze Lässe doh es.
+
+Dä Wiki_Köbes dovun hät beim Deeschmaache als Jrond aanjejovve: „$3“',
+'invalidtitle-knownnamespace' => '„$3“ es ene onjöltijje Tittel för em Appachtemang „$2“',
+'invalidtitle-unknownnamespace' => '„$2“ es ene onjöltijje Tittel för e Appachtemang met dä verkehte Nommer $1.',
 
 # Virus scanner
 'virus-badscanner' => "Fääler en de Enstellunge: Dat Projramm ''$1'' fö noh Kompjuterwiere ze söke, dat kenne mer nit.",
@@ -735,6 +740,7 @@ för der Momang nit noch mit Metmaacher neu aanmellde.',
 'emailconfirmlink' => 'Dun Ding <i lang="en">e-mail</i> Adress bestätije looße',
 'invalidemailaddress' => 'Wat De do als en Adreß för Ding <i lang="en">e-mail</i> aanjejovve häs, süht noh Dress us. En <i lang="en">e-mail</i> Adreß en däm Format, dat jitt et nit. Muss De repareere - oder Do mähs dat Feld leddich un schrievs nix eren. Un dann versök et noch ens.',
 'cannotchangeemail' => 'Sing <i lang="en">e-mail<i> Addreß kam_mer ehe em Wiki nit ändere.',
+'emaildisabled' => 'Heh dat Wiki kann kein <i lang="en">e-mails</i> verschecke.',
 'accountcreated' => 'Aanjemeldt',
 'accountcreatedtext' => 'De Aanmeldung för dä Metmaacher „<strong>$1</strong>“ es dorsch, De kanns jetz enlogge.',
 'createaccount-title' => 'Enne neue Metmaacher aanmelde för {{GRAMMAR:Akkusativ|{{SITENAME}}}}',
@@ -984,7 +990,8 @@ denk dran, dat ene Metmaacher eije Dateie för et Ussinn han kann, un dat die me
 aanfange dun, alsu etwa: {{ns:user}}:Name/vector.css, un {{ns:user}}:Name/vector.js heiße.',
 'updated' => '(Aanjepack)',
 'note' => "'''Opjepass:'''",
-'previewnote' => "'''Heh kütt nor de Vör-Aansich - Ding Änderunge sin noch nit jesechert!'''",
+'previewnote' => "'''Heh kütt nor de Vör-Aansich — Ding Änderunge sin noch nit jesechert!'''",
+'continue-editing' => 'Jangk tiräk nohm Plaz zom Schrieve',
 'previewconflict' => 'Heh die Vör-Aansich zeich dä Enhald vum bovvere Texfeld.
 Esu wööd dä Atikkel ussinn, wann De n jetz avspeichere däts.',
 'session_fail_preview' => "'''Schad: Ding Änderunge kunnte mer su nix met aanfange.
@@ -998,6 +1005,7 @@ Wann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]
 'token_suffix_mismatch' => "'''Ding Änderung ham_mer nit övvernomme. Dinge Brauser hät Sazzeijche em verstoche <i lang=\"en\">Token</i> för et Ändere versout. Dat paßeet och ens, wann enne <i lang=\"en\">Proxy</i> nit fungkßjeneet. Et Affspeichere wör do jefährlesch, do künt dä Sigge_Enhaldt kapott bei jon.'''",
 'edit_form_incomplete' => "'''Ene Aandeil vun dämm Fommulaa es nit reshtesh om ẞööver aanjekumme. Donn Ding Ennjaabe prööve, repareere, un versöhg et norrens.'''",
 'editing' => 'De Sigg „$1“ ändere',
+'creating' => 'De Sigg „$1“ aanlääje',
 'editingsection' => 'Ne Avschnedd vun dä Sigg: „$1“ ändere',
 'editingcomment' => '„$1“ ändere (ene neue Avschnedd schrieve)',
 'editconflict' => 'Problemche: „$1“ dubbelt bearbeidt.',
@@ -1050,7 +1058,7 @@ Heh kütt der neuste Enndrach em Logbooch doh drövver:",
 'templatesusedsection' => '{{PLURAL:$1|De Schablon|Schablone|-nix-}} en däm Avschnedd heh:',
 'template-protected' => '(jeschöz)',
 'template-semiprotected' => '(halfjeschöz - tabu för neu Metmaacher un ohne Enlogge)',
-'hiddencategories' => 'Die Sigg heh is en {{PLURAL:$1|de verstoche Saachjrupp: |$1 verstoche Saachjruppe: |keij verstoche Saachjruppe dren.}}',
+'hiddencategories' => 'Die Sigg heh is en {{PLURAL:$1|dä verstoche Saachjrupp: |dä $1 verstoche Saachjruppe: |keij verstoche Saachjruppe dren.}}',
 'edittools' => '<!-- Dä Tex hee zeich et Wiki unger däm Texfeld zom „Ändere/Bearbeide“ un beim Texfeld vum „Huhlade“. -->',
 'nocreatetitle' => 'Neu Sigge Aanläje eß nit einfach esu müjjelesch.',
 'nocreatetext' => 'Sigge neu aanläje es nor müjjelich, wann de [[Special:UserLogin|enjelogg]] bes. Der ohne kanns De ävver Sigge ändere, die ald do sin.',
@@ -1071,6 +1079,7 @@ Ene Jrond weße mer nit.',
 'edit-conflict' => 'Dubbelt beärbeit.',
 'edit-no-change' => 'Do häs ja nix aan dä Sigg jeändert, do dom_mer och nix domet.',
 'edit-already-exists' => 'Kunnt kei neu Sigg aanlääje. Di Sigg jidd_et ald.',
+'defaultmessagetext' => 'Dä standaadmäßije Tex',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Opjepaß:''' Die Sigg heh määt zovill Opwand met Paaser-Funkßjohne.
@@ -1084,6 +1093,12 @@ Ene Jrond weße mer nit.',
 'parser-template-loop-warning' => 'Schablon roofe sesch em Kringel op: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Schablone refe sesch zo öff sellver op ($1)',
 'language-converter-depth-warning' => 'Zoh vill Verschachtelunge (övver $1) beim Täx-Ömwandelle vun ein Shprooch en andere.',
+'node-count-exceeded-category' => 'Sigge, woh dä  node-count övverschredde es',
+'node-count-exceeded-warning' => 'Heh di Sigg hät dä  node-count övverschredde',
+'expansion-depth-exceeded-category' => 'Sigge, woh de  expansion depth övverschredde es',
+'expansion-depth-exceeded-warning' => 'Heh di Sigg hät  the expansion depth övverschredde',
+'parser-unstrip-loop-warning' => 'Ene Befähl em Täx betrick sesch op sesch sellef.',
+'parser-unstrip-recursion-limit' => 'Ene Befähl em Täx es mieh wi {{PLURAL:$1|eijmohl|$1 Mohl|jaa nit}} met  sesch sellef verschachtelt.',
 
 # "Undo" feature
 'undo-success' => 'De Änderung könnte mer zeröck nämme. Beloor Der de Ungerscheid un dann donn di Sigg avspeichere, wann De dengks, et es en Oodenung esu.',
@@ -1261,7 +1276,9 @@ Donn de Version makeere bes wohen (inklusive) dat övverdraare wäde sull. Donn
 'mergelogpagetext' => 'Dat hee is dat Logboch fun de zesammejelaate Versione fun Sigge',
 
 # Diffs
-'history-title' => 'Liss met Versione vun „$1“',
+'history-title' => 'Älder Versione vun dä Sigg „$1“',
+'difference-title' => 'Ongerscheide zwesche Versione vun dä Sigg „$1“',
+'difference-title-multipage' => 'Ongerscheide zwesche dä Sigge „$1“ un „$2“',
 'difference-multipage' => '(Ongerscheide zwesche Sigge)',
 'lineno' => 'Reih $1:',
 'compareselectedversions' => 'Dun de markeete Version verjliche',
@@ -1368,6 +1385,7 @@ dat dänne ihr Daate topaktuell sin,
 'prefs-beta' => 'Saache zum Ußprobeere, di schun en Zick lang erproob woode sin',
 'prefs-datetime' => 'Datum un Uhrzigge',
 'prefs-labs' => 'Neu Saache zom Ußprobeere, die künnte noch nit akeraat fluppe',
+'prefs-user-pages' => 'Metmaachersigge',
 'prefs-personal' => 'De Enstellunge',
 'prefs-rc' => 'Neuste Änderunge',
 'prefs-watchlist' => 'De Oppassliss',
@@ -1382,7 +1400,7 @@ dat dänne ihr Daate topaktuell sin,
 'prefs-setemail' => 'Donn en Adräß för de <i lang="en">e-mail</i> faßlääje',
 'prefs-email' => '<i lang="en">e-mail</i>',
 'prefs-rendering' => 'Et Sigge-Aanzeije',
-'saveprefs' => 'Fasshalde',
+'saveprefs' => 'Faßhalde',
 'resetprefs' => 'Zeröck setze',
 'restoreprefs' => 'Alles op der Shtandatt retuur stelle',
 'prefs-editing' => 'Beim Bearbeide',
@@ -1660,6 +1678,7 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
 'newsectionsummary' => 'Neu Avschnet /* $1 */',
 'rc-enhanced-expand' => 'Einzelheite zeije (bruch JavaSkripp)',
 'rc-enhanced-hide' => 'Einzelheite versteiche',
+'rc-old-title' => 'ojinaal als „$1“ aanjelaat',
 
 # Recent changes linked
 'recentchangeslinked' => 'Änderunge aan Sigge, wo heh drop jelink es',
@@ -1839,6 +1858,7 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'upload-too-many-redirects' => 'Zoh vill Ömleitunge en däm <i lang="en">URL</i>',
 'upload-unknown-size' => 'Mer weße nit, wi jruuß',
 'upload-http-error' => 'Ene <i lang="en">HTTP</i>-Fäähler es opjetrodde: $1',
+'upload-copy-upload-invalid-domain' => 'Fun dä Domain künne mer nix noh heh huh laade. Di es nit zohjelohße.',
 
 # File backend
 'backend-fail-stream' => 'Mer kunnte di Dattei $1 nit övverdraare.',
@@ -1846,6 +1866,7 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'backend-fail-notexists' => 'En Dattei $1 jidd et nit.',
 'backend-fail-hashes' => 'Mer kunnte kein Pröfsomme vun dä Datteje träcke zom verjliesche.',
 'backend-fail-notsame' => 'En Dattei mem Name $1 jidd et ald, di es ävver ongerscheidlesch.',
+'backend-fail-invalidpath' => '„$1“ es keine jölteje Pahd för et Speischere.',
 'backend-fail-delete' => 'Mer kunnte di Dattei $1 nit fottschmiiße.',
 'backend-fail-alreadyexists' => 'En Dattei $1 jidd et ald.',
 'backend-fail-store' => 'Mer kunnte di Dattei $1 nit onger $2 affschpeischere.',
@@ -1855,7 +1876,20 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'backend-fail-writetemp' => 'Mer kunnte nit en de Zweschedattei schriive.',
 'backend-fail-closetemp' => 'Mer kunnte de Zweschedattei no zohmaache.',
 'backend-fail-read' => 'Mer kunnte di Dattei $1 nit lässe.',
-'backend-fail-create' => 'Mer kunnte di Dattei $1 nit aanlääje.',
+'backend-fail-create' => 'Mer kunnte di Dattei $1 nit schrieve.',
+'backend-fail-maxsize' => 'Mer kunnte di Dattei $1 nit schrieve, weil se jrüüßer wi {{PLURAL:$2|ein Byte|$2 Bytes|kein Byte}} es.',
+'backend-fail-readonly' => 'Dem Wiki sing  Schpeischersysteem „$1“ es em Momang bloß för ze Lässe enjeschtallt.
+Als Jrond es aanjejovve: „$2“',
+'backend-fail-synced' => 'Di Dattei „$1“ es em Momang en enem onklohre Zohschtand en dem Wiki singe ennere Schpeischersysteeme.',
+'backend-fail-connect' => 'Mer kunnte kein Verbendong met däm Schpeischersysteem „$1“ opnämme.',
+'backend-fail-internal' => 'Ene onklohre Fähler es opjetrodde met däm Schpeischersysteem „$1“.',
+'backend-fail-contenttype' => 'Mer kunnte de Zoot Enhalt nit eruß krijje, di en dä Dattei „$1“ faßjehallde wääde sull.',
+'backend-fail-batchsize' => 'Dat Schpeischersysteem hät ene Pöngel met {{PLURAL:$1|einem Befähl|$1 Befähle|keinem Befähl}} krääje, ävver et kann bloß {{PLURAL:$2|eine Befähl|$2 Befähle|keine Befähl}} op eijmohl.',
+'backend-fail-usable' => 'Mer kunnte di Dattei $1 nit schrieve, weil e Verzeischnes udder ene container fählt, udder et Rääsch, dren ze schrieve.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Mer kunnte kein Verbendong opnämme met dä Daatebangk för et Logbooch vum Schpeischersysteem „$1“.',
+'filejournal-fail-dbquery' => 'Mer kunnte en et Logbooch vum Schpeischersysteem „$1“ nix eren schriive.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Mer kunnte „$1“ nit freijävve. Ed es nit jeschpächt.',
@@ -1975,6 +2009,10 @@ Mer han och [$2 jenouer Date övver se].',
 'sharedupload-desc-here' => 'Di Datei kütt vun $1 un kann en ander Projekte jebruch wäde.
 Jenouer Date övver se fingk mer op dä [$2 Sigg övver se].
 Dat sellve shteiht hee dronger.',
+'sharedupload-desc-edit' => 'Heh di Dateti es vun $1 un künnt anderswoh och jebruch wääde.
+Velleisch sullts De dä [$2 Täx övver se doh]  aanpasse.',
+'sharedupload-desc-create' => 'Heh di Dateti es vun $1 un künnt anderswoh och jebruch wääde.
+Velleisch sullts De dä [$2 Täx övver se doh]  aanpasse.',
 'filepage-nofile' => 'Et jit kein Datei met dämm Nahme.',
 'filepage-nofile-link' => 'Et jit kein Datei met dämm Nahme, ävver De kanns se [$1 huhlaade].',
 'uploadnewversion-linktext' => 'Dun en neu Version vun dä Datei huhlade',
@@ -2117,6 +2155,13 @@ Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
 'wantedpages' => 'Sigge, die mer noch nit han, die noch jebruch wääde',
 'wantedpages-badtitle' => 'Ene onjöltijje Tittel för en Sigg: $1',
 'wantedfiles' => 'Dateie, di onß noch fähle',
+'wantedfiletext-cat' => 'Heh di Datteije sin nit doh. Se wääde ävver jebruch, wi wann se doh wööre.
+Datteije uß frembde Sammlonge künne heh opjeleß sin, och wann et se jitt.
+Di sin dann <del>dorschjeschtresche</del>. 
+Sigge, woh Datteije jebruch wääde sulle, die mer jaa nit han, fengk mer och en dä [[:$1]].',
+'wantedfiletext-nocat' => 'Heh di Datteije sin nit doh. Se wääde ävver jebruch, wi wann se doh wööre.
+Datteije uß frembde Sammlonge künne heh opjeleß sin, och wann et se jitt.
+Di sin dann <del>dorschjeschtresche</del>.',
 'wantedtemplates' => 'Schablone, die mer noch nit han, die noch jebruch wääde',
 'mostlinked' => 'Atikele met de miehste Links drop',
 'mostlinkedcategories' => 'Saachjruppe met de miehste Links drop',
@@ -2191,6 +2236,7 @@ oder de Sigge ehr Name, un esu, einzel zoteet aanluure.
 Bei de Name moß mer op Jruß- un Kleinschreff aachjävve.",
 'logempty' => '<i>Mer han kein zopass Endräch en däm Logboch.</i>',
 'log-title-wildcard' => 'Sök noh Titelle, di aanfange met …',
+'showhideselectedlogentries' => 'Ußjesöhk Endrääsch verschteische udder zeije',
 
 # Special:AllPages
 'allpages' => 'All Sigge',
@@ -2209,6 +2255,12 @@ Bei de Name moß mer op Jruß- un Kleinschreff aachjävve.",
 'allpagesbadtitle' => 'Dä Siggename es nit ze jebruche. Dä hät e Köözel för en Sproch oder för ne Interwiki Link am Aanfang, oder et kütt e Zeiche dren för, wat en Siggename nit jeiht, villeich och mieh wie
 eins vun all däm op eimol.',
 'allpages-bad-ns' => "Dat Appachtemeng „$1“ ha'mer nit.",
+'allpages-hide-redirects' => 'Ömleidunge fott lohße',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.',
+'cachedspecial-viewing-cached-ts' => 'Dat heh küdd ussem Zewescheschpeischer un nünnt nidd om neuste Schtand sin.',
+'cachedspecial-refresh-now' => 'De neuste Version.',
 
 # Special:Categories
 'categories' => 'Saachjruppe',
@@ -2283,11 +2335,12 @@ Adress en Dinge [[Special:Preferences|ming Enstellunge]] stonn han, öm en E-Mai
 schecke.',
 'emailuser' => 'E-mail aan dä Metmaacher',
 'emailpage' => 'E-mail aan ene Metmaacher',
-'emailpagetext' => 'Wann dä Metmaacher en E-mail Adress aanjejovve hätt en singe Enstellunge,
-un die deit et och, dann kanns De met däm Fomular hee unge en einzelne E-Mail aan dä Metmaacher schecke.
-Ding E-mail Adress, die De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
-die weed als em Avsender sing Adress en die E-Mail enjedrage.
-Domet kann, wä die E-Mail kritt, drop antwoote, un die Antwood jeiht tirek aan Dech.
+'emailpagetext' => 'Wann heh dä Metmaacher en Adräß för sing <i lang="en">e-mail</i> aanjejovve hätt en singe Enstellunge,
+un die deit et och, dann kanns De met däm Fomular hee unge en einzel <i lang="en">e-mail</i> aan dä Metmaacher schecke.
+
+Ding <i lang="en">e-mail</i>-Adräß, di De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
+di weed als em Afsender sing Adräß en Ding <i lang="en">e-mail</i> enjedrage.
+Domet kann, wä di <i lang="en">e-mail</i> kritt, drop antwoote, un di Antwood jeiht tirek aan Desch.
 Alles klor?',
 'usermailererror' => 'Dat E-Mail-Objek jov ene Fähler us:',
 'defemailsubject' => 'e-mail fum $1 {{GRAMMAR:fun|{{SITENAME}}}}.',
@@ -2369,14 +2422,14 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
 'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
 'enotif_body' => 'Leeven $WATCHINGUSERNAME,
 
-{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
+{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE {{GENDER:$PAGEEDITOR|vum|vum|vum_Metmaacher|vun dä|vum}} „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
 
 $NEWPAGE
 
 {{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT
 
 Do kanns dä Metmaacher „$PAGEEDITOR“ aanspreche:
-* E-mail: $PAGEEDITOR_EMAIL
+* Övver e-mail: $PAGEEDITOR_EMAIL
 * Em Wiki: $PAGEEDITOR_WIKI
 
 Do kriss vun jetz aan kein e-mail mieh, bes dat Do Der di Sigg aanjeluurt häs,
@@ -2389,10 +2442,10 @@ Ene schöne Jroß {{GRAMMAR:vun|{{SITENAME}}}}.
 Öm de Enshtällonge för Nohreeschet aan Desch ze ändere, jangk op:
 {{canonicalurl:{{#special:Preferences}}}}
 
-Do kanns hee Ding Oppassliss ändere:
+Do kanns hee Ding Oppassl ändere:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Öm di Sigg vun Dinger Oppassliss ze schmieße:
+Öm di Sigg vun Dinger Oppassl ze schmieße:
 $UNWATCHURL
 
 Do kanns hee noh Hölp luure:
@@ -2660,8 +2713,9 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
 'badipaddress' => 'Wat De do jeschrevve häs, dat es kein öntlije IP-Adress.',
 'blockipsuccesssub' => 'De IP-Adress es jetz jesperrt',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] es jetz jesperrt.
-Luur op [[Special:BlockList|de Liss met jesperrte IP_Adresse]] wann de ne Üvverbleck üvver de Sperre han wells,
-un och wann De se ändere wells.',
+<br />
+Luur op [[Special:BlockList|{{int:ipblocklist}}]] wann de ene Övverbleck övver de Sperre han wells,
+un och, wann De se ändere wells.',
 'ipb-blockingself' => 'Do bes om Wääsch, Desh sellver ze sperre. Wells De dat?',
 'ipb-confirmhideuser' => 'Do bes om bäßte Wääsch ene Metaacher ze sperre met „Vershteishe“ ußjewählt.
 Domet weed dä Name vun däm Metmaacher uß alle Leßte un Logbööscher eruß jelohße.
@@ -2713,8 +2767,8 @@ Wells De dat?',
 'blocklog-showsuppresslog' => 'Heh dä Metmaacher es ald fröjer jeshperrt un vershtoche woode. Dat Logbooch vum Metmaacher-Vershteishe onge künnt doh jät mieh zoh saare.',
 'blocklogentry' => 'hät „[[$1]]“ fö de Zick vun $2 jesperrt. $3',
 'reblock-logentry' => 'hät di Sperr för dä „[[$1]]“ met dä Duuer fun $2 $3 jeändert',
-'blocklogtext' => 'Heh es dat Logboch för et Metmaacher Sperre un Freijevve.
-Automatich jesperrte IP-Adresse sin nit heh, ävver en de [[Special:BlockList|{{int:ipblocklist}}]] ze finge.',
+'blocklogtext' => 'Heh es et Logboch övver et Metmaacher-Sperre un -Freijevve vun Hand.
+Automattesch jesperrte <i lang="en>IP</i>-Addräße sin nit heh, ävver en de [[Special:BlockList|{{int:ipblocklist}}]] ze fenge.',
 'unblocklogentry' => 'Metmaacher „$1“ freijejovve',
 'block-log-flags-anononly' => 'nor de namelose Metmaacher sperre',
 'block-log-flags-nocreate' => 'neu Metmaacher aanlääje es verbodde',
@@ -2979,10 +3033,15 @@ Bes esu joot, un versök et noch ens.',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|ein Version|$1 Versione|kein Version}} vun „$2“',
 
 # JavaScriptTest
-'javascripttest-disabled' => 'Di Funxjon es ußjeschalldt.',
+'javascripttest' => ' JavaSkrepte ußprobeere.',
+'javascripttest-disabled' => 'Di Funxjon es en heh dämm Wiki ußjeschalldt.',
 'javascripttest-title' => 'De Prööfunge „$1“ loufe.',
+'javascripttest-pagetext-noframework' => 'Heh di Sigg es för JavaSkrepte ußzeprobeere.',
 'javascripttest-pagetext-unknownframework' => 'Dä Prööfrahme „$1“ es onbikannt.',
+'javascripttest-pagetext-frameworks' => 'Bes esu jood un söök eine vun dä Prööfömjävvonge us: $1',
 'javascripttest-pagetext-skins' => 'Sööke en Bovverfläsch udder et Ußsinn uß, öm di Prööfonge domet ze maache:',
+'javascripttest-qunit-intro' => 'Loor noh dä [$1 Dokemäntation övver et Prööfe] op mediawiki.org.',
+'javascripttest-qunit-heading' => 'De Sammlong vum MediaWiki sing JavaSkrep-<i lang="en">QUnit</i>-Pröövunge',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Don Ding eije Metmaachersigg aanzeije',
@@ -3431,6 +3490,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-copyrighted-true' => 'Häd_en Urhävverrääsch',
 'exif-copyrighted-false' => 'Es en de Allmende (jemeinfrei, <i lang="en">public domain</i>)',
 
+'exif-photometricinterpretation-2' => 'RJB',
 'exif-photometricinterpretation-6' => '<i lang="en">YCbCr</i>',
 
 'exif-unknowndate' => 'Dattum onbikannt',
@@ -3454,6 +3514,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-colorspace-65535' => 'De Färve sin nit kallibreert',
 
 'exif-componentsconfiguration-0' => 'Jidd_et nit',
+'exif-componentsconfiguration-5' => 'J',
 
 'exif-exposureprogram-0' => 'Nit faßjelaat',
 'exif-exposureprogram-1' => 'Vun Hand',
@@ -3792,6 +3853,17 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
 'size-megabytes' => '$1 MB',
 'size-gigabytes' => '$1 GB',
 
+# Bitrate units
+'bitrate-bits' => '$1&nbps;bps',
+'bitrate-kilobits' => '$1&nbps;Kbps',
+'bitrate-megabits' => '$1&nbps;Mbps',
+'bitrate-gigabits' => '$1&nbps;Gbps',
+'bitrate-terabits' => '$1&nbps;Tbps',
+'bitrate-petabits' => '$1&nbps;Pbps',
+'bitrate-exabits' => '$1&nbps;Ebps',
+'bitrate-zetabits' => '$1&nbps;Zbps',
+'bitrate-yottabits' => '$1&nbps;Ybps',
+
 # Live preview
 'livepreview-loading' => 'Ben am Lade …',
 'livepreview-ready' => 'Fädesch jelaade.',
@@ -3852,7 +3924,7 @@ De könnts Ding Oppassliss ävver och [[Special:EditWatchlist|övver e Fomulaa m
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|Klaafe]])',
-'timezone-utc' => 'UTC',
+'timezone-utc' => '<i lang="en">UTC</i>',
 
 # Core parser functions
 'unknown_extension_tag' => '„<code>$1</code>“ es en zosäzlejje Kennzeichnung, die kenne mer nit.',
@@ -3888,6 +3960,9 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 'version-software' => 'Installeete Soffwäer',
 'version-software-product' => 'Produk',
 'version-software-version' => 'Version',
+'version-entrypoints' => '<i lang="en>URLs</i> för enzeschteije',
+'version-entrypoints-header-entrypoint' => 'Enschteesch',
+'version-entrypoints-header-url' => '<i lang="en">URL</i>',
 
 # Special:FilePath
 'filepath' => 'Medije-Dateie med ier URL zëije',
@@ -4079,4 +4154,15 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'api-error-uploaddisabled' => 'Et Huhlaade es en heh däm Wiki nit zohjelohße.',
 'api-error-verification-error' => 'Di Dattei künnt kappott sin, udder en verkehte Endong em Naame han.',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|ein Sekund|$1 Sekunde|kein Sekund}}',
+'duration-minutes' => '{{PLURAL:$1|ein Menutt|$1 Menutte|kein Menutt}}',
+'duration-hours' => '{{PLURAL:$1|en Stund|$1 Stunde|kein Shtund}}',
+'duration-days' => '{{PLURAL:$1|ene Daach|$1 Dääsch|keine Daach}}',
+'duration-weeks' => '{{PLURAL: $1|en Woch|§1 Woche|kein Woch}}',
+'duration-years' => '{{PLURAL:$1|e Johr|$1 Johre|kei Johr}}',
+'duration-decades' => '{{PLURAL:$1|zehn Johre|$1 Johrzehnte|kei Johrzehnt}}',
+'duration-centuries' => '{{PLURAL:$1|e Johrhondert|$1 Johrhonderte|kei Johrhondert}}',
+'duration-millennia' => '{{PLURAL:$1|e Johrdousend|$1 Johrdousende|kei Johrdousend}}',
+
 );
index a82f0cf..77f25c1 100644 (file)
@@ -49,7 +49,7 @@ $specialPageAliases = array(
        'Randompage'                => array( 'Rûpela_tesadufî' ),
        'Randomredirect'            => array( 'Redirecta_tasadufî' ),
        'Recentchanges'             => array( 'Guherandinên_dawî' ),
-       'Search'                    => array( 'Lêbigere' ),
+       'Search'                    => array( 'Lê_bigere' ),
        'Statistics'                => array( 'Statîstîk' ),
        'Uncategorizedcategories'   => array( 'Kategoriyên_bê_kategorî' ),
        'Uncategorizedpages'        => array( 'Rûpelên_bê_kategorî' ),
@@ -59,27 +59,32 @@ $specialPageAliases = array(
 );
 
 $magicWords = array(
+       'redirect'                => array( '0', '#BERALÎKIRIN', '#REDIRECT' ),
        'notoc'                   => array( '0', '_NAVEROKTUNE_', '__NOTOC__' ),
        'nogallery'               => array( '0', '_GALERÎTUNE_', '__NOGALLERY__' ),
        'toc'                     => array( '0', '_NAVEROK_', '__TOC__' ),
        'noheader'                => array( '0', '_SERÎTUNE_', '__NOHEADER__' ),
+       'currentmonth1'           => array( '1', 'MEHANIHA1', 'CURRENTMONTH1' ),
        'currentday'              => array( '1', 'ROJA_NIHA', 'CURRENTDAY' ),
        'currentday2'             => array( '1', 'ROJA_NIHA2', 'CURRENTDAY2' ),
+       'currenttime'             => array( '1', 'DEMA_NIHA', 'CURRENTTIME' ),
        'numberofpages'           => array( '1', 'HEJMARA_RÛPELAN', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'HEJMARA_GOTARAN', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'HEJMARA_DOSYEYAN', 'NUMBEROFFILES' ),
        'numberofusers'           => array( '1', 'HEJMARA_BIKARHÊNERAN', 'NUMBEROFUSERS' ),
        'numberofactiveusers'     => array( '1', 'HEJMARA_BIKARHÊNERÊN_ÇALAK', 'NUMBEROFACTIVEUSERS' ),
-       'numberofedits'           => array( '1', 'HEJMARA_GUHERANDINAN', 'NUMBEROFEDITS' ),
+       'numberofedits'           => array( '1', 'HEJMARA_GUHERTINAN', 'NUMBEROFEDITS' ),
        'subpagename'             => array( '1', 'BINRÛPEL', 'SUBPAGENAME' ),
        'img_right'               => array( '1', 'rast', 'right' ),
        'img_left'                => array( '1', 'çep', 'left' ),
-       'img_link'                => array( '1', 'lînk=$', 'link=$1' ),
+       'img_link'                => array( '1', 'girêdan=$', 'link=$1' ),
+       'sitename'                => array( '1', 'NAVÊ_PROJEYÊ', 'SITENAME' ),
        'grammar'                 => array( '0', 'RÊZIMAN.', 'GRAMMAR:' ),
        'gender'                  => array( '0', 'ZAYEND.', 'GENDER:' ),
        'plural'                  => array( '0', 'PIRRJIMAR:', 'PLURAL:' ),
        'currentversion'          => array( '1', 'VERSIYONA_NIHA', 'CURRENTVERSION' ),
-       'numberofadmins'          => array( '1', 'HEJMARA_ADAMÎNISTRATORAN', 'NUMBEROFADMINS' ),
+       'language'                => array( '0', '#ZIMAN', '#LANGUAGE:' ),
+       'numberofadmins'          => array( '1', 'HEJMARA_RÊVEBERAN', 'NUMBEROFADMINS' ),
        'special'                 => array( '0', 'taybet', 'special' ),
 );
 
@@ -148,8 +153,8 @@ $messages = array(
 'sun' => 'Ykş',
 'mon' => 'Duş',
 'tue' => 'Sêş',
-'wed' => 'Çarş',
-'thu' => 'Pşem',
+'wed' => 'Çrş',
+'thu' => 'Pşm',
 'fri' => 'În',
 'sat' => 'Şem',
 'january' => 'rêbendan',
@@ -159,23 +164,23 @@ $messages = array(
 'may_long' => 'gulan',
 'june' => 'pûşper',
 'july' => 'tîrmeh',
-'august' => 'tebax',
+'august' => 'gelawêj',
 'september' => 'rezber',
 'october' => 'kewçêr',
 'november' => 'sermawez',
-'december' => 'Berfanbar',
+'december' => 'berfanbar',
 'january-gen' => 'Rêbendan',
 'february-gen' => 'Reşemî',
 'march-gen' => 'Adar',
 'april-gen' => 'Avrêl',
 'may-gen' => 'Gulan',
-'june-gen' => 'Pûşper',
+'june-gen' => 'pûşper',
 'july-gen' => 'Tîrmeh',
 'august-gen' => 'Gelawêj',
-'september-gen' => 'Rezber',
+'september-gen' => 'rezber',
 'october-gen' => 'Kewçêr',
 'november-gen' => 'Sermawez',
-'december-gen' => 'Berfanbar',
+'december-gen' => 'berfanbar',
 'jan' => 'rêb',
 'feb' => 'reş',
 'mar' => 'adr',
@@ -209,7 +214,7 @@ $messages = array(
 'about' => 'Der barê',
 'article' => 'Gotar',
 'newwindow' => '(di rûpeleke din de wê were nîşandan)',
-'cancel' => 'Betalkirin',
+'cancel' => 'Betal bike',
 'moredotdotdot' => 'Bêhtir...',
 'mypage' => 'Rûpela min',
 'mytalk' => 'Gotûbêja min',
@@ -245,7 +250,7 @@ $messages = array(
 'variants' => 'Variyant',
 
 'errorpagetitle' => 'Çewtî',
-'returnto' => 'Bizîvire $1.',
+'returnto' => 'Vegere $1.',
 'tagline' => 'Ji {{SITENAME}}',
 'help' => 'Alîkarî',
 'search' => 'Lêgerîn',
@@ -269,8 +274,8 @@ $messages = array(
 'protect' => 'Biparêze',
 'protect_change' => 'guherandin',
 'protectthispage' => 'Vê rûpelê biparêze',
-'unprotect' => 'Parastinê rake',
-'unprotectthispage' => 'Parastina vê rûpelê rake',
+'unprotect' => 'Parastinê biguherîne',
+'unprotectthispage' => 'Parastina vê rûpelê biguherîne',
 'newpage' => 'Rûpela nû',
 'talkpage' => 'Vê rûpelê gotûbêj bike',
 'talkpagelinktext' => 'gotûbêj',
@@ -281,7 +286,7 @@ $messages = array(
 'talk' => 'Gotûbêj',
 'views' => 'Dîtin',
 'toolbox' => 'Qutiya amûran',
-'userpage' => 'Li rûpela vê/vî bikarhênerê/î binêre',
+'userpage' => 'Li rûpela bikarhêner binêre',
 'projectpage' => 'Li rûpela projeyê binêre',
 'imagepage' => 'Rûpela dosyeyan bibîne',
 'mediawikipage' => 'Rûpela peyamê bibîne',
@@ -297,7 +302,7 @@ $messages = array(
 'protectedpage' => 'Rûpela parastî',
 'jumpto' => 'Here cem:',
 'jumptonavigation' => 'navîgasyon',
-'jumptosearch' => 'lêbigere',
+'jumptosearch' => 'lêgerîn',
 'view-pool-error' => 'Bibore, server niha zêde barkirî ne. Gelek bikarhêner niha hewl didin ku vê rûpelê bibînin. Ji kerema xwe kêlîkekê bisekine, berî ku tu dîsa hewl bidî rûpelê bibînî.',
 'pool-errorunknown' => 'Çewtiyeke nenas',
 
@@ -318,7 +323,7 @@ $messages = array(
 'policy-url' => 'Project:Rêgez',
 'portal' => 'Portala komê',
 'portal-url' => 'Project:Portala komê',
-'privacy' => 'Parastina daneyan',
+'privacy' => 'Siyaseta taybetîtiyê',
 'privacypage' => 'Project:Parastina daneyan',
 
 'badaccess' => 'Çewtiya destûrê',
@@ -328,11 +333,11 @@ $messages = array(
 'versionrequired' => 'Versiyona $1 a MediaWiki pêwîst e',
 'versionrequiredtext' => 'Versiyona $1 a MediaWiki ji bo bikaranîna vê rûpelê pêwîst e. Li [[Special:Versiyon|rûpela versiyonê]] binêre.',
 
-'ok' => 'Temam',
+'ok' => 'Baş e',
 'retrievedfrom' => 'Ji "$1" hatiye standin.',
 'youhavenewmessages' => '$1 yên te hene ($2).',
 'newmessageslink' => 'Peyamên nû',
-'newmessagesdifflink' => 'ciyawazî ji guhertoya berê',
+'newmessagesdifflink' => 'cudayî ji guhertoya berê',
 'youhavenewmessagesmulti' => 'Peyamên nû li $1 ji te re hene.',
 'editsection' => 'biguherîne',
 'editold' => 'biguherîne',
@@ -359,7 +364,7 @@ $messages = array(
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Rûpel',
-'nstab-user' => 'Bikarhêner',
+'nstab-user' => 'Rûpela bikarhêner',
 'nstab-media' => 'Medya',
 'nstab-special' => 'Rûpela taybet',
 'nstab-project' => 'Rûpela projeyê',
@@ -397,7 +402,7 @@ Sedema girtinê ev e: $1',
 'internalerror' => 'Çewtiyeke navxweyî',
 'internalerror_info' => 'Çewtiya navxweyî: $1',
 'fileappenderror' => '"$1" li "$2" nehate zêdekirin.',
-'filecopyerror' => 'Daneya „$1“ ji bo „$2“ naye kopîkirin.',
+'filecopyerror' => 'Daneya "$1" ji bo "$2" naye kopîkirin.',
 'filerenameerror' => 'Navê pelê "$1" nebû "$2".',
 'filedeleteerror' => '"$1" jê nehate birîn.',
 'directorycreateerror' => 'Rêbera "$1" nehate çêkirin.',
@@ -406,7 +411,7 @@ Sedema girtinê ev e: $1',
 'unexpected' => 'Tiştekî nedihate hêvîkirin: "$1"="$2".',
 'formerror' => 'Çewtî: Ew nivîs pêk nehat.',
 'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
-'cannotdelete' => 'Ev rûpel nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
+'cannotdelete' => 'Ev rûpel an wêne nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
 'badtitle' => 'Sernivîsa nebaş',
 'badtitletext' => 'Sernavê rûpelê yê xwestî ne derbasdar, vala an jî ne xwediyê girêdaneke rast e.
 Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
@@ -422,12 +427,10 @@ Pirs: $2',
 'protectedpagetext' => 'Ev rûpel ji bo nenivîsandinê hatiye parastin.',
 'viewsourcetext' => 'Tu dikarî li çavkaniya vê rûpelê binêrî û wê kopî bikî:',
 'protectedinterface' => "Di vê rûpelê da nivîsandin ji bo interface'î zimanan yê vê software'ê ye. Ew tê parstin ji bo vandalîzm li vê derê çênebe.",
-'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
+'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku-latn translatewiki.net] de bixebite, projeya MediaWiki.",
 'sqlhidden' => '(Jêpirskirina SQL hatiye veşartin)',
-'cascadeprotected' => '<strong>Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
-$2
-
-</strong>',
+'cascadeprotected' => 'Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
+$2',
 'namespaceprotected' => "Destûra te ji bo guhertina vê rûpelê '''$1''' di valahiya nav de nîne.",
 'ns-specialprotected' => 'Rûpelên taybet {{ns:special}} nikarin werin guherandin.',
 'titleprotected' => "Rûpelek bi vî navî nikare were çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hate çêkirin.",
@@ -436,7 +439,7 @@ $2
 'virus-unknownscanner' => 'Antîvîrusa nenas:',
 
 # Login and logout pages
-'logouttext' => "'''Tu niha derketî (logged out).'''
+'logouttext' => "'''Tu niha derketî.'''
 
 Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner [[Special:UserLogin|dîsa têkevî]].
 Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
@@ -451,16 +454,16 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'externaldberror' => 'Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.',
 'login' => 'Têkeve',
 'nav-login-createaccount' => 'Têkeve / hesabekî nû çêke',
-'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
-'userlogin' => 'Têkeve an hesabeke nû çêke',
+'loginprompt' => "<b>Eger tu xwe nû tomar bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo tomarkirina te ya di {{SITENAME}} de divê ku ''cookies'' gengaz bin.",
+'userlogin' => 'Têkeve an hesabekî nû çêke',
 'userloginnocreate' => 'Têkeve',
 'logout' => 'Derkeve',
 'userlogout' => 'Derkeve',
-'notloggedin' => 'Xwe qeyd nekir (not logged in)',
+'notloggedin' => 'Xwe tomar nekir',
 'nologin' => 'Hesabê te nîne? $1.',
 'nologinlink' => 'Bibe endam',
 'createaccount' => 'Hesabê nû çêke',
-'gotaccount' => "Hesabê te heye? '''$1'''.",
+'gotaccount' => 'Hesabê te heye? $1.',
 'gotaccountlink' => 'Têkeve',
 'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
 'createaccountmail' => 'bi e-name',
@@ -471,9 +474,9 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'nocookiesnew' => "Hesabê bikarhêner hatibû çêkirin, lê te xwe qeyd nekiriye. {{SITENAME}} ji bo qeydkirina bikarhêneran cookie'yan bikartîne. Te bikaranîna cookie'yan girtiye. Xêra xwe cookie'yan qebûl bike, piştre bi navê bikarhêner û şîfreya xwe têkeve.",
 'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
 'noname' => 'Navê ku te nivîsand derbas nabe.',
-'loginsuccesstitle' => 'Têketin serkeftî!',
-'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
-'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
+'loginsuccesstitle' => 'Têketin serkevtî bû!',
+'loginsuccess' => 'Tu niha di {{SITENAME}} de tomarkirî yî wek "$1".',
+'nosuchuser' => 'Bikarhênerê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabekî nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
 'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "$1" heye. Li nivîsandinê xwe seke.',
 'nouserspecified' => 'Divê tu navekî ji bo bikarhêneriyê hilbijêrî.',
 'login-userblocked' => 'Rê li ber vî/vê bikarhênerî/ê hatiye girtin. Destûr bo têketinê nîne.',
@@ -483,18 +486,18 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'password-name-match' => 'Divê şîfreya te ji navê te yê bikaranînê cuda be.',
 'password-login-forbidden' => 'Bikaranîna vî navî û vê şîfreyê hatiye qedexekirin.',
 'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
-'passwordremindertitle' => 'Şîfreyakekî nuh ji hesabekî {{SITENAME}} ra',
-'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyekî nuh ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nuh ji bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
+'passwordremindertitle' => 'Şîfreyeke nû ya ji hesabekî {{SITENAME}} re',
+'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyeke nû ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nû ya bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
 
 Eger kesekî din vê xastinê ji te ra xast ya şîfreya kevin dîsa hate bîrê te, tu dikarê guh nedê vê peyamê û tu dikarê bi şîfreya xwe yê kevin hên karbikê.',
 'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
 'noemailcreate' => 'Divê tu e-nameyeke derbasdar binivîsî',
 'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
-'blocked-mailpassword' => "IP'ya te yê ji te niha tê bikaranin ji bo guherandinê ra hatîye astengkirin. Ji bo tiştên şaş çênebin, xastinê te ji bo şifreyeka nuh jî hatîye qedexekirin.",
+'blocked-mailpassword' => "IP'ya ku tu niha bi kar tînî ji guherandinê re hatiye astengkirin. Ji bo tiştên şaş çênebin, xwestina te ya ji bo şîfreyeke nû jî hatiye qedexekirin.",
 'eauthentsent' => 'E-nameyeka naskirinê ji adresa nivîsî ra hate şandin. Berî e-name ji bikarhênerên din bi vê rêkê dikaribim bi te gên, ew adresa û rastbûna xwe gireke werin naskirin. Xêra xwe e-nameyê naskirinê bixûne!',
-'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh hate xastin. Ji bo şaşbûn bi vê fonksyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh dikare were xastin.',
+'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû hate xwestin. Ji bo şaşbûn bi vê fonksiyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû dikare were xwestin.',
 'mailerror' => 'Şaşbûnek li cem şandina e-nameyekê: $1',
-'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
+'acct_creation_throttle_hit' => 'Bibexşe! Te hesabê bikarhêneriyê $1 vekiriye. Tu êdî nikarî hesabên din vekî.',
 'emailauthenticated' => 'Adresa e-nameya te hate naskirin: $1.',
 'emailnotauthenticated' => 'Adresa e-nameyan yê te hên nehatîye naskirin. Fonksyonên e-nameyan piştî naskirina te dikarin ji te werin kirin.',
 'noemailprefs' => "'''Te hên adresa e-nameyan nenivîsandîye''', fonksyonên e-nameyan hên ji te ra ne tên qebûlkirin.",
@@ -515,7 +518,8 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 
 # Change password dialog
 'resetpass' => 'Şîfreyê biguherîne',
-'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
+'resetpass_announce' => 'Te xwe bi şîfreyekê tomar kiriye ku bi riya e-nameyekê ji te re hatiye şandin.
+Ji bo xelaskirina tomarkirinê, divê tu niha şîfreyeke nû binivîsî:',
 'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
 'resetpass_header' => 'Şîfreya hesabê xwe biguherîne',
 'oldpassword' => 'Şîfreya kevn',
@@ -567,7 +571,7 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 'hr_tip' => 'Rastexêza berwarî (kêm bi kar bîne)',
 
 # Edit pages
-'summary' => 'Kurte û çavkanî (Te çi kir?):',
+'summary' => 'Kurte (Te çi kir?):',
 'subject' => 'Mijar/sernivîs:',
 'minoredit' => 'Ev guhertineke biçûk e',
 'watchthis' => 'Vê gotarê bişopîne',
@@ -628,13 +632,18 @@ Ji bo alîkariyê binêre: [[{{MediaWiki:Helppage}}|Alîkarî]].<br />
 Heke tu bi şaşîtî hatî, bizîvire rûpela berê.",
 'anontalkpagetext' => "----''Ev rûpela gotûbêjê ye ji bo bikarhênerên nediyarkirî ku hîn hesabekî xwe çênekirine an jî bikarnaînin. Ji ber vê yekê divê em wan bi navnîşana IP ya hejmarî nîşan bikin. Navnîşaneke IP dikare ji aliyê gelek kesan ve were bikaranîn. Heger tu bikarhênerekî nediyarkirî bî û bawerdikî ku nirxandinên bê peywend di der barê te de hatine kirin ji kerema xwe re [[Special:UserLogin|hesabekî xwe veke an jî têkeve]] da ku tu xwe ji tevlîheviyên bi bikarhênerên din re biparêzî.''",
 'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
-'noarticletext-nopermission' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].
-Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
+'noarticletext-nopermission' => 'Ev rûpel niha vala ye. 
+Tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] 
+an <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vê rûpelê biguherînî]</span>.',
 'userpage-userdoesnotexist' => 'Hesabê bikarhêneran "<nowiki>$1</nowiki>" nehatiye qeydkirin. Heke tu bixwazî vê rûpelê çêkî/biguherînî ji kerema xwe lê binêre.',
 'userpage-userdoesnotexist-view' => 'Hesabê bikarhêner  "$1"  nehatiye qeyd kirin.',
 'blocked-notice-logextract' => 'Ev bikarhêner hatiye astengkirin.
 Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
-'clearyourcache' => "'''Zanibe:''' Piştî tomarkirinê, tu gireke cache'a browser'î xwe dîsa wînê ji bo dîtina guherandinan. '''Mozilla / Firefor /Safari:''' Kepsa ''Shift'' bigre û li ''Reload'' xe, ya ''Ctrl-Shift-R'' bikepsîne (''Cmd-Shift-R'' li cem Apple Mac); '''IE:''' Kepsa ''Ctrl'' bigre û li ''Reload'' xe, ya li ''Ctrl-F5''; '''Konqueror:''' bes li ''Reload'' xe ya li kepsa ''F5'' xe; bikarhênerên '''Opera''' girekin belkî cache'a xwe tevda di bin ''Tools → Preferences'' da valabikin.",
+'clearyourcache' => "'''Zanibe:''' Piştî tomarkirinê, tu gireke cache'a browser'î xwe dîsa wînê ji bo dîtina guherandinan.
+* '''Firefor / Safari: ''' Kepsa ''Shift'' bigre û li ''Reload'' xe, ya ''Ctrl-Shift-R'' bikepsîne (''Cmd-Shift-R'' li cem Apple Mac)
+* '''IE:''' Kepsa ''Ctrl'' bigre û li ''Reload'' xe, ya li ''Ctrl-F5''
+* '''Konqueror:''' Bes li ''Reload'' xe ya li kepsa ''F5'' xe
+* '''Opera:''' Girekin belkî cache'a xwe tevda di bin ''Tools → Preferences'' da valabikin",
 'usercssyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS'ê te yê nuh e berî tomarkirinê.",
 'userjsyoucanpreview' => "'''Tîp:''' 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa JS'ê te yê nuh e berî tomarkirinê.",
 'usercsspreview' => "'''Zanibe ku tu bes pêşdîtina CSS dibînî.'''
@@ -650,25 +659,26 @@ Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
 'editingcomment' => '$1 (şîrove) tê guherandin.',
 'editconflict' => 'Têkçûna guherandinan: $1',
 'explainconflict' => "Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
-Jor guhartoya heyî tê dîtîn.
-Guherandinên te jêr tên nîşan dan.
-Divê tû wan bikî yek.
-Heke niha tomar bikî, '''bi tene''' nivîsara qutiya jor wê bê tomarkirin.",
+Li jor guhertoya heyî tê dîtîn.
+Guherandinên te li jêr tên nîşandan.
+Divê tu wan bikî yek.
+Heke niha tomar bikî, '''bi tenê''' nivîsara qutiya jor wê bê tomarkirin.",
 'yourtext' => 'Nivîsara te',
 'storedversion' => 'Versiyona qeydkirî',
 'editingold' => "'''Hişyarî: Tu li ser guhertoyeke kevn a vê rûpelê dixebitî.
 Heke tu qeyd bikî, hemû guhertinên piştî vê revîzyonê winda dibin.
 '''",
-'yourdiff' => 'Ciyawazî',
-'copyrightwarning' => "Hişyarî: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre). Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
-Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt.
-'''BERHEMÊN MAFÊN WAN PARASTΠ(©) BÊ DESTÛR NEWEŞÎNE!'''",
+'yourdiff' => 'Cudahî',
+'copyrightwarning' => "Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
+Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
+Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane (''public domain'') girt.
+'''Berhemên mafên wan parastî bê destûr neweşîne!'''",
 'protectedpagewarning' => "'''Hişyarî:  Ev rûpel tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînatoriyê\" ne, dikarin vê rûpelê biguherînin.'''",
 'semiprotectedpagewarning' => "'''Hişyarî:''' Ev rûpel tê parastin, lewma bes bikarhênerên tomarkirî dikarin vê biguherînin.
 Guhertina herî dawî bi referansa li jêr hatiye piştrastkirin:",
-'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
-'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
-'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
+'templatesused' => 'Şablon di van rûpelan de tê bikaranîn',
+'templatesusedpreview' => 'Şablonên ku di vê pêşdîtinê de tên bikaranîn:',
+'templatesusedsection' => 'Şablonên ku di vê parçeyê de tên bikaranîn:',
 'template-protected' => '(tê parastin)',
 'template-semiprotected' => '(nîv-parastî)',
 'hiddencategories' => 'Ev rûpel endamê{{PLURAL:$1|1 hidden category|$1 hidden categories}} ye:',
@@ -690,8 +700,8 @@ Sedema jêbirina rûpelê bi referansa li jêr hatiye piştrastkirin.',
 Ew berê heye.',
 
 # "Undo" feature
-'undo-success' => 'Ev guherandina kane were şondakirin. Xêra xwe ferqê piştî tomarkirinê bibîne û seke, ku tu ew versîyona dixwazê û tomarbike. Eger te şaşbûnekî kir, xêra xwe derkeve.',
-'undo-failure' => 'Ev guherandina nikane were şondakirin ji ber ku guherandinên piştî wê.',
+'undo-success' => 'Ev guherandin dikare were şûndekirin. Ji kerema xwe ferqa piştî tomarkirinê bibîne, bê ka tu dixwazî vê guhertoyê tomar bikî an na. Ger te şaşîtiyek kir, ji kerema xwe derkeve.',
+'undo-failure' => 'Ev guhertin ji ber guherandinên piştî wê re nikare were şûndekirin.',
 'undo-summary' => 'Guhertoya $1 ya [[Special:Contributions/$2|$2]] ([[User talk:$2|gotûbêj]]) şûnde kir',
 
 # Account creation failure
@@ -708,13 +718,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revisionasof' => 'Guhertoya $1',
 'revision-info' => 'Guhertoya $1 ya ji aliyê $2 ve',
 'previousrevision' => '←Guhertoya kevintir',
-'nextrevision' => 'Guhertoya nûtir→',
+'nextrevision' => 'Guhertoya nûtir →',
 'currentrevisionlink' => 'Guhertoya niha nîşan bide',
-'cur' => 'ferq',
+'cur' => 'cudahî',
 'next' => 'pêş',
 'last' => 'berê',
-'page_first' => 'yekemîn',
-'page_last' => 'paşîn',
+'page_first' => 'ya pêşîn',
+'page_last' => 'ya paşîn',
 'histlegend' => 'Rênîşan: (cudahî) = cudahiya nav vê û versiyona niha,
 (berê) = cudahiya nav vê û ya berî vê, B = guhertina biçûk',
 'history-fieldset-title' => 'Li dîrokê bigere',
@@ -773,7 +783,8 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revertmerge' => 'Veqetîne',
 
 # Diffs
-'history-title' => 'Dîroka versyonên "$1"',
+'history-title' => 'Dîroka guhertoyên "$1"',
+'difference-title' => 'Cudahiya di navbera guhertoyên "$1" de',
 'difference-multipage' => '(Cudahî di navbera rûpelan de)',
 'lineno' => 'Rêz $1:',
 'compareselectedversions' => 'Guhertoyan bide ber hev',
@@ -784,17 +795,18 @@ 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}}|Searching {{SITENAME}}]].',
+'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 nivîsarê de nehat dîtin.',
+'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
 'prevn' => '{{PLURAL:$1|$1}} paş',
 'nextn' => '{{PLURAL:$1|$1}} pêş',
 'prevn-title' => '{{PLURAL:$1|result|Encamên}} pêştir $1',
 '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.'''",
@@ -810,7 +822,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'searchprofile-images-tooltip' => 'Li pelan bigere',
 'search-result-size' => '$1 ({{PLURAL:$2|peyvek|$2 peyv}})',
 'search-result-score' => 'Lêhatin: $1%',
-'search-redirect' => '(redirect $1)',
+'search-redirect' => '(beralîkirin $1)',
 'search-section' => '(beş $1)',
 'search-suggest' => 'Gelo mebesta te ev bû: $1',
 'search-interwiki-caption' => 'Projeyên hevçeng',
@@ -844,7 +856,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe qeyd nekir',
+'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',
@@ -863,7 +875,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-setemail' => 'Navnîşana E-nameyê binivîse',
 'prefs-email' => 'Vebijarkên E-nameyê',
 'prefs-rendering' => 'Rû',
-'saveprefs' => 'Tercîhan qeyd bike',
+'saveprefs' => 'Tercîhan tomar bike',
 'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
@@ -897,12 +909,12 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'uid' => 'Nasnameya bikarhêner:',
 'prefs-memberingroups' => 'Endamê/a {{PLURAL:$1|komê|koman}}:',
 'prefs-registration' => 'Dema xweqeydkirinê:',
-'yourrealname' => 'Navê te yê rastî*',
+'yourrealname' => 'Navê te yê rast:',
 'yourlanguage' => 'Ziman',
 'yourvariant' => 'Cuda:',
 'yournick' => 'Bernavkê nû (ji bo îmzeyê):',
 'badsig' => 'Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.',
-'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} da be.',
+'badsiglength' => 'Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} de be.',
 'yourgender' => 'Zayend:',
 'gender-male' => 'Nêr',
 'gender-female' => 'Mê',
@@ -933,7 +945,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-user-editname' => 'Navekî bikarhêneriyê binivîse:',
 'editusergroup' => 'Komên bikarhêneran biguherîne',
 'editinguser' => "Mafên bikarhêner '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) tên guhertin",
-'userrights-editusergroup' => 'Grûpên bikarhêneran biguherîne',
+'userrights-editusergroup' => 'Komên bikarhêneran biguherîne',
 'saveusergroups' => 'Komên bikarhêneran tomar bike',
 'userrights-groupsmember' => 'Endamê/a:',
 'userrights-groups-help' => 'Tu dikarî komên bikarhêneran ên vê/vî bikarhênerê/î biguherînî:
@@ -945,25 +957,25 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-nodatabase' => 'Danegeh $1 nîne an ne ya vir e.',
 'userrights-nologin' => 'Ji bo guherandina mafên bikarhêneran, divê tu bi hesabê rêveber [[Special:UserLogin|têkevî]].',
 'userrights-notallowed' => "Account'a te mafê xwe tune ye ji bo guherandina mafên bikarhêneran.",
-'userrights-changeable-col' => 'Komên tu dikarî biguherînî',
-'userrights-unchangeable-col' => 'Komên tu nikarî biguherînî',
+'userrights-changeable-col' => 'Komên ku tu dikarî biguherînî',
+'userrights-unchangeable-col' => 'Komên ku tu nikarî biguherînî',
 
 # Groups
 'group' => 'Kom',
 'group-user' => 'Bikarhêner',
 'group-bot' => 'Bot',
 'group-sysop' => 'Rêveber',
-'group-bureaucrat' => 'Bûrokrat',
+'group-bureaucrat' => 'Burokrat',
 'group-all' => '(hemû)',
 
 'group-user-member' => 'Bikarhêner',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'rêveber',
-'group-bureaucrat-member' => 'Burokrat',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|rêveber}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrat}}',
 
 'grouppage-user' => '{{ns:project}}:Bikarhêner',
 'grouppage-bot' => '{{ns:project}}:Bot',
-'grouppage-sysop' => '{{ns:project}}:Admînistrator',
+'grouppage-sysop' => '{{ns:project}}:Rêveber',
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrat',
 
 # Rights
@@ -982,13 +994,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
 
 # User rights log
-'rightslog' => 'Reşahîya mafên bikarhêneran',
-'rightslogtext' => 'Ev reşahîyek ji bo guherandinên mafên bikarhêneran e.',
+'rightslog' => 'guhertina mafê bikarhêneriyê',
+'rightslogtext' => 'Ev guhertineke ji bo mafên bikarhêneriyê ye.',
 'rightslogentry' => 'grûpa bikarhêneran ji bo $1 ji $2 guherande $3',
 'rightsnone' => '(tune)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'Vê rûpelê bixwîne',
+'action-read' => 'vê rûpelê bixwîne',
 'action-edit' => 'vê rûpelê biguherîne',
 'action-createpage' => 'rûpelan çêke',
 'action-createtalk' => 'rûpelên gotûbêjan çêke',
@@ -996,9 +1008,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'action-minoredit' => 'vê weke guhertineke biçûk nîşan bide',
 'action-move' => 'vê rûpelê bigerîne',
 'action-move-subpages' => 'vê rûpelê û binrûpelên wê bigerîne',
-'action-movefile' => "vê data'yê bigerîne",
-'action-upload' => "vê data'yê barbike",
-'action-delete' => 'vê rûpelê jêbibe',
+'action-movefile' => 'vê daneyê bigerîne',
+'action-upload' => 'vê daneyê bar bike',
+'action-delete' => 'vê rûpelê jê bibe',
 'action-deleterevision' => 'Vê revîzyonê je bibe',
 'action-deletedhistory' => 'dîroka vê rûpelê jêbirî bibîne',
 'action-browsearchive' => 'li rûpelên jêbirî bigere',
@@ -1009,17 +1021,18 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'nchanges' => '$1 {{PLURAL:$1|guherandinek|guherandin}}',
 'recentchanges' => 'Guherandinên dawî',
 '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',
 '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' => 'an jî guherandinên ji $1 şûnda nîşan bide.',
-'rcshowhideminor' => 'guherandinên biçûk $1',
-'rcshowhidebots' => "bot'an $1",
-'rcshowhideliu' => 'bikarhênerên qeydkirî $1',
-'rcshowhideanons' => 'bikarhênerên neqeydkirî (IP) $1',
+'rclistfrom' => 'Guherandinên ji $1 şûnde nîşan bide',
+'rcshowhideminor' => 'Guherandinên biçûk $1',
+'rcshowhidebots' => "Bot'an $1",
+'rcshowhideliu' => 'Bikarhênerên qeydkirî $1',
+'rcshowhideanons' => 'Bikarhênerên neqeydkirî (IP) $1',
 'rcshowhidepatr' => '$1 guherandinên kontrolkirî',
-'rcshowhidemine' => 'guherandinên min $1',
+'rcshowhidemine' => 'Guherandinên min $1',
 'rclinks' => '$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3',
-'diff' => 'ciyawazî',
+'diff' => 'cudahî',
 'hist' => 'dîrok',
 'hide' => 'veşêre',
 'show' => 'nîşan bide',
@@ -1028,12 +1041,12 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|bikarhênerek|$1 bikarhêner}} vê rûpelê {{PLURAL:$1|dişopîne|dişopînin}}.]',
 'rc_categories_any' => 'Hîç',
-'newsectionsummary' => '/* $1 */ beşeka nuh',
+'newsectionsummary' => '/* $1 */ beşeke nû',
 'rc-enhanced-expand' => 'Kitûmatan nîşan bide (JavaScript pêdivî ye)',
 'rc-enhanced-hide' => 'Kitûmatan veşêre',
 
 # Recent changes linked
-'recentchangeslinked' => 'Guherandinên peywend',
+'recentchangeslinked' => 'Guherandinên têkilîdar',
 'recentchangeslinked-feed' => 'Guherandinên peywend',
 'recentchangeslinked-toolbox' => 'Guherandinên peywend',
 'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide. Ew rûpel yê di lîsteya te ya şopandinê da ne bi nivîsa '''estûr''' tên nîşandan.",
@@ -1041,9 +1054,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 
 # Upload
 'upload' => 'Wêneyekî barbike',
-'uploadbtn' => 'Wêneyê (ya tiştekî din ya mêdya) barbike',
+'uploadbtn' => 'Wêneyekî bar bike',
 'reuploaddesc' => 'Barkirinê biskîne û dîsa here rûpela barkirinê.',
-'uploadnologin' => 'Xwe qeyd nekir',
+'uploadnologin' => 'Xwe tomar nekir',
 'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[Special:UserLogin|têkevî]].',
 'uploaderror' => 'Çewtiya barkirinê',
 'upload-recreate-warning' => "'''Agahdarî: Peleke bi vî navî hatiye jêbirin an jî raguhestin.'''",
@@ -1065,10 +1078,11 @@ anjî ji bo file'ên dengî '''<nowiki>[[</nowiki>{{ns:media}}:File.ogg<nowiki>]
 'filestatus' => 'Rewşa telîfê:',
 'filesource' => 'Çavkanî:',
 'uploadedfiles' => 'Pelên barkirî',
-'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
+'ignorewarning' => 'Guh nede hişyariyê û pelê qeyd bike',
 'ignorewarnings' => 'Guh nede hişyariyan',
 'minlength1' => "Navên data'yan bi kêmani gireke tîpek be.",
-'illegalfilename' => 'Navî datayê "$1" ne tê qebûlkirin ji ber ku tişt tê da hatine nivîsandin yê qedexe ne. Xêra xwe navî datayê biguherîne û carekî din barbike.',
+'illegalfilename' => 'Navê daneya "$1" nayê qebûlkirin ji ber ku tê de tiştên qedexekirî hatine nivîsandin.
+Ji kerema xwe re navê daneyê biguherîne û carekî din bar bike!',
 'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
 'filetype-badmime' => 'Data bi formata MIME yê "$1" nameşin werin barkirin.',
 'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' formatekî nexastî ye.
@@ -1091,10 +1105,10 @@ Xêra xwe navekî din bibîne.",
 'file-thumbnail-no' => "Navî vê datayê bi '''<tt>$1</tt>''' destpêdike. Ev dibêje ku ev wêneyekî çûçik e ''(thumbnail)''. Xêra xwe seke, ku belkî versyonekî mezin yê vê wêneyê li cem te heye û wê wêneyê mezintir di bin navî orîjînal da barbike.",
 'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
 [[File:$1|thumb|center|$1]]',
-'uploadwarning' => 'Hişyara barkirinê',
+'uploadwarning' => 'Hişyariya barkirinê',
 'savefile' => 'Dosyayê tomar bike',
-'uploadedimage' => '"$1" barkirî',
-'overwroteimage' => 'versyonekî nuh ji "[[$1]]" hate barkirin',
+'uploadedimage' => '"[[$1]]" hate barkirin',
+'overwroteimage' => 'versiyonekî nû ya "[[$1]]" hate barkirin',
 'uploaddisabled' => 'Barkirin hatîye qedexekirin',
 'uploaddisabledtext' => "Barkirinê data'yan  hatiye qedexekirin.",
 'uploadvirus' => "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
@@ -1116,26 +1130,26 @@ Xêra xwe navekî din bibîne.",
 'upload-unknown-size' => 'Mezinahiya nayê zanîn',
 
 'license' => 'Lîsans:',
-'license-header' => 'Lîsens:',
-'nolicense' => 'ya hilbijartî nîne',
+'license-header' => 'Lîsans',
+'nolicense' => 'Ya hilbijartî nîne',
 'license-nopreview' => 'Pêşdîtin ne gengaz e.',
 
 # Special:ListFiles
-'listfiles_search_for' => 'Li navî wêneyê bigere:',
+'listfiles_search_for' => 'Li navê wêneyî bigere:',
 'imgfile' => 'dosye',
-'listfiles' => 'Listeya wêneyan',
+'listfiles' => 'Lîsteya wêneyan',
 'listfiles_date' => 'Dem',
 'listfiles_name' => 'Nav',
 'listfiles_user' => 'Bikarhêner',
 'listfiles_size' => 'Mezinbûn',
 'listfiles_description' => 'Danasîn',
-'listfiles_count' => 'Versiyon',
+'listfiles_count' => 'Guherto',
 
 # File description page
 'file-anchor-link' => 'Wêne',
-'filehist' => 'Dîroka datayê',
+'filehist' => 'Dîroka daneyê',
 'filehist-help' => 'Ji bo dîtina guhertoya wê demê bişkoka dîrokê bitikîne.',
-'filehist-deleteall' => 'giştika jêbibe',
+'filehist-deleteall' => 'hemûyan jê bibe',
 'filehist-deleteone' => 'jê bibe',
 'filehist-revert' => 'şûnde vegerîne',
 'filehist-current' => 'niha',
@@ -1152,7 +1166,7 @@ Xêra xwe navekî din bibîne.",
 'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
 'sharedupload-desc-here' => 'Ev pel ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.
 Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
-'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
+'uploadnewversion-linktext' => 'Versiyoneke nû ya vê daneyê barbike',
 'shared-repo-from' => 'ji $1',
 
 # File reversion
@@ -1222,7 +1236,7 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 
 'brokenredirects' => 'Beralîkirinên xerabûyî',
 'brokenredirects-edit' => 'biguherîne',
-'brokenredirects-delete' => 'jêbibe',
+'brokenredirects-delete' => 'jê bibe',
 
 'withoutinterwiki' => 'Rûpelên bê girêdanên ziman',
 'withoutinterwiki-legend' => 'Pêşbendik',
@@ -1240,13 +1254,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'uncategorizedcategories' => 'Kategoriyên bê kategorî',
 'uncategorizedimages' => 'Wêneyên bê kategorî',
 'uncategorizedtemplates' => 'Şablonên bê kategorî',
-'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
-'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
+'unusedcategories' => 'Kategoriyên ku nayên bikaranîn',
+'unusedimages' => 'Wêneyên ku nayên bikaranîn',
 'popularpages' => 'Rûpelên populer',
-'wantedcategories' => 'Kategoriyên tên xwestin',
+'wantedcategories' => 'Kategoriyên ku tên xwestin',
 'wantedpages' => 'Rûpelên ku tên xwestin',
 'wantedfiles' => 'Wêneyên ku tên xwestin',
-'wantedtemplates' => 'Şablonên tên xwestin',
+'wantedtemplates' => 'Şablonên ku tên xwestin',
 'mostlinked' => 'Rûpelên bi bêhtirîn girêdan',
 'mostlinkedcategories' => 'Kategoriyên bi bêhtirîn girêdan',
 'mostcategories' => 'Rûpelên bi pir kategorî',
@@ -1266,13 +1280,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'movethispage' => 'Vê rûpelê bigerîne',
 'notargettitle' => 'Hedef tune',
 'pager-newer-n' => '{{PLURAL:$1|nûtir 1|nûtir $1}}',
-'pager-older-n' => '{{PLURAL:$1|kevintirin 1|kevintirin $1}}',
+'pager-older-n' => '{{PLURAL:$1|kevintir 1|kevintir $1}}',
 
 # Book sources
 'booksources' => 'Çavkaniyên pirtûkan',
 'booksources-search-legend' => 'Li pirtûkan bigere',
 'booksources-go' => 'Here',
-'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nuh ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
+'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nû ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
 
 # Special:Log
 'specialloguserlabel' => 'Bikarhêner:',
@@ -1310,14 +1324,14 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'special-categories-sort-abc' => 'li gorî alfabeyê rêzkirî ye',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'Guherandinên bikarhênerekî yê jêbirî',
-'deletedcontributions-title' => 'Guherandinên bikarhênerekî yê jêbirî',
+'deletedcontributions' => 'Beşdariyên bikarhênerekî yê jêbirî',
+'deletedcontributions-title' => 'Guherandinên bikarhêner yê jêbirî',
 'sp-deletedcontributions-contribs' => 'tevkarî',
 
 # Special:LinkSearch
 'linksearch' => 'Girêdanên derveyî',
 'linksearch-ns' => 'Valahiya nav:',
-'linksearch-ok' => 'Lêbigere',
+'linksearch-ok' => 'Lêgerîn',
 
 # Special:ListUsers
 'listusers-submit' => 'Nîşan bide',
@@ -1337,6 +1351,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'listgrouprights' => 'Mafên koma bikarhêner',
 'listgrouprights-group' => 'Kom',
 'listgrouprights-rights' => 'Maf',
+'listgrouprights-helppage' => 'Help:Mafên koman',
 'listgrouprights-members' => '(lîsteya endaman)',
 'listgrouprights-addgroup-all' => 'Hemû koman tevlî bike',
 'listgrouprights-removegroup-all' => 'Hemû koman jê bibe',
@@ -1344,7 +1359,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 # E-mail user
 'mailnologin' => 'Navnîşanê neşîne',
 'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
-'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
+'emailuser' => 'Ji bikarhêner re e-name bişîne',
 'emailpage' => 'E-name bikarhêner',
 'defemailsubject' => '{{SITENAME}} e-name',
 'noemailtitle' => 'Navnîşana e-name tune',
@@ -1366,17 +1381,16 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'watchlist' => 'Lîsteya min a şopandinê',
 'mywatchlist' => 'Lîsteya min a şopandinê',
 'nowatchlist' => 'Tiştek di lîsteya te ya şopandinê de tune ye.',
-'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
-'watchnologin' => 'Te xwe qeyd nekiriye.',
-'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[Special:UserLogin|qedy kiribe]].',
+'watchlistanontext' => 'Ji  kerema xwe ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê xwe $1.',
+'watchnologin' => 'Te xwe tomar nekiriye',
+'watchnologintext' => 'Ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê divê tu xwe [[Special:Userlogin|tomar bikî]].',
 'addwatch' => 'Tevlî lîsteya şopandinê bike',
-'addedwatchtext' => "Rûpela \"<nowiki>\$1</nowiki>\" çû ser [[Special:Watchlist|lîsteya te ya şopandinê]].
-Li dahatû de her guhartoyek li wê rûpelê û rûpela gotûbêjê wê were kirin li vir dêt nîşan dan,
-
-Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
-
+'addedwatchtext' => "Rûpela \"[[:\$1]]\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
+Li dahatû de her guhertoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir tê nîşandan.
+Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hêsan dîtina wê, ew rûpel bi '''Nivîsa stûr''' tê nîşandan.
 
-<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".</p>",
+Gava tu bixwazî wê rûpelê ji nav lîsteya xwe ya şopandinê derbixî, li ser wê rûpelê, \"êdî neşopîne\" bitikîne.",
 'removewatch' => 'Ji lîsteya şopandinê derxe',
 'removedwatchtext' => 'Rûpela "[[:$1]]" ji lîsteya te ya şopandinê hate jêbirin.',
 'watch' => 'Bişopîne',
@@ -1387,15 +1401,15 @@ Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina
 'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
 'watchlist-details' => '* {{PLURAL:$1|Rûpelek tê|$1 rûpel tên}} şopandin, rûpelên gotûbêjê nayên jimartin.',
 'wlheader-enotif' => '* Agahdariya E-nameyê pêk tê.',
-'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
+'wlheader-showupdated' => "* Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
 'watchlistcontains' => 'Di lîsteya şopandina te de {{PLURAL:$1|rûpelek heye|$1 rûpel hene}}.',
 'wlnote' => "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
-'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 (di sih rojên dawî de)',
+'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 nîşan bide',
 'watchlist-options' => 'Vebijarkên lîsteya şopandinê',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Bişopîne...',
-'unwatching' => 'Neşopîne...',
+'unwatching' => 'Neşopîne',
 
 'enotif_reset' => 'Hemû rûpelan wek lêsekirî nîşanbide',
 'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
@@ -1429,25 +1443,24 @@ Paşagahîdan û alîkaraya din:
 # Delete
 'deletepage' => 'Rûpelê jê bibe',
 'confirm' => 'Pesend bike',
-'excontent' => "Naveroka berê: '$1'",
-'excontentauthor' => "Naverroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
-'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'
-Naverroka berî betalkirinê ev bû:'$1'",
+'excontent' => 'Naveroka berê: "$1"',
+'excontentauthor' => "Naveroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
+'exbeforeblank' => 'Naverok berî betalkirinê ev bû: "$1"',
 'exblank' => 'rûpel vala bû',
 'delete-confirm' => 'Jêbirina "$1"',
-'delete-legend' => 'Jêbirin',
+'delete-legend' => 'Jê bibe',
 'historywarning' => "'''Hişyarî''': Dîrokeke vê rûpela tu dixwazî jê bibî heye:",
 'confirmdeletetext' => 'Tu kê niha rûpelekê bi tev dîroka wê jêbibê. Xêra xwe zanibe tu kê niha çi bikê û zanibe, çi di wîkîyê da yê bibe. Hên jî seke, ku ev jêbirina bi [[{{MediaWiki:Policy-url}}|mafên wîkîyê]] ra dimeşin ya na.',
 'actioncomplete' => 'Çalakî pêk hat',
 'actionfailed' => 'Çalakî têkçû',
 'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
-'dellogpage' => 'Jêbirina rûpelê',
+'dellogpage' => 'jêbirina rûpelê',
 'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
 'deletionlog' => 'jêbirina rûpelê',
 'reverted' => 'Hate şondabirin berve verzyonekî berê',
 'deletecomment' => 'Sedem:',
-'deleteotherreason' => 'Sedemekî din:',
-'deletereasonotherlist' => 'Sedemekî din',
+'deleteotherreason' => 'Sedema din:',
+'deletereasonotherlist' => 'Sedema din',
 'deletereason-dropdown' => '*Sedemên jêbirinê
 ** Daxwaziya xwedî
 ** Pirsgirêka lîsansê
@@ -1457,13 +1470,14 @@ Naverroka berî betalkirinê ev bû:'$1'",
 'delete-warning-toobig' => "Dîroka vê rûpelê pir mezin e, zêdetirî $1 guherandin. Jêbirina van rûpelan dikarin şaşbûnan di database'ê {{SITENAME}} da çêkin; zandibe tu çi dikê!",
 
 # Rollback
-'rollback_short' => 'Bizivirîne pêş',
-'rollbacklink' => 'bizivirîne pêş',
-'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
+'rollback_short' => 'bizîvirîne pêş',
+'rollbacklink' => 'bizîvirîne pêş',
+'cantrollback' => 'Guherto naye vegerandin;
+bikarhênerê dawî, tenya nivîskarê vê rûpelê ye.',
 'alreadyrolled' => 'Guherandina dawiya [[$1]]
-bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
+bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; kesekî din ew rûpel zîvirandiye an guherandiye.
 
-Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
+Guhertoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".",
 'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
 'rollback-success' => 'Guherandina $1 şondakir; dîsa guharte verzyona $2.',
@@ -1483,7 +1497,7 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'protect-default' => 'Destûrê bide hemû bikarhêneran',
 'protect-level-autoconfirmed' => 'Bikarhênerên neqeydkirî astengbike',
 'protect-level-sysop' => 'Tenê rêveber (admîn)',
-'protect-expiring' => 'heta rojê $1 (UTC)',
+'protect-expiring' => 'heta roja $1 (UTC)',
 'protect-expiring-local' => 'di $1 de dema wê xilas dibe',
 'protect-othertime' => 'Demeke din:',
 'protect-othertime-op' => 'dema din',
@@ -1506,13 +1520,14 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'restriction-level-autoconfirmed' => 'nîv-parastî',
 
 # Undelete
-'undelete' => 'Li rûpelên jêbirî seke',
+'undelete' => 'Li rûpelên jêbirî binêre',
 'undeletepage' => 'Rûpelên jêbirî bibîne û dîsa çêke',
-'viewdeletedpage' => 'Rûpelên vemirandî seke',
+'viewdeletedpage' => 'Li rûpelên jêbirî binêre',
 'undeletepagetext' => 'Rûpelên jêr hatine jêbirin, lê ew hên di arşîvê da ne û dikarin dîsa werin çêkirin. Ev arşîva piştî demekê tê pakkirin.',
 'undeleteextrahelp' => "Ji bo dîsaçêkirina vê rûpelê, li checkbox'an nexe û li '''''Dîsa çêke''''' klîk bike. Eger tu naxazî ku hemû verzyon dîsa werin çêkirin, li checkbox'ên wan verzyonan xe, yê tu dixazî dîsa çêkê û paşê li '''''Dîsa çêke'''' klîk bike. Eger tu li '''''Biskine''''' xê, hemû checkbox û cihê sedemê yê werin valakirin.",
 'undeleterevisions' => '$1 {{PLURAL:$1|rêvîzyonek çû|rêvîzyon çûn}} arşîv',
-'undeletehistory' => 'Eger tu vê rûpelê dîsa çêkê, hemû rêvîzyon ê dîsa di dîrokê da werin çêkirin. Eger rûpeleka nuh ji dema jêbirinê da hatîye çêkirin, ew rêvîzyon ê werin pêşî diroka nuh.',
+'undeletehistory' => 'Ger tu vê rûpelê dîsa çêkî, hemû guherto wê dîsa di dîrokê de werin çêkirin.
+Ger rûpeleke nû di dema jêbirinê de hatibe çêkirin, ew guherto wê were pêşiya diroka nû.',
 'undelete-revision' => 'Rêvîzyonên jêbirî yê $1 (di $2) ji $3:',
 'undelete-nodiff' => 'Guhertoyên berê nehatin dîtin.',
 'undeletebtn' => 'Dîsa çêke!',
@@ -1521,21 +1536,21 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'undeletereset' => 'Nû bike',
 'undeleteinvert' => 'Hilbijartinê şûnde vegerîne',
 'undeletecomment' => 'Sedem:',
-'undeletedrevisions' => '{{PLURAL:$1|Verzyonek dîsa hate|$1 verzyon dîsa hatin}} çêkirin',
-'undeletedrevisions-files' => '{{PLURAL:$1|Verzyonek|$1 verzyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
+'undeletedrevisions' => '{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin',
+'undeletedrevisions-files' => '{{PLURAL:$1|Versiyonek|$1 versiyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
 'undeletedfiles' => '{{PLURAL:$1|Medyayek hate|$1 medya hatin}} çêkirin',
 'undeletedpage' => "'''$1 dîsa hate çêkirin'''
 
-Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşahîya jêbirinê]] da seke.",
-'undelete-header' => '[[Special:Log/delete|Reşahîya jêbirinê]] bibîne ji bo rûpelên jêbirî.',
-'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
-'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
-'undelete-search-submit' => 'Lêbigere',
+Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/delete|Jêbirina têketinê]] binêre.",
+'undelete-header' => 'Ji bo rûpelên dawî hatine jêbirin, li [[Special:Log/delete|Jêbirina têketinê]] binêre.',
+'undelete-search-box' => 'Li rûpelên jêbirî bigere',
+'undelete-search-prefix' => 'Rûpela nîşandanê bi vê destpêdike:',
+'undelete-search-submit' => 'Lêgerîn',
 'undelete-show-file-submit' => 'Erê',
 
 # Namespace form on various pages
 'namespace' => 'Valahiya nav:',
-'invert' => 'Hilbijardinê pêçewane bike',
+'invert' => 'Hemûyan bibîne',
 'namespace_association' => 'Navê têkilîdar',
 'blanknamespace' => '(Sereke)',
 
@@ -1545,8 +1560,8 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
 'mycontris' => 'Beşdariyên min',
 'contribsub2' => 'Ji bo $1 ($2)',
 'uctop' => '(ser)',
-'month' => 'Ji mehê (û zûtir):',
-'year' => 'Ji salê (û zûtir):',
+'month' => 'Ji meha (û zûtir):',
+'year' => 'Ji sala (û zûtir):',
 
 'sp-contributions-newbies' => 'Tenê beşdariyên bikarhênerên nû nîşan bide',
 'sp-contributions-newbies-sub' => 'Ji bikarhênerên nû re',
@@ -1558,19 +1573,19 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
 'sp-contributions-talk' => 'gotûbêj',
 'sp-contributions-userrights' => 'Îdarekirina mafên bikarhêneran',
 'sp-contributions-search' => 'Li beşdariyan bigere',
-'sp-contributions-username' => 'Adresê IP ya navî bikarhêner:',
-'sp-contributions-submit' => 'Lêbigere',
+'sp-contributions-username' => "Adresa IP'yê yan navê bikarhêner:",
+'sp-contributions-submit' => 'Lêgerîn',
 
 # What links here
 'whatlinkshere' => 'Girêdanên li ser vê rûpelê',
 'whatlinkshere-title' => 'Rûpelan, yê berve $1 tên',
 'whatlinkshere-page' => 'Rûpel:',
-'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
-'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
+'linkshere' => "Ev rûpel tên ser vê rûpelê '''[[:$1]]''':",
+'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''[[:$1]]'''.",
 'nolinkshere-ns' => "Ne lînkek berve '''[[:$1]]''' di vê namespace'a da tê.",
 'isredirect' => 'rûpelê beralî bike',
 'istemplate' => 'tê bikaranîn',
-'isimage' => 'lînka wêneyê',
+'isimage' => 'girêdana wêneyî',
 'whatlinkshere-prev' => '{{PLURAL:$1|yê|$1 yên}} berê',
 'whatlinkshere-next' => '{{PLURAL:$1|yê|$1 yên}} din',
 'whatlinkshere-links' => '← girêdan',
@@ -1592,7 +1607,7 @@ Sedemekê binivîse!',
 'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
 'ipbexpiry' => 'Dem:',
 'ipbreason' => 'Sedem',
-'ipbreasonotherlist' => 'Sedemekî din',
+'ipbreasonotherlist' => 'Sedemeke din',
 'ipbreason-dropdown' => '*Sedemên astengkirinê
 ** vandalîzm
 ** agahiya şaş kire gotarekê
@@ -1604,17 +1619,17 @@ Sedemekê binivîse!',
 ** navekî ku nayê pejirandin',
 'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
 'ipbemailban' => 'Ji bo şandina e-nameyan qedexe bike.',
-'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
+'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nû yê vê bikarhênerê astengbike.",
 'ipbsubmit' => 'Vê bikarhêner asteng bike',
 'ipbother' => 'Demekî din:',
-'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
+'ipboptions' => '2 saet:2 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 meh:1 month,3 meh:3 months,6 meh:6 months,1 sal:1 year,ji her demê re:infinite',
 'ipbotheroption' => 'yên din',
-'ipbotherreason' => 'Sedemekî din',
-'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
+'ipbotherreason' => 'Sedemeke din',
+'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nû û lîsteya bikarhêneran veşêre',
 'ipbwatchuser' => 'Rûpelên bikarhêner û gotûbêjê bişopîne',
 'ipb-confirm' => 'Astengkirinê piştrast bike',
 'badipaddress' => 'Bikarhêner bi vî navî tune',
-'blockipsuccesssub' => 'Astengkirin serkeftî bû',
+'blockipsuccesssub' => 'Astengkirin pêkhat',
 'blockipsuccesstext' => '"$1" hat asteng kirin.
 <br />Bibîne [[Special:BlockList|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
 'ipb-edit-dropdown' => 'Sedemên astengkirinê',
@@ -1624,19 +1639,19 @@ Sedemekê binivîse!',
 'ipb-blocklist-contribs' => 'Beşdariyên ji bo $1',
 'unblockip' => "IP'yekê dîsa veke",
 'unblockiptext' => "Nivîsara jêr bikarwîne ji bo qebûlkirina nivîsandinê bikarhênerekî ya IP'yeka berê astengkirî.",
-'ipusubmit' => 'Astengkirina vê adrêsê rake',
+'ipusubmit' => 'Vê astengkirinê rake',
 'unblocked' => '[[User:$1|$1]] niha vê astengkirinê ye',
 'unblocked-id' => '$1 dîsa vê astengkirinê ye',
 'blocklist' => 'Bikarhênerên astengkirî',
 'ipblocklist' => "Listek ji adresên IP'yan û bikarhêneran yê hatine astengkirin",
-'ipblocklist-legend' => 'Bikarhênerekî astengkirî bibîne',
+'ipblocklist-legend' => 'Bikarhênerên astengkirî bibîne',
 'blocklist-userblocks' => 'Astengkirina hesaban veşêre',
 'blocklist-tempblocks' => 'Astengkirinên demkî veşêre',
 'blocklist-rangeblocks' => 'Astengkirinên cur bi cur veşêre',
 'blocklist-by' => 'Astengkirina rêveber',
 'blocklist-params' => 'Parametreyan asteng bike',
 'blocklist-reason' => 'Sedem',
-'ipblocklist-submit' => 'Lêbigere',
+'ipblocklist-submit' => 'Lêgerîn',
 'ipblocklist-localblock' => 'Astengkirina herêmî',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|Astengkirin|Astengkirinên}} din',
 'infiniteblock' => 'ji her demê ra',
@@ -1653,9 +1668,9 @@ Sedemekê binivîse!',
 'change-blocklink' => 'Astengkirinê biguherîne',
 'contribslink' => 'beşdarî',
 'emaillink' => 'e-name bişîne',
-'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
-'blocklogpage' => 'Astengkirina bikarhêner',
-'blocklogentry' => '"[[$1]]" ji bo dema $2 $3 hatîye asteng kirin',
+'autoblocker' => 'Otomatîk hate astengkirin ji ber ku IP\'ya wê û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'$2\'\'"',
+'blocklogpage' => 'Astengkirina têketinê',
+'blocklogentry' => '"[[$1]]" ji bo dema $2, $3 asteng kir',
 'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:BlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
 'unblocklogentry' => 'astenga "$1" betalkir',
 'block-log-flags-anononly' => 'bes bikarhênerên neqeydkirî',
@@ -1664,7 +1679,7 @@ Sedemekê binivîse!',
 'block-log-flags-noemail' => 'Şandina e-nameyan hatîye qedexekirin',
 'block-log-flags-nousertalk' => 'nikare gotûbêja xwe biguherîne',
 'block-log-flags-hiddenname' => 'navê bikarhêneriyê yê veşartî',
-'ipb_expiry_invalid' => 'Dem ne serrast e.',
+'ipb_expiry_invalid' => 'Dem ne serast e.',
 'ipb_already_blocked' => '"$1" berê hatîye astengkirin',
 'ipb-needreblock' => '$1 berê hatiye astengkirin. Tu dixwazî eyaran biguherînî?',
 'ipb_cant_unblock' => "Şaşbûn: ID'ya astengkirinê $1 nehate dîtin. Astengkirinê xwe niha belkî hatîye rakirin.",
@@ -1685,16 +1700,16 @@ Sedemekê binivîse!',
 # Move page
 'move-page' => '$1 bigerîne',
 'move-page-legend' => 'Vê rûpelê bigerîne',
-'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
+'movepagetalktext' => "Rûpela '''gotûbêjê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
 
-*berê guftûgoyek bi wê navê hebe ya
+*berê gotûbêjek bi wî navî hebe ya
 *tu tiştekî jêr hilbijêrê.
 
 Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
 
-Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
+Xêra xwe navê nû û sedemê navgerandinê binivisîne.",
 'movearticle' => 'Rûpelê bigerîne',
-'movenologin' => 'Xwe qeyd nekir',
+'movenologin' => 'Xwe tomar nekir',
 'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]
 da bikarî navê wê rûpelê biguherînî.',
 'movenotallowed' => 'Mafên te bo guherandina navên gotaran tune ye.',
@@ -1715,7 +1730,7 @@ da bikarî navê wê rûpelê biguherînî.',
 'movepage-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
 'movepage-page-moved' => 'Rûpela $1 çû cihê $2.',
 'movepage-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
-'movelogpage' => 'Nav guherandin',
+'movelogpage' => 'guhertina nav',
 'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
 'movereason' => 'Sedem',
 'revertmove' => 'şûnde vegerîne',
@@ -1734,13 +1749,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'export-download' => 'Weka dosyeyê qeyd bike',
 
 # Namespace 8 related
-'allmessages' => 'Hemû mesajên sîstemê',
+'allmessages' => 'Hemû peyamên sîstemê',
 'allmessagesname' => 'Nav',
 'allmessagescurrent' => 'Nivîsa niha',
-'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
+'allmessagestext' => 'Lîsteya hemû peyamên MediaWikiyê.',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikare were bikaranîn ji ber ku '''\$wgUseDatabaseMessages''' hatiye jêbirin.",
 'allmessages-filter-legend' => 'Parzûn',
 'allmessages-filter-unmodified' => 'Neguhertî',
-'allmessages-filter-all' => 'hemû',
+'allmessages-filter-all' => 'Hemû',
 'allmessages-filter-modified' => 'Guhertî',
 'allmessages-language' => 'Ziman',
 'allmessages-filter-submit' => 'Gotar',
@@ -1772,12 +1788,13 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-pt-preferences' => 'Tercîhên min',
 'tooltip-pt-watchlist' => 'The list of pages you',
 'tooltip-pt-mycontris' => 'Lîsteya beşdariyên min',
-'tooltip-pt-logout' => 'Derkeve (Log out)',
+'tooltip-pt-logout' => 'Derkeve',
 'tooltip-ca-talk' => 'Gotûbêj li ser rûpela naverokê',
 'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
 'tooltip-ca-addsection' => 'Beşekê zêde bike.',
-'tooltip-ca-viewsource' => 'Ev rûpela tê parastin. Tu dikarê bes li çavkanîyê sekê.',
-'tooltip-ca-history' => 'Versyonên berê yên vê rûpelê.',
+'tooltip-ca-viewsource' => 'Ev rûpel tê parastin.
+Tu dikarî tenê li çavkaniyê binêrî.',
+'tooltip-ca-history' => 'Guhertoyên berê yên vê rûpelê',
 'tooltip-ca-protect' => 'Vê rûpelê biparêze',
 'tooltip-ca-unprotect' => 'Parastina vê rûpelê rake',
 'tooltip-ca-delete' => 'Vê rûpelê jê bibe',
@@ -1787,14 +1804,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-search' => 'Li {{SITENAME}} bigere',
 'tooltip-search-go' => 'Here rûpeleke tev bi vî navî, heke hebe',
 'tooltip-search-fulltext' => 'Di nav rûpelan de li vê nivîsê bigerre',
-'tooltip-p-logo' => 'Biçe Destpêkê',
+'tooltip-p-logo' => 'Here Destpêkê',
 'tooltip-n-mainpage' => 'Biçe Destpêkê',
-'tooltip-n-mainpage-description' => 'Biçe Destpêkê',
+'tooltip-n-mainpage-description' => 'Here Destpêkê',
 'tooltip-n-portal' => 'Agahdarî li ser {{SITENAME}}, tu dikarî çi bikî, tu dikarî çi li ku bîbînî',
 'tooltip-n-recentchanges' => "Lîsteya guherandinên dawî di vê Wîkî'yê da.",
-'tooltip-n-randompage' => 'Rûpelekî helkeft biwêşîne',
+'tooltip-n-randompage' => 'Rûpeleka ketober bar bike',
 'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
-'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
+'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku pê ve girêdayî ne.',
 'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
 'tooltip-feed-rss' => "RSS feed'ên ji bo rûpelê",
 'tooltip-feed-atom' => "Atom feed'ên ji bo vê rûpelê",
@@ -1804,18 +1821,18 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-t-specialpages' => 'Lîsteya hemû rûpelên taybetî',
 'tooltip-t-print' => 'Versiyona çapkirinê ya vê rûpelê',
 'tooltip-ca-nstab-main' => 'Li rûpela naverokê binêre',
-'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
+'tooltip-ca-nstab-user' => 'Rûpela bikarhêner bibîne',
 'tooltip-ca-nstab-special' => 'This is a special page, you can',
 'tooltip-ca-nstab-project' => 'Li rûpelê projektê seke',
 'tooltip-ca-nstab-image' => 'Rûpela dosyeyê bibîne',
-'tooltip-ca-nstab-template' => 'Şablonê nîşanbide',
+'tooltip-ca-nstab-template' => 'Şablonê nîşan bide',
 'tooltip-ca-nstab-help' => 'Rûpela alîkariyê bibîne',
 'tooltip-ca-nstab-category' => 'Li rûpelê kategorîyê seke',
 'tooltip-minoredit' => 'Vê guherandinê weka biçûk îşaret bike',
 'tooltip-save' => 'Guherandinên xwe tomarbike',
 'tooltip-preview' => 'Guherandinên xwe bibîne, berî ku tu wî qeyd bikî!',
 'tooltip-diff' => 'Guherandinên ku te di nivîsê de kirîyî nîşan bide',
-'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne.',
+'tooltip-compareselectedversions' => 'Cudatiyên guhertoyên hilbijartî yên vê rûpelê bibîne.',
 'tooltip-watch' => 'Vê rûpelê têke nav lîsteya te ya şopandinê',
 'tooltip-upload' => 'Barkirinê destpêke',
 
@@ -1827,13 +1844,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Attribution
 'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
-'siteuser' => 'Bikarhênera/ê $1 a/ê {{SITENAME}}',
+'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
 'others' => 'ên din',
 'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
 
 # Spam protection
 'spamprotectiontitle' => 'Parastina spam',
-'spamprotectiontext' => 'Ew rûpela yê tu dixast tomarbikê hate astengkirin ji ber ku parastina spam. Ew çêbû ji ber ku lînkekî derva di vê rûpelê da ye.',
+'spamprotectiontext' => 'Rûpela ku tu dixwazî tomar bikî ji ber parastina spamê hate astengkirin.
+Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'spamprotectionmatch' => 'Ev nivîsa parastinê spam vêxist: $1',
 
 # Info page
@@ -1847,8 +1865,8 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'pageinfo-views' => 'Hejmara dîtinê',
 
 # Patrolling
-'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
-'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşanbide',
+'markaspatrolleddiff' => 'Wek serrastkirî nîşan bide',
+'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşan bide',
 'markedaspatrolled' => 'Wek serrastkirî tê nîşandan',
 'markedaspatrolledtext' => 'Guherandina rûpelê wek serrastkirî tê nîşandan.',
 
@@ -1857,21 +1875,21 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Image deletion
 'deletedrevision' => 'Guhertoya berê $1 hate jêbirin.',
-'filedelete-missing' => 'Data\'yê "$1" nikane were jêbirin, ji ber ku ew tune.',
-'filedelete-current-unregistered' => 'Datayê "$1" di sistêmê da tune.',
+'filedelete-missing' => 'Dane "$1" nikare were jêbirin, ji ber ku ew tune ye.',
+'filedelete-current-unregistered' => 'Daneya "$1" li sîstemê tune ye.',
 
 # Browsing diffs
-'previousdiff' => '← Ciyawaziya pêştir',
-'nextdiff' => 'Ciyawaziya paştir →',
+'previousdiff' => '← Cudahiya pêştir',
+'nextdiff' => 'Cudahiya paştir →',
 
 # Media information
 'thumbsize' => 'Mezinahiya wêne:',
 'widthheight' => '$1 x $2',
 'widthheightpage' => '$1 × $2, $3 rûpel',
-'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
+'file-info' => 'mezinbûna daneyê: $1, MIME type: $2',
 'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
 'file-nohires' => 'Versyonekî jê mezintir tune.',
-'svg-long-desc' => "Data'ya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna data'yê: $3",
+'svg-long-desc' => 'Daneya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna daneyê: $3',
 'show-big-image' => 'Mezînbûn',
 
 # Special:NewFiles
@@ -1881,17 +1899,17 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'newimages-legend' => 'Parzûn',
 'showhidebots' => '($1 bot)',
 'noimages' => 'Ne tiştek tê dîtin.',
-'ilsubmit' => 'Lêbigere',
+'ilsubmit' => 'Lêgerîn',
 'bydate' => 'li gor dîrokê',
-'sp-newimages-showfrom' => "Data'yên nuh ji dema $1, saet $2 da bibîne",
+'sp-newimages-showfrom' => 'Daneyên nû ji dema $1, saet $2 ve bibîne',
 
 # Variants for Kurdish language
-'variantname-ku-arab' => 'tîpên erebî',
-'variantname-ku-latn' => 'tîpên latînî',
+'variantname-ku-arab' => 'Tîpên erebî',
+'variantname-ku-latn' => 'Tîpên latînî',
 'variantname-ku' => 'disable',
 
 # Metadata
-'metadata' => "Data'yên meta",
+'metadata' => 'Daneyên meta',
 'metadata-expand' => 'Detayên dirêj nîşan bide',
 'metadata-collapse' => 'Detayên dirêj veşêre',
 
@@ -1899,7 +1917,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'exif-imagewidth' => 'Panbûn',
 'exif-imagelength' => 'Dirêjbûn',
 'exif-jpeginterchangeformatlength' => "Byte'ên daneya JPEG",
-'exif-imagedescription' => 'Navî wêneyê',
+'exif-imagedescription' => 'Navê wêne',
 'exif-model' => 'Modela kamerayê',
 'exif-artist' => 'Nûser',
 'exif-pixelydimension' => 'Firehiya wêne',
@@ -1916,6 +1934,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'exif-languagecode' => 'Ziman',
 'exif-iimcategory' => 'Kategorî',
 'exif-label' => 'Etîket',
+'exif-disclaimer' => 'Ferexetname',
 
 'exif-unknowndate' => 'Dîroka nayê zanîn',
 
@@ -1975,14 +1994,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hemû',
 'namespacesall' => 'Hemû',
-'monthsall' => 'giştik',
+'monthsall' => 'hemû',
 'limitall' => 'hemû',
 
 # E-mail address confirmation
 'confirmemail' => 'Adrêsa e-nameyan nasbike',
-'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandîye.',
+'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandiye.',
 'confirmemail_success' => 'E-Mail adrêsa te hate naskirin. Tu niha dikarî xwe qeydbikê û kêfkê.',
-'confirmemail_loggedin' => 'Adrêsa te yê E-Mail hate qebûlkirin.',
+'confirmemail_loggedin' => 'Navnîşana te ya E-Nameyê hate qebûlkirin.',
 'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
 
 Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
@@ -1996,14 +2015,14 @@ Lê eger ev *ne* tu bû, li lînkê netikîne. Ev e-nameya di rojê $4 da netê
 'scarytranscludetoolong' => '[URL zêde dirêj e; bibore]',
 
 # Delete conflict
-'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
+'deletedwhileediting' => "'''Hişyarî:''' Piştî te dest bi guherandinê kir ev rûpel hate jêbirin!",
 'confirmrecreate' => "Piştî te dest bi guherandinê kir, bikarhêner [[User:$1|$1]] ([[User talk:$1|gotûbêj]]) ev rûpel jê bir. Sedema jêbirinê ev bû:
 : ''$2''
 Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'recreate' => 'Dîsa çêke',
 
 # action=purge
-'confirm_purge_button' => 'Temam',
+'confirm_purge_button' => 'Baş e',
 'confirm-purge-top' => 'Bîra vê rûpelê jêbîbe ?',
 
 # Multipage image navigation
@@ -2013,24 +2032,24 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'imgmultigoto' => 'Here rûpela $1',
 
 # Table pager
-'table_pager_next' => 'Rûpelê din',
-'table_pager_prev' => 'Rûpelê berî',
-'table_pager_first' => 'Rûpelê yekemîn',
-'table_pager_last' => 'Rûpelê dawî',
+'table_pager_next' => 'Rûpela pêş',
+'table_pager_prev' => 'Rûpela berî',
+'table_pager_first' => 'Rûpela pêşîn',
+'table_pager_last' => 'Rûpela dawî',
 'table_pager_limit_submit' => 'Biçe',
 
 # Auto-summaries
 'autosumm-blank' => 'Rûpel hate vala kirin',
 'autosumm-replace' => "'$1' ket şûna rûpelê.",
 'autoredircomment' => 'ji bo [[$1]] hate beralîkirin',
-'autosumm-new' => 'Rûpela nû: $1',
+'autosumm-new' => 'Rûpela nû: "$1"',
 
 # Live preview
 'livepreview-loading' => 'Tê…',
 'livepreview-ready' => 'Bar dibe… Amade ye!',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Xeyrandin yê piştî $1 sanîyan hatine çêkirin belkî netên wêşendan.',
+'lag-warn-normal' => 'Sererastkirinên piştî $1 çirkeyan hatine çêkirin belkî neyên weşandin.',
 'lag-warn-high' => 'Ji bo westinê sistêmê ew xeyrandin, yê piştî $1 sanîyan hatine çêkirin netên wêşendan.',
 
 # Watchlist editor
@@ -2039,7 +2058,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'watchlistedit-normal-title' => 'Lîsteya xwe ya şopandinê biguherîne',
 'watchlistedit-normal-legend' => 'Gotaran ji lîsteya min ya şopandinê rake',
 'watchlistedit-normal-submit' => 'Gotaran jê bibe',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotaran hatin}} jêbirin ji lîsteya te yê şopandinê:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin ji lîsteya te yê şopandinê:',
 'watchlistedit-raw-titles' => 'Sernav:',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin:',
 
@@ -2056,7 +2075,8 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'version-version' => ' (Verzîyon $1)',
 'version-license' => 'Destûr',
 'version-software-product' => 'Berhem',
-'version-software-version' => 'Versiyon',
+'version-software-version' => 'Guherto',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath-page' => 'Wêne:',
@@ -2064,7 +2084,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Navê dosyeyê:',
-'fileduplicatesearch-submit' => 'Lêbigere',
+'fileduplicatesearch-submit' => 'Lê bigere',
 
 # Special:SpecialPages
 'specialpages' => 'Rûpelên taybet',
@@ -2073,7 +2093,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 * <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',
-'specialpages-group-changes' => 'Guherandinên dawî û reşahîyan',
+'specialpages-group-changes' => 'Guherandinên dawî û têketin',
 'specialpages-group-media' => 'Nameyên medyayan û barkirinan',
 'specialpages-group-users' => 'Bikarhêner û maf',
 'specialpages-group-pages' => 'Lîstên rûpelan',
@@ -2106,7 +2126,12 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'htmlform-selectorother-other' => 'Yên din',
 
 # New logging system
+'logentry-delete-delete' => '$1 rûpela $3 jê bir',
+'revdelete-content-hid' => 'naverok veşartî ye',
 'revdelete-uname-hid' => 'navê bikarhêneriyê yê veşartî',
+'logentry-move-move' => '$1 navê $3 weke $4 guherand',
+'logentry-move-move-noredirect' => '$1 navê $3 guherand û kir $4',
+'logentry-move-move_redir' => '$1 navê $3 guherand û kir $4',
 'logentry-newusers-newusers' => '$1 hesabekî bikarhêneriyê çêkir',
 'logentry-newusers-create' => '$1 hesabekî bikarhêneriyê çêkir',
 'newuserlog-byemail' => 'şîfre bi e-nameyê hate şandin',
index fb21fe9..9b8b641 100644 (file)
@@ -657,7 +657,7 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'nchanges' => '$1 {{PLURAL:$1|chanj|chanj}}',
 'recentchanges' => 'Chanjyow a-dhiwedhes',
 'recentchanges-legend' => 'Etholyow an chanjyow a-dhiwedhes',
-'recentchangestext' => "War'n folen-ma y hellowgh hwi sewya an chanjyow diwettha eus gwres dhe'n wiki.",
+'recentchanges-summary' => "Sewya an chanjyow diwettha eus dhe'n wiki war'n folen-ma.",
 'recentchanges-feed-description' => "Sewya an chanjyow diwettha dhe'n wiki e'n feed-ma.",
 'recentchanges-label-newpage' => 'An chanj-ma a wrug gwruthyl folen nowyth',
 'recentchanges-label-minor' => 'Chanj bian yw hebma',
index 28656fb..726c146 100644 (file)
@@ -9,6 +9,8 @@
  *
  * @author AidaBishkek
  * @author Aidabishkek
+ * @author Amire80
+ * @author Chorobek
  * @author Muratjumashev
  * @author Ztimur
  */
@@ -35,15 +37,15 @@ $messages = array(
 'tog-usenewrc' => 'Акыркы өзгөрүүлөрдүн жакшыртылган тизмесин колдонуу (JavaScript талап кылынат)',
 'tog-numberheadings' => 'Башсаптарды автоматтык түрдө номурлоо',
 'tog-showtoolbar' => 'Оңдоо учурунда аспаптар тактасын көрсөтүү (JavaScript талап кылынат)',
-'tog-editondblclick' => 'Ð\9aоÑ\88 Ñ\87еÑ\80Ñ\82Ò¯Ò¯ Ð¼ÐµÐ½ÐµÐ½ баракты оңдоо (JavaScript талап кылынат)',
+'tog-editondblclick' => 'Эки Ð±Ð°Ñ\81Ñ\8bп баракты оңдоо (JavaScript талап кылынат)',
 'tog-editsection' => 'Ар бир секция үчүн «оңдоо» шилтемеси',
 
-'underline-always' => 'Ð\90Ñ\80 Ð´айым',
+'underline-always' => 'Ð\94айым',
 'underline-never' => 'Эч качан',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Оңдоо талаасынын арибинин стили:',
-'editfont-default' => 'Ð\90Ñ\80алагÑ\8bÑ\87Ñ\82Ñ\8bн Ð°Ñ\80ибин ÐºÐ»Ð´Ð¾Ð½Ñ\83Ñ\83',
+'editfont-default' => 'СеÑ\80епÑ\87инин Ð°Ñ\80ибин ÐºÐ¾Ð»Ð´Ð¾Ð½',
 'editfont-monospace' => 'Моножазы ариби',
 
 # Dates
@@ -101,7 +103,7 @@ $messages = array(
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категориялар}}',
 'category_header' => '"$1" категориядагы барактар',
-'subcategories' => 'Ð\9aөмөк категориялар',
+'subcategories' => 'Ð\98Ñ\87ки категориялар',
 'category-media-header' => '"$1" категориясындагы медиафайлдар',
 'category-empty' => "''Бул категорияда азыр эч бир барак же файл жок.''",
 'hidden-categories' => '{{PLURAL:$1|Жашырылган категория|Жашырылган категориялар}}',
@@ -114,8 +116,8 @@ $messages = array(
 'category-file-count-limited' => 'Бул категорияда {{PLURAL:$1|$1|$1|$1}} файл бар.',
 'listingcontinuesabbrev' => 'уланд.',
 'index-category' => 'Индекстелген барактар',
-'noindex-category' => 'Иреттелбеген барактар',
-'broken-file-category' => 'Файлдарга туура эмес шилтемелүү барактар',
+'noindex-category' => 'Индекстелбеген барактар',
+'broken-file-category' => 'Файлдарга туура эмес шилтеме берген барактар',
 
 'about' => 'Тууралуу',
 'article' => 'Макала',
@@ -123,14 +125,14 @@ $messages = array(
 'cancel' => 'Жокко чыгар',
 'moredotdotdot' => 'Уландысы...',
 'mypage' => 'Барагым',
-'mytalk' => 'Талкуум',
+'mytalk' => 'ТалкÑ\83Ñ\83лаÑ\80Ñ\8bм',
 'anontalk' => 'Бул IP дарек үчүн талкуу',
-'navigation' => 'Багыттоо',
+'navigation' => 'Багыт алуу',
 'and' => '&#32;жана',
 
 # Cologne Blue skin
-'qbfind' => 'Издөө',
-'qbbrowse' => 'Ð\9aаÑ\80оо',
+'qbfind' => 'Изде',
+'qbbrowse' => 'СеÑ\80еп Ñ\81ал',
 'qbedit' => 'Оңдоо',
 'qbpageoptions' => 'Бул барак',
 'qbpageinfo' => 'Контекст',
@@ -150,7 +152,7 @@ $messages = array(
 'vector-view-edit' => 'Оңдо',
 'vector-view-history' => 'Тарыхын кара',
 'vector-view-view' => 'Оку',
-'vector-view-viewsource' => 'Ð\91айкоо',
+'vector-view-viewsource' => 'Ð\9aайнаÑ\80Ñ\8bн ÐºÐ°Ñ\80а',
 'actions' => 'Аракеттер',
 'namespaces' => 'Аталыш топтому',
 'variants' => 'Варианттар',
@@ -222,8 +224,8 @@ $messages = array(
 'mainpage-description' => 'Башбарак',
 'portal' => 'Жамаат порталы',
 'portal-url' => 'Project:Жамаат порталы',
-'privacy' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83ндÑ\83Ñ\83лÑ\83к Ñ\82аÑ\80Ñ\82иби',
-'privacypage' => 'Project:Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83ндÑ\83Ñ\83лÑ\83к Ñ\82аÑ\80Ñ\82иби',
+'privacy' => 'Ð\9cаалÑ\8bмаÑ\82Ñ\82Ñ\8b ÐºÑ\83пÑ\83Ñ\8f Ñ\81акÑ\82оо Ñ\81аÑ\8fÑ\81аÑ\82Ñ\8b',
+'privacypage' => 'Project:Ð\9cаалÑ\8bмаÑ\82Ñ\82Ñ\8b ÐºÑ\83пÑ\83Ñ\8f Ñ\81акÑ\82оо Ñ\81аÑ\8fÑ\81аÑ\82Ñ\8b',
 
 'retrievedfrom' => '"$1" булагындан алынды',
 'youhavenewmessages' => 'Сизге $1 ($2) бар.',
@@ -248,10 +250,10 @@ $messages = array(
 'nstab-main' => 'Макала',
 'nstab-user' => 'Колдонуучунун барагы',
 'nstab-special' => 'Атайын барак',
-'nstab-project' => 'Долбоор барагы',
+'nstab-project' => 'Долбоордун барагы',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Билдирүү',
-'nstab-template' => 'Ð\9dÑ\83Ñ\81ка',
+'nstab-template' => 'Ð\9aалÑ\8bп',
 'nstab-help' => 'Жардам',
 'nstab-category' => 'Категория',
 
@@ -279,7 +281,7 @@ $messages = array(
 'badtitle' => 'Ыксыз аталыш',
 'badtitletext' => 'Талап кылынган барак аталышы туура эмес, бош, же тилдер-аралык же уики-аралык аталышы туура эмес шилтемеленген.
 Балким аталышта колдонулбай турган бир же андан көп белги камтылган.',
-'viewsource' => 'Ð\91айкоо',
+'viewsource' => 'Ð\9aайнаÑ\80Ñ\8bн ÐºÐ°Ñ\80а',
 
 # Login and logout pages
 'welcomecreation' => '== Кош келиңиз, $1! ==
@@ -288,21 +290,29 @@ $messages = array(
 'yourname' => 'Колдонуучунун аты',
 'yourpassword' => 'Сырсөз',
 'yourpasswordagain' => 'Сырсөздү кайра жазыңыз',
-'remembermypassword' => 'Ð\91Ñ\83л Ð±Ñ\80аÑ\83зеÑ\80де ÐºÐ°Ñ\82Ñ\82оо Ð¶Ð°Ð·Ñ\83Ñ\83мдÑ\83 Ñ\8dÑ\81Ñ\82е тут (эң көп $1 {{PLURAL:$1|күн|күн}})',
+'remembermypassword' => 'Ð\91Ñ\83л Ð±Ñ\80аÑ\83зеÑ\80де ÐºÐ°Ñ\82Ñ\82оо Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82Ñ\82аÑ\80Ñ\8bмдÑ\8b Ñ\8dÑ\81ке тут (эң көп $1 {{PLURAL:$1|күн|күн}})',
 'yourdomainname' => 'Сиздин домен',
 'login' => 'Кирүү',
 'nav-login-createaccount' => 'Кирүү / Каттоо',
 'loginprompt' => '{{SITENAME}} сайтына кирүү үчүн «cookies» колдонууга уруксатыңыз керек .',
 'userlogin' => 'Кирүү / Каттоо',
+'userloginnocreate' => 'Кирүү',
 'logout' => 'Чыгуу',
 'userlogout' => 'Чыгуу',
+'notloggedin' => 'Сиз системага кире элексиз',
 'nologin' => 'Каттала элексизби? $1.',
 'nologinlink' => 'Каттоону башта',
 'createaccount' => 'Жаңы колдонуучуну катта',
 'gotaccount' => 'Катталгансызбы? $1.',
 'gotaccountlink' => 'Кирүү',
-'userlogin-resetlink' => 'Кирүү маалыматыңызды унутуп калдыңызбы?',
+'userlogin-resetlink' => 'Кирүүчү маалыматарыңызды унутуп калдыңызбы?',
 'createaccountmail' => 'Электрондук дарек боюнча',
+'createaccountreason' => 'Себеби:',
+'badretype' => 'Сиз киргизген сырсөздөр дал келишпейт',
+'userexists' => 'Сиз тандаган колдонуучунун аты бош эмес.',
+'loginerror' => 'Колдонуучуну таанууда ката кетти',
+'createaccounterror' => '$1 эсебин түзүү мүмкүн эмес',
+'loginsuccesstitle' => 'Сиз ийгиликтүү кирдиңиз',
 'wrongpassword' => 'Ката сырсөз киргизилди. Кайтадан аракет кылып көрүңүз.',
 'wrongpasswordempty' => 'Сырсөз киргизилген жок. Кайтадан аракет кылып көрүңүз.',
 'mailmypassword' => 'Жаңы сырсөздү электрондук дарекке жибер',
@@ -315,8 +325,8 @@ $messages = array(
 'newpassword' => 'Жаңы сырсөз:',
 
 # Edit page toolbar
-'bold_sample' => 'Калын тамга',
-'bold_tip' => 'Калын тамга',
+'bold_sample' => 'Калың тамга',
+'bold_tip' => 'Калың тамга',
 'italic_sample' => 'Жантык тамга',
 'italic_tip' => 'Жантык тамга',
 'link_sample' => 'Шилтеменин аталышы',
@@ -329,7 +339,7 @@ $messages = array(
 'nowiki_tip' => 'Уики-форматтоого көңүл бөлбө',
 'image_tip' => 'Кыстарылган файл',
 'media_tip' => 'Файлга шилтеме',
-'sig_tip' => 'Ð\9aол Ñ\82амгаңÑ\8bз Ð¶Ð°Ð½Ð° Ñ\81ааÑ\82Ñ\8b',
+'sig_tip' => 'Ð\9aол Ñ\82амгаңÑ\8bз Ð¶Ð°Ð½Ð° Ñ\83бакÑ\8bÑ\82 Ð¼Ó©Ó©Ñ\80Ò¯',
 'hr_tip' => 'Туурасынын сызык (жыш колдонбоңуз)',
 
 # Edit pages
@@ -339,11 +349,16 @@ $messages = array(
 'savearticle' => 'Баракты сактап кой',
 'preview' => 'Алдын ала көрүү',
 'showpreview' => 'Алдын ала көрсөт',
+'showlivepreview' => 'Ылдам карап чыгуу',
 'showdiff' => 'Өзгөртүүлөрдү көрсөт',
 'anoneditwarning' => "'''Эскертүү:''' Сиз каттоодон өткөн жоксуз.
 IP дарегиңиз бул барактын оңдоо тарыхына жазылат.",
+'blockedtext' => 'Сиздин колдонуучу атыңыз же IP дарегиңиз тосмолонгон',
+'blockednoreason' => 'себеби көрсөтүлгөн эмес',
+'loginreqtitle' => 'Колдонуучунун аты талап кылынат',
+'loginreqlink' => 'Кирүү',
 'accmailtitle' => 'Сырсөз жөнөтүлдү.',
-'accmailtext' => '"$1" үчүн сырсөз $2 ге жөнөтүлдү.',
+'accmailtext' => ' [[User talk:$1|$1]] үчүн сырсөз $2 ге жөнөтүлдү.',
 'newarticle' => '(Жаңы)',
 'newarticletext' => "Сиз ачыла элек баракка шилтемени бастыңыз.
 Бул баракты ачуу үчүн, ылдый жактагы терезечеге жаза баштаңыз (кошумча маалымат алуу үчүн [[{{MediaWiki:Helppage}}|жардам барагы]] караңыз).
@@ -351,38 +366,48 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'noarticletext' => "Азыр бул баракта текст жок.
 Сиз [[Special:Search/{{PAGENAME}}|ушул аталыш менен баракты изде]] башка барактарда 
 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тийиштүү жазууларды таба аласыз],
-же '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} ошондой аталыш менен барак ача аласыз].'''</span>.",
+же '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} ошондой аталыш менен барак ача аласыз]'''</span>.",
 'noarticletext-nopermission' => 'Азыр бул баракта текст жок.
 Сиз башка барактардан [[Special:Search/{{PAGENAME}}|ушул аталыш менен баракты издөө]] салып,
 же <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тийиштүү жазууларды таба аласыз]</span>.',
+'userpage-userdoesnotexist' => '"$1" Мындай колдонуучу катталган эмес. Ушул баракты түзүүнү же оңдогонду каалганыңыз анык болсун',
 'previewnote' => "'''Бул алдын ала көрүнүшү гана болгонун эсиңизге алыңыз.'''
 Өзгөртүүлөрүңүз сактала элек!",
+'continue-editing' => 'Өзгөртүүүлөрдү улантабыз',
+'session_fail_preview' => 'Кечиресиз, байланыш үзүлгөндүктөн сиздин өзгөртүүлөр сакталган жок. Дагы бир жолу аракет кылып көрүңүз. Болбосо, [[Special:UserLogout|logging out]] аткарып, кайра кирип көрүңүз.',
 'editing' => 'Оңдоо $1',
+'creating' => '$1 түзүлүүдө',
 'editingsection' => '$1 (бөлүмү) оңдолууда',
+'editingcomment' => ' $1 оңдолууда (жаңы бөлүм)',
 'yourtext' => 'Текстиңиз',
 'yourdiff' => 'Айырмалар',
-'templatesused' => 'Бул баракта колдонулган {{PLURAL:$1|шаблон |шаблон}}:',
+'templatesused' => 'Бул баракта колдонулган {{PLURAL:$1|калып |калыптар}}:',
 'template-protected' => '(корголгон)',
 'template-semiprotected' => '(жарым-жартылай корголгон)',
 'hiddencategories' => 'Бул барак {{PLURAL:$1|1 жашыруун категориянын|$1 жашыруун категориялардын}} мүчөсү:',
 'permissionserrorstext-withaction' => 'Сизге $2, төмөнкү {{PLURAL:$1|себеп|себеп}} менен уруксат жок:',
-'recreate-moveddeleted-warn' => "'''Ð\90байлаÑ\82Ñ\83Ñ\83: Сиз мурун өчүрүлгөн баракты кайра баштап жатасыз.'''
+'recreate-moveddeleted-warn' => "'''ЭÑ\81кеÑ\80Ñ\82Ò¯Ò¯: Сиз мурун өчүрүлгөн баракты кайра баштап жатасыз.'''
 
\91Ñ\83л Ð±Ð°Ñ\80акÑ\82Ñ\8b Ð¾Ò£Ð´Ð¾Ð¾Ð½Ñ\83 Ñ\83ланÑ\82Ñ\83Ñ\83га Ñ\8bлайÑ\8bгÑ\8bн Ñ\82екÑ\88еÑ\80иңиз.
-Ыңгайлуулук үчүн өчүрүү жана өзгөртүүлөрдүн тизмеси ылдый жакта берилген:",
\91Ñ\83л Ð±Ð°Ñ\80акÑ\82Ñ\8b ÐºÐ°Ð¹Ñ\80а ÐºÐ°Ð¹Ñ\82аÑ\80Ñ\83Ñ\83 Ñ\87Ñ\8bндап ÐºÐµÑ\80ек Ñ\8dкендигине ÐºÓ©Ð·Ò¯Ò£Ò¯Ð· Ð¶ÐµÑ\82Ñ\81ин.
+Ыңгайлуулук үчүн төмөндө өчүрүүлөрдүн жана өзгөртүүлөрдүн тизмеси берилген:",
 'moveddeleted-notice' => 'Бул барак өчүрүлгөн.
-Маалымат алуу үчүн баракты өчүрүү жана өзгөртүүлөрдүн тизмеси ылдый жакта берилген.',
+Маалымат үчүн төмөндө өчүрүүлөрдүн жана өзгөртүүлөрдүн тизмеси берилген.',
+'edit-conflict' => 'Өзгөртүүлөрдүн конфликти',
+'edit-already-exists' => 'Жаңы барак түзүү мүмкүн эмес. Мындай барак бар',
 
 # Parser/template warnings
-'post-expand-template-inclusion-warning' => "'''Эскертүү:''' Шаблондун өлчөмү ашырып жиберилген.
-Кээ бир шаблондор кошулбайт.",
-'post-expand-template-inclusion-category' => 'Өлчөмү ашырып жиберилген шаблон камтыган барактар',
-'post-expand-template-argument-warning' => "'''Абайлатуу:''' Бул барак жаюуга өтө чоң көлөмдүү эң аз дегенде бир шаблон жүйөсүн камтыйт.
-Ушул сыяктуу жүйөлөр аттатылышты.",
-'post-expand-template-argument-category' => 'Аттатылган шаблон жүйөлөрүн камтыган барактар',
+'post-expand-template-inclusion-warning' => "'''Эскертүү:''' Камтылган калыптардын өлчөмү өтө чоң.
+Кээ бир калыптар камтылбайт.",
+'post-expand-template-inclusion-category' => 'Камтылган калыптардын өлчөмү ашып кеткен барактар',
+'post-expand-template-argument-warning' => "'''Эскертүү:''' Бул барак, жок дегенде, абдан чоң көлөмдүү калыптын бир жүйөсүн камтыйт жана  жайылганда өлчөмү абдан чоң болуп кетет. 
+Ушул сыяктуу жүйөлөр аттатылды.",
+'post-expand-template-argument-category' => 'Калыптардын аттатылган жүйөлөрүн камтыган барактар',
+'parser-template-loop-warning' => 'Калыптарда айланма бар:[[$1]]',
 
 # History pages
 'viewpagelogs' => 'Бул барак үчүн тизмелерди кара',
+'nohistory' => 'Бул барактын өзгөртүүлөр тарыхы жок',
+'currentrev' => 'Акыркы версиясы',
 'currentrev-asof' => '$1 -га соңку версиясы',
 'revisionasof' => '$1 -деги абалы',
 'revision-info' => '$1 карата $2 тарабынан жасалган версия',
@@ -392,18 +417,23 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'cur' => 'учрдг.',
 'next' => 'кийинки',
 'last' => 'соңку',
-'histlegend' => "Айырмалоону тандоо: Салыштырыла турган версияларлын тушундагы тегеректерди белгиле жана \"Enter\"-ди же астындагы нукуурун бас.<br />
+'page_first' => 'биринчи',
+'page_last' => 'акыркы',
+'histlegend' => "Айырмаларды тандоо: Салыштырыла турган версияларлын тушундагы тегеректерди белгилеп туруп \"Enter\"-ди же астындагы баскычты бас.<br />
 Түшүндүрүү: '''({{int:cur}})''' = соңку версиясынан айырма, '''({{int:last}})''' = мурунку версиясынан айырма, '''{{int:minoreditletter}}''' = майда оңдоо.",
 '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' => 'көрсөт',
 'revdel-restore' => 'көрүнүшүн өзгөрт',
 'revdel-restore-deleted' => 'өчүрүлгөн версиялар',
 'revdel-restore-visible' => 'көрүнүүчү версиялары',
@@ -412,7 +442,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'revertmerge' => 'Бөл',
 
 # Diffs
-'history-title' => '"$1" барактын тарыхына сереп',
+'history-title' => '"$1" өзгөрүүлөр тарыхы',
 'lineno' => '$1 -сап:',
 'compareselectedversions' => 'Тандалган версияларды салыштыр',
 'editundo' => 'жокко чыгар',
@@ -433,7 +463,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchprofile-project' => 'Жардам жана Долбоор барактары',
 'searchprofile-images' => 'Мултимедиа',
 'searchprofile-everything' => 'Баары',
-'searchprofile-advanced' => 'Ð\96етилген',
+'searchprofile-advanced' => 'Ð\9aеңейтилген',
 'searchprofile-articles-tooltip' => '$1 -де изде',
 'searchprofile-project-tooltip' => '$1 -де изде',
 'searchprofile-images-tooltip' => 'Файлдарды изде',
@@ -449,12 +479,14 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchrelated' => 'байланыштуу',
 'searchall' => 'баары',
 'showingresultsheader' => "'''$4''' үчүн {{PLURAL:$5|'''$3''' жыйынтыктан '''$1'''-и|'''$1 - $2''' -дан '''$3''' жыйынтык}}",
-'search-nonefound' => 'СÑ\83Ñ\80ооңÑ\83зга Ñ\8bлайÑ\8bк ÐºÐµÐ»Ð³ÐµÐ½ Ð¶Ñ\8bйÑ\8bнÑ\82Ñ\8bк жок.',
+'search-nonefound' => 'Талапка Ñ\82өп Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82 Ñ\82абÑ\8bлган жок.',
 'powersearch' => 'Издөө',
+'powersearch-legend' => 'Кеңиртип изде',
 
 # Preferences page
-'preferences' => 'Түзөө',
+'preferences' => 'ЫңгайлаÑ\88Ñ\82Ñ\8bÑ\80Ñ\83Ñ\83',
 'mypreferences' => 'Ырастоолорум',
+'prefs-edits' => 'Өзгөртүүлөрдүн саны',
 'changepassword' => 'Сырсөздү өзгөртүү',
 'prefs-datetime' => 'Дата жана убакыт',
 'prefs-rc' => 'Соңку өзгөрүүлөр',
@@ -474,6 +506,12 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'prefs-help-email' => 'Электрондук дарек милдетүү эмес, бирок сырсөздү унутуп калсаңыз ал сырсөздү жиберүүгө керек.',
 'prefs-help-email-others' => 'Ошондой эле башкалар сиз менен колдонуучу же талкуу барактарыңыздагы шилтеме аркылуу байланыш түзүүгө уруксат берүүнү тандай аласыз.
 Электрондук дарегиңиз башка кодонуучуларга байланыш түзгөндө көрүнбөйт.',
+'prefs-advancedediting' => 'Кеңейтилген',
+'prefs-advancedrc' => 'Кеңейтилген',
+'prefs-advancedrendering' => 'Кеңейтилген',
+'prefs-advancedsearchoptions' => 'Кеңейтилген',
+'prefs-advancedwatchlist' => 'Кеңейтилген',
+'prefs-displayrc' => 'Көрсөтүүнү тууралоо',
 
 # Groups
 'group' => 'Топ:',
@@ -500,7 +538,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'rcshowhideminor' => 'Майда оңдоолорду $1',
 'rcshowhidebots' => 'ботторду $1',
 'rcshowhideliu' => '$1 катталган колдонуучу',
-'rcshowhideanons' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\8bн ÐºÐ¾Ð»Ð´Ð¾Ð½Ñ\83Ñ\83Ñ\87Ñ\83лаÑ\80дÑ\8b $1',
+'rcshowhideanons' => 'Ð\96аÑ\88Ñ\8bÑ\80Ñ\83Ñ\83н ÐºÐ¾Ð»Ð´Ð¾Ð½Ñ\83Ñ\83Ñ\87Ñ\83лаÑ\80 $1',
 'rcshowhidepatr' => 'Көзөмөл алдындагы оңдоолорду $1',
 'rcshowhidemine' => 'Оңдоолорумду $1',
 'rclinks' => 'Соңку $2 кундө жасалган акыркы $1 өзгөртүүлөрдү көрсөт<br />$3',
@@ -534,6 +572,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'uploadedfiles' => 'Жүктөлгөн файлдар',
 'savefile' => 'Файлды сактап кой',
 'uploadedimage' => '"[[$1]]" жүктөлдү',
+'upload-success-subj' => 'Ийгиликтүү жүктөлдү',
 
 'license' => 'Лицензиялоо:',
 'license-header' => 'Лицензиялоо:',
@@ -556,8 +595,8 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'imagelinks' => 'Файл пайдалануу',
 'linkstoimage' => 'Бул файлга болгон {{PLURAL:$1|шилтеме|$1 шилтеме}} :',
 'nolinkstoimage' => 'Бул файлга шилтеме берген барак жок.',
-'sharedupload-desc-here' => 'Файл $1 -дан Ð¶Ð°Ð½Ð° Ð±Ð°Ñ\88ка Ð´Ð¾Ð»Ð±Ð¾Ð¾Ñ\80лоÑ\80до Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\83Ñ\83га Ð°Ð»Ð° Ð°Ð»Ñ\8bÑ\88аÑ\82.
«Ð»Ð´Ñ\8bй Ð¶Ð°ÐºÑ\82а Ð°Ð½Ñ\8bн [$2 Ñ\84айлдÑ\8b Ñ\81Ñ\8bпаÑ\82Ñ\82оо Ð±Ð°Ñ\80агÑ\8b]нан Ñ\81Ñ\8bпаÑ\82Ñ\82оÑ\81Ñ\83 көрсөтүлгөн.',
+'sharedupload-desc-here' => 'Ð\91Ñ\83л Ñ\84айл $1 -дан  Ð¶Ð°Ð½Ð° Ð±Ð°Ñ\88ка Ð´Ð¾Ð»Ð±Ð¾Ð¾Ñ\80лоÑ\80до Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\8bлÑ\8bÑ\88Ñ\8b Ð¼Ò¯Ð¼ÐºÒ¯Ð½.
¢Ó©Ð¼Ó©Ð½Ð´Ó© Ð°Ð½Ñ\8bн [$2 Ñ\84айлдÑ\8b Ñ\81Ñ\8bпаÑ\82Ñ\82оо Ð±Ð°Ñ\80агÑ\8b]нан Ñ\81Ñ\8bпаÑ\82Ñ\82амаÑ\81Ñ\8b көрсөтүлгөн.',
 
 # Unused templates
 'unusedtemplates' => 'Колдонулбаган нускалар',
@@ -665,8 +704,8 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'undeletecomment' => 'Түшүндүрмө:',
 
 # Namespace form on various pages
-'namespace' => 'Аталыш топтому',
-'invert' => 'ТандалгандÑ\8b кайтар',
+'namespace' => 'Аталыштар мейкиндиги:',
+'invert' => 'Ð\91елгиленгенди кайтар',
 'blanknamespace' => '(Негизги)',
 
 # Contributions
@@ -679,7 +718,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'year' => 'Жылынан (жана андан мурун):',
 
 'sp-contributions-newbies' => 'Жаңы колдонуучулардын гана салымдарын көрсөт',
-'sp-contributions-blocklog' => 'Ñ\82оÑ\81моолоÑ\80дÑ\83н Ñ\82измеÑ\81и',
+'sp-contributions-blocklog' => 'тосмолордун тизмеси',
 'sp-contributions-uploads' => 'жүктөөлөр',
 'sp-contributions-logs' => 'тизме',
 'sp-contributions-talk' => 'талкуу',
@@ -714,7 +753,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'blocklink' => 'тосмоло',
 'unblocklink' => 'тосмолоону алып сал',
 'change-blocklink' => 'тосмолоону өзгөрт',
-'contribslink' => 'салымдар',
+'contribslink' => 'салымдары',
 'blocklogpage' => 'Тосмоолордун тизмеси',
 'blocklogentry' => '[[$1]] тосмолонду, тосмолоо мөөнөтү: $2 $3',
 'block-log-flags-nocreate' => 'Каттоо мүмкүн эмес',
@@ -744,7 +783,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Колдонуучу барагыңыз',
 'tooltip-pt-mytalk' => 'Талкуу барагыңыз',
-'tooltip-pt-preferences' => 'Ырастооңуздар',
+'tooltip-pt-preferences' => 'Ырастоолоруңуз',
 'tooltip-pt-watchlist' => 'Өзгөрүүлөрүн көзөмөлгө алган барактардын тизмеси',
 'tooltip-pt-mycontris' => 'Салымдарыңыздын тизмеси',
 'tooltip-pt-login' => 'Сизге системада катталууга сунуш кылынат, бирок милдеттүү эмес',
@@ -753,7 +792,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-edit' => 'Сиз бул баракты оңдой аласыз. Кичи пейилдикке, сактоодон мурда алдын ала көрсөтүү нукуурун колдонуңуз.',
 'tooltip-ca-addsection' => 'Жаңы бөлүм башта',
 'tooltip-ca-viewsource' => 'Бул барак корголгон.
\91айкоого Ð°Ñ\87Ñ\8bлаÑ\82.',
¡Ð¸Ð· Ð°Ð½Ñ\8bн ÐºÐ°Ð¹Ð½Ð°Ñ\80Ñ\8bн ÐºÓ©Ñ\80Ó© Ð°Ð»Ð°Ñ\81Ñ\8bз',
 'tooltip-ca-history' => 'Бул барактын мурунку оңдоолору',
 'tooltip-ca-protect' => 'Бул баракты корго',
 'tooltip-ca-delete' => 'Бул баракты өчүр',
@@ -761,7 +800,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-watch' => 'Бул баракты көзөмөл тизмеңизге кошуңуз',
 'tooltip-ca-unwatch' => 'Бул баракты көзөмөл тизмеңизден алып салыңыз',
 'tooltip-search' => '{{SITENAME}} изде',
-'tooltip-search-go' => 'УÑ\88Ñ\83л Ð°Ñ\82алÑ\8bÑ\88 Ð¼ÐµÐ½ÐµÐ½ Ð±Ð°Ñ\80ак Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ñ\81о, Ð°Ð»Ð³Ð°',
+'tooltip-search-go' => 'Так Ñ\83Ñ\88Ñ\83ндай Ð°Ñ\82алÑ\8bÑ\88Ñ\82агÑ\8b Ð±Ð°Ñ\80акÑ\82Ñ\8b ÐºÓ©Ñ\80Ñ\81Ó©Ñ\82',
 'tooltip-search-fulltext' => 'Ушул текст менен барактарды изде',
 'tooltip-p-logo' => 'Башбаракка кайрыл',
 'tooltip-n-mainpage' => 'Башбаракка кайрыл',
@@ -785,7 +824,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'tooltip-ca-nstab-special' => 'Бул атайын барак, аны оңдой албайсыз',
 'tooltip-ca-nstab-project' => 'Долбоор барагын кара',
 'tooltip-ca-nstab-image' => 'Файл барагын көрсөт',
-'tooltip-ca-nstab-template' => 'ШаблондÑ\83 көрсөт',
+'tooltip-ca-nstab-template' => 'Ð\9aалÑ\8bпÑ\82Ñ\8b көрсөт',
 'tooltip-ca-nstab-category' => 'Категория барагын көрсөт',
 'tooltip-minoredit' => 'Муну майда оңдоо деп белгиле',
 'tooltip-save' => 'Өзгөртүүлөрдү сактап кой',
@@ -824,10 +863,10 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 
 # Metadata
 'metadata' => 'Метамаалыматтар',
-'metadata-help' => 'Ð\91Ñ\83л Ñ\84айл Ð±Ð°Ð»ÐºÐ¸Ð¼ Ñ\81анаÑ\80ип ÐºÐ°Ð¼ÐµÑ\80адан Ð¶Ðµ Ñ\81каннеÑ\80ден ÐºÐ¾Ñ\88Ñ\83лган ÐºÐ¾Ñ\88Ñ\83мÑ\87а Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82 камтыйт. 
-Эгерде файл баштапкы абалынан соң өзгөртүлсө, анда кээ бир мүнөздөгүчтөрү толук түрдө дал келбеши мүмкүн.',
-'metadata-fields' => 'Төмөндө тизмеленген сүрөт метамаалыматтарынын саптары метамаалыматтардын жадыбалы түрүлгөндө сүрөт барагына кошумчаланат.
-Калгандары сөз байлашуу менен жашырылат.
+'metadata-help' => 'Ð\91Ñ\83л Ñ\84айл Ð°Ð´Ð°Ñ\82Ñ\82а Ñ\81анаÑ\80ип ÐºÐ°Ð¼ÐµÑ\80а Ð¶Ðµ Ñ\81каннеÑ\80 ÐºÐ¾Ñ\88Ñ\83Ñ\83Ñ\87Ñ\83 Ð¼Ð°Ð°Ð»Ñ\8bмаÑ\82Ñ\82аÑ\80дÑ\8b камтыйт. 
+Эгерде файл баштапкы абалынан өзгөртүлсө, анда анын кээ бир сыпаттары толук чагылдырылбашы мүмкүн.',
+'metadata-fields' => 'Төмөндө тизмеленген сүрөт метамаалыматтарынын саптары метамаалыматтардын жадыбалы түрүлүү учурда сүрөт барагына кошумчаланат.
+Калгандары баштапкы абалда (өзгөртүлбөсө) көргөзүлбөйт.
 * make
 * model
 * datetimeoriginal
@@ -870,7 +909,7 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'watchlisttools-raw' => 'Жетиле элек көзөмөл тизмени оңдо',
 
 # Core parser functions
-'duplicate-defaultsort' => '\'\'\'Ð\90байлаÑ\82Ñ\83Ñ\83:\'\'\' "$2" белгиленген ылгоочу ачкыч "$1" мурунку белгиленген ылгоочу ачкычты жокко чыгарат.',
+'duplicate-defaultsort' => '\'\'\'ЭÑ\81кеÑ\80Ñ\82Ò¯Ò¯:\'\'\' "$2" белгиленген ылгоочу ачкыч "$1" мурунку белгиленген ылгоочу ачкычты жокко чыгарат.',
 
 # Special:Version
 'version' => 'Версия',
index cf8af41..3059c11 100644 (file)
@@ -802,7 +802,7 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'revertmerge' => 'Inconfundere',
 
 # Diffs
-'history-title' => 'Historia paginae "$1"',
+'history-title' => '$1: Historia paginae',
 'lineno' => 'Linea $1:',
 'compareselectedversions' => 'Conferre emendationes selectas',
 'showhideselectedversions' => 'Monstrare/celare emendationes selectas',
@@ -1073,7 +1073,7 @@ Si vis id dare, opera tua tibi ascribentur.',
 'nchanges' => '$1 {{PLURAL:$1|mutatio|mutationes}}',
 'recentchanges' => 'Nuper mutata',
 'recentchanges-legend' => 'Indicis paginarum nuper mutatarum praeferentiae',
-'recentchangestext' => 'Inspice mutationes recentes huic vici in hac pagina.',
+'recentchanges-summary' => 'Inspice mutationes recentes huic vici in hac pagina.',
 'recentchanges-feed-description' => 'Nuper mutata Viciae hoc in fluxu observare.',
 'recentchanges-label-newpage' => 'Haec recensio paginam novam creavit',
 'recentchanges-label-minor' => 'Haec est recensio minor',
index d4a7317..fc9b562 100644 (file)
@@ -68,6 +68,9 @@ $namespaceAliases = array(
        'Diskussión_de_Kateggoría' => NS_CATEGORY_TALK,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'UsadoresAktivos' ),
        'Allmessages'               => array( 'TodosLosMessajes' ),
@@ -740,7 +743,7 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
 'nchanges' => '$1 {{PLURAL:$1|trocamiento|trocamientos}}',
 'recentchanges' => 'Trocamientos freskos',
 'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
-'recentchangestext' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
+'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
 'recentchanges-feed-description' => 'Perseguir los trocamientos más nuevos en el viki en este feed.',
 'recentchanges-label-minor' => 'Esta es un trocamiento chiquitico',
 'rcnote' => "Debaxo {{PLURAL:$1|ay '''1''' trocamiento realizado|están los dal cabo '''$1''' trocamientos realizados}} en  {{PLURAL:$2|el dal cabo día|los dal cabo '''$2''' días}}, hasta el $4, $5.",
index 3f0a9ae..7c81684 100644 (file)
@@ -157,7 +157,7 @@ $magicWords = array(
        'namespace'               => array( '1', 'Nummraum', 'NAMENSRAUM', 'NAMESPACE' ),
        'subjectspace'            => array( '1', 'Haaptnummraum', 'HAUPTNAMENSRAUM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'subjectpagename'         => array( '1', 'Haaptsäit', 'HAUPTSEITE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
-       'img_thumbnail'           => array( '1', 'Miniatur', 'miniatur', 'thumbnail', 'thumb' ),
+       'img_thumbnail'           => array( '1', 'Miniatur', 'miniatur', 'mini', 'thumbnail', 'thumb' ),
        'img_right'               => array( '1', 'riets', 'rechts', 'right' ),
        'img_left'                => array( '1', 'lénks', 'links', 'left' ),
        'img_none'                => array( '1', 'ouni', 'ohne', 'none' ),
@@ -166,7 +166,7 @@ $magicWords = array(
        'img_frameless'           => array( '1', 'net_gerummt', 'rahmenlos', 'frameless' ),
        'img_page'                => array( '1', 'Säit=$1', 'Säit_$1', 'seite=$1', 'seite $1', 'page=$1', 'page $1' ),
        'img_border'              => array( '1', 'bord', 'rand', 'border' ),
-       'img_top'                 => array( '1', 'uewen', 'top' ),
+       'img_top'                 => array( '1', 'uewen', 'oben', 'top' ),
        'grammar'                 => array( '0', 'GRAMMAIRE', 'GRAMMATIK:', 'GRAMMAR:' ),
        'plural'                  => array( '0', 'PLURAL', 'PLURAL:' ),
        'formatnum'               => array( '0', 'ZUELEFORMAT', 'ZAHLENFORMAT', 'FORMATNUM' ),
@@ -568,11 +568,11 @@ $2',
 'virus-unknownscanner' => 'onbekannten Antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''Dir sidd elo ofgemellt.'''
+'logouttext' => "'''Dir sidd elo ausgeloggt.'''
 
-Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech [[Special:UserLogin|erëm umellen]].
+Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech [[Special:UserLogin|erëm aloggen]].
 
-Opgepasst: Op verschiddene Säite gesäit et nach esou aus, wéi wann Dir nach ugemellt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
+Opgepasst: Op verschiddene Säite kann et nach esou aus gesinn, wéi wann Dir nach ageloggt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
 'welcomecreation' => '== Wëllkomm, $1! ==
 Äre Kont gouf kreéiert.
 Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
@@ -583,7 +583,7 @@ Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
 'securelogin-stick-https' => 'Nom Umelle mat HTTPS verbonn bleiwen',
 'yourdomainname' => 'Ären Domain',
 'externaldberror' => 'Entweder ass e Feeler bei der externer Authentifizéierung geschitt, oder Dir däerft Ären externe Benotzerkont net aktualiséieren.',
-'login' => 'Umellen',
+'login' => 'Aloggen',
 'nav-login-createaccount' => 'Aloggen / Benotzerkont uleeën',
 'loginprompt' => "Fir sech op {{SITENAME}} aloggen ze kënnen, mussen d'Cookien aktivéiert sinn.",
 'userlogin' => 'Aloggen / Benotzerkont uleeën',
@@ -682,7 +682,7 @@ Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
 'oldpassword' => 'Aalt Passwuert:',
 'newpassword' => 'Neit Passwuert:',
 'retypenew' => 'Neit Passwuert nach eemol antippen:',
-'resetpass_submit' => 'Passwuert aginn an umellen',
+'resetpass_submit' => 'Passwuert aginn an aloggen',
 'resetpass_success' => 'Äert Passwuert gouf geännert!
 Loggt Iech elo an ...',
 'resetpass_forbidden' => 'Passwierder kënnen net geännert ginn.',
@@ -810,7 +810,9 @@ Et ka sinn datt e geännert oder geläscht gouf iwwerdeems wou Dir d'Säit gekuc
 D'Passwuert fir dësen neie Benotzerkont kann op der ''[[Special:ChangePassword|Passwuert ännere]]'' Säit beim Alogge geännert ginn.",
 'newarticle' => '(Nei)',
 'newarticletext' => "Dir hutt op e Link vun enger Säit geklickt, déi et nach net gëtt. Fir déi Säit unzeleeën, gitt w.e.g. Ären Text an déi Këscht hei drënner an (kuckt d'[[{{MediaWiki:Helppage}}|Hëllef Säit]] fir méi Informatiounen). Wann Dir duerch een Iertum heihi komm sidd, da klickt einfach op de Knäppchen '''Zréck''' vun Ärem Browser.",
-'anontalkpagetext' => "---- ''Dëst ass d'Diskussiounssäit fir en anonyme Benotzer deen nach kee Kont opgemaach huet oder en net benotzt. Dowéinst musse mir d'IP Adress benotzen, fir de Benotzer z'identifizéieren. Sou eng IP Adress ka vun e puer Benotzer gedeelt ginn. Wann Dir en anonyme Benotzer sidd an Dir irrelevant Kommentäre krut, [[Special:UserLogin/signup|maacht w.e.g. e Kont op]] oder [[Special:UserLogin|loggt Iech an]], fir weider Verwiesselunge mat anonyme Benotzer ze verhënneren.''",
+'anontalkpagetext' => "---- ''Dëst ass d'Diskussiounssäit fir en anonyme Benotzer deen nach kee Kont opgemaach huet oder en net benotzt. Dowéinst musse mir d'IP Adress benotzen, fir de Benotzer z'identifizéieren.
+Sou eng IP Adress ka vun e puer Benotzer gedeelt ginn.
+Wann Dir en anonyme Benotzer sidd an Dir irrelevant Kommentäre krut, [[Special:UserLogin/signup|maacht w.e.g. e Kont op]] oder [[Special:UserLogin|loggt Iech an]], fir weider Verwiesselunge mat aneren anonyme Benotzer ze verhënneren.''",
 'noarticletext' => 'Dës Säit huet momentan keen Text.
 Dir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel sichen]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an den entspriechende Logbicher nokucken] oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} esou eng Säit uleeën]</span>.',
@@ -1110,9 +1112,9 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
 'mergelogpagetext' => 'Lëscht vun de rezenten Zesummeféierunge vu Versiounsgeschichten.',
 
 # Diffs
-'history-title' => 'Versiounshistorique vun „$1“',
-'difference-title' => 'Ënnerscheed tëschent de Versioune vun "$1"',
-'difference-title-multipage' => 'Ënnerscheed tëschent de Säiten "$1" a(n) "$2"',
+'history-title' => '$1: Historique vun de Versiounen',
+'difference-title' => '$1: Ënnerscheed tëschent de Versiounen',
+'difference-title-multipage' => '$1 a(n) $2: Ënnerscheed tëschent de Säiten',
 'difference-multipage' => '(Ënnerscheed tëschent Säiten)',
 'lineno' => 'Linn $1:',
 'compareselectedversions' => 'Ausgewielte Versioune vergläichen',
@@ -1207,6 +1209,7 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
 'prefs-beta' => 'Beta-Fonctiounen',
 'prefs-datetime' => 'Datum an Auerzäit',
 'prefs-labs' => '"Labs"-Fonctiounen',
+'prefs-user-pages' => 'Benotzersäiten',
 'prefs-personal' => 'Benotzerprofil',
 'prefs-rc' => 'Rezent Ännerungen',
 'prefs-watchlist' => 'Iwwerwaachungslëscht',
@@ -1669,6 +1672,9 @@ Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrat
 'lockmanager-notlocked' => '"$1" konnt net fräigeschalt ginn; $1 ass net gespaart.',
 'lockmanager-fail-closelock' => 'De Spärfichier fir "$1" konnt net zougemaach ginn.',
 'lockmanager-fail-deletelock' => 'De Spärfichier fir "$1" konnt net geläscht ginn.',
+'lockmanager-fail-acquirelock' => '"$1" konnt net gespaart ginn.',
+'lockmanager-fail-openlock' => 'De Spärfichier fir "$1" konnt net opgemaach ginn.',
+'lockmanager-fail-releaselock' => 'D\'Spär fir "$1" konnt net opgehuewe ginn.',
 'lockmanager-fail-db-release' => "D'Spären op der Datebank $1 konnten net fräigeschalt ginn.",
 'lockmanager-fail-svr-release' => "D'Spären um Server $1 konnten net fräigeschalt ginn.",
 
@@ -1725,8 +1731,8 @@ Kuckt w.e.g. no op kee Feeler an der URL ass an op de Site och online ass.',
 'upload-curl-error28' => "D'Eroplueden huet ze laang gedauert (timeout)",
 'upload-curl-error28-text' => "Dëse Site huet ze laang gebraucht fir z'äntwerten. Kuckt w. e. g. no, ob dëse Site online ass, waart een Ament a probéiert et dann nach eng Kéier. Et ka sënnvoll sinn, et nach eng Kéier méi spéit ze versichen.",
 
-'license' => 'Lizenzéiert:',
-'license-header' => 'Lizenzéieren',
+'license' => 'Lizenz',
+'license-header' => 'Lizenz',
 'nolicense' => 'Keng Lizenz ausgewielt',
 'license-nopreview' => '(Kucken ouni ofzespäichere geet net)',
 'upload_source_url' => ' (gëlteg, ëffentlech zougänglech URL)',
@@ -2860,6 +2866,7 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'spambot_username' => 'Botz vum Spam duerch MediaWiki',
 'spam_reverting' => 'Déi lescht Versioun ouni Linken op $1 restauréieren.',
 'spam_blanking' => 'An alle Versioune ware Linken op $1, et ass elo alles gebotzt.',
+'spam_deleting' => 'All Versioune mat Linken op $1 gi geläscht',
 
 # Info page
 'pageinfo-title' => 'Informatioun iwwer "$1"',
@@ -3743,4 +3750,6 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => "D'Spären um Server $1 konnten net ofgefrot ginn.",
 );
index ffced8e..e731e91 100644 (file)
@@ -15,6 +15,7 @@
  * @author Migraghvi
  * @author Namik
  * @author Nemo bis
+ * @author Ole Yves
  * @author Reedy
  * @author Soul Train
  */
@@ -30,17 +31,18 @@ $messages = array(
 'tog-newpageshidepatrolled' => 'ЦIийи ччинрин сиягьда къаравулвал авунвай ччинар чуьнуьхун',
 'tog-extendwatchlist' => 'ЧӀехи сиягь килигунин, кутазвай вири дегишунар, амма са эхирбур туш',
 'tog-usenewrc' => 'ЦIийи дегишвилерин сиягь кардик кутун (JavaScript герекзава)',
-'tog-numberheadings' => 'КЬилин цIарариз автоматдаказ номерар эцигун',
+'tog-numberheadings' => 'Кьилин цӀарариз автоматдаказ номерар эцигун',
 'tog-showtoolbar' => 'Дуьзар хъувунин алатрин кьвати къалура (JavaScript)',
 'tog-editondblclick' => 'Ччинар кьве тIампIуналди дуьзар хъувун (JavaScript герекзава)',
 'tog-editsection' => 'Пай [дуьзар хъувун] патал элячIун къалура',
 'tog-editsectiononrightclick' => 'Пайдин кьилинцIардиз эрчIи патан тIампI авуна пайдин дуьзар хъувуниз мумкинвал гун (JavaScript герекзава)',
-'tog-showtoc' => 'КЪенеавайбурун сиягь къалурун (3-й гзаф кьилинцIарар авай ччинар патал)',
+'tog-showtoc' => 'Къенеавайбурун сиягь къалурун (3-й гзаф кьилинцӀарар авай ччинар патал)',
 'tog-rememberpassword' => 'И браузерда зи логин рикlел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
 'tog-watchcreations' => 'За туькIуьрнавай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchmoves' => 'За тIвар эхцигай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchdeletion' => 'За алуднавай ччинар зи гуьзетунин сиягьдиз алава авун',
+'tog-minordefault' => 'Авайвилелди, вири дуьзар хъувунар гъвечIи дуьзар хъувунар хьиз лишан авун',
 'tog-previewontop' => 'Сифтедин килигун дуьзар хъувундин дакIардин вилик эцига',
 'tog-previewonfirst' => 'Дуьзар хъувундиз эгечIайла сифтедин килигун къалурун',
 'tog-enotifwatchlistpages' => 'Зи гуьзетунин ччин масакIа хьайила заз эмейл ракъура.',
@@ -54,6 +56,7 @@ $messages = array(
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Дуьзар хъувунин чкадин шрифтдин жуьре',
+'editfont-default' => 'Браузердин низамарунрикай шрифт',
 'editfont-monospace' => 'Моногьяркьуьвилер авай шрифт',
 'editfont-sansserif' => 'КЬацI авачир шрифт',
 'editfont-serif' => 'КьацI авай кхьин',
@@ -66,55 +69,55 @@ $messages = array(
 'thursday' => 'Хемис',
 'friday' => 'Жуьмя',
 'saturday' => 'Киш',
-'sun' => 'Гья',
+'sun' => 'Гьяд',
 'mon' => 'Исл',
 'tue' => 'Сал',
 'wed' => 'Aрб',
 'thu' => 'Xем',
 'fri' => 'Жум',
 'sat' => 'Киш',
-'january' => 'гьер',
-'february' => 'эхен',
-'march' => 'ибне',
-'april' => 'нава',
-'may_long' => 'тӀул',
-'june' => 'Ð\9aÑ\8cамÑ\83г',
-'july' => 'БаскIум',
-'august' => 'Ð\9dава',
-'september' => 'Ð\9cаÑ\80а',
-'october' => 'Ð\91аÑ\81кlÑ\83м',
-'november' => 'Цlехуьл',
-'december' => 'Фандукl',
-'january-gen' => 'Ð\93Ñ\8cеÑ\80',
-'february-gen' => 'Эхем',
-'march-gen' => 'Ð\98бне',
-'april-gen' => 'Ð\9dава',
-'may-gen' => 'тӀул',
-'june-gen' => 'Ð\9aÑ\8aамÑ\83г',
-'july-gen' => 'Чиле',
-'august-gen' => 'Ð\9fаÑ\85Ñ\83н',
-'september-gen' => 'Ð\9cаÑ\80а',
-'october-gen' => 'Ð\91аÑ\81кÓ\80Ñ\83м',
-'november-gen' => 'ЦӀехуьл',
-'december-gen' => 'ФaндукӀ',
-'jan' => 'Ð\93Ñ\8cе',
-'feb' => 'Эхе',
-'mar' => 'Ð\98бн',
-'apr' => 'Ð\9dав',
-'may' => 'тӀул',
-'jun' => 'Ð\9aÑ\8aа',
-'jul' => 'Чил',
-'aug' => 'Ð\9fаÑ\85Ñ\83н',
-'sep' => 'Ð\9cаÑ\80',
-'oct' => 'Ð\91аÑ\81',
-'nov' => 'Цlе',
-'dec' => 'Фан',
+'january' => 'гьер (январь)',
+'february' => 'эхен (февраль)',
+'march' => 'ибне (март)',
+'april' => 'нава (апрель)',
+'may_long' => 'тӀул (май)',
+'june' => 'кÑ\8cамÑ\83г (иÑ\8eнÑ\8c)',
+'july' => 'чиле (июль)',
+'august' => 'паÑ\85Ñ\83н (авгÑ\83Ñ\81Ñ\82)',
+'september' => 'маÑ\80а (Ñ\81енÑ\82Ñ\8fбÑ\80Ñ\8c)',
+'october' => 'баÑ\81кÓ\80Ñ\83м (окÑ\82Ñ\8fбÑ\80Ñ\8c)',
+'november' => 'цӀехуьл (ноябрь)',
+'december' => 'фундукӀ (декабрь)',
+'january-gen' => 'гÑ\8cеÑ\80 (Ñ\8fнваÑ\80диз)',
+'february-gen' => 'эхен (февралдиз)',
+'march-gen' => 'ибне (маÑ\80Ñ\82диз)',
+'april-gen' => 'нава (апÑ\80елдиз)',
+'may-gen' => 'тӀул (майдиз)',
+'june-gen' => 'кÑ\8cамÑ\83г (иÑ\8eндиз)',
+'july-gen' => 'чиле (июлдиз)',
+'august-gen' => 'паÑ\85Ñ\83н (авгÑ\83Ñ\81Ñ\82диз)',
+'september-gen' => 'маÑ\80а (Ñ\81енÑ\82Ñ\8fбÑ\80диз)',
+'october-gen' => 'баÑ\81кÓ\80Ñ\83м (окÑ\82Ñ\8fбÑ\80диз)',
+'november-gen' => 'цӀехуьл (ноябрдиз)',
+'december-gen' => 'фундукӀ (декабрдиз)',
+'jan' => 'гÑ\8cеÑ\80 (Ñ\8fнваÑ\80Ñ\8c)',
+'feb' => 'эхен (февраль)',
+'mar' => 'ибне (маÑ\80Ñ\82)',
+'apr' => 'нава (апÑ\80елÑ\8c)',
+'may' => 'тӀул (май)',
+'jun' => 'кÑ\8cамÑ\83г (иÑ\8eнÑ\8c)',
+'jul' => 'чиле (июль)',
+'aug' => 'паÑ\85Ñ\83н (авгÑ\83Ñ\81Ñ\82)',
+'sep' => 'маÑ\80а (Ñ\81енÑ\82Ñ\8fбÑ\80Ñ\8c)',
+'oct' => 'баÑ\81кÓ\80Ñ\83м (окÑ\82Ñ\8fбÑ\80Ñ\8c)',
+'nov' => 'цӀехуьл (ноябрь)',
+'dec' => 'фандукl (декабрь)',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категории}}',
 'category_header' => '"$1" категориядин ччинар',
 'subcategories' => 'агъакатегорияр',
-'category-media-header' => '"$1" категориядин медиа',
+'category-media-header' => '"$1" категоридин медиа',
 'category-empty' => "''Алай чIава и категория ичIи я.\"",
 'hidden-categories' => '{{PLURAL:$1|Чуьнуьхай категория |Чуьнуьхай категорияр }}',
 'hidden-category-category' => 'Чуьнуьхай категорияр',
@@ -172,7 +175,7 @@ $messages = array(
 'returnto' => '$1 ччиниз элкъвена хтун',
 'tagline' => '{{SITENAME}} Cайтдихъай',
 'help' => 'Куьмек',
-'search' => 'Жагъурун',
+'search' => 'Жугъурун',
 'searchbutton' => 'Жагъурун',
 'go' => 'ЭлячIун',
 'searcharticle' => 'ЭлячIун',
@@ -202,7 +205,7 @@ $messages = array(
 'specialpage' => 'Куьмекчи ччин',
 'personaltools' => 'Кьилди вичин алатар',
 'postcomment' => 'ЦIйий пай',
-'articlepage' => 'КЪене авайбурун ччиндиз  килигун',
+'articlepage' => 'Къене авайбурун ччиндиз килигун',
 'talk' => 'Веревирд авун',
 'views' => 'Килигунар',
 'toolbox' => 'Алатрин кьвати',
@@ -239,10 +242,10 @@ $messages = array(
 'helppage' => 'Help:Къене авайбур',
 'mainpage' => 'Кьилин ччин',
 'mainpage-description' => 'Кьилин ччин',
-'policy-url' => 'Project:КЪайдаяр',
+'policy-url' => 'Project:Къайдаяр',
 'portal' => 'КIапIалдин портал',
 'portal-url' => 'Project:КIапIалдин портал',
-'privacy' => 'Чинебанвилин политика',
+'privacy' => 'Чинебанвилин сиясат',
 'privacypage' => 'Project:Чинебанвилин политика',
 
 'badaccess' => 'ГЬатунин гъалатlдин',
@@ -523,7 +526,7 @@ $messages = array(
 'history-title' => '$1  -  масакIавилерин тарих',
 'lineno' => 'ЦIар $1:',
 'compareselectedversions' => 'Хкягъай жуьреяр гекъигун',
-'editundo' => 'Ð\93ьич авун',
+'editundo' => 'гьич авун',
 'diff-multi' => '({{PLURAL:$2|Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
 
 # Search results
@@ -540,7 +543,7 @@ $messages = array(
 '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-legend' => 'Жагъурунин низамарунар',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
@@ -556,7 +559,7 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файлар жугъура',
 'searchprofile-everything-tooltip' => 'Вири ччинра къекъуьгъ (веревирдрин ччинар кваз)',
 'searchprofile-advanced-tooltip' => 'Ганвай тlварарин генгвилера къекъуьгъ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 гаф|$2 гафар}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 гаф|$2 гаф}})',
 'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элементар}} ({{PLURAL:$2|1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1 файл|$3 файлар}})',
 'search-redirect' => '(рахкъурун $1)',
 'search-section' => '(пай $1)',
@@ -639,13 +642,14 @@ $messages = array(
 'timezoneregion-pacific' => 'Секин чIехи гуьл',
 'prefs-files' => 'Шикил',
 'youremail' => 'Электрон почта:',
-'username' => 'Ð\98Ñ\88лемиÑ\88Ñ\87идин Ñ\82lар',
+'username' => 'УÑ\80Ñ\82аÑ\85дин Ñ\82Ó\80вар',
 'uid' => 'Уртах тайин ийидайди:',
 'yourrealname' => 'Xалис тIвар:',
 'yourlanguage' => 'ЧIалар',
+'yournick' => 'ЦӀийи къул:',
 'yourgender' => 'Жинс:',
 'gender-male' => 'итимдин',
-'gender-female' => 'Фамили',
+'gender-female' => 'папаÑ\80ин',
 'email' => 'E-mail',
 'prefs-help-email' => 'Электрон почтунин адрес кхьи  мажбури туш, амма куьне парол рикIелай ракъурдатIа, ам герек жеда.',
 'prefs-help-email-others' => 'Квевай куь уртахдин, ва я куь веревирдрин ччина элячIун къалурна муькуь уртахар галаз электрон почтадин куькмедалди алакъа хуьз жеда.
@@ -710,10 +714,10 @@ $messages = array(
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|масакIавал|масакIавилер}}',
-'recentchanges' => 'Mукьвара хьайи масакIавилер',
+'recentchanges' => 'Mукьвара хьайи масакӀавилер',
 'recentchanges-legend' => 'Цlийи масакIавилерин низамарунар',
 'recentchanges-summary' => 'Викида хьанвай эхиримжи масакIавилер и ччина гуьзетун',
-'recentchanges-feed-description' => 'Ð\98 Ñ\85вала Ð²Ð¸ÐºÐ¸Ð´Ð° Ñ\85Ñ\8cанвай Ñ\8dÑ\85иÑ\80имжи Ð¼Ð°Ñ\81акIавилеÑ\80 Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83н',
+'recentchanges-feed-description' => 'Ð\98 Ñ\85вала Ð²Ð¸ÐºÐ¸Ð´Ð° Ñ\85Ñ\8cанвай Ñ\8dÑ\85иÑ\80имжи Ð¼Ð°Ñ\81акIавилеÑ\80 Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cн',
 'recentchanges-label-newpage' => 'И дуьзар хъувун  цlийи ччин туькlуьрна',
 'recentchanges-label-minor' => 'Им гъвечlи дуьзар хъувун я',
 'recentchanges-label-bot' => 'И дуьзар хъувун ботди авунвайд я',
@@ -745,7 +749,7 @@ $messages = array(
 'recentchangeslinked-toolbox' => 'Галкlанвай масакIавилер',
 'recentchangeslinked-title' => '"$1" галаз галкlанавай масакIавилер',
 'recentchangeslinked-noresult' => 'Ганвай чlава галкlанавай ччинра са масакIавални хьанвайд туш',
-'recentchangeslinked-summary' => 'Ð\98м ÐºÑ\8aалÑ\83Ñ\80ай Ñ\87Ñ\87иниз (ва Ñ\8f ÐºÑ\8aалÑ\83Ñ\80ай ÐºÐ°Ñ\82егоÑ\80иÑ\8fдиз Ð³Ñ\8cаÑ\82завай Ñ\87Ñ\87инÑ\80из) Ñ\8dлÑ\8fÑ\87Iзавай Ñ\87Ñ\87инÑ\80а Ð¼Ñ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи Ð¼Ð°Ñ\81акIавилеÑ\80ин Ñ\81иÑ\8fгÑ\8c Ñ\8f. Ð\9aÑ\83Ñ\8c [[Special:Watchlist| Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8c  ]]диз гьатзавай  ччинар яцlу шрифтдал къалурнава.',
+'recentchangeslinked-summary' => 'Ð\98м ÐºÑ\8aалÑ\83Ñ\80ай Ñ\87Ñ\87иниз (ва Ñ\8f ÐºÑ\8aалÑ\83Ñ\80ай ÐºÐ°Ñ\82егоÑ\80иÑ\8fдиз Ð³Ñ\8cаÑ\82завай Ñ\87Ñ\87инÑ\80из) Ñ\8dлÑ\8fÑ\87Iзавай Ñ\87Ñ\87инÑ\80а Ð¼Ñ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи Ð¼Ð°Ñ\81акIавилеÑ\80ин Ñ\81иÑ\8fгÑ\8c Ñ\8f. Ð\9aÑ\83Ñ\8c [[Special:Watchlist| Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8c ]]диз гьатзавай  ччинар яцlу шрифтдал къалурнава.',
 'recentchangeslinked-page' => 'Ччинин тlвар:',
 'recentchangeslinked-to' => 'Аксина, къалурай ччиниз элячlзавай ччинра масакIавилер къалура',
 
@@ -781,7 +785,7 @@ $messages = array(
 # img_auth script messages
 'img-auth-accessdenied' => 'Гьахьун къадагъа авунва',
 
-'license' => 'Лицензиа авун:',
+'license' => 'Лицензиярун',
 'license-header' => 'Лицинзиярун',
 'nolicense' => 'ЗатIни хкягънавач',
 'license-nopreview' => '(Сифтедин килигун авайд ттуш)',
@@ -903,7 +907,7 @@ $messages = array(
 'allpagessubmit' => 'ЭлячIун',
 
 # Special:Categories
-'categories' => 'Тlаб',
+'categories' => 'Ð\9aаÑ\82егоÑ\80иÑ\8fÑ\80',
 
 # Special:LinkSearch
 'linksearch' => 'КЪецепатан элячIунар жугъурун',
@@ -934,17 +938,17 @@ $messages = array(
 'emailsend' => 'Ракъурун',
 
 # Watchlist
-'watchlist' => 'Ð\97и Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягь',
-'mywatchlist' => 'Ð\97и Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягь',
+'watchlist' => 'Ð\97и Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин сиягь',
+'mywatchlist' => 'Ð\97и Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин сиягь',
 'watchlistfor2' => '$1 $2 патал',
 'addedwatchtext' => "Чар \"[[:\$1]]\" тун хъувунай куьн [[Special:Watchlist|watchlist]].                                                                                                             Къвезмай дегишунар и чарчел ва галкlанавай чарчихъ ихтилатар жеда инна, ахъатдава \"сакlус яцlу''''' инна [[Special:RecentChanges|list of recent changes]] гьам кьизил авун.",
 'removedwatchtext' => 'Чар "[[:$1]]" Идай чlурнай [[Special:Watchlist|ахтармишунин цlарар]].',
-'watch' => 'Ð\93Ñ\83Ñ\8cзеÑ\82Ñ\83н',
+'watch' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cн',
 'watchthispage' => 'Гелкъуьн и хъувун',
-'unwatch' => 'Ð\93Ñ\83Ñ\8cзеÑ\82 Ð¸Ð¹Ð¸мир',
-'watchlist-details' => 'Ð\9aÑ\83Ñ\8c Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8cда {{PLURAL:$1|$1 Ñ\87Ñ\87ин|$1 Ñ\87Ñ\87инаÑ\80}}, веревирдрин ччинар квачиз.',
+'unwatch' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cмир',
+'watchlist-details' => 'Ð\9aÑ\83Ñ\8c Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8cда {{PLURAL:$1|$1 Ñ\87Ñ\87ин|$1 Ñ\87Ñ\87ин}} Ð°Ð²Ð°Ð¹Ð´Ð¸ Ñ\8f, веревирдрин ччинар квачиз.',
 'wlshowlast' => 'Эхиримжи $1 сят $2 югъ $3 къалура',
-'watchlist-options' => 'Ð\93Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдин низамарунар',
+'watchlist-options' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cнин сиягьдин низамарунар',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Килигун...',
@@ -1022,7 +1026,7 @@ $messages = array(
 # Contributions
 'contributions' => 'Уртахди кутур крар',
 'contributions-title' => '$1 уртахдин кутур крар',
-'mycontris' => 'За кутур крар',
+'mycontris' => 'За кутур кар',
 'contribsub2' => '($1)-ин кутур пай  ($2)',
 'uctop' => '(вини кьил)',
 'month' => ' Вацралай (ва адалай вилик)',
@@ -1128,10 +1132,10 @@ $messages = array(
 'import-token-mismatch' => 'Сеансдин  ганайбур квахьнава. Тавакъу ийида, мадни алахъун ая.',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Куь ишлемишзавайдин ччин',
+'tooltip-pt-userpage' => 'Куьн (уртахдин) ччин',
 'tooltip-pt-mytalk' => 'Куь веревирдрин ччин',
 'tooltip-pt-preferences' => 'Куь низамарунар',
-'tooltip-pt-watchlist' => 'Ð\9aÑ\83Ñ\8cне Ð³Ñ\83Ñ\8cзеÑ\82завай ччинрин сиягь',
+'tooltip-pt-watchlist' => 'Ð\9aÑ\83Ñ\8cне Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cзвай ччинрин сиягь',
 'tooltip-pt-mycontris' => 'Куьне авунвай дуьзар хъувунрин сиягь',
 'tooltip-pt-login' => 'Квез гьахьиз теклифзава, анжах им мажбури туш',
 'tooltip-pt-logout' => 'ЭкъечIун',
@@ -1143,19 +1147,19 @@ $messages = array(
 'tooltip-ca-protect' => 'И ччин хуьн',
 'tooltip-ca-delete' => 'И ччин алудун',
 'tooltip-ca-move' => 'Ччиндин тIвар масакIа авун',
-'tooltip-ca-watch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдиз алава авун',
-'tooltip-ca-unwatch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8cдал къахчун',
-'tooltip-search' => 'И гаф жагъурун {{SITENAME}}',
+'tooltip-ca-watch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин сиягьдиз алава авун',
+'tooltip-ca-unwatch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8cдай къахчун',
+'tooltip-search' => '{{SITENAME}} къекъуьн',
 'tooltip-search-go' => 'АватIа, гьа и тIвар авай ччиниз элячIун',
-'tooltip-search-fulltext' => 'Къалурай текст авай ччинар жугъура',
+'tooltip-search-fulltext' => 'Къалурай текст авай ччинар жугъурун',
 'tooltip-p-logo' => 'Кьилин ччиниз элячIун',
-'tooltip-n-mainpage' => 'Ð\9aÑ\8cилин Ñ\87Ñ\87индиз Ñ\8dлÑ\8fÑ\87\83н',
+'tooltip-n-mainpage' => 'Кьилин ччиниз элячIун',
 'tooltip-n-mainpage-description' => 'Кьилин ччиндиз элячIун',
 'tooltip-n-portal' => 'Проектдикай,  квевай вуч йийз алакьда, са вуч ятIани гьинай жугъурда',
 'tooltip-n-currentevents' => 'Алай вакъийрин сиягь',
 'tooltip-n-recentchanges' => 'Викида мукьвара хьайи масакIавилерин сиягь',
 'tooltip-n-randompage' => 'Дуьшуьшдин чин ппарун',
-'tooltip-n-help' => 'Жагъурдай чка',
+'tooltip-n-help' => 'Жагъурун патал чка',
 'tooltip-t-whatlinkshere' => 'Иниз элячIзавай викидин вири  ччинрин сиягь',
 'tooltip-t-recentchangeslinked' => 'И ччиндиз элячIзавай ччинра  мукьвара хьайи масакIавилер',
 'tooltip-feed-rss' => 'RSS  хуьрек и чарчиз',
@@ -1178,7 +1182,7 @@ $messages = array(
 'tooltip-preview' => 'Ччин хуьдалди вилик, сифте килигун кардик кутун тавакъу ийизва',
 'tooltip-diff' => 'Сифте кьилин текстдиз талукь тир куьне авунвай масакIавилер къалурун',
 'tooltip-compareselectedversions' => 'И ччинин кьве хкягъай жуьрейрин арада авай тафаватдиз килигун',
-'tooltip-watch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð³Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдиз алава авун',
+'tooltip-watch' => 'Ð\98 Ñ\87Ñ\87ин ÐºÑ\83Ñ\8c Ð²Ð¸Ð»Ð¸Ð² Ñ\85Ñ\83Ñ\8cнин сиягьдиз алава авун',
 'tooltip-rollback' => '« КЬулухъди чIугун »  и ччиндиз эхиримжи кар кутазвайди патай  авунвай дуьзар хъувунар са т!ампуналди  paxкурзава',
 'tooltip-undo' => '«Гьич авун»  авунвай дуьзар хъувун paxкурзава ва сифтедин килигунин режимда  дуьзар хъувундин форма ахъа йийзва. Им нетижадиз себеб алава йийз мумкинвал гузва',
 'tooltip-summary' => 'Куьруь нетижа гьадрун',
@@ -1256,20 +1260,7 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'limitall' => 'вири',
 
 # action=purge
-'confirm_purge_button' => 'Э(кхьин)
-
-
-
-
-
-
-
-
-
-
-
-
-9',
+'confirm_purge_button' => 'ЭХь',
 'confirm-purge-top' => 'И ччинин кэш алуддани?',
 
 # action=watch/unwatch
@@ -1323,14 +1314,14 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'specialpages' => 'КьетIен  ччинар',
 
 # External image whitelist
-'external_image_whitelist' => ' #И цIар авайд хьиз тур</pre>
-#Агъада вахт акадар тийиз жезвай (гьамиша къайдадалди ) лугьунрин кьатIар эцига (// арада авай кIус).
+'external_image_whitelist' => ' #И цӀар авайд хьиз тур<pre>
+#Агъада вахт акадар тийиз жезвай (гьамиша къайдадалди) лугьунрин кьатӀар эцига (// арада авай кӀус).
 #Ибур кьецепатан суьретрин URL галаз гекъигда.
-#Дуьзкъвезвайбур суьретар хьиз къалурда, муькуьбур суьретриз тухузвай элячIунар хьиз къалурда.
-# "#" галаз эгечIзавай цIарариз къейдериз хьиз килигда.
-#ЦIарар регистрдиз фад кьатIудайбур я.
+#Дуьзкъвезвайбур суьретар хьиз къалурда, муькуьбур суьретриз тухузвай элячӀунар хьиз къалурда.
+#«#» галаз эгечӀзавай цӀарариз къейдериз хьиз килигда.
+#ЦӀарар регистрдиз фад кьатӀудайбур я.
 
-#ЦIарцин винел вири вахт акадар тийиз жезвай лугьунрин кьатIар эцига.И цIар авайд хьиз тур</pre>',
+#ЦӀарцин винел вири вахт акадар тийиз жезвай лугьунрин кьатӀар эцига. И цӀар авайд хьиз тур</pre>',
 
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] куьзунаг:',
index c5f20af..024c56a 100644 (file)
@@ -504,7 +504,7 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|cambia|cambias}}',
 'recentchanges' => 'Cambias resente',
-'recentchangestext' => 'Asi la lista de cambias resente en la vici.',
+'recentchanges-summary' => 'Asi la lista de cambias resente en la vici.',
 'recentchanges-feed-description' => 'Seque la cambias plu resente a la vici en esta flue.',
 'rcnote' => 'Su es {{PLURAL:$1|cambia|cambias}} en la presedente {{PLURAL:$2|dia|dias}}, en $5, $4.',
 'rcnotefrom' => "A su es la cambias de '''$2''' (asta '''$1''' es mostrada).",
index 3eeb620..88b41b4 100644 (file)
@@ -915,7 +915,7 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'nchanges' => '{{PLURAL:$1|Olukyukakyuka|Nkyukakyuka}} $1',
 'recentchanges' => 'Ebyakakyusibwa',
 'recentchanges-legend' => "Awategekerwa endaga y'ebyakakyusibwa",
-'recentchangestext' => "Goberera enkyukakyuka empya ez'oku lupapula luno",
+'recentchanges-summary' => "Goberera enkyukakyuka empya ez'oku lupapula luno",
 'recentchanges-feed-description' => "Kozesa omukutu guno okugoberera enkyukakyuka empya ez'oku wiki",
 'rcnote' => "Wano olaba {{PLURAL:$1|olukyukakyuka '''1''' olukoledwawo|enkyukakyuka '''$1''' ezikoledwawo}} mu {{PLURAL:$2|lunaku olwakayita|naku '''$2''' ezaakayita}}. Bino byategeerese ku ssaawa $5 nga $4.",
 'rclistfrom' => 'Laga enkyukakyuka empya ezikoledwa okuva $1',
index 7555d13..f610349 100644 (file)
@@ -543,6 +543,8 @@ De gegaeve ree is ''$2''.",
 'filereadonlyerror' => '\'t Waar neet meugelik óm \'t bestandj "$1" aan te passe went de bestandjsrepositoir "$2" steit noe op allein-laeze.
 
 d\'n Opgegaeve raej vanne sloetendje admin waar "\'\'$3\'\'".',
+'invalidtitle-knownnamespace' => 'Óngèljige titel mit naamruumdje "$2" en teks "$3"',
+'invalidtitle-unknownnamespace' => 'Óngèljige titel mit ónbekèndj naamruumdenómmer $1 en teks "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Slechte configuratie: onbekenge virusscanner: ''$1''",
@@ -906,6 +908,12 @@ Dees parameters zeen eweggelaote.",
 'parser-template-loop-warning' => "D'r is 'ne krinkloup in sjablone geconstateerd: [[$1]]",
 'parser-template-recursion-depth-warning' => 'De recursiedeepte veur sjablone is euversjrede ($1)',
 'language-converter-depth-warning' => 'De deepdjelimiet veure spraokómzètter is euversjreje ($1)',
+'node-count-exceeded-category' => "Pagina's wo 't maximaal aantal nodes te väöl is",
+'node-count-exceeded-warning' => "Oppe paasj is 't maximaal aantal nodes te väöl",
+'expansion-depth-exceeded-category' => "Pagina's wo de expansiedeepdje te väöl is",
+'expansion-depth-exceeded-warning' => 'De paasj haet te väöl sjablone',
+'parser-unstrip-loop-warning' => 'Unstriplus gevónje',
+'parser-unstrip-recursion-limit' => 'Unstriprecursielimiet te väöl ($1)',
 
 # "Undo" feature
 'undo-success' => "Hiej onger stuit de teks wo in de verangering ongedaon gemaak is. Controleer veur 't opslaon of 't resultaot gewins is.",
@@ -1083,9 +1091,9 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'mergelogpagetext' => "Hiejonger zuut geer 'ne lies van recente samevoeginge van 'ne paginagesjiedenis nao 'ne angere.",
 
 # Diffs
-'history-title' => 'Gesjiedenis van "$1"',
-'difference-title' => 'Versjèl tösje versies van "$1"',
-'difference-title-multipage' => 'Versjèl tösje pagina\'s "$1" en "$2"',
+'history-title' => '$1: bewèrkingseuverzich',
+'difference-title' => '$1 versjèl tösje versies',
+'difference-title-multipage' => "$1 en $2: versjèl tösje pagina's",
 'difference-multipage' => '(Versjil tösje paazjes)',
 'lineno' => 'Tekslien $1:',
 'compareselectedversions' => 'Vergeliek geselecteerde versies',
@@ -1184,6 +1192,7 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'prefs-beta' => 'Bètadeil',
 'prefs-datetime' => 'Datum en tied',
 'prefs-labs' => 'Alfadeil',
+'prefs-user-pages' => "Gebroekerpagina's",
 'prefs-personal' => 'Gebroekersinfo',
 'prefs-rc' => 'Recènte verangeringe en weergaaf van sjtumpkes',
 'prefs-watchlist' => 'Volglies',
@@ -1447,7 +1456,7 @@ Deze informatie is zichbaar veur angere gebroekers.',
 'nchanges' => '$1 {{PLURAL:$1|bewerking|bewerkinge}}',
 'recentchanges' => 'Lètste verangeringe',
 'recentchanges-legend' => 'Opties veur recènte verangeringe',
-'recentchanges-summary' => 'op dees pagina kins doe de recènte verangeringe in deze wiki bekieke.',
+'recentchanges-summary' => 'Volg de recènste bewirkinge op deze wiki op dees pagina.',
 'recentchanges-feed-description' => 'Volg de meis recente bewerkinge in deze wiki via deze feed.',
 'recentchanges-label-newpage' => "Mit dees verangering is 'n nuuj pagina aangemaak",
 'recentchanges-label-minor' => "Dit is 'n klein bewirking",
@@ -1637,14 +1646,15 @@ Gank trök nao t [[Special:Upload/stash/$1|uploadformuleer]] om dit perbleem te
 'backend-fail-writetemp' => "'t Waes neet mäögelik nao 'n tiedelik besjtand te sjrieve.",
 'backend-fail-closetemp' => "'t Waes neet mäögelik 'n tiedelik besjtand te sjlete.",
 'backend-fail-read' => 'Kós bestjand $1 neet laeze.',
-'backend-fail-create' => 'Kós bestjand $1 neet aanmake.',
-'backend-fail-maxsize' => "'t Waar neet meugelik 't bestandj $1 aan te make went 't is grótter es {{PLURAL:$2|eine byte|$2 byte}}.",
+'backend-fail-create' => 'Kós bestandj $1 neet sjrieve.',
+'backend-fail-maxsize' => "'t Waar neet meugelik 't bestandj $1 te besjrieve went 't is grótter es {{PLURAL:$2|eine byte|$2 byte}}.",
 'backend-fail-readonly' => 'Vannen opslaag "$1" kin op dit memènt allein gelaeze waere. De opgegaeve raeje is: "$2"',
 'backend-fail-synced' => '\'t Bestandj "$1" bevindj zich in \'nen ónsamehangendje toestandj inne intern opslaagbackends.',
 'backend-fail-connect' => 'Kós de bestandjsbackend neet verbinje mitte opslaagbackend "$1".',
 'backend-fail-internal' => '\'n Ónbekèndje fout is ópgetaoje innen opslaagbackend "$1".',
 'backend-fail-contenttype' => 'Kós \'t inhawdtype van \'t bestnadj óm es "$1" op te slaon neet bepaole.',
 'backend-fail-batchsize' => 'Reiks van $1 {{PLURAL:$1|bestandjsoperatie|bestandjsoperaties}} in de opslaagbackend; de limiet is $2 {{PLURAL:$2|operatie|operaties}}.',
+'backend-fail-usable' => "Kós 't bestandj $1 neet besjraeve vanwaenge te mèn rèchte of aafwaezige mappe/kóntaeners.",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Kós neet verbinje mit de journaaldatabase veur de opslaagbackend "$1".',
@@ -1962,6 +1972,7 @@ Controleer of se wellich n fout höbs gemaak bie de inveur.',
 'alllogstext' => "Dit is 't gecombineerd logbook ven {{SITENAME}}. De kins ouch 'n bepaald logbook keze, of filtere op gebroekersnaam of  pazjena, beide huidlettergeveulig.",
 'logempty' => "d'r Zeen gein regels in 't logbook die voldaon aan deze criteria.",
 'log-title-wildcard' => "Zeuk pagina's die met deze naam beginne",
+'showhideselectedlogentries' => 'Tuin of verstaek geselecteerdje logbookregels',
 
 # Special:AllPages
 'allpages' => "Alle pagina's",
index 1ccd9ce..1625953 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lumbaart (Lumbaart)
+/** lumbaart (lumbaart)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -739,7 +739,7 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'nchanges' => '$1 {{PLURAL:$1|mudifega|mudifegh}}',
 'recentchanges' => 'Cambiament recent',
 'recentchanges-legend' => 'Upzión ültem mudifegh',
-'recentchangestext' => "In quela pagina chì a gh'è i cambiament püssee recent al cuntegnüü del sit.",
+'recentchanges-summary' => "In quela pagina chì a gh'è i cambiament püssee recent al cuntegnüü del sit.",
 'recentchanges-feed-description' => "Quel feed chì 'l mustra i mudifegh püssee recent ai cuntegnüü de la wiki.",
 'recentchanges-label-newpage' => "Quela mudifega chì l'ha creaa una pagina növa",
 'recentchanges-label-minor' => "Quela chì l'è una mudifega piscinina.",
index 9eb5252..9669b31 100644 (file)
@@ -543,7 +543,7 @@ $messages = array(
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ການປ່ຽນແປງ|ການປ່ຽນແປງ}}',
 'recentchanges' => 'ການດັດແກ້ຫຼ້າສຸດ',
-'recentchangestext' => 'ເບິ່ງ ການປ່ຽນແປງ ຫຼ້າສຸດ ຢູ່ ໜ້າວິກີນີ້.',
+'recentchanges-summary' => 'ເບິ່ງ ການປ່ຽນແປງ ຫຼ້າສຸດ ຢູ່ ໜ້າວິກີນີ້.',
 'recentchanges-feed-description' => 'ນຳເບິ່ງການປ່ຽນແປງຫຼ້າສຸດຢູ່ ວິກິນີ້ ໃນ ຟີດ',
 'rcnote' => "ທາງລຸ່ມ {{PLURAL:$1|ແມ່ນ'''1''' ການປ່ຽນແປງ|ແມ່ນ '''$1''' ການປ່ຽນແປງຫຼ້າສຸດ}} ໃນ {{PLURAL:$2|ມື້|'''$2''' ມື້}}, ເມື່ອ $3.",
 'rclistfrom' => 'ສະແດງ ການປ່ຽນແປງ ເລີ່ມແຕ່  $1',
index 8997ab3..ec52b88 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lithuanian (Lietuvių)
+/** Lithuanian (lietuvių)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -562,8 +562,11 @@ $2',
 'ns-specialprotected' => 'Specialieji puslapiai negali būti redaguojami.',
 'titleprotected' => "[[User:$1|$1]] apsaugojo šį pavadinimą nuo sukūrimo.
 Nurodyta priežastis yra ''$2''.",
-'filereadonlyerror' => 'Neįmanoma pakeisti failo " $1 " nes failų saugykla " $2 " yra nustatyta tik skaitymo režimu.
-Ją užrakinęs administratorius pateikė šį paaiškinimą: " $3 ".',
+'filereadonlyerror' => 'Neįmanoma pakeisti failo "$1" nes failų saugykla "$2" yra nustatyta tik skaitymo režimu.
+
+Ją užrakinęs administratorius pateikė šį paaiškinimą: "$3".',
+'invalidtitle-knownnamespace' => 'Klaidingas pavadinimas vardų erdvėje "$2" ir tekstu "$3"',
+'invalidtitle-unknownnamespace' => 'Klaidingas pavadinimas nežinomoje vardų erdvėje numeriu $1 ir tekstu "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Neleistina konfigūracija: nežinomas virusų skeneris: ''$1''",
@@ -1111,6 +1114,8 @@ Prašome patikrinti sąrašus.',
 
 # Diffs
 'history-title' => '„$1“ versijų istorija',
+'difference-title' => '$1: Skirtumas tarp puslapio versijų',
+'difference-title-multipage' => 'Skirtumas tarp puslapių „$1 ir $2“',
 'difference-multipage' => '(Skirtumai tarp puslapių)',
 'lineno' => 'Eilutė $1:',
 'compareselectedversions' => 'Palyginti pasirinktas versijas',
@@ -1205,6 +1210,7 @@ Prašome patikrinti sąrašus.',
 'prefs-beta' => 'Beta funkcijos',
 'prefs-datetime' => 'Data ir laikas',
 'prefs-labs' => 'Bandomosios funkcijos',
+'prefs-user-pages' => 'Naudotojo puslapiai',
 'prefs-personal' => 'Naudotojo profilis',
 'prefs-rc' => 'Naujausi keitimai',
 'prefs-watchlist' => 'Stebimų sąrašas',
@@ -1849,10 +1855,10 @@ Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.',
 'statistics-pages-desc' => 'Visi puslapiai, tarp jų aptarimo, nukreipimų, ir kiti puslapiai.',
 'statistics-files' => 'Įkelti failai',
 'statistics-edits' => 'Puslapių redagavimų skaičius nuo {{SITENAME}} sukūrimo',
-'statistics-edits-average' => 'Vidutinis redakcijų kiekis puslapiui',
+'statistics-edits-average' => 'Vidutinis puslapių keitimų kiekis',
 'statistics-views-total' => 'Iš viso peržiūrų',
 'statistics-views-total-desc' => 'Neegzistuojančių ir specialiųjų puslapių parodymai neįtraukti',
-'statistics-views-peredit' => 'Peržiūrų skaičius redakcijai',
+'statistics-views-peredit' => 'Peržiūrų skaičius puslapio versijai',
 'statistics-users' => 'Registruotų [[Special:ListUsers|naudotojų]]',
 'statistics-users-active' => 'Aktyvių naudotojų',
 'statistics-users-active-desc' => 'Naudotojai, kurie per {{PLURAL:$1|paskutinę dieną|paskutines $1 dienų}} padarė keitimų',
@@ -2787,7 +2793,7 @@ Išsaugokite jį savo kompiuteryje ir įkelkite jį čia.',
 'tooltip-search' => 'Ieškoti šiame projekte',
 'tooltip-search-go' => 'Eiti į puslapį su tokiu pavadinimu, jei toks yra',
 'tooltip-search-fulltext' => 'Ieškoti puslapių su šiuo tekstu',
-'tooltip-p-logo' => 'Pradinis puslapis',
+'tooltip-p-logo' => 'Eiti į pradinį puslapį',
 'tooltip-n-mainpage' => 'Eiti į pradinį puslapį',
 'tooltip-n-mainpage-description' => 'Eiti į pradinį puslapį',
 'tooltip-n-portal' => 'Apie projektą, ką galima daryti, kur ką rasti',
@@ -2861,6 +2867,7 @@ Leidžia pridėti atmetimo priežastį komentaruose',
 'spambot_username' => 'MediaWiki reklamų šalinimas',
 'spam_reverting' => 'Atkuriama į ankstesnę versiją, neturinčios nuorodų į $1',
 'spam_blanking' => 'Visos versijos turėjo nuorodų į $1, išvaloma',
+'spam_deleting' => 'Visos versijos turėjo nuorodų į $1, ištrinama',
 
 # Info page
 'pageinfo-title' => '„$1“ informacija',
@@ -3701,34 +3708,49 @@ Paveikslėliai yra rodomi pilna raiška, kiti failų tipai paleidžiami tiesiogi
 'newuserlog-byemail' => 'slaptažodis nusiųstas elektroniniu paštu',
 
 # Feedback
+'feedback-bugornote' => 'Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą].
+Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentaras bus įtrauktas į puslapį „[$3 $2]“, kartu su jūsų naudotojo vardu ir jūsų naudojama naršykle.',
 'feedback-subject' => 'Tema:',
 'feedback-message' => 'Pranešimas:',
 'feedback-cancel' => 'Atšaukti',
 'feedback-submit' => 'Siųsti Atsiliepimą',
 'feedback-adding' => 'Pridedamas atsiliepimas į puslapį ...',
+'feedback-error1' => 'Klaida: Neatpažįstamas rezultatas iš API',
 'feedback-error2' => 'Klaida: Redagavimas nepavyko',
+'feedback-error3' => 'Klaida: Jokio atsakymo iš API',
+'feedback-thanks' => 'Ačiū! Jūsų atsiliepimas buvo užregistruotas puslapyje „[$2 $1]“.',
 'feedback-close' => 'Atlikta',
+'feedback-bugcheck' => 'Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].',
+'feedback-bugnew' => 'Patikrinau. Pranešti apie naują klaidą',
 
 # API errors
 'api-error-badaccess-groups' => 'Jums neleidžiama įkelti failus į šią wiki.',
 'api-error-copyuploaddisabled' => 'Siuntimas pagal URL yra išjungtas šiame serveryje.',
 'api-error-duplicate-popup-title' => 'Dubliuoti  {{PLURAL:$1|failą|failus}}',
 'api-error-empty-file' => 'Pateikta failas buvo tuščias.',
+'api-error-emptypage' => 'Kurti naujus, tuščius puslapius neleidžiama.',
+'api-error-fetchfileerror' => 'Vidinė klaida: Kažkas nutiko gaunant failą.',
 'api-error-file-too-large' => 'Failą, kurį pateikėte buvo per didelis.',
 'api-error-filename-tooshort' => 'Failo vardas yra per trumpas.',
 'api-error-filetype-banned' => 'Šis failų tipas yra uždraustas.',
+'api-error-filetype-missing' => 'Failas neturi galūnės.',
+'api-error-hookaborted' => 'Pakeitimą, kurį bandėte atlikti, nutraukė priedas.',
 'api-error-http' => 'Vidinė klaida: nepavyko prisijungti prie serverio.',
 'api-error-illegal-filename' => 'Failo vardas neleidžiamas.',
 'api-error-invalid-file-key' => 'Vidinė klaida: failas nerastas saugykloje.',
+'api-error-missingresult' => 'Vidinė klaida: nepavyko nustatyti, ar pavyko nukopijuoti.',
 'api-error-mustbeloggedin' => 'Jūs turite būti prisijungęs kad galėtumėte įkelti failus.',
 'api-error-mustbeposted' => 'Vidinė klaida: prašymas reikalauja HTTP POST.',
+'api-error-noimageinfo' => 'Įkelti pavyko, bet serveris nepateikė mums jokios informacijos apie failą.',
 'api-error-ok-but-empty' => 'Vidinė klaida: nėra atsakymo iš serverio.',
 'api-error-overwrite' => 'Perrašymas esamą failą neleidžiamas.',
+'api-error-stashfailed' => 'Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.',
+'api-error-timeout' => 'Serveris neatsakė per numatytą laiką.',
 'api-error-unclassified' => 'Įvyko nežinoma klaida',
 'api-error-unknown-code' => 'Nežinoma klaida: " $1 "',
 'api-error-unknown-error' => 'Vidinė klaida: kažkas nutiko bandant įkelti failą.',
 'api-error-unknown-warning' => 'Nežinomas įspėjimas: $1',
-'api-error-unknownerror' => 'Nežinoma klaida: " $1 "',
+'api-error-unknownerror' => 'Nežinoma klaida: "$1"',
 'api-error-uploaddisabled' => 'Įkėlimas išjungtas šioje wiki.',
 'api-error-verification-error' => 'Šis failas gali būti sugadintas arba turi neteisingą papildinį.',
 
index 947bb7e..8f09ec9 100644 (file)
@@ -22,9 +22,9 @@ $messages = array(
 'tog-usenewrc' => 'Tihdanglam thar belhchhan hmang rawh (JavaScript a ngai)',
 'tog-numberheadings' => 'A thupuite amahin nambar inpêktir rawh',
 'tog-showtoolbar' => 'Siamţhatna hmanraw-liang tilang rawh (JavaScript a ngai)',
-'tog-editondblclick' => 'Vawihnih klikin phêk siamţha rawh (JavaScript a ngai)',
+'tog-editondblclick' => 'Hmehphìrin phêk siamţha rawh (JavaScript a ngai)',
 'tog-editsection' => 'Hlawm hrang siamţhatna [siamţhatna] zawmna hmangin awmtir rawh',
-'tog-editsectiononrightclick' => 'Hlawm thupui ding-klik hmangin hlawm siamţhat theihna awmtir rawh (JavaScript a ngai)',
+'tog-editsectiononrightclick' => 'Hlawm thupui ding-hmeh hmangin hlawm siamţhat theihna awmtir rawh (JavaScript a ngai)',
 'tog-showtoc' => 'A chhunga thu awm te tilang rawh (thupui 3 aia tam phêk tan)',
 'tog-rememberpassword' => 'He ka rangpuifannaah hian min hre reng rawh (a rei berah ni $1  {{PLURAL:$1}})',
 'tog-watchcreations' => 'Ka phêk siamte ka ralvèn zing-ah telh rawh',
@@ -35,9 +35,9 @@ $messages = array(
 'tog-previewontop' => 'Siamţhatna bawm hmaah endikna dah rawh',
 'tog-previewonfirst' => 'Siamţhat vawi khatnaah endikna tilang rawh',
 'tog-nocache' => 'Fanna-in phêk a cache tur veng rawh',
-'tog-enotifwatchlistpages' => 'Ka ralvèn zinga phêk pakhat tihdanglam a nih apiangin email min thawn rawh',
-'tog-enotifusertalkpages' => 'Ka hmangtu-sawihona phêk tihdanglam a nihin min email rawh',
-'tog-enotifminoredits' => 'Phêk siamţhat tenauah pawh min email tho rawh',
+'tog-enotifwatchlistpages' => 'Ka ralvèn zinga phêk pakhat tihdanglam a nih apiangin e-lehkha min thawn rawh',
+'tog-enotifusertalkpages' => 'Ka hmangtu-sawihona phêk tihdanglam a nihin e-lehkha min thawn rawh',
+'tog-enotifminoredits' => 'Phêk siamţhat tenauah pawh e-lehkha min thawn tho rawh',
 'tog-enotifrevealaddr' => 'Hriattirna email zingah ka email address pho lang rawh',
 'tog-shownumberswatching' => 'Ralvèngtu zât tilang rawh',
 'tog-oldsig' => 'Khàrna hming hman mék:',
@@ -53,10 +53,10 @@ $messages = array(
 'tog-watchlisthideliu' => 'Ralvèn zing aţang hmangtu inziaklut siamţhat tibo rawh.',
 'tog-watchlisthideanons' => 'Hmangtu hriat lohvina an siamţhat ralvèn zing aţang',
 'tog-watchlisthidepatrolled' => 'Siamţhat viltu nei ralvèn zingah telh suh',
-'tog-ccmeonemails' => 'Hmangtu dang hnena ka email thawn apiang min thawn ve zel rawh',
-'tog-diffonly' => 'Diff hnuaiah phêk chhunga awmte tilang suh',
+'tog-ccmeonemails' => 'Hmangtu dang hnena ka e-lehkha thawn apiang min thawn ve zel rawh',
+'tog-diffonly' => 'Dnglmn hnuaiah phêk chhúng tilang suh',
 'tog-showhiddencats' => 'Pawl thuhrûkho tilang rawh',
-'tog-norollbackdiff' => 'Lumlêt hnuah diff kalkan rawh',
+'tog-norollbackdiff' => 'Lumlêt hnuah dnglmn kalkan rawh',
 
 'underline-always' => 'Ziah/ngei ngei',
 'underline-never' => 'Ngai lo',
@@ -99,7 +99,7 @@ $messages = array(
 'january-gen' => 'Pawlkût thla',
 'february-gen' => 'Ramtuk thla',
 'march-gen' => 'Vau thla',
-'april-gen' => 'Ţau thla',
+'april-gen' => 'au thla',
 'may-gen' => 'Ţomir thla',
 'june-gen' => 'Nikir thla',
 'july-gen' => 'Vawkhniahzawn thla',
@@ -127,7 +127,7 @@ $messages = array(
 'subcategories' => 'Pawlpengte',
 'category-media-header' => '"$1" pawla mediate',
 'category-empty' => '"He pawl hian phêk leh media pakhat mah a nei hrih lo."',
-'hidden-categories' => 'Pawl thuhrûk {{PLURAL:$1||-te}}',
+'hidden-categories' => 'Pawl thuhrûk{{PLURAL:$1||te}}',
 'hidden-category-category' => 'Pawl thuhrûkte',
 'category-subcat-count' => '{{PLURAL:$2|He pawl hian he pawlpeng chauh hi a nei. |He pawl hian heng  {{PLURAL:$1|pawlpéng|pawlpéng $1-te}} hi a nei, avaia  $2  zingah.}}',
 'category-subcat-count-limited' => "He pawl hian  {{PLURAL:$1|hë pawlpéng chauh|$1 hê'ng pawlpéngte}} hi a nei.",
@@ -172,7 +172,7 @@ $messages = array(
 'vector-simplesearch-preference' => 'Sawn awlsam lehzualna rawtna awmtir rawh (Vektawr vun tan chauh)',
 'vector-view-create' => 'Siamna',
 'vector-view-edit' => 'Siamţhatna',
-'vector-view-history' => 'A chanchin enna',
+'vector-view-history' => 'Hunhlui-chanchin',
 'vector-view-view' => 'Chhiarna',
 'vector-view-viewsource' => 'A hnar enna',
 'actions' => 'Thiltih',
@@ -185,16 +185,16 @@ $messages = array(
 'help' => 'Ṭanpuina',
 'search' => 'Zawnna',
 'searchbutton' => 'Zawng rawh le',
-'go' => 'Kal rawh le',
-'searcharticle' => 'Kal rawh le',
+'go' => 'Khai le',
+'searcharticle' => 'Khai le',
 'history' => 'Phêk chanchin',
 'history_short' => 'Chanchin',
 'updatedmarker' => 'ka tlawh hnuhnun ber hnua tihdanglam',
-'printableversion' => 'Nemkai theih',
+'printableversion' => 'Chhụtkài theih',
 'permalink' => 'Hlet hlun',
-'print' => 'Nemkaina',
+'print' => 'Chhụkàina',
 'view' => 'Enna',
-'edit' => 'Siamţhatna',
+'edit' => 'Siamhatna',
 'create' => 'Siamna',
 'editthispage' => 'He phek hi siamţha rawh',
 'create-this-page' => 'He phêk hi siam rawh',
@@ -226,7 +226,7 @@ $messages = array(
 'categorypage' => 'Pawl phêk enna',
 'viewtalkpage' => 'Sawinona en rawh',
 'otherlanguages' => 'Ţawng dangin',
-'redirectedfrom' => '($1 aţanga hruailuh a ni)',
+'redirectedfrom' => '($1 aanga hruailuh a ni)',
 'redirectpagesub' => 'Hruailuhna phêk',
 'lastmodifiedat' => 'Hemi phek hi ni $1,  dar $2 khan siamţhat hnuhnun ber a ni.',
 'viewcount' => 'He phêk hi vawi {{PLURAL:$1|khat|$1}} tlawh a ni tawh.',
@@ -248,7 +248,7 @@ $1',
 'aboutpage' => 'Project:Chungchang',
 'copyright' => 'A chhung thute hi $1 hmanga lakchhawn phal a ni.',
 'copyrightpage' => '{{ns:project}}:Lakchhawn phalphung',
-'currentevents' => 'Chanchin thar',
+'currentevents' => 'Chanchinthar',
 'currentevents-url' => 'Project: Chanchin thar',
 'disclaimers' => 'Intlawhkhalhna',
 'disclaimerpage' => 'Project: Intlawhkhalhna Dan',
@@ -272,7 +272,7 @@ $1',
 [[Special:Version|version page]] en rawh.',
 
 'ok' => 'Aw le',
-'retrievedfrom' => '"$1" aţanga lâk chhuah',
+'retrievedfrom' => '"$1" aanga lâk chhuah',
 'youhavenewmessages' => '($2) $1 i nei.',
 'newmessageslink' => 'thudawn thar',
 'newmessagesdifflink' => 'tihdanglam thar',
@@ -284,8 +284,8 @@ $1',
 'viewsourcelink' => 'a hnar enna',
 'editsectionhint' => 'Hemi thuhlawm hi siamţha rawh le: $1',
 'toc' => 'A chhung thute',
-'showtoc' => 'tihlanna',
-'hidetoc' => 'tihbona',
+'showtoc' => 'pharhna',
+'hidetoc' => 'thlehna',
 'collapsible-collapse' => 'Thlehna',
 'collapsible-expand' => 'Pharhna',
 'thisisdeleted' => '$1 hi en emaw, dah lêt leh emaw i duh em?',
@@ -327,6 +327,12 @@ Vohbik phekte chu hetah hian a en theih [[Special:SpecialPages|{{int:specialpage
 # General errors
 'error' => 'Dik lo',
 'databaseerror' => 'Database dik loh',
+'dberrortext' => 'Zémpui zawhna tih dik loh a awm palh.
+Kháwlthlûakah hrik a awm tihna a ni mai thei.
+Zémpui zawhna hnuhnüng ber chu:
+<blockquote><tt>$1<tt></blockquote>,
+"<<tt>$2</tt>" tih hnathawh chhúng aṭang.
+Zémpuiin dikhlelhna "<tt>$3: $4</tt>" a rawn khawhkïr.',
 'laggedslavemode' => "'''Vaukhanna:''' He phêk hian tun hnaia siam thar a pho lang lo mai thei.",
 'readonly' => 'Database kalh a ni',
 'enterlockreason' => 'I kalhna chhan leh i hawn leh hun tura i rin sawi rawh',
@@ -378,6 +384,8 @@ $2',
 'customjsprotected' => 'Hmangtu dang mimal thil a tel avangin he JavaScript phêk hi siamţhat phalsak i ni lo.',
 'ns-specialprotected' => 'Phêk vohbîkte siam danglam theih a ni lo.',
 'titleprotected' => 'He phêk hi hmangtu [[User:$1|$1]] siam phalsak a ni lo. A chhan hetah: "\'\'$2\'\'" hian pêk a ni.',
+'invalidtitle-knownnamespace' => 'Hming pawm loh hminghmun "$2"-a "$3" tih thu chuang.',
+'invalidtitle-unknownnamespace' => 'Hming pawm loh leh hminghmun zât hriat loh $1-a thu chuang "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Inremdan dikhlel: Hrik thiantu hriat loh: ''$1''",
@@ -394,7 +402,7 @@ I [[Special:Preferences|{{SITENAME}}duhdàn]] siam danglam theihnghilh suh ang c
 'yourname' => 'Hmangtuhming:',
 'yourpassword' => 'Thurûk:',
 'yourpasswordagain' => 'Thurûk ziak nawn leh rawh le:',
-'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.',
+'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}$1) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.',
 'securelogin-stick-https' => 'Luh hnuah HTTPS-ah hian chëng reng rawh.',
 'yourdomainname' => 'I ram:',
 'externaldberror' => 'Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.',
@@ -428,6 +436,7 @@ I thilziah enfiah rawh, a nih loh pawhin [[Special:UserLogin/signup|siangchan th
 'nosuchusershort' => 'Hmangtu hming "$1" a awm lo.
 I thilziah enfiah rawh.',
 'nouserspecified' => 'Hmangtuhming i ziah a ngai.',
+'login-userblocked' => 'Hë hmangtu hi danbeh a ni. Luh phalsak a ni lo.',
 'wrongpassword' => 'Thurûk dik lo.
 Khawngaihin tum nawn leh rawh.',
 'wrongpasswordempty' => 'Thurûk i ziak lo.
@@ -450,9 +459,14 @@ A hnuaia mi eng vang pawh hian e-lehkha thawn a ni lo vang:',
 'invalidemailaddress' => 'A awmphung a dik loh avangin he e-chenhmun hi pawm theih a ni lo.
 E-chenhmun dik tak ziaklût rawh, a nih loh leh thai reh vek rawh.',
 'cannotchangeemail' => 'He wiki-ah hian siangchan e-chenhmun thlâk theih a ni lo.',
+'emaildisabled' => 'Hë rangpuihmun hian e-lehkha a thawn thei lo',
 'accountcreated' => 'Siangchan siamfel a ni ta.',
 'accountcreatedtext' => '$1 tana hmangtu siangchan siamfel a ni ta.',
 'createaccount-title' => '{{SITENAME}} tana siangchan siam',
+'createaccount-text' => 'Tüemawin {{SITENAME}}-ah ($4) i e-chènhmun hmangin "$2" tih hming púin, thurûka "$3" tih hmangin siangchan a lo siam a.
+Thurûk tidanglam tùrin i luh vat a ngái.
+
+Hë siangchan hi siam sual palh a nih chuan hë thuthawn hi i ngaihthah dáwn nia.',
 'usernamehasherror' => 'Hmangtuhmingin bawhtah lem a hmang thiang lo',
 'login-throttled' => 'Tunhnai maiah luh i tum ngun lutuk.
 I tum leh hmain nghâk lawk ang che.',
@@ -559,7 +573,7 @@ I siangchan thurûk hi [[Special:ChangePassword|thurûk tihdanglamna]]-ah i inzi
 Tihsual palh thilthua heta lo lût i nih chuan i rangpuifanna-a '''letna''' fei zawnah hmet rawh.",
 'noarticletext' => 'He phêkah hian thu a la awm hrih lo.
 Phêk dangah [[Special:Search/{{PAGENAME}}| he phêk hming hi i zawng]] thei ang, a nih loh pawhin a laichin 
-<span class="plainlinks">[{{fullurl:{{#Special:Log}} | page={{FULLPAGENAMEE}}}} log dang i zawng thei ang]; a nih loh chuan [{{fullurl:{{FULLPAGENAME}}|action=edit}} he phêk hi i siamţha thei ang] </span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}} | page={{FULLPAGENAMEE}}}} chanchin-ziak dang i zawng thei ang]; a nih loh chuan [{{fullurl:{{FULLPAGENAME}}|action=edit}} he phêk hi i siamţha thei ang] </span>.',
 'noarticletext-nopermission' => 'He phêkah hian thu a la awm hrih lo.
 He phêk hming hi hmun dangah i [[Special:Search/{{PAGENAME}}|zawng]] thei ang, a nih loh pawhin <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}-a a laichin chanchin dang] i zawng thei bawk ang. </span>',
 'userpage-userdoesnotexist' => 'Hmangtu siangchan "$1" hi hriat a ni lo.
@@ -572,6 +586,7 @@ I rawn atan a danbeh chhinchhiahna kan han tarlang a ni e:',
 'note' => "'''Hriat tùr:'''",
 'previewnote' => "'''Heihi endikna chauh a ni tih hrereng ang che.'''
 I tihdanglamna dahţhat a la ni lo!",
+'continue-editing' => 'Siamṭhat chhunzawmna',
 'session_fail_preview_html' => "'''A pawi hlë mai! Ṭhutchhúng chanchin vawnna hloh avangin i siamṭhatna dahṭhat theih a ni lo.'''
 
 ''{{SITENAME}}-in HTML hel a tihzalen avangin hë enlâwkna hi JavaScript beihna laka invèn fimkhur nan thup bo a ni.''
@@ -579,6 +594,7 @@ I tihdanglamna dahţhat a la ni lo!",
 '''Hei hi siamṭhat tumna dànzui pangngai a nih chuan khawngaihin dahṭhat tum nawn leh rawh.'''
 I la dahṭhat theih loh cheu chuan [[Special:UserLogout|chhuah phawt ]] a, luh nawn leh hmang tein han bei vêl chhin lä.",
 'editing' => '$1 i siam(ţha) mék',
+'creating' => '$1 i siam mék',
 'editingsection' => '$1 (hlawm) i siam(ţha) mék',
 'editingcomment' => '$1 (hlawm thar) i siam(ţha) mék',
 'editconflict' => 'Siamţhat inchuh: $1',
@@ -587,8 +603,8 @@ I la dahṭhat theih loh cheu chuan [[Special:UserLogout|chhuah phawt ]] a, luh
 'yourdiff' => 'Danglamnate',
 'protectedpagewarning' => "'''Vaukhanna: Hë phêk hi roreltute chauhvin an siamṭhat theihna tùrin vènhim a ni.'''
 I rawn atan ziaka chanchin dah hnuhnüng ber kan rawn chhawp chhuak e:",
-'semiprotectedpagewarning' => "'''Hriat tùr:''' He phêk hi hmangtu inziaklûtte chauhvin an tihdanglam theihna tùra vènhim a ni.
-I rawn tùrin siamm-danglamna chanchin ziaka kan dahţhat thar ber a hnuaiah khuan kan chhawp e:",
+'semiprotectedpagewarning' => "'''Hriat tùr:''' He phêk hi hmangtu inziaklûtte chauhvin an tihdanglam theih tùra vènhim a ni.
+I ràwn tùrin siam danglamna chanchin ziaka kan dahţhat thạr ber a hnuaiah khuan kan rawn chhawpchhûak e:",
 'templatesused' => 'He phêka {{PLURAL:$1|siamsa hman|siamsa hmante}}',
 'templatesusedpreview' => 'He endiknaa {{PLURAL:$1|Siamsa hman|Siamsa hmante}}:',
 'templatesusedsection' => 'Hemi hlawma  {{PLURAL:$1|Siamsa hman|Siamsa hmante}}',
@@ -607,8 +623,11 @@ He phêk buaipui chhunzawm hi a remchang nge chang lo tih inbihchiang rawh.
 Remchangah he phek paihna leh sawnna chhinchhiahna-ziak rawn chhawp chhuah a ni e:",
 'moveddeleted-notice' => 'He phek hi paih tawh a ni.
 I rawn atan he phek paihna leh sawnna chanchin chhinchhiahna a hnuaiah khuan chhawp chhuah a ni.',
-'log-fulllog' => 'Chanchin chhinchhiah kimchang enna',
+'log-fulllog' => 'Chanchin chhinchhiah kimchang hetah hian a en theih e.',
+'edit-gone-missing' => 'Phêk bithuam theih a ni lo.
+Nuaibo a ni tawh a nih hmèl.',
 'edit-conflict' => 'Siamţhat inchuh buaina.',
+'edit-no-change' => 'Tihdanglam i neih leh tâk loh avangin i siamṭhatna ngaihthah a ni.',
 'edit-already-exists' => 'Phêk thar siam theih a ni lo.
 A awm tawh sa.',
 'defaultmessagetext' => 'Thuthawn tùr ziahsa',
@@ -623,8 +642,9 @@ Heng kawngte hi hmaih mai tur.",
 
 # History pages
 'viewpagelogs' => 'He phêk chanchin hi en rawh',
+'nohistory' => 'Hë phêk siamṭhatna chanchin ziak a awm lo tlat.',
 'currentrev' => 'Ennawnna hnuhnung ber',
-'currentrev-asof' => 'Ni $1-a ennawnna hnuhnung ber',
+'currentrev-asof' => 'Dar $1-a ennawnna hnuhnung ber',
 'revisionasof' => '$1 -a ennawnna zawng',
 'revision-info' => '$1-a $2 ennawnna',
 'previousrevision' => '←Ennawnna hlui zâwk',
@@ -641,9 +661,12 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'history-show-deleted' => 'Nuaibo tawh zawng chauh',
 'histfirst' => 'Hmasa ber',
 'histlast' => 'Hnuhnung ber',
+'historysize' => '({{PLURAL:$1|bait 1 |bait $1}})',
+'historyempty' => '(ruak)',
 
 # Revision feed
 'history-feed-title' => 'Ennawnna chanchin',
+'history-feed-description' => 'Wiki-a hemi phêk ennawnna chanchin',
 'history-feed-item-nocomment' => '$1-in $2-ah',
 
 # Revision deletion
@@ -657,6 +680,13 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'revdel-restore-deleted' => 'ennawnna nuaibo tawhte',
 'revdel-restore-visible' => 'ennawn hmuh theih chin',
 'pagehist' => 'Phêk chanchin',
+'deletedhist' => 'Chanchin nuaibo',
+'revdelete-reasonotherlist' => 'Chhan dang',
+'revdelete-edit-reasonlist' => 'Nuaibona chhante siamṭhatna',
+'revdelete-offender' => 'Ennawntu:',
+
+# Suppression log
+'suppressionlog' => 'Nuaibo chhinchhiahna',
 
 # Merge log
 'revertmerge' => 'Ţhenhranna',
@@ -664,7 +694,7 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 # Diffs
 'history-title' => '"$1" ennawnna chanchin',
 'lineno' => 'Tlar $1:',
-'compareselectedversions' => 'Ennawnna i thlan tâkte khi khaikhin rawh le',
+'compareselectedversions' => 'Ennawnna i thlan tâkte khaikhin rawh le',
 'editundo' => 'tihletna',
 'diff-multi' => '(Hmangtu {{PLURAL:$2|1-in|$2-ten}} a karlaka {{PLURAL:$2|a|an}} ennawnna {{PLURAL:$1|1|$1-te}} tihlan a ni lo)',
 
@@ -677,6 +707,7 @@ 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!'''",
 'searchhelp-url' => 'Help:A chhunga thu awmte',
@@ -744,6 +775,7 @@ Google hmangin i lo zawng hrih thei ang.
 'prefs-beta' => 'Beta hman theihnate',
 'prefs-datetime' => 'Hun leh ni',
 'prefs-labs' => '"Lab" hman theihnate',
+'prefs-user-pages' => 'Hmangtu phêkte',
 'prefs-personal' => 'Hmangtu chanchin tawi',
 'prefs-rc' => 'Tihdanglam thar',
 'prefs-watchlist' => 'Ralvèn',
@@ -836,11 +868,11 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'prefs-signature' => 'Hmingtàr',
 'prefs-dateformat' => 'Hun tarlan dan tùr',
 'prefs-timeoffset' => 'Hun inthlauhna',
-'prefs-advancedediting' => 'Duhthlan sang',
-'prefs-advancedrc' => 'Duhthlan sang',
-'prefs-advancedrendering' => 'Duhthlan sang',
-'prefs-advancedsearchoptions' => 'Duhthlan sang',
-'prefs-advancedwatchlist' => 'Duhthlan sang',
+'prefs-advancedediting' => 'Duhthlan ràiril',
+'prefs-advancedrc' => 'Duhthlan ràiril',
+'prefs-advancedrendering' => 'Duhthlan ràiril',
+'prefs-advancedsearchoptions' => 'Duhthlan ràiril',
+'prefs-advancedwatchlist' => 'Duhthlan ràiril',
 'prefs-displayrc' => 'Duhthlanna tilang rawh',
 'prefs-displaysearchoptions' => 'Duhthlanna tilang rawh',
 'prefs-displaywatchlist' => 'Duhthlanna tilang rawh',
@@ -903,6 +935,7 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'right-move-subpages' => 'Phêkte leh an phêkpéngte sawnna',
 'right-move-rootuserpages' => 'Hmangtu bulte sawnna',
 'right-movefile' => 'Taksa sawnna',
+'right-suppressredirect' => 'Phêk sawna hruailuhna phêk siam lohtírna',
 'right-upload' => 'Taksa hlankaina',
 'right-reupload' => 'Taksa awmsa ziahhnan rawh',
 'right-reupload-own' => 'Mahni hlankai taksa awmsa ziahhnan rawh',
@@ -921,7 +954,7 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'he phêk hi chhiar rawh',
-'action-edit' => 'he phek hi siamţha rawh',
+'action-edit' => 'phek siamṭhat',
 'action-createpage' => 'phêk siam tharna',
 'action-createtalk' => 'sawihona phêk siamna',
 'action-createaccount' => 'he hmangtu siangchan hi siam rawh',
@@ -936,8 +969,10 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'action-writeapi' => 'ziakna WPI hmang rawh',
 'action-delete' => 'he phêk hi paih rawh',
 'action-deleterevision' => 'he ennawnna hi paih rawh',
+'action-deletedhistory' => 'phêk chanchin nuaibo tawh enna',
 'action-browsearchive' => 'phêk nuaibo tawhte zawng rawh',
 'action-undelete' => 'he phêk hi lakir leh rawh',
+'action-suppressionlog' => 'mimal chanchin bîk enna',
 'action-block' => 'he hmangtuina a siam danglam tùr hi däl rawh',
 
 # Recent changes
@@ -946,7 +981,7 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'recentchanges-legend' => 'Tihdanglam thar duhdàn',
 'recentchanges-summary' => 'He phek wiki-a tihdanglamna thar deuh deuhte chhui rawh.',
 'recentchanges-feed-description' => 'He chawm-a wiki tihdanglamna thar deuh deuhte chhui rawh.',
-'recentchanges-label-newpage' => 'He siamţhat hian phêk thar a siam',
+'recentchanges-label-newpage' => 'Hei hi phêk thar siamna a ni.',
 'recentchanges-label-minor' => 'Hei hi siamţhatna tenau a ni',
 'recentchanges-label-bot' => 'He siamţhat hi khawlmi tih a ni',
 'recentchanges-label-unpatrolled' => 'He siamţhat hi viltu la nei lo a ni',
@@ -967,6 +1002,10 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'minoreditletter' => 't',
 'newpageletter' => 'T',
 'boteditletter' => 'k',
+'number_of_watching_users_pageview' => '[$1 hmangtu {{PLURAL:$1||te}} vil mék]',
+'rc_categories' => 'Pawla bithliahna ("|" hmangin kárdan rawh)',
+'rc_categories_any' => 'Väi',
+'rc-change-size-new' => 'Tihdanglam hnuah {{PLURAL:$1|bait|bait}} $1',
 'newsectionsummary' => '/* $1 */ hläwm thar',
 'rc-enhanced-expand' => 'Tilang kim rawh (JavaScript a ngai)',
 'rc-enhanced-hide' => 'Thup ţhenna',
@@ -1024,6 +1063,10 @@ A aia hmuhnawm deuh zâwka i thlìr duh chuan [[Special:NewFiles|taksa hlankai t
 A hming thlâk la bei ţha leh rawh.',
 'filename-toolong' => 'Taksahming 240 bytes aiin a sei tùr a ni lo.',
 'badfilename' => 'Taksahming "$1"-ah thlâk a ni.',
+'filetype-mime-mismatch' => 'Taksa hming zauhna ".$1"-in a taksa MIME chî kan hmuh ($2) a mil lo tlat.',
+'filetype-badmime' => '"$1" ang MIME chî taksa hlànkài phal a ni lo.',
+'filetype-unwanted-type' => "'''\".\$1\"''' hi taksa phal loh chî a ni.
+Taksa phalzáwng{{PLURAL:\$3||te}} chu: \$2.",
 'filetype-missing' => 'Taksain tawpna a nei lo (entirna ".jpg").',
 'empty-file' => 'I taksa thehluh kha a ruak.',
 'file-too-large' => 'A lian leh lutuk.',
@@ -1042,6 +1085,8 @@ he taksa hi $2 lái a ni.',
 'windows-nonascii-filename' => 'Hë wiki hian taksahminga chhinchhiahna bîk tel a pawm thei lo.',
 'savefile' => 'Taksa dahṭhatna',
 'uploadedimage' => 'hlankai: "[[$1]]"',
+'uploadvirus' => 'I taksa hlànkài tumin hrik a päi!
+Chanchin kimchang: $1',
 'upload-source' => 'Hnar taksa',
 'sourcefilename' => 'Hnar taksahming:',
 'sourceurl' => 'Hnar URL:',
@@ -1087,7 +1132,7 @@ Hmangtu azira i thliarhran erawh chuan a hmangtuina a hlankai hnuhnüng ber taks
 
 # File description page
 'file-anchor-link' => 'Taksa',
-'filehist' => 'A chanchin enna',
+'filehist' => 'Hunhlui-chanchin',
 'filehist-help' => 'A hunlaia a lan dan en tùrin a hun/ni-ah hmet rawh.',
 'filehist-deleteall' => 'a vaiin nuaibo rawh',
 'filehist-deleteone' => 'nuaibo rawh',
@@ -1110,6 +1155,7 @@ Zawmtu zawng zawng [[Special:WhatLinksHere/$2|tlarchhuahna hetah hian a awm]] e.
 'nolinkstoimage' => 'He taksa zawmtu/hmanna phêk pakhat mah a awm lo.',
 'morelinkstoimage' => 'Hemi taksa zawmpui dang [[Special:WhatLinksHere/$1|enna}}.',
 'linkstoimage-redirect' => '$1 (taksa hruailuhna) $2',
+'duplicatesoffile' => 'A hnuaia taksa{{PLURAL:$1||te}} khu hë taksa nihpui{{PLURAL:$1||te}} a{{PLURAL:$1||n}} ni ([[Special:FileDuplicateSearch/$2|chanchin kimchang]]):',
 'sharedupload' => 'Hë taksa hi $1-a mi a ni a, hna-hmachhawp dangin a hmang vè mai thei.',
 'sharedupload-desc-there' => 'Hë taksa hi $1-a mi a ni a, hna-hmachhawp dangin a hmang ve mai thei.
 Hriattirna dang chu [$2 taksa sawifiahna phêk]-ah hian i en thei ang.',
@@ -1189,8 +1235,12 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'withoutinterwiki-legend' => 'Thuhmabet',
 'withoutinterwiki-submit' => 'Tihlanna',
 
+'fewestrevisions' => 'Phêk siam danglam hlawh lo zualte',
+
 # Miscellaneous special pages
 'nbytes' => 'Bait {{PLURAL:$1||}} $1',
+'ncategories' => '{{PLURAL:$1|Páwl|Páwl}} $1',
+'nlinks' => '$1 {{PLURAL:$1||}} Zawmna $1',
 'nmembers' => 'A chhungah  {{PLURAL:$1||$1}} a awm.',
 'nrevisions' => 'siamṭhatna $1 {{PLURAL:$1||}}',
 'nviews' => 'vawi $1 {{PLURAL:$1||}} ràwn a ni tawh.',
@@ -1246,7 +1296,7 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 # Book sources
 'booksources' => 'Lehkhabu rawnte',
 'booksources-search-legend' => 'Lehkhabu hnar zingah zawng rawh',
-'booksources-go' => 'Kal rawh le',
+'booksources-go' => 'Khai le',
 
 # Special:Log
 'specialloguserlabel' => 'Buatsaihtu:',
@@ -1267,7 +1317,7 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'allnotinnamespace' => 'Phêk zawng zawng (hminghmun $1-a awm lo)',
 'allpagesprev' => 'Hma',
 'allpagesnext' => 'Dawt',
-'allpagessubmit' => 'Kal rawh le',
+'allpagessubmit' => 'Khai le',
 'allpagesprefix' => 'Hemi thuhmabeta neih zawng hi pholang rawh:',
 'allpagesbadtitle' => 'Phêk hming dik lo emaw ţawng dang/wiki dang thuhmabet a hmang palh a nih hmel.
 Phêk hminga hman awih loh hawrawp a hmang palh a ni mai thei bawk.',
@@ -1338,8 +1388,10 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'emailccsubject' => '$1: $2 hnenah thawn bawk rawh',
 'emailsent' => 'E-lehkha thawn a ni.',
 'emailsenttext' => 'I e-lehkha thawn a ni.',
+'emailuserfooter' => 'Hë e-lehkha hi {{SITENAME}}-a "Hmangtu e-lehkha thawn rawh" tih hmanraw hmanga $1-in $2 a thawn a ni.',
 
 # User Messenger
+'usermessage-summary' => 'Kháwlthuthawn a hnutchhiah e.',
 'usermessage-editor' => 'Thuthawntu khawl',
 
 # Watchlist
@@ -1369,6 +1421,8 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'wlshowlast' => 'Darkar $1 kalta-a tihdanglam tilang rawh , ni $2 kalta-a tihdanglam tilang rawh, $3 tilang rawh',
 'watchlist-options' => 'Ralvèn duhdàn',
 
+'enotif_reset' => 'Phêk zawng zawng tlawh tawh vek angin chhinchhiah rawh.',
+'enotif_newpagetext' => 'Hei hi phêk thar a ni.',
 'enotif_impersonal_salutation' => '{{SITENAME}} hmangtu',
 'changed' => 'tihdanglam a ni ta',
 'created' => 'siam a ni ta',
@@ -1485,6 +1539,7 @@ $2-in a awmphung ngäiah a dahlêt leh.',
 # Namespace form on various pages
 'namespace' => 'Hminghmun:',
 'invert' => 'Thlan lêtna',
+'namespace_association' => 'Hminghmun kaihhnawih',
 'blanknamespace' => '(Phekpui)',
 
 # Contributions
@@ -1492,11 +1547,14 @@ $2-in a awmphung ngäiah a dahlêt leh.',
 'contributions-title' => '$1 kutthawhnate',
 'mycontris' => 'Ka kutthawhnate',
 'contribsub2' => '$1 tan ($2) .',
+'nocontribs' => 'I zawn mil tihdanglamna a awm miah lo a nih hmel.',
 'uctop' => '(chung)',
 'month' => 'Thla (leh a hmalam):',
 'year' => 'Kum (leh a hmalam):',
 
 'sp-contributions-newbies' => 'Siangchan tharte kut-thawhna chauh tilang rawh',
+'sp-contributions-newbies-sub' => 'Siangchan thar tán',
+'sp-contributions-newbies-title' => 'Siangchan thar tána hmangtu kutthawhnate',
 'sp-contributions-blocklog' => 'danbeh chhinchhiahna',
 'sp-contributions-uploads' => 'hlankaite',
 'sp-contributions-logs' => 'chanchin-ziak',
@@ -1593,7 +1651,7 @@ Amah leh amah inluahlantir a theih loh.',
 'allmessagesname' => 'Thuthawn hming',
 'allmessagesdefault' => 'Thuthawn tùr ziahsa',
 'allmessages-language' => 'Ţawng:',
-'allmessages-filter-submit' => 'Kal rawh le',
+'allmessages-filter-submit' => 'Khai le',
 
 # Thumbnails
 'thumbnail-more' => 'Tihlenna',
@@ -1621,7 +1679,9 @@ Khawngaihin i dahţhat/tlangzarh hmain endikna hmehkhep khu hmang ang che (hei h
 A hnar i en thei ang.',
 'tooltip-ca-history' => 'Tunhmaa he phêk ennawnnate',
 'tooltip-ca-protect' => 'He phek hi venghim rawh',
+'tooltip-ca-unprotect' => ' Vènhimphung tihdanglamna',
 'tooltip-ca-delete' => 'He phek hi paih rawh',
+'tooltip-ca-undelete' => 'Hë phêk nuaibo a nih hmaa siamṭhatnate kàitho leh rawh',
 'tooltip-ca-move' => 'He phek hi sawn rawh',
 'tooltip-ca-watch' => 'I ralvèn zingah telh rawh',
 'tooltip-ca-unwatch' => 'He phêk hi i ralvèn aţang paih rawh',
@@ -1644,7 +1704,7 @@ A hnar i en thei ang.',
 'tooltip-t-emailuser' => 'He hmangtu hnenah hian e-lehkha thawn rawh',
 'tooltip-t-upload' => 'Taksa hlankaina',
 'tooltip-t-specialpages' => 'Phek vohbik zawng zawng tlarna',
-'tooltip-t-print' => 'Nemkai theih',
+'tooltip-t-print' => 'Chhụtkài theih',
 'tooltip-t-permalink' => 'He phêk ennawnna zawmna hlun',
 'tooltip-ca-nstab-main' => 'A chhung thu awm ziahna en rawh',
 'tooltip-ca-nstab-user' => 'Hmangtu phêk en rawh',
@@ -1816,7 +1876,7 @@ A bak zawng chu thuhrûk sa vek a ni ang.
 'confirm-unwatch-button' => 'Aw le',
 
 # Multipage image navigation
-'imgmultigo' => 'Kal rawh le!',
+'imgmultigo' => 'Khai le!',
 'imgmultigoto' => 'Phêk $1-ah kal rawh',
 
 # Table pager
index 9a8a4ea..1f6799d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Latvian (Latviešu)
+/** Latvian (latviešu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -667,7 +667,7 @@ Pēdējais bloķēšanas reģistra ieraksts ir apskatāms zemāk:',
 '''Tas vēl nav saglabāts!'''",
 'updated' => '(Atjaunots)',
 'note' => "'''Piezīme: '''",
-'previewnote' => "'''Atceries, ka šis ir tikai pirmskats un vēl nav saglabāts!'''",
+'previewnote' => "'''Atceries, ka šis ir tikai pirmskats un teksts vēl nav saglabāts!'''",
 'session_fail_preview' => "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.
 Lūdzu mēģini vēlreiz.
 Ja tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
@@ -1109,10 +1109,10 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'group-all' => '(visi)',
 
 'group-user-member' => '{{GENDER:$1|lietotājs}}',
-'group-autoconfirmed-member' => 'automātiski apstiprinātais lietotājs',
-'group-bot-member' => 'Bots',
-'group-sysop-member' => 'Administrators',
-'group-bureaucrat-member' => 'Birokrāts',
+'group-autoconfirmed-member' => '{{GENDER:$1|automātiski apstiprināts lietotājs|automātiski apstiprināta lietotāja}}',
+'group-bot-member' => '{{GENDER:$1|bots}}',
+'group-sysop-member' => '{{GENDER:$1|administrators|administratore}}',
+'group-bureaucrat-member' => '{{GENDER:$1|birokrāts|birokrāte}}',
 'group-suppress-member' => 'novērotājs',
 
 'grouppage-user' => '{{ns:project}}:Lietotāji',
@@ -1220,7 +1220,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'nchanges' => '$1 {{PLURAL:$1|izmaiņa|izmaiņas}}',
 'recentchanges' => 'Pēdējās izmaiņas',
 'recentchanges-legend' => 'Pēdējo izmaiņu iespējas',
-'recentchanges-summary' => 'Šajā lapā ir šitajā viki izdarītās pēdējās izmaiņas.',
+'recentchanges-summary' => 'Šajā lapā ir uzskaitītas pēdējās izdarītās izmaiņas.',
 'recentchanges-feed-description' => 'Sekojiet līdzi jaunākajām izmaiņām vikijā izmantojot šo barotni.',
 'recentchanges-label-newpage' => 'Šī ir jaunizveidota lapa',
 'recentchanges-label-minor' => 'Šī ir maznozīmīga izmaiņa',
@@ -1633,7 +1633,7 @@ Katrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirm
 'listusers-editsonly' => 'Rādīt tikai lietotājus, kas ir izdarījuši kādas izmaiņas',
 'listusers-creationsort' => 'Kārtot pēc izveidošanas datuma',
 'usereditcount' => '$1 {{PLURAL:$1|izmaiņa|izmaiņas}}',
-'usercreated' => 'Izveidots $1, $2',
+'usercreated' => '{{GENDER:$3|Izveidoja}} $1 plkst. $2',
 'newpages' => 'Jaunas lapas',
 'newpages-username' => 'Lietotājs:',
 'ancientpages' => 'Vecākās lapas',
index fe7e2e7..f1c695d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Itsmine
+ * @author Justincheng12345
  * @author Omnipaedista
  * @author Shinjiman
  */
@@ -161,6 +162,8 @@ $messages = array(
 'tog-rememberpassword' => '符節通越(達至$1日)',
 'tog-watchcreations' => '哨己撰',
 'tog-watchdefault' => '哨己纂',
+'tog-watchmoves' => '派哨予吾遷之頁',
+'tog-watchdeletion' => '派哨予吾除之頁',
 'tog-minordefault' => '慣為校',
 'tog-previewontop' => '頂草覽',
 'tog-previewonfirst' => '覽首修',
@@ -270,6 +273,7 @@ $messages = array(
 'listingcontinuesabbrev' => '續',
 'index-category' => '已索之頁',
 'noindex-category' => '未索之頁',
+'broken-file-category' => '帶壞檔之頁',
 
 'about' => '述',
 'article' => '文',
@@ -536,6 +540,7 @@ $2',
 'createaccount' => '增簿',
 'gotaccount' => '有簿矣哉?往$1。',
 'gotaccountlink' => '登簿',
+'userlogin-resetlink' => '君忘登簿所需爾?',
 'createaccountmail' => '同郵',
 'createaccountreason' => '因:',
 'badretype' => '符節不合也。',
@@ -709,6 +714,7 @@ $2',
 '''纂文若合,惠再之。如復不成,簿[[Special:UserLogout|重登]]焉。'''",
 'token_suffix_mismatch' => "'''君修見拒,蓋因代理之故,亂事見兮。'''",
 'editing' => '纂$1',
+'creating' => '撰$1',
 'editingsection' => '纂節$1',
 'editingcomment' => '贊$1',
 'editconflict' => '纂沖$1',
@@ -1270,7 +1276,7 @@ $1",
 'nchanges' => '$1易',
 'recentchanges' => '近易',
 'recentchanges-legend' => '近易項',
-'recentchangestext' => '共筆揮新,悉列於此。',
+'recentchanges-summary' => '共筆揮新,悉列於此。',
 'recentchanges-feed-description' => '跟wiki源之近易。',
 'recentchanges-label-newpage' => '此纂開新頁',
 'recentchanges-label-minor' => '此乃細纂',
index a72dd64..e25ebbd 100644 (file)
@@ -1180,7 +1180,7 @@ $3 макссь туфталсь - ''$2''",
 'nchanges' => '$1 {{PLURAL:$1|полафнема|полафнемат}}',
 'recentchanges' => 'Мекольце полафнемат',
 'recentchanges-legend' => 'Мекольце полафнематнень арафнемасна',
-'recentchangestext' => 'Ваномс сяда мекольце Викиса полафнематнень мельге тя лопаса.',
+'recentchanges-summary' => 'Ваномс сяда мекольце Викиса полафнематнень мельге тя лопаса.',
 'recentchanges-feed-description' => 'Ваномс сяда мекольце Викиса полафнематнень мельге тя шудемаса.',
 'rcnote' => "Ала {{PLURAL:$1|мекольце '''1''' полафнема|мекольце '''$1''' полафнемат}} '''$2''' ётай  {{PLURAL:$2|шис|шис}}, $5, $4ста.",
 'rcnotefrom' => "Ала няфтезь полафнематне '''$2'''-ста ('''$1'''-с).",
index 08045b6..56660e9 100644 (file)
@@ -110,7 +110,7 @@ $namespaceAliases = array(
        'Utilisateur' => NS_USER,
        'Discussion_Utilisateur' => NS_USER_TALK,
        'Discussion_$1' => NS_PROJECT_TALK,
-       'Discussion_Image' => NS_IMAGE_TALK,
+       'Discussion_Image' => NS_FILE_TALK,
        'Discussion_MediaWiki' => NS_MEDIAWIKI_TALK,
        'Modèle' => NS_TEMPLATE,
        'Discussion_Modèle' => NS_TEMPLATE_TALK,
@@ -1728,6 +1728,7 @@ Tsindrio eo amin'ny lohan-tsanganana raha hanova ny laharam-pisehoana.",
 'listfiles_search_for' => 'Hitady anarana media :',
 'imgfile' => 'rakitra',
 'listfiles' => "Lisitran'ny rakitra",
+'listfiles_thumb' => 'Sary nakelezina',
 'listfiles_date' => 'Daty',
 'listfiles_name' => 'Anarana',
 'listfiles_user' => 'Mpikambana',
@@ -1868,6 +1869,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
 'nmembers' => '{{PLURAL:$1|mpikambana|mpikambana}} $1',
 'nrevisions' => '{{PLURAL:$1|fanovana|fanovana}} $1',
 'nviews' => '{{PLURAL:}}Tsidika $1',
+'nimagelinks' => "Ampiasain'ny pejy miisa{{PLURAL:}} $1",
+'ntransclusions' => "Ampiasaina eo amin'ny pejy miisa $1 {{PLURAL:}}",
 'specialpage-empty' => 'Tsy misy valiny ho aseho.',
 'lonelypages' => 'Pejy manirery',
 'lonelypagestext' => "Ireo pejy ireo dia tsy voarohy sy tsy ampiasain'ny pejin' ity wiki ity.",
@@ -2283,6 +2286,8 @@ Vakio ny [[Special:Log/delete|laogim-pamafana]] ho an'ny lisitry ny famafana sy
 'undelete-filename-mismatch' => "Tsy afaka averina ny santiônan'ilay rakitra tamin'ny $1 : tsy mifanaraka ny anaran-drakitra.",
 'undelete-bad-store-key' => "Tsy mety averina ny santiônan'ilay rakitra tamin'ny $1 : mbola tsy tao ilay rakitra talohan'ny famafana.",
 'undelete-cleanup-error' => 'Tsy fetezana teo am-pamafana ilay rakitra an-tahiry tsy miasa « $1 ».',
+'undelete-missing-filearchive' => "Tsy afaka atao ny mamerina ilay rakitra tahiry miaraka amin'ny ID $1 satria tsy ao amin'ny banky angona izy io.
+Mety efa naverina angamba izy io.",
 'undelete-error-short' => 'Tsi-fetezana teo am-pamerenana ilay rakitra : $1',
 'undelete-error-long' => 'Nisy tsi-fetezana nitranga teo am-pamerenana ilay rakitra :
 
@@ -2444,6 +2449,8 @@ ny lisitry ny fisakanana sy fandrarana na tanteraka misy ankehitriny.",
 'ipb-otherblocks-header' => '{{PLURAL:$1}}sakana hafa',
 'ipb_cant_unblock' => 'Tsy fetezana : Marik ny fanakanana $1 tsy hita.
 Mety efa natao angamba ny fanalana sakana.',
+'ipb_blocked_as_range' => "Hadisoana : tsy nosakanana manokana ny adiresy IP $1 ka noho izany tsy afaka alàna ny sakany.
+Ao amin'ny laharana $2 izay afaka alàna sakana anefa izy io.",
 'ip_range_invalid' => 'Tsy mety io IP io.',
 'ip_range_toolarge' => 'Ny fanidiana laharana IP ngeza nohonny /$1 dia tsy azo atao.',
 'blockme' => 'Sakano ahy',
@@ -2534,6 +2541,7 @@ mifanaraka amin'ilay anarana vaovao. Azafady mba atambaro izay pejin-dresaka iza
 'movepage-page-exists' => 'Efa misy ny pejy $1 ary tsy afaka soloina ho azy.',
 'movepage-page-moved' => 'Voaova anarana lasa $2 ilay pejy $1.',
 'movepage-page-unmoved' => 'Tsy afaka novaina anarana $2 ilay pejy $1.',
+'movepage-max-pages' => 'Efa tratra ny isam-pejy farafahabetsany izay azo ovaina anarana (pejy $1){{PLURAL:}}, ka tsy ho voaova anarana ho azy intsony ny pejy hafa.',
 'movelogpage' => 'Ny laogim-panisahana',
 'movelogpagetext' => 'Lisitry ny pejy nafindra toerana.',
 'movesubpage' => 'Zana-pejy{{PLURAL:$1||}} $1',
@@ -2554,6 +2562,7 @@ Efa misy ny lahatsoratra hoe "[[:$1]]". Irinao ve ny hamafana azy mba hahafahana
 'immobile-source-page' => 'Tsy azo ovaina anarana ity pejy ity.',
 'immobile-target-page' => "Tsy afaka ovaina anarana makany amin'io lohateny io ilay pejy.",
 'imagenocrossnamespace' => 'Tsy mety ovaina anarana makany amina anaran-tsehatra hafa afatsy rakitra ihany ny rakitra.',
+'nonfile-cannot-move-to-file' => "Tsy afaka manova anaran'ny pejy tsy rakitra any amin'ny anaran-tsehatry ny rakitra.",
 'imagetypemismatch' => "Tsy mifanaraka amin'ny karazany ny fanitaran'ity rakitra ity.",
 'imageinvalidfilename' => 'Diso ny anaran-drakitra tanjona',
 'fix-double-redirects' => "Hanao update ny fihodinana makany amin'ny lohateny fotony",
@@ -2880,6 +2889,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-copyright' => 'Mpanana ilay copyright',
 'exif-exifversion' => 'Santiôna EXIF',
 'exif-flashpixversion' => 'Santiôna FlashPix',
+'exif-colorspace' => 'Valan-doko',
 'exif-pixelydimension' => 'Haavon-tsary ekena',
 'exif-pixelxdimension' => 'Halalan-tsary ekena',
 'exif-usercomment' => 'Diniky ny mpikambana',
@@ -2887,8 +2897,10 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-datetimeoriginal' => 'Daty fangalana niaviana',
 'exif-datetimedigitized' => 'Daty nanaovana numerisation',
 'exif-subsectime' => 'Daty nanovana',
+'exif-exposuretime' => 'Fitaona famakiana',
 'exif-exposuretime-format' => '$1 s ($2 s)',
 'exif-fnumber' => 'Isa F',
+'exif-exposureprogram' => 'Fomba famakiana',
 'exif-isospeedratings' => 'ISO',
 'exif-aperturevalue' => 'Sanasana',
 'exif-lightsource' => 'Loharanon-kazavana',
index a4f0ea0..42ca8c7 100644 (file)
@@ -601,7 +601,7 @@ $messages = array(
 'nchanges' => '$1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
 'recentchanges' => 'Пытартыш тӧрлатымаш-влак',
 'recentchanges-legend' => 'Пытартыш тӧрлатымаш-влакын келыштарымашышт',
-'recentchangestext' => 'Тиде лаштыкыште пытартыш тӧрлатымашым шекланаш.',
+'recentchanges-summary' => 'Тиде лаштыкыште пытартыш тӧрлатымашым шекланаш.',
 'recentchanges-feed-description' => 'Тиде кылыште пытартыш тӧрлатымашым шекланаш.',
 'recentchanges-label-newpage' => 'Тиде тӧрлатымаш дене у лаштыкым ыштеныт',
 'recentchanges-label-minor' => 'Тиде изирак тӧрлатымаш',
index 5efb406..402ae7f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Macedonian (Ð\9cакедонски)
+/** Macedonian (македонски)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -334,7 +334,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Скриј испатролирани уредувања во скорешните промени',
 'tog-newpageshidepatrolled' => 'Скриј испатролирани страници од списокот на нови страници',
 'tog-extendwatchlist' => 'Прошири го список на набљудувања за приказ на сите промени, не само скорешните',
-'tog-usenewrc' => 'Ð\9aоÑ\80иÑ\81Ñ\82и Ð¿Ð¾Ð´Ð¾Ð±Ñ\80ени скорешни промени (бара JavaScript)',
+'tog-usenewrc' => 'Ð\9fÑ\80омени Ð²Ð¾ Ð³Ñ\80Ñ\83пи Ð¿Ð¾ Ñ\81Ñ\82Ñ\80аниÑ\86и Ð²Ð¾ Ñ\81пиÑ\81окоÑ\82 Ð½Ð° скорешни промени (бара JavaScript)',
 'tog-numberheadings' => 'Авто нумерирање на заглавијата',
 'tog-showtoolbar' => 'Прикажи алатник за уредување (JavaScript)',
 'tog-editondblclick' => 'Уредување на страници при двојно кликнување (JavaScript)',
@@ -373,7 +373,7 @@ $messages = array(
 'tog-diffonly' => 'Не ја покажувај содржината на страницата под разликите',
 'tog-showhiddencats' => 'Прикажи скриени категории',
 'tog-noconvertlink' => 'Оневозможи претворање на наслов на врска',
-'tog-norollbackdiff' => 'Ð\98зоÑ\81Ñ\82ави Ñ\98а Ñ\80азликаÑ\82а Ð¿Ð¾ Ð¸Ð·Ð²Ñ\80Ñ\88ено Ð²Ñ\80аÑ\9cање',
+'tog-norollbackdiff' => 'Ð\98зоÑ\81Ñ\82ави Ñ\98а Ñ\80азликаÑ\82а Ð¿Ð¾ Ð¸Ð·Ð²Ñ\80Ñ\88ено Ð¾Ñ\82повикÑ\83вање',
 
 'underline-always' => 'Секогаш',
 'underline-never' => 'Никогаш',
@@ -727,6 +727,8 @@ $2',
 Администраторот што ја заклучи го понуди следново образложение: „''$3''“.",
 'invalidtitle-knownnamespace' => 'Неважечки наслов со именски простор „$2“ и текст „$3“',
 'invalidtitle-unknownnamespace' => 'Неважечки наслов со именски простор бр. $1 и текст „$2“',
+'exception-nologin' => 'Не сте најавени',
+'exception-nologin-text' => 'Оваа страница или постапка бара да сте најавени на викито.',
 
 # Virus scanner
 'virus-badscanner' => "Лоша поставка: непознат проверувач на вируси: ''$1''",
@@ -976,7 +978,7 @@ $2
 
 Вашата IP-адреса е $3, a ID на блокирањеto е $5.
 Ве молиме наведете ги овие подробности доколку реагирате на блокирањето.",
-'blockednoreason' => 'не Ðµ Ð´Ð°Ð´ÐµÐ½Ð¾ Ð¾Ð±Ñ\80азложение',
+'blockednoreason' => 'не Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¿Ñ\80иÑ\87ина',
 'whitelistedittext' => 'Мора да сте $1 за да уредувате страници.',
 'confirmedittext' => 'Морате да ја потврдите вашата е-поштенска адреса пред да уредувате страници.
 Поставете ја и валидирајте ја вашата е-поштенска адреса преку вашите [[Special:Preferences|нагодувања]].',
@@ -1048,7 +1050,7 @@ $2
 'creating' => 'Создавање на $1',
 'editingsection' => 'Уредување на $1 (пасус)',
 'editingcomment' => 'Уредување на $1 (ново заглавие)',
-'editconflict' => 'Ð\9aонÑ\84ликÑ\82ни уредувања: $1',
+'editconflict' => 'СпÑ\80оÑ\82иÑ\81Ñ\82авени уредувања: $1',
 'explainconflict' => "Некој друг ја променил страницата откако почнавте да ја уредувате.
 Горниот дел за текст ја содржи страницата како што сега постои.
 Вашите промени се прикажани во долниот дел.
@@ -1100,7 +1102,7 @@ $2
 'recreate-moveddeleted-warn' => "Внимание: Повторно создавате страница што претходно била бришена.'''
 
 Размислете дали е правилно да продолжите со уредување на оваа страница.
-Подолу е прикажан дневникот на бришења и преместувања на оваа страница за ваш преглед:",
+Подолу е прикажан дневникот на бришења и преместувања на оваа страница:",
 'moveddeleted-notice' => 'Оваа страница била претходно бришена.
 Дневникот на бришења и преместувања за оваа страница е прикажан подолу за ваше дополнително информирање.',
 'log-fulllog' => 'Преглед на целиот дневник',
@@ -1108,7 +1110,7 @@ $2
 Не е дадено никакво образложение.',
 'edit-gone-missing' => 'Не можев да ја подновам страницата.
 Веројатно е избришана.',
-'edit-conflict' => 'Ð\9aонÑ\84ликÑ\82но Ñ\83Ñ\80едÑ\83ваÑ\9aе.',
+'edit-conflict' => 'СпÑ\80оÑ\82иÑ\81Ñ\82авеноÑ\81Ñ\82 Ð²Ð¾ Ñ\83Ñ\80едÑ\83ваÑ\9aеÑ\82о.',
 'edit-no-change' => 'Вашите уредувања беа игнорирани, бидејќи не се направени промени врз текстот.',
 'edit-already-exists' => 'Не може да се создаде нова страница.
 Истата веќе постои.',
@@ -1138,9 +1140,9 @@ $2
 # "Undo" feature
 'undo-success' => 'Уредувањето може да се откаже.
 Ве молиме споредете ги промените со претходната верзија за да проверите дали тоа е сигурно она што сакате да го направите, а потоа зачувајте ги промените за да го завршите откажувањето на претходното уредување.',
-'undo-failure' => 'УÑ\80едÑ\83ваÑ\9aеÑ\82о Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\88е Ð´Ð° Ñ\81е Ð¾Ñ\82каже Ð·Ð°Ñ\80ади Ð´Ñ\80Ñ\83ги ÐºÐ¾Ð½Ñ\84ликÑ\82ни Ñ\83Ñ\80едÑ\83ваÑ\9aа ÐºÐ¾Ð¸ Ð½Ð°Ñ\81Ñ\82анале Ð²Ð¾ Ð¼ÐµÑ\93Ñ\83вÑ\80еме.',
+'undo-failure' => 'УÑ\80едÑ\83ваÑ\9aеÑ\82о Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\88е Ð´Ð° Ñ\81е Ð¾Ñ\82каже Ð·Ð°Ñ\80ади Ð¼ÐµÑ\93Ñ\83вÑ\80емени Ñ\81пÑ\80оÑ\82иÑ\81Ñ\82авени Ñ\83Ñ\80едÑ\83ваÑ\9aа.',
 'undo-norev' => 'Измената не можеше да биде вратена бидејќи не постои или била избришана.',
-'undo-summary' => 'Откажано уредување $1 од ([[Special:Contributions/$2|$2]] | [[Разговор со корисник:$2|Разговор]])',
+'undo-summary' => 'Откажано уредувањето $1 на уредникот [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]])',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Не може да се создаде корисничка сметка',
@@ -1150,7 +1152,7 @@ $2
 
 # History pages
 'viewpagelogs' => 'Преглед на дневници за оваа страница',
-'nohistory' => 'Ð\9dе Ð¿Ð¾Ñ\81Ñ\82ои Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð·Ð° Ð¾Ð²Ð°Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а.',
+'nohistory' => 'СÑ\82Ñ\80аниÑ\86аÑ\82а Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98а Ð½Ð° Ñ\83Ñ\80едÑ\83ваÑ\9aе.',
 'currentrev' => 'Тековна ревизија',
 'currentrev-asof' => 'Последна ревизија од $1',
 'revisionasof' => 'Ревизија од $1',
@@ -1307,9 +1309,9 @@ $1",
 'mergelogpagetext' => 'Следи список на скорешни спојувања на истории на страници.',
 
 # Diffs
-'history-title' => 'Историја на измените на „$1“',
-'difference-title' => 'Разлика помеѓу ревизиите на „$1“',
-'difference-title-multipage' => 'Разлика помеѓу страниците „$1“ и „$2“',
+'history-title' => '$1: Историја на измените',
+'difference-title' => '$1: Разлика помеѓу ревизиите',
+'difference-title-multipage' => '$1 и $2: Разлика помеѓу страниците',
 'difference-multipage' => '(Разлики помеѓу страници)',
 'lineno' => 'Ред $1:',
 'compareselectedversions' => 'Спореди избрани ревизии',
@@ -1399,7 +1401,7 @@ $1",
 'mypreferences' => 'мои нагодувања',
 'prefs-edits' => 'Број на уредувања:',
 'prefsnologin' => 'Не сте најавени',
-'prefsnologintext' => 'Мора да сте <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} најавени]</span> за промена на вашите кориснички нагодувања.',
+'prefsnologintext' => 'Мора да бидете <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} најавени]</span> за да ги менувате вашите кориснички нагодувања.',
 'changepassword' => 'Смени лозинка',
 'prefs-skin' => 'Руво',
 'skin-preview' => 'Преглед',
@@ -1407,6 +1409,7 @@ $1",
 'prefs-beta' => 'Бета-можности',
 'prefs-datetime' => 'Датум и време',
 'prefs-labs' => 'Експериментални можности',
+'prefs-user-pages' => 'Кориснички страници',
 'prefs-personal' => 'Кориснички профил',
 'prefs-rc' => 'Скорешни промени',
 'prefs-watchlist' => 'Список на набљудувања',
@@ -1466,7 +1469,7 @@ $1",
 'prefs-custom-css' => 'Посебно CSS',
 'prefs-custom-js' => 'Посебно JS',
 'prefs-common-css-js' => 'Заеднички CSS/JS за сите изгледи:',
-'prefs-reset-intro' => 'Може да ја користите оваа страница за враќање на вашите нагодувања на основно-зададените нагодувања на викито. Оваа не може да се врати.',
+'prefs-reset-intro' => 'Може да ја користите оваа страница за враќање на вашите нагодувања на основно-зададените нагодувања на викито. Ова дејство е неповратно.',
 'prefs-emailconfirm-label' => 'Потврда на е-пошта:',
 'prefs-textboxsize' => 'Големина на полето за уредување',
 'youremail' => 'Е-пошта:',
@@ -1592,7 +1595,7 @@ $1",
 'right-deletedtext' => 'Прегледување на избришан текст и промени помеѓу избришани ревизии',
 'right-browsearchive' => 'Пребарување на избришани страници',
 'right-undelete' => 'Обновување избришана страница',
-'right-suppressrevision' => 'Ð\9fÑ\80егледÑ\83ваÑ\9aе Ð¸ Ð²Ñ\80аÑ\9cаÑ\9aе Ð½Ð° Ñ\80евизии Ñ\81окÑ\80иени Ð¾Ð´ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80и',
+'right-suppressrevision' => 'Прегледување и враќање на ревизии скриени од администратори',
 'right-suppressionlog' => 'Гледање на приватни дневници',
 'right-block' => 'Оневозможување на останати корисници да уредуваат',
 'right-blockemail' => 'Оневозможување корисници да праќаат е-пошта',
@@ -1606,7 +1609,7 @@ $1",
 'right-editusercssjs' => 'Уредување на CSS и JS податотеки на други корисници',
 'right-editusercss' => 'Уредување на CSS податотеки на други корисници',
 'right-edituserjs' => 'Уредување на JS податотеки на други корисници',
-'right-rollback' => 'Брзо отстранување на уредувањата на последниот корисник кој уредувал одредена страница',
+'right-rollback' => 'Брзо отповикување на уредувањата на последниот корисник што уредувал одредена страница',
 'right-markbotedits' => 'Означување на вратени уредувања како ботовски уредувања',
 'right-noratelimit' => 'Без временски ограничувања на уредување',
 'right-import' => 'Увезување страници од други викија',
@@ -1655,7 +1658,7 @@ $1",
 'action-suppressionlog' => 'преглед на овој приватен дневник',
 'action-block' => 'оневозможи го овој корисник да уредува',
 'action-protect' => 'измени го степенот на заштита на оваа страница',
-'action-rollback' => 'бÑ\80зо Ð²Ñ\80аÑ\9cање на измени направени од последниот уредник на страницата',
+'action-rollback' => 'бÑ\80зо Ð¾Ñ\82повикÑ\83вање на измени направени од последниот уредник на страницата',
 'action-import' => 'увези ја оваа страница од друго вики',
 'action-importupload' => 'увези ја оваа страница од подигната податотека',
 'action-patrol' => 'означи ги уредувањата на другите како проверени',
@@ -1674,7 +1677,7 @@ $1",
 'recentchanges-summary' => 'На оваа страница ги следите скорешните промени на викито.',
 'recentchanges-feed-description' => 'Следење на најскорешните промени на викито во овие емитувања.',
 'recentchanges-label-newpage' => 'Ова уредување создаде нова страница',
-'recentchanges-label-minor' => 'Ð\9eва Ðµ Ñ\81иÑ\82но Ñ\83Ñ\80едÑ\83ваÑ\9aе',
+'recentchanges-label-minor' => 'Ð\9eва Ðµ Ñ\81иÑ\82на Ð¿Ñ\80омена',
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
 'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не било патролирано',
 'rcnote' => "Подолу {{PLURAL:$1|е прикажана '''1''' промена|се прикажани последните '''$1''' промени}} {{PLURAL:$2|за денес|во последниве '''$2''' дена}}, заклучно со $5, $4.",
@@ -1776,7 +1779,7 @@ $1",
 'tmp-create-error' => 'Не можев да создадам привремена податотека.',
 'tmp-write-error' => 'Грешка при запис на привремената податотека.',
 'large-file' => 'Се препорачува податотеките да не бидат поголеми од $1; оваа податотека е $2.',
-'largefileserver' => 'Ð\93олеминаÑ\82а Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82екаÑ\82а Ðµ Ð¿Ð¾Ð³Ð¾Ð»ÐµÐ¼Ð° Ð¾Ð´ Ð¼Ð°ÐºÑ\81имално Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð°Ñ\82а Ð³Ð¾Ð»ÐµÐ¼Ð¸Ð½Ð°.',
+'largefileserver' => 'Ð\93олеминаÑ\82а Ð½Ð° Ð¾Ð²Ð°Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ðµ Ð¿Ð¾Ð³Ð¾Ð»ÐµÐ¼Ð° Ð¾Ð´ Ð¼Ð°ÐºÑ\81имално Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð°Ñ\82а Ð³Ð¾Ð»ÐµÐ¼Ð¸Ð½Ð° Ð¾Ð´ Ñ\81еÑ\80веÑ\80оÑ\82.',
 'emptyfile' => 'Податотеката што ја подигнавте изгледа дека е празна.
 Ова може да е поради грешка во името на податотеката.
 Ве молиме проверете дали навистина сакате да ја подигнете оваа податотека.',
@@ -1969,7 +1972,7 @@ $1',
 'nolicense' => 'Нема',
 'license-nopreview' => '(Прегледот не е достапен)',
 'upload_source_url' => ' (важечка, јавно достапна URL-адреса)',
-'upload_source_file' => '(податотека на вашиот сметач)',
+'upload_source_file' => '(податотека на вашиот компјутер)',
 
 # Special:ListFiles
 'listfiles-summary' => 'Оваа специјална страница ги прикажува сите подигнати податотеки.
@@ -2219,6 +2222,7 @@ $1',
 Можете да го ограничите прикажаното избирајќи тип на дневник, корисничко име (разликува големи и мали букви), или страница (разликува големи и мали букви).',
 'logempty' => 'Нема соодветни записи во дневникот.',
 'log-title-wildcard' => 'Пребарај наслови кои почнуваат со овој текст',
+'showhideselectedlogentries' => 'Прикажи/скриј одбрани записи',
 
 # Special:AllPages
 'allpages' => 'Сите страници',
@@ -2452,16 +2456,16 @@ $UNWATCHURL
 продолжете доколку сте сигруни дека треба тоа да го сторите.',
 
 # Rollback
-'rollback' => 'Ð\92Ñ\80аÑ\82и промени',
-'rollback_short' => 'Ð\92Ñ\80аÑ\82и',
-'rollbacklink' => 'Ð\92Ñ\80аÑ\82и',
-'rollbackfailed' => 'Ð\9dеÑ\83Ñ\81пеÑ\88но Ð²Ñ\80аÑ\9cаÑ\9aе',
-'cantrollback' => 'УÑ\80едÑ\83ваÑ\9aеÑ\82о Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð²Ñ\80аÑ\82и.
+'rollback' => 'Ð\9eÑ\82повикаÑ\98 промени',
+'rollback_short' => 'Ð\9eÑ\82повикаÑ\98',
+'rollbacklink' => 'оÑ\82повикаÑ\98',
+'rollbackfailed' => 'Ð\9eÑ\82повикÑ\83ваÑ\9aеÑ\82о Ð½Ðµ Ñ\83Ñ\81пеа',
+'cantrollback' => 'УÑ\80едÑ\83ваÑ\9aеÑ\82о Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\82повика.
 Последниот уредник е воедно и единствениот автор на страницата.',
-'alreadyrolled' => 'Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð²Ñ\80аÑ\82и Ð¿Ð¾Ñ\81ледноÑ\82о Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð¾Ð´ [[:$1]] Ð½Ð° [[User:$2|$2]] ([[User talk:$2|Разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
-некој друг веќе ја уредил или ги вратил промените на страницата.
+'alreadyrolled' => 'Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¾Ñ\82повика Ð¿Ð¾Ñ\81ледноÑ\82о Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а â\80\9e[[:$1]]â\80\9c Ð¸Ð·Ð²Ñ\80Ñ\88ено Ð¾Ð´  [[User:$2|$2]] ([[User talk:$2|Ñ\80азговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+некој друг веќе ја изменил или отповикал страницата.
 
\9fоÑ\81ледноÑ\82о Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð±ÐµÑ\88е Ð½Ð° [[User:$3|$3]] ([[User talk:$3|Разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
\9fоÑ\81ледноÑ\82о Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð³Ð¾ Ð¸Ð·Ð²Ñ\80Ñ\88и [[User:$3|$3]] ([[User talk:$3|Ñ\80азговор]]{{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]]',
@@ -2548,9 +2552,9 @@ $UNWATCHURL
 'viewdeletedpage' => 'Прегледај ги избришаните страници',
 'undeletepagetext' => '{{PLURAL:$1|Следната страница била избришана но сè уште е во архивот и може да биде вратена.|Следните $1 страници биле избришани но сè уште се во архивот и можат да бидат вратени.}}
 Архивот може периодично да се чисти.',
-'undelete-fieldset-title' => 'Ð\9eбнови ревизии',
-'undeleteextrahelp' => "За да вратите целосна историја на една страница, отштиклирајте ги сите полиња и притиснете на '''''{{int:undeletebtn}}'''''.
-За да извршите делумно враќање, штиклирајте ги соодветните ревизии за враќање и притиснете на '''''{{int:undeletebtn}}'''''.",
+'undelete-fieldset-title' => 'Ð\92Ñ\80аÑ\82и ревизии',
+'undeleteextrahelp' => "За да вратите целосна историја на една страница, отштиклирајте ги сите полиња и притиснете на „'''{{int:undeletebtn}}'''“.
+За да извршите делумно враќање, штиклирајте ги соодветните ревизии за враќање и притиснете на „'''{{int:undeletebtn}}'''“.",
 'undeleterevisions' => '{{PLURAL:$1|$1 измена е архивирана|$1 измени се архивирани}}',
 'undeletehistory' => 'Ако ја обновите страницата, сите поправки ќе бидат вратени во историјата.
 Ако нова страница со исто име е создадена по бришењето, обновените поправки ќе се појават во претходната историја.',
@@ -2563,16 +2567,16 @@ $UNWATCHURL
 'undeleterevision-missing' => 'Грешна или непостоечка ревизија.
 Можеби имате лоша врска, ревизијата била обновена или избришана од архивата.',
 'undelete-nodiff' => 'Не постои постара ревизија.',
-'undeletebtn' => 'Ð\9eбнови',
+'undeletebtn' => 'Ð\92Ñ\80аÑ\82и',
 'undeletelink' => 'погледај/врати',
 'undeleteviewlink' => 'преглед',
-'undeletereset' => 'Ð\92Ñ\80аÑ\82и',
+'undeletereset' => 'Ð\9eдново',
 'undeleteinvert' => 'Обратен избор',
 'undeletecomment' => 'Причина:',
 'undeletedrevisions' => '{{PLURAL:$1|1 измена е обновена|$1 измени се обновени}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 измена|$1 измени}} и {{PLURAL:$2|1 податотека|$2 податотеки}} се вратени',
 'undeletedfiles' => '{{PLURAL:$1|1 податотека е вратена|$1 податотеки се вратени}}',
-'cannotundelete' => 'Враќањето не успеа, некој друг можеби ја вратил страницата претходно.',
+'cannotundelete' => 'Враќањето не успеа. Можеби некој друг веќе ја вратил страницата.',
 'undeletedpage' => "'''$1 беше обновена'''
 
 Погледнете го [[Special:Log/delete|дневникот на бришења]] за попис на претходни бришења и обновувања.",
@@ -2677,7 +2681,7 @@ $1',
 'ipbenableautoblock' => 'Автоматски блокирај ја последната IP-адреса што ја користел корисникот и сите понатамошни адреси од кои ќе се обиде да уредува',
 'ipbsubmit' => 'Блокирај го овој корисник',
 'ipbother' => 'Друг рок:',
-'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 седмица:1 week,2 седмици:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
+'ipboptions' => '2 часа:2 hours,1 ден:1 day,3 дена:3 days,1 недела:1 week,2 недели:2 weeks,1 месец:1 month,3 месеци:3 months,6 месеци:6 months,1 година:1 year,бесконечно:infinite',
 'ipbotheroption' => 'друго',
 'ipbotherreason' => 'Друга, дополнителна причина:',
 'ipbhidename' => 'Скриј го корисничкото име во уредувањата и списоците',
@@ -3069,7 +3073,7 @@ $1',
 'tooltip-ca-nstab-template' => 'Преглед на шаблонот',
 'tooltip-ca-nstab-help' => 'Преглед на страницата за помош',
 'tooltip-ca-nstab-category' => 'Преглед на категоријата',
-'tooltip-minoredit' => 'Ð\9eбележеÑ\82е ја промената како ситна',
+'tooltip-minoredit' => 'Ð\9eбележи ја промената како ситна',
 'tooltip-save' => 'Зачувајте ги вашите промени',
 'tooltip-preview' => 'Прегледајте ги вашите промени, ве молиме користете го ова пред зачувување!',
 'tooltip-diff' => 'Покажи кои промени ги направи во текстот.',
@@ -3079,11 +3083,10 @@ $1',
 'tooltip-watchlistedit-raw-submit' => 'Поднови го списокот',
 'tooltip-recreate' => 'Повторно создај ја страницата иако е избришана',
 'tooltip-upload' => 'Започни со подигање',
-'tooltip-rollback' => '„Врати“ ги поништува последните уредувања на оваа страница со еден клик до уредувањата на претпоследниот придонесувач',
-'tooltip-undo' => '„Откажи“ го поништува ова уредување и отвора прозорец за уредување.
-Дозволува додавање на причина во описот',
+'tooltip-rollback' => '„Отповикај“ ги повлекува промените на последниот уредник',
+'tooltip-undo' => '„Откажи“ го поништува ова уредување и ве носи на уредувањето во режим на преглед. Дава можност за наведување на причина во описот.',
 'tooltip-preferences-save' => 'Зачувај',
-'tooltip-summary' => 'Ð\92неÑ\81еÑ\82е ÐºÑ\80аÑ\82ко Ñ\80езиме',
+'tooltip-summary' => 'Ð\92неÑ\81еÑ\82е ÐºÑ\80аÑ\82ок Ð¾Ð¿Ð¸Ñ\81',
 
 # Stylesheets
 'common.css' => '/* Тука поставениот CSS ќе се применува врз сите рува */',
@@ -3142,7 +3145,8 @@ $1',
 'spamprotectionmatch' => 'Следниот текст е она што го предизвика нашиот филтер за спам: $1',
 'spambot_username' => 'МедијаВики чистач на спам',
 'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
-'spam_blanking' => 'Сите верзии содржеа врски до $1, бришам',
+'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
+'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
 
 # Info page
 'pageinfo-title' => 'Информации за „$1“',
@@ -4015,8 +4019,8 @@ $5
 'version-entrypoints' => 'URL-а на влезните точки',
 'version-entrypoints-header-entrypoint' => 'Влезна точка',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath?uselang=mk Ð\9fаÑ\82ека Ð½Ð° Ñ\81Ñ\82аÑ\82иÑ\98аÑ\82а]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Ð\9fаÑ\82ека Ð½Ð° Ñ\81кÑ\80ипÑ\82ата]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath?uselang=mk Ð¡Ñ\82аÑ\82иÑ\98а]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Ð¡ÐºÑ\80ипта]',
 
 # Special:FilePath
 'filepath' => 'Патека до податотека',
@@ -4215,4 +4219,6 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
 'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не можев да добијам катанци за опслужувачот $1',
 );
index 2b70fcf..e191792 100644 (file)
@@ -334,7 +334,7 @@ $messages = array(
 'tog-hidepatrolled' => 'റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-newpageshidepatrolled' => 'റോന്തുചുറ്റിയ താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-extendwatchlist' => 'ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.',
-'tog-usenewrc' => 'വിപàµ\81à´²àµ\80à´\95àµ\83à´¤ à´ªàµ\81തിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´\89പയàµ\8bà´\97ിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
+'tog-usenewrc' => 'സമàµ\80à´ªà´\95ാല à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¤à´¾à´³à´¿à´²àµ\81à´\82 à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനവയàµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിലàµ\81à´\82 à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¤à´¾à´³à´¿à´¨à´¨àµ\81സരിà´\9aàµ\8dà´\9aàµ\8d à´\97ണമായി à´ªàµ\8dരദർശിപàµ\8dà´ªിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
 'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
 'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
 'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
@@ -346,7 +346,7 @@ $messages = array(
 'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchmoves' => 'ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchdeletion' => 'ഞാൻ നീക്കം ചെയ്യുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
-'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി à´¸àµ\8dവയà´\82 അടയാളപ്പെടുത്തുക',
+'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി അടയാളപ്പെടുത്തുക',
 'tog-previewontop' => 'തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക',
 'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തലിന്റെ പ്രിവ്യൂ കാണിക്കുക',
 'tog-nocache' => 'ബ്രൗസറിൽ താളുകൾ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കുന്നത് നിർജ്ജീവമാക്കുക',
@@ -378,7 +378,7 @@ $messages = array(
 'underline-default' => 'ബ്രൗസറിലേതു പോലെ',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി',
+'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി:',
 'editfont-default' => 'ബ്രൗസറിലേതു പോലെ',
 'editfont-monospace' => 'മോണോസ്പേസ്ഡ് ഫോണ്ട്',
 'editfont-sansserif' => 'സാൻസ്-സെറിഫ് ഫോണ്ട്',
@@ -451,8 +451,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന ഒരു പ്രമാണം മാത്രമാണുള്ളത്.|ഈ വർഗ്ഗത്തിൽ മൊത്തം $2 പ്രമാണങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
 'category-file-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
 'listingcontinuesabbrev' => 'തുടർച്ച.',
-'index-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെട്ട താളുകൾ',
-'noindex-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെടാത്ത താളുകൾ',
+'index-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെട്ട താളുകൾ',
+'noindex-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെടാത്ത താളുകൾ',
 'broken-file-category' => 'പ്രമാണത്തിലേക്കുള്ള പ്രവർത്തനരഹിതമായ കണ്ണി ഉൾക്കൊള്ളുന്ന താളുകൾ',
 
 'about' => 'വിവരണം',
@@ -492,7 +492,7 @@ $messages = array(
 'vector-view-viewsource' => 'മൂലരൂപം കാണുക',
 'actions' => 'നടപടികൾ',
 'namespaces' => 'നാമമേഖല',
-'variants' => 'à´\9aà´°ങ്ങൾ',
+'variants' => 'à´°àµ\82പഭàµ\87à´¦ങ്ങൾ',
 
 'errorpagetitle' => 'പിഴവ്',
 'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
@@ -534,7 +534,7 @@ $messages = array(
 'toolbox' => 'പണിസഞ്ചി',
 'userpage' => 'ഉപയോക്താവിന്റെ താൾ കാണുക',
 'projectpage' => 'പദ്ധതി താൾ കാണുക',
-'imagepage' => 'à´®àµ\80à´¡à´¿à´¯ താൾ കാണുക',
+'imagepage' => 'à´ªàµ\8dരമാണ താൾ കാണുക',
 'mediawikipage' => 'സന്ദേശങ്ങളുടെ താൾ കാണുക',
 'templatepage' => 'ഫലകം താൾ കാണുക',
 'viewhelppage' => 'സഹായം താൾ കാണുക',
@@ -590,7 +590,7 @@ $1',
 'youhavenewmessages' => 'താങ്കൾക്ക് $1 ഉണ്ട് ($2).',
 'newmessageslink' => 'പുതിയ സന്ദേശങ്ങൾ',
 'newmessagesdifflink' => 'അവസാന മാറ്റം',
-'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1-ൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
+'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1 താളിൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
 'editsection' => 'തിരുത്തുക',
 'editold' => 'തിരുത്തുക',
 'viewsourceold' => 'മൂലരൂപം കാണുക',
@@ -608,9 +608,9 @@ $1',
 'feedlinks' => 'ഫീഡ്:',
 'feed-invalid' => 'അസാധുവായ സബ്‌സ്ക്രിപ്ഷൻ ഫീഡ് തരം.',
 'feed-unavailable' => 'സിൻഡിക്കേഷൻ ഫീഡുകൾ ലഭ്യമല്ല',
-'site-rss-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86ർ.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d à´«àµ\80à´¡àµ\8d',
-'site-atom-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86à´±àµ\8dà´±à´\82 à´«àµ\80à´¡àµ\8d',
-'page-rss-feed' => '"$1" ന്റെ ആർ.എസ്.എസ്. ഫീഡ്',
+'site-rss-feed' => '$1 ആർ.എസ്.എസ് ഫീഡ്',
+'site-atom-feed' => '$1 ആറ്റം ഫീഡ്',
+'page-rss-feed' => '"$1"  ആർ.എസ്.എസ്. ഫീഡ്',
 'page-atom-feed' => '"$1" ആറ്റം ഫീഡ്',
 'feed-atom' => 'ആറ്റം',
 'feed-rss' => 'ആർ.എസ്.എസ്.',
@@ -668,8 +668,8 @@ $1',
 'missingarticle-rev' => '(മാറ്റം#: $1)',
 'missingarticle-diff' => '(വ്യത്യാസം: $1, $2)',
 'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ പിടിച്ചിരിക്കുന്നു',
-'internalerror' => 'ആന്തരികപ്രശ്നം',
-'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
+'internalerror' => 'ആന്തരിക പിഴവ്',
+'internalerror_info' => 'ആന്തരിക പിഴവ്: $1',
 'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
 'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
 'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
@@ -734,7 +734,7 @@ $2',
 'yourpassword' => 'രഹസ്യവാക്ക്:',
 'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
 'remembermypassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
-'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aതിനàµ\81 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. ഉപയോഗിക്കുക',
+'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശനതàµ\8dതിനàµ\81 à´¶àµ\87à´·à´µàµ\81à´\82 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. à´¤à´¨àµ\8dà´¨àµ\86 ഉപയോഗിക്കുക',
 'yourdomainname' => 'താങ്കളുടെ ഡൊമെയിൻ:',
 'externaldberror' => 'ഒന്നുകിൽ ഡേറ്റാബേസ് സാധൂകരണത്തിൽ പ്രശ്നം ഉണ്ടായിരുന്നു അല്ലെങ്കിൽ നവീകരിക്കുവാൻ താങ്കളുടെ ബാഹ്യ അംഗത്വം താങ്കളെ അനുവദിക്കുന്നില്ല.',
 'login' => 'പ്രവേശിക്കുക',
@@ -1261,7 +1261,7 @@ $1",
 
 # Diffs
 'history-title' => '"$1" എന്ന താളിന്റെ നാൾവഴി',
-'difference-title' => '"$1" à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81à´\95ൾ à´¤à´®àµ\8dമിലàµ\81à´³àµ\8dà´³ à´®à´¾à´±àµ\8dà´±ം',
+'difference-title' => '"$1" à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81à´\95ൾ à´¤à´®àµ\8dമിലàµ\81à´³àµ\8dà´³ à´µàµ\8dയതàµ\8dയാസം',
 'difference-title-multipage' => '"$1", "$2" എന്നീ താളുകൾ തമ്മിലുള്ള വ്യത്യാസം',
 'difference-multipage' => '(താളുകൾ തമ്മിലുള്ള വ്യത്യാസം)',
 'lineno' => 'വരി $1:',
@@ -1357,6 +1357,7 @@ $1",
 'prefs-beta' => 'പരീക്ഷണാടിസ്ഥാനത്തിലുള്ള സൗകര്യങ്ങൾ',
 'prefs-datetime' => 'ദിവസവും സമയവും',
 'prefs-labs' => 'പരീക്ഷണശാലയിൽ തയ്യാറാകുന്ന സൗകര്യങ്ങൾ',
+'prefs-user-pages' => 'ഉപയോക്തൃതാളുകൾ',
 'prefs-personal' => 'അഹം',
 'prefs-rc' => 'സമീപകാല മാറ്റങ്ങൾ',
 'prefs-watchlist' => 'ശ്രദ്ധിക്കുന്നവ',
@@ -1820,6 +1821,18 @@ $1',
 'backend-fail-connect' => '"$1"  ശേഖരണ ബാക്കെൻഡുമായി ബന്ധപ്പെടാൻ കഴിഞ്ഞില്ല.',
 'backend-fail-internal' => '"$1" എന്ന സ്റ്റോറേജ് ബാക്കെൻഡിൽ അപരിചിതമായ പിഴവ് സംഭവിച്ചു.',
 'backend-fail-contenttype' => '"$1" എന്നതിൽ സംഭരിച്ചിരിക്കുന്ന പ്രമാണത്തിന്റെ ഉള്ളടക്ക തരം നിർണ്ണയിക്കാനായില്ല.',
+'backend-fail-usable' => 'ആവശ്യമായത്ര അനുമതിയില്ലാത്തതു കൊണ്ടോ ഡയറക്റ്ററികൾ/കണ്ടൈനറുകൾ ഇല്ലാത്തതു കൊണ്ടോ പ്രമാണം $1 എഴുതിച്ചേർക്കാൻ കഴിഞ്ഞില്ല.',
+
+# Lock manager
+'lockmanager-notlocked' => '"$1" എന്നതിലെ പൂട്ടൽ അഴിക്കാൻ കഴിഞ്ഞില്ല; അത് പൂട്ടിയിട്ടില്ല.',
+'lockmanager-fail-closelock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം അടയ്ക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-deletelock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം നീക്കംചെയ്യാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-acquirelock' => '"$1" എന്നതിന്റെ പൂട്ട് ലഭ്യമാക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-openlock' => '"$1" എന്നതിന്റെ പൂട്ടൽ പ്രമാണം തുറക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-releaselock' => '"$1" എന്നതിന്റെ പൂട്ട് വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-db-bucket' => '$1 എന്ന ബക്കറ്റിൽ ആവശ്യത്തിനു പൂട്ടൽ ഡേറ്റാബേസുകളെ ബന്ധപ്പെടാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-db-release' => '$1 ഡേറ്റാബേസിലെ പൂട്ടലുകൾ വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
+'lockmanager-fail-svr-release' => '$1 സെർവറിലെ പൂട്ടലുകൾ വിടുവിക്കാൻ കഴിഞ്ഞില്ല.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'സിപ് (ZIP) പരിശോധനകൾക്കായി പ്രമാണം തുറന്നപ്പോൾ പിഴവുണ്ടായി.',
@@ -2118,13 +2131,14 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'booksources-invalid-isbn' => 'തന്നിരിക്കുന്ന ഐ.എസ്.ബി.എൻ. സാധുവാണെന്നു തോന്നുന്നില്ല; യഥാർത്ഥ സ്രോതസ്സിൽ നിന്നും പകർത്തിയപ്പോൾ തെറ്റുപറ്റിയോ എന്നു പരിശോധിക്കുക',
 
 # Special:Log
-'specialloguserlabel' => 'à´\86വിഷàµ\8dà´\95ർതàµ\8dതാവàµ\8d:',
+'specialloguserlabel' => 'à´¨à´\9fà´ªàµ\8dപിലാà´\95àµ\8dà´\95ിയയാൾ:',
 'speciallogtitlelabel' => 'ലക്ഷ്യം (തലക്കെട്ട് അല്ലെങ്കിൽ ഉപയോക്താവ്) :',
 'log' => 'പ്രവർത്തനരേഖകൾ',
 'all-logs-page' => 'എല്ലാ പൊതുരേഖകളും',
 'alllogstext' => '{{SITENAME}} സംരംഭത്തിൽ ലഭ്യമായ വിവിധ പ്രവർത്തന രേഖകൾ ഈ താളിൽ ഒരുമിച്ച് കാണാം. താങ്കൾക്ക് രേഖകളുടെ സ്വഭാവം, ഉപയോക്തൃനാമം (കേസ് സെൻസിറ്റീവ്), ബന്ധപ്പെട്ട താൾ (കേസ് സെൻസിറ്റീവ്) മുതലായവ തിരഞ്ഞെടുത്ത് അന്വേഷണം കൂടുതൽ ക്ഌപ്തപ്പെടുത്താവുന്നതാണ്.',
 'logempty' => 'പ്രവർത്തനരേഖയിൽ ബന്ധമുള്ളവ ഇല്ല.',
 'log-title-wildcard' => 'ഈ വാക്കിൽ തുടങ്ങുന്ന തിരച്ചിൽ ഫലങ്ങൾ',
+'showhideselectedlogentries' => 'തിരഞ്ഞെടുത്ത രേഖാ വിവരങ്ങൾ പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
 
 # Special:AllPages
 'allpages' => 'എല്ലാ താളുകളും',
@@ -2135,7 +2149,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'allpagesto' => 'ഇതിൽ അവസാനിക്കുന്ന താളുകൾ കാട്ടുക:',
 'allarticles' => 'എല്ലാ താളുകളും',
 'allinnamespace' => 'എല്ലാ താളുകളും ($1 നാമമേഖല)',
-'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതതàµ\8d)',
+'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതവ)',
 'allpagesprev' => 'മുമ്പത്തെ',
 'allpagesnext' => 'അടുത്തത്',
 'allpagessubmit' => 'പോകൂ',
@@ -2179,7 +2193,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'listusersfrom' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ പ്രദർശിപ്പിക്കുക:',
 'listusers-submit' => 'പ്രദർശിപ്പിക്കുക',
 'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
-'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¤àµ\8d)',
+'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fàµ\81)',
 
 # Special:ActiveUsers
 'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
@@ -2200,7 +2214,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 വ്യക്തിപരമായ അവകാശങ്ങളെ കുറിച്ച് [[{{MediaWiki:Listgrouprights-helppage}}|കൂടുതൽ വിവരങ്ങൾ]] ഉണ്ടാകാനിടയുണ്ട്.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">അവകാശം നൽകിയിരിക്കുന്നു</span>
 * <span class="listgrouprights-revoked">അവകാശം നീക്കിയിരിക്കുന്നു</span>',
-'listgrouprights-group' => 'വിഭാà´\97ം',
+'listgrouprights-group' => 'à´¸à´\82à´\98ം',
 'listgrouprights-rights' => 'അവകാശങ്ങൾ',
 'listgrouprights-helppage' => 'Help:സംഘാവകാശങ്ങൾ',
 'listgrouprights-members' => '(അംഗങ്ങളുടെ പട്ടിക)',
@@ -2358,9 +2372,9 @@ $UNWATCHURL
 'rollbacklink' => 'റോൾബാക്ക്',
 'rollbackfailed' => 'റോൾബാക്ക് പരാജയപ്പെട്ടു',
 'cantrollback' => 'തിരുത്തൽ തിരസ്കരിക്കുവാൻ സാധിക്കുകയില്ല. ഒരു ഉപയോക്താവ് മാത്രമാണ് ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
-'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
+'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|സംവാദം]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
 
-താളിലെ അവസാന തിരുത്തൽ ചെയ്തിരിക്കുന്നത് [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ആണ്.',
+താളിലെ അവസാന തിരുത്തൽ ചെയ്തിരിക്കുന്നത് [[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]] സൃഷ്ടിച്ച അവസാന പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്തിരിക്കുന്നു',
@@ -2412,7 +2426,7 @@ $UNWATCHURL
 'protect-othertime' => 'മറ്റ് കാലാവധി:',
 'protect-othertime-op' => 'മറ്റു കാലയളവ്',
 'protect-existing-expiry' => 'നിലവിലെ കാലാവധി: $3, $2',
-'protect-otherreason' => 'മറàµ\8dà´±àµ\81à´³àµ\8dà´³/à´ªàµ\81റമàµ\87à´¯àµ\81à´³àµ\8dà´³ കാരണം:',
+'protect-otherreason' => 'മറàµ\8dà´±àµ\8d/à´\95àµ\82à´\9fàµ\81തൽ കാരണം:',
 'protect-otherreason-op' => 'മറ്റ് കാരണം',
 'protect-dropdown' => '*സംരക്ഷിക്കാനുള്ള കാരണങ്ങൾ
 ** അമിതമായ നശീകരണപ്രവർത്തനങ്ങൾ
@@ -2627,7 +2641,7 @@ $1',
 'change-blocklink' => 'തടയലിൽ മാറ്റം വരുത്തുക',
 'contribslink' => 'സംഭാവനകൾ',
 'emaillink' => 'ഇമെയിൽ അയയ്ക്കുക',
-'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1ന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" ആണ്‌.',
+'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1 എന്ന ഉപയോക്താവിന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" എന്നാണ്‌.',
 'blocklogpage' => 'തടയൽ രേഖ',
 'blocklog-showlog' => 'ഈ ഉപയോക്താവ് മുമ്പേ തടയപ്പെട്ടതാണ്.
 തടയൽ രേഖ അവലംബമായി താഴെ കൊടുത്തിരിക്കുന്നു:',
@@ -3022,7 +3036,8 @@ $1',
 'spamprotectionmatch' => 'പാഴെഴുത്ത് അരിപ്പയെ ഉണർത്തിയ എഴുത്ത് താഴെ കൊടുത്തിരിക്കുന്നു: $1',
 'spambot_username' => 'മീഡിയാവിക്കിയിലെ പാഴെഴുത്ത് ശുദ്ധീകരണം',
 'spam_reverting' => '$1 എന്നതിലേയ്ക്കുള്ള കണ്ണികളില്ലാത്ത അവസാന നാൾപ്പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്യുന്നു',
-'spam_blanking' => '$1 എന്ന കണ്ണികളുള്ള നാൾപ്പതിപ്പുകളെല്ലാം ശൂന്യമാക്കുന്നു',
+'spam_blanking' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും ശൂന്യമാക്കുന്നു',
+'spam_deleting' => '$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും മായ്ക്കുന്നു',
 
 # Info page
 'pageinfo-title' => '"$1" എന്ന താളിന്റെ വിവരങ്ങൾ',
@@ -3100,7 +3115,7 @@ $1',
 'file-info-png-frames' => '{{PLURAL:$1|ഒരു ഫ്രെയിം|$1 ഫ്രെയിം}}',
 
 # Special:NewFiles
-'newimages' => 'à´ªàµ\81തിയ à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86 à´\97ാലറി',
+'newimages' => 'à´ªàµ\81തിയ à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86 à´\9aà´¿à´¤àµ\8dരശാല',
 'imagelisttext' => '$2 നൽകിയിട്ടുള്ള {{PLURAL:$1|പ്രമാണത്തിന്റെ|$1 പ്രമാണങ്ങളുടെ}} പട്ടിക താഴെ കാണാം.',
 'newimages-summary' => 'ചുരുക്കം',
 'newimages-legend' => 'അരിപ്പ',
@@ -3324,6 +3339,9 @@ $1',
 
 # EXIF attributes
 'exif-compression-1' => 'ചുരുക്കാത്തത്',
+'exif-compression-5' => 'എൽ.സെഡ്.ഡബ്ല്യു.',
+'exif-compression-6' => 'ജെപിഇജി (പഴയത്)',
+'exif-compression-7' => 'ജെപിഇജി',
 
 'exif-copyrighted-true' => 'പകർപ്പവകാശസംരക്ഷിതം',
 'exif-copyrighted-false' => 'പൊതുസഞ്ചയം',
@@ -3542,7 +3560,7 @@ $1',
 'confirmemail_noemail' => '[[Special:Preferences|താങ്കളുടെ ക്രമീകരണങ്ങളുടെ കൂടെ]] സാധുവായൊരു ഇ-മെയിൽ വിലാസം സജ്ജീകരിച്ചിട്ടില്ല.',
 'confirmemail_text' => '{{SITENAME}} സം‌രംഭത്തിൽ ഇ-മെയിൽ സൗകര്യം ഉപയോഗിക്കണമെങ്കിൽ താങ്കൾ താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിന്റെ സാധുത തെളിയിച്ചിരിക്കണം. താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് സ്ഥിരീകരണ മെയിൽ അയക്കുവാൻ താഴെയുള്ള ബട്ടൺ അമർത്തുക. താങ്കൾക്ക് അയക്കുന്ന ഇ-മെയിലിൽ ഒരു സ്ഥിരീകരണ കോഡ് ഉണ്ട്. ആ കോഡിൽ അമർത്തിയാൽ താങ്കളുടെ വിലാസത്തിന്റെ സാധുത തെളിയിക്കപ്പെടും.',
 'confirmemail_pending' => 'താങ്കളുടെ അംഗത്വം ഈ അടുത്ത് ഉണ്ടാക്കിയതാണെങ്കിൽ,  ഒരു സ്ഥിരീകരണ കോഡ് താങ്കൾക്ക് ഇ-മെയിൽ ചെയ്തിട്ടുണ്ട്.  പുതിയ സ്ഥിരീകരണ കോഡ് ആവശ്യപ്പെടാൻ ശ്രമിക്കുന്നതിനു മുൻപ് ആദ്യത്തെ സ്ഥിരീകരണ കോഡിനായി കുറച്ച് സമയം കാത്തിരിക്കൂ.',
-'confirmemail_send' => 'സ്ഥിരീകരണ കോഡ് (confirmation code) മെയിൽ ചെയ്യുക',
+'confirmemail_send' => 'സ്ഥിരീകരണ കോഡ്  ഇമെയിലിൽ അയയ്ക്കുക',
 'confirmemail_sent' => 'സ്ഥിരീകരണ ഇ-മെയിൽ അയച്ചിരിക്കുന്നു.',
 'confirmemail_oncreate' => 'ഒരു സ്ഥിരീകരണ കോഡ് താങ്കളുടെ ഇ-മെയിൽ വിലാസത്തിലേക്ക് അയച്ചിട്ടുണ്ട്.
 ലോഗിൻ ചെയ്യുന്നതിനു ഈ കോഡ് ആവശ്യമില്ല. പക്ഷെ വിക്കിയിൽ ഇ-മെയിലുമായി ബന്ധപ്പെട്ട സേവനങ്ങൾ ഉപയോഗിക്കുന്നതിനു മുൻപ് പ്രസ്തുത കോഡ് ഉപയോഗിച്ച് ഇ-മെയിൽ സ്ഥിരീകരിച്ചിരിക്കണം.',
@@ -3608,6 +3626,8 @@ $5
 'confirmrecreate-noreason' => 'താങ്കൾ തിരുത്താനാരംഭിച്ചതിനു ശേഷം, ഉപയോക്താവ് [[User:$1|$1]] ([[User talk:$1|സംവാദം]]) ഈ താൾ മായ്ച്ചിരിക്കുന്നു. ഈ താൾ പുനഃസൃഷ്ടിക്കണം എന്നത് സ്ഥിരീകരിക്കുക.',
 'recreate' => 'പുനഃസൃഷ്ടിക്കുക',
 
+'unit-pixel' => 'ബിന്ദു',
+
 # action=purge
 'confirm_purge_button' => 'ശരി',
 'confirm-purge-top' => 'ഈ താളിന്റെ കാഷെ ക്ലീയർ ചെയ്യട്ടെ?',
@@ -3643,6 +3663,19 @@ $5
 'autoredircomment' => '[[$1]] എന്ന താളിലേക്ക് തിരിച്ചുവിടുന്നു',
 'autosumm-new' => "'$1' താൾ സൃഷ്ടിച്ചിരിക്കുന്നു",
 
+# Size units
+'size-bytes' => '$1 ബൈ',
+'size-kilobytes' => '$1 കെ.ബി.',
+'size-megabytes' => '$1 എം.ബി.',
+'size-gigabytes' => '$1 ജി.ബി.',
+'size-terabytes' => '$1 ടി.ബി.',
+
+# Bitrate units
+'bitrate-bits' => '$1ബി.പി.എസ്.',
+'bitrate-kilobits' => '$1കെ.ബി.പി.എസ്.',
+'bitrate-megabits' => '$1എം.ബി.പി.എസ്.',
+'bitrate-gigabits' => '$1ജി.ബി.പി.എസ്.',
+
 # Live preview
 'livepreview-loading' => 'ശേഖരിക്കുന്നു...',
 'livepreview-ready' => 'ശേഖരിച്ചുകൊണ്ടിരിക്കുന്നു… തയ്യാർ!',
@@ -3675,7 +3708,7 @@ $5
 
 # Watchlist editing tools
 'watchlisttools-view' => 'ബന്ധപ്പെട്ട മാറ്റങ്ങൾ കാട്ടുക',
-'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95à´¾à´\9fàµ\8dà´\9fുക, തിരുത്തുക',
+'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95ാണുക, തിരുത്തുക',
 'watchlisttools-raw' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ മൂലരൂപം തിരുത്തുക',
 
 # Signatures
@@ -3716,6 +3749,8 @@ $5
 'version-entrypoints' => 'പ്രവേശന നില യൂ.ആർ.എല്ലുകൾ',
 'version-entrypoints-header-entrypoint' => 'പ്രവേശന നില',
 'version-entrypoints-header-url' => 'യൂ.ആർ.എൽ.',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath ലേഖന പഥം]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath സ്ക്രിപ്റ്റ് പഥം]',
 
 # Special:FilePath
 'filepath' => 'പ്രമാണത്തിലേക്കുള്ള വിലാസം',
@@ -3839,9 +3874,9 @@ $5
 'revdelete-uname-unhid' => 'ഉപയോക്തൃനാമം മറച്ചത് ഒഴിവാക്കിയിരിക്കുന്നു',
 'revdelete-restricted' => 'കാര്യനിർവാഹകർക്ക് പ്രവർത്തന അതിരുകൾ ഏർപ്പെടുത്തിയിരിക്കുന്നു',
 'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
-'logentry-move-move' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dതാവàµ\8d $3 à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ $4 à´\86à´¯ി മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dതാവàµ\8d $3 à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ $4 à´\8eà´¨àµ\8dനാà´\95àµ\8dà´\95ി മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move-noredirect' => '$3 എന്ന താൾ $4 എന്ന തലക്കെട്ടിലേയ്ക്ക് തിരിച്ചുവിടലില്ലാതെ $1 മാറ്റി',
-'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനു മുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move_redir-noredirect' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക്, തിരിച്ചുവിടൽ ഇല്ലാതെ മാറ്റിയിരിക്കുന്നു',
 'logentry-patrol-patrol' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
 'logentry-patrol-patrol-auto' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 സ്വതേ അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
index 6854a02..614cd34 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Mongolian (Ð\9cонгол)
+/** Mongolian (монгол)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -316,7 +316,7 @@ $1',
 'toc' => 'Агуулга',
 'showtoc' => 'үзүүлэх',
 'hidetoc' => 'нуух',
-'collapsible-collapse' => 'ЭвÑ\85Ñ\8dх',
+'collapsible-collapse' => 'Ð\91Ñ\83Ñ\83лгах',
 'collapsible-expand' => 'Тэлэх',
 'thisisdeleted' => '$1-г харах эсвэл сэргээх үү?',
 'viewdeleted' => '$1-г харах уу?',
@@ -402,8 +402,8 @@ $1',
 'cannotdelete-title' => '"$1" хуудсыг устгаж чадсангүй',
 'badtitle' => 'Болохгүй гарчиг',
 '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.',
+'perfcached' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
+'perfcachedts' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'querypage-no-updates' => 'Одоогийн байдлаар энэ хуудсанд шинэчлэлүүд хаагдсан байна. Энд байгаа тоо баримт одоохондоо сэргээгдэхгүй.',
 'wrong_wfQuery_params' => 'wfQuery()-д буруу параметр оруулсан байна<br />
 Функц: $1<br />
@@ -477,7 +477,7 @@ $2',
 'nocookieslogin' => '{{SITENAME}}-д нэвтрэхэд күүкиг хэрэглэдэг.
 Та күүкиг идэвхижүүлээгүй байна.
 Түүнийг идэвхижүүлж дахин оролдоно уу.',
-'nocookiesfornew' => 'Ð\9aүүкийг Ð°Ñ\88иглаж Ð±Ð°Ð¹Ð³Ð°Ð° Ñ\8dÑ\81Ñ\8dÑ\85ийг Ñ\88алгаж Ò¯Ð·Ð½Ñ\8d Ò¯Ò¯. Ð¥Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87ийн Ñ\8dÑ\85 Ñ\81Ñ\83Ñ\80валжийг Ð±Ð°Ñ\82алгаажÑ\83Ñ\83лж Ñ\87адÑ\81ангүй Ñ\82Ñ\83л Ð±Ò¯Ñ\80Ñ\82гÑ\8dл Ñ\85ийгдÑ\81Ñ\8dнгүй.',
+'nocookiesfornew' => 'Ð¥Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87ийн Ð±Ò¯Ñ\80Ñ\82гÑ\8dл Ñ\85ийгдÑ\81Ñ\8dнгүй. Ð\9aүүкийг Ð·Ó©Ð² Ñ\82оÑ\85иÑ\80Ñ\83Ñ\83лÑ\81ан Ñ\8dÑ\81Ñ\8dÑ\85ийг Ñ\88алгаад Ñ\8dнÑ\8d Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bг Ð°Ñ\85ин Ñ\83нÑ\88Ñ\83Ñ\83лааÑ\80ай.',
 'noname' => 'Та хүчинтэй хэрэглэгчийн нэрийг өгөөгүй байна.',
 'loginsuccesstitle' => 'Амжилттай нэвтэрлээ',
 'loginsuccess' => "'''Та {{SITENAME}} руу \"\$1\" нэрээр нэвтэрлээ.'''",
@@ -572,7 +572,7 @@ $2',
 'passwordreset-emailtitle' => '{{SITENAME}}-н бүртгэлийн мэдээлэл',
 'passwordreset-emailelement' => 'Хэрэглэгчийн нэр: $1
 Түр зуурын нууц үг: $2',
-'passwordreset-emailsent' => 'СанÑ\83Ñ\83лгÑ\8bн Ñ\86аÑ\85им Ñ\88Ñ\83Ñ\83дан Ñ\8fвÑ\83Ñ\83ллаа.',
+'passwordreset-emailsent' => 'Танд Ñ\81анамж Ð±Ð¾Ð»Ð³Ð¾Ð½ Ð½Ñ\8dг Ð¸Ð¼Ð°Ð¹Ð» Ñ\8fвÑ\83Ñ\83ллаа',
 'passwordreset-emailsent-capture' => 'Доор харуулснаар цахим шуудангийн сануулгыг явууллаа.',
 'passwordreset-emailerror-capture' => 'Цахим шуудангийн сануулга доор харуулсны дагуу хийгдсан боловч $1 хэрэглэгчид хүрч чадсангүй, алдаа гарлаа.',
 
@@ -685,11 +685,12 @@ $2',
 'userpage-userdoesnotexist-view' => '"$1" гэсэн хэрэглэгч бүртгэгдээгүй байна.',
 'blocked-notice-logextract' => 'Энэхүү хэрэглэгч одоогоор түгжигдсэн байна.
 Лавлагааны зориулалтаар түгжээний лог дээрх хамгийн сүүлийн нэмэлтийг доор оруулав:',
-'clearyourcache' => "'''Санамж - Хадгалсныхаа дараа шинэ тохиргоогоо харахын тулд вэб хөтөчийнхөө хийсвэр санах ойг орхих хэрэгтэй болж магадгүй.'''
-'''Файрфокс / Сафари:''' ''Shift''-г дарж байхдаа ''Reload'' дээр дарах, эсвэл ''Ctrl-F5'' буюу ''Ctrl-R'' гэж дарах (Макинтош дээр ''Command-R'');
-'''Конкерор: ''' ''Reload'' товч дээр дар, эсвэл ''F5''-г дар;
-'''Опера:''' ''Tools→Preferences'' дээр хийсвэр санах ойг бүрэн арилгах;
-'''Интернэт Эксплорер:''' ''Ctrl'' -г дарж байхдаа ''Refresh'' дээр дар, эсвэл ''Ctrl-F5'' гэж дар.",
+'clearyourcache' => "'''Санамж - Хадгалсныхаа дараа шинэ тохиргоогоо харахын тулд вэб хөтөчийнхөө хийсвэр санах ойг орхих хэрэгтэй болж магадгүй.
+* '''Google Chrome хөтчид :''' ''Ctrl-Shift-R'' товч дээр зэрэг дарна ( Макитош компьютерүүдэд ''⌘-Shift-R'' дээр дарна)
+* '''Internet Explorer хөтчид :'''  ''Ctrl'' дээр дараастай байж байгаад ''Refresh'' дээр дарна, эсвэл ''Ctrl-F5'' дээр дарна
+* '''Konqueror веб хөтчид :''' ''Reload'' товч дээр эсвэл ''F5'' дээр дарна
+* '''Opera веб хөтчид :''' ''Tools → Preferences'' руу орж дундын нөөцлөгчийг хоослоорой
+\\",
 'usercssyoucanpreview' => "'''Зөвлөгөө:''' \"{{int:showpreview}}\" товчийг ашиглан та өөрийн шинэ CSS-г хадгалахаасаа өмнө шалгах боломжтой.",
 'userjsyoucanpreview' => "'''Зөвлөгөө:''' \"{{int:showpreview}}\" товчийг ашиглан та өөрийн шинэ ЖаваСкриптийг хадгалахаасаа өмнө шалгах боломжтой.",
 'usercsspreview' => "'''Та өөрийн хэрэглэгчийн CSS-г зөвхөн урьдчилан харж байгаа гэдгээ санаарай.'''
@@ -705,6 +706,7 @@ $2',
 'note' => "'''Анхааруулга:'''",
 'previewnote' => "'''Энэ бол зөвхөн урьдчилж харсан байдал.'''
 Таны хийсэн өөрчлөлтүүдийг одоохондоо хадгалаагүй байгаа!",
+'continue-editing' => 'Үргэлжлүүлэн янзлах',
 'previewconflict' => 'Энэ урьдчилж харсан байдал нь дээд талын засварлах талбарын текстийг хадгалахад харагдах байдлыг харуулна.',
 'session_fail_preview' => "'''Уучлаарай! Мэдээлэл алдагдснаас болж таны засварыг боловсруулж чадсангүй. Дахин оролдож үзнэ үү. Ингээд ч болохгүй байвал сайтаас гарч дахин нэвтэрч орж үзнэ үү.'''",
 'session_fail_preview_html' => "'''Уучлаарай! Мэдээлэл алдагдснаас болж таны засварыг боловсруулж чадсангүй.'''
@@ -717,6 +719,7 @@ $2',
 Энэ нь алдаа ихтэй вэбийн нэргүй прокси хэрэглэх үед заримдаа гардаг.'''",
 'edit_form_incomplete' => "'''Таны хийсэн өөрлөлтийн зарим хэсэг нь серверт хүрээгүй бололтой, алдаатай эсэхийг шалгаад дахин оролдоно уу'''",
 'editing' => '$1-г засварлаж байна',
+'creating' => '$1-г үүсгэж байна',
 'editingsection' => '$1-г засварлаж байна (хэсэг)',
 'editingcomment' => '$1-г засварлаж байна (шинэ хэсэг)',
 'editconflict' => 'Засварын зөрөлдөөн боллоо: $1',
@@ -852,29 +855,29 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
 'rev-deleted-user-contribs' => '[хэрэглэгчийн нэр эсвэл IP хаягыг арилгасан байна - засварыг хувь нэмрээс нуув]',
 'rev-deleted-text-permission' => "Энэ хуудасны засвар '''устгагдсан'''.
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
-'rev-deleted-text-unhide' => "Энэ хуудасны засвар '''устгагдсан байна'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8bн Ñ\85Ñ\83вÑ\8cд Ñ\82а хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
-'rev-suppressed-text-unhide' => "Энэ хуудасны засвар '''далдлагдсан байна'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Далдлагааны логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8bн Ñ\85Ñ\83вÑ\8cд Ñ\82а хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
-'rev-deleted-text-view' => "Энэ хуудасны засвар '''устгагдсан'''.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8bн Ñ\85Ñ\83вÑ\8cд Ñ\82а Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Ñ\83Ñ\81Ñ\82галÑ\8bн Ð»Ð¾Ð³Ñ\82] Ð´Ñ\8dлгÑ\8dÑ\80Ñ\8dнгүй Ð¼Ñ\8dдÑ\8dÑ\8dлÑ\8dл Ð±Ð°Ð¹Ð¶ Ð¼Ð°Ð³Ð°Ð´Ð³Ò¯й.",
+'rev-deleted-text-unhide' => "Энэ хуудасны эргэцүүлэл '''устгагдсан байна'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логоос] дэлгэрэнгүй мэдээллийг орж харж болно.
¢а хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
+'rev-suppressed-text-unhide' => "Энэ хуудасны эргэцүүлэл '''далдлагдсан байна'''.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Далдалсан логоос]. дэлгэрэнгүй мэдээллийг авах боломжтой.
¢а хүсвэл [$1 энэ засварыг үзэх] боломжтой.",
+'rev-deleted-text-view' => "Энэ хуудасны эргэцүүлэл '''устгагдсан'''.
\93Ñ\8dÑ\81Ñ\8dн Ñ\87 Ñ\82а Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Ñ\83Ñ\81Ñ\82гаÑ\81ан Ð»Ð¾Ð³Ð¾Ð¾Ñ\81]. Ð´Ñ\8dлгÑ\8dÑ\80Ñ\8dнгүй Ð¼Ñ\8dдÑ\8dÑ\8dллийг Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой.",
 'rev-suppressed-text-view' => "Энэ хуудасны засвар '''далдлагдсан'''.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8bн Ñ\85Ñ\83вÑ\8cд Ñ\82а Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Ð´Ð°Ð»Ð´Ð»Ð°Ð³Ð°Ð°Ð½Ñ\8b Ð»Ð¾Ð³Ñ\82] Ð´Ñ\8dлгÑ\8dÑ\80Ñ\8dнгүй Ð¼Ñ\8dдÑ\8dÑ\8dлÑ\8dл Ð±Ð°Ð¹Ð¶ Ð¼Ð°Ð³Ð°Ð´Ð³Ò¯й.",
\93Ñ\8dÑ\81Ñ\8dн Ñ\87 Ñ\82а Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой;  [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}далдалÑ\81ан Ð»Ð¾Ð³Ð¾Ð¾Ñ\81] Ð´Ñ\8dлгÑ\8dÑ\80Ñ\8dнгүй Ð¼Ñ\8dдÑ\8dÑ\8dллийг Ñ\85аÑ\80аÑ\85 Ð±Ð¾Ð»Ð¾Ð¼Ð¶Ñ\82ой.",
 'rev-deleted-no-diff' => "Аль нэг засвар нь '''устгагдсан''' тул та ялгааг үзэх боломжгүй байна.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.",
 'rev-suppressed-no-diff' => "Ямар нэг засвар '''устгагдсан''' тул та энэхүү өөрчлөлтийг харах боломжгүй.",
-'rev-deleted-unhide-diff' => "ЯлгаанÑ\8b Ð°Ð»Ñ\8c Ð½Ñ\8dг Ð·Ð°Ñ\81ваÑ\80 '''устгагдсан''' байна.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгалын логт] дэлгэрэнгүй мэдээлэл байж магадгүй.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\8bн Ñ\85Ñ\83вÑ\8cд Ñ\82а хүсвэл [$1 энэ ялгааг] үзэх боломжтой.",
-'rev-suppressed-unhide-diff' => "ЭнÑ\8dÑ\85Ò¯Ò¯ Ó©Ó©Ñ\80Ñ\87лөлÑ\82ийн Ð·Ð°Ñ\80им Ð·Ð°Ñ\81ваÑ\80Ñ\8bг '''далдалсан''' байна.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Далдалгааны логт] дэлгэрэнгүй мэдээллийг харах боломжтой.
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 Ð±Ð¾Ð» Ñ\82а [$1 Ñ\8dнÑ\8dÑ\85Ò¯Ò¯ Ó©Ó©Ñ\80Ñ\87лөлÑ\82ийг Ñ\85аÑ\80аÑ\85ааÑ\80] Ò¯Ñ\80гÑ\8dлжлүүлэх боломжтой.",
-'rev-deleted-diff-view' => "ЭнÑ\8dÑ\85Ò¯Ò¯ Ó©Ó©Ñ\80Ñ\87лөлÑ\82 Ð´Ð°Ñ\85Ñ\8c Ð·Ð°Ñ\81ваÑ\80Ñ\83Ñ\83дÑ\8bн Ð½Ñ\8dгийг '''Ñ\83Ñ\81Ñ\82гасан''' байна.
-Та администратор тул өөрчлөлтийг харах боломжтой; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} устгалын лог]-с дэлгэрэнгүй мэдээлэл авах боломжтой.",
-'rev-suppressed-diff-view' => "ЭнÑ\8dÑ\85Ò¯Ò¯ Ó©Ó©Ñ\80Ñ\87лөлÑ\82 Ð´Ð°Ñ\85Ñ\8c Ð·Ð°Ñ\81ваÑ\80Ñ\83Ñ\83дÑ\8bн Ð½Ñ\8dгийг '''далдалсан''' байна.
-Та администратор тул өөрчлөлтийг харах боломжтой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} далдалгааны лог]-с дэлгэрэнгүй мэдээлэл авах боломжтой.",
+'rev-deleted-unhide-diff' => "ТанÑ\8b Ñ\8fлгаÑ\81ан Ñ\8dÑ\80гÑ\8dÑ\86үүлÑ\8dлийн Ð°Ð»Ñ\8c Ð½Ñ\8dг Ð½Ñ\8c  '''устгагдсан''' байна.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Устгасан логоос] дэлгэрэнгүй мэдээллийг аваарай.
¢а хүсвэл [$1 энэ ялгааг] үзэх боломжтой.",
+'rev-suppressed-unhide-diff' => "ТанÑ\8b Ñ\8fлгаÑ\81ан Ñ\8dÑ\80гÑ\8dÑ\86үүлÑ\8dлийн Ð°Ð»Ñ\8c Ð½Ñ\8dг Ð½Ñ\8c  '''далдлагдсан''' байна.
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Далдалсан логоос] дэлгэрэнгүй мэдээллийг аваарай.
¢Ð° Ñ\85Ò¯Ñ\81вÑ\8dл [$1 Ñ\8dнÑ\8d Ñ\8fлгааг] Ò¯Ð·эх боломжтой.",
+'rev-deleted-diff-view' => "ТанÑ\8b Ñ\8fлгаÑ\81ан Ñ\8dÑ\80гÑ\8dÑ\86үүлÑ\8dлийн Ð°Ð»Ñ\8c Ð½Ñ\8dг Ð½Ñ\8c '''Ñ\83Ñ\81Ñ\82гагдсан''' байна.
+Та уг ялгаврыг харах боломжтой; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} устгасан логоос] дэлгэрэнгүй мэдээлэлийг аваарай.",
+'rev-suppressed-diff-view' => "ТанÑ\8b Ñ\8fлгаÑ\81ан Ñ\8dÑ\80гÑ\8dÑ\86үүлÑ\8dлийг Ð°Ð»Ñ\8c Ð½Ñ\8dг Ð½Ñ\8c '''далдлагдсан''' байна.
+Та уг ялгаврыг харах боломжтой; [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} далдалсан логоос] дэлгэрэнгүй мэдээллийг аваарай.",
 'rev-delundel' => 'үзүүлэх/нуух',
 'rev-showdeleted' => 'үзүүлэх',
 'revisiondelete' => 'Засваруудыг устгах/сэргээх',
@@ -943,8 +946,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Хязгаарлалтын лог',
-'suppressionlogtext' => 'Ð\94ооÑ\80Ñ\85 Ð½Ñ\8c Ñ\81иÑ\81Ñ\82емийн Ð¾Ð¿ÐµÑ\80аÑ\82оÑ\80Ñ\83Ñ\83дааÑ\81 Ð½Ñ\83Ñ\83Ñ\81ан Ð°Ð³Ñ\83Ñ\83лгаÑ\82ай Ñ\85олбооÑ\82ой Ñ\83Ñ\81Ñ\82гал Ð±Ð° Ñ\82үгжÑ\8dÑ\8dнүүдийн Ð¶Ð°Ð³Ñ\81аалÑ\82 Ñ\8eм.
-[[Special:IPBlockList|IP түгжээний жагсаалтыг]] үзэж одоо хэрэгжиж буй хорио ба түгжээг харна уу.',
+'suppressionlogtext' => 'Энд Ð°Ð´Ð¼Ð¸Ð½Ñ\83Ñ\83дааÑ\81 Ð½Ñ\83Ñ\83Ñ\81ан Ð°Ð³Ñ\83Ñ\83лгаÑ\82ай Ñ\85олбооÑ\82ой Ñ\83Ñ\81Ñ\82гал Ð±Ð° Ñ\82үгжÑ\8dÑ\8dнүүдийн Ð¶Ð°Ð³Ñ\81аалÑ\82Ñ\83Ñ\83д Ð±Ð°Ð¹Ð½Ð°.
+[[Special:BlockList|түгжээний жагсаалтаас]] одоогоор хэрэгжиж буй хорио ба түгжээг харна уу.',
 
 # History merging
 'mergehistory' => 'Хуудсуудын түүхийг нэгтгэх',
@@ -978,7 +981,7 @@ $1",
 'mergelogpagetext' => 'Доорх нь нэг хуудасны түүхийг өөр түүхтэй нэгтгэсэн хамгийн сүүлийн нэгтгэлүүд юм.',
 
 # Diffs
-'history-title' => '"$1"-н засварын түүх',
+'history-title' => '"$1"-н хянасан түүх',
 'difference-multipage' => '(Хуудсууд хоорондын ялгаа)',
 'lineno' => '$1-р мөр:',
 'compareselectedversions' => 'Сонгосон хувилбаруудыг харьцуулах',
@@ -1164,7 +1167,7 @@ $1 тэмдэгтээс богино байх ёстой.',
 Бусад хэрэглэгчид тантай болбогдох тохиолдолд таны цахим шуудан илэрч харагдахгүй.',
 'prefs-help-email-required' => 'Мэйл хаяг шаардлагатай байна.',
 'prefs-info' => 'Ердийн мэдээлэл',
-'prefs-i18n' => 'Олон Улсжуулалт',
+'prefs-i18n' => 'Олон улсад нийцүүлэх',
 'prefs-signature' => 'Гарын үсэг',
 'prefs-dateformat' => 'Огнооны хэлбэр',
 'prefs-timeoffset' => 'Цагын зөрөө',
@@ -1187,14 +1190,14 @@ $1 тэмдэгтээс богино байх ёстой.',
 'userrights-lookup-user' => 'Хэрэглэгчдийн бүлгүүдийг удирдах',
 'userrights-user-editname' => 'Хэрэглэгчийн нэрээ оруулна уу:',
 'editusergroup' => 'Хэрэглэгчийн бүлгийг засварлах',
-'editinguser' => "Дараах хэрэглэгчийн эрхийг засварлаж байна: '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Дараах хэрэглэгчийн эрхийг засварлаж байна: '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Хэрэглэгчийн бүлгүүдийг засварлах',
 'saveusergroups' => 'Хэрэглэгчийн бүлгүүдийг хадгалах',
 'userrights-groupsmember' => 'Үүний гишүүн:',
 'userrights-groupsmember-auto' => 'Дараахийн далд гишүүн:',
 'userrights-groups-help' => 'Та энэ хэрэглэгчийн гишүүн болсон бүлгүүдийг өөрчлөх боломжтой.
¥Ð°Ð¹Ñ\80Ñ\86гийг Ñ\82Ñ\8dмдÑ\8dглÑ\8dÑ\81Ñ\8dн Ð±Ð°Ð¹Ð²Ð°Ð» Ñ\85Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87 Ñ\82Ñ\8dÑ\80 Ð±Ò¯Ð»Ñ\8dгÑ\82 Ð±Ð°Ð¹Ð³Ð°Ð°, Ñ\82Ñ\8dмдÑ\8dглÑ\8dÑ\8dгүй Ð±Ð°Ð¹Ð²Ð°Ð» бүлэгт байхгүй гэсэн үг.
-<nowiki>*</nowiki> гэдэг нь нэгэнт нэмсэн бол бүлгийг авч болохгүй, эсвэл түүний эсрэгээр байна гэсэн үг.',
\94Ó©Ñ\80вөлжин Ð½Ò¯Ð´Ð¸Ð¹Ð³ Ð±Ó©Ð³Ð»Ó©Ñ\81өн Ð±Ð°Ð¹Ð²Ð°Ð» Ñ\85Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87 Ñ\82Ñ\83Ñ\85айн Ð±Ò¯Ð»Ñ\8dгÑ\82 Ð±Ð°Ð¹Ð³Ð°Ð°, Ð±Ó©Ð³Ð»Ó©Ó©Ð³Ò¯Ð¹ Ð±Ð¾Ð» Ñ\83г бүлэгт байхгүй гэсэн үг.
+* A * гэдэг нь нэгэнт нэмсэн бол бүлгийг авч болохгүй, эс бөгөөс болно гэсэн үг.',
 'userrights-reason' => 'Шалтгаан:',
 'userrights-no-interwiki' => 'Таньд өөр викинүүдэд хэрэглэгчдийн эрхийг өөрчлөх зөвшөөрөл байхгүй.',
 'userrights-nodatabase' => '$1 мэдээллийн сан байхгүй, эсвэл дотоодынх биш байна.',
@@ -1422,8 +1425,8 @@ $1 тэмдэгтээс богино байх ёстой.',
 'filetype-bad-ie-mime' => 'Интернэт Эксплорер нь зөвшөөрөгдөхгүй, аюултай байх боломжтой файлын төрөл болох "$1" гэж илрүүлэх тул энэ файлыг оруулах боломжгүй байна.',
 'filetype-unwanted-type' => "'''\".\$1\"''' нь хүсэгдэхгүй файлын төрөл байна.
 Ашиглахыг зөвлөж буй {{PLURAL:\$3|файлын төрөл|файлын төрлүүд}} нь \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' нь зөвшөөрөгдөхгүй файлын төрөл байна.
-Зөвшөөрөгдөх {{PLURAL:\$3|файлын төрөл|файлын төрлүүд}} нь \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|нь зөвшөөрөгдөхгүй файлын төрөл байна.|нь зөвшөөрөгдөхгүй файлын төрөл байна}}.
+Зөвшөөрөгдөх {{PLURAL:$3|файлын төрөлд|файлын төрөлд}} $2.',
 'filetype-missing' => 'Энэ файлд өргөтгөл байхгүй байна (".jpg" гэх мэт).',
 'empty-file' => 'Таны явуулсан файл хоосон байв.',
 'file-too-large' => 'Таны явуулсан файл хэтэрхий том байв.',
@@ -1494,6 +1497,20 @@ file_uploads тохиргоогоо шалгана уу.',
 Та үүнийг дахин оруулахын өмнө $1-г шалгаж үзнэ үү.',
 'filename-bad-prefix' => "Таны оруулж байгаа файлын нэр '''\"\$1\"'''-р эхэлж байна. Энэ нь файлыг тодорхойлойлоогүй, голдуу дижитал аппаратын автоматаар гаргадаг нэр болно.
 Файланд түүнийг илүү сайн тодорхойлсон нэр өгнө үү.",
+'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax is as follows:
+#   * Everything from a "#" character to the end of the line is a comment
+#   * Every non-blank line is a prefix for typical filenames assigned automatically by digital cameras
+CIMG # Casio
+DSC_ # Nikon
+DSCF # Fuji
+DSCN # Nikon
+DUW # зарим гар утаснууд
+IMG # ерөнхий
+JD # Jenoptik
+MGP # Pentax
+PICT # бусад.
+ #</pre> <!-- leave this line exactly as it is -->',
 'upload-success-subj' => 'Файлыг амжилттай орууллаа',
 'upload-success-msg' => '[$2]-с амжилттай оруулав. Энд байна: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Оруулах үеийн асуудал',
@@ -1515,10 +1532,13 @@ URL нь хүчинтэй, мөн түүн руу орж болж байгаа 
 'upload-too-many-redirects' => 'URL-д хэт олон чиглүүлэгч байв',
 'upload-unknown-size' => 'Үл мэдэгдэх хэмжээ',
 'upload-http-error' => 'HTTP алдаа гарав: $1',
+'upload-copy-upload-invalid-domain' => 'Энэ хаяг дээрээс хуулах боломжгүй байна.',
 
 # File backend
+'backend-fail-stream' => '$1 файлыг дамжуулж чадсангүй.',
 'backend-fail-backup' => '$1 файлыг нөөцөлж чадсангүй.',
 'backend-fail-notexists' => '$1 файл байхгүй байна.',
+'backend-fail-notsame' => '$1 дээр ялгаатай файл аль эрт үүссэн байна.',
 'backend-fail-invalidpath' => '$1 хадгалах зам хуурамч байна.',
 'backend-fail-delete' => '$1 файлыг устгаж чадсангүй.',
 'backend-fail-alreadyexists' => '$1 файл аль хэдийн байж байна.',
@@ -1530,6 +1550,13 @@ URL нь хүчинтэй, мөн түүн руу орж болж байгаа 
 'backend-fail-closetemp' => 'Түр зуурын файлыг хааж чадсангүй.',
 'backend-fail-read' => '$1 файлыг уншиж чадсангүй.',
 'backend-fail-create' => '$1 файлыг үүсгэж чадсангүй.',
+'backend-fail-maxsize' => '$1 файлын хэмжээ {{PLURAL:$2|нэг байтаас|$2 байтаас}} хэтэрсэн тул хадгалж болохгүй байна. \\',
+'backend-fail-readonly' => '"\'\'$2\'\'" - оос болоод нөөцийн сангийн "$1" системийг зөвхөн унших боломжтой байна. \\',
+'backend-fail-synced' => 'Дотоод нөөцийн сангийн систем дэх "$1" файл тогтворгүй төлөвт байна',
+'backend-fail-connect' => '"$1" нөөцийн сангийн системтэй холбогдож чадсангүй.',
+'backend-fail-internal' => '"$1" нөөцийн сангийн системд үл танигдах алдаа гарлаа.',
+'backend-fail-contenttype' => '"$1" дахь файлын агуулгын төрлийг таньж чадсангүй.',
+'backend-fail-usable' => '$1 файлд хангалттай зөвшөөрөл олгогдоогүй эсвэл агуулах хавтасгүйн улмаас хадгалж чадсангүй.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Хандах эрхгүй байна',
@@ -1675,7 +1702,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 # Random page
 'randompage' => 'Санамсаргүй хуудас',
-'randompage-nopages' => 'ЭнÑ\8d Ð½Ñ\8dÑ\80ний Ð·Ð°Ð¹Ð´ Ñ\85Ñ\83Ñ\83даÑ\81 Ð±Ð°Ð¹Ñ\85гүй Ð±Ð°Ð¹Ð½Ð°.',
+'randompage-nopages' => 'Ð\94аÑ\80ааÑ\85 {{PLURAL:$2|нÑ\8dÑ\80ний Ð·Ð°Ð¹Ð½Ð´|нÑ\8dÑ\80ний Ð·Ð°Ð¹Ð½Ð´}} Ñ\85Ñ\83Ñ\83даÑ\81 Ð±Ð°Ð¹Ñ\85гүй Ð±Ð°Ð¹Ð½Ð° : $1. \\',
 
 # Random redirect
 'randomredirect' => 'Санамсаргүй чиглүүлэгч',
@@ -1701,15 +1728,15 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'statistics-users-active-desc' => 'Сүүлийн {{PLURAL:$1|өдөрт|$1 өдөрт}} үйлдэл хийсэн хэрэглэгчид',
 'statistics-mostpopular' => 'Хамгийн олон удаа үзсэн хуудсууд',
 
-'disambiguations' => 'Салаа утгатай үгнүүд',
+'disambiguations' => 'Өөр агуулгатай хуудсуудтай холбоотой хуудсууд',
 'disambiguationspage' => 'Template:Салаа утгатай',
 'disambiguations-text' => "Дараах хуудсууд '''салаа утгатай үгнүүдийн хуудас''' руу холбогдоно.
 Тэдгээр нь зөв сэдэв руу холбогдох ёстой.<br />
 [[MediaWiki:Disambiguationspage]]-с холбогдсон загвар хэрэглэж байвал хуудас нь салаа утгатай үгнүүдийн хуудас гэж тооцогдоно.",
 
 'doubleredirects' => 'Давхар чиглүүлэгчүүд',
-'doubleredirectstext' => 'Энэ хуудас нь өөр чиглүүлэгч хуудас руу чиглүүлдэг хуудсуудыг жагсаана.
\9cÓ©Ñ\80 Ñ\82Ñ\83Ñ\81 Ð±Ò¯Ñ\80 Ð½Ñ\8c Ñ\8dÑ\85ний Ð±Ð° Ñ\85оÑ\91Ñ\80 Ð´Ð°Ñ\85Ñ\8c Ñ\87иглүүлÑ\8dгÑ\87 Ñ\80Ò¯Ò¯Ñ\85 Ñ\85олбооÑ\81Ñ\8bг Ð±Ð¾Ð»Ð¾Ð½ Ñ\8dÑ\85ний Ñ\87иглүүлÑ\8dгÑ\87ийн Ñ\87иглÑ\8dÑ\85 Ñ\91Ñ\81Ñ\82ой, Ñ\85оÑ\91Ñ\80 Ð´Ð°Ñ\85Ñ\8c Ñ\87иглүүлÑ\8dгÑ\87ийн Ñ\87иглÑ\8dÑ\85 "жинÑ\85Ñ\8dнÑ\8d" Ñ\87иглÑ\8dÑ\85 Ñ\91Ñ\81Ñ\82ой Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bг Ð·Ð°Ð°на.',
+'doubleredirectstext' => 'Энэ хуудсанд өөр хуудсуудыг давхар заасан хуудсуудыг жагсаасан байна
\9cÓ©Ñ\80 Ñ\82Ñ\83Ñ\81 Ð±Ò¯Ñ\80 Ð½Ñ\8c Ñ\8dÑ\85ний Ð·Ð°Ð°Ñ\81ан Ð±Ð¾Ð»Ð¾Ð½ Ñ\82үүний Ð´Ð°Ñ\80ааÑ\85 Ð·Ð°Ð°Ñ\81ан Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83дÑ\8bг Ð¶Ð°Ð³Ñ\81аан Ð±Ð¸Ñ\87Ñ\81Ñ\8dний Ñ\81аÑ\86Ñ\83Ñ\83 Ñ\83г Ñ\85оÑ\91Ñ\80 Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bн Ñ\8dÑ\86Ñ\81ийн Ñ\87иглүүлÑ\81Ñ\8dн "жинÑ\85Ñ\8dнÑ\8d" Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bг Ò¯Ð·Ò¯Ò¯Ð»Ñ\81Ñ\8dн Ð±Ð°Ð¹на.',
 'double-redirect-fixed-move' => '[[$1]] зөөгдөж, [[$2]] руух чиглүүлэгч боллоо',
 'double-redirect-fixer' => 'Чиглүүлэгчийг засварлагч',
 
@@ -1734,7 +1761,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'nviews' => '$1 удаа үзсэн',
 'specialpage-empty' => 'Энэ мэдүүлэгт үр дүн гарсангүй.',
 'lonelypages' => 'Өнчин хуудсууд',
-'lonelypagestext' => 'Ð\94аÑ\80ааÑ\85 Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83д Ð½Ñ\8c {{SITENAME}}-н Ð±Ñ\83Ñ\81ад Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83дааÑ\81 Ñ\85олбогдоогүй байна.',
+'lonelypagestext' => 'ЭнÑ\8d Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83д {{SITENAME}}-даÑ\85Ñ\8c Ð±Ñ\83Ñ\81ад Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83дÑ\82ай Ñ\85олбогдоогүй Ñ\8dÑ\81вÑ\8dл Ð·Ð°Ð°Ð³Ð°Ð°Ñ\81 Ñ\85Ñ\8dÑ\82Ñ\8dÑ\80Ñ\81Ñ\8dн байна.',
 'uncategorizedpages' => 'Ангилагдаагүй хуудсууд',
 'uncategorizedcategories' => 'Ангилагдаагүй ангиллууд',
 'uncategorizedimages' => 'Ангилагдаагүй зургууд',
@@ -1841,7 +1868,8 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'linksearch-ns' => 'Нэрний зай:',
 'linksearch-ok' => 'Хайх',
 'linksearch-text' => '"*.wikipedia.org" зэрэг орлуулагч тэмдэгт хэрэглэх боломжтой.<br />
-Зөвшөөрөгдөх протокол: <tt>$1</tt>',
+Дор хаяж дээд түвшиний домайн хэрэгтэй байна, жишээ нь "*.org".<br />
+Дэмжигдэх протоколууд : <tt>$1</tt> (эдгээрээс алийг нь ч хайлтад бүү оруул).',
 'linksearch-line' => '$1 нь $2-с холбогдсон',
 'linksearch-error' => 'Орлуулагч тэмдэгт хост нэрийн эхлэлд л гарах боломжтой.',
 
@@ -1891,7 +1919,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'emailpagetext' => 'Энэ хэрэглэгч рүү мэйл илгээхэд доорхийг бөглөнө.
 Таны өөрийн [[Special:Preferences|хэрэглэгчийн тохиргоонд]] оруулсан мэйл хаяг нь "Хэнээс" гэсэн хэсэгт гарах тул хүлээн авагч хариугаа тань руу шууд илгээх боломжтой.',
 'usermailererror' => 'Мэйл нь буцаж ирсэн шалтгаан:',
-'defemailsubject' => '{{SITENAME}} Ð¸-мÑ\8dйл',
+'defemailsubject' => '{{SITENAME}} Ð´Ð°Ñ\85Ñ\8c "$1" Ñ\85Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87ийн Ð¸-мÑ\8dйл Ñ\85аÑ\8fг',
 'usermaildisabled' => 'Хэрэглэгчийн и-мэйлийг идэвхигүйжүүлэв',
 'usermaildisabledtext' => 'Та энэ викигийн бусад хэрэглэгч руу и-мэйл явуулах боломжгүй',
 'noemailtitle' => 'Мэйл хаяггүй байна',
@@ -1915,7 +1943,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 # User Messenger
 'usermessage-summary' => 'Системийн мессеж үлдээв.',
 'usermessage-editor' => 'Системийн мессежийг засварлагч',
-'usermessage-template' => 'МедиаВики:ХэрэглэгчийнМэдэгдэл',
+'usermessage-template' => 'МедиаВики:ХэрэглэгчийнМэдээ',
 
 # Watchlist
 'watchlist' => 'Миний хянаж буй хуудсууд',
@@ -1942,7 +1970,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'watchmethod-list' => 'хяналтад буй хуудсуудад саяхан өөрчлөлт орсон эсэхийг шалгаж байна',
 'watchlistcontains' => 'Таны хянах жагсаалтанд $1 хуудас байна.',
 'iteminvalidname' => "'$1' зүйлд асуудал гарлаа, хүчингүй нэр...",
-'wlnote' => "Ð\94ооÑ\80Ñ\85 Ð½Ñ\8c Ñ\81үүлийн {{PLURAL:$2|Ñ\86агÑ\82|'''$2''' Ñ\86агÑ\82}} Ñ\85ийгдÑ\81Ñ\8dн {{PLURAL:$1|Ñ\81үүлийн|Ñ\81үүлийн '''$1'''}} Ó©Ó©Ñ\80Ñ\87лөлÑ\82 Ñ\8eм.",
+'wlnote' => "Энд Ð½Ñ\8c {{PLURAL:$2|Ñ\86агийн|'''$2''' Ñ\86агийн}} Ó©Ð¼Ð½Ó© Ñ\85амгийн Ñ\81үүлд Ñ\85ийÑ\81Ñ\8dн {{PLURAL:$1|Ó©Ó©Ñ\80Ñ\87лөлÑ\82| '''$1''' Ó©Ó©Ñ\80Ñ\87лөлÑ\82үүд}} Ð±Ð°Ð¹Ð½Ð°.",
 'wlshowlast' => 'Сүүлийн $1 цагийн $2 өдрийн $3-г харуул',
 'watchlist-options' => 'Хянаж буй хуудсуудын жагсаалтны сонголтууд',
 
@@ -1962,27 +1990,36 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'enotif_anon_editor' => '$1 бүртгэлгүй хэрэглэгч',
 'enotif_body' => '$WATCHINGUSERNAME танаа,
 
-{{SITENAME}}-н $PAGETITLE хуудаст $PAGEEDITOR $PAGEEDITDATE-нд $CHANGEDORCREATED үйлдэл хийжээ. Одоогийн засварыг $PAGETITLE_URL хуудсаас харна уу.
+To change your watchlist settings, visit
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+{{SITENAME}}-н $PAGETITLE хуудаст $PAGEEDITOR $PAGEEDITDATE-нд $CHANGEDORCREATED үйлдэл хийжээ. $PAGETITLE_URL -руу орж одоогоор хийгдээд байгаа засварыг харна уу.
 
 $NEWPAGE
 
-Засварлагчийн тойм: $PAGESUMMARY $PAGEMINOREDIT
+Зассан тойм: $PAGESUMMARY $PAGEMINOREDIT
 
-Засварлагчтай холбоо барих:
-мэйл: $PAGEEDITOR_EMAIL
+Засвар хийсэн хүний холбогдъё гэвэл:
µÐ¼Ñ\8dйл: $PAGEEDITOR_EMAIL
 вики: $PAGEEDITOR_WIKI
 
-Та энэ хуудаст зочлохгүй бол өөр өөрчлөлтүүдийн талаарх мэдээлэл өгөхгүй болно.
-Мөн та хянаж буй хуудсуудын мэдээллэх бүртгэлийг өөрчилж болно.
+Өөр шинээр хийгдэх өөрчлөлтүүдийн талаарх уг хуудсан орж л байж мэдэх боломжтой.
+Мөн та үзсэн хуудсынхаа шинээр хийгдэх өөрчлөлтүүдийг сануулах тохиргоог шинэчилж болно. 
 
-             {{SITENAME}}-н мэдээллэх систем
+                        {{SITENAME}} -н сануулгын систем
 
 --
-Хянаж буй хуудсуудынхаа тохиргоог өөрчлөхийн тулд дараах хуудаст зочилно уу:
-{{canonicalurl:{{#special:EditWatchlist}}}}
+Имейл хаягаар шинэчлэл хийсэн талаар мэдээлэл явуулах тохиргоог 
+{{canonicalurl:{{#special:Preferences}}}} хаягаар орж хийнэ үү
+
+Хянаж буй хуудсын жагсаалтын тохиргоог
+{{canonicalurl:{{#special:EditWatchlist}}}} хаягаар орж хийнэ үү
+
+Хянаж буй хуудын жагсаалтаас хаяг хасах тохиолдолд
+$UNWATCHURL
 
\94Ñ\8dлгÑ\8dÑ\80Ñ\8dнгүй Ð¼Ñ\8dдÑ\8dÑ\8dлÑ\8dл:
-{{canonicalurl:{{MediaWiki:Helppage}}}}',
¡Ð°Ð½Ð°Ð» Ñ\81Ñ\8dÑ\82гÑ\8dгдÑ\8dл Ð±Ð¾Ð»Ð¾Ð½ Ñ\82Ñ\83лгаÑ\80Ñ\81ан Ð±Ñ\8dÑ\80Ñ\85Ñ\88Ñ\8dÑ\8dлÑ\8dÑ\8d :
+{{canonicalurl:{{MediaWiki:Helppage}}}} хаягаар орж бичнэ үү',
 
 # Delete
 'deletepage' => 'Хуудсыг устга',
@@ -2012,10 +2049,10 @@ $NEWPAGE
 ** Зохиогчийн эрхэд халдсан
 ** Вандализм',
 'delete-edit-reasonlist' => 'Устгах шалтгаануудыг засварлах',
-'delete-toobig' => 'ЭнÑ\8d Ñ\85Ñ\83Ñ\83даÑ\81нÑ\8b Ð·Ð°Ñ\81ваÑ\80Ñ\8bн Ñ\82Ò¯Ò¯Ñ\85 Ð¼Ð°Ñ\88 Ñ\82ом Ð±Ð°Ð¹Ð³Ð°Ð° Ð±Ó©Ð³Ó©Ó©Ð´ $1 Ð³Ð°Ñ\80Ñ\83й Ð·Ð°Ñ\81ваÑ\80Ñ\82ай байна.
-{{SITENAME}}-д Ñ\81анамÑ\81аÑ\80гүй Ð±Ð°Ð¹Ð´Ð»Ð°Ð°Ñ\80 Ð¼Ñ\83Ñ\83гааÑ\80 Ð½Ó©Ð»Ó©Ó©Ð»Ð¶ Ð±Ð¾Ð»Ð·Ð¾Ñ\88гүй Ñ\82Ñ\83л Ñ\8dдгÑ\8dÑ\8dÑ\80 Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83дÑ\8bг Ñ\83Ñ\81Ñ\82гаÑ\85 Ñ\8fвдлыг хорьсон байна.',
-'delete-warning-toobig' => 'Энэ хуудасны засварын түүх маш том байгаа бөгөөд $1 гаруй засвартай байна.
-Устгавал {{SITENAME}}-н мэдээллийн сангийн үйл ажиллагаанд нөлөөлж магадгүй тул та анхаар сэрэмжтэйгээр дараах үйлдлээ гүйцэтгэнэ үү.',
+'delete-toobig' => 'Уг Ñ\85Ñ\83Ñ\83даÑ\81нÑ\8b Ð·Ð°Ñ\81ваÑ\80Ñ\8bн Ñ\82Ò¯Ò¯Ñ\85 Ð¼Ð°Ñ\88 Ð¸Ñ\85, $1 {{PLURAL:$1|заÑ\81ваÑ\80|гаÑ\80Ñ\83й Ð·Ð°Ñ\81ваÑ\80Ñ\82ай}} байна.
+{{SITENAME}}-н Ð°Ñ\8eÑ\83лгүй Ð±Ð°Ð¹Ð´Ð»Ñ\8bн Ò¯Ò¯Ð´Ð½Ñ\8dÑ\8dÑ\81 Ð´Ñ\8dÑ\8dÑ\80Ñ\85 Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bг Ñ\83Ñ\81Ñ\82гаÑ\85ыг хорьсон байна.',
+'delete-warning-toobig' => 'Энэ хуудасны засварын түүх маш том байгаа бөгөөд {{PLURAL:$1| гаруй засвар| гаруй засварууд}} байна.
+Устгавал {{SITENAME}}-н мэдээллийн сангийн үйл ажиллагаанд нөлөөлж магадгүй тул та анхаарна уу.',
 
 # Rollback
 'rollback' => 'Засваруудыг буцаах',
@@ -2041,7 +2078,8 @@ $NEWPAGE
 
 # Protect
 'protectlogpage' => 'Хамгаалалтын лог',
-'protectlogtext' => 'доорх нь түгжигдсэн ба түгжигдээгүй хуудасны лист.',
+'protectlogtext' => 'Энд хуудсын хамгаалалтын өөрчлөлтүүдийн жагсаалтууд байна.
+[[Special:ProtectedPages|хамгаалагдсан хуудсын жагсаалт]] -руу орж одоогоор хүчинтэй байгаа хуудасны хамгаалалтыг харна уу.',
 'protectedarticle' => '"[[$1]]"-г хамгааллаа',
 'modifiedarticleprotection' => '"[[$1]]"-н хамгаалалтын түвшинг өөрчиллөө',
 'unprotectedarticle' => '"[[$1]]"-ны хамгаалалтыг цуцлав',
@@ -2108,11 +2146,14 @@ $NEWPAGE
 'undeletepage' => 'Устгагдсан хуудсуудыг харах ба сэргээх',
 'undeletepagetitle' => "'''Дараах нь [[:$1|$1]]-н устгагдсан засварууд юм.'''",
 'viewdeletedpage' => 'Устгагдсан хуудсуудыг харах',
-'undeletepagetext' => 'Дараах хуудсууд устгагдсан боловч одоогоор сэргээж болохоор төлөвт байна.',
+'undeletepagetext' => '{{PLURAL:$1|Энэ хуудас|Дараах $1 хуудсууд}} устгагдсан хэдий ч нөөцөд байгаа учраас сэргээх боломжтой.
+Нөөцийг үе үе цэвэрлэдэг болохыг анхаараарай.',
 'undelete-fieldset-title' => 'Засваруудыг сэргээх',
-'undeleteextrahelp' => "Бүхэл хуудсыг сэргээхийн тулд бүх жижиг дөрвөлжингүүдийг сонгохгүй үлдээгээд '''''Сэргээх''''' товчийг дар. Зарим хувилбаруудыг сэргээхийн тулд сэргээх хувилбаруудын өмнөх жижиг дөрвөлжинг идэвхжүүлээд '''''Сэргээх''''' товчийг дар. '''''Дахин эхлүүлэх''''' товчийг дарснаар тайлбарын талбар ба бүх жижиг дөрвөлжингүүд хоосон болно",
+'undeleteextrahelp' => "Бүхэл хуудсыг сэргээхийн тулд бүх жижиг дөрвөлжингүүдийг сонгохгүй үлдээгээд '''''{{int:undeletebtn}}''''' товчийг дар.
+Зарим хувилбаруудыг сэргээхийн тулд сэргээх хувилбаруудын өмнөх жижиг дөрвөлжинг идэвхжүүлээд '''''{{int:undeletebtn}}''''' товчийг дар.",
 'undeleterevisions' => '$1 хувилбар архивлагдлаа',
-'undeletehistory' => 'Хэрэв та энэ хуудсыг сэргээвэл түүний өмнөх бүх хувилбарууд нь түүх рүү сэргээгдэж бичигдэнэ. Хэрэв үүнийг устгаснаас хойш үүнтэй адил нэртэй шинэ хуудас үүсгэгдсэн бол сэргээгдсэн хувилбарууд түүх хэсэгт гарч ирэх боловч одоо байгаа бодит хуудсыг автоматаар солихгүй.',
+'undeletehistory' => 'Хэрэв энэ хуудсыг сэргээвэл өмнөх бүх залруулгууд түүх байдлаар сэргээгдэх болно .
+Хэрэв адил нэртэй шинэ хуудас үүсгэгдсэн байгаа бол сэргээгдсэн хувилбарууд түүх хэсэгт гарч ирэх боловч одоо байгаа хуудсыг шууд солихгүй.',
 'undeleterevdel' => 'Дээд хуудас буюу файлын засвар бага зэргээр устгагдах явдал гарах бол хуудас сэргээгдэхгүй.
 Ийм тохиолдолд та хамгийн сүүлд устгагдсан засварыг нууцлахаа, эсвэл тэмдэглэхээ болих шаардлагатай.',
 'undeletehistorynoadmin' => 'Энэ өгүүлэл устгагдсан. Үүний устгагдсан шалтгаан нь устгалын өмнө энэ хуудсыг засварласан хэрэглэгчдийн тухай мэдээллүүдтэй хамт доорх тайланд өгөгдсөн байгаа. Эдгээр устгагдсан хувилбаруудад яг юу байсныг зөвхөн администраторууд л харж чадна.',
@@ -2239,8 +2280,8 @@ $1',
 'ipb-change-block' => 'Эдгээр тохиргоотойгоор энэ хэрэглэгчийг дахин түгжих',
 'badipaddress' => 'Хүчингүй IP хаяг',
 'blockipsuccesssub' => 'Түгжээ амжилттай боллоо.',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] түгжигдсэн.
-<br />Түгжилтийн тоймыг [[Special:BlockList|түгжигдсэн IP-ийн жагсаалт]]аас үзнэ үү.',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] түгжигдсэн байна.
+<br />Түгжсэн тоймыг [[Special:BlockList|түгжигдсэн IP-ийн жагсаалт]] аас харна уу.',
 'ipb-edit-dropdown' => 'Түгжих шалтгаануудыг засварлах',
 'ipb-unblock-addr' => '$1-н түгжээг тайлах',
 'ipb-unblock' => 'Хэрэглэгчийн нэр эсвэл IP хаягийн түгжээг тайлах',
@@ -2280,9 +2321,9 @@ $1',
 Лавлагааны зориулалтаар далдлагааны логийг доор оруулав:',
 'blocklogentry' => '[[$1]] нь $2 $3 хугацаатайгаар түгжигдсэн',
 'reblock-logentry' => '[[$1]]-н түгжээний тохиргоог $2 $3 хугацаатай болгож өөрчилсөн',
-'blocklogtext' => 'Энэ нь хэрэглэгчийг түгжсэн болон тайлсан үйлдлийн лог юм.
-Автоматаар түгжигдсэн IP хаягууд жагсаагдаагүй.
-[[Special:BlockList|IP хаягийн түгжээний жагсаалтыг]] харж одоо түгжигдсэн хаягуудыг харна уу.',
+'blocklogtext' => 'Энд хэрэглэгчийг түгжсэн болон түгжээг тайлсан лог байна.
+Автоматаар түгжигдсэн IP хаягууд жагсаагтад ороогүй болно.
+[[Special:BlockList|IP Ñ\85аÑ\8fгийн Ñ\82үгжÑ\8dÑ\8dний Ð¶Ð°Ð³Ñ\81аалÑ\82Ñ\8bг]] Ñ\85аÑ\80ж Ð¾Ð´Ð¾Ð¾ Ñ\82үгжигдÑ\81Ñ\8dн Ñ\8dÑ\81вÑ\8dл Ñ\85оÑ\80ионд Ð±Ð°Ð¹Ð³Ð°Ð° Ñ\85аÑ\8fгÑ\83Ñ\83дÑ\8bг Ñ\85аÑ\80на Ñ\83Ñ\83.',
 'unblocklogentry' => '$1 идэвхтэй',
 'block-log-flags-anononly' => 'зөвхөн нэргүй хэрэглэгчид',
 'block-log-flags-nocreate' => 'Бүртгэл үүсгэх боломжгүй',
@@ -2605,8 +2646,8 @@ $1',
 
 # Spam protection
 'spamprotectiontitle' => 'Спамаас хамгаалах шүүлтүүр',
-'spamprotectiontext' => 'ТанÑ\8b Ñ\85адгалаÑ\85Ñ\8bг Ñ\85Ò¯Ñ\81Ñ\81Ñ\8dн Ñ\85Ñ\83Ñ\83даÑ\81 Ñ\81памааÑ\81 Ñ\85амгаалаÑ\85 Ñ\88үүлÑ\82Ò¯Ò¯Ñ\80Ñ\8dÑ\8dÑ\80 Ñ\85аагдлаа.
­Ð½Ñ\8d Ð½Ñ\8c Ð³Ð°Ð´Ð½Ñ\8b Ñ\81айÑ\82 Ñ\80Ñ\83Ñ\83Ñ\85 Ñ\85олбооÑ\81нÑ\8b Ñ\83лмааÑ\81 Ð³Ð°Ñ\80Ñ\81ан Ð±Ð°Ð¹Ð¶ Ð¼Ð°Ð³Ð°Ð´Ð³Ò¯й.',
+'spamprotectiontext' => 'СпамааÑ\81 Ñ\85амгаалаÑ\85 Ñ\88үүлÑ\82Ò¯Ò¯Ñ\80 Ñ\82анÑ\8b Ñ\85адгалаÑ\85Ñ\8bг Ñ\85Ò¯Ñ\81Ñ\81Ñ\8dн Ñ\85Ñ\83Ñ\83дÑ\81Ñ\8bг Ñ\85ааÑ\81ан Ð±Ð°Ð¹Ð½а.
¥Ð°Ñ\80 Ð´Ð°Ð½Ñ\81ад Ð¾Ñ\80Ñ\81он Ð³Ð°Ð´Ð½Ñ\8b Ñ\81айÑ\82Ñ\82ай Ñ\85олбооÑ\82ой Ð±Ð°Ð¹Ñ\81нааÑ\81 Ð±Ð¾Ð»Ñ\81он Ð±Ð¾Ð»Ð¾Ð»Ñ\82ой.',
 'spamprotectionmatch' => 'Дараах текст нь манай спамаас хамгаалах шүүлтүүрт баригдлаа: $1',
 'spambot_username' => 'МедиаВикигийн спамыг цэвэрлэх',
 'spam_reverting' => '$1 руух холбоосгүй хамгийн сүүлийн хувилбар руу шилжүүлж байна',
@@ -2628,7 +2669,7 @@ $1',
 'markaspatrolleddiff' => 'Хяналтанд авъя',
 'markaspatrolledtext' => 'Үүнийг хяналтанд авъя',
 'markedaspatrolled' => 'Хяналтанд авсан',
-'markedaspatrolledtext' => 'СонгоÑ\81он нэмэлт/өөрчлөлтийг хяналтанд авлаа.',
+'markedaspatrolledtext' => 'Уг Ñ\81онгоÑ\81он [[:$1]]  нэмэлт/өөрчлөлтийг хяналтанд авлаа.',
 'rcpatroldisabled' => 'Сүүлийн өөрчлөлтүүдийн эргүүл хаагдсан байна',
 'rcpatroldisabledtext' => 'Сүүлийн өөрчлөлтүүдийн эргүүл одоогоор хаагдсан байна.',
 'markedaspatrollederror' => 'Хяналтанд авч чадсангүй',
@@ -2656,8 +2697,8 @@ $1',
 'nextdiff' => 'Удаах засвар →',
 
 # Media information
-'mediawarning' => "'''Анхаар''':Энэ файл нь хор нөлөөтэй код агуулсан байж болзошгүй, хэрвээ ачааллавал таны системийн аюулгүй байдал доройтож болзошгүй.",
-'imagemaxsize' => 'Доорх шаардлагын дагуу зургын хуудсанд хязгаарлалт хийлээ:',
+'mediawarning' => "'''Анхаар''': Энэ файл нь хор нөлөөтэй код агуулсан байж болзошгүй, үүнийг ачааллах аваас системийн хамгаалалт тань доройтож болзошгүй.",
+'imagemaxsize' => "Зурагны хэмжээний хязгаар :<br />''(файлын тайлбар хуудсууд)''",
 'thumbsize' => 'Жижиг зургийн хэмжээ:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|хуудас|хуудас}}',
 'file-info' => 'файлын хэмжээ: $1, MIME төрөл: $2',
@@ -2748,8 +2789,8 @@ $1',
 'exif-colorspace' => 'Өнгөний завсар',
 'exif-componentsconfiguration' => 'Бүх бүрэлдэхүүн хэсгүүдийн утга',
 'exif-compressedbitsperpixel' => 'Зургийн файлыг шахах арга',
-'exif-pixelydimension' => 'Зургийн хүчинтэй өргөн',
-'exif-pixelxdimension' => 'Зургийн хүчинтэй өндөр',
+'exif-pixelydimension' => 'Зургийн өргөн',
+'exif-pixelxdimension' => 'Зургийн өндөр',
 'exif-usercomment' => 'Хэрэглэгчдийн тэмдэглэл',
 'exif-relatedsoundfile' => 'Холбоотой дуун файл',
 'exif-datetimeoriginal' => 'Мэдээллийг үүсгэсэн огноо ба цаг',
@@ -2763,9 +2804,9 @@ $1',
 'exif-exposureprogram' => 'Гэрэл өгөх хугацааны программ',
 'exif-spectralsensitivity' => 'Спектралийн мэдрэмтгий байдал',
 'exif-isospeedratings' => 'ISO хурдны үнэлгээ',
-'exif-shutterspeedvalue' => 'Хөшигний хурд',
-'exif-aperturevalue' => 'Дурангийн өрц',
-'exif-brightnessvalue' => 'Ð\93Ñ\8dÑ\80Ñ\8dлÑ\82Ñ\8dлÑ\82',
+'exif-shutterspeedvalue' => 'Хөшигний APEX хурд \\',
+'exif-aperturevalue' => 'Дурангийн өрц  \\',
+'exif-brightnessvalue' => 'ТодÑ\80ол Ð±Ò¯Ð´Ñ\8dгÑ\80Ñ\8dл',
 'exif-exposurebiasvalue' => 'Гэрэл өгөх хурдны тохиргооны хэмжээ',
 'exif-maxaperturevalue' => 'Газрын диафрагмын дээд өргөн',
 'exif-subjectdistance' => 'Субъектийн орших зай',
@@ -2838,9 +2879,9 @@ $1',
 'exif-orientation-3' => '180° эргүүллээ',
 'exif-orientation-4' => 'Босоогоор эргүүлэх',
 'exif-orientation-5' => 'Цагийн зүүний эсрэгээр 90° эргүүлж босоогоор эргүүллээ',
-'exif-orientation-6' => 'Цагийн зүүний дагуу 90° эргүүллээ',
+'exif-orientation-6' => 'Цагийн зүүний дагуу 90° эргүүлсэн байдал',
 'exif-orientation-7' => 'Цагийн зүүний дагуу 90° эргүүлж босоогоор эргүүллээ',
-'exif-orientation-8' => 'Цагийн зүүний эсрэгээр 90° эргүүллээ',
+'exif-orientation-8' => 'Цагийн зүүний эсрэг 90° эргүүлсэн байдал',
 
 'exif-planarconfiguration-1' => 'Chunky формат',
 
@@ -2947,9 +2988,9 @@ $1',
 # Pseudotags used for GPSDestDistanceRef
 'exif-gpsdestdistance-k' => 'Километр',
 'exif-gpsdestdistance-m' => 'Милл',
-'exif-gpsdestdistance-n' => 'тохой урт',
+'exif-gpsdestdistance-n' => 'бээр',
 
-'exif-objectcycle-b' => 'Өглөө Ð¾Ñ\80ойн Ð°Ð»Ð¸Ð½Ð´ ч',
+'exif-objectcycle-b' => 'ӨдөÑ\80 Ñ\87 Ñ\88өнө ч',
 
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Бодит чиглэл',
index abc95b6..81c228d 100644 (file)
@@ -95,7 +95,7 @@ $specialPageAliases = array(
        'FileDuplicateSearch'       => array( 'दुहेरी_संचिका_शोध' ),
        'Filepath'                  => array( 'संचिकेचा_पत्ता_(पाथ)' ),
        'Import'                    => array( 'आयात' ),
-       'Invalidateemail'           => array( 'अग्राह्य_विपत्र', 'चूकदिनांकविपत्र' ),
+       'Invalidateemail'           => array( 'अग्राह्य_विपत्र' ),
        'BlockList'                 => array( 'प्रतिबंधन_सुची' ),
        'LinkSearch'                => array( 'दुवाशोध' ),
        'Listadmins'                => array( 'प्रबंधकांची_यादी' ),
@@ -127,7 +127,7 @@ $specialPageAliases = array(
        'Prefixindex'               => array( 'उपसर्गसुची' ),
        'Protectedpages'            => array( 'सुरक्षित_पाने' ),
        'Protectedtitles'           => array( 'सुरक्षित_शीर्षके' ),
-       'Randompage'                => array( 'कोणतेही', 'कोणतेही_पृष्ठ', 'अविशिष्ट', 'अविशिष्ट_पृष्ठ' ),
+       'Randompage'                => array( 'कोणतेही', 'कोणतेही_पृष्ठ' ),
        'Randomredirect'            => array( 'अविशिष्ट_पुर्ननिर्देशन' ),
        'Recentchanges'             => array( 'अलीकडील_बदल' ),
        'Recentchangeslinked'       => array( 'सांधलेलेअलिकडीलबदल' ),
@@ -156,7 +156,7 @@ $specialPageAliases = array(
        'Wantedfiles'               => array( 'संचिका_हवी' ),
        'Wantedpages'               => array( 'हवे_असलेले_लेख' ),
        'Wantedtemplates'           => array( 'साचा_हवा' ),
-       'Watchlist'                 => array( 'नित्य‌_पहाण्याची_सूची', 'पहार्‍याची_सूची' ),
+       'Watchlist'                 => array( 'नित्य‌_पहाण्याची_सूची' ),
        'Whatlinkshere'             => array( 'येथे_काय_जोडले_आहे' ),
        'Withoutinterwiki'          => array( 'आंतरविकि_शिवाय' ),
 );
@@ -2036,7 +2036,7 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
 'listusers-editsonly' => 'फक्त संपादनांसहित सदस्य दाखवा',
 'listusers-creationsort' => 'निर्मितीच्या तारखेप्रमाणे लावा',
 'usereditcount' => '$1 {{PLURAL:$1|संपादन|संपादने}}',
-'usercreated' => '{{GENDER:$3|बनावला}} या $1 अत $2',
+'usercreated' => 'सदस्य खाते $3, $1 तारखेला, $2 वाजता बनवले गेले',
 'newpages' => 'नवीन पाने',
 'newpages-username' => 'सदस्य नाव:',
 'ancientpages' => 'जुनी पाने',
index 01e2e00..19b20ae 100644 (file)
@@ -198,7 +198,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Sorokkan suntingan yang telah dironda daripada senarai perubahan terkini',
 'tog-newpageshidepatrolled' => 'Sorokkan laman yang telah dironda daripada senarai laman baru',
 'tog-extendwatchlist' => 'Kembangkan senarai pantau untuk memaparkan semua perubahan, bukan hanya yang terkini',
-'tog-usenewrc' => 'Guna peningkatan perubahan terkini (perlukan JavaScript)',
+'tog-usenewrc' => 'Perubahan kumpulan mengikut laman dalam perubahan terkini dan senarai pantau (memerlukan JavaScript)',
 'tog-numberheadings' => 'Nomborkan tajuk secara automatik',
 'tog-showtoolbar' => 'Tunjukkan bar sunting (JavaScript)',
 'tog-editondblclick' => 'Klik ganda untuk sunting halaman (JavaScript)',
@@ -1237,6 +1237,7 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'prefs-beta' => 'Ciri-ciri beta',
 'prefs-datetime' => 'Tarikh dan waktu',
 'prefs-labs' => 'Ciri-ciri makmal',
+'prefs-user-pages' => 'Laman pengguna',
 'prefs-personal' => 'Profil',
 'prefs-rc' => 'Perubahan terkini',
 'prefs-watchlist' => 'Senarai pantau',
@@ -2025,6 +2026,7 @@ serta mungkin mempunyai maklumat lanjut mengenai buku yang anda cari:',
 'alllogstext' => 'Yang berikut ialah gabungan bagi semua log yang ada bagi {{SITENAME}}. Anda boleh menapis senarai ini dengan memilih jenis log, nama pengguna (peka huruf besar), atau nama laman yang terjejas (juga peka huruf besar).',
 'logempty' => 'Tiada item yang sepadan dalam log.',
 'log-title-wildcard' => 'Cari semua tajuk yang bermula dengan teks ini',
+'showhideselectedlogentries' => 'Tunjukkan/sorokkan entri-entri log yang terpilih',
 
 # Special:AllPages
 'allpages' => 'Semua laman',
@@ -2879,7 +2881,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'tooltip-rollback' => 'Balikkan semua suntingan oleh penyumbang terakhir pada laman ini dengan satu klik.',
 'tooltip-undo' => 'Balikkan suntingan ini dan buka borang sunting dalam mod pralihat. Sebab boleh dinyatakan dalam ruangan ringkasan.',
 'tooltip-preferences-save' => 'Simpan keutamaan',
-'tooltip-summary' => 'Masukkan ringkasan pendek',
+'tooltip-summary' => 'Berikan ringkasan',
 
 # Stylesheets
 'common.css' => '/* CSS yang terletak di sini akan digunakan pada semua kulit */',
@@ -2915,6 +2917,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'spambot_username' => 'Pembersihan spam MediaWiki',
 'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
 'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
+'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
 
 # Info page
 'pageinfo-title' => 'Maklumat untuk "$1"',
@@ -3838,4 +3841,6 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'duration-centuries' => '$1 abad',
 'duration-millennia' => '$1 alaf',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Selak-selak tidak dapat diperoleh di pelayan $1.',
 );
index 90e43ba..8c479ca 100644 (file)
@@ -935,6 +935,7 @@ Ftakar li l-paġni .css u .js personalizzati għandhom l-ewwel ittra tat-titlu 
 'note' => "'''Nota:'''",
 'previewnote' => "'''Ftakar li din hija biss dehra proviżorja.'''
 It-tibdiliet tiegħek għadhom ma ġewx salvati!",
+'continue-editing' => 'Kompli l-modifika',
 'previewconflict' => "Din il-previżjoni turi l-kliem li jinsab fiż-żona ta' modifika superjuri u turi kif tidher kieku l-paġna kella tiġi modifikata.",
 'session_fail_preview' => "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.
 Jekk jogħġbok, erġa' pprova. Jekk xorta tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
@@ -1201,6 +1202,7 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 
 # Diffs
 'history-title' => 'Kronoloġija tal-modifiki ta\' "$1"',
+'difference-title' => 'Differenza bejn ir-reviżjonijiet ta\' "$1"',
 'difference-multipage' => '(Differenzi bejn il-paġni)',
 'lineno' => 'Linja $1:',
 'compareselectedversions' => 'Qabbel il-verżjonijiet magħżula',
@@ -1556,7 +1558,7 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
 'nchanges' => '{{PLURAL:$1|modifika $1 |$1 modifiki}}',
 'recentchanges' => 'Tibdil riċenti',
 'recentchanges-legend' => 'Opzjonijiet tat-tibdil riċenti',
-'recentchangestext' => 'Din il-paġna turi l-modifiki l-aktar riċenti għal kontenut tas-sit.',
+'recentchanges-summary' => 'Din il-paġna turi l-modifiki l-aktar riċenti għal kontenut tas-sit.',
 'recentchanges-feed-description' => "Dan il-feed jirraporta l-modifiki l-aktar riċenti fil-kontenut ta' dan is-sit.",
 'recentchanges-label-newpage' => 'Din il-modifika ħolqot paġna ġdida',
 'recentchanges-label-minor' => 'Din hi modifika minuri',
@@ -2392,7 +2394,7 @@ $1',
 'namespace' => 'Spazju tal-isem:',
 'invert' => 'Inverti l-għażla',
 'tooltip-invert' => 'Agħżel din il-kaxxa biex taħbi l-modifiki lejn paġni li jinsabu fl-ispazji tal-isem magħżula (u l-ispazju tal-isem assoċjat jekk hu magħżul)',
-'namespace_association' => 'Spazju tal-isem assoċjata',
+'namespace_association' => 'Spazju tal-isem assoċjat',
 'tooltip-namespace_association' => "Agħżel din il-kaxxa sabiex tinkludi l-paġna ta' diskussjoni jew l-oġġett tal-ispazju tal-isem assoċjat mal-ispazju tal-isem magħżul",
 'blanknamespace' => '(Prinċipali)',
 
@@ -3701,6 +3703,7 @@ Stampi huwa mogħrija b'risoluzzjoni sħiħa, tipi tal-fajl oħrajn jibdew bil-p
 'sqlite-no-fts' => "$1 mingħajr il-possibilità ta' tfittxija kompluta fit-test",
 
 # New logging system
+'logentry-delete-delete' => '$1 ħassar il-paġna $3',
 'revdelete-restricted' => "limiti applikati 'l amministraturi",
 'revdelete-unrestricted' => "neħħi l-limiti 'l amministraturi",
 'logentry-move-move' => '$1 mexxa l-paġna $3 għal $4',
index b257836..1459d46 100644 (file)
@@ -938,7 +938,7 @@ Your e-mail address is not revealed when other users contact you.
 'nchanges' => 'ပြောင်းလဲချက် $1 {{PLURAL:$1|ခု|ခု}}',
 'recentchanges' => 'လတ်​တ​လောအ​ပြောင်း​အ​လဲ​',
 'recentchanges-legend' => 'လတ်တလောအပြောင်းအလဲများအတွက် ရွေးချယ်စရာများ',
-'recentchangestext' => 'ဤစာမျက်နှာတွင် ဝီကီ၏ လတ်တလောပြောင်းလဲမှုများကို နောက်ကြောင်းခံလိုက်ရန်',
+'recentchanges-summary' => 'ဤစာမျက်နှာတွင် ဝီကီ၏ လတ်တလောပြောင်းလဲမှုများကို နောက်ကြောင်းခံလိုက်ရန်',
 'recentchanges-feed-description' => 'ဤ feed ထဲတွင် ဝီကီ၏ လတ်တလောပြောင်းလဲမှုများကို နောက်ကြောင်းခံလိုက်ရန်',
 'recentchanges-label-newpage' => 'ဤတည်းဖြတ်မှုသည် စာမျက်နှာအသစ်ကို ဖန်တီးခဲ့သည်။',
 'recentchanges-label-minor' => 'အရေးမကြီးသော ​ပြင်​ဆင်​မှု ​ဖြစ်​သည်​',
index 82f5a13..bab6db7 100644 (file)
@@ -74,7 +74,7 @@ $namespaceAliases = array(
 );
 
 $magicWords = array(
-       'redirect'                => array( '0', '#بور', '#تغییرمسیر', '#REDIRECT' ),
+       'redirect'                => array( '0', '#بور', '#تغییرمسیر', '#تغییر_مسیر', '#REDIRECT' ),
        'notoc'                   => array( '0', '__بی‌فهرست__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__بی‌نگارخنه__', '__بی‌نگارخانه__', '__NOGALLERY__' ),
        'forcetoc'                => array( '0', '__بافهرست__', '__FORCETOC__' ),
@@ -276,7 +276,7 @@ $messages = array(
 'faqpage' => 'Project:FAQ',
 
 # Vector skin
-'vector-action-addsection' => 'اÛ\8cضاÙ\81Ù\87 Ù\87کردÙ\86 Ø¹Ù\88Ù\86Ù\88ان',
+'vector-action-addsection' => 'ترÙ\86Ù\87 Ú¯Ù¾ Ø¨Ø²Ù\88ئن',
 'vector-action-delete' => 'پاک هاکردن',
 'vector-action-move' => 'دکش هاکردن',
 'vector-action-protect' => 'زلفن بزوئن',
@@ -363,7 +363,7 @@ $2، $1',
 'edithelp' => 'دچی‌ین رانما',
 'edithelppage' => 'Help:دَچی‌ین',
 'helppage' => 'Help:راهنما',
-'mainpage' => 'گت ولگ',
+'mainpage' => 'گت صفحه',
 'mainpage-description' => 'گت صفحه',
 'policy-url' => 'Project:سیاستون',
 'portal' => 'کارورون ِلوش',
@@ -497,7 +497,7 @@ $2، $1',
 'userloginnocreate' => 'دله بموئن',
 'logout' => 'دربوردن',
 'userlogout' => 'دربوردن',
-'notloggedin' => 'سیستم ره دله نی یه موئین',
+'notloggedin' => 'سیستم ره دله نیه مونی',
 'nologin' => 'عضو نی؟ $1.',
 'nologinlink' => 'عضو بواشین',
 'createaccount' => 'ترنه حساب وا هکاردن',
@@ -567,7 +567,7 @@ $2، $1',
 آخرین مورد سیاهه قطع دسترسی زیر بموئه:',
 'previewnote' => 'شِمه یاد بوئه که اینتا اتا پیش‌نمایِش هسه. 
  شِمه دگاردسته‌ئون جانـَکِته که و‌نه، ونه اِسا ذخیره‌بیّـِن دوکمه ره بَزنین!',
-'editing' => 'دچی‌ین => $1',
+'editing' => 'درحال  $1 ره دچی‌ین',
 'editingsection' => 'دچی‌ین $1 (تیکه)',
 'editingcomment' => '$1 دچی‌ین(نو تیکه)',
 'yourtext' => 'شمه بنویشته',
@@ -652,7 +652,7 @@ $2، $1',
 'prefs-help-email-required' => 'ایمیل نشونی لازم هسه.',
 
 # User rights
-'userrights-user-editname' => 'کارور نوم ره بنویش هاکنین',
+'userrights-user-editname' => 'اتا کاروری نوم وارد هاکنین:',
 
 # Groups
 'group-sysop' => 'مدیرون',
@@ -677,6 +677,7 @@ $2، $1',
 # Recent changes
 'recentchanges' => 'تازه دگاردسته‌ئون',
 'recentchanges-legend' => 'تازه دگاردسته‌ئون گوزینه‌ها',
+'recentchanges-summary' => 'ویکی تازه دگاردسته‌ئون ره اینتا صفحه دله دمبال هاکنین.',
 'recentchanges-label-newpage' => 'اینتا ویرایش اته نو صفحه ایجاد هاکرده',
 'recentchanges-label-minor' => 'اینتا ویرایش خله جزئی بیه',
 'recentchanges-label-bot' => 'اینتا ویرایش‌ره اته ربات انجام هدائه',
@@ -795,6 +796,8 @@ $2، $1',
 'watchlist' => 'مه دمبال‌هاکرده‌‌ئون ِلیست',
 'mywatchlist' => 'مه دمبال‌هاکرده‌‌ئون ِلیست',
 'watchnologin' => 'سیستم ره دله نی ئه موئین',
+'addedwatchtext' => "«[[:$1]]» شمه [[Special:Watchlist|دمبال هاکردئون لیست]] دله اضافه بیه.
+اینتا صفحه دگاردسته‌ئون و ونه گپ آینده دله اینتا لیست دله شمه وسه فهرست بوننه؛ یان شه بماند، اینتا صفحه، [[Special:RecentChanges|تازه دگاردسته‌ئون]] فهرست دله شمه وسه '''پررنگ‌تر''' نمایش هدا بونه تا وره راحت تر بوینین.",
 'watch' => 'دمبال هاکردن',
 'watchthispage' => 'این صفحه ره دِمبال هاکارد‌ن',
 'unwatch' => 'ده‌مـبـال نـه‌کـارده‌ن',
@@ -832,6 +835,13 @@ $2، $1',
 'revertpage-nouser' => '"چیزونی که (ونـه کـاروری نـوم پـاک بَیّه) دچی‌یه دگـاردسته بیّه همونتایی که [[User:$1|$1]] آخرسری دچی‌ین دلـه هاکرده"',
 'rollback-success' => 'چیزونی که $1 دچی‌ین دگاردسته بیّه همونتایی که $2 آخرسری دچی‌ین دلـه هاکرده',
 
+# Protect
+'protectedarticle' => '«[[$1]]» ره محافظت هاکرده',
+'modifiedarticleprotection' => '«[[$1]]» محافظت تنظیمات ره تغییر هدائه',
+'movedarticleprotection' => '«[[$2]]» محافظت تنظیمات ره «[[$1]]» رو منتقل هاکرده',
+'protect-expiry-indefinite' => 'بی‌پایون',
+'protect-cantedit' => 'شما نتوننی اینتا صفحه محافظت وضعیت ره تغییر هادین، شما اجازه این کار ره ندایننی.',
+
 # Restrictions (nouns)
 'restriction-edit' => 'دچی‌ین',
 'restriction-upload' => 'باربی‌یشتن',
@@ -871,6 +881,7 @@ $2، $1',
 'blockip-legend' => 'کارور ره دَوستن',
 'ipbsubmit' => 'ای کارور دأبه‌س بأوه',
 'ipblocklist' => 'IP نـه‌شـونـی‌ئون ئو کـارورنـوم‌ئونی کـه دأبـه‌سـتـوونـه',
+'infiniteblock' => 'بی‌پایون',
 'blocklink' => 'دَوستن',
 'unblocklink' => 'وا هـه‌کـارده‌ن',
 'change-blocklink' => 'قطع دسترسی تغییر هدائن',
@@ -898,7 +909,7 @@ $2، $1',
 'allmessages-filter-all' => 'همه',
 
 # Thumbnails
-'thumbnail-more' => 'گت بأوه',
+'thumbnail-more' => 'گت بوو',
 
 # Special:Import
 'import-interwiki-submit' => 'بیاردن',
@@ -911,7 +922,7 @@ $2، $1',
 'tooltip-pt-mycontris' => 'مه کایری‌ئون لیست',
 'tooltip-pt-login' => 'شه‌ما به‌ته‌ر هـأسـه که سـیـسـتـه‌م ده‌لـه بـیـه‌ئی، هـرچـأن زوری نـیـه',
 'tooltip-pt-logout' => 'سیستم جه دأیابـوری',
-'tooltip-ca-talk' => 'صÙ\81Ø­Ù\87 Ø¯Ø±Ø¨Ø§Ø±Ù\87 گپ بَزوئن',
+'tooltip-ca-talk' => 'اÛ\8cÙ\86 ØµÙ\81Ø­Ù\87 Ø®Ù\8eÙ\88رÛ\8c گپ بَزوئن',
 'tooltip-ca-edit' => 'شِما بتوندی این صفحه ره دَچینی.',
 'tooltip-ca-addsection' => 'أتـا نـه گـب را دأکـه‌تـه‌ن',
 'tooltip-ca-viewsource' => 'این صفحه ره نتوندی دَچینی.
@@ -1015,6 +1026,7 @@ $5
 # Auto-summaries
 'autosumm-blank' => 'صفحه ره اسپه هاکرده',
 'autosumm-replace' => "صفحه ره اینتا جه عوض هاکرد: '$1'",
+'autoredircomment' => 'به [[$1]] مسیر ره تغییر هدائه',
 
 # Special:Version
 'version-specialpages' => 'شا صفحه‌ئون',
@@ -1024,6 +1036,7 @@ $5
 'specialpages-group-maintenance' => 'چله‌بندی صفحه‌ئون',
 
 # New logging system
+'logentry-move-move_redir-noredirect' => '$1 ، $3 ره بدون اینکه مسیر تغییری درس بوه به $4 که مسیر تغییر بیه منتقل هاکرده',
 'logentry-newusers-newusers' => '$1  بساتن اتا حساب کاروری',
 'logentry-newusers-create' => '$1  بساتن اتا حساب کاروری',
 
index 27db5eb..86ed4e1 100644 (file)
@@ -36,6 +36,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Neneuhcāyōtl_tēixnāmiquiliztli',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $namespaceAliases = array(
        'Media'         => NS_MEDIA,
        'Especial'      => NS_SPECIAL,
@@ -763,7 +766,7 @@ Intlā ticnequi, tlācah quimatīzqueh motequi.',
 'nchanges' => '$1 {{PLURAL:$1|tlapatlaliztli|tlapatlaliztli}}',
 'recentchanges' => 'Yancuīc tlapatlaliztli',
 'recentchanges-legend' => 'Yancuīc tlapatlaliztechcopa tlanequiliztli',
-'recentchangestext' => 'Ìpan inìn tlaìxtlapalli xikỉta in okảchi yankuik ìtlatlaìxpảtilis in wiki.',
+'recentchanges-summary' => 'Xiquinttāz in achi yancuīc ahmo occequīntīn tlapatlaliztli huiquipan inīn zāzanilpan.',
 'rcnote' => "Nicān {{PLURAL:$1|cah '''1''' tlapatlaliaztli|cateh in xōcoyōc '''$1''' tlapatlaliztli}} īpan xōcoyōc {{PLURAL:$2|tōnalli|'''$2''' tōnaltin}} īhuīcpa $5, $4.",
 'rclistfrom' => 'Xiquinttāz yancuīc tlapatlaliztli īhuīcpa $1',
 'rcshowhideminor' => '$1 tlapatlalitzintli',
index f75a514..675b8a9 100644 (file)
@@ -56,7 +56,7 @@ $namespaceAliases = array(
 
 $magicWords = array(
        'redirect'                => array( '0', '#wiederleiden', '#WEITERLEITUNG', '#REDIRECT' ),
-       'notoc'                   => array( '0', '__KEENINHOLTVERTEKEN__', '__KEIN_INHALTSVERZEICHNIS__', '__NOTOC__' ),
+       'notoc'                   => array( '0', '__KEENINHOLTVERTEKEN__', '__KEIN_INHALTSVERZEICHNIS__', '__KEININHALTSVERZEICHNIS__', '__NOTOC__' ),
        'forcetoc'                => array( '0', '__WIESINHOLTVERTEKEN__', '__INHALTSVERZEICHNIS_ERZWINGEN__', '__FORCETOC__' ),
        'toc'                     => array( '0', '__INHOLTVERTEKEN__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
        'noeditsection'           => array( '0', '__KEENÄNNERNLINK__', '__ABSCHNITTE_NICHT_BEARBEITEN__', '__NOEDITSECTION__' ),
@@ -71,7 +71,7 @@ $magicWords = array(
        'pagename'                => array( '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ),
        'pagenamee'               => array( '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ),
        'namespace'               => array( '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ),
-       'img_thumbnail'           => array( '1', 'duum', 'miniatur', 'thumbnail', 'thumb' ),
+       'img_thumbnail'           => array( '1', 'duum', 'miniatur', 'mini', 'thumbnail', 'thumb' ),
        'img_right'               => array( '1', 'rechts', 'right' ),
        'img_left'                => array( '1', 'links', 'left' ),
        'img_none'                => array( '1', 'keen', 'ohne', 'none' ),
@@ -80,7 +80,7 @@ $magicWords = array(
        'sitename'                => array( '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ),
        'ns'                      => array( '0', 'NR:', 'NS:' ),
        'localurl'                => array( '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ),
-       'localurle'               => array( '0', 'STEEDURLE:', 'LOCALURLE:' ),
+       'localurle'               => array( '0', 'STEEDURLE:', 'LOKALE_URL_C:', 'LOCALURLE:' ),
        'grammar'                 => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
 );
 
@@ -1395,7 +1395,7 @@ Dat kann nich wedder ungeschehn maakt warrn.',
 'nchanges' => '{{PLURAL:$1|Een Ännern|$1 Ännern}}',
 'recentchanges' => 'Toletzt ännert',
 'recentchanges-legend' => 'Optionen för toletzt ännert',
-'recentchangestext' => 'Op disse Sied warrt de Sieden wiest, de toletzt ännert worrn sünd.',
+'recentchanges-summary' => 'Op disse Sied warrt de Sieden wiest, de toletzt ännert worrn sünd.',
 'recentchanges-feed-description' => 'Behool mit dissen Feed de ne’esten Ännern op dit Wiki in’t Oog.',
 'recentchanges-label-newpage' => "Düsse Ännern stell en ne'e Siet op",
 'recentchanges-label-minor' => 'Dat is en lütte Ännern',
index 9e8fc4d..14fba49 100644 (file)
@@ -135,6 +135,7 @@ $magicWords = array(
        'pagenamee'               => array( '1', 'PAGINANAAME', 'PAGENAMEE' ),
        'namespace'               => array( '1', 'NAAMRUIMTE', 'NAMESPACE' ),
        'namespacee'              => array( '1', 'NAAMRUIMTEE', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', 'NAAMRUIMTENUMMER', 'NAMESPACENUMBER' ),
        'talkspace'               => array( '1', 'OVERLEGRUIMTE', 'TALKSPACE' ),
        'talkspacee'              => array( '1', 'OVERLEGRUIMTEE', 'TALKSPACEE' ),
        'subjectspace'            => array( '1', 'ONDERWERPRUIMTE', 'ARTIKELRUIMTE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -223,6 +224,7 @@ $magicWords = array(
        'padleft'                 => array( '0', 'LINKSOPVULLEN', 'PADLEFT' ),
        'padright'                => array( '0', 'RECHTSOPVULLEN', 'PADRIGHT' ),
        'special'                 => array( '0', 'speciaal', 'special' ),
+       'speciale'                => array( '0', 'speciaale', 'speciale' ),
        'defaultsort'             => array( '1', 'STANDAARDSORTERING:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                => array( '0', 'BESTANDSPAD:', 'FILEPATH:' ),
        'tag'                     => array( '0', 'label', 'tag' ),
@@ -351,7 +353,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Gemarkeerde wijzigingen verbergen in recente wijzigingen',
 'tog-newpageshidepatrolled' => "Gemarkeerde pagina's verbergen in de lijst met nieuwe pagina's",
 'tog-extendwatchlist' => 'Uitgebreide volglijst gebruiken om alle wijzigingen te bekijken, en niet alleen de laatste',
-'tog-usenewrc' => 'Uitgebreide Recente Wijzigingen-pagina gebruiken (vereist JavaScript)',
+'tog-usenewrc' => 'Wijzigingen per pagina weergeven in recente wijzigingen en volglijst (vereist JavaScript)',
 'tog-numberheadings' => 'Koppen automatisch nummeren',
 'tog-showtoolbar' => 'Bewerkingswerkbalk weergeven (vereist JavaScript)',
 'tog-editondblclick' => 'Dubbelklikken voor bewerken (vereist JavaScript)',
@@ -1336,9 +1338,9 @@ Let op dat het gebruiken van de navigatieverwijzingen deze kolom opnieuw instelt
 'mergelogpagetext' => 'Hieronder ziet u een lijst van recente samenvoegingen van een paginageschiedenis naar een andere.',
 
 # Diffs
-'history-title' => 'Geschiedenis van "$1"',
-'difference-title' => 'Verschil tussen versies van "$1"',
-'difference-title-multipage' => 'Verschil tussen pagina\'s "$1" en "$2"',
+'history-title' => '$1: versiegeschiedenis',
+'difference-title' => '$1: verschil tussen versies',
+'difference-title-multipage' => "$1 en $2: verschil tussen pagina's",
 'difference-multipage' => "(Verschil tussen pagina's)",
 'lineno' => 'Regel $1:',
 'compareselectedversions' => 'Geselecteerde versies vergelijken',
@@ -1438,6 +1440,7 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'prefs-beta' => 'Bètafunctionaliteit',
 'prefs-datetime' => 'Datum en tijd',
 'prefs-labs' => 'Alphafunctionaliteit',
+'prefs-user-pages' => "Gebruikerspagina's",
 'prefs-personal' => 'Gebruikersprofiel',
 'prefs-rc' => 'Recente wijzigingen',
 'prefs-watchlist' => 'Volglijst',
@@ -2234,7 +2237,7 @@ Een bestand kan hier dus ten onrechte opgenomen zijn.',
 'notargettitle' => 'Geen doelpagina',
 'notargettext' => 'U hebt niet opgegeven voor welke pagina of gebruiker u deze handeling wilt uitvoeren.',
 'nopagetitle' => 'Te hernoemen pagina bestaat niet',
-'nopagetext' => 'De pagina die u wilt hernoemen bestaat niet.',
+'nopagetext' => 'De doelpagina die u hebt opgegeven bestaat niet.',
 'pager-newer-n' => '{{PLURAL:$1|1 nieuwere|$1 nieuwere}}',
 'pager-older-n' => '{{PLURAL:$1|1 oudere|$1 oudere}}',
 'suppress' => 'Toezicht',
@@ -2257,6 +2260,7 @@ Controleer of u wellicht een fout hebt gemaakt bij de invoer.',
 U kunt ook kiezen voor specifieke logboeken en filteren op gebruiker (hoofdlettergevoelig) en paginanaam (hoofdlettergevoelig).',
 'logempty' => 'Er zijn geen regels in het logboek die voldoen aan deze criteria.',
 'log-title-wildcard' => "Pagina's zoeken die met deze tekens beginnen",
+'showhideselectedlogentries' => 'Geselecteerde logboekregels weergeven of verbergen',
 
 # Special:AllPages
 'allpages' => "Alle pagina's",
@@ -2761,8 +2765,8 @@ Zie de [[Special:BlockList|blokkadelijst]] voor recente blokkades.',
 'expiringblock' => 'vervalt op $1 om $2',
 'anononlyblock' => 'alleen anoniemen',
 'noautoblockblock' => 'autoblokkeren uitgeschakeld',
-'createaccountblock' => 'registreren gebruikers geblokkeerd',
-'emailblock' => 'e-mail geblokkeerd',
+'createaccountblock' => 'registreren gebruikers uitgeschakeld',
+'emailblock' => 'e-mail uitgeschakeld',
 'blocklist-nousertalk' => 'kan eigen overlegpagina niet bewerken',
 'ipblocklist-empty' => 'De blokkeerlijst is leeg.',
 'ipblocklist-no-results' => 'Dit IP-adres of deze gebruikersnaam is niet geblokkeerd.',
@@ -2786,7 +2790,7 @@ Zie ook de [[Special:BlockList|blokkadelijst]] voor de op dit moment actieve blo
 'block-log-flags-anononly' => 'alleen anoniemen',
 'block-log-flags-nocreate' => 'registreren gebruikers geblokkeerd',
 'block-log-flags-noautoblock' => 'autoblokkeren is uitgeschakeld',
-'block-log-flags-noemail' => 'e-mail geblokkeerd',
+'block-log-flags-noemail' => 'e-mail uitgeschakeld',
 'block-log-flags-nousertalk' => 'kan eigen overlegpagina niet bewerken',
 'block-log-flags-angry-autoblock' => 'uitgebreide automatische blokkade ingeschakeld',
 'block-log-flags-hiddenname' => 'gebruiker verborgen',
@@ -3180,8 +3184,9 @@ U kunt wel de broncode bekijken.',
 Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
 'spamprotectionmatch' => 'De volgende tekst veroorzaakte een alarm van de spamfilter: $1',
 'spambot_username' => 'MediaWiki opschoning spam',
-'spam_reverting' => 'Bezig met terugdraaien naar de laatste versie die geen verwijzing heeft naar $1',
-'spam_blanking' => 'Alle wijzigingen met een verwijzing naar $1 worden verwijderd',
+'spam_reverting' => 'Teruggedraaid naar de laatste versie die geen verwijzing bevat naar $1',
+'spam_blanking' => 'Alle versies bevatten een verwijzing naar $1. Pagina leeggemaakt',
+'spam_deleting' => 'Alle versies bevatten verwijzingen naar $1. Pagina verwijderd',
 
 # Info page
 'pageinfo-title' => 'Informatie over "$1"',
@@ -4117,4 +4122,6 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'duration-centuries' => '$1 {{PLURAL:$1|eeuw|eeuwen}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Het was niet mogelijk een vergrendeling te krijgen op server $1.',
 );
index 664a5c1..6d5496a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+/** Norwegian Nynorsk (‪norsk (nynorsk)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -342,7 +342,7 @@ $messages = array(
 # Font style option in Special:Preferences
 'editfont-style' => 'Endre stilen for skrifttypen i området:',
 'editfont-default' => 'Nettlesar i utgangspunktet',
-'editfont-monospace' => 'Skrift med fast breidde',
+'editfont-monospace' => 'Skrift med fast breidd',
 'editfont-sansserif' => 'Skrifttype utan seriffar',
 'editfont-serif' => 'Skrifttype med seriffar',
 
@@ -640,7 +640,7 @@ Ho kan allereie vere sletta av andre.',
 'cannotdelete-title' => 'Kan ikkje sletta sida «$1»',
 'badtitle' => 'Feil i tittelen',
 'badtitletext' => 'Den ønskte tittelen var ulovleg, tom eller feillenkja frå ein annan wiki. Kanskje inneheld han eitt eller fleire teikn som ikkje kan brukast i sidetitlar.',
-'perfcached' => 'Det følgjande er frå mellomlageret åt tenaren og er ikkje nødvendigvis oppdatert. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'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',
@@ -650,6 +650,7 @@ Ho kan allereie vere sletta av andre.',
 'actionthrottledtext' => 'For å hindre spamming kan du ikkje utføre denne handlinga for mange gonger på kort tid. Ver venleg og prøv igjen litt seinare.',
 'protectedpagetext' => 'Denne sida er verna for å hindre endring.',
 'viewsourcetext' => 'Du kan sjå og kopiere kjeldekoden til denne sida:',
+'viewyourtext' => "Du kan sjå og kopiera kjelda til '''endringane dine''' på sida:",
 'protectedinterface' => 'Denne sida inneheld tekst som er brukt av brukargrensesnittet for programvara, og er difor låst for å hindre hærverk.',
 'editinginterface' => "'''Åtvaring:''' Du endrar på ei side som inneheld tekst som er brukt av brukargrensesnittet for programvara. Endringar på denne sida påverkar utsjånaden til sida for dei andre brukarane. Dersom du ynskjer å setje om, ver venleg og vurder å bruke [//translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for omsetjing av MediaWiki.",
 'sqlhidden' => '(SQL-førespurnaden er gøymd)',
@@ -661,6 +662,8 @@ $2',
 'ns-specialprotected' => 'Sider i {{ns:special}}-namnerommet kan ikkje endrast.',
 'titleprotected' => "Denne sidetittelen er verna mot oppretting av [[User:$1|$1]].
 Grunnen som er gjeven er: ''$2''.",
+'invalidtitle-knownnamespace' => 'Ugyldig tittel med namnerommet «$2» og teksten «$3»',
+'invalidtitle-unknownnamespace' => 'Ugyldig tittel med ukjend namneromstal $1 og teksten «$2»',
 
 # Virus scanner
 'virus-badscanner' => "Dårleg konfigurasjon: ukjend virusskanner: ''$1''",
@@ -743,6 +746,7 @@ Grunna dette vil ikkje vitjande som nyttar denne IP-adressa kunna oppretta nye k
 'emailconfirmlink' => 'Stadfest e-post-adressa di',
 'invalidemailaddress' => 'E-postadressa kan ikkje nyttast sidan formatet truleg er feil. Skriv ei fungerande adresse eller tøm feltet.',
 'cannotchangeemail' => 'Epost-adresser knytta til brukarkonti kan ikkje endrast på denne wikien.',
+'emaildisabled' => 'Denne nettstaden kan ikkje senda e-postar.',
 'accountcreated' => 'Brukarkonto oppretta',
 'accountcreatedtext' => 'Brukarkontoen til $1 er oppretta.',
 'createaccount-title' => 'Oppretting av brukarkonto på {{SITENAME}}',
@@ -904,7 +908,12 @@ eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'userpage-userdoesnotexist-view' => 'Brukarkontoen «$1» er ikkje oppretta.',
 'blocked-notice-logextract' => 'Denne brukaren er for tida blokkert.
 Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
-'clearyourcache' => "Merk: Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.''' '''Firefox og Safari:''' Hald ''Shift'' nede medan du trykkjer anten ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på Mac). '''Konqueror:''' Trykk ''Oppdater'' eller på ''F5''. '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''. '''Internet Explorer:''' Hald nede ''Ctrl'' medan du trykkjer ''Oppdater'', eler trykk ''Ctrl-F5.''",
+'clearyourcache' => "'''Merk:''' Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.
+* '''Firefox og Safari:''' Haldt nede ''Shift'' medan du klikkar på ''Oppdater'', eller trykk anten ''Ctrl-F5'' eller ''Ctrl-R'' (''⌘-R'' på Mac)
+* '''Google Chrome:''' Trykk ''Ctrl-Shift-R'' (''⌘-Shift-R'' på Mac)
+* '''Internet Explorer:''' Haldt nede ''Ctrl'' medan du klikkar ''Oppdater'', eller trykk ''Ctrl-F5.''
+* '''Konqueror:''' Klikk ''Oppdater'' eller trykk ''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.",
 'usercsspreview' => "'''Hugs at dette berre er ei førehandsvising av din eigen CSS og at han ikkje er lagra enno!'''",
@@ -953,14 +962,13 @@ Teksten må du ha skrive sjølv, eller kopiert frå ein ressurs som er kompatibe
 Teksten må du ha skrive sjølv eller ha kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett (sjå $1 for detaljar).
 
 '''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''",
-'longpageerror' => "'''Feil: Teksten du har prøvd å lagre er $1 kilobyte
-lang, altså lenger enn $2 kilobyte som er maksimum. Han kan difor ikkje lagrast.'''",
+'longpageerror' => "'''Feil: Teksten du sende inn er {{PLURAL:$1|éin kilobyte|$1 kilobyte}} stor, noko som er større enn øvstegrensa på {{PLURAL:$2|éin kilobyte|$2 kilobyte}}.''' Han kan difor ikkje lagrast.",
 'readonlywarning' => "'''ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å  kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.'''
 
 Systemadministratoren som låste databasen gav følgjande årsak: $1",
-'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endre ho.'''
+'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endra henne.'''
 Det siste loggelementet er oppgjeve under som referanse:",
-'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.
+'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endra henne.
 Det siste loggelementet er oppgjeve under som referanse:",
 'cascadeprotectedwarning' => "'''Åtvaring:''' Denne sida er verna så berre brukarar med administratortilgang kan endre henne. Dette er fordi ho er inkludert i {{PLURAL:$1|denne djupverna sida|desse djupverna sidene}}:",
 'titleprotectedwarning' => "'''Åtvaring: Denne sida er verna, så berre [[Special:ListGroupRights|nokre brukarar]] kan opprette henne.'''
@@ -1070,16 +1078,16 @@ Som administrator kan du sjå han. Det finst kanskje meir informasjon i [{{fullu
 'rev-deleted-no-diff' => "Du kan ikkje vise denne skilnaden fordi ein av versjonane er vorten '''sletta'''.
 Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].",
 'rev-suppressed-no-diff' => "Du kan ikkje sjå denne skilnaden av di ein av versjonane er vorten '''sletta'''.",
-'rev-deleted-unhide-diff' => "Éin av versjonane i denne skilnaden er vorten '''sletta'''.
-Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
-Som administrator kan du framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
-'rev-suppressed-unhide-diff' => "Ei av sideversjonane i denne lista over versjonar har vorte '''skjult'''.
-Det kan vera detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
-Som administrator kan du framleis [$1 sjå versjonen] om du ynskjer det.",
-'rev-deleted-diff-view' => "Ei av endringane i dette oversynet er '''sletta'''.
-Som administrator kan du sjå oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-suppressed-diff-view' => "Ei av endringane i dette oversynet er '''løynd'''.
-Som administrator kan du sjå dette oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} historikkfjerningsloggen].",
+'rev-deleted-unhide-diff' => "Ein av versjonane i denne skilnaden er vorten '''sletta'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-suppressed-unhide-diff' => "Ein av sideversjonane i denne lista over versjonar er vorten '''løynd'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} løyneloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-deleted-diff-view' => "Ein av versjonane i skilnaden er vorten '''sletta'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-diff-view' => "Ei av endringane i skilnaden er vorten '''løynd'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} løyneloggen].",
 'rev-delundel' => 'vis/gøym',
 'rev-showdeleted' => 'syn',
 'revisiondelete' => 'Slett/attopprett versjonar',
@@ -1180,9 +1188,9 @@ Pass på at den nye sida også har innhald frå den innfletta sida.',
 'mergelogpagetext' => 'Nedanfor finn du ei liste over dei siste flettingane av ein sidehistorikk til ein annan.',
 
 # Diffs
-'history-title' => 'Historikken til «$1»',
-'difference-title' => 'Skilnad mellom versjonar av «$1»',
-'difference-title-multipage' => 'Skilnad mellom sidene «$1» og «$2»',
+'history-title' => '$1: Versjonshistorikk',
+'difference-title' => '$1: Skilnad mellom versjonar',
+'difference-title-multipage' => '$1 og $2: Skilnad mellom sidene',
 'difference-multipage' => '(Skilnad mellom sider)',
 'lineno' => 'Line $1:',
 'compareselectedversions' => 'Samanlikn valde versjonar',
@@ -1265,6 +1273,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'qbsettings-fixedright' => 'Høgre',
 'qbsettings-floatingleft' => 'Flytande venstre',
 'qbsettings-floatingright' => 'Flytande høgre',
+'qbsettings-directionality' => 'Fast, avhengig av kva retning språket ditt vert lese',
 
 # Preferences page
 'preferences' => 'Innstillingar',
@@ -1279,6 +1288,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'prefs-beta' => 'Betafunksjonar',
 'prefs-datetime' => 'Dato og klokkeslett',
 'prefs-labs' => 'Testfunksjonar',
+'prefs-user-pages' => 'Brukarsider',
 'prefs-personal' => 'Brukaropplysningar',
 'prefs-rc' => 'Siste endringar',
 'prefs-watchlist' => 'Overvakingsliste',
@@ -1615,8 +1625,9 @@ For å bruke ei fil på ei side, bruk ei lenkje på eit liknande format:
 'ignorewarnings' => 'Oversjå åtvaringar',
 'minlength1' => 'Filnamn må ha minst eitt teikn.',
 'illegalfilename' => 'Filnamnet «$1» inneheld teikn som ikkje er tillatne i sidetitlar. Skift namn på fila og prøv på nytt.',
+'filename-toolong' => 'Filnamn kan ikkje vera lengre enn 240 byte.',
 'badfilename' => 'Namnet på fila har vorte endra til «$1».',
-'filetype-mime-mismatch' => 'Filendinga samsvarar ikkje med ein MIME-type.',
+'filetype-mime-mismatch' => 'Filendinga «.$1» samsvarar ikkje med MIME-typen som er funnen i fila ($2).',
 'filetype-badmime' => 'Filer av MIME-typen «$1» kan ikkje lastast opp.',
 'filetype-bad-ie-mime' => 'Kan ikkje lasta opp fila då Internet Explorer ville merka ho som "$1", ein ikkje-tillate og potensielt farleg filtype.',
 'filetype-unwanted-type' => "«'''.$1'''» er ein uynskt filtype.
@@ -1673,7 +1684,7 @@ Om du framleis ønskjer å laste opp fila, gå tilbake og last ho opp med eit an
 'uploadvirus' => 'Fila innheld virus! Detaljar: $1',
 'upload-source' => 'Kjeldefil',
 'sourcefilename' => 'Filsti:',
-'sourceurl' => 'URL til kjelda:',
+'sourceurl' => 'Kjelde-URL:',
 'destfilename' => 'Målfilnamn:',
 'upload-maxfilesize' => 'Maksimal filstorleik: $1',
 'upload-description' => 'Filskildring',
@@ -1714,6 +1725,11 @@ $1',
 'upload-unknown-size' => 'Ukjend storleik',
 'upload-http-error' => 'Ein HTTP-feil oppstod: $1',
 
+# File backend
+'backend-fail-invalidpath' => '$1 er ikkje ein gyldig lagringsstig.',
+'backend-fail-delete' => 'Kunne ikkje sletta fila «$1».',
+'backend-fail-alreadyexists' => 'Fila $1 finst frå før.',
+
 # img_auth script messages
 'img-auth-accessdenied' => 'Tilgjenge avslått',
 'img-auth-nopathinfo' => 'PATH_INFO manglar.
@@ -2000,6 +2016,9 @@ Merk at andre internettsider kan ha direkte lenkjer til filer, og difor kan file
 'allpages-bad-ns' => '{{SITENAME}} har ikkje namnerommet «$1».',
 'allpages-hide-redirects' => 'Gøym omdirigeringar',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Sjå siste.',
+
 # Special:Categories
 'categories' => 'Kategoriar',
 'categoriespagetext' => 'Følgjande {{PLURAL:$1|category contains|kategoriar inneheld}} sider eller media.
@@ -2221,6 +2240,7 @@ Sjå [[Special:ProtectedPages|lista over verna sider]] for lista over vern som n
 'unprotectedarticle' => 'fjerna vern av «[[$1]]»',
 'movedarticleprotection' => 'flytta verneinnstillingar frå «[[$2]]» til «[[$1]]»',
 'protect-title' => 'Vernar «$1»',
+'protect-title-notallowed' => 'Sjå vernenivået til «$1»',
 'prot_1movedto2' => '«[[$1]]» flytt til «[[$2]]»',
 'protect-legend' => 'Stadfest vern',
 'protectcomment' => 'Grunngjeving:',
@@ -2280,9 +2300,8 @@ Her er dei noverande innstillingane for sida '''$1''':",
 'viewdeletedpage' => 'Sjå sletta sider',
 'undeletepagetext' => '{{PLURAL:$1|Den følgjande sida er sletta, men ho|Dei følgjande $1 sidene er sletta, men dei}} finst enno i arkivet og kan attopprettast. Arkivet blir periodevis sletta.',
 'undelete-fieldset-title' => 'Attenderull endringar',
-'undeleteextrahelp' => "For å attenderulle heile sida, la alle boksane vere som dei er, og klikk '''''Rull attende'''''.
-For å berre attenderulle delar, kryss av boksane til endringane, og klikk '''''Rull attende'''''.
-Å klikke '''''Nullstill''''' vil føre til at alle tekstfelt og boksar vert blanke.",
+'undeleteextrahelp' => "For å attoppretta heile historikken til sida, lat alle boksane vera vera tomme og trykk '''''{{int:undeletebtn}}'''''.
+For å berre attopretta delar av historikken, haka av boksane til dei relevante endringane og trykk '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => '{{PLURAL:$1|Éin versjon arkivert|$1 versjonar arkiverte}}',
 'undeletehistory' => 'Om du gjenopprettar sida vil alle endringar i historikken også bli gjenoppretta. Dersom ei ny side med same namn er oppretta etter slettinga, vil dei gjenoppretta endringane dukke opp før denne i endringshistorikken.',
 'undeleterevdel' => 'Gjenoppretting kan ikkje utførast om det resulterer i at den øvste endringa delvis vert sletta. I slike tilfelle må du fjerne merkinga av den siste sletta endringa.',
@@ -2315,6 +2334,7 @@ Sjå [[Special:Log/delete|sletteloggen]] for eit oversyn over sider som nyleg er
 'undelete-bad-store-key' => 'Kan ikkje gjenopprette filutgåva med tidstrykk $1: fil mangla før sletting',
 'undelete-cleanup-error' => 'Feil ved sletting av den ubrukte arkivfila «$1».',
 'undelete-missing-filearchive' => 'Kunne ikkje attopprette filarkivet med nummer $1 fordi det ikkje ligg i databasen. Det kan allereie ver attoppretta.',
+'undelete-error' => 'Feil under attoppretting av sida.',
 'undelete-error-short' => 'Veil ved sletting av fila: $1',
 'undelete-error-long' => 'Feil ved attoppretting av fila:
 
@@ -2752,6 +2772,7 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'tooltip-diff' => 'Vis skilnaden mellom din versjon og lagra versjon, utan å lagre.',
 'tooltip-compareselectedversions' => 'Sjå endringane mellom dei valde versjonane av denne sida.',
 'tooltip-watch' => 'Legg denne sida til i overvakingslista di [alt-w]',
+'tooltip-watchlistedit-raw-submit' => 'Oppdater overvakingslista',
 'tooltip-recreate' => 'Ved å trykkje på «Nyopprett» vert sida oppretta på nytt.',
 'tooltip-upload' => 'Start opplastinga',
 'tooltip-rollback' => '«Attenderull»-knappen attenderullar endringar på denne sida med eitt klikk til den førre utgåva av ein annan brukar',
@@ -3214,6 +3235,10 @@ Andre er gøymde som standard.
 'exif-gpslongitude-e' => 'Austleg lengdegrad',
 'exif-gpslongitude-w' => 'Vestleg lengdegrad',
 
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1|Éin|$1}} meter over havet',
+'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1|Éin|$1}} meter under havet',
+
 'exif-gpsstatus-a' => 'Måling pågår',
 'exif-gpsstatus-v' => 'Målingsinteroperabilitet',
 
@@ -3548,6 +3573,8 @@ Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
 'logentry-move-move-noredirect' => '$1 flytte sida $3 til $4 utan å lata etter ei omdirigering',
 'logentry-move-move_redir' => '$1 flytte sida $3 til $4 over ei omdirigering',
 'logentry-move-move_redir-noredirect' => '$1 flytte sida $3 til $4 over ei omdirigering utan å lata etter ei omdirigering',
+'logentry-patrol-patrol' => '$1 merkte versjon $4 av sida $3 som patruljert',
+'logentry-patrol-patrol-auto' => '$1 merkte automatisk versjon $4 av sida $3 som patruljert',
 'logentry-newusers-newusers' => '$1 oppretta ein brukarkonto',
 'logentry-newusers-create' => '$1 oppretta ein brukarkonto',
 'logentry-newusers-create2' => '$1 oppretta brukarkontoen $3',
@@ -3563,6 +3590,8 @@ Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
 'feedback-error1' => 'Feil: Ukjent resultat frå API',
 'feedback-error2' => 'Feil: Brigdinga gjekk ikkje',
 'feedback-error3' => 'Feil: Saknar svar frå API',
+'feedback-thanks' => 'Takk! Attendemeldinga di er lagd inn på sida «[$2 $1]».',
+'feedback-close' => 'Gjort',
 
 # API errors
 'api-error-badaccess-groups' => 'Du har ikkje løyve til å lasta opp filer til wikien.',
index c15c795..ca3f1b8 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+/** Norwegian (bokmål)‬ (‪norsk (bokmål)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Jeblad
  */
 
 $fallback = 'nb';
@@ -2007,7 +2008,7 @@ Dette er de nåværende innstillingene for siden '''$1''':",
 Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen.',
 'protect-default' => 'Tillat alle brukere',
 'protect-fallback' => 'Må ha «$1»-tillatelse',
-'protect-level-autoconfirmed' => 'Blokker nye og uregistrerte brukere',
+'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
 'protect-level-sysop' => 'Kun administratorer',
 'protect-summary-cascade' => 'dypbeskyttelse',
 'protect-expiring' => 'utløper $1 (UTC)',
index 89902ea..188f114 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Occitan (Occitan)
+/** Occitan (occitan)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1527,7 +1527,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'nchanges' => '$1 {{PLURAL:$1|cambiament|cambiaments}}',
 'recentchanges' => 'Darrièrs cambiaments',
 'recentchanges-legend' => 'Opcions dels darrièrs cambiaments',
-'recentchangestext' => 'Vaquí sus aquesta pagina, los darrièrs cambiaments de {{SITENAME}}.',
+'recentchanges-summary' => 'Vaquí sus aquesta pagina, los darrièrs cambiaments de {{SITENAME}}.',
 'recentchanges-feed-description' => "Seguissètz los darrièrs cambiaments d'aqueste wiki dins un flux.",
 'recentchanges-label-newpage' => 'Aquesta modificacion a creat una pagina novèla',
 'recentchanges-label-minor' => 'Aqueste cambiament es menor',
index 0d90735..036e10b 100644 (file)
@@ -2117,6 +2117,9 @@ A page is treated as disambiguation page if it uses a template which is linked f
 ଏଥିରେ ଥିବା ଗୋଟିଏ ବା ଦୁଇଟି ଅକ୍ଷର ଶିରୋନାମା ଭାବରେ ବ୍ୟବହାର କରାଯାଇ ପାରିବ ନାହିଁ ।',
 'allpages-bad-ns' => '{{SITENAME}}ରେ "$1" ନେମସ୍ପେସଟିଏ ନାହିଁ ।',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'ନୂତନତମ ଦେଖନ୍ତୁ ।',
+
 # Special:Categories
 'categories' => 'ଶ୍ରେଣୀସମୂହ',
 'categoriespagetext' => 'ତଳଲିଖିତ {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}ରେ ପୃଷ୍ଠା ବା ମେଡ଼ିଆ ରହିଅଛି ।
@@ -2185,8 +2188,8 @@ A page is treated as disambiguation page if it uses a template which is linked f
 'mailnologintext' => 'ଆପଣ ନିଜ [[Special:Preferences|ପସନ୍ଦସବୁ]]ରେ [[Special:UserLogin|ଲଗ ଇନ]] କରିଥିଲେ ଓ ନିଜର ଏକ ସଚଳ ଇ-ମେଲ ଠିକଣା ଥିଲେ ଯାଇ ବାକି ସବୁ ସଭ୍ୟଙ୍କୁ ଇ-ମେଲ ପଠାଇପାରିବେ ।',
 'emailuser' => 'ଏହି ସଭ୍ୟଙ୍କୁ ଇମେଲ କରିବେ',
 'emailpage' => 'ଇ-ମେଲ ବ୍ୟବହାରକାରୀ',
-'emailpagetext' => 'ତଳà­\87 à¬¥à¬¿à¬¬à¬¾ à¬«à¬°à­\8dମ à¬¬à­\8dà­\9fବହର à¬\95ରି à¬\86ପଣ à¬\8fହି à¬¸à¬­à­\8dà­\9fନà­\8dà¬\95à­\80 ଇ-ମେଲ କରିପାରିବେ ।
-[[Special:Preferences|à¬\85ପନà¬\95 à¬ªà¬¸à¬¨à­\8dଦ]]ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87-ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬ªà­\8dରà­\87ରà¬\95 à¬­à¬¾à¬¬à¬°à­\87 à¬¦à­\87à¬\96ାଯିବ, à¬¤à­\87ଣà­\81 à¬¤à¬¿à¬¥ି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
+'emailpagetext' => 'ତଳà­\87 à¬¥à¬¿à¬¬à¬¾ à¬«à¬°à­\8dମ à¬¬à­\8dà­\9fବହାର à¬\95ରି à¬\86ପଣ à¬\8fହି à¬¸à¬­à­\8dà­\9fà¬\99à­\8dà¬\95à­\81 ଇ-ମେଲ କରିପାରିବେ ।
+[[Special:Preferences|à¬\86ପଣà¬\99à­\8dà¬\95 à¬ªà¬¸à¬¨à­\8dଦ]]ରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\87-ମà­\87ଲ à¬ à¬¿à¬\95ଣା à¬ªà­\8dରà­\87ରà¬\95 à¬­à¬¾à¬¬à¬°à­\87 à¬¦à­\87à¬\96ାଯିବ, à¬¤à­\87ଣà­\81 à¬\9aିଠି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
 'usermailererror' => 'ମେଲ ଭିତରେ କିଛି ଅସୁବିଧା ଅଛି ବୋଲି ଜାଣିବାକୁ ମିଳିଲା:',
 'defemailsubject' => '{{SITENAME}} "$1" ସଭ୍ୟଙ୍କ ଠାରୁ ଇ-ମେଲ କରିବେ',
 'usermaildisabled' => 'ବ୍ୟବହାରକାରୀଙ୍କ ଈ-ମେଲ ଅଚଳ କରାଗଲା',
@@ -2879,6 +2882,9 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-logentry-interwiki' => '$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା',
 'import-logentry-interwiki-detail' => '$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
 
+# JavaScriptTest
+'javascripttest-disabled' => 'ଏହି ଉଇକିରେ ଏହି ବ୍ୟବସ୍ଥାଟିକୁ ସଚଳ କରାଯାଇନାହି ।',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠା',
 'tooltip-pt-anonuserpage' => 'ଆପଣ ଯେଉଁ IP ଠିକଣାର ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାଟି ବଦଳାଇବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି',
@@ -3670,6 +3676,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'version-software' => 'ଇନଷ୍ଟଲ ହୋଇଥିବା ସଫ୍ଟୱାର',
 'version-software-product' => 'ଉତ୍ପାଦ',
 'version-software-version' => 'ସଂସ୍କରଣ',
+'version-entrypoints-header-url' => 'ଇଉଆରଏଲ',
 
 # Special:FilePath
 'filepath' => 'ଫାଇଲ ପଥ',
@@ -3829,6 +3836,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'api-error-duplicate-archive-popup-title' => 'ଆଗରୁ ଲିଭାଯାଇଥିବା ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 'api-error-duplicate-popup-title' => 'ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 'api-error-empty-file' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।',
+'api-error-emptypage' => 'ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।',
 'api-error-fetchfileerror' => 'ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।',
 'api-error-file-too-large' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ବିରାଟ ଅଟେ ।',
 'api-error-filename-tooshort' => 'ଫାଇଲ ନାମଟି ଖୁବ ଛୋଟ ।',
index 4ed53d5..1105add 100644 (file)
@@ -49,6 +49,11 @@ $namespaceAliases = array(
        'Категорийы_тыххæй_дискусси'  => NS_CATEGORY_TALK,
 );
 
+$specialPageAliases = array(
+       'Recentchanges'             => array( 'Фæстаг_ивдтытæ' ),
+);
+
+
 $magicWords = array(
        'redirect'                => array( '0', '#РАРВЫСТ', '#перенаправление', '#перенапр', '#REDIRECT' ),
        'img_right'               => array( '1', 'рахиз', 'справа', 'right' ),
@@ -188,7 +193,7 @@ $messages = array(
 'broken-file-category' => 'Файлтæм саст æрвитæнтæ кæм ис, ахæм фæрстæ',
 
 'about' => 'Афыст',
-'article' => 'СÑ\82аÑ\82Ñ\8cÑ\8f',
+'article' => 'УаÑ\86',
 'newwindow' => '(кæны ног рудзынджы)',
 'cancel' => 'Ныууадзын',
 'moredotdotdot' => 'Фылдæр…',
@@ -232,8 +237,8 @@ $messages = array(
 'help' => 'Æххуыс',
 'search' => 'Агуырд',
 'searchbutton' => 'Агурын',
-'go' => 'СÑ\82аÑ\82Ñ\8cÑ\8fмæ',
-'searcharticle' => 'Ð\90гÑ\83Ñ\80Ñ\8bн',
+'go' => 'УаÑ\86мæ',
+'searcharticle' => 'УаÑ\86мæ',
 'history' => 'Фарсы истори',
 'history_short' => 'Истори',
 'updatedmarker' => 'ноггонд мæ фæстаг æрбахызтæй',
@@ -260,7 +265,7 @@ $messages = array(
 'specialpage' => 'Сæрмагонд фарс',
 'personaltools' => 'Мигæнæнтæ',
 'postcomment' => 'Ног хай',
-'articlepage' => 'Фен статья',
+'articlepage' => 'Фенын уац',
 'talk' => 'Тæрхон',
 'views' => 'Æркæстытæ',
 'toolbox' => 'Фæрæзтæ',
@@ -273,7 +278,7 @@ $messages = array(
 'categorypage' => 'Категорийы фарс фен',
 'viewtalkpage' => 'Тæрхон фен',
 'otherlanguages' => 'Æндæр æвзæгтыл',
-'redirectedfrom' => '(Ð\90Ñ\86Ñ\8b Ñ\81Ñ\82аÑ\82Ñ\8cÑ\8fйæ æрвыст: «$1»)',
+'redirectedfrom' => '(Ð\90Ñ\86Ñ\8b Ñ\83аÑ\86æй æрвыст: «$1»)',
 'redirectpagesub' => 'Рарвысты фарс',
 'lastmodifiedat' => 'Ацы фарс фæстаг хатт ивд æрцыд: $1, $2.',
 'viewcount' => 'Ацы фарс домд æрцыд {{PLURAL:$1|иу хатт|$1 хатты}}.',
@@ -351,7 +356,7 @@ $1',
 'sort-ascending' => 'Радæвæрын фылдæркæнынмæ',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'СÑ\82аÑ\82Ñ\8cÑ\8f',
+'nstab-main' => 'УаÑ\86',
 'nstab-user' => 'Архайæджы фарс',
 'nstab-media' => 'Мультимеди',
 'nstab-special' => 'Сæрмагонд фарс',
@@ -574,7 +579,7 @@ $2',
 'italic_sample' => 'Курсив',
 'italic_tip' => 'Курсив',
 'link_sample' => 'Æрвитæны текст',
-'link_tip' => 'Мидæг æрвитæн (æндæр статьямæ)',
+'link_tip' => 'Мидæггаг æрвитæн',
 'extlink_sample' => 'http://www.example.com æрвитæны текст',
 'extlink_tip' => 'Æддаг æрвитæн (префикс http:// ма рох кæн)',
 'headline_sample' => 'Сæргонд текст',
@@ -701,9 +706,9 @@ $2',
 # Search results
 'searchresults' => 'Агуырды фæстиуджытæ',
 'searchresults-title' => 'Агуырды фæстиуæг: «$1»',
-'titlematches' => 'СÑ\82аÑ\82Ñ\8cÑ\8fты сæргæндты æмцаутæ',
+'titlematches' => 'УаÑ\86ты сæргæндты æмцаутæ',
 'notitlematches' => 'Фæрсты сæргæндты нæй',
-'textmatches' => 'СÑ\82аÑ\82Ñ\8cÑ\8fты æмцаутæ',
+'textmatches' => 'УаÑ\86ты æмцаутæ',
 'prevn' => 'рæздæры {{PLURAL:$1|$1}}',
 'nextn' => 'иннæ {{PLURAL:$1|$1}}',
 'prevn-title' => 'Раздæр $1 {{PLURAL:$1|фæстиуæг|фæстиуæджы}}',
@@ -863,7 +868,7 @@ $2',
 'nchanges' => '$1 {{PLURAL:$1|ивд|ивды}}',
 'recentchanges' => 'Фæстаг ивдтытæ',
 'recentchanges-legend' => 'Фæстаг ивдтыты фадæттæ',
-'recentchangestext' => 'Ацы фарсыл фæстаг ивдтытæ фенæн ис.',
+'recentchanges-summary' => 'Ацы фарсыл викийы фæстаг ивдтытæ фенæн ис.',
 'recentchanges-feed-description' => 'Хъус дарын викийы фæстаг ивдтытæм ацы лæсæны уылты.',
 'recentchanges-label-newpage' => 'Ацы ивд нæуæг фарс бакодта',
 'recentchanges-label-minor' => 'Ай у чысыл ивд',
@@ -898,7 +903,7 @@ $3',
 'recentchangeslinked-toolbox' => 'Баст ивдтытæ',
 'recentchangeslinked-title' => '"{{grammar:comitative|$1}}" баст ивдтытæ',
 'recentchangeslinked-noresult' => 'Нæй баст фæрсты ивдтытæ амынд рæстæджы',
-'recentchangeslinked-summary' => "Ð\90дон Ñ\81Ñ\82Ñ\8b Ñ\84æÑ\81Ñ\82аг Ñ\80æÑ\81Ñ\82æджÑ\8b Ð¸Ð²Ð´Ñ\82Ñ\8bÑ\82æ Ð°Ñ\85æм Ñ\81Ñ\82аÑ\82Ñ\8cÑ\8fты, кæдонмæ æрвиты амынд фарс (кæнæ амынд категорийы уæнгтæ). [[Special:Watchlist|Дæ цæстдард фæрстæ]] сты '''бæзджынæй''' нысангонд.",
+'recentchangeslinked-summary' => "Ð\90дон Ñ\81Ñ\82Ñ\8b Ñ\84æÑ\81Ñ\82аг Ñ\80æÑ\81Ñ\82æджÑ\8b Ð¸Ð²Ð´Ñ\82Ñ\8bÑ\82æ Ð°Ñ\85æм Ñ\83аÑ\86ты, кæдонмæ æрвиты амынд фарс (кæнæ амынд категорийы уæнгтæ). [[Special:Watchlist|Дæ цæстдард фæрстæ]] сты '''бæзджынæй''' нысангонд.",
 'recentchangeslinked-page' => 'Фарсы ном:',
 'recentchangeslinked-to' => 'Уый бæсты равдисæт амынд фарсмæ æрвитгæ фæрсты ивдтытæ',
 
@@ -1020,7 +1025,7 @@ $3',
 
 # Special:AllPages
 'allpages' => 'Иууылдæр фæрстæ',
-'alphaindexline' => '$1 (Ñ\83Ñ\8bдонÑ\8b â\80\99Ñ\85Ñ\81æн Ñ\86Ñ\8b Ñ\81Ñ\82аÑ\82Ñ\8cÑ\8fтæ ис, фен) $2',
+'alphaindexline' => '$1 (Ñ\83Ñ\8bдонÑ\8b â\80\99Ñ\85Ñ\81æн Ñ\86Ñ\8b Ñ\83аÑ\86тæ ис, фен) $2',
 'nextpage' => 'Фæдылдзог фарс ($1)',
 'prevpage' => 'Раздæры фарс ($1)',
 'allarticles' => 'Иууылдæр фæрстæ',
@@ -1061,14 +1066,14 @@ $3',
 'watchlist' => 'Мæ цæстдард рæгъ',
 'mywatchlist' => 'Мæ цæстдард фæрстæ',
 'watchlistfor2' => 'Архайæг: $1 $2',
-'nowatchlist' => 'Ð\98Ñ\83 Ñ\81Ñ\82аÑ\82Ñ\8cÑ\8fмæ дæр дæ цæст нæ дарыс.',
+'nowatchlist' => 'Ð\98Ñ\83 Ñ\83аÑ\86мæ дæр дæ цæст нæ дарыс.',
 'watchnologin' => 'Системæйæн дæхи нæ бацамыдтай',
 'watchnologintext' => 'Ацы номхыгъд ивынæн хъæуы [[Special:UserLogin|бахизын]].',
 'removedwatchtext' => '«[[:$1]]» фарсмæ [[Special:Watchlist|дæ цæст]] нал дарыс.',
 'watch' => 'Цæст æрдарын',
 'watchthispage' => 'Цæст дарын ацы фарсмæ',
 'unwatch' => 'Нал дарын цæст',
-'watchnochange' => 'Ð\94æ Ñ\86æÑ\81Ñ\82даÑ\80д Ñ\81Ñ\82аÑ\82Ñ\8cÑ\8fтæй иу дæр ивд не ’рцыдис.',
+'watchnochange' => 'Ð\94æ Ñ\86æÑ\81Ñ\82даÑ\80д Ñ\83аÑ\86тæй иу дæр ивд не ’рцыдис.',
 'watchlist-details' => '{{PLURAL:$1|$1 фарсмæ|$1 фарсмæ}} дæ цæст дарыс, тæрхоны фæрстæ нæ нымайгæйæ.',
 'watchlistcontains' => 'Дæ цæст $1 {{PLURAL:$1|фарсмæ|фарсмæ}} дарыс.',
 'wlnote' => "Дæлæ афæстаг '''$2 сахаты дæргъы''' цы $1 {{PLURAL:$1|ивддзинад|ивддзинады}} æрцыди.",
@@ -1233,7 +1238,7 @@ $3',
 'tooltip-ca-history' => 'Ацы фарсæн йæ раздæры фæлтæртæ',
 'tooltip-ca-protect' => 'Ацы фарс ивддзинæдтæй сæхгæнын',
 'tooltip-ca-delete' => 'Аппарын ацы фарс',
-'tooltip-ca-move' => 'СÑ\82аÑ\82Ñ\8cÑ\8fйы ном ивын',
+'tooltip-ca-move' => 'УаÑ\86ы ном ивын',
 'tooltip-ca-watch' => 'Бафтау ацы фарс дæ цæстдард рæгъмæ',
 'tooltip-ca-unwatch' => 'Айс ацы фарс дæ цæстдард рæгъæй',
 'tooltip-search' => '{{grammar:genitive|{{SITENAME}}}} агурын',
@@ -1256,7 +1261,7 @@ $3',
 'tooltip-t-specialpages' => 'Сæрмагонд фæрсты номхыгъд',
 'tooltip-t-print' => 'Ацы фарс мыхуырмæ цæттæ форматы',
 'tooltip-t-permalink' => 'Фарсы ацы фæлтæрмæ æрвитæн (фæрстæ ивынц, ацы фæлтæр — нæ)',
-'tooltip-ca-nstab-main' => 'Фен статья',
+'tooltip-ca-nstab-main' => 'Фенын уац',
 'tooltip-ca-nstab-user' => 'Архайæджы фарс фенын',
 'tooltip-ca-nstab-special' => 'Ай сæрмагонд фарс у, дæ бон æй нæу ивын',
 'tooltip-ca-nstab-project' => 'Фенын проекты фарс',
@@ -1404,6 +1409,9 @@ $3',
 'watchlisttools-edit' => 'Бакæсын æмæ ивын цæстдард рæгъ',
 'watchlisttools-raw' => 'Ивын цæстдард рæгъы бындуртекст',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ныхас]])',
+
 # Core parser functions
 'duplicate-defaultsort' => '\'\'\'Сындæг:\'\'\' Разæвæрд сортгæнæн амонæн "$2" раздæры разæвæрд амонæн "$1"-ы бæсты лæууы.',
 
index 1ae3aaa..8c29317 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author AS Alam
  * @author Aalam
+ * @author Amire80
  * @author Anjalikaushal
  * @author Gman124
  * @author Guglani
@@ -525,6 +526,7 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨੁਕਸਾਨ ਤੋਂ ਬਚਣ ਲਈ, $
 
 # Revision feed
 'history-feed-title' => 'ਰੀਵਿਜ਼ਨ ਅਤੀਤ',
+'history-feed-item-nocomment' => '$1 ਤੋਂ $2 ਵੱਜੇ',
 
 # Revision deletion
 'rev-deleted-comment' => '(ਟਿੱਪਣੀ ਹਟਾਈ)',
@@ -983,7 +985,7 @@ to upload files.',
 
 # Contributions
 'contributions' => 'ਯੂਜ਼ਰ ਯੋਗਦਾਨ',
-'contributions-title' => '$ ਦੀ ਰਚਨਾ',
+'contributions-title' => '$1 ਦੀ ਰਚਨਾ',
 'mycontris' => 'ਮੇਰਾ ਯੋਗਦਾਨ',
 'contribsub2' => '$1 ($2) ਲਈ',
 'uctop' => '(ਉੱਤੇ)',
index 9f98566..bc10284 100644 (file)
@@ -79,7 +79,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'fri' => 'Vie',
 'sat' => 'Sab',
 'january' => 'Eneru',
-'february' => 'Febreru',
+'february' => 'Pebreru',
 'march' => 'Marzu',
 'april' => 'Abril',
 'may_long' => 'Mayu',
@@ -158,6 +158,9 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'vector-action-protect' => 'Protectan/kambilan',
 'vector-action-undelete' => 'Isubli/iurung ya pangabura',
 'vector-action-unprotect' => 'Idayu ya panga-protecta',
+'vector-view-view' => 'Basan',
+'namespaces' => 'Karinanlagiu',
+'variants' => 'Aliwapa',
 
 'errorpagetitle' => 'Mali',
 'returnto' => 'Magbalik king $1.',
@@ -275,7 +278,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'nstab-project' => 'Bulung ding proyektu',
 'nstab-image' => 'Simpan (File)',
 'nstab-mediawiki' => 'Mensahi',
-'nstab-template' => 'Modelu (template)',
+'nstab-template' => 'Ulma (template)',
 'nstab-help' => 'Saup bulung',
 'nstab-category' => 'Kategoriya',
 
@@ -644,6 +647,7 @@ Ini ing sangkan a binie nang $3: ''$2''",
 Kabaldugan: (ngeni)=pamiyaliwa king salukuyan a bersion (bersion ngeni),
 (tauli)=pamiyaliwa ketang sadyang (tauling) bersion, M = malating edit.',
 'history-fieldset-title' => 'Amlat da reng pamaglawe',
+'history-show-deleted' => 'Milako yamu',
 'histfirst' => 'Minunang dili',
 'histlast' => 'Pekabayu',
 'historysize' => '({{PLURAL:$1|1 a byte|byte}})',
@@ -748,6 +752,7 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 'prevn' => 'minunang {{PLURAL:$1|$1}}',
 'nextn' => 'tutuking {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Atin bulung a mikilagiung \"[[:\$1]]\" keng wiking ini.'''",
 'searchhelp-url' => 'Help:Kalamnan',
 'search-result-size' => '$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})',
 'search-result-score' => 'Kaugnayan (relevance): $1%',
@@ -942,7 +947,7 @@ Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
 'nchanges' => '$1 {{PLURAL:$1|miyalilan|miyalilan}}',
 'recentchanges' => 'Bayung mengayalili',
 'recentchanges-legend' => 'Pipamilinan kareng bayung mengayalili',
-'recentchangestext' => 'Talukyan mo reng tawling diling mengayalilan king bulung a ini.',
+'recentchanges-summary' => 'Talukyan mo reng tawling diling mengayalilan king bulung a ini.',
 'recentchanges-feed-description' => 'Talukian mo reng bayung diling mengayalili king wiki king feed a ini.',
 'rcnote' => "King lalam {{PLURAL:$1|is '''1''' change|ding tauling '''$1''' pamagbayu}} aniang tauling {{PLURAL:$2|day|'''$2''' aldo}}, aniang $5, $4.",
 'rcnotefrom' => 'Atilu king lalam deng miyalilan manibat anyang <b>$2</b> (angga king <b>$1</b> makalto).',
@@ -1294,6 +1299,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 # Special:LinkSearch
 'linksearch' => 'Suglung palual',
+'linksearch-line' => '$1 makasuglung ibat $2',
 
 # Special:ListUsers
 'listusersfrom' => 'Ipakit la reng talagamit magumpisa king:',
@@ -1583,7 +1589,7 @@ $1',
 'nolinkshere-ns' => "Alang bulung a makatuglung king '''[[:$1]]''' ketang mepiling pirinan lagyu (namespace).",
 'isredirect' => 'Bulung ning pamanaliling direksiun',
 'istemplate' => 'misingit',
-'isimage' => 'suglung king larawan',
+'isimage' => 'Isuglung king larawan',
 'whatlinkshere-prev' => '{{PLURAL:$1|minunang|minunang $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|next|tutuking $1}}',
 'whatlinkshere-links' => '← suglung',
index 00b7cdc..64430a7 100644 (file)
@@ -107,7 +107,7 @@ $messages = array(
 'undelete_short' => '{{PLURAL:$1|ä Ännerung|$1 Ännerunge}} widderherschdelle',
 'protect' => 'schitze',
 'protect_change' => 'ännere',
-'unprotect' => 'Widder freigewwe',
+'unprotect' => 'Saideschudz änare',
 'newpage' => 'Naie Said',
 'talkpage' => 'Iwwer die Said dischbediere',
 'talkpagelinktext' => 'Dischbediere',
@@ -281,7 +281,7 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'revertmerge' => 'Zammefiehrung rickgängich mache',
 
 # Diffs
-'history-title' => 'Versionsgschicht vun "$1"',
+'history-title' => 'Änarungsgschischd vun "$1"',
 'lineno' => 'Zail $1:',
 'compareselectedversions' => 'Die Versione mitenonner vergleiche',
 'editundo' => 'zerick',
index 6f497c6..a0cd772 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Polish (Polski)
+/** Polish (polski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1076,6 +1076,10 @@ Argument ten będzie pominięty.',
 'language-converter-depth-warning' => 'Przekroczono ograniczenie ($1) głębokości zagnieżdżenia konwersji językowej',
 'node-count-exceeded-category' => 'Strony, gdzie przekroczono liczbę węzłów',
 'node-count-exceeded-warning' => 'Strona przekroczyła liczbę węzłów',
+'expansion-depth-exceeded-category' => 'Strony z przekroczoną głębokością rozbudowy',
+'expansion-depth-exceeded-warning' => 'Strona przekroczyła głębokość rozbudowy',
+'parser-unstrip-loop-warning' => 'Wykryto nieskończoną pętlę',
+'parser-unstrip-recursion-limit' => 'Przekroczono maksymalną głębokość zagnieżdżania ($1)',
 
 # "Undo" feature
 'undo-success' => 'Edycja może zostać wycofana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.',
@@ -1251,8 +1255,8 @@ Użycie linków nawigacyjnych kasuje wybór w kolumnie.',
 'mergelogpagetext' => 'Poniżej znajduje się lista ostatnich scaleń historii zmian stron.',
 
 # Diffs
-'history-title' => 'Historia edycji „$1”',
-'difference-title' => 'Różnica pomiędzy wersjami strony "$1"',
+'history-title' => '$1: Historia wersji',
+'difference-title' => '$1: Różnice pomiędzy wersjami',
 'difference-title-multipage' => 'Różnica pomiędzy stronami "$1" i "$2"',
 'difference-multipage' => '(Różnica między stronami)',
 'lineno' => 'Linia $1:',
@@ -1350,6 +1354,7 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
 'prefs-beta' => 'Funkcje testowe',
 'prefs-datetime' => 'Data i czas',
 'prefs-labs' => 'Funkcje doświadczalne',
+'prefs-user-pages' => 'Strony użytkowników',
 'prefs-personal' => 'Dane użytkownika',
 'prefs-rc' => 'Ostatnie zmiany',
 'prefs-watchlist' => 'Obserwowane',
@@ -1567,7 +1572,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 # User rights log
 'rightslog' => 'Uprawnienia',
 'rightslogtext' => 'Rejestr zmian uprawnień użytkowników.',
-'rightslogentry' => 'zmienia przynależność $1 do grup ($2 → $3)',
+'rightslogentry' => 'zmienił przynależność $1 do grup ($2 → $3)',
 'rightslogentry-autopromote' => 'automatycznie zmienia przynależność ($2 → $3)',
 'rightsnone' => 'brak',
 
@@ -2152,6 +2157,7 @@ Inne witryny mogą odwoływać się do tych plików, używając bezpośrednich a
 Możesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytkownika albo tytułu strony.',
 'logempty' => 'W rejestrze nie znaleziono pozycji odpowiadających zapytaniu.',
 'log-title-wildcard' => 'Szukaj tytułów zaczynających się od tego tekstu',
+'showhideselectedlogentries' => 'Pokaż/ukryj zaznaczone wpisy rejestru',
 
 # Special:AllPages
 'allpages' => 'Wszystkie strony',
@@ -3950,7 +3956,7 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'revdelete-uname-unhid' => 'wycofano ukrycie nazwy użytkownika',
 'revdelete-restricted' => 'ograniczono widoczność dla administratorów',
 'revdelete-unrestricted' => 'wycofano ograniczenie widoczności dla administratorów',
-'logentry-move-move' => '$1 przenosi stronę $3 na $4',
+'logentry-move-move' => '$1 przenosi stronę $3 do $4',
 'logentry-move-move-noredirect' => '$1 przenosi stronę $3 na $4, bez pozostawienia przekierowania pod starym tytułem',
 'logentry-move-move_redir' => '$1 przenosi stronę $3 na $4 w miejsce przekierowania',
 'logentry-move-move_redir-noredirect' => '$1 przenosi stronę $3 na $4 w miejsce przekierowania i bez pozostawienia przekierowania pod starym tytułem',
index 7a1484c..e5c006b 100644 (file)
@@ -48,7 +48,7 @@ $messages = array(
 'tog-hidepatrolled' => "Stërma le modìfiche verificà ant j'ùltime modìfiche",
 'tog-newpageshidepatrolled' => 'Stërma le pàgine verificà da la lista dle pàgine neuve',
 'tog-extendwatchlist' => 'Slarga la funsion "ten sot euj" an manera che a la smon-a tute le modìfiche, nen mach l\'ùltima',
-'tog-usenewrc' => "Deuvra j'ùltime modìfiche an bela forma (a-i va JavaScript)",
+'tog-usenewrc' => "Deuvra j'ùltime modìfiche ameliorà (a-i và JavaScript)",
 'tog-numberheadings' => 'Tìtoj ëd paràgraf<br />che as nùmero daspërlor',
 'tog-showtoolbar' => "Mostra la bara dj'utiss (a-i va Javascript)",
 'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol<br />(a-i va JavaScript)",
@@ -424,6 +424,13 @@ Arcesta: $2',
 'ns-specialprotected' => 'As peulo nen modifichesse le pàgine dlë spassi nominal {{ns:special}}.',
 'titleprotected' => "La creassion ëd pàgine con ës tìtol-sì a l'é stàita proibìa da [[User:$1|$1]].
 Coma rason a l'ha butà: ''$2''.",
+'filereadonlyerror' => "As peul pa modifichesse l'archivi «$1» përchè ël depòsit d'archivi «$2» a l'é an sola letura.
+
+L'aministrator ch'a l'ha blocalo a l'ha lassà sta spiegassion: «$3».",
+'invalidtitle-knownnamespace' => 'Tìtol pa bon con spassi nominal "$2" e test "$3"',
+'invalidtitle-unknownnamespace' => 'Tìtol pa bon con spassi nominal sconossù nùmer $1 e test "$2"',
+'exception-nologin' => 'Nen rintrà ant ël sistema',
+'exception-nologin-text' => "Sta pagina o assion a veul ch'it sie intrà dzora a sta wiki.",
 
 # Virus scanner
 'virus-badscanner' => "Configurassion falà: antivìrus nen conossù: ''$1''",
@@ -515,6 +522,7 @@ Da qualsëssìa ëd coste funsion a sarà mandà gnun messagi fin che chiel (chi
 'invalidemailaddress' => "Costa adrëssa ëd pòsta eletrònica-sì as peul nen pijesse përchè a l'ha na forma nen bon-a.
 Për piasì che a buta n'adrëssa scrita giusta ò che a lassa ël camp veujd.",
 'cannotchangeemail' => "J'adrësse ëd pòsta eletrònica dij cont a peulo pa esse modificà ansima a costa wiki.",
+'emaildisabled' => 'Ës sit a peul pa mandé dij mëssagi ëd pòsta eletrònica.',
 'accountcreated' => 'Cont creà',
 'accountcreatedtext' => "Ël cont Utent për $1 a l'é stàit creà.",
 'createaccount-title' => 'Creassion ëd cont për {{SITENAME}}',
@@ -707,6 +715,7 @@ o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
 'note' => "'''NÒTA:'''",
 'previewnote' => "'''Che a ten-a present che costa-sì a l'é mach na preuva.'''
 Ij sò cambi a son anco' pa stàit salvà!",
+'continue-editing' => 'Continua a modifiché',
 'previewconflict' => "Costa preuva a-j mostra ël test dl'artìcol ambelessì dzora. Se a sërn dë salvelo, a l'é parèj che a lo s-ciairëran ëdcò tuti j'àutri Utent.",
 'session_fail_preview' => "'''Darmagi! I l'oma pa podù processé soa modìfica per via che a son përdusse për la stra ij dat ëd session.
 Për piasì che a preuva n'àutra vira. Se a dovèissa mai torna riveje sossì, che a preuva a seurte dal sistema e peuj torna a rintré.'''",
@@ -720,6 +729,7 @@ ant ël quàder ëd modìfica. La rason che a l'é nen stàit acetà a l'é për
 test ch'a-i é già. Sossì dle vire a riva quand un a deuvra un programa proxy ëd coj un pòch dla Bajòna.'''",
 'edit_form_incomplete' => "'''Quàich part dël formolari ëd modìfica a l'é pa rivà al sërvent; contròla doe vire che toe modìfiche a-i sio anco' e preuva torna.'''",
 'editing' => 'Modìfica ëd $1',
+'creating' => 'Creé $1',
 'editingsection' => 'I soma dapress a modifiché $1 (session)',
 'editingcomment' => 'I soma dapress a modifiché $1 (neuva session)',
 'editconflict' => "Conflit d'edission: $1",
@@ -784,6 +794,7 @@ A smija che a sia stàita scancelà.',
 'edit-no-change' => "Toa modìfica a l'é stàita ignorà, përchè a l'é pa stàit fàit gnun cambiament al test.",
 'edit-already-exists' => 'As peul nen creesse la pàgina.
 A esist già.',
+'defaultmessagetext' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Atension:''' Costa pàgina a l'ha tròpe ciamà costose a le fonsions ëd parser.
@@ -799,6 +810,12 @@ Costi paràmeter a son stàit lassà fòra.",
 'parser-template-loop-warning' => 'Trovà na liassa dlë stamp: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Passà ël lìmit ëd ricorsion dlë stamp ($1)',
 'language-converter-depth-warning' => 'Passà lìmit ëd profondità dël convertidor ëd lenghe ($1)',
+'node-count-exceeded-category' => "Pàgine anté che ël nùmer ëd grop a l'é sorpassà",
+'node-count-exceeded-warning' => "La pàgina a l'ha sorpassà ël nùmer ëd grop",
+'expansion-depth-exceeded-category' => "Pàgine anté che la profondeur d'espansion a l'é sorpassà",
+'expansion-depth-exceeded-warning' => "La pàgina a l'ha sorpassà la profondità d'espansion",
+'parser-unstrip-loop-warning' => 'Trovà un sicl nen dësmontàbil',
+'parser-unstrip-recursion-limit' => "Sorpassà ël lìmit d'arcorensa nen dësmontàbil: $1",
 
 # "Undo" feature
 'undo-success' => "Sta modìfica-sì as peul scancelesse. Për piasì, ch'a contròla ambelessì sota për esse sigur che a l'é pro lòn che a veul fé, e peuj ch'as salva lòn ch'a l'ha butà chiel/chila për finì dë scancelé la modìfica ch'a-i era.",
@@ -973,7 +990,9 @@ Ch'a varda mach che a-i ven-a nen fòra un rabel ant la continuità stòrica.",
 'mergelogpagetext' => "Ambelessì sota a-i é na lista dj'ùltime vire che la stòria ëd na pàgina a l'é stàita butà ansema a cola 'd n'àutra.",
 
 # Diffs
-'history-title' => 'Cronologìa dle modìfiche ëd "$1"',
+'history-title' => '$1: Cronologìa dle modìfiche',
+'difference-title' => '$1: Diferensa tra revision',
+'difference-title-multipage' => 'Diferensa tra le pàgine «$1» e «$2»',
 'difference-multipage' => '(Diferense tra pàgine)',
 'lineno' => 'Riga $1:',
 'compareselectedversions' => 'Paragon-a le version selessionà',
@@ -1069,6 +1088,7 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'prefs-beta' => 'Caraterìstiche dla Beta',
 'prefs-datetime' => 'Data e ora',
 'prefs-labs' => 'Caraterìstiche dël laboratòri',
+'prefs-user-pages' => 'Pàgine utent',
 'prefs-personal' => "Profil dl'utent",
 'prefs-rc' => 'Ùltime modìfiche',
 'prefs-watchlist' => 'Ròba che as ten sot euj',
@@ -1544,12 +1564,18 @@ Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:Li
 'backend-fail-closetemp' => "As peul pa saresse l'archivi temporani.",
 'backend-fail-read' => "As peul pa les-se l'archivi $1.",
 'backend-fail-create' => "As peul pa creesse l'archivi $1.",
+'backend-fail-maxsize' => "As peul pa scrivse l'archivi $1 përchè a l'é pi gròss che {{PLURAL:$2|un byte|$2 byte}}.",
 'backend-fail-readonly' => "Ël dispositiv ëd memòria «$1» a l'é al moment an sola letura. La rason dàita a l'era: «$2»",
 'backend-fail-synced' => "L'archivi «$1» a l'é ant në stat incoerent andrinta ai dispositiv ëd memòria intern",
 'backend-fail-connect' => 'Impossìbil coleghesse al dispositiv ëd memòria «$1».',
 'backend-fail-internal' => "N'eror pa conossù a l'é rivaje ant ël dispositiv ëd memòria «$1».",
 'backend-fail-contenttype' => "As peul pa determinesse la sòrt ëd contnù dl'archivi da memorisé a «$1».",
 'backend-fail-batchsize' => "Ël dispositiv ëd memòria a l'ha dàit un total ëd $1 {{PLURAL:$1|operassion|operassion}} d'archivi; ël lìmit a l'é $2 {{PLURAL:$1|operassion|operassion}}.",
+'backend-fail-usable' => "As peul pa scrivse l'archivi $1 a motiv ëd drit insuficent o liste/contnidor mancant.",
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Impossìbil coleghesse a la base ëd dàit ëd lë scartari për ël terminal ëd memorisassion «$1».',
+'filejournal-fail-dbquery' => 'Impossìbil agiorné la base ëd dàit ëd lë scartari për ël terminal ëd memorisassion «$1».',
 
 # Lock manager
 'lockmanager-notlocked' => "As peul pa dësblochesse «$1»; a l'é nen blocà.",
@@ -1667,6 +1693,10 @@ A l'é disponìbil na [[Special:WhatLinksHere/$2|lista completa]].",
 Për piasì, vëdde la [$2 pàgina ëd descrission ëd l'archivi] per d'àutre anformassion.",
 'sharedupload-desc-here' => "Cost archivi a riva da $1 e a peul esse dovrà da dj'àutri proget.
 La descrission an soa [$2 pàgina ëd dëscrission ëd l'archivi] a l'é smonùa sì-sota.",
+'sharedupload-desc-edit' => "St'archivi-sì a riva da $1 e a peul esse dovrà da d'àutri proget. 
+Peul desse ch'a veula modifiché la descrission dzora soa [pàgina ëd descrission dl'archivi $2] ambelelà.",
+'sharedupload-desc-create' => "St'archivi-sì a riva da $1 e a peul esse dovrà da d'àutri proget. 
+Peul desse ch'a veula modifiché la descrission dzora soa [pàgina ëd descrission dl'archivi $2]",
 'filepage-nofile' => 'A esist gnun archivi con ës nòm.',
 'filepage-nofile-link' => "N'archivi con sto nòm-sì a esist pa, ma a peul [$1 carielo].",
 'uploadnewversion-linktext' => "Carié na version neuva dë st'archivi-sì",
@@ -1861,6 +1891,7 @@ Për piasì, ch'a nòta che d'àutri sit an sl'aragnà a peulo coleghesse a n'ar
 A peul arstrenze la visualisassion an selessionand la sòrt ëd registr, lë stranòm utent (sensìbil a majùscol/minùscol), e la pàgina anteressà (sensìbil a majùscol/minùscol).',
 'logempty' => 'Pa gnun element parèj che a sia trovasse ant ij registr.',
 'log-title-wildcard' => "Sërché ant ij tìtoj ch'as anandio për",
+'showhideselectedlogentries' => 'Smon-e/stërmé le vos ëd registr selessionà',
 
 # Special:AllPages
 'allpages' => 'Tute le pàgine',
@@ -1878,6 +1909,12 @@ A peul arstrenze la visualisassion an selessionand la sòrt ëd registr, lë str
 'allpagesprefix' => "Smon-e le pàgine che a l'han ël prefiss:",
 'allpagesbadtitle' => "Ël tìtol che a l'ha daje a la pàgina a va nen bin, ò pura a l'ha andrinta un prefiss inter-lenga ò inter-wiki. A peul esse ëdcò che a l'abia andrinta dij caràter che as peulo nen dovresse ant ij tìtoj.",
 'allpages-bad-ns' => '{{SITENAME}} a l\'ha pa gnun ëspassi nominal "$1".',
+'allpages-hide-redirects' => 'Stërma le ridiression',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "A l'é ancamin ch'a vëd na version memorisà ëd costa pàgina, che a peul esse veja fin a $1.",
+'cachedspecial-viewing-cached-ts' => "A l'é ancamin ch'a s-ciàira na version memorisà ëd costa pagina, che a peul esse nen completament agiornà.",
+'cachedspecial-refresh-now' => "Varda l'ùltima.",
 
 # Special:Categories
 'categories' => 'Categorìe',
@@ -2500,71 +2537,71 @@ Che as sërna, për piasì, un nòm diferent për st'artìcol.",
 L'artìcol ëd destinassion «[[:$1]]» a-i é già. Veul-lo scancelelo për avèj ëd pòst për tramudé l'àutr?",
 'delete_and_move_confirm' => 'É, scancelé la pàgina',
 'delete_and_move_reason' => 'Scancelà për liberé ël pòst për tramudé «[[$1]]»',
-'selfmove' => "Tìtol neuv e tìtol vej a resto midem antra lor; as peul pa tramudesse na pàgina butand-la andoa che a l'é già.",
-'immobile-source-namespace' => 'As peul pa tramudé ëd pàgine ant ël namespace "$1"',
-'immobile-target-namespace' => 'As peul pa tramudé ëd pàgine ant ël namespace "$1"',
-'immobile-target-namespace-iw' => "Un colegament interwiki a l'é pa na destinassion vàlida për tramudé na pàgina.",
+'selfmove' => "Tìtol neuv e tìtol vej a resto midem antra 'd lor; as peul pa tramudesse na pàgina butand-la andoa che a l'é già.",
+'immobile-source-namespace' => 'A peul pa tramudé le pàgine ant lë spassi nominal «$1»',
+'immobile-target-namespace' => 'A peul pa tramudé dle pàgine vers lë spassi nominal «$1»',
+'immobile-target-namespace-iw' => "Na liura interwiki a l'é pa na destinassion vàlida për tramudé na pàgina.",
 'immobile-source-page' => 'Sta pàgina-sì as peul pa tramudesse.',
-'immobile-target-page' => 'As peul pa tramudess al tìtol dë sta destinassion-sì.',
-'imagenocrossnamespace' => 'As peul pa tramudé un file fòra dal sò namespace',
+'immobile-target-page' => 'As peul pa tramudesse vers cost tìtol ëd destinassion.',
+'imagenocrossnamespace' => "As peul pa tramudesse n'archivi a në spassi nominal diferent",
 'nonfile-cannot-move-to-file' => "As peul nen tramudesse lòn ch'a l'é pa n'archivi a lë spassi nominal dj'archivi",
-'imagetypemismatch' => 'La neuva estension dël file a corispond pa a sò tipo',
-'imageinvalidfilename' => "Ël nòm dël file pontà a l'é pa vàlid",
-'fix-double-redirects' => 'Modìfica minca rediression che a ponta al tìtol original',
-'move-leave-redirect' => 'Lassa na rediression',
-'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach utent con drit d'aministrator a peulo tramudela.
+'imagetypemismatch' => "La neuva estension ëd l'archivi a corispond pa a sò tipo",
+'imageinvalidfilename' => "Ël nòm ëd l'archivi bërsaj a l'é nen bon",
+'fix-double-redirects' => 'Agiorné tute le ridiression che a ponto vers ël tìtol original',
+'move-leave-redirect' => 'Lassé na ridiression',
+'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent con ij drit d'aministrator a peulo tramudela.
 L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
 'semiprotectedpagemovewarning' => "'''Nòta:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent argistrà a peulo tramudela.
 L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
 'move-over-sharedrepo' => "== L'archivi a esist ==
 [[:$1]] a esist già dzora a un depòsit partagià. Tramudé n'archivi a cost tìtol-sì a coaterà l'archivi partagià.",
-'file-exists-sharedrepo' => "Ël nòm dël file sërnù a l'é già dovrà ant ël depòsit condivis.
-Për piasì sern n'àutr nòm.",
+'file-exists-sharedrepo' => "Ël nòm d'archivi sërnù a l'é già dovrà ant ël depòsit condivis.
+Për piasì ch'a serna n'àutr nòm.",
 
 # Export
 'export' => 'Esporté dle pàgine',
 'exporttext' => "A peul esporté ël test e modifiché la stòria ëd na pàgina ò pura
-ëd n'ansema ëd pàgine gropa ant n'archivi XML. Sòn a peul peuj amportesse
-ant n'àutra wiki ën dovrand la funsion Special:Ampòrta pàgina.
+ëd n'ansema ëd pàgine gropà ant n'archivi XML. Sòn a peul peuj amportesse
+ant n'àutra wiki ën dovrand MediaWiki con la [[Special:Import|pàgina d'amportassion]].
 
-Për esporté le pàgine, che a së scriva ij tìtoj ant ël quàder ambelessì sota, butand-ji un tìtol për riga,
-e che as serna se a veul la version corenta ansema a cole veje, con le righe che conto la stòria dla pàgina,
-ò pura mach l'anformassion ant sël quand che a sia staje l'ùltima modìfica.
+Për esporté le pàgine, che a së scriva ij tìtoj ant ël quàder ambelessì-sota, butandje un tìtol për riga,
+e che as serna se a veul la version corenta ansema a cole veje, con le righe che conto la stòria dla pàgina,
+ò pura mach l'anformassion an  sl'ùltima modìfica.
 
 Se costa ùltima possibilità a fussa lòn che a-j serv, a podrìa ëdcò dovré n'anliura, pr'esempi [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] për la pàgina \"[[{{MediaWiki:Mainpage}}]]\".",
 'exportall' => 'Esporté tute le pàgine',
-'exportcuronly' => 'Ciapa sù mach la version corenta, pa tuta la stòria',
+'exportcuronly' => 'Ciapé sù mach la version corenta, pa tuta la stòria',
 'exportnohistory' => "----
 '''Nòta:''' la possibilità d'esporté la stòria completa dle pàgine a l'é staita gavà për dle question corelà a le prestassion dël sistema.",
 'exportlistauthors' => 'Anclude na lista completa dij contributor për minca pàgina',
 'export-submit' => 'Esporté',
-'export-addcattext' => "Gionta pàgine da 'nt la categorìa:",
-'export-addcat' => 'Gionta',
-'export-addnstext' => 'Gionta pàgine dal namespace',
-'export-addns' => 'Gionta',
+'export-addcattext' => "Gionté le pàgine da 'nt la categorìa:",
+'export-addcat' => 'Gionté',
+'export-addnstext' => 'Gionté dle pàgine da lë spassi nominal:',
+'export-addns' => 'Gionté',
 'export-download' => 'Ciamé dë salvelo coma archivi',
 'export-templates' => 'Ciapa andrinta jë stamp',
-'export-pagelinks' => 'Anseriss pàgine colegà a na përfondità ëd:',
+'export-pagelinks' => 'Anclude le pàgine colegà a na përfondità ëd:',
 
 # Namespace 8 related
-'allmessages' => 'Messagi ëd sistema',
+'allmessages' => 'Mëssagi ëd sistema',
 'allmessagesname' => 'Nòm',
 'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
 'allmessagescurrent' => 'Test corent',
-'allmessagestext' => "Costa-sì a l'é na lista ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
-Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [//translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
+'allmessagestext' => "Costa-sì a l'é na lista dij mëssagi ëd sistema disponìbij ant lë spassi nominal MediaWiki.
+Për piasì, ch'a vìsita la [//www.mediawiki.org/wiki/Localisation Localisassion ëd MediaWiki] e [//translatewiki.net translatewiki.net] se a veul contribuì a la localisassion general ëd MediaWiki.",
 'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
 'allmessages-filter-legend' => 'Filtr',
-'allmessages-filter' => 'Filtra për stat ëd përsonalisassion:',
+'allmessages-filter' => 'Filtré për stat ëd përsonalisassion:',
 'allmessages-filter-unmodified' => 'Pa modificà',
 'allmessages-filter-all' => 'Tùit',
 'allmessages-filter-modified' => 'Modificà',
-'allmessages-prefix' => 'Filtra për prefiss:',
+'allmessages-prefix' => 'Filtré për prefiss:',
 'allmessages-language' => 'Lenga:',
-'allmessages-filter-submit' => '',
+'allmessages-filter-submit' => 'Apliché',
 
 # Thumbnails
-'thumbnail-more' => 'Slarga',
+'thumbnail-more' => 'Slarg',
 'filemissing' => 'Archivi che a manca',
 'thumbnail_error' => 'Eror antramentr che as fasìa la figurin-a: $1',
 'djvu_page_error' => 'Pàgina DjVu fòra dij lìmit',
@@ -2574,21 +2611,21 @@ Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassi
 'thumbnail_invalid_params' => 'Paràmetro dla figurin-a pa giust',
 'thumbnail_dest_directory' => 'As peul pa fesse ël dossié ëd destinassion',
 'thumbnail_image-type' => 'Sòrt ëd figura nen gestì',
-'thumbnail_gd-library' => 'Configurassion pa finìa dla librerìa GD: Fonsion $1 mancanta',
-'thumbnail_image-missing' => 'Ël file a smija esse mancant: $1',
+'thumbnail_gd-library' => 'Configurassion incompleta dla biblioteca GD: Fonsion $1 mancanta',
+'thumbnail_image-missing' => "L'archivi a smija ch'a manca: $1",
 
 # Special:Import
 'import' => 'Amportassion ëd pàgine',
 'importinterwiki' => 'Amportassion da wiki diferente',
 'import-interwiki-text' => "Che a selession-a na wiki e ël tìtol dla pàgina da amporté.
-Date dle revision e stranòm dj'editor a resteran piajit sù 'cò lor.
-Tute le amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
-'import-interwiki-source' => 'Sorziss wiki/pàgina:',
-'import-interwiki-history' => 'Còpia tute le version stòriche dë sta pàgina-sì',
-'import-interwiki-templates' => 'Ansëriss tùit jë stamp',
+Date dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.
+Tute j'amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
+'import-interwiki-source' => 'Wiki e pàgina sorgiss:',
+'import-interwiki-history' => 'Copié tute le revision ëd la stòria ëd costa pàgina',
+'import-interwiki-templates' => 'Anserì tùit jë stamp',
 'import-interwiki-submit' => 'Amporté',
 'import-interwiki-namespace' => 'Spassi nominal ëd destinassion:',
-'import-upload-filename' => 'Nòm dël file:',
+'import-upload-filename' => "Nòm ëd l'archivi:",
 'import-comment' => 'Oget:',
 'importtext' => "Për piasì, che as espòrta l'archivi da 'nt la sorgiss wiki ën dovrand l'[[Special:Export|utiss d'esportassion]]. 
 Che as lo salva ansima a sò ordinator e peui che a lo caria ambelessì.",
@@ -2599,8 +2636,8 @@ Che as lo salva ansima a sò ordinator e peui che a lo caria ambelessì.",
 'importfailed' => 'Amportassion falìa: $1',
 'importunknownsource' => "Sorgiss d'amportassion ëd na sòrt nen conossùa",
 'importcantopen' => "L'archivi da amporté a l'é pa podusse deurbe",
-'importbadinterwiki' => 'Anliura antra wiki diferente malfaita',
-'importnotext' => 'Veujd ò sensa pa gnun test',
+'importbadinterwiki' => 'Liura antra wiki diferente cioca',
+'importnotext' => 'Veujd o con gnun test',
 'importsuccess' => 'Amportassion andaita a bon fin!',
 'importhistoryconflict' => "A-i son dle stòrie dë sta pàgina-sì che as contradisso un-a con l'àutra (a peul esse che sta pàgina-sì a l'avèissa già amportala)",
 'importnosources' => "A l'é pa staita definìa gnun-a sorgiss d'amportassion da na wiki diferenta, e carié mach le stòrie as peul nen.",
@@ -2742,6 +2779,7 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
 'spambot_username' => 'MediaWiki - trigomiro che a-j dà deuit a la rumenta',
 'spam_reverting' => "Buta andaré a l'ùltima version che a l'avèissa pa andrinta dj'anliure a $1",
 'spam_blanking' => "Pàgina dësveujdà, che tute le version a l'avìo andrinta dj'anliure a $1",
+'spam_deleting' => 'Tute le revision a contnisìo dle liure a $1, scancelament',
 
 # Info page
 'pageinfo-title' => 'Anformassion për "$1"',
@@ -3470,6 +3508,9 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 'version-software' => 'Programa anstalà',
 'version-software-product' => 'Prodot',
 'version-software-version' => 'Version',
+'version-entrypoints' => "Anliure ëd pont d'intrada",
+'version-entrypoints-header-entrypoint' => "Pont d'intrada",
+'version-entrypoints-header-url' => "Adrëssa an sl'aragnà",
 
 # Special:FilePath
 'filepath' => "Përcors d'archivi",
@@ -3669,4 +3710,6 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi
 'duration-centuries' => '$1 {{PLURAL:$1|sécol|sécoj}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenari|milenari}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'As peul pa butesse le saradure an sël servent $1.',
 );
index d6bcd2c..a62df39 100644 (file)
@@ -1092,7 +1092,7 @@ Tū mazzi dīgi etrīnktun dātun kitēimans drāugautwei sen tin pra tērpautaj
 'nchanges' => '$1 {{PLURAL:$1|kitawīdinsna|kitawīdinsnas}}',
 'recentchanges' => 'Panzdaumas kitawīdinsnas',
 'recentchanges-legend' => 'Panzdauman kitawīdinsnan mazīngiskwas',
-'recentchangestext' => 'Šin pāusan waidinna listin stēisan panzdauman kitawīdinsnan en šissei wiki.',
+'recentchanges-summary' => 'Šin pāusan waidinna listin stēisan panzdauman kitawīdinsnan en šissei wiki.',
 'recentchanges-feed-description' => 'Nadirēis ukanāunaisins kitawīdisnans en šissei wiki.',
 'recentchanges-label-newpage' => 'Šis redigīsenis ast teīkuns nāunan pāusan',
 'recentchanges-label-minor' => 'Sta ast malks redigīsenis',
index 9eb32ec..8cfc8b6 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Portuguese (Português)
+/** Portuguese (português)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2672,7 +2672,7 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para rever os bloqueios.',
 'blocklist-userblocks' => 'Esconder bloqueios de contas',
 'blocklist-tempblocks' => 'Esconder bloqueios temporários',
 'blocklist-addressblocks' => 'Esconder bloqueios de IP único',
-'blocklist-rangeblocks' => 'Ocultar range blocks',
+'blocklist-rangeblocks' => 'Ocultar bloqueios de faixas',
 'blocklist-timestamp' => 'Data e hora',
 'blocklist-target' => 'Destinatário',
 'blocklist-expiry' => 'Duração',
index bb159c5..d8e2ff0 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Brazilian Portuguese (Português do Brasil)
+/** Brazilian Portuguese (português do Brasil)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -21,6 +21,7 @@
  * @author Danielsouzat
  * @author Diego Queiroz
  * @author Eduardo.mps
+ * @author Emufarmers
  * @author Everton137
  * @author Francisco Leandro
  * @author GKnedo
@@ -46,6 +47,7 @@
  * @author Raylton P. Sousa
  * @author Rodrigo Calanca Nishino
  * @author Sir Lestaty de Lioncourt
+ * @author TheGabrielZaum
  * @author Urhixidur
  * @author Vuln
  * @author Waldir
@@ -317,7 +319,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Esconder edições patrulhadas nas mudanças recentes',
 'tog-newpageshidepatrolled' => 'Esconder páginas patrulhadas da lista de páginas novas',
 'tog-extendwatchlist' => 'Expandir a lista de páginas vigiadas para mostrar todas as alterações aplicáveis, não apenas as mais recentes',
-'tog-usenewrc' => 'Utilizar mudanças recentes melhoradas (requer JavaScript)',
+'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e páginas vigiadas (requer JavaScript)',
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição (JavaScript)',
 'tog-editondblclick' => 'Editar páginas quando houver clique duplo (JavaScript)',
@@ -794,9 +796,10 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
 'accountcreated' => 'Conta criada',
 'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
 'createaccount-title' => 'Criação de conta em {{SITENAME}}',
-'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
+'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha "$3".
+Você deve se autenticar e alterar sua senha.
 
-Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
+Ignore esta mensagem caso a conta tenha sido criada por engano.',
 'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
 'login-throttled' => 'Você fez tentativas demais de se autenticar com esta conta recentemente.
 Por favor aguarde antes de tentar novamente.',
@@ -1357,6 +1360,7 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'prefs-beta' => 'Características beta',
 'prefs-datetime' => 'Data e hora',
 'prefs-labs' => 'Características de laboratório',
+'prefs-user-pages' => 'Páginas de usuário',
 'prefs-personal' => 'Perfil de usuário',
 'prefs-rc' => 'Mudanças recentes',
 'prefs-watchlist' => 'Lista de páginas vigiadas',
@@ -1837,8 +1841,8 @@ Caso o problema persista, procure um [[Special:ListUsers/sysop|administrador]].'
 'backend-fail-writetemp' => 'Não foi possível gravar no arquivo temporário.',
 'backend-fail-closetemp' => 'Não foi possível fechar o arquivo temporário.',
 'backend-fail-read' => 'Não foi possível ler o arquivo $1.',
-'backend-fail-create' => 'Não foi possível criar o arquivo $1.',
-'backend-fail-maxsize' => 'Não foi possível criar o arquivo $1 por ele ser maior que {{PLURAL:$2|1 byte|$2 bytes}}.',
+'backend-fail-create' => 'Não foi possível criar ou alterar o arquivo $1.',
+'backend-fail-maxsize' => 'Não foi possível criar ou alterar o arquivo $1 por ele ser maior que {{PLURAL:$2|1 byte|$2 bytes}}.',
 'backend-fail-readonly' => 'O servidor de armazenamento "$1" está atualmente no modo "somente leitura". A razão dada foi: "$2"',
 'backend-fail-synced' => 'O arquivo "$1" está em um estado inconsistente dentro do sistema de armazenamento interno',
 'backend-fail-connect' => 'Não foi possível se conectar com o servidor de armazenamento "$1".',
@@ -2161,6 +2165,7 @@ Por favor note que outros websites podem apontar para um arquivo através de um
 Você pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).',
 'logempty' => 'Nenhum item idêntico no registro.',
 'log-title-wildcard' => 'Procurar por títulos que sejam iniciados com o seguinte texto',
+'showhideselectedlogentries' => 'Exibir/ocultar os itens de registros selecionados',
 
 # Special:AllPages
 'allpages' => 'Todas as páginas',
@@ -2642,7 +2647,7 @@ Consulte a [[Special:BlockList|lista de bloqueios]].',
 'blocklist-userblocks' => 'Esconder bloqueios de contas',
 'blocklist-tempblocks' => 'Esconder bloqueios temporários',
 'blocklist-addressblocks' => 'Esconder bloqueios de IP único',
-'blocklist-rangeblocks' => 'Ocultar blocos gama',
+'blocklist-rangeblocks' => 'Ocultar bloqueios de faixas',
 'blocklist-timestamp' => 'Data e hora',
 'blocklist-target' => 'Destinatário',
 'blocklist-expiry' => 'Expira',
index a621bb1..51f005d 100644 (file)
@@ -74,6 +74,7 @@
  * @author Mihai
  * @author Mormegil
  * @author Mpradeep
+ * @author Murma174
  * @author Najami
  * @author Nemo bis
  * @author Niels
@@ -138,7 +139,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
 'tog-newpageshidepatrolled' => 'Toggle in [[Special:Preferences]], section "Recent changes" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}',
 'tog-extendwatchlist' => "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}",
-'tog-usenewrc' => "[[Special:Preferences]], tab 'Recent changes'. Offers user to use alternative reprsentation of [[Special:RecentChanges]]. {{Gender}}",
+'tog-usenewrc' => "[[Special:Preferences]], tab 'Recent changes'. Offers user to use alternative representation of [[Special:RecentChanges]] and watchlist. {{Gender}}",
 'tog-numberheadings' => "[[Special:Preferences]], tab 'Misc'. Offers numbered headings on content pages to user. {{Gender}}",
 'tog-showtoolbar' => "[[Special:Preferences]], tab 'Edit'. Offers user to show edit toolbar in page edit screen. {{Gender}}
 
@@ -310,6 +311,9 @@ See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for
 'index-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__INDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [//www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
 'noindex-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where pages with the <nowiki>__NOINDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [//www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
 'broken-file-category' => 'Name of [[mw:Help:Tracking categories|tracking category]] where pages that embed files that do not exist ("broken images") are listed.',
+'categoryviewer-pagedlinks' => 'The pagination links in category viewer. Parameters:
+* $1 is the previous link,
+* $2 is the next link',
 
 'linkprefix' => '{{optional}}',
 
@@ -319,7 +323,7 @@ See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
+'newwindow' => 'Below the edit form, next to "{{msg-mw|Edithelp}}".',
 'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
 
 {{Identical|Cancel}}',
@@ -411,7 +415,7 @@ Also used as title of [[Special:Search]] page in [[Special:SpecialPages]].
 'edit' => 'The text of the tab going to the edit form. When the page is protected, you will see "[[MediaWiki:Viewsource/{{SUBPAGENAME}}|{{int:viewsource}}]]". Should be in the infinitive mood.
 
 {{Identical|Edit}}',
-'create' => 'The text on the tab for to the edit form on unexisting pages.
+'create' => 'The text on the tab of the edit form on unexisting pages starts editing them.
 
 {{Identical|Create}}',
 'editthispage' => 'This is the "edit" link as used in the skins Classic/Standard, Cologne Blue and Nostalgia. See {{msg|create-this-page}} for when the page does not exist.',
@@ -693,6 +697,8 @@ $1 is a filename, I think.',
 'invalidtitle-unknownnamespace' => 'Displayed when an invalid title was encountered (generally in a list) and the namespace number is unknown.
 * $1 is the namespace number
 * $2 is the part of the title after the namespace (e.g. SomeName for the page User:SomeName)',
+'exception-nologin' => 'Generic page title used on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
+'exception-nologin-text' => 'Generic reason displayed on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
 
 # Login and logout pages
 'logouttext' => 'Log out message',
@@ -729,7 +735,9 @@ $1 is a filename, I think.',
 'nologin' => 'A message shown in the log in form. $1 is a link to the account creation form, and the text of it is "[[MediaWiki:Nologinlink/{{SUBPAGENAME}}|{{int:nologinlink}}]]".',
 'nologinlink' => 'Text of the link to the account creation form. Before that link, the message [[MediaWiki:Nologin/{{SUBPAGENAME}}]] appears.
 {{Identical|Create an account}}',
-'createaccount' => 'The title of Special:CreateAccount, where users can register a new account. Used on Special:SpecialPages, and also on the submit button in the form where you register a new account.
+'createaccount' => 'The title of Special:CreateAccount, where users can register a new account. Used on Special:SpecialPages and on the submit button in the form where you register a new account.
+
+It is also used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
 {{Identical|Create account}}',
 'gotaccount' => 'A message shown in the account creation form. $1 is a link to the log in form, and the text of it is "[[MediaWiki:Gotaccountlink/{{SUBPAGENAME}}|{{int:gotaccountlink}}]]".',
 'gotaccountlink' => 'Text of the link to the log in form. Before that link, the message [[MediaWiki:Gotaccount/{{SUBPAGENAME}}]] appears.
@@ -795,7 +803,7 @@ Parameters:
 *Parameter $4 is a URL to the wiki',
 'login-throttled' => 'Error message shown at [[Special:UserLogin]] after 5 wrong passwords. The hardcoded waiting time is 300 seconds.',
 'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
-'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true.
+'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. $1 is a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
 {{Identical|Language}}',
 
 # E-mail sending
@@ -1241,6 +1249,13 @@ Parameters:
 *Parameter $3 is a log comment for the merge',
 'mergehistory-same-destination' => 'Error message shown on [[Special:MergeHistory]] when the user entered the same page title to both source and destination',
 'mergehistory-reason' => '{{Identical|Reason}}',
+'mergehistory-revisionrow' => 'A revision row in the merge history page. Parameters:
+* $1 is a radio button to indicate a merge point,
+* $2 is a link to the last revision of a page ({{msg-mw|last}}),
+* $3 is a page link,
+* $4 is a user link,
+* $5 is a revision size,
+* $6 is a revision comment',
 
 # Merge log
 'mergelog' => 'This is the name of a log of merge actions done on [[Special:MergeHistory]]. This special page and this log is not enabled by default.',
@@ -1263,7 +1278,7 @@ Please note that the parameters in a log entry will appear in the log only in th
 See also {{msg-mw|difference}}.',
 'lineno' => 'Message used when comparing different versions of a page (diff). $1 is a line number.',
 'compareselectedversions' => 'Used as button in history pages.',
-'showhideselectedversions' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu.',
+'showhideselectedversions' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu on history pages.',
 'editundo' => 'Undo link when viewing diffs
 {{Identical|Undo}}
 
@@ -1394,6 +1409,7 @@ This is a search result (and I guess search engine) dependent messages. I do not
 'prefs-beta' => "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are in beta but mostly suitable for general use",
 'prefs-datetime' => '{{Identical|Date}}',
 'prefs-labs' => "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are experimental",
+'prefs-user-pages' => "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages",
 'prefs-personal' => 'Title of a tab in [[Special:Preferences]].',
 'prefs-rc' => 'Used in user preferences.
 
@@ -1967,7 +1983,9 @@ Extensions making use of it:
 'backend-fail-batchsize' => 'Error message when the limit of operations to be done at once in the file backend was reached.
 Parameters:
 * $1 is the number of operations attempted at once in this case.
-* $2 is the maximum number of operations that can be attempted at once.',
+* $2 is the maximum number of operations that can be attempted at once.
+
+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',
 
@@ -2346,7 +2364,7 @@ $1 is a page title",
 'nopagetitle' => 'Used as title of [[Special:MovePage]], when the oldtitle does not exist.
 
 The text is {{msg-mw|nopagetext}}.',
-'nopagetext' => 'Used as text of [[Special:MovePage]], when the oldtitle does not exist.
+'nopagetext' => 'Used as text on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].
 
 The title is {{msg-mw|nopagetitle}}.',
 'pager-newer-n' => "This is part of the navigation message on the top and bottom of Special pages which are lists of things in date order, e.g. the User's contributions page. It is passed as the second argument of {{msg-mw|Viewprevnext}}. $1 is the number of items shown per page.",
@@ -2361,7 +2379,7 @@ The title is {{msg-mw|nopagetitle}}.',
 'booksources-go' => 'Name of button in [[Special:BookSources]]
 
 {{Identical|Go}}',
-'booksources-invalid-isbn' => 'This message is displayed after an invalid ISBN is entered on Special:Booksources.',
+'booksources-invalid-isbn' => 'This message is displayed after an invalid ISBN is entered on [[Special:Booksources]].',
 
 # Special:Log
 'specialloguserlabel' => 'Used in [[Special:Log]] as a label for an input field with which the log can be filtered for entries describing actions \'\'performed\'\' by the specified user.  "Carried out" and "done" are possible alternatives for "performed".',
@@ -2371,6 +2389,7 @@ The title is {{msg-mw|nopagetitle}}.',
 'alllogstext' => 'Header of [[Special:Log]]',
 'log-title-wildcard' => '* Appears in: [[Special:Log]]
 * Description: A check box to enable prefix search option',
+'showhideselectedlogentries' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu on [[Special:Log]].',
 
 # Special:AllPages
 'allpages' => 'First part of the navigation bar for the special page [[Special:AllPages]] and [[Special:PrefixIndex]]. The other parts are {{msg-mw|Prevpage}} and {{msg-mw|Nextpage}}.
@@ -2468,7 +2487,7 @@ You can apparently use 'URL' instead of 'hostname'.",
 'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in the recent changes.',
+'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
 'newuserlogpagetext' => 'Part of the "Newuserlog" extension. It is the description you can see on [[Special:Log/newusers]].',
 
 # Special:ListGroupRights
@@ -2580,7 +2599,7 @@ This is a button text used in [[Special:Emailuser]] when called without a (valid
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'watchlist-details' => 'Message on Special page: My watchlist. This is paired with the message [[Mediawiki:Nowatchlist]] which appears instead of Watchlist-details when $1 is 0.',
+'watchlist-details' => 'Message on [[Special:Watchlist]]. This is paired with the message {{msg-mw|Nowatchlist}} which appears instead of Watchlist-details when $1 is 0.',
 'wlheader-showupdated' => 'This message shows up near top of users watchlist page.',
 'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
 Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
@@ -2596,6 +2615,7 @@ Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
 'unwatching' => 'Text displayed when clicked on the unwatch tab: [[MediaWiki:Unwatch/{{SUBPAGENAME}}|{{int:unwatch}}]]. It means the wiki is removing that page from your watchlist.',
 'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed. See also {{msg|addedwatchtext}}. and {{msg|addedwatchtext}}. This message is used raw and should not contain wikitext.',
 
+'enotif_reset' => "This should be translated as \"Mark all pages '''as''' visited\".",
 'enotif_newpagetext' => 'Part of text of a notification e-mail sent when a watched page has been created. See [[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]',
 'changed' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
 'created' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
@@ -2729,8 +2749,8 @@ This message was something like "unlock move protection" in the past.',
 {{Identical|Infinite}}",
 'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
 'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
-'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
-'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
+'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Maximum-size}}. There is an input box to specify the minimum bites of the projected pages listed.',
+'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Minimum-size}}. There is an input box to specify the maximum bites of the projected pages listed.',
 'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
 
 # Restrictions (nouns)
@@ -2788,6 +2808,14 @@ This message was something like "unlock move protection" in the past.',
 
 {{identical|Are you sure you want to view the deleted revision of the file...}}',
 'undelete-show-file-submit' => '{{Identical|Yes}}',
+'undelete-revisionrow' => "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",
 
 # Namespace form on various pages
 'namespace' => 'This message is located at [[Special:Contributions]].',
@@ -3172,7 +3200,7 @@ See also:
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tooltip shown when hovering the mouse over the link to your own User page in the upper-side personal toolbox.',
 'tooltip-pt-mytalk' => 'Tooltip shown when hovering over the "my talk" link in your personal toolbox (upper right side).',
-'tooltip-pt-preferences' => 'Tooltip shown when hovering over the "my preferences" ([[MediaWiki:Mypreferences]]) link in your personal toolbox (upper right side).
+'tooltip-pt-preferences' => 'Tooltip shown when hovering over the {{msg-mw|Mypreferences}} link in your personal toolbox (upper right side).
 
 {{Identical|My preferences}}',
 'tooltip-pt-watchlist' => 'Tooltip shown when hovering over the "my watchlist" link in your personal toolbox (upper right side).',
@@ -3200,8 +3228,8 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
 'tooltip-ca-watch' => '{{Identical|Add this page to your watchlist}}',
 'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg|unwatch}} tab.',
 'tooltip-search' => 'The tooltip when hovering over the search menu.',
-'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Go|Go]]” button next to the search box.',
-'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Search|Search]]” button under the search box.',
+'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Go}}” button next to the search box.',
+'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Search}}” button under the search box.',
 'tooltip-p-logo' => 'Tool tip shown when hovering the mouse over the logo that links to [[Main Page]].
 {{Identical|Visit the main page}}',
 'tooltip-n-mainpage' => 'Tool tip shown when hovering the mouse over the link to [[{{MediaWiki:Mainpage}}]].
@@ -3229,7 +3257,7 @@ No GENDER-Support for performance reason.',
 'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg|nstab-template}} tab.',
 'tooltip-ca-nstab-help' => 'Tootip shown when hovering over the {{msg|nstab-help}} tab in the Help namespace.',
 'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg|nstab-category}} tab.',
-'tooltip-minoredit' => 'Tooltip shown when hovering over the "[[MediaWiki:Minoredit/{{SUBPAGENAME}}|{{int:minoredit}}]]" link below the edit form.',
+'tooltip-minoredit' => 'Tooltip shown when hovering over the "{{msg-mw|Minoredit}}" link below the edit form.',
 'tooltip-save' => "This is the text that appears when you hover the mouse over the 'Save page' button on the edit page",
 'tooltip-preview' => 'Tooltip shown when hovering over the "Show preview" button.
 
@@ -3334,7 +3362,12 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
 'nocredits' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}) but when there are no credits available. Note that the credits action is disabled by default (currently enabled on translatewiki.net).',
 
 # Spam protection
-'spam_reverting' => '{{Identical|Revert}}',
+'spam_reverting' => 'Edit summary for spam cleanup script. Used when a page is reverted because all later revisions contained a particular link. Parameters:
+* $1 is a spammed domain name.',
+'spam_blanking' => 'Edit summary for spam cleanup script. Used when a page is blanked (made to have no content, but still exist) because the script could not find an appropriate revision to set the page to. Parameters:
+* $1 is a spammed domain name.',
+'spam_deleting' => 'Edit summary for spam cleanup script. Used when a page is deleted because all revisions contained a particular link. Parameters:
+* $1 is a spammed domain name.',
 
 # Info page
 'pageinfo-title' => 'Page title for action=info.
@@ -3480,7 +3513,7 @@ Part of variable $1 in {{msg-mw|Ago}}
 *{{msg-mw|Days}}',
 
 # Bad image list
-'bad_image_list' => 'This is only message appears to guide administrators to add links with right format. This will not appear anywhere else in Mediawiki.',
+'bad_image_list' => 'This message only appears to guide administrators to add links with the right format. This will not appear anywhere else in MediaWiki.',
 
 /*
 Short names for language variants used for language conversion links.
@@ -4026,6 +4059,7 @@ CW is an abbreviation for clockwise.',
 'exif-contrast-2' => '{{Identical|Hard}}',
 
 'exif-saturation-0' => '{{Identical|Normal}}',
+'exif-saturation-2' => 'Color saturation in picture EXIF data',
 
 'exif-sharpness-0' => '{{Identical|Normal}}',
 'exif-sharpness-1' => '{{Identical|Soft}}',
@@ -4266,14 +4300,14 @@ Bitrate (of a file, typically) in yottabits (1 yottabits = 1000×1000×1000×100
 'livepreview-loading' => '{{Identical|Loading}}',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Message on Special page: Edit watchlist. This is paired with the message [[Mediawiki:Watchlistedit-noitems]] which appears instead of Watchlistedit-numitems when $1 is 0.',
-'watchlistedit-noitems' => "Message on [[Special:Watchlist/edit]], which only appears when a user's watchlist is empty.",
+'watchlistedit-numitems' => 'Message on [[Special:EditWatchlist]]. This is paired with the message {{Msg-mw|Watchlistedit-noitems}} which appears instead of Watchlistedit-numitems when $1 is 0.',
+'watchlistedit-noitems' => "Message on [[Special:EditWatchlist]], which only appears when a user's watchlist is empty.",
 'watchlistedit-normal-title' => 'Title of [[Special:Watchlist/edit|special page]].',
 'watchlistedit-normal-legend' => 'Heading of dialogue box on [[Special:Watchlist/edit]]',
 'watchlistedit-normal-explain' => 'An introduction/explanation about the [[Special:Watchlist/edit|normal edit watchlist function]].
 Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-normal-submit' => 'Text of submit button on [[Special:Watchlist/edit]].',
-'watchlistedit-normal-done' => 'Message on Special page: Edit watchlist after pages are removed from the watchlist.',
+'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.',
 'watchlistedit-raw-title' => 'Title of [[Special:Watchlist/raw|Special page]].
 
 {{Identical|Edit raw watchlist}}',
@@ -4284,8 +4318,8 @@ Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-raw-titles' => 'Text above edit box containing items being watched on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-submit' => 'Text of submit button on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-done' => 'A message which appears after the raw watchlist has been updated using [[Special:Watchlist/raw]].',
-'watchlistedit-raw-added' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is added to the raw watchlist.',
-'watchlistedit-raw-removed' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is deleted from the raw watchlist.',
+'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is added to the raw watchlist.',
+'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is deleted from the raw watchlist.',
 
 # Watchlist editing tools
 'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-edit}} and {{msg|watchlisttools-raw}}.',
@@ -4530,7 +4564,7 @@ It appears that the word 'valid' describes 'tags', not 'change'. It also appears
 'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
 'tags-edit' => '{{Identical|Edit}}
 Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a description.',
-'tags-hitcount' => 'Shown in the “Tagged changes” column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags-hitcount' => 'Shown in the "{{msg-mw|Tags-hitcount-header}}" column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
 
 * <code>$1</code> is the number of changes marked with the tag',
 
index 06df828..c994d0c 100644 (file)
@@ -37,6 +37,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Katiguriya_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Allmessages'               => array( 'TukuyWillaykuna' ),
        'Allpages'                  => array( 'TukuyPanqakuna' ),
@@ -126,9 +129,6 @@ $specialPageAliases = array(
        'Withoutinterwiki'          => array( 'Interwikinnaq', 'Wikipurannaq' ),
 );
 
-#!!# Translation <b>HORA_ACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
-#!!# Translation <b>HORAACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
-#!!# Translation <b>HORALOCAL</b> is used more than once for <a href="#mw-sp-magic-localtime">localtime</a> and <a href="#mw-sp-magic-localhour">localhour</a>.
 $magicWords = array(
        'redirect'                => array( '0', '#PUSAPUNA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
        'notoc'                   => array( '0', '__YUYARINANNAQ__', '__NOTDC__', '__NOTOC__' ),
@@ -146,7 +146,7 @@ $magicWords = array(
        'currentdayname'          => array( '1', 'KUNANPUNCHAWSUTI', 'NOMBREDÍAACTUAL', 'NOMBREDIAACTUAL', 'CURRENTDAYNAME' ),
        'currentyear'             => array( '1', 'KUNANWATA', 'AÑOACTUAL', 'AÑO_ACTUAL', 'CURRENTYEAR' ),
        'currenttime'             => array( '1', 'KUNANPACHA', 'HORAACTUAL', 'HORA_ACTUAL', 'HORA_MINUTOS_ACTUAL', 'HORAMINUTOSACTUAL', 'TIEMPOACTUAL', 'CURRENTTIME' ),
-       'currenthour'             => array( '1', 'KUNANURA', 'HORA_ACTUAL', 'HORAACTUAL', 'HORA_MINUTOS_ACTUAL', 'HORAMINUTOSACTUAL', 'CURRENTHOUR' ),
+       'currenthour'             => array( '1', 'KUNANURA', 'CURRENTHOUR' ),
        'localmonth'              => array( '1', 'KAYPIKILLA', 'MESLOCAL', 'MESLOCAL2', 'LOCALMONTH', 'LOCALMONTH2' ),
        'localmonthname'          => array( '1', 'KAYPIKILLASUTI', 'NOMBREMESLOCAL', 'MESLOCALCOMPLETO', 'LOCALMONTHNAME' ),
        'localmonthnamegen'       => array( '1', 'KAYPIKILLASUTIP', 'GENERADORNOMBREMESLOCAL', 'MESLOCALGENITIVO', 'LOCALMONTHNAMEGEN' ),
@@ -156,7 +156,7 @@ $magicWords = array(
        'localdayname'            => array( '1', 'KAYPIPUNCHAWSUTI', 'NOMBREDIALOCAL', 'NOMBREDÍALOCAL', 'LOCALDAYNAME' ),
        'localyear'               => array( '1', 'KAYPIWATA', 'AÑOLOCAL', 'LOCALYEAR' ),
        'localtime'               => array( '1', 'KAYPIPACHA', 'HORALOCAL', 'HORAMINUTOSLOCAL', 'TIEMPOLOCAL', 'LOCALTIME' ),
-       'localhour'               => array( '1', 'KAYPIURA', 'HORALOCAL', 'HORAMINUTOSLOCAL', 'LOCALHOUR' ),
+       'localhour'               => array( '1', 'KAYPIURA', 'LOCALHOUR' ),
        'numberofpages'           => array( '1', 'HAYKAPANQA', 'NÚMERODEPÁGINAS', 'NUMERODEPAGINAS', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'HAYKAQILLQA', 'NÚMERODEARTÍCULOS', 'NUMERODEARTICULOS', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'HAYKAWILLANIQI', 'NÚMERODEARCHIVOS', 'NUMERODEARCHIVOS', 'NUMBEROFFILES' ),
@@ -526,7 +526,7 @@ $1",
 'versionrequired' => "$1 nisqa MediaWiki llamk'apusqatam muchunki kay p'anqata llamk'achinaykipaq",
 'versionrequiredtext' => "$1 nisqa MediaWiki llamk'apusqatam muchunki kay p'anqata llamk'achinaykipaq. Astawan willasunaykipaqqa, [[Special:Version]] nisqapi qhaway",
 
-'ok' => 'OK',
+'ok' => 'Arí niy',
 'retrievedfrom' => '"$1" p\'anqamanta chaskisqa (Qhichwa / Quechua)',
 'youhavenewmessages' => '$1 qhawanayki kachkan ($2).',
 'newmessageslink' => 'Musuq willaymi',
@@ -650,6 +650,8 @@ $2",
 'filereadonlyerror' => 'Manam atinichu "$1" sutiyuq willañiqita hukchayta, "$2" sutiyuq willañiqi churamuna ñawirillanapaq kachkaptinmi.
 
 Amachaq kamachiqqa kayrayku amachani nispa nirqanmi: "$3".',
+'invalidtitle-knownnamespace' => '"$2" sutisuyu, "$3" qillqasqayuq mana allin kaq qillqa suti',
+'invalidtitle-unknownnamespace' => 'Mana riqsisqa $1 kaq sutisuyu yupay, "$2" qillqasqayuq mana allin kaq qillqa suti',
 
 # Virus scanner
 'virus-badscanner' => "Manam allintachu churapusqa: mana riqsisqa añaw maskaq: ''$1''",
@@ -1012,6 +1014,8 @@ Chay niykunaqa manam chaninchasqachu.",
 'node-count-exceeded-warning' => "P'anqaqa watasqakunata nisyu yupayniyuqmi",
 'expansion-depth-exceeded-category' => "Nisyu mast'ariy ukhu kaqniyuq p'anqakuna",
 'expansion-depth-exceeded-warning' => "P'anqaqa nisyu mast'ariy ukhu kaqniyuqmi",
+'parser-unstrip-loop-warning' => 'Muyupayaq siqum tarisqa',
+'parser-unstrip-recursion-limit' => 'Nisyu kuti muyupayay siqum ($1)',
 
 # "Undo" feature
 'undo-success' => 'Rurasqata kutichiyta atinkim. Manaraq kutichispaykiqa, kay qatiq wakichayta qhawariy rikunaykipaq chiqapta munasqaykichu manallachu, chaymantataq waqaychay kutichinapaq.',
@@ -1187,6 +1191,8 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
 
 # Diffs
 'history-title' => '"$1" p\'anqata hukchasqakunap wiñay kawsaynin',
+'difference-title' => '$1 nisqapaq musuqchasqapura wakin kaynin',
+'difference-title-multipage' => '$1, $2 sutiyuq willañiqipura wakin kaynin',
 'difference-multipage' => "(P'anqakunaqa manam kaqllachu)",
 'lineno' => "Siq'i $1:",
 'compareselectedversions' => "Akllasqa llamk'apusqakunata wakichay",
@@ -1281,6 +1287,7 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
 'prefs-beta' => 'Beta nisqap kaqninkuna',
 'prefs-datetime' => "P'unchaw, pacha",
 'prefs-labs' => 'Laburaturyu nisqap kaqninkuna',
+'prefs-user-pages' => "Ruraqpa p'anqankuna",
 'prefs-personal' => 'Kikinpa willankuna',
 'prefs-rc' => 'Ñaqha hukchasqakuna',
 'prefs-watchlist' => "Watiqasqa p'anqakuna",
@@ -1721,14 +1728,15 @@ $1',
 'backend-fail-writetemp' => "Manam atinichu mit'alla willañiqiman qillqayta.",
 'backend-fail-closetemp' => "Manam atinichu mit'alla willañiqita wichq'ayta.",
 'backend-fail-read' => 'Manam atinichu $1 sutiyuq willañiqita ñawiriyta.',
-'backend-fail-create' => 'Manam atinichu $1 sutiyuq willañiqita kamariyta.',
-'backend-fail-maxsize' => 'Manam atinichu $1 sutiyuq willañiqita kamariyta, {{PLURAL:$2|huk bytemanta|$2 bytemanta}} aswan hatun kaptinmi.',
+'backend-fail-create' => 'Manam atinichu $1 sutiyuq willañiqita qillqayta.',
+'backend-fail-maxsize' => 'Manam atinichu $1 sutiyuq willañiqita qillqayta, {{PLURAL:$2|huk bytemanta|$2 bytemanta}} aswan hatun kaptinmi.',
 'backend-fail-readonly' => '"$1" sutiyuq willañiqi hallch\'ana sirwiqqa ñawirinallapaqmi kachkan, kayrayku: "$2"',
 'backend-fail-synced' => '"$1" sutiyuq willañiqiqa manam sinchichu kachkan ukhupi willañiqi hallch\'ana sirwiqkunapi',
 'backend-fail-connect' => 'Manam atinichu "$1" sutiyuq willañiqi hallch\'ana sirwiqwan t\'inkinakuyta.',
 'backend-fail-internal' => '"$1" sutiyuq willañiqi hallch\'ana sirwiqpi mana riqsisqa pantasqam tukurqan.',
 'backend-fail-contenttype' => 'Manam atinichu "$1" nisqapi hallch\'ana willañiqip samiqninpa layanta yuqanchayta.',
 'backend-fail-batchsize' => "Willañiqi hallch'ana sirwiqmanqa $1 willañiqi {{PLURAL:$1|ruranayuq|ruranayuq}} tawqam qusqa; saywataq $2 {{PLURAL:$1|ruranam|ruranam}}.",
+'backend-fail-usable' => 'Manam atinichu $1 sutiyuq willañiqita qillqayta, mana aypalla saqillaykuna icha mana churanakuna/qullqakuna kaptinmi.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => "Manam atinichu \"\$1\" sutiyuq willañiqi hallch'ana sirwiqpaq p'unchawnintin hallch'awan t'inkiyta.",
index 313cde1..85a7390 100644 (file)
@@ -33,6 +33,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Samiyachiy_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Tinkikunana uraypi aspishpa rikuchina',
index 4b12a40..eb1c27e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Romansh (Rumantsch)
+/** Romansh (rumantsch)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -403,14 +403,15 @@ Eventualmain ha gia insatgi auter stizza quest element.',
 'badtitle' => "Il num da titel endatà n'è betg valid",
 'badtitletext' => 'Il titel da pagina era betg valid, vids u in titel inter-lingua u inter-wiki betg correct.
 El po cuntegnair in u plirs segns che na pon betg vegnir utilisads en titels.',
-'perfcached' => 'Las suandantas datas vegnan ord il cache ed èn eventualmain betg cumplettamain actualas. Maximalmain {{PLURAL:$1|in resultat è|$1 resultats èn}} disponibels en il cache.',
-'perfcachedts' => 'Las suandantas datas derivan dal cache, ultima actualisaziun ils $2 las $3. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => "Las suandantas datas vegnan ord il cache e n'èn eventualmain betg cumplettamain actualas. Maximalmain {{PLURAL:$1|in resultat è disponibel|$1 resultats èn disponibels}} en il cache.",
+'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',
 'actionthrottledtext' => 'Sco mesira cunter spam na pos ti betg exequir questa acziun memia bleras giadas en curt temp. Ti has surpassà questa limita. 
 Emprova danovamain en in per minutas.',
@@ -581,6 +582,10 @@ Pled-clav temporar: $2",
 
 # Special:ChangeEmail
 'changeemail' => "Midar l'adressa dad e-mail",
+'changeemail-no-info' => "Ti stos t'annunziar per acceder directamain questa pagina.",
+'changeemail-newemail' => ' Nova adressa dad e-mail',
+'changeemail-none' => '(nagina)',
+'changeemail-cancel' => 'Interrumper',
 
 # Edit page toolbar
 'bold_sample' => 'Text grass',
@@ -933,7 +938,7 @@ Fa stim che navigar cun agid da las coalliziuns reinizialisescha tia tscherna.',
 'mergelogpagetext' => "Sutvart è ina glista da las ultimas cronologias ch'èn vegnidas unidas cun autras.",
 
 # Diffs
-'history-title' => 'Cronica da versiuns da "$1"',
+'history-title' => '$1: Cronologia da las versiuns',
 'difference-multipage' => '(Differenzas tranter las paginas)',
 'lineno' => 'Lingia $1:',
 'compareselectedversions' => 'cumparegliar las versiuns selecziunadas',
@@ -1031,7 +1036,7 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'prefs-rc' => 'Ultimas midadas',
 'prefs-watchlist' => "Glista d'observaziun",
 'prefs-watchlist-days' => "Dumber dals dis che vegnan inditgads sin la glista d'observaziun:",
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximalmain $1 {{PLURAL:$1|di|dis}}',
 'prefs-watchlist-edits' => 'Dumber da las midadas mussadas en la glista dad observaziun extendida:',
 'prefs-watchlist-edits-max' => 'Dumber maximal: 1000',
 'prefs-watchlist-token' => "Token da la glista d'observaziun",
@@ -1105,6 +1110,8 @@ Questa infurmaziun è publica.',
 'email' => 'E-mail',
 'prefs-help-realname' => "Opziun: Qua pos inditgar in surnum che vegn inditga empè da tes num d'utilisader en tias suttascripziuns cun '''<nowiki>--~~~~</nowiki>'''.",
 'prefs-help-email' => "L'adressa dad e-mail è opziunala, pussibilitescha dentant da trametter in nov pled-clav en cass da sperdita.",
+'prefs-help-email-others' => 'Ti pos era decider che auters ta pon contactar per e-mail entras in link sin tia pagina da discussion.
+Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contacteschan.',
 'prefs-help-email-required' => "Inditgar in'adressa dad e-mail è obligatoric.",
 'prefs-info' => 'Infurmaziuns da basa',
 'prefs-i18n' => 'Internaziunalisaziun',
@@ -1130,7 +1137,7 @@ Questa infurmaziun è publica.',
 'userrights-lookup-user' => "Administrar gruppas d'utilisaders",
 'userrights-user-editname' => "Inditgescha in num d'utilisader:",
 'editusergroup' => "Modifitgar las gruppas d'utilisaders",
-'editinguser' => "Midar ils dretgs da l'utilisader '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Midar ils dretgs da l'utilisader '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => "Modifitgar las gruppas d'utilisaders",
 'saveusergroups' => "Memorisar questas gruppas d'utilisaders",
 'userrights-groupsmember' => 'Commember da:',
@@ -1143,7 +1150,7 @@ Questa infurmaziun è publica.',
 'userrights-no-interwiki' => "Ti n'has betg la permissiun da midar dretgs d'utilisaders sin autras wikis.",
 'userrights-nodatabase' => "La banca da datas $1 n'exista betg u n'è betg locala.",
 'userrights-nologin' => "Ti stos [[Special:UserLogin|t'annunziar]] cun in conto d'aministratur per modifitgar ils dretgs d'utilisader.",
-'userrights-notallowed' => "Tes conto d'utilisader n'ha betg la permissiun dad agiuntar dretgs d'utilisaders.",
+'userrights-notallowed' => "Tes conto d'utilisader n'ha betg la permissiun dad agiuntar u allontanar dretgs d'utilisaders.",
 'userrights-changeable-col' => 'Gruppas che ti pos modifitgar',
 'userrights-unchangeable-col' => 'Gruppas che ti nas pos betg modifitgar',
 
@@ -1154,15 +1161,15 @@ Questa infurmaziun è publica.',
 'group-bot' => 'Bots',
 'group-sysop' => 'Administraturs',
 'group-bureaucrat' => 'Birocrat',
-'group-suppress' => 'Oversights',
+'group-suppress' => 'Supervisurs',
 'group-all' => '(tuts)',
 
-'group-user-member' => 'Utilisader',
-'group-autoconfirmed-member' => 'Utilisader confermà automaticamain',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'Administratur',
-'group-bureaucrat-member' => 'Birocrat',
-'group-suppress-member' => 'Oversight',
+'group-user-member' => '{{GENDER:$1|utilisader|utilisadra|utilisader}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|utilisader confermà automaticamain|utilisadra confermada automaticamain|utilisader confermà automaticamain}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|administratur|administratura|administratur}}',
+'group-bureaucrat-member' => '{{GENDER:$1|birocrat|birocrata|birocrat}}',
+'group-suppress-member' => '{{GENDER:$1|supervisur|supervisura|supervisur}}',
 
 'grouppage-user' => '{{ns:project}}:Utilisaders',
 'grouppage-autoconfirmed' => '{{ns:project}}:Utilisaders confermads automaticamain',
@@ -1275,7 +1282,7 @@ Questa infurmaziun è publica.',
 'nchanges' => '$1 {{PLURAL:$1|midada|midadas}}',
 'recentchanges' => 'Ultimas midadas',
 'recentchanges-legend' => 'Opziuns per las ultimas midadas',
-'recentchangestext' => "Sin questa pagina pos ti suandar las ultimas midadas sin '''{{SITENAME}}'''.",
+'recentchanges-summary' => "Sin questa pagina pos ti suandar las ultimas midadas sin '''{{SITENAME}}'''.",
 'recentchanges-feed-description' => 'Suonda las ultimas midadas en la wiki cun quet feed.',
 'recentchanges-label-newpage' => 'Questa modificaziun ha creà ina nova pagina',
 'recentchanges-label-minor' => 'Quai è ina pitschna modificaziun',
@@ -1423,17 +1430,51 @@ Controllescha per plaschair l'opziun <code>file_uploads</code>.",
 'upload-description' => 'Descripziun da la datoteca',
 'upload-options' => 'Opziuns per chargiar si',
 'watchthisupload' => 'Observar questa datoteca',
+'upload-success-subj' => 'Transferì cun success',
+'upload-success-msg' => 'Tes transfer da [$2] è stà cun success. La datoteca è disponibla qua: [[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'Probelm cun transferir',
+'upload-failure-msg' => 'I è capitada ina errur durant transferir da [$2]:
+$1',
+'upload-warning-subj' => 'Avertiment da transferir',
+'upload-warning-msg' => 'Ina errur è capitada cun tes transfer da [$2]. Ti pos returnar al [[Special:Upload/stash/$1|formular per transferir]] per curreger quest problem.',
 
 'upload-proto-error' => 'Protocol nuncorrect',
+'upload-proto-error-text' => 'Il transfer da servers externs basegna URLs che cumenzan cun <code>http://</code> u <code>ftp://</code>.',
+'upload-file-error' => 'Errur interna',
+'upload-file-error-text' => 'Ina errur interna è capitada durant empruvar da crear ina datoteca temporara sin il server. 
+Contactescha per plaschair in [[Special:ListUsers/sysop|administratur]].',
+'upload-misc-error' => 'Errur da transferir nunenconuschenta',
+'upload-misc-error-text' => "Ina errur nunenconuschenta è capitada durant transferir. 
+Controllescha per plaschair che l'URL è valida ed accessibla ed emprova anc ina giada.
+Sch'il problem exista anc adina, contactescha in [[Special:ListUsers/sysop|administratur]].",
 'upload-too-many-redirects' => 'La URL ha cuntegnì memia blers renviaments',
 'upload-unknown-size' => 'Grondezza nunenconuschenta',
 'upload-http-error' => 'In sbagl da HTTP è capità: $1',
 
+# File backend
+'backend-fail-stream' => 'Impussibel da leger la datoteca $1.',
+'backend-fail-backup' => 'Impussibel da far ina copia da segirezza da $1.',
+'backend-fail-notexists' => "La datoteca $1 n'exista betg.",
+'backend-fail-hashes' => "Impussibel d'obtenir ils hashs da las datotecas per las cumparegliar.",
+'backend-fail-notsame' => 'Ina datoteca betg identica exista gia sin $1.',
+'backend-fail-invalidpath' => "$1 n'è betg in percus valida per memorisar.",
+'backend-fail-delete' => 'Impussibel da stizzar la datoteca $1.',
+'backend-fail-alreadyexists' => 'La datoteca $1 exista gia.',
+'backend-fail-store' => 'Impussibel da memorisar la datoteca $1 en $2.',
+'backend-fail-copy' => 'Impussibel da copiar la datoteca $1 a $2.',
+'backend-fail-move' => 'Impussibel da spustar la datoteca $1 a $2.',
+'backend-fail-opentemp' => 'Impussibel dad avrir la datoteca temporara.',
+'backend-fail-writetemp' => 'Impussibel da scriver en la datoteca temporara.',
+'backend-fail-closetemp' => 'Impussibel da serrar la datoteca temporara.',
+'backend-fail-read' => 'Impussibel da leger la datoteca $1.',
+'backend-fail-create' => 'Impussibel da crear la datoteca $1.',
+'backend-fail-readonly' => 'Il backend "$1" da memorisar è actualmain en il modus da be leger. Il motiv inditgà è: "$2".',
+
 # img_auth script messages
 'img-auth-accessdenied' => "Refusà l'access",
 'img-auth-nopathinfo' => "PATH_INFO manca.
 Tes server n'è betg configurà per surdar questa infurmaziun.
-I basa forsa sin CGI è na sustegna betg img_auth.
+El basa forsa sin CGI è na sustegna betg img_auth.
 Consultescha https://www.mediawiki.org/wiki/Manual:Image_Authorization.",
 'img-auth-nologinnWL' => 'Ti n\'ès betg t\'annunzia ed "$1" n\'è betg sin la glista alva.',
 'img-auth-nofile' => 'Datoteca "$1" n\'exista betg.',
@@ -1583,7 +1624,7 @@ Betg emblida da controllar sche autras colliaziuns mainan als models avant ch'al
 'statistics-users-active-desc' => "Utilisaders che han fatg almain ina acziun {{PLURAL:$1|l'ultim di|ils ultims $1 dis}}",
 'statistics-mostpopular' => 'Paginas visitadas il pli savens',
 
-'disambiguations' => 'Paginas per la decleraziun da noziuns',
+'disambiguations' => 'Paginas cun colliaziuns sin paginas per la decleraziun da noziuns',
 'disambiguationspage' => 'Template:disambiguiziun',
 
 'doubleredirects' => 'Renviaments dubels',
@@ -1664,7 +1705,7 @@ I renviescha uss a [[$2]].',
 'booksources-go' => 'Leger',
 
 # Special:Log
-'specialloguserlabel' => 'Utilisader:',
+'specialloguserlabel' => 'Acziun exequida da:',
 'speciallogtitlelabel' => 'Titel:',
 'log' => 'logs / cudesch da navigaziun',
 'all-logs-page' => 'Tut ils logs publics',
@@ -1694,7 +1735,7 @@ I renviescha uss a [[$2]].',
 'sp-deletedcontributions-contribs' => 'contribuziuns',
 
 # Special:LinkSearch
-'linksearch' => 'Colliaziuns externas',
+'linksearch' => 'Tschertgar colliaziuns externas',
 'linksearch-pat' => 'Muster da tschertgar:',
 'linksearch-ns' => 'Tip da pagina:',
 'linksearch-ok' => 'Tschertgar',
@@ -2223,7 +2264,7 @@ En quests cas as ti da spustar u colliar manualmain las paginas, sche giavischà
 
 L\'artitgel da destinaziun "[[:$1]]" exista gia. Vul ti stizzar el per far plaz per spustar?',
 'delete_and_move_confirm' => 'Gea, stizzar il artitgel da destinaziun per spustar',
-'delete_and_move_reason' => 'Stizzà per far plaz per spustar',
+'delete_and_move_reason' => 'Stizzà per far plaz per spustar da "[[$1]]"',
 'selfmove' => 'Il num da funtauna e destinaziun èn identics; 
 betg pussaivel da spustar ina pagina en il medem lieu.',
 'immobile-source-namespace' => 'Paginas dal tip da pagina "$1" na pon betg vegnir spustadas',
@@ -2254,9 +2295,11 @@ Quel po vegnir importà en ina autra wiki che sa basa sin MediaWiki cun agid da
 Endatescha en il champ sutvart tut ils artitgels che ti vuls exportar, per mintga artitgel ina nova lingia, ed inditgescha era sche ti vuls includer l'entira cronologia u be la versiun actuala. 
 
 En cas che ti vul be exportar l'ultima versiun pos ti era utilisar in link, p.ex. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per la pagina \"[[{{MediaWiki:Mainpage}}]]\".",
+'exportall' => 'Exportar tut las paginas',
 'exportcuronly' => "Exportar be la versiun actuala, betg l'entira cronologia",
 'exportnohistory' => "----
 '''Remartga:''' La funcziun dad exportar l'entira cronologia en questa furma è deactivada ord motivs da prestaziun.",
+'exportlistauthors' => 'Integrar ina glista cumpletta dals contribuents a mintga pagina',
 'export-submit' => 'Exportar',
 'export-addcattext' => 'Agiuntar paginas da la categoria:',
 'export-addcat' => 'Agiuntar',
@@ -2289,6 +2332,8 @@ Fai ina visita sin [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation
 'thumbnail_error' => 'Sbagl cun crear il maletg da prevista: $1',
 'djvu_page_error' => 'Pagina da DjVu è ordaifer la limita',
 'djvu_no_xml' => "Betg pussaivel da retschaiver l'XML per la datoteca da DjVu",
+'thumbnail-temp-create' => 'Impussibel da crear in maletg da prevista temporar',
+'thumbnail-dest-create' => 'Impussibel da memorisar il maletg da prevista a la destinaziun',
 'thumbnail_invalid_params' => 'Parameters nunvalids dal maletg da prevista',
 'thumbnail_dest_directory' => "Betg pussaivel da crear l'ordinatur da destinaziun.",
 'thumbnail_image-type' => 'Quest tip da maletg na vegn betg sustegnì',
@@ -2337,6 +2382,11 @@ In ordinatur temporar manca.",
 'import-token-mismatch' => 'Perdita da datas da la sesida.
 Emprova danovamain.',
 'import-invalid-interwiki' => 'Betg pussaivel dad importar dal wiki inditgà.',
+'import-error-edit' => 'La pagina "$1" n\'è betg vegnida importada perquai che ti na dastgas betg la modifitgar.',
+'import-error-create' => 'La pagina "$1" n\'è betg vegnida importada perquai che ti na la dastgas betg crear.',
+'import-error-interwiki' => 'La pagina "$1" n\'è betg vegnida importada perquai ch\'il num è reservà per colliaziuns externas (interwiki).',
+'import-error-special' => 'La pagina "$1" n\'è betg vegnida importada perquai ch\'ella fa part dad in tip da pagina spezial che na lubescha naginas pagina.',
+'import-error-invalid' => 'La pagina "$1" n\'è betg vegnida importada perquai ch\'il num n\'è betg valid.',
 
 # Import log
 'importlogpage' => 'Log dals imports',
@@ -2346,6 +2396,16 @@ Emprova danovamain.',
 'import-logentry-interwiki' => 'ha importà $1 (transwiki)',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|Ina versiun|$1 versiuns}} da $2',
 
+# JavaScriptTest
+'javascripttest' => 'Test da JavaScript',
+'javascripttest-disabled' => 'Questa funcziun è deactivada.',
+'javascripttest-title' => 'Exequir tests da $1',
+'javascripttest-pagetext-noframework' => 'Questa pagina è reservada per exequir tests da JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Framework da test nunenconuschent "$1".',
+'javascripttest-pagetext-frameworks' => 'Tscherna per plaschair in dals suandantas frameworks da test: $1',
+'javascripttest-pagetext-skins' => 'Tscherna in skin che duai vegnir utilisà per ils tests:',
+'javascripttest-qunit-intro' => 'Legia la [$1 documentaziun da tests] sin mediawiki.org.',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "Mussar tia pagina d'utilisader",
 'tooltip-pt-anonuserpage' => "La pagina d'utilisader per l'adressa IP cun la quala che ti fas modificaziuns",
@@ -2408,6 +2468,8 @@ Ti pos vesair il code-fundamental.',
 'tooltip-diff' => 'Mussar las midadas che ti has fatg en il text.',
 'tooltip-compareselectedversions' => 'Mussar la differenza tranter las duas versiuns selecziunadas da questa pagina.',
 'tooltip-watch' => "Agiuntar questa pagina a tia pagina d'observaziun",
+'tooltip-watchlistedit-normal-submit' => 'Allontanar las endataziuns tschernidas',
+'tooltip-watchlistedit-raw-submit' => "Actualisar la glista d'observaziun",
 'tooltip-recreate' => "Crear danovamain la pagnina, malgrà ch'ella è vegnida stizzada",
 'tooltip-upload' => 'Cumenzar da chargiar si',
 'tooltip-rollback' => "Revochescha tut las modificaziuns vid questa pagina da l'ultim utilisader cun be in clic.",
@@ -2503,7 +2565,7 @@ Cun exequir questa datoteca po tes sistem vegnir donnegià.",
 'svg-long-desc' => 'datoteca da SVG, grondezza da basa $1 × $2 pixels, grondezza da datoteca: $3',
 'show-big-image' => 'Resoluziun cumplaina',
 'show-big-image-preview' => 'Grondezza da questa prevista: $1.',
-'show-big-image-other' => 'Autras resoluziuns: $1.',
+'show-big-image-other' => 'Other {{PLURAL:$2|resoluziun|resoluziuns}}: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
 'file-info-gif-looped' => 'marscha infinit',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|maletg|maletgs}}',
@@ -2523,6 +2585,13 @@ Cun exequir questa datoteca po tes sistem vegnir donnegià.",
 'bydate' => 'tenor data',
 'sp-newimages-showfrom' => 'Las novas datotecas davent dal $1 las $2 vegnan mussadas.',
 
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '{{PLURAL:$1|$1 secunda|$1 secundas}}',
+'minutes' => '{{PLURAL:$1|$1 minuta|$1 minutas}}',
+'hours' => '{{PLURAL:$1|$1 ura|$1 uras}}',
+'days' => '{{PLURAL:$1|$1 di|$1 dis}}',
+'ago' => 'avant $1',
+
 # Bad image list
 'bad_image_list' => "Il format è sco suonda:
 
@@ -2744,9 +2813,9 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
 'exif-orientation-3' => 'Rotà per 180°',
 'exif-orientation-4' => 'Reflectà verticalmain',
 'exif-orientation-5' => "Rotà 90° en senn cuntrari a l'ura e reflectà verticalmain",
-'exif-orientation-6' => "Rotà 90° en senn da l'ura",
+'exif-orientation-6' => "Rotà 90° en senn cuntrari a l'ura",
 'exif-orientation-7' => "Rotà 90° en senn da l'ura e reflectà verticalmain",
-'exif-orientation-8' => "Rotà 90° en senn cuntrari a l'ura",
+'exif-orientation-8' => "Rotà 90° en senn da l'ura",
 
 'exif-planarconfiguration-1' => 'Format grop (chunky)',
 'exif-planarconfiguration-2' => 'Format planar',
@@ -3178,6 +3247,9 @@ Endatescha il num da datoteca senza il prefix "{{ns:file}}:".',
 'compare-rev1' => 'Versiun 1',
 'compare-rev2' => 'Versiun 2',
 'compare-submit' => 'Cumparegliar',
+'compare-invalid-title' => 'Il titel che ti has spezifitgà è nunvalid.',
+'compare-title-not-exists' => "Il titel che ti has inditgà n'exista betg.",
+'compare-revision-not-exists' => "La versiun che ti has inditgà n'exista betg.",
 
 # Database error messages
 'dberr-header' => 'Questa wiki ha in problem',
@@ -3206,6 +3278,60 @@ Questa pagina ha actualmain difficultads tecnicas.',
 'sqlite-no-fts' => '$1 senza sustegn per la retschertga da text integrala',
 
 # New logging system
+'logentry-delete-delete' => '$1 ha stizzà la pagina $3',
+'logentry-delete-restore' => '$1 ha restaurà la pagina $3',
 'newuserlog-byemail' => 'tramess il pled-clav per e-mail',
 
+# Feedback
+'feedback-subject' => 'Object:',
+'feedback-message' => 'Messadi:',
+'feedback-cancel' => 'Interrumper',
+'feedback-submit' => 'Trametter il resun',
+'feedback-adding' => 'Agiuntar il resun a la pagina…',
+'feedback-error1' => 'Errur: Resultat nunenconuschent dal API',
+'feedback-error2' => "Errur: La modificaziun n'è betg reussida",
+'feedback-error3' => 'Errur: Nagina resposta dal API',
+'feedback-thanks' => 'Grazia! Tes resun è vegnì publitgà sin la pagina "[$2 $1]".',
+'feedback-close' => 'Terminà',
+'feedback-bugcheck' => "Grondius! Controllescha simplamain che quai n'è betg gia in da las [$1 errurs enconuschentas].",
+'feedback-bugnew' => 'Jau hai controllà. Rapportar ina nova errur.',
+
+# API errors
+'api-error-badaccess-groups' => 'Ti na dastgas betg chargiar datotecas en quest wiki.',
+'api-error-badtoken' => 'Errur interna: Token fauss.',
+'api-error-copyuploaddisabled' => 'La funcziun da transferir dad ina URL è deactivada sin quest server.',
+'api-error-duplicate' => 'I dat gia {{PLURAL:$1|ina [$2 autra datoteca]|[$2 autras datotecas]}} cun il medem cuntegn.',
+'api-error-duplicate-archive' => 'I deva gia {{PLURAL:$1|ina [$2 autra datoteca]|[$2 autras datotecas]}} cun il medem cuntegn, {{PLURAL:$1|quella è dentant vegnida stizzada|quellas èn dentant vegnidas stizzadas}}.',
+'api-error-duplicate-archive-popup-title' => "{{PLURAL:$1|Datoteca dubla ch'è gia vegnida stizzada|Datotecas dublas ch'èn gia vegnidas stizzadas}}.",
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|Datoteca dubla|Datotecas dublas}}.',
+'api-error-empty-file' => 'La datoteca tramessa è vida.',
+'api-error-emptypage' => "Crear paginas novas e vidas n'è betg lubì.",
+'api-error-fetchfileerror' => "Errur interna: Insatge n'ha betg funcziunà durant retschaiver la datoteca.",
+'api-error-file-too-large' => 'La datoteca che ti has tramess era memia gronda.',
+'api-error-filename-tooshort' => 'Il num da datoteca è memia curt.',
+'api-error-filetype-banned' => 'Quest tip da datoteca è scumandà.',
+'api-error-filetype-missing' => "Il num da datoteca n'ha betg ina finiziun da datoteca.",
+'api-error-hookaborted' => 'La midada che ti has empruvà da far è vegnida interrutta dad ina extensiun.',
+'api-error-http' => 'Errur interna: Betg pussaivel da connectar cun il server.',
+'api-error-illegal-filename' => "Il num da datoteca n'è betg lubì.",
+'api-error-internal-error' => "Errur interna: Insatge n'ha betg funcziunà durant transmetter tia datoteca en la vichi.",
+'api-error-invalid-file-key' => "Errur interna: La datoteca n'è betg vegnida chattada en la memoria temporara.",
+'api-error-missingparam' => 'Errur interna: Parameters da la dumonda manchants.',
+'api-error-missingresult' => "Errur interna: I na pudeva betg vegnir constatà sch'il process da copiar è reussì.",
+'api-error-mustbeloggedin' => "Ti stos esser t'annunzià per pudair transferir datotecas.",
+'api-error-mustbeposted' => 'Errur interna: La dumonda basegna HTTP POST.',
+'api-error-noimageinfo' => "La datoteca è vegnida transferida cun success, ma il server n'ha returnà naginas infurmaziuns davart la datoteca.",
+'api-error-nomodule' => 'Errur interna: Nagin modul per chargiar si è definì.',
+'api-error-ok-but-empty' => 'Errur interna: Nagina resposta dal server.',
+'api-error-overwrite' => "Recuvrir (surscriver) ina daoteca existenta n'è betg lubì.",
+'api-error-stashfailed' => 'Errur interna: Errur cun memorisar la datoteca temporara.',
+'api-error-timeout' => "Il server n'ha betg respundì entaifer il temp spetgà.",
+'api-error-unclassified' => 'Ina errur nunenconuschenta è capitada.',
+'api-error-unknown-code' => 'Errur nunenconuschenta: "$1"',
+'api-error-unknown-error' => "Errur interna: Insatge n'ha betg funcziunà durant transferir tia datoteca.",
+'api-error-unknown-warning' => 'Avertiment nunenconuschent: "$1".',
+'api-error-unknownerror' => 'Errur nunenconuschenta: "$1".',
+'api-error-uploaddisabled' => 'La funcziun da chargiar datotecas sin quest vichi è deactivada.',
+'api-error-verification-error' => 'Questa datoteca pudess esser corrupta ni avair ina extensiun faussa.',
+
 );
index 0b31276..53fc430 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Romanian (Română)
+/** Romanian (română)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -305,7 +305,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ascunde în schimbări recente editările patrulate',
 'tog-newpageshidepatrolled' => 'Ascunde paginile patrulate din lista de pagini noi',
 'tog-extendwatchlist' => 'Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente',
-'tog-usenewrc' => 'Afișează varianta îmbunătățită a schimbărilor recente (necesită JavaScript)',
+'tog-usenewrc' => 'Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite (necesită JavaScript)',
 'tog-numberheadings' => 'Numerotează automat secțiunile',
 'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare (JavaScript)',
 'tog-editondblclick' => 'Activează modificarea paginii prin dublu clic (JavaScript)',
@@ -695,6 +695,8 @@ Motivul invocat este ''$2''.",
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Configurație greșită: scaner de virus necunoscut: ''$1''",
@@ -737,7 +739,7 @@ Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:P
 Vă rugăm să alegeți un alt nume.',
 'loginerror' => 'Eroare de autentificare',
 'createaccounterror' => 'Nu pot crea contul: $1',
-'nocookiesnew' => 'Contul a fost creat, dar dvs. nu sunteți autentificat(ă). {{SITENAME}} folosește cookie-uri pentru a reține utilizatorii autentificați. Browser-ul dvs. are modulele cookie dezactivate (disabled). Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
+'nocookiesnew' => 'Contul a fost creat, dar nu sunteți autentificat{{GENDER:||ă|}}. {{SITENAME}} folosește module cookie pentru a reține utilizatorii autentificați. Navigatorul dumneavoastră are aceste module cookie dezactivate. Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
 'nocookieslogin' => '{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.',
 'nocookiesfornew' => 'Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.
 Asigurați-vă că aveți cookie-urile activate, reîncărcați pagina și încercați din nou.',
@@ -1259,9 +1261,9 @@ Folosirea linkurilor de navigare va reseta această coloană.',
 'mergelogpagetext' => 'Mai jos este o listă a celor mai recente combinări ale istoricului unei pagini cu al alteia.',
 
 # Diffs
-'history-title' => 'Istoricul versiunilor pentru „$1”',
-'difference-title' => 'Diferență între versiunile paginii „$1”',
-'difference-title-multipage' => 'Diferență între paginile „$1” și „$2”',
+'history-title' => '$1: Istoricul versiunilor',
+'difference-title' => '$1: Diferență între versiuni',
+'difference-title-multipage' => '$1 și $2: Diferență între pagini',
 'difference-multipage' => '(Diferență între pagini)',
 'lineno' => 'Linia $1:',
 'compareselectedversions' => 'Compară versiunile marcate',
@@ -1357,6 +1359,7 @@ Folosirea linkurilor de navigare va reseta această coloană.',
 'prefs-beta' => 'Opțiuni beta',
 'prefs-datetime' => 'Data și ora',
 'prefs-labs' => 'Opțiuni „labs”',
+'prefs-user-pages' => 'Pagini de utilizator',
 'prefs-personal' => 'Informații personale',
 'prefs-rc' => 'Schimbări recente',
 'prefs-watchlist' => 'Listă de urmărire',
@@ -1817,6 +1820,7 @@ Dacă problema persistă, contactați un [[Special:ListUsers/sysop|administrator
 'backend-fail-create' => 'Imposibil de scris fișierul $1.',
 'backend-fail-maxsize' => 'Nu s-a putut scrie fișierul $1 pentru că acesta este mai mare de {{PLURAL:$2|un octet|$2 octeți|$2 de octeți}}.',
 'backend-fail-contenttype' => 'Nu s-a putut determina tipul de conținut al fișierului de stocat la „$1”.',
+'backend-fail-usable' => 'Imposibil de scris fișierul $1 din cauza permisiunilor insuficiente sau din cauza directoarelor/containerelor lipsă.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Imposibil de deblocat „$1”; nu este blocată.',
@@ -2146,6 +2150,7 @@ Vă rugăm să aveți în vedere faptul că alte saituri web pot avea o legătur
 Puteți limita vizualizarea selectând tipul jurnalului, numele de utilizator sau pagina afectată.',
 'logempty' => 'Nici o înregistrare în jurnal.',
 'log-title-wildcard' => 'Caută titluri care încep cu acest text',
+'showhideselectedlogentries' => 'Arată/ascunde intrările selectate din jurnal',
 
 # Special:AllPages
 'allpages' => 'Toate paginile',
@@ -2759,7 +2764,7 @@ automat odată cu aceasta '''afară de cazul că''':
 manual paginile de discuții, dacă dorești acest lucru.",
 'movearticle' => 'Pagina de redenumit:',
 'moveuserpage-warning' => "'''Atenție''': sunteți pe cale să redenumiți o pagină de utilizator. Vă rugăm să rețineți că singura redenumită va fi pagina, nu și utilizatorul.",
-'movenologin' => 'Nu ești autentificat',
+'movenologin' => 'Nu sunteți autentificat{{GENDER:||ă}}.',
 'movenologintext' => 'Trebuie să fii un utilizator înregistrat și să te [[Special:UserLogin|autentifici]] pentru a muta o pagină.',
 'movenotallowed' => 'Nu ai permisiunea să muți pagini.',
 'movenotallowedfile' => 'Nu ai permisiunea de a muta fișiere.',
@@ -3038,7 +3043,8 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'spamprotectionmatch' => 'Următorul text a fost oferit de filtrul de spam: $1',
 'spambot_username' => 'Curățarea de spam a MediaWiki',
 'spam_reverting' => 'Revenire la ultima versiune care nu conține legături către $1',
-'spam_blanking' => 'Toate reviziile conținând legături către $1, au eșuat',
+'spam_blanking' => 'Toate versiunile conținând legături către $1 au fost golite',
+'spam_deleting' => 'Toate versiunile conținând legături către $1 au fost șterse',
 
 # Info page
 'pageinfo-title' => 'Informații pentru „$1”',
@@ -3828,11 +3834,11 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 # Database error messages
 'dberr-header' => 'Acest site are o problemă',
 'dberr-problems' => 'Ne cerem scuze! Acest site întâmpină dificultăți tehnice.',
-'dberr-again' => 'Așteaptă câteva minute și încearcă din nou.',
+'dberr-again' => 'Așteptați câteva minute și încercați din nou.',
 'dberr-info' => '(Nu pot contacta baza de date a serverului: $1)',
-'dberr-usegoogle' => 'Între timp poți efectua căutarea folosind Google.',
-'dberr-outofdate' => 'De reținut ca indexarea conținutului nostru de către ei poate să nu fie actualizată.',
-'dberr-cachederror' => 'Următoarea pagină este o copie în cache a paginii cerute, s-ar putea să nu fie actualizată.',
+'dberr-usegoogle' => 'Între timp puteți efectua căutarea folosind Google.',
+'dberr-outofdate' => 'De reținut că indexarea conținutului nostru de către ei poate să nu fie actualizată.',
+'dberr-cachederror' => 'Următoarea pagină este o copie în cache a paginii cerute, care s-ar putea să nu fie actualizată.',
 
 # HTML forms
 'htmlform-invalid-input' => 'Există probleme la valorile introduse',
index 4c5dd64..6a8fff5 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tarandíne (Tarandíne)
+/** tarandíne (tarandíne)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -30,7 +30,7 @@ $messages = array(
 'tog-hidepatrolled' => "Scunne le cangiaminde condrollete jndr'à le cangiaminde recende",
 'tog-newpageshidepatrolled' => "Scunne le pàggene tenute sotte condrolle da 'a liste de le pàggene nuève",
 'tog-extendwatchlist' => "Spanne 'a liste de le pàggene condrollete pe fa vedè tutte le cangiaminde fatte, none sulamende l'urteme",
-'tog-usenewrc' => "Ause le cangiaminde recende migliorate (richiede 'u JavaScript)",
+'tog-usenewrc' => "Ause le cangiaminde recende migliorate (vole 'u JavaScript)",
 'tog-numberheadings' => 'Testete auto-numerete',
 'tog-showtoolbar' => "Fà vedè 'a barra de le cangiaminde (JavaScript)",
 'tog-editondblclick' => "Cange le pàggene cu 'nu doppie clic (JavaScript)",
@@ -1009,9 +1009,9 @@ Vide Bbuene ca ausanne le collegaminde de navigazzione sta culonne avène azzera
 'mergelogpagetext' => "Stte stè 'na liste de le cchiù recende scuagghiaminde de le cunde de le vosce jndr'à 'n'otre.",
 
 # Diffs
-'history-title' => 'Liste de le versiune de "$1"',
-'difference-title' => 'Differenze \'mbrà revisiune de "$1"',
-'difference-title-multipage' => 'Differenze \'mbrà le pàggene "$1" e "$2"',
+'history-title' => '$1: Cunde de le revisiune',
+'difference-title' => "$1: Differenze 'mbrà revisiune",
+'difference-title-multipage' => "$1 e $2: Differenze 'mbrà le pàggene",
 'difference-multipage' => "(Differenze 'mbrà le pàggene)",
 'lineno' => 'Linea $1:',
 'compareselectedversions' => 'Combronde le versiune selezionete',
@@ -1109,6 +1109,7 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
 'prefs-beta' => 'Funziune de Beta',
 'prefs-datetime' => 'Date e ore',
 'prefs-labs' => 'Funziune de Labs',
+'prefs-user-pages' => "Pàgene de l'utende",
 'prefs-personal' => "Profile de l'utende",
 'prefs-rc' => 'Cangiaminde recende',
 'prefs-watchlist' => 'Pàggene condrollete',
@@ -1933,6 +1934,8 @@ Pò condenè une  cchiù carattere ca non ge ponne essere ausate jndr'à le tite
 'allpages-hide-redirects' => 'Scunne le redirezionaminde',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere aggiornate a $1 fà.",
+'cachedspecial-viewing-cached-ts' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere ca non g'è attuale.",
 'cachedspecial-refresh-now' => "Vide l'urteme.",
 
 # Special:Categories
@@ -2693,6 +2696,7 @@ Reggistrele sus a 'u combiuter tune e carechele aqquà.",
 'import-error-edit' => 'Pàgene "$1" non g\' \'mbortate purcé tu non ge tìne le permesse pe cangiarle.',
 'import-error-create' => 'Pàgene "$1" non g\' \'mbortate purcé tu non ge tìne le permesse pe ccrejarle.',
 'import-error-interwiki' => 'Pagene "$1" non g\'ha state \'mbortate purcé \'u nome sue jè riservate pe collegaminde esterne (interuicchi).',
+'import-error-special' => "'A pagena \"\$1\" non g'ha state 'mbortate purcé apponde a 'nu namespace speciale ca non g'è permesse a le pàggene normale.",
 'import-error-invalid' => "'A pàgene \"\$1\" non g'ha state 'mbortate purcé 'u nome jè invalide.",
 
 # Import log
@@ -2710,6 +2714,7 @@ Reggistrele sus a 'u combiuter tune e carechele aqquà.",
 'javascripttest-pagetext-noframework' => 'Sta pàgene jè riservate pe le esecuziune de le test de Javascript.',
 'javascripttest-pagetext-unknownframework' => 'Ambiende de teste scanusciute "$1".',
 'javascripttest-pagetext-frameworks' => 'Pe piacere scacchie une de le seguende ambiende de test: $1',
+'javascripttest-pagetext-skins' => "Scacchie 'n'aspette pe eseguì le test cu:",
 'javascripttest-qunit-intro' => "Vide 'a [$1 documendazione d'u test] sus a mediawiki.org.",
 'javascripttest-qunit-heading' => 'Ambiende de test MediaUicchi JavaScript QUnit',
 
@@ -3892,6 +3897,7 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 'api-error-badaccess-groups' => 'Tu non ge puè carecà file sus a sta Uicchi.',
 'api-error-badtoken' => 'Errore inderne: Gettone errate.',
 'api-error-copyuploaddisabled' => "'U carecamende da URL jè disabbilitate sus a stu server.",
+'api-error-duplicate' => "{{PLURAL:$1|Stè [$2 'n'otre file]|Stonne [$2 otre file]}} sus a 'u site cu 'u stesse condenute.",
 'api-error-duplicate-archive-popup-title' => "Dupliche {{PLURAL:$1|'u file ca ha state|le file ca onne state}} scangellate.",
 'api-error-duplicate-popup-title' => 'Dupleche {{PLURAL:$1|file|file}}',
 'api-error-empty-file' => "'U file ca tu è confermate ere vacande.",
index f572162..d37ca15 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Russian (Русский)
+/** Russian (русский)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -8,6 +8,7 @@
  * @file
  *
  * @author AVRS
+ * @author Agilight
  * @author Ahonc
  * @author Aleksandrit
  * @author Alessandro
@@ -15,6 +16,7 @@
  * @author Alexander Sigachov (alexander.sigachov@gmail.com)
  * @author Alexandr Efremov
  * @author Amikeco
+ * @author Amire80
  * @author Askarmuk
  * @author Assele
  * @author Bouron
@@ -116,10 +118,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Создать_учётную_запись', 'Создать_пользователя', 'Зарегистрироваться' ),
        'Deadendpages'              => array( 'Тупиковые_страницы' ),
        'DeletedContributions'      => array( 'Удалённый_вклад' ),
-       'Disambiguations'           => array( 'Неоднозначные_ссылки' ),
+       'Disambiguations'           => array( 'Неоднозначности' ),
        'DoubleRedirects'           => array( 'Двойные_перенаправления' ),
        'EditWatchlist'             => array( 'Править_список_наблюдения' ),
-       'Emailuser'                 => array( 'Письмо', 'Письмо_участнику', 'Отправить_письмо' ),
+       'Emailuser'                 => array( 'Письмо_участнику', 'Отправить_письмо' ),
        'Export'                    => array( 'Экспорт', 'Выгрузка' ),
        'FileDuplicateSearch'       => array( 'Поиск_дубликатов_файлов' ),
        'Filepath'                  => array( 'Путь_к_файлу' ),
@@ -129,14 +131,14 @@ $specialPageAliases = array(
        'Listadmins'                => array( 'Список_администраторов' ),
        'Listbots'                  => array( 'Список_ботов' ),
        'Listfiles'                 => array( 'Список_файлов', 'Список_изображений' ),
-       'Listgrouprights'           => array( 'СпиÑ\81ок_пÑ\80ав_гÑ\80Ñ\83пп', 'Ð\9fÑ\80ава_гÑ\80Ñ\83пп_Ñ\83Ñ\87аÑ\81Ñ\82ников' ),
+       'Listgrouprights'           => array( 'Ð\9fÑ\80ава_гÑ\80Ñ\83пп_Ñ\83Ñ\87аÑ\81Ñ\82ников', 'СпиÑ\81ок_пÑ\80ав_гÑ\80Ñ\83пп' ),
        'Listredirects'             => array( 'Список_перенаправлений' ),
        'Listusers'                 => array( 'Список_участников' ),
        'Lockdb'                    => array( 'Заблокировать_БД', 'Заблокировать_базу_данных' ),
        'Log'                       => array( 'Журналы', 'Журнал' ),
        'Lonelypages'               => array( 'Изолированные_страницы' ),
        'Longpages'                 => array( 'Длинные_страницы' ),
-       'MergeHistory'              => array( 'Ð\9eбÑ\8aединение_иÑ\81Ñ\82оÑ\80ии' ),
+       'MergeHistory'              => array( 'Ð\9eбÑ\8aединение_иÑ\81Ñ\82оÑ\80ий' ),
        'MIMEsearch'                => array( 'Поиск_по_MIME' ),
        'Mostimages'                => array( 'Самые_используемые_файлы' ),
        'Movepage'                  => array( 'Переименовать_страницу', 'Переименование', 'Переименовать' ),
@@ -152,9 +154,10 @@ $specialPageAliases = array(
        'Preferences'               => array( 'Настройки' ),
        'Protectedpages'            => array( 'Защищённые_страницы' ),
        'Protectedtitles'           => array( 'Защищённые_названия' ),
-       'Randompage'                => array( 'Случаная_страница', 'Случайная' ),
+       'Randompage'                => array( 'СлÑ\83Ñ\87айнаÑ\8f\81Ñ\82Ñ\80аниÑ\86а', 'СлÑ\83Ñ\87айнаÑ\8f' ),
        'Recentchanges'             => array( 'Свежие_правки' ),
        'Recentchangeslinked'       => array( 'Связанные_правки' ),
+       'Revisiondelete'            => array( 'Удаление_правки' ),
        'Search'                    => array( 'Поиск' ),
        'Shortpages'                => array( 'Короткие_страницы' ),
        'Specialpages'              => array( 'Спецстраницы' ),
@@ -165,13 +168,14 @@ $specialPageAliases = array(
        'Uncategorizedimages'       => array( 'Некатегоризованные_файлы' ),
        'Uncategorizedpages'        => array( 'Некатегоризованные_страницы' ),
        'Uncategorizedtemplates'    => array( 'Некатегоризованные_шаблоны' ),
+       'Undelete'                  => array( 'Восстановить', 'Восстановление' ),
        'Unusedcategories'          => array( 'Неиспользуемые_категории' ),
        'Unusedimages'              => array( 'Неиспользуемые_файлы' ),
        'Unusedtemplates'           => array( 'Неиспользуемые_шаблоны' ),
        'Upload'                    => array( 'Загрузка' ),
        'UploadStash'               => array( 'Скрытная_загрузка' ),
-       'Userlogin'                 => array( 'Вход', 'Авторизация' ),
-       'Userlogout'                => array( 'Ð\92Ñ\8bÑ\85од', 'Ð\97авеÑ\80Ñ\88ение_Ñ\81еанÑ\81а' ),
+       'Userlogin'                 => array( 'Вход' ),
+       'Userlogout'                => array( 'Ð\97авеÑ\80Ñ\88ение_Ñ\81еанÑ\81а', 'Ð\92Ñ\8bÑ\85од' ),
        'Userrights'                => array( 'Управление_правами' ),
        'Version'                   => array( 'Версия' ),
        'Wantedcategories'          => array( 'Требуемые_категории' ),
@@ -180,6 +184,7 @@ $specialPageAliases = array(
        'Wantedtemplates'           => array( 'Требуемые_шаблоны' ),
        'Watchlist'                 => array( 'Список_наблюдения' ),
        'Whatlinkshere'             => array( 'Ссылки_сюда' ),
+       'Withoutinterwiki'          => array( 'Без_интервики' ),
 );
 
 $magicWords = array(
@@ -394,7 +399,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Скрывать патрулированные правки в списке свежих правок',
 'tog-newpageshidepatrolled' => 'Скрывать отпатрулированные страницы в списке новых страниц',
 'tog-extendwatchlist' => 'Расширенный список наблюдения, включающий все изменения, а не только последние',
-'tog-usenewrc' => 'Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\83лÑ\83Ñ\87Ñ\88еннÑ\8bй Ñ\81пиÑ\81ок Ñ\81вежиÑ\85 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ (требуется JavaScript)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83ппиÑ\80оваÑ\82Ñ\8c Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81вежиÑ\85 Ð¿Ñ\80авок Ð¸ Ð² Ñ\81пиÑ\81ке Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f (требуется JavaScript)',
 'tog-numberheadings' => 'Автоматически нумеровать заголовки',
 'tog-showtoolbar' => 'Показывать верхнюю панель инструментов при редактировании (JavaScript)',
 'tog-editondblclick' => 'Править страницы по двойному щелчку (JavaScript)',
@@ -779,6 +784,8 @@ $2',
 Установивший этот режим администратор оставил следующее разъяснение: «''$3''».",
 'invalidtitle-knownnamespace' => 'Недопустимый заголовок с пространством имен «$2» и текстом «$3»',
 'invalidtitle-unknownnamespace' => 'Недопустимый заголовок с неизвестным номером пространства $1 и текстом «$2»',
+'exception-nologin' => 'Вы не представились системе',
+'exception-nologin-text' => 'Для просмотра этой станицы или выполнения запрошенного действия необходимо представиться системе.',
 
 # Virus scanner
 'virus-badscanner' => "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
@@ -1092,7 +1099,7 @@ $2
 в окне редактирования. Правка была отменена для предотвращения искажения текста статьи.
 Подобные проблемы могут возникать при использовании анонимизирующих веб-прокси, содержащих ошибки.'''",
 'edit_form_incomplete' => "'''Некоторые части формы редактирования не достигли сервера. Внимательно проверьте, что ваши правки не повреждены, и попробуйте ещё раз.'''",
-'editing' => 'Редактирование: $1',
+'editing' => 'Редактирование $1',
 'creating' => 'Создание $1',
 'editingsection' => 'Редактирование: $1 (раздел)',
 'editingcomment' => 'Редактирование $1 (новый раздел)',
@@ -1358,7 +1365,7 @@ $1",
 
 # Diffs
 'history-title' => '$1 — история изменений',
-'difference-title' => 'Различия между версиями «$1»',
+'difference-title' => '$1 — различия между версиями',
 'difference-title-multipage' => 'Разница между страницами «$1» и «$2»',
 'difference-multipage' => '(Различия между страницами)',
 'lineno' => 'Строка $1:',
@@ -1454,6 +1461,7 @@ $1",
 'prefs-beta' => 'Бета-возможности',
 'prefs-datetime' => 'Дата и время',
 'prefs-labs' => 'Экспериментальные возможности',
+'prefs-user-pages' => 'Страницы участника',
 'prefs-personal' => 'Личные данные',
 'prefs-rc' => 'Свежие правки',
 'prefs-watchlist' => 'Список наблюдения',
@@ -2251,6 +2259,7 @@ $1',
 Вы можете отфильтровать результаты по типу журнала, имени участника (учитывается регистр) или затронутой странице (также учитывается регистр).',
 'logempty' => 'Подходящие записи в журнале отсутствуют.',
 'log-title-wildcard' => 'Найти заголовки, начинающиеся с данных символов',
+'showhideselectedlogentries' => 'Показать/скрыть выбранные записи журнала',
 
 # Special:AllPages
 'allpages' => 'Все страницы',
@@ -3159,6 +3168,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Чистка спама',
 'spam_reverting' => 'Откат к последней версии, не содержащей ссылки на $1',
 'spam_blanking' => 'Все версии содержат ссылки на $1, очистка',
+'spam_deleting' => 'Все версии содержали ссылки на $1, производится удаление',
 
 # Info page
 'pageinfo-title' => 'Сведения по «$1»',
@@ -4160,4 +4170,6 @@ MediaWiki распространяется в надежде, что она бу
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не удалось получить блокировку на сервере  $1.',
 );
index 21e3b28..b30ccba 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Rusyn (Русиньскый)
+/** Rusyn (русиньскый)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Engelseziekte
  * @author Gazeb
  * @author Gleb Borisov
  * @author Kaganer
@@ -203,9 +204,9 @@ $messages = array(
 'vector-simplesearch-preference' => 'Поволити росшырены пропозіції гляданя (лем взгляд Vector )',
 'vector-view-create' => 'Створити',
 'vector-view-edit' => 'Едітовати',
-'vector-view-history' => 'Видїти історію',
+'vector-view-history' => 'Відїти історію',
 'vector-view-view' => 'Чітати',
-'vector-view-viewsource' => 'Видїти код',
+'vector-view-viewsource' => 'Відїти код',
 'actions' => 'Дїї',
 'namespaces' => 'Просторы назв',
 'variants' => 'Варіанты',
@@ -309,7 +310,7 @@ $1',
 'youhavenewmessagesmulti' => 'Маєте новы ознамы на $1',
 'editsection' => 'едіт.',
 'editold' => 'едіт.',
-'viewsourceold' => 'видїти код',
+'viewsourceold' => 'відїти код',
 'editlink' => 'едітовати',
 'viewsourcelink' => 'видїти код',
 'editsectionhint' => 'Едітовати секцію: $1',
@@ -376,9 +377,9 @@ $1',
 Адміністратор, котрый датабазу замкнув, охабив тото пояснїня: $1',
 'missing-article' => 'В датабазї ся не нашов жаданый текст сторінкы «$1» $2.
 
-Подобна сітуація звычайно взникає при спробі переходу по застаралому одказованю на історію змін сторінкы, яка была вымазана.
+Подобна сітуація звычайно выникать при спробі переходу по застаралому одказованю на історію змін сторінкы, яка была вымазана.
 
-Кідь то не є тот припад, може сьте нашли помылку в проґрамовім забезпечіню.
+Кідь то не є тот припад, може сьте нашли помылку в проґрамовім забеспечіню.
 Просиме Вас, оголоште то [[Special:ListUsers/sysop|адміністраторам]], придайте і URL.',
 'missingarticle-rev' => '(ревізія № $1)',
 'missingarticle-diff' => '(Роздїл: $1, $2)',
@@ -408,7 +409,7 @@ $1',
 'wrong_wfQuery_params' => 'Неправилны параметры функцій wfQuery()<br />
 Функція: $1<br />
 Запрос: $2',
-'viewsource' => 'Видїти код',
+'viewsource' => 'Відїти код',
 'viewsource-title' => 'Відїти жрідло сторінкы $1',
 'actionthrottled' => 'Акція была придушена',
 'actionthrottledtext' => 'Взглядом ку протиспамовым опатрїням не можете жадану акцію провести барз часто в короткім часї. Спробуйте то знову о пару мінут.',
@@ -425,6 +426,11 @@ $2',
 'customjsprotected' => 'Не маєте права едітовати тоту сторінку з JavaScript-ом, бо обсягує персоналны наставлїна іншого хоснователя.',
 'ns-specialprotected' => 'Шпеціалны сторінкы не є можне едітовати.',
 'titleprotected' => "Створїня сторінкы з таков назвов было заборонене хоснователём [[User:$1|$1]] з причінов: ''$2''.",
+'filereadonlyerror' => "Не годно змінити файл „$1“, бо архів файлів „$2“ є теперь лем на чітаня.
+
+Адміністратор сервера, котрый архів заблоковав, додав тото пояснїня: „''$3''“.",
+'invalidtitle-knownnamespace' => 'Непряавилна назва в просторї назв „$2“ і текстом „$3“',
+'invalidtitle-unknownnamespace' => 'Неправилна назва з незнамым чіслом простору назв $1 і текстом „$2“',
 
 # Virus scanner
 'virus-badscanner' => "Зла конфіґурація: незнамый антивіровый проґрам: ''$1''",
@@ -513,6 +519,7 @@ $2',
 'invalidemailaddress' => 'Уведена адреса ел. пошты не може быти прията, бо она не має правилный формат.
 Просиме Вас, уведьте коректну адесу або зохабте поле порожнє.',
 'cannotchangeemail' => 'В тій вікі не годен мінити імейловы адресы.',
+'emaildisabled' => 'Сесь сервер не годен одосылати імейлы.',
 'accountcreated' => 'Конто вытворене',
 'accountcreatedtext' => 'Конто хоснователя $1 было вытворене.',
 'createaccount-title' => 'Вытвориня конта про  {{SITENAME}}',
@@ -595,7 +602,7 @@ $2
 'changeemail-cancel' => 'Сторно',
 
 # Edit page toolbar
-'bold_sample' => 'Тучный текст',
+'bold_sample' => 'Товстый текст',
 'bold_tip' => 'Шырокый текст',
 'italic_sample' => 'Курсива',
 'italic_tip' => 'Курсива',
@@ -622,7 +629,7 @@ $2
 'showpreview' => 'Указати нагляд',
 'showlivepreview' => 'Швыдкый нагляд',
 'showdiff' => 'Указати зміны',
-'anoneditwarning' => "'''Увага''': Не сте приголошены. Ваша IP-адреса буде записана до історії змін той сторінкы.",
+'anoneditwarning' => "'''Увага''': Ð\9dе Ñ\81Ñ\8cÑ\82е Ð¿Ñ\80иголоÑ\88енÑ\8b. Ð\92аÑ\88а IP-адÑ\80еÑ\81а Ð±Ñ\83де Ð·Ð°Ð¿Ð¸Ñ\81ана Ð´Ð¾ Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 Ð·Ð¼Ñ\96н Ñ\82ой Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\8b.",
 'anonpreviewwarning' => "''Не сьте приголошеный(а). Уложінём буде ваша IP адреса записана в історії  той сторінкы.''",
 'missingsummary' => "'''Припомянутя:''' Не задали сьте згорнутя едітації. Кідь іщі раз кликтете на Уложыти зміны, буде вапа едітація записана без згорнутя.",
 'missingcommenttext' => 'Задайте коментарь',
@@ -705,6 +712,7 @@ $2
 'note' => "'''Позначка:'''&nbsp;",
 'previewnote' => "'''Памятайте, же то лем нагляд.'''
 Зміны іщі не суть уложены!",
+'continue-editing' => 'Продовжыти едітованя',
 'previewconflict' => 'Тот нагляд зображує текст так, як буде вызерати по уложіню сторінкы.',
 'session_fail_preview' => "'''Вашу пожадавку ся не подарило зпрацовати, бо были страчены дата сеансу.
 Просиме, спробуйте то зясь.
@@ -719,6 +727,7 @@ $2
 Тото ся може даколи стати, кідь хоснуєте хыбный вебовый анонімізер.'''",
 'edit_form_incomplete' => "'''Часть едітачного формуларя іщі не пришла не сервер; перевірьте комплетность вашых змін і спробуйте іщі раз.'''",
 'editing' => 'Едітованя $1',
+'creating' => 'Створїня $1',
 'editingsection' => 'Едітованя $1 (роздїл)',
 'editingcomment' => 'Едітованя $1 (нова секція)',
 'editconflict' => 'Конфлікт едітованя: $1',
@@ -777,21 +786,28 @@ $2
 'edit-conflict' => 'Конфлікт едітованя.',
 'edit-no-change' => 'Ваша едітація была іґнорована, бо не дішло ку жадній змінї тексту.',
 'edit-already-exists' => 'Не подарило ся створити нову сторінку, бо она уж екзістує.',
+'defaultmessagetext' => 'Преднаставленый текст повідомлїня',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Увага: Тота сторінка обсягує дуже много кликаня выконово нарочных функцій парсера.
 
 Поволеный ліміт є $2, теперь шак  {{PLURAL:$1|ту єдно кликаня є|ту суть  $2 кликаня|ту є $2 кликань}}.',
 'expensive-parserfunction-category' => 'Сторінкы з дуже великым чіслом кликаня функції парсера',
-'post-expand-template-inclusion-warning' => 'Увага: розмір шаблон про включіня є барз великый.
+'post-expand-template-inclusion-warning' => 'Ð\9fозÑ\96Ñ\80Ñ\8c: розмір шаблон про включіня є барз великый.
 Дакотры шаблоны не будуть включены.',
 'post-expand-template-inclusion-category' => 'Сторінкы з перевышуючов великостёв включеных шаблон',
-'post-expand-template-argument-warning' => 'Увага: Тота сторінка обсягує принайменшім єден арґумент шаблоны, котрый є по розбалїню дуже великый.
+'post-expand-template-argument-warning' => 'Увага: Тота сторінка обсягує принайменшім єден арґумент шаблоны, котрый є по роспакованю дуже великый.
 Тоты арґументы были іґнорованы.',
 'post-expand-template-argument-category' => 'Сторінкы обсягуючі іґнорованы арґументы шаблон',
 'parser-template-loop-warning' => 'Найдженый цікл шаблон: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Перевышеный ліміт глубкы рекурзівного вкладаня шаблон ($1)',
 'language-converter-depth-warning' => 'Перевышеный ліміт глубкы у языковій конверзії ($1)',
+'node-count-exceeded-category' => 'Сторінкы перевышуючі чісло вузлів',
+'node-count-exceeded-warning' => 'Сторінка перевышыла чісло вузлів',
+'expansion-depth-exceeded-category' => 'Сторінкы превышують глубку експанзії',
+'expansion-depth-exceeded-warning' => 'Сторінка перевышыла глубку експанзії',
+'parser-unstrip-loop-warning' => 'Выявлене заціклїня unstrip',
+'parser-unstrip-recursion-limit' => 'Перевышеный ліміт рекурзії unstrip ($1)',
 
 # "Undo" feature
 'undo-success' => 'Едітованя може быти зручене.
@@ -936,7 +952,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Запис затаїня',
-'suppressionlogtext' => 'Тото є  список змазаня і блокованя котрый має обсяг схованый перед адміністраторами. Видьте тыж [[Special:BlockList|список вшыткых блоковань]].',
+'suppressionlogtext' => 'Тото є список мазаня і блокованя загорнюючі спрятаня обсягу і перед адміністраторами.
+Смотьте тыж [[Special:BlockList|Список вшыткых актуалных блоковань]].',
 
 # History merging
 'mergehistory' => 'Злучованя історії сторінок',
@@ -968,7 +985,9 @@ $1",
 'mergelogpagetext' => 'Ниже є список найновшых злучінь історії єдной сторінкы з другов.',
 
 # Diffs
-'history-title' => 'Історія змін сторінкы «$1»',
+'history-title' => '$1: Історія змін',
+'difference-title' => '$1: Роздїлы міджі ревізіями',
+'difference-title-multipage' => '$1 і $2: Роздїлы міджі сторінками',
 'difference-multipage' => '(Роздїлы міджі сторінками)',
 'lineno' => 'Рядок $1:',
 'compareselectedversions' => 'Порівнати выбраны верзії',
@@ -1014,7 +1033,7 @@ $1",
 'search-result-score' => 'Одповідность: $1 %',
 'search-redirect' => '(напрямити $1)',
 'search-section' => '(секція $1)',
-'search-suggest' => 'Може сте мали на мыслї: $1',
+'search-suggest' => 'Ð\9cоже Ñ\81Ñ\8cÑ\82е Ð¼Ð°Ð»Ð¸ Ð½Ð° Ð¼Ñ\8bÑ\81лÑ\97: $1',
 'search-interwiki-caption' => 'Сестерьскы проєкты',
 'search-interwiki-default' => '$1 резултаты:',
 'search-interwiki-more' => '(веце)',
@@ -1030,7 +1049,7 @@ $1",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}}  про '''$4'''",
 'nonefound' => "'''Позначка:''' Штандартно ся глядать лем в дакотрых просторах назв.
 Хоснуйте префікс ''all:'', жебы глядати у вшыткых просторах назв (рахувчі тыж сторінкы діскузії, шаблоны ітд.), або зазначте потрібный простор назв.",
-'search-nonefound' => 'На ваш запрос не были найджены жадны резултаты.',
+'search-nonefound' => 'На вашу пожадавку не были найджены жадны резултаты.',
 'powersearch' => 'Росшырене гляданя',
 'powersearch-legend' => 'Росшырене гляданя',
 'powersearch-ns' => 'Глядати у просторах назв:',
@@ -1064,6 +1083,7 @@ $1",
 'prefs-beta' => 'Бета-функції',
 'prefs-datetime' => 'Датум і час',
 'prefs-labs' => 'Експеріменталны функції',
+'prefs-user-pages' => 'Сторінкы хоснователя',
 'prefs-personal' => 'Інформації о хоснователёві',
 'prefs-rc' => 'Послїднї зміны',
 'prefs-watchlist' => 'Слїдованы сторінкы',
@@ -1288,7 +1308,7 @@ $1",
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'прочітати тоту сторінку',
 'action-edit' => 'едітованя той сторінкы',
-'action-createpage' => 'Ñ\81Ñ\82воÑ\80Ñ\96ня сторінок',
+'action-createpage' => 'Ñ\81Ñ\82воÑ\80Ñ\97ня сторінок',
 'action-createtalk' => 'Вытворїня сторінок діскузії',
 'action-createaccount' => 'Вытворїня того конта хоснователя',
 'action-minoredit' => 'означіти тото едітованя як мале',
@@ -1303,7 +1323,7 @@ $1",
 'action-writeapi' => 'хосновати API про писаня',
 'action-delete' => 'Вымазати тоту сторінку',
 'action-deleterevision' => 'вымазати тоту ревізію сторінкы',
-'action-deletedhistory' => 'зобразити  історію змазаных ревізій той сторінкы',
+'action-deletedhistory' => 'зобразити історію змазаных ревізій той сторінкы',
 'action-browsearchive' => 'глядати змазаны сторінкы',
 'action-undelete' => 'обновити тоту сторінку',
 'action-suppressrevision' => 'сконтролёвати і обновити тоту сховану ревізію',
@@ -1356,13 +1376,14 @@ $1",
 'newsectionsummary' => '/* $1 */ нова секція',
 'rc-enhanced-expand' => 'Вказати детайлы (потрібный JavaScript)',
 'rc-enhanced-hide' => 'Сховати детайлы',
+'rc-old-title' => 'спочатку створена як $1',
 
 # Recent changes linked
 'recentchangeslinked' => 'Повязаны зміны',
 'recentchangeslinked-feed' => 'Повязаны зміны',
 'recentchangeslinked-toolbox' => 'Повязаны зміны',
 'recentchangeslinked-title' => 'Зміны звязаны з «$1»',
-'recentchangeslinked-noresult' => 'Ð\92 Ð·Ð°Ð·Ð°Ð·Ð½Ð°Ñ\87енÑ\96м Ñ\87аÑ\81Ñ\97 Ð½Ðµ Ð±Ñ\8bли Ð¶Ð°Ð´Ð½Ñ\8b Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ð¾Ð´ÐºÐ°Ð·Ð¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85.',
+'recentchangeslinked-noresult' => 'В зазначенім часї не были жадны зміны на одказованых сторінках.',
 'recentchangeslinked-summary' => "Тото є список недавных змін на сторінках на котры одказує задана сторінка (або котры належать до той катеґорії).
 Сторінкы з [[Special:Watchlist|вашого списку слїдованых]] суть вызначены '''тучно'''.",
 'recentchangeslinked-page' => 'Назва сторінкы:',
@@ -1463,9 +1484,9 @@ $1",
 'uploadvirus' => 'Файл обсягує вірус! Детайлы: $1',
 'uploadjava' => 'Тот файл є ZIP архів, котрый обсягує .class-файл Java.
 Начітаня Java-файлів не є доволене, бо они можуть запричінити обход забезпечіня сістемы.',
-'upload-source' => 'Ð\97дÑ\80ойовый файл',
-'sourcefilename' => 'Ð\9dазва Ð·Ð´Ñ\80ойового файлу:',
-'sourceurl' => 'Ð\97дÑ\80ойова URL-адреса:',
+'upload-source' => 'Ð\96Ñ\80Ñ\96дловый файл',
+'sourcefilename' => 'Ð\9dазва Ð¶Ñ\80Ñ\96длового файлу:',
+'sourceurl' => 'Ð\96Ñ\80Ñ\96длова URL-адреса:',
 'destfilename' => 'Назва цілёвого файлу:',
 'upload-maxfilesize' => 'Максімалный розмір файлу: $1',
 'upload-description' => 'Попис файлу',
@@ -1492,6 +1513,31 @@ $1',
 'upload-too-many-redirects' => 'URL обсягує барз велё напрямлінь',
 'upload-unknown-size' => 'Незнамый розмір',
 'upload-http-error' => 'Дішло ку хыбі HTTP: $1',
+'upload-copy-upload-invalid-domain' => 'Начітаня копірованём неможливе з той домены.',
+
+# File backend
+'backend-fail-stream' => 'Не вдало ся транслёвати файл $1.',
+'backend-fail-backup' => 'Не вдало ся створити резервну копію файлу $1.',
+'backend-fail-notexists' => 'Файл $1 не існує.',
+'backend-fail-hashes' => 'Не вдало ся обтримати гешы файлів про порівнаня.',
+'backend-fail-notsame' => 'Неідентичный файл $1 вже існує.',
+'backend-fail-invalidpath' => '$1 є неправилна степка к місцю уложіня.',
+'backend-fail-delete' => 'Не вдало ся вылучіти файл $1.',
+'backend-fail-alreadyexists' => 'Файл $1 вже існує.',
+'backend-fail-store' => 'Не вдало ся уложыти файл $1 в $2.',
+'backend-fail-copy' => 'Не вдало ся скопіровати файл $1 до $2.',
+'backend-fail-move' => 'Не вдало ся перемістити файл $1 до $2.',
+'backend-fail-opentemp' => 'Не вдало ся отворити дочасный файл.',
+'backend-fail-writetemp' => 'Не вдало ся записати до дочасного файлу.',
+'backend-fail-closetemp' => 'Не вдало ся заперти дочасный файл.',
+'backend-fail-read' => 'Не вдало ся прочітати файл $1.',
+'backend-fail-create' => 'Не вдало ся записати файл $1.',
+'backend-fail-maxsize' => 'Не вдало ся записати до файлу $1, бо він векшый як {{PLURAL:$2|$2 байт|$2 байты|$2 байтів}}.',
+'backend-fail-readonly' => 'Кінцёва уложна сістема „$1“ моментално лем на чітаня. Прічіна: „$2“',
+'backend-fail-synced' => 'Файл "$1" в кінцёвій уложній сістемі в неконзістентнім стані',
+'backend-fail-connect' => 'Не вдало ся припоїти до кінцёвой уложной сістемы „$1“.',
+'backend-fail-internal' => 'В кінцёвій уложній сістемі „$1“ дішло к незнаній хыбі.',
+'backend-fail-usable' => 'Не вдало ся записати до файлу $1  про недостаточны права або хыбуючі адресарї/контайнеры.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'При одкрытю ZIP-архіву про ёго перевірку выникла хыба.',
@@ -2110,8 +2156,8 @@ $UNWATCHURL
 'undeleterevision-missing' => 'Неправилна або хыбляча ревізія. Може маєте планый одказ, або ревізія была обновлена ці одстранена з архіву.',
 'undelete-nodiff' => 'Не найджена жадна попередня верзія.',
 'undeletebtn' => 'Обновити',
-'undeletelink' => 'видїти/обновити',
-'undeleteviewlink' => 'видїти',
+'undeletelink' => 'відїти/обновити',
+'undeleteviewlink' => 'відїти',
 'undeletereset' => 'Ресетовати',
 'undeleteinvert' => 'Інвертовати селекцію',
 'undeletecomment' => 'Причіна:',
@@ -2147,9 +2193,9 @@ $1',
 'blanknamespace' => '(Основный)',
 
 # Contributions
-'contributions' => 'Приспевок хоснователя',
+'contributions' => 'Приспівок хоснователя',
 'contributions-title' => 'Приспевок хоснователя $1',
-'mycontris' => 'Мої приспевкы',
+'mycontris' => 'Мої приспівкы',
 'contribsub2' => 'Приспевок $1 ($2)',
 'nocontribs' => 'Ненайджены жадны зміны подля тых крітерій.',
 'uctop' => ' (послїдня)',
@@ -2231,8 +2277,8 @@ $1',
 'ipb-confirm' => 'Потвердити блокованя',
 'badipaddress' => 'Неправилна IP адреса',
 'blockipsuccesssub' => 'Блокованя проведено',
-'blockipsuccesstext' => 'Хоснователь „[[Special:Contributions/$1|$1]]“ є блокованый.<br />
\9cожеÑ\82е Ñ\81обÑ\96 Ð¿Ð¾Ñ\81моÑ\82Ñ\80иÑ\82и [[Special:BlockList|Ñ\81пиÑ\81ок Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\85оÑ\81новаÑ\82елÑ\97в]].',
+'blockipsuccesstext' => '„[[Special:Contributions/$1|$1]]“ je {{GENDER:$1|заблокованый|заблокована}}.<br />
\9cожеÑ\82е Ñ\81обÑ\96 Ð¿Ð¾Ñ\81моÑ\82Ñ\80иÑ\82и [[Special:BlockList|Ñ\81пиÑ\81ок Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\80едакÑ\82оÑ\80Ñ\96в]].',
 'ipb-blockingself' => 'Зберате ся заблоковати {{gender:|сам|сама|самы}} себе! Сьте собі {{gender:|певный|певна|певны}}, же тото хочете зробити?',
 'ipb-confirmhideuser' => 'Рыхтуєте ся заблоковати хоснователя зо запнутов вольбов "сховати імя хоснователя". То запрічінить же імя хоснователя счезне зо вшыткых списків і протоколёвачіх записів.  Сьте собі {{gender:|певный|певна|певны}}, же хочете тото зробити?',
 'ipb-edit-dropdown' => 'Едітовати причіны блоковань',
@@ -2274,7 +2320,7 @@ $1',
 'blocklink' => 'заблоковати',
 'unblocklink' => 'одблоковати',
 'change-blocklink' => 'змінити блок',
-'contribslink' => 'приспевкы',
+'contribslink' => 'приспівкы',
 'emaillink' => 'послати імейл',
 'autoblocker' => 'Сьте были автоматічно блокованы, протоже здїляте IP-адресу з хоснователём „[[User:$1|$1]]“. Причіна блокованя того хоснователя: „$2“',
 'blocklogpage' => 'Запис блоковань',
@@ -2283,7 +2329,9 @@ $1',
 'blocklog-showsuppresslog' => 'Тот хоснователь быв блокованый і схованый. Ту є про перегляд вказаный выпис з книгы блокованя:',
 'blocklogentry' => 'заблокoвав [[$1]] на термін $2 $3',
 'reblock-logentry' => 'змінив наставлїня блоку „[[$1]]“ з часом ексіпрації $2 $3',
-'blocklogtext' => 'Тото є книга блокованя і одблокованя хоснователїв. Автоматічно блокованы IP-адресы не суть выписаны. Попозерайте ся на  [[Special:BlockList|список блокованя IP]] з выписом актуалный заказів і блоковань.',
+'blocklogtext' => 'Тото є журнал дїй блокованя і одблокованя редакторів.
+Автоматічно блокованы IP адресы не выписованы.
+Смотьте тыж [[Special:BlockList|список вшыткых чінных блоковань]].',
 'unblocklogentry' => 'одблоковав $1',
 'block-log-flags-anononly' => 'лем анонімны хоснователї',
 'block-log-flags-nocreate' => 'вытваряня конт не поволене',
@@ -2437,9 +2485,11 @@ $1',
 До ниже зазначеного едітачного поля зазначте назвы сторінок, котры хочете експортовати; каждый рядок єдна назва. Тыж звольте, ці ся мають експортовати і старшы верзії сторінкы враховано інформацій в історії едітованя, або лем актуална верзія з інформаціов о послїднїй едітації.
 
 В другім припадї можете тыж хосновати прямый одказ, наприклад помочов [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ся выекспортує „[[{{MediaWiki:Mainpage}}]]“.',
+'exportall' => 'Експортовати вшыткы сторінкы',
 'exportcuronly' => 'Загорняти лем сучасну верзію, не повну історію',
 'exportnohistory' => "----
 '''Позначка:''' експорт повных історій средством того формуларя быв про проблемы з ресурсами заказаный.",
+'exportlistauthors' => 'У каждой сторінкы выписати повный список приспівателїв',
 'export-submit' => 'Експорт',
 'export-addcattext' => 'Додати сторінкы з катеґорії:',
 'export-addcat' => 'Придати',
@@ -2472,6 +2522,8 @@ $1',
 'thumbnail_error' => 'Хыба створїня нагляду: $1',
 'djvu_page_error' => 'Сторінка DjVu мімо россяг',
 'djvu_no_xml' => 'Створїня XML про файл DjVu ся не подарило.',
+'thumbnail-temp-create' => 'Дочасный файл нагляду негодно было створити',
+'thumbnail-dest-create' => 'Нагляд не годно было уложыти на призначене місце',
 'thumbnail_invalid_params' => 'Неплатный параметер нагляду',
 'thumbnail_dest_directory' => 'Не дасть ся створити цілёвый адресарь',
 'thumbnail_image-type' => 'Непідпорованый тіп образку',
@@ -2515,6 +2567,9 @@ $1',
 'import-invalid-interwiki' => 'Із зазначеной вікі ся не дасть імпортовати.',
 'import-error-edit' => 'Сторінка „$1“ ся не наімпортовала, бо не мате право єй едітовати.',
 'import-error-create' => 'Сторінка „$1“ ся не наімпортовала, бо не мате право єй створити.',
+'import-error-interwiki' => 'Сторінка „$1“ ся не імпортує, бо єй назва є зарезервована про вонкашнї лінкы (interwiki).',
+'import-error-special' => 'Сторінка „$1“ ся не імпортує, бо належыть до шпеціалного простору назв, до котрого сторінкы не належать.',
+'import-error-invalid' => 'Сторінка „$1“ ся не імпортує, бо єй назва неприпустна.',
 
 # Import log
 'importlogpage' => 'Книга імпортів',
@@ -2524,6 +2579,14 @@ $1',
 'import-logentry-interwiki' => 'міджівікі імпорт $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ревізія|ревізії|ревізій}} з $2',
 
+# JavaScriptTest
+'javascripttest' => 'Тестованя JavaScript',
+'javascripttest-disabled' => 'Тота функція не дозволена на тій вікі.',
+'javascripttest-title' => 'Біжать тест в $1',
+'javascripttest-pagetext-noframework' => 'Тота сторінка є резервована про тестованя JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Незнаный фреймворк тестованя „$1“.',
+'javascripttest-pagetext-frameworks' => 'Просиме, звольте єден з наступных фреймворків тестованя : $1',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ваша сторінка хоснователя',
 'tooltip-pt-anonuserpage' => 'Сторінка хоснователя про IP-адресу, з котрой едітуєте',
@@ -2531,7 +2594,7 @@ $1',
 'tooltip-pt-anontalk' => 'Діскузія о едітованях выконаных з той IP-адресы',
 'tooltip-pt-preferences' => 'Вашы наставлїня',
 'tooltip-pt-watchlist' => 'Список сторінок, на котрых слїдуєте зміны',
-'tooltip-pt-mycontris' => 'Список вашых приспевків',
+'tooltip-pt-mycontris' => 'Список вашых приспівків',
 'tooltip-pt-login' => 'Рекомендуєме ся приголосити, але не є то повинне.',
 'tooltip-pt-anonlogin' => 'Рекомендуєме ся приголосити, але не є то повинне.',
 'tooltip-pt-logout' => 'Одголошіня',
@@ -2539,14 +2602,14 @@ $1',
 'tooltip-ca-edit' => 'Тоту сторінку можно едітовати. Просиме, хоснуйте перегляд перед уложінём.',
 'tooltip-ca-addsection' => 'Створити нову секцію',
 'tooltip-ca-viewsource' => 'Тота сторінка є замкнута.
-Можете видїти єй код.',
+Можете відїти єй код.',
 'tooltip-ca-history' => 'Минулы верзії той сторінкы',
 'tooltip-ca-protect' => 'Хрань тоту сторінку',
 'tooltip-ca-unprotect' => 'Змінити замок той сторінкы',
 'tooltip-ca-delete' => 'Вымазати тоту сторінку',
 'tooltip-ca-undelete' => 'Обновити едітованя той сторінкы выконаны перед єй змазанём',
 'tooltip-ca-move' => 'Переменовати тоту сторінку',
-'tooltip-ca-watch' => 'Придати тоту сторінку до вашого списку слїдованых сторінок',
+'tooltip-ca-watch' => 'Придати гевсю сторінку до вашого списку слїдованых сторінок',
 'tooltip-ca-unwatch' => 'Одобрати тоту сторінку з вашого списку слїдованых сторінок',
 'tooltip-search' => 'Глядати {{SITENAME}}',
 'tooltip-search-go' => 'Перейти до сторінкы, што має точно таку назву (кідь екзістує)',
@@ -2559,10 +2622,10 @@ $1',
 'tooltip-n-recentchanges' => 'Список послїднїх змін',
 'tooltip-n-randompage' => 'Зображіня нагодной сторінкы',
 'tooltip-n-help' => 'Посмотрити поміч',
-'tooltip-t-whatlinkshere' => 'Список вшыткых сторінок, што одказують на тоту сторінку',
-'tooltip-t-recentchangeslinked' => 'Ð\9fоÑ\81лÑ\97днÑ\97 Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85, ÐºÐ¾Ñ\82Ñ\80Ñ\8b Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¾Ð´ÐºÐ°Ð· Ð½Ð° Ñ\82Ñ\96й сторінцї',
+'tooltip-t-whatlinkshere' => 'Список вшыткых сторінок, што одказують ся на тоту сторінку',
+'tooltip-t-recentchangeslinked' => 'Ð\9fоÑ\81лÑ\97днÑ\97 Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85, ÐºÐ¾Ñ\82Ñ\80Ñ\8b Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¾Ð´ÐºÐ°Ð· Ð½Ð° Ñ\82Ñ\97й сторінцї',
 'tooltip-feed-rss' => 'RSS канал про тоту сторінку',
-'tooltip-feed-atom' => 'Atom канал про тоту сторінку',
+'tooltip-feed-atom' => 'Atom канал про гевсю сторінку',
 'tooltip-t-contributions' => 'Перегляд приспевків того хоснователя',
 'tooltip-t-emailuser' => 'Послати е-маіл тому хоснователёві',
 'tooltip-t-upload' => 'Награти файлы',
@@ -2570,20 +2633,20 @@ $1',
 'tooltip-t-print' => 'Верзія той сторінкы про друк',
 'tooltip-t-permalink' => 'Перманентный одказ на тоту верзію сторінкы',
 'tooltip-ca-nstab-main' => 'Обсяг сторінкы',
-'tooltip-ca-nstab-user' => 'Видїти сторінку хоснователя',
+'tooltip-ca-nstab-user' => 'Відїти сторінку хоснователя',
 'tooltip-ca-nstab-media' => 'Вказати сторінку файлу',
 'tooltip-ca-nstab-special' => 'Шпеціална сторінка, она є недоступна про едітованя',
 'tooltip-ca-nstab-project' => 'Сторінка проєкту',
 'tooltip-ca-nstab-image' => 'Видїти код сторінкы',
 'tooltip-ca-nstab-mediawiki' => 'Вказати повідомлїня сістемы',
-'tooltip-ca-nstab-template' => 'Видїти шаблону',
+'tooltip-ca-nstab-template' => 'Відїти шаблону',
 'tooltip-ca-nstab-help' => 'Видїти сторінку помочі',
 'tooltip-ca-nstab-category' => 'Сторінка катеґорії',
 'tooltip-minoredit' => 'Позначіти тото як незначне едітованя',
 'tooltip-save' => 'Уложыти вашы зміны',
 'tooltip-preview' => 'Нагляд сторінкы, просиме Вас, хоснуйте перед уложінём!',
 'tooltip-diff' => 'Вказати зміны, што были зроблены в тексті.',
-'tooltip-compareselectedversions' => 'Видїти роздїл міджі двома указаныма верзіями той сторінкы.',
+'tooltip-compareselectedversions' => 'Відїти роздїл міджі двома указаныма верзіями той сторінкы.',
 'tooltip-watch' => 'Придати тоту сторінку до списку слїдованых',
 'tooltip-recreate' => 'Обновити сторінку і кідь была змазана',
 'tooltip-upload' => 'Почати одосыланя',
@@ -3120,7 +3183,7 @@ $1',
 
 # External editor support
 'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
-'edit-externally-help' => '(Вецей інформації найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
+'edit-externally-help' => '(Веце інформацій найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вшыткы',
index 14d9900..cfc70f2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sakha (Саха тыла)
+/** Sakha (саха тыла)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -9,6 +9,7 @@
  *
  * @author Andrijko Z.
  * @author Bert Jickty
+ * @author Gartem
  * @author HalanTul
  * @author Kaganer
  * @author Meno25
@@ -422,6 +423,10 @@ $2',
 'ns-specialprotected' => '{{ns:special}} ааттаах сирэйдэр уларытыллыбаттар.',
 'titleprotected' => "Бу бас тыл оҥоһулларын [[User:$1|$1]] боппут.
 Төрүөтэ - ''$2''",
+'filereadonlyerror' => "«$1» билэни уларытар сатаммата, тоҕо диэтэххэ «$2» «ааҕарга эрэ» диэн эрэсиимҥэ турар эбит.
+
+Бу эрэсиими туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: «''$3''».",
+'invalidtitle-knownnamespace' => '«$2» аат далыгар маннык тиэкистээх «$3» сатаммат аат',
 
 # Virus scanner
 'virus-badscanner' => "Сатаммата. Вирус сканера биллибэтэ: ''$1''",
@@ -718,6 +723,7 @@ IP-аадырыһа эрэ көстөр.
 'note' => "'''Хос быһаарыы:'''",
 'previewnote' => "'''Бу барыллаан көрүү эрэ.'''
 Атын уларытыы бигэргэтиллэ илик!",
+'continue-editing' => 'Уларытыыны ситэр',
 'previewconflict' => 'Этот предварительный просмотр отражает текст в верхнем окне редактирования так, как он будет выглядеть, если вы решите записать его.',
 'session_fail_preview' => "'''Сиэрбэр сессия идентификаторын сүтэрэн кэбиһэн эн уларытыыгын кыайан киллэрбэтэ.
 Өссө холонон көр.
@@ -732,6 +738,7 @@ IP-аадырыһа эрэ көстөр.
 Итинник сыыһалар үксүн прокси-сиэрбэрдэри туһаннахха тахсааччылар.'''",
 'edit_form_incomplete' => "'''Уларытыы сорҕото сиэрбэргэ тиийбэтэ. Үчүгэйдик сыныйан көр, Эн уларытыыларыҥ туох да омсото суохтар дуо. Онтон өссө боруобалаа.'''",
 'editing' => 'Уларытыы $1',
+'creating' => 'Айарга $1',
 'editingsection' => 'Уларытыы $1 (раздел)',
 'editingcomment' => 'Уларытыы $1 (саҥа салаа)',
 'editconflict' => 'Уларытыы мөккүөрэ: $1',
@@ -954,8 +961,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Кистээһин сурунаала',
-'suppressionlogtext' => 'Аллара даһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
-Билигин баар хааччахтары көрөргө [[Special:BlockList|IP хааччахтааһынын тиһигэр]] киир.',
+'suppressionlogtext' => 'Аллара дьаһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
+Билигин баар хааччахтары көрөргө [[Special:BlockList|хааччахтааһын тиһигэр]] киир.',
 
 # History merging
 'mergehistory' => 'Силбэһии сирэйин хронологията',
@@ -987,7 +994,7 @@ $1",
 'mergelogpagetext' => 'Манна сирэйдэр устуоруйаларын бүтэһик силлэһиилэрин тиһигэ бэриллэр.',
 
 # Diffs
-'history-title' => 'Көннөрүү историята "$1"',
+'history-title' => 'Көннөрүү сурунаала "$1"',
 'difference-multipage' => '(Сирэйдэр ыккардыларынааҕы уратылар)',
 'lineno' => '$1 строка:',
 'compareselectedversions' => 'Талыллыбыт торумнары тэҥнээ',
@@ -1238,7 +1245,7 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 # Rights
 'right-read' => 'Сирэйдэри көрүү',
 'right-edit' => 'Сирэйдэри уларытыы',
-'right-createpage' => 'Сирэйдэри оҥоруу (ырытыы сирэйдэрин кытта холбуу)',
+'right-createpage' => 'Сирэйдэри оҥоруу (ырытыы сирэйдэриттэн ураты)',
 'right-createtalk' => 'Ырытыы сирэйдэрин оҥоруу',
 'right-createaccount' => 'Саҥа кыттааччыны бэлиэтээһин',
 'right-minoredit' => 'Уларытыыны кыра суолталаах курдук бэлиэтээ',
@@ -1547,7 +1554,7 @@ $1',
 'backend-fail-writetemp' => 'Быстах кэмнээх билэҕэ суруйар табыллыбата.',
 'backend-fail-closetemp' => 'Быстах кэмнээх билэни сабар табыллыбата.',
 'backend-fail-read' => '$1 билэни ааҕар табыллыбата.',
-'backend-fail-create' => '$1 билэни оҥорор табыллыбата.',
+'backend-fail-create' => '$1 билэни суруттарар табыллыбата.',
 'backend-fail-readonly' => '«$1» сиэрбэр «ааҕыы эрэ» эрэсиимҥэ турар. Төрүөтэ: «$2»',
 'backend-fail-synced' => '«$1» билэ сөпсөһүллүбэтэх туруктаах эбит',
 'backend-fail-connect' => 'Маны кытта «$1» холбонор табыллыбата.',
@@ -1879,6 +1886,9 @@ $1',
 'allpagesbadtitle' => 'Сирэй маннык ааттанара сатаммат: аакка туттуллуо суохтаах бэлиэлэрдээх эбэтэр тыллар ыккардыларыгар туһаныллар ыйынньыктаах.',
 'allpages-bad-ns' => '{{SITENAME}} не содержит пространства имён «$1».',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Бүтэһик барылы көр.',
+
 # Special:Categories
 'categories' => 'Категориялар',
 'categoriespagetext' => 'Бу {{PLURAL:$1|категория иһигэр|категориялар истэригэр}} сирэйдэр эбэтэр медиа-билэлэр бааллар.
@@ -1951,7 +1961,7 @@ $1',
 "Кимтэн" графааҕа эн [[Special:Preferences|туруорууларгар]] баар аадырыһыҥ киириэҕэ,
 онон туппут киһи хардарар кыахтаныа.',
 'usermailererror' => 'Сурук кыайан барбата:',
-'defemailsubject' => '{{SITENAME}} —  бу киһиттэн $1 сурук кэлбит',
+'defemailsubject' => '{{SITENAME}} — $1 диэн киһиттэн сурук кэлбит',
 'usermaildisabled' => 'Кыттааччы эл почтата арахса сылдьар',
 'usermaildisabledtext' => 'Эн атын кыттааччыларга эл. почтанан сурук ыытар кыаҕыҥ суох эбит',
 'noemailtitle' => 'E-mail суох',
index 64bb94d..6289a79 100644 (file)
@@ -12,6 +12,7 @@
  * @author Ghonokuashabaskey
  * @author Joseph Mardy
  * @author Nipon087
+ * @author Reedy
  * @author Salvator
  * @author Samar88
  * @author Srabony90
@@ -273,7 +274,8 @@ $1',
 'badaccess-groups' => 'Am do oka kạmim menjoṅkan ona do khạli {{PLURAL:$2 rạsiạkore noa rạsiạreaḱ mit́ṭenre}} mitṭen beoharić sompadon daṛeyaḱa: $1.',
 
 'versionrequired' => 'Meḍiawiki reaḱ $1 nãwã aroe jạruṛa',
-'versionrequiredtext' => 'Noa sakam do beohar lạgit́te meḍiawikire $1 nãwã araoe jạruṛa. [[Special:Version version page]] ńelmẽ.',
+'versionrequiredtext' => 'Noa sakam beohar lạgit́te meḍiaWikire $1 nambar nãwã araoe jạruṛa.
+[[Special:Version nãwã aroe sakam]] ńelmẽ.',
 
 'ok' => 'Ṭhik gea',
 'retrievedfrom' => '"$1" khon ñam ạgui',
@@ -324,8 +326,8 @@ $1',
 Am do paseć mit́ṭen vul joṛaoem emakada se URL oltem vul akada.
 Noa do noṅkanaḱ menkana je {{SITENAME}} sayeṭre beoharen sofṭower re mit́ṭen vul menaḱa.',
 'nosuchspecialpage' => 'Noṅkanaḱ asokay sakam do banuḱa',
-'nospecialpagetext' => '<strong> am do mit́ṭen ạnlekate baṅkan asokae sakamem koe akada.</strong>
-[[Special:SpecialPages {{int:specialpages}}]] re ạn lekate asokaete sakamkore mit́ṭen tạlikam ńama.',
+'nospecialpagetext' => '<strong>Am do mit́ṭen beạn asokae sakamem nehor akada.</strong>
+[[Special:SpecialPages {{int:specialpages}}]]-re ạn asokae sakamkore mit́ṭen tạlikam ńama.',
 
 # General errors
 'error' => 'bhul',
@@ -333,7 +335,7 @@ Noa do noṅkanaḱ menkana je {{SITENAME}} sayeṭre beoharen sofṭower re mit
 'dberrortext' => 'Database query syntexre vul hoeakana.
 Sofṭoyerre jahan bag karonte noa do hoe daṛeyaḱa.
 Joto khon mucạt́ database query do tahẽkana noṅka:
-<blockquote><tt>$1<//tt><blockquote>
+<blockquote><tt>$1</tt><blockquote>
 "<tt>$2</tt>" bhitrire tahẽna.
 Database okaṭaḱ vule em akada:"<tt>$3: $4</tt>".',
 'dberrortextcl' => 'Ḍaṭabes query sintxexṭre vul hoeakana.
@@ -395,9 +397,9 @@ $2',
 'virus-unknownscanner' => 'Baṅ urum anṭvayras:',
 
 # Login and logout pages
-'welcomecreation' => '== Johar, $1!==
+'welcomecreation' => '== Johar $1! ==
 Amaḱ ekaunṭ do tearena.
-Menkhan do amaḱ [[Special:Preferance {{SITENAME}} pạsindko]] thir dohoe lạgit́te alom hiṛińa.',
+Amaḱ [[Special:Preferance {{SITENAME}} pạsindko]] thir dohoe lạgit́te alom hiṛińa.',
 'yourname' => 'Beoboharicaḱ ńutum',
 'yourpassword' => 'Uku namber',
 'yourpasswordagain' => 'Arhõ oku namber olme',
@@ -434,7 +436,7 @@ Ale do baḍae ocolem amaḱ kuki doe kạmikana, sakam do arhõ rakaṕ lạgit
 'noname' => 'Am do asol beoharićaḱ ńutum ṭhikte bam emakada.',
 'loginsuccesstitle' => 'Bhitri boloḱ do moctege puraoena',
 'loginsuccess' => '\'\'\'Am do nitge "$1" ńutumte {{SITENAME}} rem bolo akana.',
-'nosuchuser' => '"$1" ńutumte jahan beoharko bạnuḱkoa.
+'nosuchuser' => '"$1" ńutuman jahan beoharić bạnuea.
 Beoharićaḱ ńutum do bukṛogea.
 Amaḱ bananko ńelmẽ, se [[Special:Userlogin/signup nãwã mit́ṭen ekaunṭ tearmẽ]].',
 'nosuchusershort' => '"$1" ńutuman jahãe beoharko do banuḱkoa. Ńutum reaḱ banan biḍaomẽ.',
@@ -444,7 +446,7 @@ Amaḱ bananko ńelmẽ, se [[Special:Userlogin/signup nãwã mit́ṭen ekaun
 Daya kate arhõ mitdhom kurumuṭuyme.',
 'wrongpasswordempty' => 'Em hoyen oku nambar do cetge banuḱa.
 Daya katet́ arhõ kurumuṭuyme.',
-'passwordtooshort' => 'Oku nambar do kom katet́ hoyoḱ jạruṛa 6 olko mudre',
+'passwordtooshort' => 'Uku nambar do {{PLURAL:$1 1 horop reaḱ $1 horop reaḱ}} mudre hoyoḱ jạruṛa.',
 'password-name-match' => 'Amaḱ oku nambar do amaḱ ńutum khon eṭaḱ hoyoḱ jạruṛtama.',
 'password-login-forbidden' => 'Noa laṛcaṛicaḱ ńutum ar oku nambar do ạnlekate baṅkana.',
 'mailmypassword' => 'E-mail reaḱ nãwã uko katha',
@@ -473,6 +475,9 @@ Arhõ kurumuṭue lahare dayakate thoṛagan tạṅgiemẽ.',
 'login-abort-generic' => 'Amaḱ bhitri boloḱ do baṅ hoylena - batena.',
 'loginlanguagelabel' => 'katha: $1',
 
+# E-mail sending
+'user-mail-no-addy' => 'Jahan e-mail ṭhikana bạgi kate e-mail kul kurumuṭu hoena.',
+
 # Change password dialog
 'resetpass' => 'Oku nambar bodol',
 'resetpass_header' => 'Ekaunṭ oku namber bodol',
@@ -500,11 +505,11 @@ Nitoḱ do am bhitritem boloḱkana...',
 'passwordreset-capture-help' => 'Am do judi noa jacạy baksom lin lekhan, tobe nit lạgit́te em akan uku nambar são mit́ṭen e-mail ame uduḱama ar ona sãote beoharić ṭhen ona kuluḱa.',
 'passwordreset-email' => 'E-mail ṭhikạna:',
 'passwordreset-emailtitle' => '{{SITENAME}} sayeṭre beoharićaḱ purạo thutiko',
-'passwordreset-emailelement' => 'Beoharicaḱ ńutum:
-Nit lạgit oku nambar:',
+'passwordreset-emailelement' => 'Beoharićaḱ ńutum: $1
+Mit́ ghạṛi lạgit uku nambar: $2',
 'passwordreset-emailsent' => 'Mitṭen disạ ruaṛ e-mail do kulena.',
 'passwordreset-emailsent-capture' => 'Mit́ṭen disạ ruaṛaḱ e-mail dokulena, oka do latarre ńeloḱ kana.',
-'passwordreset-emailerror-capture' => 'Mit́ṭen disạ ruạṛ e-mail do hatoena, oka do latarre ńelok kana, menkhan beoharic ṭhen do baṇ seṭerlena.',
+'passwordreset-emailerror-capture' => 'Disạ ruạṛ oco lạgit́te mit́ṭen e-mail tear hoelena, oka do latarre udugoḱkana, menkhan $1 beoharić ṭhen  ṭhen baṅ kul hoe akana.',
 
 # Special:ChangeEmail
 'changeemail' => 'E-mail ṭhikạna do bodolme',
@@ -540,7 +545,7 @@ Nit lạgit oku nambar:',
 'subject' => 'Bisoy/Bohoḱ katha:',
 'minoredit' => 'Noa do hudiń joṛao kami',
 'watchthis' => 'Noa sakam ńelme',
-'savearticle' => 'Sakam sebhme',
+'savearticle' => 'Sakam dohoeme',
 'preview' => 'Ńel, Unuduḱ',
 'showpreview' => 'Unuduḱ',
 'showlivepreview' => 'Jewet uduk',
@@ -548,6 +553,14 @@ Nit lạgit oku nambar:',
 'anoneditwarning' => "'''Sabdhan:''' amdo begor logkatem bolowakana.
 Amaḱ IP ṭhikana do noa sakam sompadon jạṛre rekorḍoḱa.",
 'anonpreviewwarning' => '"Am do bhitri bam bolo akana. Noa sakamre amaḱ kạmiko jạre IP ṭhiikạ̣nare rukhiyạ ḱa."',
+'missingcommenttext' => 'Daya kate amaḱ menaḱ katha latare olmẽ.',
+'summary-preview' => 'Guṭ katha unuduḱ:',
+'subject-preview' => 'Babot/Guṭkatha unuduḱ:',
+'blockedtitle' => 'Beoharić doe eset ocoakana.',
+'blockednoreason' => 'jahan babot baṅ em akana',
+'whitelistedittext' => 'Sakamre sompadon lạgit́te $1 em hoyoḱa.',
+'nosuchsectiontitle' => 'Pahaṭa bȧn ńamlena',
+'loginreqtitle' => 'Boloḱ jạruṛa',
 'loginreqlink' => 'Bhitri boloḱ',
 'loginreqpagetext' => 'Eṭagaḱ sakamko ńel lạgit́te do am $1 hoyoḱ jạruṛtama.',
 'accmailtitle' => 'Uku nambar do kulena.',
@@ -570,25 +583,46 @@ or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
 'userpage-userdoesnotexist-view' => 'Beoharićaḱ "$1" ekaunṭ do baṅ resṭire akana.',
 'blocked-notice-logextract' => 'Nui beoharić do nitoḱe esetgea.
 Refarens lạgit́te nahaḱ boloḱ do latare em hoena:',
+'updated' => '(Halot ruaṛ)',
+'note' => "'''Noṭ:'''",
 'previewnote' => "'''kheyalmẽ, noa do eken ńeloḱ lạgit.'''
 Amaḱ bodolaḱ kodo nit habićte bań rukhíạakana!",
 'continue-editing' => 'Toṅge calaḱkana',
 'editing' => 'Joṛao do purạena: $1',
-'creating' => 'Benao',
+'creating' => '$1 sakam doe tear akada',
 'editingsection' => 'Joṛao $1 (hạṭiń)',
-'editingcomment' => 'Joṛao',
+'editingcomment' => 'Sompadon akadae $1 (Nãwa pahaṭa)',
+'editconflict' => 'Sompadon reaḱ bene bạiri: $1',
 'yourtext' => 'Amaḱ ol',
+'storedversion' => 'Rukhiyạ nãwã aroe',
+'nonunicodebrowser' => "'''Sontoro: Amaḱ sendra reaḱ eunikoḍ-gate sompok baṅ kana. Am do je lekate apod baṅ hoe kate noam sompadon daṛeaḱ, ona lạgit́ somadhan menaḱa: baṅaski karecṭarko do heskaḍesimal koḍ hisạbte udug hoyoḱa.'''",
 'yourdiff' => 'Farak',
 'templatesused' => 'Noa sakamre beoharen {{PLURAL:$1 ṭempeleṭ ṭempeleṭko}}:',
 'template-protected' => 'Rukhiạ',
 'template-semiprotected' => '(Kạṭic-rukhiyạ)',
 'hiddencategories' => 'Noa sakam do {{PLURAL:$1 1 ukuakan bhag $1 uku akan bhagkorenaḱ}} gaõtarenge:',
+'nocreatetitle' => 'Sakam tear do akoṭgea',
+'nocreate-loggedin' => 'Nãwã sakam tear lạgit́te am do ạidạri em baṅ hoeakana.',
+'sectioneditnotsupported-title' => 'Pahaṭa sompadona do bae hataoeda',
+'sectioneditnotsupported-text' => 'Noa sompadona sakamre pahaṭa sompadona do bae hataoeda',
+'permissionserrors' => 'Ạidạri vulko',
+'permissionserrorstext' => 'Noa kạmi amaḱ ạidạri do banuḱa, {{PLURAL:$1 gan karon reaḱ gan karon reaḱ}} lạgit:',
 'permissionserrorstext-withaction' => 'Amaḱ $2 kạmire ạydạri do bạnuḱa, Ona reaḱ {{PLURAL:$1 Karon/ Karonko}}:',
 'recreate-moveddeleted-warn' => "'''Sontorokme: am do arhõ doṛhate sakamem teyareda oka do sedayre get giḍiyen.
 Am do gunạnme cet́ noa joṛao kạmi am lạgit́te ganoḱ ase bań.
 Noa get ar tala ocok sakam nonḍe em hoyena dhok lagit́te.",
 'moveddeleted-notice' => 'Noa sakam do get giḍiyakana.
 Get ar ocoḱ giḍi sakam do latarre emakan reference lạgit em hoena.',
+'log-fulllog' => 'Joto cạbi udugmẽ',
+'edit-hook-aborted' => 'Huk hotete joto sompadonko bạgi hoeakana.
+Noa reaḱ jahan katha do bạnuḱa.',
+'edit-gone-missing' => 'Sakam do baṅ halot ruạṛlena.
+Pasecc: sakam do ocoǵ hoeakana.',
+'edit-conflict' => 'Sompadon reṭepeṭe.',
+'edit-no-change' => 'Amaḱ sompadon do baṅ hataolena, Cedaḱ je olre jahan bodol bạnuḱa.',
+'edit-already-exists' => 'Nãwã sakam baṅ tear lena.
+Sakam do laha khon menaḱgea.',
+'defaultmessagetext' => 'Sedae olko',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => '"Sontoroḱme" Noa format do lạṭu geya.
@@ -603,6 +637,8 @@ Onate noa ạrgumenṭkodo bạgi giḍi hoena.",
 
 # History pages
 'viewpagelogs' => 'Noa sakam reaḱ cạbi udukme',
+'nohistory' => 'Noa sakam re do jahan sompadon reaḱ jạṛ bạnuḱa.',
+'currentrev' => 'Mucạt nãwã aroe',
 'currentrev-asof' => 'Mucạt nãwã aroy',
 'revisionasof' => 'Nãwã aro sakam $1 leka',
 'revision-info' => 'Ńel/pańja ruạṛ $1 khon $2',
@@ -620,20 +656,34 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'history-show-deleted' => 'khạli get giḍiyaḱ koge',
 'histfirst' => "adi laha-ak'",
 'histlast' => 'Nahak',
+'historysize' => '({{PLURAL:$1 1 bayeṭ $1 bayeṭko}})',
 'historyempty' => '(banuḱa)',
 
 # Revision feed
 'history-feed-title' => 'Jạṛ nãwã aroy',
+'history-feed-description' => 'Noa wikire noa sakam reaḱ nãwã aroe jạṛ',
 'history-feed-item-nocomment' => 're',
 
 # Revision deletion
+'rev-deleted-comment' => '(Sompadon reaḱ guṭ katha do ocoǵ hoena)',
 'rev-deleted-user' => '(laṛcaṛić ńutum ocoḱena)',
+'rev-deleted-event' => '(Log kạmi do ocog hoena)',
+'rev-deleted-user-contribs' => '[Beoharićaḱ ńutum se IP ṭhikạna do ocog hoena - kạmi khon sompadon do uku hoe akana]',
 'rev-delundel' => 'ńeloḱ/danaṅ',
 'rev-showdeleted' => 'Uduḱme',
 'revisiondelete' => 'Get giḍi/nãwã aro baṅ getgiḍi',
+'revdelete-nologtype-title' => 'Jahan cạbi ṭayep baṅ em emakana',
+'revdelete-nologtype-text' => 'Am do paseć noa kạmie lạgit́te jahan cạbi bam bachao akada.',
 'revdelete-show-file-submit' => 'Hẽ',
+'revdelete-hide-text' => 'Nãwã aroe olko ukuemẽ',
+'revdelete-hide-image' => 'Rẽt reaḱ babotko ukue mẽ',
+'revdelete-hide-name' => 'Kạmi ar bejha ukue mẽ',
+'revdelete-hide-comment' => 'Sompadon gut katha ukue mẽ',
+'revdelete-hide-user' => 'Sompadonićaḱ beohar ńutum/IP ṭhikạna ukuemẽ',
 'revdelete-radio-same' => '(alom bodola)',
 'revdelete-radio-set' => 'Hẽ',
+'revdelete-radio-unset' => 'Baṅ',
+'revdelete-log' => 'Babot:',
 'revdel-restore' => 'Judạ lekate ńel',
 'revdel-restore-deleted' => 'giḍikaḱ ńel ruạṛ',
 'revdel-restore-visible' => 'Ńeloḱ leka paṛhao ruạṛ',
@@ -641,11 +691,14 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'deletedhist' => 'Get giḍi jạṛ',
 'revdelete-reasonotherlist' => 'Eṭaḱak karon',
 
+# History merging
+'mergehistory-reason' => 'Babot:',
+
 # Merge log
 'revertmerge' => 'bań mit́',
 
 # Diffs
-'history-title' => '"$1" noa jạṛ nãwã aroy',
+'history-title' => '"$1": Jạṛ nãwã aroe',
 'lineno' => 'Sạr $1:',
 'compareselectedversions' => 'Noa barea nãwã bachawanaḱ talare tolonayme',
 'editundo' => 'ruạṛ',
@@ -662,6 +715,7 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'viewprevnext' => 'Ńelme ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Noa wiki re do \"[[:\$1]] ńutum sakam menaḱa",
 'searchmenu-new' => 'wiki re [[:$1]]nãwã sakam tear',
+'searchhelp-url' => 'Help: Goṛawaḱ',
 'searchprofile-articles' => 'Menaḱaḱ sakamko',
 'searchprofile-project' => 'Go̠ṛo ar Project sakam',
 'searchprofile-images' => 'Multimedia',
@@ -677,6 +731,9 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'search-redirect' => '($1 te sujhi doṛha )',
 'search-section' => '(Pahaṭa $1)',
 'search-suggest' => 'Am do cet́ $1 em menocoyet tãhẽkana',
+'search-interwiki-caption' => 'Hopon porjekṭko',
+'search-interwiki-default' => '$1 folko:',
+'search-interwiki-more' => '(Arhõ)',
 'searchrelated' => 'songenko',
 'searchall' => 'Sanam',
 'showingresultsheader' => "'''$4'''  lạgit́ {{PLURAL:$5|Pho̠l ńamoḱ́akan - '''$1''' of '''$3'''|Pho̠l ńamoḱ́akan '''$1 - $2''' of '''$3'''}}",
@@ -705,11 +762,13 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'timezoneregion-africa' => 'Aphrika',
 'timezoneregion-america' => 'Amirika',
 'timezoneregion-asia' => 'Esiya',
+'timezoneregion-australia' => 'Ausṭralia',
 'prefs-files' => 'Rẽtko',
 'youremail' => 'E-mail:',
 'username' => 'Beoharićaḱ ńutum:',
 'uid' => 'Beoharićaḱ cinhạo nombor',
 'yourrealname' => 'Sạri ńutum',
+'yourlanguage' => 'Pạrsi:',
 'gender-male' => 'Baba hoṛ',
 'gender-female' => 'Gogo hoṛ, Kuṛi, Kuṛi gidrạ',
 'email' => 'E-mail',
@@ -730,6 +789,7 @@ Amaḱ e-mail ṭhikạna do bań cabaḱa tinre onko do ko beohara',
 'saveusergroups' => 'Beoharićaḱ gãotako rukhiyaymẽ',
 
 # Rights
+'right-read' => 'Sakamko paṛhaomẽ',
 'right-edit' => 'Sakamko toṅge',
 'right-createpage' => 'Sakamko benoamẽ (Okako do galmarao sakamko baṅkan)',
 'right-createtalk' => 'Galmarao sakamko benaomẽ',
@@ -844,7 +904,7 @@ Noa reaḱ pasnao katha [$2 rẽt pasnao sakam] latare emena',
 'shortpages' => 'Huḍiń sakamko',
 'longpages' => 'Jiliń sakamko',
 'listusers' => 'beoharićaḱ tạlika',
-'usercreated' => '{{GENDER: $3 | benawakan}} $1 tarikre $2 okte',
+'usercreated' => '{{JẠT: $3 | benawakan}} $1 tarikre $2 okte',
 'newpages' => 'Nãwa Patako',
 'newpages-username' => 'Beoharićaḱ ńutum:',
 'ancientpages' => 'Mare sakamko',
@@ -1134,7 +1194,7 @@ jeleń',
 'exif-artist' => 'Onoliạ',
 
 # External editor support
-'edit-externally' => 'Noa rẽt tońge joṛao lạ̣gitte bahre reaḱ koejoń  beoharme',
+'edit-externally' => 'Noa rẽt tońge joṛao lạgitte bahre reaḱ koejoń  beoharme',
 'edit-externally-help' => '(Nonḍe ńelme [//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
index 05dd5ea..e7eb926 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sardinian (Sardu)
+/** Sardinian (sardu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 14bcaa2..2f1f1dc 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sicilian (Sicilianu)
+/** Sicilian (sicilianu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1281,7 +1281,7 @@ L'operazioni nun pò èssiri annullata.",
 'nchanges' => '$1 {{PLURAL:$1|canciamentu|canciamenti}}',
 'recentchanges' => 'Ùrtimi canciamenti',
 'recentchanges-legend' => 'Opzioni ùrtimi canciamenti',
-'recentchangestext' => 'Chista pàggina prisenta li canci cchiù ricenti ê cuntinuti dô situ.',
+'recentchanges-summary' => 'Chista pàggina prisenta li canci cchiù ricenti ê cuntinuti dô situ.',
 'recentchanges-feed-description' => 'Stu feed riporta li canciamenti cchiù ricenti a li cuntinuti dû situ.',
 'recentchanges-label-newpage' => 'This edit havi creatu na nova pàggina',
 'recentchanges-label-minor' => 'Chista è nu canciamentu nnicu',
index 37b5f79..fb14ac7 100644 (file)
@@ -826,7 +826,7 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'nchanges' => '$1 {{PLURAL:$1|chynge|chynges}}',
 'recentchanges' => 'Recent chynges',
 'recentchanges-legend' => 'Recent changes options',
-'recentchangestext' => 'Follae the maist recent chynges tae the wiki on this page.',
+'recentchanges-summary' => 'Follae the maist recent chynges tae the wiki on this page.',
 'recentchanges-feed-description' => 'Follae the maist recent chynges tae the wiki in this feed.',
 'recentchanges-label-newpage' => 'This edit created a freish page',
 'recentchanges-label-minor' => 'This is a smaa edit',
index 8dad189..5db1519 100644 (file)
@@ -927,7 +927,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'nchanges' => '$1 {{PLURAL:$1|mudìfigga|mudìfigghi}}',
 'recentchanges' => 'Ulthimi mudìfigghi',
 'recentchanges-legend' => 'Opzioni ulthimi mudifigghi',
-'recentchangestext' => 'Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
+'recentchanges-summary' => 'Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'recentchanges-feed-description' => 'Chisthu feed cunteni li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'rcnote' => "Inogghi {{PLURAL:$1|è erencadda la mudìfigga più rizzenti arriggadda|so erencaddi li '''$1''' mudìfigghi più rizzenti arriggaddi}} a lu situ {{PLURAL:$2|i' l'ulthimi 24 ori|i' li '''$2''' dì passaddi}}; i dati so aggiornaddi a li $5 di lu $4.",
 'rcnotefrom' => "Inogghi so erencaddi li mudìfigghi arriggaddi a parthì da '''$2''' (finz'a '''$1''').",
index c32b040..be89336 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Northern Sami (Sámegiella)
+/** Northern Sami (sámegiella)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,8 @@
  * @ingroup Language
  * @file
  *
+ * @author Gálaniitoluodda
+ * @author Jeblad
  * @author Kaganer
  * @author Laila
  * @author Skuolfi
@@ -36,7 +38,53 @@ $namespaceNames = array(
 );
 
 $specialPageAliases = array(
+       'Activeusers'               => array( 'Aktiivvalaš_geavaheaddjit' ),
+       'Allmessages'               => array( 'Buot_systemasánit' ),
+       'Allpages'                  => array( 'Buot_siiddut' ),
+       'Ancientpages'              => array( 'Dološ_siiddut' ),
+       'Block'                     => array( 'Cagge_geavaheaddji' ),
+       'Booksources'               => array( 'Girjegáldut' ),
+       'Categories'                => array( 'Kategoriijat' ),
+       'Contributions'             => array( 'Geavaheaddji_rievdadusat' ),
+       'Disambiguations'           => array( 'Liŋkkat_dárkonsiidduide' ),
+       'DoubleRedirects'           => array( 'Guoktegeardásaš_ođđasitstivremat' ),
+       'Export'                    => array( 'Olggosfievrrit_siidduid' ),
+       'Listfiles'                 => array( 'Fiilalogahallan' ),
+       'Listredirects'             => array( 'Listu_ođđasitstivremiin' ),
+       'Listusers'                 => array( 'Listu_geavaheddjiin' ),
+       'Log'                       => array( 'Loggat', 'Logga' ),
+       'Lonelypages'               => array( 'Oarbbes_siiddut' ),
+       'Longpages'                 => array( 'Guhkes_siiddut' ),
+       'MIMEsearch'                => array( 'MIME-ohcan' ),
+       'Newimages'                 => array( 'Ođđa_govat' ),
+       'Newpages'                  => array( 'Ođđa_siiddut' ),
+       'Preferences'               => array( 'Válljemat' ),
+       'Protectedpages'            => array( 'Suodjaluvvon_siiddut' ),
+       'Randompage'                => array( 'Summal_siidu' ),
+       'Randomredirect'            => array( 'Summal_ođđasitstivren' ),
        'Recentchanges'             => array( 'Varas_rievdadusat' ),
+       'Search'                    => array( 'Oza' ),
+       'Shortpages'                => array( 'Oanehis_siiddut' ),
+       'Specialpages'              => array( 'Erenoamáš_siiddut' ),
+       'Statistics'                => array( 'Statistihkat' ),
+       'Uncategorizedcategories'   => array( 'Klassifiserekeahtes_kategoriijat' ),
+       'Uncategorizedimages'       => array( 'Klassifiserekeahtes_govat' ),
+       'Uncategorizedpages'        => array( 'Klassifiserekeahtes_siiddut' ),
+       'Uncategorizedtemplates'    => array( 'Klassifiserekeahtes_mállevuođut' ),
+       'Unusedcategories'          => array( 'Geavatkeahtes_lágit' ),
+       'Unusedimages'              => array( 'Geavatkeahtes_govat' ),
+       'Unusedtemplates'           => array( 'Geavatkeahtes_mállevuođut' ),
+       'Unwatchedpages'            => array( 'Čuovvotkeahtes_siiddut' ),
+       'Upload'                    => array( 'Sádde_fiilla' ),
+       'Version'                   => array( 'Veršuvdna' ),
+       'Wantedcategories'          => array( 'Kategoriijasávaldagat' ),
+       'Wantedpages'               => array( 'Siidusávaldagat' ),
+       'Watchlist'                 => array( 'Čuovvunlistu' ),
+);
+
+$magicWords = array(
+       'redirect'                => array( '0', '#OĐĐASITSTIVREN', '#STIVREN', '#REDIRECT' ),
+       'numberofarticles'        => array( '1', 'ARTIHKKALIIDMEARRI', 'NUMBEROFARTICLES' ),
 );
 
 $linkTrail = '/^(:?[a-zàáâçčʒǯđðéèêëǧǥȟíìîïıǩŋñóòôõßšŧúùûýÿüžþæøåäö]+)(.*)$/sDu';
@@ -135,17 +183,17 @@ $messages = array(
 'category_header' => 'Siiddut, mat gullet luohkkái $1',
 'subcategories' => 'Vuolleluohkát',
 'category-media-header' => 'Fiillat luohkás ”$1”',
-'category-empty' => "''Dán luohkás eai leat siiddut eaige fiillat.''",
+'category-empty' => "''Dán kategoriijas eai leat siiddut eaige fiillat.''",
 'listingcontinuesabbrev' => 'joatk.',
 
 'about' => 'Dieđut',
-'article' => 'Siidu',
+'article' => 'Sisdoallusiidu',
 'newwindow' => '(leahkasa ođđa vindui)',
 'cancel' => 'Šluhtte',
 'moredotdotdot' => 'Lasi...',
 'mypage' => 'Mu siidu',
 'mytalk' => 'Mu ságastallan',
-'anontalk' => 'Ságastala dán IP-čujuhusain',
+'anontalk' => 'Ságastallan IP-čujuhussii',
 'navigation' => 'Navigašuvdna',
 'and' => '&#32;ja',
 
@@ -159,7 +207,15 @@ $messages = array(
 'qbspecialpages' => 'Doaibmasiiddut',
 
 # Vector skin
+'vector-action-delete' => 'Sihko',
+'vector-action-move' => 'Sirdde',
+'vector-action-protect' => 'Suodjal',
+'vector-action-unprotect' => 'Rievdat suodjaleami',
+'vector-view-create' => 'Álggat',
+'vector-view-edit' => 'Rievdat',
+'vector-view-history' => 'Geahča historjjá',
 'vector-view-view' => 'Loga',
+'vector-view-viewsource' => 'Geahča gáldokoda',
 
 'errorpagetitle' => 'Feaila',
 'returnto' => 'Máhcat siidui $1.',
@@ -169,7 +225,7 @@ $messages = array(
 'searchbutton' => 'Oza',
 'go' => 'Mana',
 'searcharticle' => 'Mana',
-'history' => 'Historjá',
+'history' => 'Siiddu historjá',
 'history_short' => 'Historjá',
 'updatedmarker' => 'beaiváduvvon du ovddit fitnama maŋŋá',
 'printableversion' => 'Prentenveršuvdna',
@@ -191,7 +247,7 @@ $messages = array(
 'specialpage' => 'Sierrasiidu',
 'personaltools' => 'Persovnnalaš bargoneavvu',
 'postcomment' => 'Ođđa sekšuvdna',
-'articlepage' => 'Čájet sisdoallusiiddu',
+'articlepage' => 'Geahča sisdoalu',
 'talk' => 'Ságastallan',
 'views' => 'Čájáhusat',
 'toolbox' => 'Neavvobumbá',
@@ -223,7 +279,7 @@ $messages = array(
 'disclaimerpage' => 'Project:Friijavuohta vástideamis',
 'edithelp' => 'Rievdadanrávvagat',
 'edithelppage' => 'Help:Mo rievdadit siidduid',
-'helppage' => 'Help:Rávvagat',
+'helppage' => 'Help:Sisdoallu',
 'mainpage' => 'Váldosiidu',
 'mainpage-description' => 'Váldosiidu',
 'portal' => 'Gáffestohpu',
@@ -253,7 +309,7 @@ $messages = array(
 'nstab-main' => 'Siidu',
 'nstab-user' => 'Geavaheaddjisiidu',
 'nstab-media' => 'Media',
-'nstab-special' => 'Doaibma',
+'nstab-special' => 'Erenomáš',
 'nstab-project' => 'Prošeaktasiidu',
 'nstab-image' => 'Fiila',
 'nstab-mediawiki' => 'Dieđáhus',
@@ -277,11 +333,11 @@ $messages = array(
 'filedeleteerror' => 'Fiilla <b>$1</b> sihkkun ii lihkosmuvvan.',
 'directorycreateerror' => 'Logahallama ”$1” ráhkadeapmi ii lihkosmuvvan.',
 'filenotfound' => 'Fiila <b>$1</b> ii dihtton.',
-'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus',
-'formerror' => 'Skovi dieđut eai dohkke',
+'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus.',
+'formerror' => 'Skovi dieđut eai dohkke.',
 'badarticleerror' => 'Doaimma ii leat vejolaš dahkat dán siiddus.',
 'cannotdelete' => 'Siiddu dahje fiilla sihkkon ii lihkosmuvvan. Muhtun eará lea sáhttán sihkkut dan.',
-'badtitle' => 'Feaila bájilčállagis',
+'badtitle' => 'Fuones bajilčála',
 'badtitletext' => 'Siiddu bájilčállagis lei feaila, dahje dat lei guoros dahje boastut ráhkaduvvon wikiid- dahje gielaidgaskasaš liŋka.',
 'perfcached' => 'Dieđut leat gaskabottosašmuittus eaige sihkkarit vástit dálá hámi. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Čuovvovaš data lea buktojuvvon gaskabottosašmuittus ja dat lea maŋimusta beaiváduvvon $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
@@ -306,17 +362,17 @@ Du geavaheaddjidovddaldat lea dál anus.
 'login' => 'Čálligoađe sisa',
 'nav-login-createaccount' => 'Daga ođđa geavaheaddjidovddaldaga dahje čálligoađe sisa',
 'loginprompt' => 'Sisačállimii dárbbašuvvojit geavssat (cookies).',
-'userlogin' => 'Daga ođđa geavaheaddjidovddaldaga dahje čálligoađe sisa',
+'userlogin' => 'Logge sisa dahje ráhkat dovddaldaga',
 'logout' => 'Čálligoađe olggos',
 'userlogout' => 'Čálligoađe olggos',
 'notloggedin' => 'It leat čálligoahttan sisa',
 'nologin' => "Jus dus ii vel leat geavaheaddjidovddaldat, sáhtát '''$1''' dakkára.",
 'nologinlink' => 'ráhkadit',
-'createaccount' => 'Ráhkat ođđa geavaheaddjidovddaldaga',
+'createaccount' => 'Ráhkat dovddaldaga',
 'gotaccount' => "Jus dus lea jo geavaheaddjidovddaldat, sáhtát '''$1'''.",
-'gotaccountlink' => 'čálligoahtit sisa',
+'gotaccountlink' => 'Logge sisa',
 'createaccountmail' => 'e-poasttain',
-'badretype' => 'Suollemassánit, maid čállet, eai leat seammalaganat.',
+'badretype' => 'Suollemassánit maid čállet eai leat seammalaganat.',
 'userexists' => 'Geavaheaddjidovddaldat, man evttohit, lea jo anus. Leage buorre ja vállje nubbi geavaheaddjidovddaldaga.',
 'loginerror' => 'Feaila sisačálidettiin',
 'nocookieslogin' => '{{SITENAME}} geavaha diehtočoahkuid (cookies) sisačállima oktavuođas. Du neahttabláđejeaddji ii suova geavahit diehtočoahkuid. Váldde daid atnui ja iskka ođđasit.',
@@ -391,19 +447,19 @@ Du geavaheaddjidovddaldat lea dál anus.
 'showpreview' => 'Geahča ovdalgiihtii',
 'showlivepreview' => 'Ovdalgeahčastan',
 'showdiff' => 'Čájet rievdadusaid',
-'anoneditwarning' => 'It leat čálligoahtán sisa. IP-čujuhusat lasihuvvo dán siiddu rievdadanhistorjái.',
+'anoneditwarning' => "'''Váruhus:''' It leat čálligoahtán sisa. Du IP-čujuhus báhcá dán siiddu ođasmahttinhistorjái.",
 'missingsummary' => 'It leat čállán čoahkkáigeasu. Jus válljet Vurke ođđasit, de rievdadusat maid ráhkadit vurkejuvvo čoahkkáigeasuhaga.',
 'missingcommenttext' => 'Čále čoahkkáigeasu vuollái.',
 'missingcommentheader' => 'It leat čállán bajilčállaga du oaivilii. Vállje <em>Vurke</em>, jus it hálit čállit bajilčállaga.',
 'summary-preview' => 'Čoahkkáigeasu ovdalgihtiigeahččan:',
 'subject-preview' => 'Bajilčállaga ovdalgihtiigeahččan:',
-'blockedtitle' => 'Geavaheaddji lea cakkastallojuvvon',
+'blockedtitle' => 'Geavaheaddji lea cakkojuvvon',
 'whitelistedittext' => 'Don fertet $1, ovdalgo sáhtát rievdadit siidduid.',
 'confirmedittext' => 'It sáhte rievdadit siiddu ovdalgo leat sihkarastan iežat e-poastačujuhusa. Sáhtat sihkarastit [[Special:Preferences|ásahussiidduin]].',
 'nosuchsectiontitle' => 'Diekkár oassi ii gávdno',
 'nosuchsectiontext' => 'Isket rievdadit oasi, mii ii gávdno.',
 'loginreqtitle' => 'Sisačállin gáibiduvvo',
-'loginreqlink' => 'čálligoađe sisa',
+'loginreqlink' => 'logge sisa',
 'loginreqpagetext' => 'Don fertet $1, ovdalgo oainnat eará siidduid.',
 'accmailtitle' => 'Suollemassátni lea sáddejuvvon.',
 'accmailtext' => "geavaheaddji '''$1''' suollemassátni lea sáddejuvvon čujuhussii '''$2'''.",
@@ -415,6 +471,11 @@ Du geavaheaddjidovddaldat lea dál anus.
 'editing' => 'Rievdadit siiddu $1',
 'editingsection' => 'Rievdadit oasi siiddus $1',
 'editingcomment' => 'Rievdadit kommeanta siiddus $1',
+'explainconflict' => "Soames lea rievdadan dán siiddu dan maŋŋel go don leat álgan rievdadit dan.
+Bajit oasis oidno siiddu teaksta dálá hámis.
+Du rievdadusat oidnojit vuolit oasis.
+Don fertet dahkat du rievdadusaid dálá tekstii.
+'''Beare''' bajit oasi teaksta vurkejuvvo go deaddilat «{{int:savearticle}}».",
 'yourtext' => 'Iežat teaksta',
 'storedversion' => 'Vurkejuvvon veršuvdna',
 'yourdiff' => 'Erohusat',
@@ -444,6 +505,7 @@ Du geavaheaddjidovddaldat lea dál anus.
 'last' => 'ovddit',
 'page_first' => 'vuosttas siidu',
 'page_last' => 'maŋimus siidu',
+'history-fieldset-title' => 'Bláđe historjjá',
 'histfirst' => 'Vuosttas',
 'histlast' => 'Maŋimus',
 'historysize' => '($1 stávvala)',
@@ -480,15 +542,22 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 'revdelete-submit' => 'Daga',
 'pagehist' => 'Siiddu rievdanhistorjá',
 'deletedhist' => 'Šluhtejuvvon veršuvnnaid historjá',
+'revdelete-reason-dropdown' => '*Sivat
+** Ii-almmolaš persovnnalaš dieđut
+** Vejolaš gudnenrihkkun
+** Vuovnnalaš geavaheaddjidovddaldat
+** Vuovnnalaš sisdoallu',
 
 # Diffs
+'history-title' => 'Siiddu «$1» historjá',
 'lineno' => 'Gurgadas $1:',
 'compareselectedversions' => 'Veardde válljejuvvon veršuvnnaid',
 'editundo' => 'šluhtte',
 'diff-multi' => '(Veršuvnnaid gaskas {{PLURAL:$1|okta rievdadus|$1 eará rievdadusa}}.)',
 
 # Search results
-'searchresults' => 'Ohcama bohtosat',
+'searchresults' => 'Ohcanbohtosat',
+'searchresults-title' => 'Ohcanbohtosat: "$1"',
 'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
 'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
 'notitlematches' => 'Ohcansátni ii dihtton ovttasge bájilčállagis',
@@ -498,9 +567,18 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 
 $1 {{int:pipe-separator}} $2',
 'searchhelp-url' => 'Help:Rávvagat',
+'searchprofile-articles' => 'Sisdoallosiiddut',
+'searchprofile-project' => 'Veahkke- ja prošeaktasiiddut',
+'searchprofile-everything' => 'Buot',
+'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:',
+'powersearch-toggleall' => 'Buot',
+'powersearch-togglenone' => 'Ii mihkkege',
 
 # Quickbar
 'qbsettings-none' => 'Ii maidige',
@@ -569,19 +647,19 @@ $1 {{int:pipe-separator}} $2',
 'userrights-reason' => 'Sivva',
 
 # Groups
-'group' => 'Joavku',
+'group' => 'Joavku:',
 'group-user' => 'geavaheaddjit',
-'group-bot' => 'Robohtat',
-'group-sysop' => 'bájasdoallit',
-'group-bureaucrat' => 'byrokráhtat',
+'group-bot' => 'Bohtat',
+'group-sysop' => 'Administráhtorat',
+'group-bureaucrat' => 'Byrokráhtat',
 'group-all' => '(buot)',
 
-'group-bot-member' => 'robohtta',
-'group-sysop-member' => 'bájasdoalli',
-'group-bureaucrat-member' => 'byrokráhta',
+'group-bot-member' => 'bohtta',
+'group-sysop-member' => 'administráhtorat',
+'group-bureaucrat-member' => 'byrokráhtta',
 
 'grouppage-bot' => '{{ns:project}}:Bohtat',
-'grouppage-sysop' => '{{ns:project}}:Bájasdoallit',
+'grouppage-sysop' => '{{ns:project}}:Administráhtorat',
 'grouppage-bureaucrat' => '{{ns:project}}:Byrokráhtat',
 
 # User rights log
@@ -593,7 +671,7 @@ $1 {{int:pipe-separator}} $2',
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|rievdadus|rievdadusa}}',
 'recentchanges' => 'Varas rievdadusat',
-'recentchangestext' => 'Dán siiddus sáhtat čuovvut varas rievdadusaid {{GRAMMAR:illative|{{SITENAME}}}}.',
+'recentchanges-summary' => 'Dán siiddus sáhtát čuovvut varas rievdadusaid {{SITENAME}}s.',
 'recentchanges-feed-description' => 'Dán siiddus sáhtat čuovvut varas {{GRAMMAR:illative|{{SITENAME}}}} rievdadusaid.',
 'rcnote' => 'Vuollin {{PLURAL:$1|lea okta rievdadus|leat $1 varas rievdadusa}} {{PLURAL:$2|ovtta beaivvi|$2 maŋimus jándora}} áigge gitta $3 rádjái.',
 'rcnotefrom' => "Vuolábealde leat rievdadusat '''$2''' rájes. Eanemusta '''$1''' mearkkastaga čájehuvvo.",
@@ -606,7 +684,7 @@ $1 {{int:pipe-separator}} $2',
 'rcshowhidemine' => '$1 iežas rievdádusat',
 'rclinks' => 'Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.<br />$3',
 'diff' => 'erohus',
-'hist' => 'historjá',
+'hist' => 'hist',
 'hide' => 'čiega',
 'show' => 'čájet',
 'minoreditletter' => 'u',
@@ -630,14 +708,14 @@ $1 {{int:pipe-separator}} $2',
 'uploaderror' => 'Vurkenfeaila',
 'uploadlog' => 'Fiilalogga',
 'uploadlogpage' => 'Fiilalogga',
-'filename' => 'Fiilla namma:',
+'filename' => 'Fiilla namma',
 'filedesc' => 'Čoahkkáigeassu',
-'fileuploadsummary' => 'Čoahkkáigeassu',
+'fileuploadsummary' => 'Čoahkkáigeassu:',
 'filesource' => 'Gáldu:',
 'uploadedfiles' => 'Lasihuvvon fiillat',
 'ignorewarning' => 'Vurke fuolatkeahttá varuhusas',
 'minlength1' => 'Fiilla namas ferte leat unnimustá okta mearka.',
-'badfilename' => 'Fiilla nama rievdaduvvui: $1.',
+'badfilename' => 'Fiila namma lea rievdaduvvon. Ođđa namma lea "$1".',
 'filetype-missing' => 'Fiillas vailui fiilageažus – ovdamearkkan <tt>.jpg</tt>.',
 'large-file' => 'Fiilla max. sturrodat lea $1. Fiila man lasihit lea $2.',
 'largefileserver' => 'Dát fiila lea menddo stuoris.',
@@ -726,7 +804,7 @@ $1 {{int:pipe-separator}} $2',
 'unwatchedpages' => 'Čuovvotkeahtes siiddut',
 
 # List redirects
-'listredirects' => 'Ođđasitstivremat',
+'listredirects' => 'Listu ođđasitstivremiin',
 
 # Unused templates
 'unusedtemplates' => 'Geavatkeahtes mállevuođut',
@@ -744,6 +822,15 @@ $1 {{int:pipe-separator}} $2',
 # Statistics
 'statistics' => 'Statistihkat',
 'statistics-header-users' => 'Geavaheaddjistatistihkat',
+'statistics-articles' => 'Sisdoallosiiddut',
+'statistics-pages' => 'Siiddut',
+'statistics-pages-desc' => 'Buot siiddut dán wikis (ságastallansiiddut, prošeaktasiiddut, ođđasitstivremat, jed.)',
+'statistics-files' => 'Fiillat',
+'statistics-edits' => 'Rievdadusat maŋŋel dan go {{SITENAME}} vuođđuduvvui',
+'statistics-edits-average' => 'Gaskamearálaš rievdadusaid mearri/siidu',
+'statistics-users' => 'Registrerejuvvon [[Special:ListUsers|geavaheaddjit]]',
+'statistics-users-active' => 'Aktiivvalaš geavaheaddjit',
+'statistics-users-active-desc' => 'Geavaheaddjit, geat leat bargan juoidá maŋimus {{PLURAL:$1|beaivvi|$1 beaivvi}} áigge.',
 'statistics-mostpopular' => 'Eanemusta gehčojuvvon siiddut',
 
 'disambiguations' => 'Liŋkkat dárkonsiidduide',
@@ -790,7 +877,10 @@ $1 {{int:pipe-separator}} $2',
 'deadendpages' => 'Siiddut, main eai leat liŋkkat',
 'deadendpagestext' => 'Čuovvovaš siidduin eai leat liŋkkat eara siidduide dán wikis.',
 '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',
 'newpages-username' => 'Geavaheaddjidovddaldat:',
@@ -840,6 +930,17 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-submit' => 'Oza',
 'listusers-noresult' => 'Geavaheaddjit eai dihtton. Dárkis maid sierra bustávasturrodagat.',
 
+# Special:ActiveUsers
+'activeusers' => 'Listu aktiivvalaš geavaheddjiin',
+'activeusers-intro' => 'Dát lea listu geavaheddjiin, mat leat bargan juoidá maŋimus $1 {{PLURAL:$1|beaivvi|beaivvi}} siste.',
+'activeusers-count' => '$1 {{PLURAL:$1|rievdadus|rievdadusa}} maŋimus $3 beaivvi siste',
+'activeusers-from' => 'Čájet geavaheddjiid dán rájes:',
+'activeusers-hidebots' => 'Čiega bohtaid',
+'activeusers-hidesysops' => 'Čiega administráhtoriid',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(listu miellahtuin)',
+
 # E-mail user
 'mailnologin' => 'Sáddejeaddji čujuhus váilo',
 'mailnologintext' => 'Don fertet leat [[Special:UserLogin|čálligoahtán sisa]] ja du [[Special:Preferences|ásahusain]] ferte leat gelbbolaš ja <strong>sihkarastojuvvon</strong> e-poastačujuhus, ovdalgo sáhtat sáddet e-poasta eará geavaheddjiide.',
@@ -916,6 +1017,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'deletionlog' => 'sihkkunlogga',
 'reverted' => 'Máhcahuvvon ovddit veršuvdnii',
 'deletecomment' => 'Sivva',
+'deleteotherreason' => 'Eará sivva:',
 
 # Rollback
 'rollback' => 'máhcat ovddit veršuvdnii',
@@ -940,12 +1042,18 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'protectexpiry' => 'Boarásnuvvá',
 'protect_expiry_invalid' => 'Boarášnuvvánáigi ii dohket.',
 'protect_expiry_old' => 'Boarásnuvvánáigi lea vássán.',
-'protect-default' => '(eai rádjehusat)',
-'protect-level-autoconfirmed' => 'Cakkastala ođđa ja anonyma geavaheddjiid',
-'protect-level-sysop' => 'Dušše bájasdoallit',
+'protect-default' => 'Suova buot geavaheddjiid',
+'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
+'protect-level-sysop' => 'Suova beare administráhtoriid',
 'protect-summary-cascade' => 'viiddiduvvon',
 'protect-expiring' => 'boarásnuvvá $1',
 'protect-cascade' => 'Viididt suodjálusa guoskat buot siidduit, mat gullet dán siidui',
+'protect-othertime' => 'Eará áigi:',
+'protect-othertime-op' => 'eará áigi',
+'protect-dropdown' => '** Dávjjes vandalisma
+** Dávjjes spammen
+** Rievdadansoahti
+** Dehálaš siidu',
 'protect-expiry-options' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
 'restriction-type' => 'Rádjehus',
 'restriction-level' => 'Suodjálus',
@@ -956,6 +1064,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 # Restrictions (nouns)
 'restriction-edit' => 'rievdádeapmi',
 'restriction-move' => 'sirdin',
+'restriction-upload' => 'Fiilla vurken',
 
 # Restriction levels
 'restriction-level-sysop' => 'ollislaččat suodjáluvvon',
@@ -984,7 +1093,9 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 
 # Contributions
 'contributions' => 'Geavaheaddji rievdadusat',
+'contributions-title' => 'Geavaheaddji $1 rievdadusat',
 'mycontris' => 'Rievdadusat',
+'uctop' => '(ođđaseamos)',
 'month' => 'Mánotbadji',
 'year' => 'Jahki',
 
@@ -1010,7 +1121,10 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'whatlinkshere-links' => 'liŋkkat',
 
 # Block/unblock
+'block' => 'Cagge geavaheaddji',
 'blockip' => 'Eastte rievdadusaid',
+'blockip-title' => 'Cagge geavaheaddji',
+'blockip-legend' => 'Cagge geavaheaddji',
 'ipadressorusername' => 'IP-čujuhus dahje geavaheaddjidovddaldat',
 'ipbexpiry' => 'Guhkkodat',
 'ipbreason' => 'Sivva',
@@ -1037,10 +1151,12 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'ipb-edit-dropdown' => 'Rievdat sivaid',
 'ipb-unblock-addr' => 'Sihko geavaheaddji $1 estema',
 'ipb-unblock' => 'Sihko geavaheaddji dahje IP-čujuhusa rievdadaneasttu',
+'ipblocklist' => 'Listu cakkojuvvon IP-adreassain ja geavaheddjiin',
 'ipblocklist-submit' => 'Oza',
 'infiniteblock' => 'bissovaččat',
 'expiringblock' => 'boarásnuvvá $1 $2',
 'contribslink' => 'rievdadusat',
+'blocklogentry' => 'esttii geavaheaddji dahje IP-čujuhusa [[$1]], eastima bistin lea $2 $3',
 'proxyblocksuccess' => 'Gárvvis.',
 
 # Developer tools
@@ -1061,6 +1177,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'move-watch' => 'Čuovo dán siiddu',
 'movepagebtn' => 'Sirdde siiddu',
 'pagemovedsub' => 'Sirdin lihkosmuvai',
+'talkexists' => "'''Siiddu sirdin iešalddes lihkosmuvai, earret siiddu ságastallansiiddu sirdin daningo ođđa bájilčálas lea jo ságastallansiidu. Leage buorre ja sirdde ságastallamiid manuálalažžat.'''",
 'movedto' => 'Sirdojuvvun ođđa bájilčállagin',
 'movetalk' => 'Sirdde maid ságastallansiiddu.',
 'movelogpage' => 'Sirdinlogga',
@@ -1071,15 +1188,17 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'delete_and_move_confirm' => 'Sihko siiddu',
 
 # Export
+'export' => 'Olggosfievrrit siidduid',
 'export-addcat' => 'Lasit',
 'export-download' => 'Vurke fiillan',
 
 # Namespace 8 related
-'allmessages' => 'Vuogádatdieđáhusat',
+'allmessages' => 'Buot systemasánit',
 'allmessagesname' => 'Namma',
 'allmessagescurrent' => 'Dálá teaksta',
 
 # Thumbnails
+'thumbnail-more' => 'Stuorit',
 'filemissing' => 'Fiila váilo',
 
 # Special:Import
@@ -1099,7 +1218,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'tooltip-pt-mycontris' => 'Listu iežas rievdadusain',
 'tooltip-pt-login' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
 'tooltip-pt-anonlogin' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
-'tooltip-pt-logout' => 'Čálligoađe olggos',
+'tooltip-pt-logout' => 'Logge olggos',
 'tooltip-ca-talk' => 'Ságastala sisdoalus',
 'tooltip-ca-edit' => 'Rievdat dán siiddu',
 'tooltip-ca-addsection' => 'Lasit kommeantta dán siidui',
@@ -1111,7 +1230,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'tooltip-ca-move' => 'Sirdde dán siiddu',
 'tooltip-ca-watch' => 'Lasit dán siiddu iežat čuovvunlistui',
 'tooltip-ca-unwatch' => 'Sirdde dán siiddu eret du čuovvunlisttus',
-'tooltip-search' => 'Oza {{GRAMMAR:elative|{{SITENAME}}}}',
+'tooltip-search' => 'Oza {{SITENAME}}s',
 'tooltip-p-logo' => 'Váldosiidu',
 'tooltip-n-mainpage' => 'Mana váldosiidui',
 'tooltip-n-portal' => 'Ságastallan prošeavttas',
@@ -1146,6 +1265,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'tooltip-recreate' => 'Álggat dán siiddu ođđasit',
 
 # Attribution
+'anonymous' => '{{SITENAME}}-siiddu anonyma {{PLURAL:$1|geavaheaddji|geavaheaddjit}}',
 'siteuser' => '{{GRAMMAR:genitive|{{SITENAME}}}} geavaheaddji $1',
 'others' => 'earát',
 'siteusers' => '{{GRAMMAR:genitive|{{SITENAME}}}} geavaheaddji(t) $1',
@@ -1162,6 +1282,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'nextdiff' => 'Čuovvovaš rievdadus →',
 
 # Media information
+'thumbsize' => 'Thumbnail sturrodat:',
 'widthheightpage' => '$1 × $2, $3 siiddut',
 
 # Special:NewFiles
@@ -1242,6 +1363,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'scarytranscludetoolong' => '[Čujuhus lea menddo guhkki]',
 
 # Delete conflict
+'deletedwhileediting' => "'''Cuiggodus''': Dát siidu lea sihkkojuvvon das maŋŋá go leat álggahan ođasmahttit dan!",
 'recreate' => 'Álggat ođđasit',
 
 # action=purge
@@ -1263,7 +1385,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'table_pager_empty' => 'Eai bohtosat',
 
 # Auto-summaries
-'autoredircomment' => 'Ođđasitstivrejuvvo siidui [[$1]]',
+'autoredircomment' => 'Ođđasitstivrejuvvo [[$1]]-siidui',
 'autosumm-new' => 'Ođđa siidu: $1',
 
 # Size units
@@ -1290,4 +1412,11 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 # Special:SpecialPages
 'specialpages' => 'Erenomáš siiddut',
 
+# New logging system
+'logentry-delete-delete' => '$1 sihkui siiddu $3',
+'logentry-move-move' => '$1 sirddii siiddu $3 nammii $4',
+'logentry-move-move_redir-noredirect' => '$1 sirddii siiddu $3 nammii $4 iige ráhkadan ođđasitstivrema',
+'logentry-newusers-create' => '$1 ráhkadii dovddaldaga',
+'logentry-newusers-autocreate' => 'Dovddaldat $1 ráhkaduvvui automáhtalaččat',
+
 );
index 4fc6564..d7d74c0 100644 (file)
@@ -670,7 +670,7 @@ Informacion: (curt) = quiíxde vercion currentua,
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|quiix|quíix}}',
 'recentchanges' => 'Camjöx cmaa',
-'recentchangestext' => 'Caitom camjöx cmaa quiíx zode Wiki zo jan páhina iti.',
+'recentchanges-summary' => 'Caitom camjöx cmaa quiíx zode Wiki zo jan páhina iti.',
 'recentchanges-feed-description' => 'Caitom camjöx cmaa quiíx zode Wiki zo jan fiiyt iti.',
 'rcnote' => "!-cmaa coccebj {{PLURAL:$1|'''1''' quiixde|'''$1''' hunquiíxde}} {{PLURAL:$2|'''1''' hunzaah|'''$2''' hunixaáp}} zo iti, $3 'de.",
 'rcnotefrom' => "!-cmaa coccebj quiíx zode '''$2''' (plusöxiti '''$1''' visi).",
index 37e544a..1cba767 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Samogitian (Žemaitėška)
+/** Samogitian (žemaitėška)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -704,6 +704,8 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 
 # Diffs
 'history-title' => 'Poslapė „$1“ istuorėjė',
+'difference-title' => '$1: Skėrtoms terp redakcėju',
+'difference-title-multipage' => '$1 ė $2: Skėrtoms terp poslapiu',
 'lineno' => 'Eilotė $1:',
 'compareselectedversions' => 'Palīgintė pasėrinktas versėjės',
 'editundo' => 'atšauktė',
@@ -897,7 +899,7 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'nchanges' => '$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}',
 'recentchanges' => 'Vielībė̅jė pakeitėmā',
 'recentchanges-legend' => 'Vielībuju pakeitėmu pasėrinkėmā',
-'recentchangestext' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
+'recentchanges-summary' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
 'recentchanges-feed-description' => 'Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.',
 'recentchanges-label-newpage' => 'Šėto keitėmo sukurts naus poslapis',
 'recentchanges-label-minor' => 'Tas īr mažos pataisīms',
index 52ab42f..17e5e31 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbo-Croatian (Srpskohrvatski)
+/** Serbo-Croatian (srpskohrvatski / српскохрватски)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 2ce1602..be52dea 100644 (file)
@@ -442,8 +442,8 @@ $1",
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
 'policy-url' => 'Project:ප්‍රතිපත්තිය',
-'portal' => 'පà·\8aâ\80\8dරජà·\8f à¶´à·\92à·\80à·\92à·\83à·\94ම',
-'portal-url' => 'Project:පà·\8aâ\80\8dරජà·\8f à¶´à·\92à·\80à·\92à·\83à·\94ම',
+'portal' => 'පà·\8aâ\80\8dරජà·\8f à¶¯à·\8aà·\80à·\8fරය',
+'portal-url' => 'Project:පà·\8aâ\80\8dරජà·\8f à¶¯à·\8aà·\80à·\8fරය',
 'privacy' => 'පුද්ගලිකත්ව ප්‍රතිපත්තිය',
 'privacypage' => 'Project:පුද්ගලිකත්ව ප්‍රතිපත්තිය',
 
@@ -619,7 +619,7 @@ $2',
 'notloggedin' => 'ප්‍රවිසී නැත',
 'nologin' => "ඔබ හට ගිණුමක් නොමැතිද? '''$1'''.",
 'nologinlink' => 'ගිණුමක් තනන්න',
-'createaccount' => 'à¶\9cà·\92ණà·\94ම තනන්න',
+'createaccount' => 'à¶\85ලà·\94තà·\8a à¶\9cà·\92ණà·\94මà¶\9aà·\8a තනන්න',
 'gotaccount' => "දැනටමත් ගිණුමක් තිබේද? '''$1'''.",
 'gotaccountlink' => 'පිවිසෙන්න',
 'userlogin-resetlink' => 'ඔබේ පිවිසුම් තොරතුරු අමතකද?',
@@ -1153,7 +1153,7 @@ $1",
 'mergelogpagetext' => 'එක් පිටු ඉතිහාසයක් තවකක් හා සමග ඉතා මෑතදී සිදුවූ ඒකාබද්ධ වීම් දැක්වෙන ලැයිස්තුවක් පහත වේ.',
 
 # Diffs
-'history-title' => '"$1"හි සංශෝධන ඉතිහාසය',
+'history-title' => '$1:  සංශෝධන ඉතිහාසය',
 'difference-multipage' => 'පිටු අතර වෙනස',
 'lineno' => 'පේළිය $1:',
 'compareselectedversions' => 'තෝරාගත් සංශෝධන සසඳන්න',
@@ -1288,7 +1288,7 @@ $1",
 'timezoneuseserverdefault' => 'විකියෙහි සාමාන්‍ය විදිහ භාවිත කරන්න ($1)',
 'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
 'timezoneoffset' => 'Offset¹:',
-'servertime' => "ස'වරයේ වේලාව:",
+'servertime' => 'සේවාදායකයේ වේලාව:',
 'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
 'timezoneregion-africa' => 'අප්‍රිකාව',
 'timezoneregion-america' => 'අමෙරිකාව',
index d8c7694..0111218 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Slovak (Slovenčina)
+/** Slovak (slovenčina)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1242,9 +1242,9 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
 'mergelogpagetext' => 'Dolu je zoznam posledných zlúčení jednej histórie revízií stránky do druhej.',
 
 # Diffs
-'history-title' => 'História revízií „$1“',
-'difference-title' => 'Rozdiel medzi revíziami „$1“',
-'difference-title-multipage' => 'Rozdiel medzi stránkami „$1“ a „$2“',
+'history-title' => ' $1: História revízií',
+'difference-title' => '$1: Rozdiel medzi revíziami',
+'difference-title-multipage' => '$1 a $2: Rozdiel medzi stránkami',
 'difference-multipage' => '(Rozdiel medzi stránkami)',
 'lineno' => 'Riadok $1:',
 'compareselectedversions' => 'Porovnať označené verzie',
@@ -1339,6 +1339,7 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
 'prefs-beta' => 'Nové funkcie',
 'prefs-datetime' => 'Dátum a čas',
 'prefs-labs' => 'Laboratórne funkcie',
+'prefs-user-pages' => 'Stránky používateľa',
 'prefs-personal' => 'Profil',
 'prefs-rc' => 'Posledné úpravy',
 'prefs-watchlist' => 'Sledované stránky',
@@ -1805,14 +1806,15 @@ Ak problém pretrváva, kontaktujte [[Special:ListUsers/sysop|správcu systému]
 'backend-fail-writetemp' => 'Nebolo možné zapísať do dočasného súboru.',
 'backend-fail-closetemp' => 'Nebolo možné zatvoriť dočasný súbor.',
 'backend-fail-read' => 'Nebolo možné prečítať súbor „$1“.',
-'backend-fail-create' => 'Nebolo možné vytvoriť súbor „$1“.',
-'backend-fail-maxsize' => 'Súbor $1 nie je možné vytvoriť, pretože je väčší ako {{PLURAL:$2|$2 bajtov|$2 bajt}}.',
+'backend-fail-create' => 'Nebolo možné zapísať súbor $1.',
+'backend-fail-maxsize' => 'Nie je možné zapísať súbor  $1  pretože je väčší ako  {{PLURAL:$2| jeden byte| $2  bajtov}}.',
 'backend-fail-readonly' => 'Úložisko „$1“ je momentálne v režime len na čítanie. Udaný dôvod: „$2“',
 'backend-fail-synced' => 'Súbor „$1“ je v nekonzistentnom stave v rámci vnútorného úložiska',
 'backend-fail-connect' => 'Nepodarilo sa pripojiť k úložisku „$1“.',
 'backend-fail-internal' => 'Vyskytla sa neznáma chyba v úložisku „$1“.',
 'backend-fail-contenttype' => 'Nebolo možné určiť typ obsahu súboru, ktorý sa má uložiť na „$1“.',
 'backend-fail-batchsize' => 'Do úložiska bola zaslaná dávka s $1 {{PLURAL:$1|operáciou|operáciami}}; limit je $2 {{PLURAL:$2|operácia|operácie|operácií}}.',
+'backend-fail-usable' => 'Nie je možné zapísať súbor  $1  kvôli nedostatočným povoleniam alebo chýbajúcim adresárom/kontajnerom.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Nepodarilo sa pripojiť k žurnálovej databáze úložiska „$1“.',
index 4ae9369..e806864 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Slovenian (Slovenščina)
+/** Slovenian (slovenščina)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -191,7 +191,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Skrij pregledana urejanja v zadnjih spremembah',
 'tog-newpageshidepatrolled' => 'Skrij pregledane strani iz seznama novih strani',
 'tog-extendwatchlist' => 'Razširi spisek nadzorov, da bo prikazoval vse spremembe, ne le najnovejše',
-'tog-usenewrc' => 'Izboljšane zadnje spremembe (zahteva JavaScript)',
+'tog-usenewrc' => 'Združi spremembe posamezne strani na zadnjih spremembah in spisku nadzorov (zahteva JavaScript)',
 'tog-numberheadings' => 'Samodejno številči poglavja',
 'tog-showtoolbar' => 'Prikaži urejevalno orodno vrstico',
 'tog-editondblclick' => 'Omogoči urejanje strani z dvojnim klikom (zahteva JavaScript)',
@@ -576,6 +576,8 @@ Podani razlog je bil »''$2''«.",
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Slaba konfiguracija: neznani virus skener: ''$1''",
@@ -1156,9 +1158,9 @@ Upoštevajte, da bo uporaba navigacijskih gumbov ponastavila ta stolpec.',
 'mergelogpagetext' => 'Prikazan je seznam nedavnih združevanj zgodovin strani.',
 
 # Diffs
-'history-title' => 'Zgodovina strani »$1«',
-'difference-title' => 'Razlika med redakcijama »$1«',
-'difference-title-multipage' => 'Razlika med stranema »$1« in »$2«',
+'history-title' => '$1: Zgodovina strani',
+'difference-title' => '$1: Razlika med redakcijama',
+'difference-title-multipage' => '$1 in $2: Razlika med stranema',
 'difference-multipage' => '(Razlika med stranmi)',
 'lineno' => 'Vrstica $1:',
 'compareselectedversions' => 'Primerjaj izbrani redakciji',
@@ -1255,6 +1257,7 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'prefs-beta' => 'Betafunkcije',
 'prefs-datetime' => 'Datum in čas',
 'prefs-labs' => 'Funkcije laboratorija',
+'prefs-user-pages' => 'Uporabniške strani',
 'prefs-personal' => 'Podatki o uporabniku',
 'prefs-rc' => 'Zadnje spremembe',
 'prefs-watchlist' => 'Spisek nadzorov',
@@ -2065,6 +2068,7 @@ Prosimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z
 'alllogstext' => 'Združeno so prikazani dnevniki sprememb uporabniških pravic, preimenovanj uporabnikov, nalaganja predstavnostnih datotek, prestavljanja in zaščite strani, brisanja, registracij uporabnikov, sprememb položaja botov ter blokiranja in deblokiranja uporabnikov na strani {{SITENAME}}. Pogled lahko zožite z izbiro dnevnika, uporabniškega imena ali strani. Vedite, da polje »Uporabnik« razlikuje med malimi in velikimi črkami.',
 'logempty' => 'O tej strani ni v dnevniku ničesar.',
 'log-title-wildcard' => 'Iskanje po naslovih, začenši s tem besedilom',
+'showhideselectedlogentries' => 'Pokaži/skrij izbrane dnevniške vnose',
 
 # Special:AllPages
 'allpages' => 'Vse strani',
@@ -2954,6 +2958,7 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'spambot_username' => 'Čiščenje navlake MediaWiki',
 'spam_reverting' => 'Vračanje na zadnjo redakcijo brez povezav na $1',
 'spam_blanking' => 'Vse redakcije so vsebovale povezave na $1, izpraznjujem',
+'spam_deleting' => 'Vse redakcije so vsebovale povezave na $1, brišem',
 
 # Info page
 'pageinfo-title' => 'Informacije o »$1«',
@@ -3871,4 +3876,6 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'duration-centuries' => '$1 {{PLURAL:$1|stoletje|stoletji|stoletja|stoletij}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Ne morem pridobiti zaklepov na strežniku $1.',
 );
index 24e9a02..ae7c2e5 100644 (file)
@@ -1007,7 +1007,7 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'nchanges' => '$1 {{PLURAL:$1|Ännerong|Änneronga}}',
 'recentchanges' => 'Foarchte Verändarunga',
 'recentchanges-legend' => 'Oazeigeoptiona',
-'recentchangestext' => "Uff dieser Seite koanst du de letzta Änderunga uff '''{{SITENAME}}''' noachverfulga.",
+'recentchanges-summary' => "Uff dieser Seite koanst du de letzta Änderunga uff '''{{SITENAME}}''' noachverfolga.",
 'recentchanges-feed-description' => 'Verfolge miet diesem Feed de letzta Änneronga ei {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Neue Seite',
 'recentchanges-label-minor' => 'Klenne Änderung',
index 952dcf3..e92fe25 100644 (file)
@@ -848,7 +848,7 @@ E-mailkaada mala sheegaayo markii ee dadka kale kula soo xiriirayaan.',
 'nchanges' => '$1 {{PLURAL:$1|bedelka|bedelada}}',
 'recentchanges' => 'Isbedelada dhow',
 'recentchanges-legend' => 'Dooqyada isbedelada dhow',
-'recentchangestext' => 'Dabagal isbedelada dhow ee wikiga oo ku dhacay bogaan.',
+'recentchanges-summary' => 'Dabagal isbedelada dhow ee wikiga ee ku dhacay bogaan.',
 'recentchanges-feed-description' => 'Dabagal isbedelada dhow ee wikiga oo ku dhacay feedkaan',
 'recentchanges-label-newpage' => 'Wax bedelkaan wuxuu sameeyay bog cusub',
 'recentchanges-label-minor' => 'Kan waa bedel yar',
index 3ca1e95..55d4ab4 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Albanian (Shqip)
+/** Albanian (shqip)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -152,7 +152,7 @@ $magicWords = array(
        'numberofpages'           => array( '1', 'NUMRIFAQEVE', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'NUMRIIARTIKUJVE', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'NUMRIISKEDAVE', 'NUMBEROFFILES' ),
-       'numberofusers'           => array( '1', 'NUMRIIPËRDORUESVE', 'NUMRIPËRDORUESVE', 'NUMBEROFUSERS' ),
+       'numberofusers'           => array( '1', 'NUMRIIPËRDORUESVE', 'NUMBEROFUSERS' ),
        'numberofactiveusers'     => array( '1', 'NUMRIIPËRDORUESVEAKTIVË', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'           => array( '1', 'NUMRIREDAKTIMEVE', 'NUMBEROFEDITS' ),
        'numberofviews'           => array( '1', 'NUMRIISHIKIMEVE', 'NUMBEROFVIEWS' ),
index 2c1627b..2400634 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2740,7 +2740,7 @@ $1',
 # Block/unblock
 'autoblockid' => 'Самоблокирање #$1',
 'block' => 'Блокирај корисника',
-'unblock' => 'Ð\94еблокирај корисника',
+'unblock' => 'Ð\9eдблокирај корисника',
 'blockip' => 'Блокирај корисника',
 'blockip-title' => 'Блокирање корисника',
 'blockip-legend' => 'Блокирај корисника',
@@ -2761,7 +2761,7 @@ $1',
 ** Неприхватљиво корисничко име',
 'ipb-hardblock' => 'Забрани пријављеним корисницима да уређују с ове ИП адресе',
 'ipbcreateaccount' => 'Онемогући отварање налога',
-'ipbemailban' => 'Забрани члану слање е-порука',
+'ipbemailban' => 'Забрани кориснику слање е-порука',
 'ipbenableautoblock' => 'Аутоматски блокирај последњу ИП адресу овог корисника и све даљње адресе с којих покуша да уређује',
 'ipbsubmit' => 'Блокирај овог корисника',
 'ipbother' => 'Друго време:',
@@ -2780,11 +2780,11 @@ $1',
 'ipb-blockingself' => 'Овом радњом ћете блокирати себе! Јесте ли сигурни да то желите?',
 'ipb-confirmhideuser' => 'Управо ћете блокирати корисника с укљученом могућношћу „сакриј корисника“. Овим ће корисничко име бити сакривено у свим списковима и извештајима. Желите ли то да урадите?',
 'ipb-edit-dropdown' => 'Уреди разлоге блокирања',
-'ipb-unblock-addr' => 'Ð\94еблокирај $1',
-'ipb-unblock' => 'Ð\94еблокирај корисничко име или ИП адресу',
+'ipb-unblock-addr' => 'Ð\9eдблокирај $1',
+'ipb-unblock' => 'Ð\9eдблокирај корисничко име или ИП адресу',
 'ipb-blocklist' => 'Погледај постојећа блокирања',
 'ipb-blocklist-contribs' => 'Доприноси за $1',
-'unblockip' => 'Ð\94еблокирај корисника',
+'unblockip' => 'Ð\9eдблокирај корисника',
 'unblockiptext' => 'Користите образац испод да бисте вратили право писања блокираној IP адреси или корисничком имену.',
 'ipusubmit' => 'Уклони ову блокаду',
 'unblocked' => '[[User:$1|$1]] је деблокиран',
@@ -2816,7 +2816,7 @@ $1',
 'ipblocklist-empty' => 'Списак блокирања је празан.',
 'ipblocklist-no-results' => 'Тражена ИП адреса или корисничко име није блокирано.',
 'blocklink' => 'блокирај',
-'unblocklink' => 'деблокирај',
+'unblocklink' => 'одблокирај',
 'change-blocklink' => 'промени блокирање',
 'contribslink' => 'доприноси',
 'emaillink' => 'пошаљи е-поруку',
@@ -2832,7 +2832,7 @@ $1',
 'blocklogtext' => 'Ово је дневник блокирања и деблокирања корисника.
 Аутоматски блокиране ИП адресе нису наведене.
 Текуће забране и блокирања можете наћи [[Special:BlockList|овде]].',
-'unblocklogentry' => '{{GENDER:|Ñ\98е Ð´ÐµÐ±Ð»Ð¾ÐºÐ¸Ñ\80ао|Ñ\98е Ð´ÐµÐ±Ð»Ð¾ÐºÐ¸Ñ\80ала|Ñ\98е Ð´Ðµблокирао}} „$1“',
+'unblocklogentry' => '{{GENDER:|Ñ\98е Ð¾Ð´Ð±Ð»Ð¾ÐºÐ¸Ñ\80ао|Ñ\98е Ð¾Ð´Ð±Ð»Ð¾ÐºÐ¸Ñ\80ала|Ñ\98е Ð¾Ð´блокирао}} „$1“',
 'block-log-flags-anononly' => 'само анонимни корисници',
 'block-log-flags-nocreate' => 'онемогућено отварање налога',
 'block-log-flags-noautoblock' => 'аутоматско блокирање је онемогућено',
index 5e907c1..af585ca 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Latin script) (‪Srpski (latinica)‬)
+/** Serbian (Latin script) (‪srpski (latinica)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2648,7 +2648,7 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
 # Block/unblock
 'autoblockid' => 'Samoblokiranje #$1',
 'block' => 'Blokiraj korisnika',
-'unblock' => 'Deblokiraj korisnika',
+'unblock' => 'Odblokiraj korisnika',
 'blockip' => 'Blokiraj korisnika',
 'blockip-title' => 'Blokiranje korisnika',
 'blockip-legend' => 'Blokiraj korisnika',
@@ -2669,7 +2669,7 @@ Izaberite konkretan razlog ispod (primer: navođenje konkretnih stranica koje su
 ** Neprihvatljivo korisničko ime',
 'ipb-hardblock' => 'Zabrani prijavljenim korisnicima da uređuju s ove IP adrese',
 'ipbcreateaccount' => 'Onemogući otvaranje naloga',
-'ipbemailban' => 'Zabrani članu slanje e-poruka',
+'ipbemailban' => 'Zabrani korisniku slanje e-poruka',
 'ipbenableautoblock' => 'Automatski blokiraj poslednju IP adresu ovog korisnika i sve daljnje adrese s kojih pokuša da uređuje',
 'ipbsubmit' => 'Blokiraj ovog korisnika',
 'ipbother' => 'Drugo vreme:',
@@ -2688,11 +2688,11 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'ipb-blockingself' => 'Ovom radnjom ćete blokirati sebe! Jeste li sigurni da to želite?',
 'ipb-confirmhideuser' => 'Upravo ćete blokirati korisnika s uključenom mogućnošću „sakrij korisnika“. Ovim će korisničko ime biti sakriveno u svim spiskovima i izveštajima. Želite li to da uradite?',
 'ipb-edit-dropdown' => 'Uredi razloge blokiranja',
-'ipb-unblock-addr' => 'Deblokiraj $1',
-'ipb-unblock' => 'Deblokiraj korisničko ime ili IP adresu',
+'ipb-unblock-addr' => 'Odblokiraj $1',
+'ipb-unblock' => 'Odblokiraj korisničko ime ili IP adresu',
 'ipb-blocklist' => 'Pogledaj postojeća blokiranja',
 'ipb-blocklist-contribs' => 'Doprinosi za $1',
-'unblockip' => 'Deblokiraj korisnika',
+'unblockip' => 'Odblokiraj korisnika',
 'unblockiptext' => 'Koristite obrazac ispod da biste vratili pravo pisanja blokiranoj IP adresi ili korisničkom imenu.',
 'ipusubmit' => 'Ukloni ovu blokadu',
 'unblocked' => '[[User:$1|$1]] je deblokiran',
@@ -2724,7 +2724,7 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'ipblocklist-empty' => 'Spisak blokiranja je prazan.',
 'ipblocklist-no-results' => 'Tražena IP adresa ili korisničko ime nije blokirano.',
 'blocklink' => 'blokiraj',
-'unblocklink' => 'deblokiraj',
+'unblocklink' => 'odblokiraj',
 'change-blocklink' => 'promeni blokiranje',
 'contribslink' => 'doprinosi',
 'emaillink' => 'pošalji e-poruku',
@@ -2740,7 +2740,7 @@ Istorija sakrivanja se nalazi ispod:',
 'blocklogtext' => 'Ovo je dnevnik blokiranja i deblokiranja korisnika.
 Automatski blokirane IP adrese nisu navedene.
 Tekuće zabrane i blokiranja možete naći [[Special:BlockList|ovde]].',
-'unblocklogentry' => '{{GENDER:|je deblokirao|je deblokirala|je deblokirao}} „$1“',
+'unblocklogentry' => '{{GENDER:|je odblokirao|je odblokirala|je odblokirao}} „$1“',
 'block-log-flags-anononly' => 'samo anonimni korisnici',
 'block-log-flags-nocreate' => 'onemogućeno otvaranje naloga',
 'block-log-flags-noautoblock' => 'automatsko blokiranje je onemogućeno',
index 12b6848..ca03e2a 100644 (file)
@@ -72,7 +72,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Uk bie litje Annerengen an do Sieden E-Mails seende.',
 'tog-enotifrevealaddr' => 'Dien E-Mail-Adrässe wäd in Beskeed-Mails wiesed.',
 'tog-shownumberswatching' => 'Antaal fon do beooboachtjende Benutsere anwiese',
-'tog-oldsig' => 'Foarbekiek fon ju aktuälle Signatuur:',
+'tog-oldsig' => 'Aktuälle Signatuur:',
 'tog-fancysig' => 'Unnerskrift as Wikitext behonnelje (sunner automatiske Ferlinkenge)',
 'tog-externaleditor' => 'Externen Editor as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide. [//www.mediawiki.org/wiki/Manual:External_editors Moor Information hiertou.])',
 'tog-externaldiff' => 'Extern Diff-Program as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide.
@@ -172,6 +172,7 @@ $messages = array(
 'listingcontinuesabbrev' => '(Foutsättenge)',
 'index-category' => 'Indizierde Sieden',
 'noindex-category' => 'Nit indizierde Sieden',
+'broken-file-category' => 'Sieden mäd stukkene Doatäilinke',
 
 'about' => 'Uur',
 'article' => 'Inhoold Siede',
@@ -201,7 +202,7 @@ $messages = array(
 'vector-action-move' => 'Ferskuuwe',
 'vector-action-protect' => 'Skutsje',
 'vector-action-undelete' => 'Wierhäärstaale',
-'vector-action-unprotect' => 'Fräireeke',
+'vector-action-unprotect' => 'Siedenskuts annerje',
 'vector-simplesearch-preference' => 'Uutwiedede Säikfoarsleeke aktivierje (bloot Vector)',
 'vector-view-create' => 'Moakje',
 'vector-view-edit' => 'Beoarbaidje',
@@ -238,8 +239,8 @@ $messages = array(
 'protect' => 'skutsje',
 'protect_change' => 'annerje',
 'protectthispage' => 'Siede skutsje',
-'unprotect' => 'Fräiroat',
-'unprotectthispage' => 'Skuts aphieuwje',
+'unprotect' => 'Siedenskuts annerje',
+'unprotectthispage' => 'Siedenskuts annerje',
 'newpage' => 'Näie Siede',
 'talkpage' => 'Diskussion',
 'talkpagelinktext' => 'Diskussion',
@@ -331,6 +332,8 @@ $1',
 'page-rss-feed' => '"$1" RSS-Feed',
 'page-atom-feed' => '"$1" Atom-Feed',
 'red-link-title' => '$1 (Siede nit deer)',
+'sort-descending' => 'Oustiegend sortierje',
+'sort-ascending' => 'Apstiegend sortierje',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Siede',
@@ -396,19 +399,22 @@ Mäld dit n [[Special:ListUsers/sysop|Administrator]] unner Naamenge fon ju URL.
 'badarticleerror' => 'Disse Honnelenge kon ap disse Siede nit moaked wäide.',
 'cannotdelete' => 'Ju Siede od Doatäi "$1" kon nit läsked wäide.
 Fielicht is ju al fon uurswál läsked wuuden.',
+'cannotdelete-title' => 'Siede "$1" kon nit läsked wäide',
 'badtitle' => 'Uungultige Tittel.',
 'badtitletext' => 'Die anfräigede Tittel waas uungultich, loos, of n uungultigen Sproaklink fon n uur Wiki.',
-'perfcached' => 'Do foulgjende Doaten stamme uut dän Cache un sunt muugelkerwiese nit aktuäl. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Disse Doaten stamme uut dän Cache, lääste Update: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'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',
 'actionthrottledtext' => 'Ju Uutfierenge fon disse Aktion tou oafte in ne kuute Tiedoustand is limitierd. Du hääst dit Limit juust ieuwen beloanged. Fersäik et in eenige Minuten fon näien.',
 'protectedpagetext' => 'Disse Siede is foar dät Beoarbaidjen speerd.',
 'viewsourcetext' => 'Wältext fon disse Siede:',
+'viewyourtext' => "Du koast dän Wältext fon '''dien Beoarbaidenge''' fon disse Siede bekiekje un kopierje:",
 'protectedinterface' => 'Disse Siede änthaalt Text foar dät Sproak-Interface fon ju Software un is speerd, uum Misbruuk tou ferhinnerjen.',
 'editinginterface' => "'''Woarskauenge:''' Du beoarbaidest ne Siede ju der bruukt wäd, Interface-Text foar ju Software tou lääwerjen.
 Annerengen ap disse Siede wirkje sik uut ap ju Benutseruurfläche foar uur Bruukere.
@@ -417,9 +423,18 @@ Foar Uursättengen koast du fielicht beeter [//translatewiki.net/wiki/Main_Page?
 'cascadeprotected' => 'Disse Siede is tou Beoarbaidenge speerd. Ju is in do {{PLURAL:$1|foulgjende Siede|foulgjende Sieden}} ienbuunen, do der middels ju Kaskadenspeeroption skutsed {{PLURAL:$1|is|sunt}}:
 $2',
 'namespaceprotected' => "Du hääst neen Begjuchtigenge, ju Siede in dän '''$1'''-Noomensruum tou beoarbaidjen.",
+'customcssprotected' => '↓Du hääst nit ju Begjuchtegenge, disse CSS änthooldende Siede tou beoarbaidjen, deer ju do persöönelke Ienstaalengen fon n uur Benutser änthaalt.',
+'customjsprotected' => '↓Du hääst nit ju Begjuchtegenge, disse JavaScript änthooldewnde Siede tou beoarbaidjen, deer ju do persöönelke Ienstaalengen fon n uur Benutser änthaalt.',
 'ns-specialprotected' => 'Spezioalsieden konnen nit beoarbaided wäide.',
 'titleprotected' => "Ne Siede mäd dissen Noome kon nit moaked wäide.
 Ju Speere wuude truch [[User:$1|$1]] mäd ju Begruundenge ''$2'' ienroat.",
+'filereadonlyerror' => '↓Ju Doatäi „$1“ kon nit annerd wäide, deer ap dät Doatäirepositorium „$2“ bloot Leesetougriep muugelk is.
+
+Die Administrator, die dän Skrieuwtougriep speerde, roate foulgjenden Gruund an: „$3“.',
+'invalidtitle-knownnamespace' => '
+↓Ungultigen Tittel mäd Noomensruum „$2“ un Text „$3“',
+'invalidtitle-unknownnamespace' => '
+↓Ungultigen Tittel mäd unbekoanden Noomensruumnummer $1 un Text „$2“',
 
 # Virus scanner
 'virus-badscanner' => "Failerhafte Konfiguration: uunbekoanden Virenscanner: ''$1''",
@@ -455,10 +470,12 @@ Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasje
 'createaccount' => 'Benutserkonto anlääse',
 'gotaccount' => "Du hääst al n Konto? '''$1'''.",
 'gotaccountlink' => 'Hier gungt dät ätter dän Login',
+'userlogin-resetlink' => '
+↓Do Anmäldedoaten ferjeeten?',
 'createaccountmail' => 'Uur Email',
 'createaccountreason' => 'Gruund:',
 'badretype' => 'Do bee Paaswoude stimme nit uureen.',
-'userexists' => 'Disse Benutsernoomen is al ferroat. Wääl jädden n uur.',
+'userexists' => 'Dissen Benutsernoome is al ferroat. Wääl jädden n uur.',
 'loginerror' => 'Failer bie ju Anmäldenge',
 'createaccounterror' => 'Benutserkonto kuud nit moaked wäide: $1',
 'nocookiesnew' => 'Dien Benutsertougong wuude kloor moaked, man du bäst nit anmälded. {{SITENAME}} benutset Cookies toun Anmäldjen fon do Benutsere. Du hääst in dien Browser-Ienstaalengen Cookies deaktivierd. Uum dien näie Benutsertougong tou bruuken, läit jädden dien Browser Cookies foar {{SITENAME}} annieme un mäldje die dan mäd dien juust iengjuchten Benutsernoome un Paaswoud an.',
@@ -502,6 +519,8 @@ Mail-Fersoand un Ämpfang foar do foulgjende Funktionen muugelk.',
 'noemailprefs' => 'Du hääst neen Email-Adrässe anroat, do foulgjende Funktione sunt deeruum apstuuns nit muugelk.',
 'emailconfirmlink' => 'Bestäätigje Jou Email-Adrässe',
 'invalidemailaddress' => 'Ju Email-Adresse wuude nit akzeptierd deeruum dät ju n ungultich Formoat tou hääben skient. Reek jädden ne Adrässe in n gultich Formoat ien of moakje dät Fäild loos.',
+'cannotchangeemail' => 'E-Mail-Adressen konnen in dissen Wiki nit annerd wäide.',
+'emaildisabled' => 'Uur disse Websiede konnen neen E-Mails fersoand wäode.',
 'accountcreated' => 'Benutserkonto näi anlaid',
 'accountcreatedtext' => 'Dät Benutserkonto $1 wuude iengjucht.',
 'createaccount-title' => 'Benutserkonto anlääse foar {{SITENAME}}',
@@ -517,6 +536,7 @@ Täif, eer du fon näien fersäkst.',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Uunbekoanden Failer mäd ju Funktion mail() fon PHP',
+'user-mail-no-addy' => 'Fersoachte ne E-Mail sunner Angoawe fon ne E-Mail-Adresse tou ferseenden',
 
 # Change password dialog
 'resetpass' => 'Paaswoud annerje',
@@ -537,7 +557,19 @@ Muugelkerwiese hääst du dien Paaswoud al mäd Ärfoulch annerd of n näi tiede
 
 # Special:PasswordReset
 'passwordreset' => 'Paaswoud touräächsätte',
+'passwordreset-text' => 'Dit Formular uutfälle, uum per E-Mail ne Ärinnerenge tou do Anmäldeinformatione tou kriegen.',
+'passwordreset-legend' => 'Paaswoud touräächsätte',
+'passwordreset-disabled' => 'Dät Touräächsätten fon Paaswoude wuud in dissen Wiki deaktivierd.',
+'passwordreset-pretext' => '{{PLURAL:$1||Reek aan fon do foulgjende Doaten ien}}',
 'passwordreset-username' => 'Benutsernoome:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-capture' => 'Ju E-Mail-Ättergjucht bekiekje?',
+'passwordreset-capture-help' => 'Wan du disse Kaste ankjuusest, wäd ju E-Mail-Ättergjucht mäd dät temporäre Paaswoud, die wiesed, as uk dän Benutser tousoand.',
+'passwordreset-email' => 'E-Mail-Adresse:',
+'passwordreset-emailtitle' => 'Benutserkontoinformatione ap {{SITENAME}}',
+'passwordreset-emailelement' => '↓Benutsernoome: $1
+Temporär Paaswoud: $2',
+'passwordreset-emailsent' => '↓Ne Ärinnerenge wuud uur E-Mail fersoand.',
 
 # Edit page toolbar
 'bold_sample' => 'Fatten Text',
@@ -640,8 +672,12 @@ of <span class="plainlinks">in do touheerige [{{fullurl:{{#special:Log}}|page={{
 'userpage-userdoesnotexist-view' => 'Benutserkonto „$1“ bestoant nit.',
 'blocked-notice-logextract' => 'Dissen Benutser is apstuuns speerd.
 Foar Information foulget n aktuellen Iendraach uut dät Benutser-Logbouk:',
-'clearyourcache' => "'''Bemäärkenge: Ätter dät Fäästlääsen kon dät nöödich weese, dän Browser-Cache loostoumoakjen, uum do Annerengen sjo tou konnen.'''
-'''Mozilla / Firefox / Safari:''' hoold ''Shift'' deel un klik ''Reload,'' of tai ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' ap n Mac); '''Konqueror: '''klik ''Reload'' of tai ''F5;'' '''Opera:''' moak dän cache loos in ''Tools → Preferences;'' '''Internet Explorer:''' hoold ''Ctrl'' deel un klik ''Refresh,'' of tai ''Ctrl-F5.''",
+'clearyourcache' => "'''Bemäärkenge: Ätter dät Fäästlääsen  dän Browser-Cache loosmoakje, uum do Annerengen sjo tou konnen.'''
+*'''Firefox / Safari:''' hoold ''Uumskalttaste'' deel un klik deerbie ''Aktualisierje'' of tai ''Strg+F5'' of ''Strg+R'' (''⌘+R'' ap n Mac)
+* '''Google Chrome:''' ''Uumskalttaste+Strg+R'' (''⌘+Uumskalttaste+R'' ap n Mac) taie
+* '''Internet Explorer:''' ''Strg+F5'' taie of ''Strg'' taie un tou glieke Tied ''Aktualisieren'' anklikke
+* '''Opera:''' ''Extras → Internetspuuren läskje … → Individuelle Uutwoal → Dän komplette Cache läskje''
+*'''Konqueror: '''klik ''Aktualisieren'' of tai ''F5;''",
 'usercssyoucanpreview' => "'''Tipp:''' Benutse dän  „{{int:showpreview}}“-Knoop, uum dien näi CSS foar dät Spiekerjen tou tästjen.",
 'userjsyoucanpreview' => "'''Tipp:''' Benutse dän „{{int:showpreview}}“-Knoop, uum dien näi JavaScript foar dät Spiekerjen tou tästjen.",
 'usercsspreview' => "== Foarbekiek fon dien Benutser-CSS ==
@@ -655,7 +691,8 @@ Foar Information foulget n aktuellen Iendraach uut dät Benutser-Logbouk:',
 'userinvalidcssjstitle' => "'''Woarskauenge:''' Deer existiert neen Skin \"\$1\". Betoank jädden, dät benutserspezifiske .css- un .js-Sieden män n Littek-Bouksteeuwe anfange mouten, also t.B. ''{{ns:user}}:Mustermann/vector.css'', nit ''{{ns:user}}:Mustermann/Vector.css''.",
 'updated' => '(Annerd)',
 'note' => "'''Waiwiesenge:'''",
-'previewnote' => "'''Dit is man ne Foarbekiek, die Artikkel wuude noch nit spiekerd!'''",
+'previewnote' => "'''Dit is man ne Foarbekiek, ju Siede wuude noch nit spiekerd!'''",
+'continue-editing' => 'Fääre beoarbaidje',
 'previewconflict' => 'Disse Foarskau rakt dän Inhoold fon dät buppere Täkstfäild wier; so wol die Artikkel uutsjo, wan du nu spiekerjen dääst.',
 'session_fail_preview' => "Dien Beoarbaidenge kuud nit spiekerd wäide, deer dien Sitsengsdoaten ferlädden geen sunt.
 Fersäik dät jädden fonnäien, deertruch dät du unner ju foulgjende Foarskau nochmoal ap \"Siede spiekerje\" klikst.
@@ -669,6 +706,7 @@ Skuul dät Problem bestounden blieuwe, [[Special:UserLogout|mäldje die ou]] un
 Ne Spiekerenge kon dän Siedeninhoold fernäile. Dit geböärt bietiede truch ju Benutsenge fon n anonymen Proxy-Tjoonst, die der failerhaft oarbaidet.'''",
 'edit_form_incomplete' => "'''Die Inhoold fon dät Beoarbaidengsformular häd dän Server nit fulboodich beloanged. Pröif dien Beoarbaidengen ap Fulständegaid un fersäik dät noch insen.",
 'editing' => 'Beoarbaidjen fon $1',
+'creating' => 'Moakjen fon „$1“',
 'editingsection' => 'Beoarbaidje fon $1 (Apsats)',
 'editingcomment' => 'Beoarbaidjen fon $1 (Näi Stuk)',
 'editconflict' => 'Beoarbaidengs-Konflikt: "$1"',
@@ -688,7 +726,7 @@ Du toukwäst uus hiermäd, dät du dän Text '''sälwen ferfoated''' hääst, d
 'copyrightwarning2' => 'Aal Biedraage tou dän {{SITENAME}} konnen fon uur Ljuude ferannerd un fersprat wäide. Fals Jie nit moaten dät Jou Oarbaid hier fon uur Ljuude ferannerd un fersprat wäd, dan drukke Jie nit ap "Spiekerje".
 
 Jie fersicherje hiermäd uk, dät Jie dän Biedraach sälwen ferfoated hääbe blw. dät hie neen froamd Gjucht ferlätset (sjuch fääre: $1).',
-'longpageerror' => "'''FAILER: Die Text, dän du tou spiekerjen fersäkst, is $1 KB groot. Dät is gratter as dät ferlööwede Maximum fon $2 KB – Spiekerenge nit muugelk.'''",
+'longpageerror' => "'''FAILER: Die Text, dän du tou spiekerjen fersäkst, is {{PLURAL:$1|een Kilobyte|$1 Kilobyte}} groot. Dät is gratter as dät ferlööwede Maximum fon $2 KB – Spiekerenge nit muugelk.'''",
 'readonlywarning' => "'''WOARSKAUENGE: Ju Doatenboank wuude foar Wartengsoarbaiden speerd, so dät dien Annerengen apstuuns nit spiekerd wäide konnen.
 Sicherje dän Text jädden lokoal ap dien Computer un fersäik tou n leeteren Tiedpunkt, do Annerengen tou uurdreegen.'''
 
@@ -724,6 +762,7 @@ Ju wuud anskienend läsked.',
 'edit-conflict' => 'Beoarbaidengskonflikt.',
 'edit-no-change' => 'Dien Beoarbaidenge wuude ignorierd, deer neen Annerenge an dän Text foarnuumen wuude.',
 'edit-already-exists' => 'Ju näie Siede kuud nit moaked wäide, deer ju al foarhounden is.',
+'defaultmessagetext' => 'Standardtext',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Woarskauenge: Disse Siede änthaalt tou fuul Aproupe fon stuure Parserfunktione.
@@ -737,6 +776,11 @@ Der {{PLURAL:$2|duur nit moor as 1 Aproup|duuren nit moor as $1 Aproupe}} weese.
 'parser-template-loop-warning' => 'Foarloagenstrik äntdäkt: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Foarloagenrekursionsdjuptenskeed uurtreeden ($1)',
 'language-converter-depth-warning' => 'Sproakkonverter-djüptelimit uurtreeden ($1)',
+'node-count-exceeded-category' => 'Sieden, do ju Knättenantaal uurtreeden hääbe',
+'node-count-exceeded-warning' => 'Ju Siede häd ju Knättepunktantaal uurtreeden.',
+'expansion-depth-exceeded-category' => 'Sieden, do der ju Expansionsdjupte uurtreeden hääbe',
+'expansion-depth-exceeded-warning' => 'Ju Siede häd ju Expansionsdjupte uurtreeden.',
+'parser-unstrip-loop-warning' => 'Sirkelbesuch fääststoald',
 
 # "Undo" feature
 'undo-success' => 'Ju Annerenge kuud mäd Ärfoulch tourääch annerd wäide. Jädden ju Beoarbaidenge in ju Ferglieksansicht kontrollierje un dan ap „Siede spiekerje“ klikke, uum ju tou spiekerjen.',
@@ -790,28 +834,30 @@ Legende: (Aktuäl) = Unnerskeed tou ju aktuälle Version,
 Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
 'rev-deleted-text-unhide' => "Disse Version wuud '''läsked'''.
 Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
-As Administrator koast du noch [$1 ju Version bekiekje], wan du fääregunge moatest.",
+Du koast [$1 ju Version bekiekje], wan du fääregunge moatest.",
 'rev-suppressed-text-unhide' => "Disse Version wuud '''unnerdrukt'''.
 Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
-Du as Administrator koast [$1 disse Version bekiekje], wan du et wonskest.",
+Du koast [$1 disse Version bekiekje], wan du moatest.",
 'rev-deleted-text-view' => "Disse Version wuude '''läsked'''.
-As Administrator koast du ju wieders ienkiekje.
-Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+Du koast ju ienkiekje, wan du moatest.
+Naiere Angoawen fiende sik in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
 'rev-suppressed-text-view' => "Disse Version wuud '''unnerdrukt'''.
-Administratore konnen ju ienkiekje; Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+Du koast ju ienkiekje, wan du moatest. 
+Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
 'rev-deleted-no-diff' => "Du koast dissen Unnerskeed nit betrachtje, deer een fon do Versione '''läsked''' wuude.
 Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
 'rev-suppressed-no-diff' => "Du koast dissen Versionsunnerskeed nit betrachtje, deer een fon do Versione '''läsked''' wuud.",
 'rev-deleted-unhide-diff' => "Een fon do Versione fon dissen Unnerskeed wuud '''läsked'''.
 Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
-As Adminstrator koast du noch [$1 dissen Versionsunnerskeed bekiekje] wan du fääregunge wolt.",
+Du koast [$1 dissen Versionsunnerskeed bekiekje] wan du moatest.",
 'rev-suppressed-unhide-diff' => "Een fon do Versione fon dissen Unnerskeed wuud '''unnerdrukt'''.
 Details stounde in dät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
-As Adminstrator koast du noch [$1 dissen Versionsunnerskeed bekiekje] wan du fääregunge wolt.",
-'rev-deleted-diff-view' => "Ne Version fon dissen Versionsunnerskeed wuud '''läsked'''.
-As Administrator koast du dissen Versionsunnerskeed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+Du koast [$1 dissen Versionsunnerskeed bekiekje] wan du wolt.",
+'rev-deleted-diff-view' => "Een fon do Versione fon dissen Versionsunnerskeed wuud '''läsked'''.
+Du koast dissen Versionsunnerskeed bekiekje, wan du wolt. 
+Naiere Angoawen fiende sik in dät [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
 'rev-suppressed-diff-view' => "Een fon do Versione fon dissen Versionsunnerskeed wuud '''unnerdrukt'''.
-As Administrator koast du dissen Versionsunnerskeed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+Du koast dissen Versionsunnerskeed bekiekje, wan du wolt. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
 'rev-delundel' => 'wiese/ferbierge',
 'rev-showdeleted' => 'wies',
 'revisiondelete' => 'Versione läskje/wier häärstaale',
@@ -879,7 +925,8 @@ Wröigje do Logbouke.',
 
 # Suppression log
 'suppressionlog' => 'Uursicht-Logbouk',
-'suppressionlogtext' => 'Dit is dät Logbouk fon do Uursicht-Aktione (Annerengen fon ju Sichtboarhaid fon Versione, Beorbaidengskommentare, Benutsernoomen un Benutserspeeren).',
+'suppressionlogtext' => 'Dit is dät Logbouk fon do Uursicht-Aktione (Annerengen fon ju Sichtboarhaid fon Versione, Beorbaidengskommentare, Benutsernoomen un Benutserspeeren).
+Sjuch ju [[Special:BlockList|Lieste fon speerde IP-Adressen un Benutsernoomen]] foar aktuelle Speeren.',
 
 # History merging
 'mergehistory' => 'Versionsgeskichten fereenigje',
@@ -991,6 +1038,7 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'qbsettings-fixedright' => 'Gjuchts, fääst',
 'qbsettings-floatingleft' => 'Links, swieuwjend',
 'qbsettings-floatingright' => 'Gjuchts, swieuwjend',
+'qbsettings-directionality' => 'Fääst, ouhongich fon de Skrieuwgjuchte fon ju wäälde Sproake',
 
 # Preferences page
 'preferences' => 'Ienstaalengen',
@@ -1002,7 +1050,9 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Foarskau',
 'datedefault' => 'Neen Preferenz',
+'prefs-beta' => 'Beta-Funktione',
 'prefs-datetime' => 'Doatum un Tied',
+'prefs-labs' => 'Alpha-Funktione',
 'prefs-personal' => 'Benutserdoaten',
 'prefs-rc' => 'Bekoandreekenge fon "Lääste Annerengen"',
 'prefs-watchlist' => 'Beooboachtengslieste',
@@ -1036,7 +1086,7 @@ Hier n toufällich generierden Wäid, dän du ferweende koast: $1',
 'savedprefs' => 'Dien Ienstaalengen wuuden spiekerd.',
 'timezonelegend' => 'Tiedzone:',
 'localtime' => 'Tied bie Jou:',
-'timezoneuseserverdefault' => 'Standoardtied fon dän Server ($1)',
+'timezoneuseserverdefault' => 'Standoardtied fon dän Server bruuke ($1)',
 'timezoneuseoffset' => 'Uur (Unnerskeed anreeke)',
 'timezoneoffset' => 'Unnerskeed¹:',
 'servertime' => 'Tied ap dän Server:',
@@ -1071,7 +1121,8 @@ Dät kon nit moor tourääch troald wäide.',
 'prefs-registration' => 'Anmäldetiedpunkt:',
 'yourrealname' => 'Dien ächte Noome:',
 'yourlanguage' => 'Sproake fon ju Benutser-Uurfläche:',
-'yourvariant' => 'Variante:',
+'yourvariant' => 'Sproakevariante:',
+'prefs-help-variant' => 'Ju foarleekene Skrieuwwiese, in ju do Wikisieden wiesd wäide skällen.',
 'yournick' => 'Unnerskrift:',
 'prefs-help-signature' => 'Biedraage ap Diskussionssieden skuulen mäd „<nowiki>~~~~</nowiki>“ signierd wäide, wät dan in dien Signatuur mäd Tiedstämpel uumewondeld wäd.',
 'badsig' => 'Signatursyntax is uungultich; HTML uurpröiwje.',
@@ -1111,7 +1162,7 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'userrights-lookup-user' => 'Ferwaltede Gruppentouheeregaid',
 'userrights-user-editname' => 'Benutsernoome anreeke:',
 'editusergroup' => 'Beoarbaidede Benutsergjuchte',
-'editinguser' => "Uur Benutsergjuchte fon '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Uur Benutsergjuchte fon '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Beoarbaidje Gruppentouheeregaid fon dän Benutser',
 'saveusergroups' => 'Spiekerje Gruppentouheeregaid',
 'userrights-groupsmember' => 'Meeglid fon:',
@@ -1123,7 +1174,7 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'userrights-no-interwiki' => 'Du hääst neen Begjuchtigenge, do Benutsergjuchte in uur Wikis tou annerjen.',
 'userrights-nodatabase' => 'Ju Doatenboank $1 is nit deer of nit lokoal.',
 'userrights-nologin' => 'Du moast die mäd n Administrator-Benutserkonto [[Special:UserLogin|anmäldje]], uum Benutsergjuchte tou annerjen.',
-'userrights-notallowed' => 'Du hääst neen Begjuchtigenge, uum Benutsergjuchte tou reeken.',
+'userrights-notallowed' => 'Du hääst neen Begjuchtigenge, uum Benutsergjuchte tou reeken of ientouluuken.',
 'userrights-changeable-col' => 'Gruppentouheeregaid, ju du annerje koast',
 'userrights-unchangeable-col' => 'Gruppentouheeregaid, ju du nit annerje koast',
 
@@ -1137,12 +1188,12 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'group-suppress' => 'Uursichte',
 'group-all' => '(aal)',
 
-'group-user-member' => 'Benutser',
-'group-autoconfirmed-member' => 'Bestäätigede Benutser',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'Administrator',
-'group-bureaucrat-member' => 'Bürokrat',
-'group-suppress-member' => 'Uursicht',
+'group-user-member' => '{{GENDER:$1|Benutser|Benutserske}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|Automatisk bestäätigden Benutser|Automatisk bestäätigde Benutserske}}',
+'group-bot-member' => '{{GENDER:$1|Bot}}',
+'group-sysop-member' => '{{GENDER:$1|Administrator|Administratorske}}',
+'group-bureaucrat-member' => '{{GENDER:$1|Bürokroat|Bürokroatske}}',
+'group-suppress-member' => '{{GENDER:$1|Uursjooer|Uursjooerske}}',
 
 'grouppage-user' => '{{ns:project}}:Benutsere',
 'grouppage-autoconfirmed' => '{{ns:project}}:Bestäätigede Benutser',
@@ -1216,6 +1267,7 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'rightslog' => 'Gjuchte-Logbouk',
 'rightslogtext' => 'Dit is dät Logbouk fon do Annerengen fon do Benutsergjuchte.',
 'rightslogentry' => 'annerde ju Gruppentouheeregaid foar „$1“ fon „$2“ ap „$3“.',
+'rightslogentry-autopromote' => 'wuud automatisk fon „$2“ ätter „$3“ touoardend',
 'rightsnone' => '(-)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1257,7 +1309,7 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'nchanges' => '$1 {{PLURAL:$1|Annerenge|Annerengen}}',
 'recentchanges' => 'Lääste Annerengen',
 'recentchanges-legend' => 'Anwiesoptione',
-'recentchangestext' => "Ap disse Siede koast du do lääste Annerengen ap '''{{SITENAME}}''' ättergunge.",
+'recentchanges-summary' => "Ap disse Siede koast du do lääste Annerengen ap '''{{SITENAME}}''' ättergunge.",
 'recentchanges-feed-description' => 'Ferfoulge mäd dissen Feed do lääste Annerengen in {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Näie Siede',
 'recentchanges-label-minor' => 'Litje Annerenge',
@@ -1369,6 +1421,7 @@ Ferlööwed {{PLURAL:$3|is|sunt}} $2.",
 'large-file' => 'Jädden neen Bielde uur $1 hoochleede; disse Doatäi is $2 groot.',
 'largefileserver' => 'Disse Doatäi is tou groot, deer die Server so konfigurierd is, dät Doatäien bloot bit tou ne bestimde Grööte apzeptierd wäide.',
 'emptyfile' => 'Ju hoochleedene Doatäi is loos. Die Gruund kon n Typfailer in dän Doatäinoome weese. Kontrollierje jädden, of du ju Doatäi wuddelk hoochleede wolt.',
+'windows-nonascii-filename' => 'Dit Wiki unnerstöänt neen Doatäinoomen do der Sunnerteekene änthoolde.',
 'fileexists' => "Ne Doatäi mäd dissen Noome bestoant al.
 Wan du ap 'Doatäi spiekerje' klikst, wäd ju Doatäi uurskrieuwen.
 Unner '''<tt>[[:$1]]</tt>''' koast du die bewisje, of du dät wuddelk wolt.
@@ -1457,8 +1510,8 @@ Ju kon deeruum nit ap Sicherhaid wröiged wäide.',
 # img_auth script messages
 'img-auth-accessdenied' => 'Tougriep ferwäigerd',
 'img-auth-nopathinfo' => 'PATH_INFO failt.
-Dien Server is nit deerfoar iengjucht, disse Information fääretoureeken.
-Dät kuud CGI-basierd weese un unnerstutset img_auth nit.
+Die Server is nit deerfoar iengjucht, disse Information fääretoureeken.
+Ju kuud CGI-basierd weese un unnerstutset img_auth nit.
 Sjuch https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Dät wonskede Paad is nit in dät konfigurierde Uploadferteeknis.',
 'img-auth-badtitle' => 'Uut „$1“ kon naan gultigen Tittel moaked wäide.',
@@ -1471,6 +1524,7 @@ Bloot Doatäitougriep is ferlööwed.',
 Dit Wiki wuud as n eepentelk Wiki konfigurierd.
 Uut Sicherhaidsgruunde is img_auth.php deaktivierd.',
 'img-auth-noread' => 'Benutser häd neen Begjuchtigenge, „$1“ tou leesen.',
+'img-auth-bad-query-string' => 'Ju URL wiest ne uungultige Oufroageteekenfoulge ap.',
 
 # HTTP errors
 'http-invalid-url' => 'Uungultige URL:$1',
@@ -1496,7 +1550,8 @@ Uut Sicherhaidsgruunde is img_auth.php deaktivierd.',
 'upload_source_file' => ' (ne Doatäi ap Jou Computer)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Disse Spezialsiede liestet aal hoochleedene Doatäie ap. Standoardmäitich wäide do toulääst hoochleedene Doatäie toueerst anwiesd. Truch n Klik ap do Spaltenuurskrifte kon ju Sortierenge uumetroald wäide of der kon ätter ne uur Spalte sortierd wäide.',
+'listfiles-summary' => 'Disse Spezialsiede liestet aal hoochleedene Doatäie ap. 
+Sofier ätter n bestimden Benutser sieuwed wäd, wäide bloot do Doatäie wiesd, bie doo hie ju laäste Version hoochleeden häd.',
 'listfiles_search_for' => 'Säik ätter Doatäi:',
 'imgfile' => 'Doatäi',
 'listfiles' => 'Bieldelieste',
@@ -1525,13 +1580,14 @@ Uut Sicherhaidsgruunde is img_auth.php deaktivierd.',
 'filehist-filesize' => 'Doatäigrööte',
 'filehist-comment' => 'Kommentoar',
 'filehist-missing' => 'Doatäi failt',
-'imagelinks' => 'Doatäiferweendengen',
+'imagelinks' => 'Doatäiferweendenge',
 'linkstoimage' => '{{PLURAL:$1|Ju foulgjende Siede ferwoant|Do foulgjende $1 Sieden ferweende}} disse Doatäi:',
 'linkstoimage-more' => 'Moor as {{PLURAL:$1|een Siede ferlinket|$1 Sieden ferlinkje}} ap disse Doatäi.
 Ju foulgjende Lieste wiest bloot {{PLURAL:$1|dän eerste Link|do eerste $1 Linke}} ap disse Doatäi.
 Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
 'nolinkstoimage' => 'Naan Artikkel benutset disse Bielde.',
 'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Wiedere Ferbiendengen]] foar disse Doatäi.',
+'linkstoimage-redirect' => '$1 (Doatäifääreleedenge) $2',
 'duplicatesoffile' => '{{PLURAL:$1|Ju foulgjende Doatäi is n Duplikoat|Do foulgjende $1 Doatäie sunt Duplikoate}} fon disse Doatäi ([[Special:FileDuplicateSearch/$2|wiedere Details]]):',
 'sharedupload' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide.',
 'sharedupload-desc-there' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide. Sjuch ap ju [$2 Doatäibeskrieuwengssiede] ätter wiedere Informatione.',
@@ -1617,7 +1673,7 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
 'statistics-users-active-desc' => 'Benutsere mäd Beoarbaidengen {{PLURAL:$1|in do lääste 24 Uuren|in do fergeene $1 Deege}}',
 'statistics-mostpopular' => 'Maast besoachte Sieden',
 
-'disambiguations' => 'Begriepskläärengssieden',
+'disambiguations' => 'Sieden do der ap Begriepskläärengssieden ferlinkje',
 'disambiguationspage' => 'Template:Begriepskläärenge',
 'disambiguations-text' => "Do foulgjende Sieden ferlinkje ap ne Siede tou ju '''Begriepskläärenge'''.
 Jie skuulen insteede deerfon ap ju eegentelk meende Siede ferlinkje.<br />
@@ -1690,7 +1746,7 @@ Ne Siede wäd as Begriepskläärengssiede behonneld, wan [[MediaWiki:Disambiguat
 'listusers-editsonly' => 'Wies bloot Benutsere mäd Biedraage',
 'listusers-creationsort' => 'Ätter dän Moakdoatum sortierje',
 'usereditcount' => '$1 {{PLURAL:$1|Beoarbaidenge|Beoarbaidengen}}',
-'usercreated' => 'Moaked ap n $1 uum $2',
+'usercreated' => '{{GENDER:$3|Moaked}} ap n $1 uum $2 Uure',
 'newpages' => 'Näie Sieden',
 'newpages-username' => 'Benutsernoome:',
 'ancientpages' => 'Siet loang uunbeoarbaidede Sieden',
@@ -1717,8 +1773,8 @@ Deeruum konnen do hier noch aptäld weese, wan do uk aktiv benutsed wäide.',
 'booksources-invalid-isbn' => 'Fermoudelk is ju ISBN uungultich. Säik ätter Failere in ju Kopie.',
 
 # Special:Log
-'specialloguserlabel' => 'Benutser:',
-'speciallogtitlelabel' => 'Tittel:',
+'specialloguserlabel' => 'Uutfierenden Benutser:',
+'speciallogtitlelabel' => 'Siel (Tittel of Benutser):',
 'log' => 'Logbouke',
 'all-logs-page' => 'Aal eepentelke Logbouke',
 'alllogstext' => 'Dit is ne kombinierde Anwiesenge fon aal Logbouke fon {{SITENAME}}.
@@ -1762,7 +1818,7 @@ Sjuch uk ju Lieste fon do [[Special:WantedCategories|wonskede Kategorien]].',
 'linksearch-pat' => 'Säikmuster:',
 'linksearch-ns' => 'Noomensruum:',
 'linksearch-ok' => 'Säike (012)',
-'linksearch-text' => 'Disse Spezialsiede moaket ju Säike muugelke ätter Sieden, in do bestimde Webferbiendengen äntheelden sunt. Deerbie konne Wildcards as biespilswiese <tt>*.example.com</tt> benutsed wäide.<br />Unnerstutsede Protokolle: <tt>$1</tt>',
+'linksearch-text' => 'Disse Spezioalsiede moaket ju Säike muugelke ätter Sieden, in do bestimde Webferbiendengen äntheelden sunt. Deerbie konnen Ploatshooldere as biespilswiese <tt>*.biespiell.de</tt> benutsed wäide. Der mout ap minste een Top-Level-Domai, t.B. „*.org“. anroat wäide. <br />Unnerstutsede Protokolle: <tt>$1</tt> (Disse jädden nit bie ju Säikanfroage anreeke.)',
 'linksearch-line' => '$1 is ferlinked fon $2',
 'linksearch-error' => 'Wildcards konnen bloot an dän Ounfang fon ju URL ferwoand wäide.',
 
@@ -1819,6 +1875,10 @@ As Ouseender wäd ju E-Mail-Adresse uut dien [[Special:Preferences|Ienstaalengen
 'noemailtext' => 'Dissen Benutser häd neen gultige Email-Adrässe anroat.',
 'nowikiemailtitle' => 'E-Mail-Ferseendenge nit muugelk',
 'nowikiemailtext' => 'Dissen Benutser moate neen E-Mails fon uur Benutsere kriege.',
+'emailnotarget' => 'Nit foarhoundenen of uungultigen Benutsernoome foar dän Ämpfangst fon ne E-Mail.',
+'emailtarget' => 'Benutsernoome fon dän Ämpfanger ienreeke',
+'emailusername' => 'Benutsernoome:',
+'emailusernamesubmit' => 'Fääre',
 'email-legend' => 'E-Mail an n uur {{SITENAME}}-Benutser seende',
 'emailfrom' => 'Fon:',
 'emailto' => 'An:',
@@ -1843,11 +1903,13 @@ As Ouseender wäd ju E-Mail-Adresse uut dien [[Special:Preferences|Ienstaalengen
 'watchlistanontext' => 'Du moast die $1, uum dien Beooboachtengslieste tou sjoon of Iendraage ap hier tou beoarbaidjen.',
 'watchnologin' => 'Du bäst nit anmälded',
 'watchnologintext' => 'Du moast [[Special:UserLogin|anmälded]] weese, uum dien Beooboachtengslieste tou beoarbaidjen.',
+'addwatch' => 'Tou Beooboachtengslieste bietouföigje',
 'addedwatchtext' => "Die Artikkel \"[[:\$1]]\" wuude an dien [[Special:Watchlist|Foulgelieste]] touföiged.
 Leetere Annerengen an dissen Artikkel un ju touheerende Diskussionssiede wäide deer liested
 un die Artikkel wäd in ju [[Special:RecentChanges|fon do lääste Annerengen]] in '''Fatskrift''' anroat.
 
 Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede ap \"Ferjeet disse Siede\".",
+'removewatch' => 'Fon ju Beooboachtengslieste wächhoalje',
 'removedwatchtext' => 'Ju Siede „[[:$1]]“ wuude fon dien [[Special:Watchlist|Beooboachtengslieste]] wächhoald.',
 'watch' => 'Beooboachtje',
 'watchthispage' => 'Siede beooboachtje',
@@ -1870,6 +1932,7 @@ Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Beooboachtje …',
 'unwatching' => 'Nit beooboachtje …',
+'watcherrortext' => 'Bie dät Annerjen fon do Beoboachtengsliestenienstaalengen foar "$1" is n Failer aptreeden.',
 
 'enotif_mailer' => '{{SITENAME}} tält Beskeed uur Email',
 'enotif_reset' => 'Markier aal besoachte Sieden',
@@ -1899,6 +1962,9 @@ Dien früntelk {{SITENAME}} Becheedtälsystem
 
 --
 
+Uum do Ienstaaleungen fon dät E-Mail-Becheedtälsystem antoupaasjen, besäik 
+{{canonicalurl:{{#special:Preferences}}}}
+
 Uum do Ienstaalengen fon dien Beooboachtengslieste antoupaasjen, besäik
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
@@ -1957,8 +2023,8 @@ Ju lääste Annerenge stamt fon [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int
 
 # Protect
 'protectlogpage' => 'Siedenskuts-Logbouk',
-'protectlogtext' => 'Dit is ne Lieste fon do blokkierde Sieden.
-Sjuch [[Special:ProtectedPages|Skutsede Siede]] foar moor Informatione.',
+'protectlogtext' => 'Dit is dät Siedenskuts-Logbouk.
+Sjuch ju [[Special:ProtectedPages|Lieste fon skutsede Sieden]] foar aal apstuuns skutsede Sieden.',
 'protectedarticle' => 'skutsede „[[$1]]“',
 'modifiedarticleprotection' => 'annerde dän Skuts fon „[[$1]]“',
 'unprotectedarticle' => 'hieuwede dän Skuts fon "[[$1]]" ap',
@@ -2021,9 +2087,8 @@ Sjuch [[Special:ProtectedPages|Skutsede Siede]] foar moor Informatione.',
 'viewdeletedpage' => 'Läskede Versione anwiese',
 'undeletepagetext' => '{{PLURAL:$1|Ju foulgjende Siede wuud läsked un kon|Do foulgjende $1 Sieden wuuden läsked un konnen}} fon Administratore wier häärstoald wäide:',
 'undelete-fieldset-title' => 'Beoarbaidengen wier häärstaale',
-'undeleteextrahelp' => "Uum ju Siede gans mäd aal Versione wiertoumoakjen, wääl neen Versione uut, reek ne Begruundenge an un klik ap '''''Wier moakje'''''.
-* Moatest du bloot bestimde Versione wier moakje, so wääl do jädden eenpeld anhound fon do Markierengen uut, reek ne Begruundenge an un klik dan ap '''''Wier moakje'''''.
-* '''''Oubreeke''''' moaket dät Kommentoarfäild loos un hoalt aal Markierengen wäch bie do Versione.",
+'undeleteextrahelp' => '*Uum ju Siede gans mäd aal Versione wiertoumoakjen, wääl neen Versione uut, reek ne Begruundenge an un klik dan ap „{{int:undeletebtn}}“.
+* Moatest du bloot bestimde Versione wier moakje, so wääl do jädden eenpeld anhound fon do Markierengen uut, reek ne Begruundenge an un klik dan ap „{{int:undeletebtn}}“.',
 'undeleterevisions' => '{{PLURAL:$1|1 Version|$1 Versione}} archivierd',
 'undeletehistory' => 'Wan du disse Siede wier häärstoalst, wäide uk aal oolde Versione wier häärstoald. Wan siet ju Läskenge aan näien Artikkel mäd dän sälge Noome moaked wuude, wäide do wier häärstoalde Versione as oolde Versione fon dissen Artikkel ferskiene.',
 'undeleterevdel' => 'Dät wier Häärstaalen wäd nit truchfierd, wan deertruch ju aktuelste Version toun Deel läsked wäd.
@@ -2066,7 +2131,9 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Noomensruum:',
 'invert' => 'Uutwoal uumekiere',
+'tooltip-invert' => 'Dit Uutwoalfäild anklikje, uum Annerengen in dän wäälde Noomensruum un, sofier uutwääld, dän äntspreekende touheerige Noomensruum uustoubländjen',
 'namespace_association' => 'Touoardende Noomensruum',
+'tooltip-namespace_association' => 'Dit Uutwoalfäild anklikje, uum dän din Uutwoal touheerigen Diskussionsnoomenruum, of in dän uumekierde Fal, dän touheerige Noomensruum, mee ientoubeluuken',
 'blanknamespace' => '(Sieden)',
 
 # Contributions
@@ -2153,8 +2220,8 @@ Reek dän Gruund foar ju Speere oun.',
 'ipb-confirm' => 'Speerenge bestäätigje',
 'badipaddress' => 'Dissen Benutser bestoant nit, d.h. die Noome is falsk',
 'blockipsuccesssub' => 'Blokkoade geloangen',
-'blockipsuccesstext' => 'Ju IP-Adrässe [[Special:Contributions/$1|$1]] wuude blokkierd.
-<br />[[Special:BlockList|Lieste fon Blokkoaden]].',
+'blockipsuccesstext' => 'Die Benutser/ ju IP-Adrässe [[Special:Contributions/$1|$1]] wuud speerd.<br />
+Toun Aphieuwjen fon ju Speere sjuch [[Special:BlockList|Lieste fon aktive Speeren]].',
 'ipb-blockingself' => 'Du bäst tougong, die sälwen tou speeren! Moatest dät wuudelk dwo?',
 'ipb-confirmhideuser' => 'Du bäst tougong n Benutser in dän Modus "Benutser fersteete" tou speeren. Dät fiert deertou, dät die Benutsernoome in aal Liesten un Logbouke unnerdrukt wäd. Moatest dät wuudelk dwo?',
 'ipb-edit-dropdown' => 'Speergruunde beoarbaidje',
@@ -2203,9 +2270,9 @@ Reek dän Gruund foar ju Speere oun.',
 Hier foulget die Iendraach uut dät Unnerdrukkengs-Logbouk:',
 'blocklogentry' => '[[$1]] blokkierd foar n Tiedruum fon: $2 $3',
 'reblock-logentry' => 'annerde ju Speere foar „[[$1]]“ foar dän Tiedruum: $2 $3',
-'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere un IP-Adrässe. 
+'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere un IP-Adrässen
 Automatisk speerde IP-Adrässe sunt nit apnuumen.
-Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässe un Benutsernoomen]] foar aal aktive Speeren.',
+Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässen un Benutsernoomen]] foar aal aktive Speeren.',
 'unblocklogentry' => 'Blokkade fon $1 aphieuwed',
 'block-log-flags-anononly' => 'bloot Anonyme',
 'block-log-flags-nocreate' => 'Dät Moakjen fon Benutserkonten speerd',
@@ -2255,6 +2322,7 @@ Reek jädden [[Special:UnlockDB|ju Doatenboank wier fräi]], so gau ju Fersuurge
 'unlockdbsuccesstext' => 'Ju {{SITENAME}}-Doatenboank wuude fräiroat.',
 'lockfilenotwritable' => 'Ju Doatenboank-Speerdoatäi is nit beskrieuwboar. Toun Speeren of Fräireeken fon ju Doatenboank mout ju foar dän Webserver beskrieuwboar weese.',
 'databasenotlocked' => 'Ju Doatenboank is nit speerd.',
+'lockedbyandtime' => '(fon $1 an dän $2 uum $3 Uure)',
 
 # Move page
 'move-page' => 'Ferskuuwe „$1“',
@@ -2458,7 +2526,7 @@ Do ap dän lokoale Reekener spiekerje un deerätter hier hoochleede.',
 'tooltip-ca-viewsource' => 'Disse Siede is skutsed. Die Wältext kon ankieked wäide.',
 'tooltip-ca-history' => 'Fröiere Versione fon disse Siede',
 'tooltip-ca-protect' => 'Disse Siede skutsje',
-'tooltip-ca-unprotect' => 'Disse Siede fräireeke',
+'tooltip-ca-unprotect' => 'Siedenskuts annerje',
 'tooltip-ca-delete' => 'Disse Siede läskje',
 'tooltip-ca-undelete' => 'Iendraage wier moakje, eer disse Siede läsked wuude',
 'tooltip-ca-move' => 'Disse Siede ferskuuwe',
@@ -2539,6 +2607,19 @@ Do ap dän lokoale Reekener spiekerje un deerätter hier hoochleede.',
 'spam_reverting' => 'Lääste Version sunner Links tou $1 wier häärstoald.',
 'spam_blanking' => 'Aal Versione äntheelden Links tou $1, skeenmoaked.',
 
+# Info page
+'pageinfo-title' => 'Informatione tou „$1“',
+'pageinfo-header-edits' => 'Beoarbaidengen',
+'pageinfo-header-watchlist' => 'Beooboachtengslieste',
+'pageinfo-header-views' => 'Siedenaproupe',
+'pageinfo-subjectpage' => 'Siede',
+'pageinfo-talkpage' => 'Diskussionssiede',
+'pageinfo-watchers' => 'Antaal fon do Besäikere',
+'pageinfo-edits' => 'Antaal fon do  Beoarbaidengen',
+'pageinfo-authors' => 'Antaal fon unnerskeedelke Autoren',
+'pageinfo-views' => 'Antaal fon Siedenaproupe',
+'pageinfo-viewsperedit' => 'Siedenaproupe pro Beoarbaidenge',
+
 # Patrolling
 'markaspatrolleddiff' => 'As pröiwed markierje',
 'markaspatrolledtext' => 'Dissen Artikkel as pröiwed markierje',
@@ -2577,6 +2658,7 @@ $1',
 'widthheightpage' => '$1 × $2, {{PLURAL:$3|1 Siede|$3 Sieden}}',
 'file-info' => 'Doatäigrööte: $1, MIME-Typ: $2',
 'file-info-size' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Siede| Sieden}}',
 'file-nohires' => 'Neen haagere Aplöösenge foarhounden.',
 'svg-long-desc' => 'SVG-Doatäi, Basisgrööte: $1 × $2 Pixel, Doatäigrööte: $3',
 'show-big-image' => 'Bielde in hooge Aplöösenge',
@@ -2617,8 +2699,8 @@ Deerap foulgjende Siedenferbiendengen in jusälge Riege wäide as Uutnoamen betr
 Truch ätterdraine Beoarbaidenge fon ju Originoaldoatäi konnen eenige Details annerd wuuden weese.',
 'metadata-expand' => 'Wiedere Details ienbländje',
 'metadata-collapse' => 'Details uutbländje',
-'metadata-fields' => 'Do foulgjende Fäildere fon do EXIF-Metadoaten in disse Media Wiki-Ättergjucht wäide ap Bieldbeskrieuwengssieden anwiesd;
-wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
+'metadata-fields' => 'Do foulgjende Fäildere fon do EXIF-Metadoaten, do der in dissen Media Wiki-Systemtext anroat sunt, wäide ap Bieldbeskrieuwengssieden mäd ienklapte Metadoatentabelle anwiesd.
+Wiedere wäide standoardmäitich nit anwiesd.
 * make
 * model
 * fnumber
@@ -2667,8 +2749,8 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
 'exif-colorspace' => 'Faawenruum',
 'exif-componentsconfiguration' => 'Betjuudenge fon älke Komponente',
 'exif-compressedbitsperpixel' => 'Komprimierde Bits pro Pixel',
-'exif-pixelydimension' => 'Gultige Bieldebratte',
-'exif-pixelxdimension' => 'Gultige Bieldehöchte',
+'exif-pixelydimension' => 'Bieldebratte',
+'exif-pixelxdimension' => 'Bieldehöchte',
 'exif-usercomment' => 'Benutserkommentoare',
 'exif-relatedsoundfile' => 'Touheerige Toondoatäi',
 'exif-datetimeoriginal' => 'Ärfoatengstiedpunkt',
@@ -2682,9 +2764,9 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
 'exif-exposureprogram' => 'Beljuchtengsprogram',
 'exif-spectralsensitivity' => 'Beljoachtengstiedwäid',
 'exif-isospeedratings' => 'Film- of Sensorämpfiendelkaid (ISO)',
-'exif-shutterspeedvalue' => 'Beluchtengstiedwäid',
-'exif-aperturevalue' => 'Bländenwäid',
-'exif-brightnessvalue' => 'Ljoachtegaidswäid',
+'exif-shutterspeedvalue' => 'APEX-Beluchtengstiedwäid',
+'exif-aperturevalue' => 'APEX-Bländenwäid',
+'exif-brightnessvalue' => 'APEX-Ljoachtegaidswäid',
 'exif-exposurebiasvalue' => 'Beljuchtengsfoargoawe',
 'exif-maxaperturevalue' => 'Grootste Blände',
 'exif-subjectdistance' => 'Fierte',
@@ -2746,7 +2828,50 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
 'exif-gpsareainformation' => 'Noome fon dät GPS-Gestrich',
 'exif-gpsdatestamp' => 'GPS-Doatum',
 'exif-gpsdifferential' => 'GPS-Differentioalkorrektur',
+'exif-jpegfilecomment' => 'JPEG-Doatäikommentoar',
+'exif-keywords' => 'Koaiwoude',
+'exif-worldregioncreated' => 'Waareldregion in ju dät Foto apnuumen wuud',
+'exif-countrycreated' => 'Stoat in dän dät Foto apnuumen wuud',
+'exif-countrycodecreated' => 'Code foar dän Stoat in dän dät Foto apnuumen wuud',
+'exif-provinceorstatecreated' => 'Provinz of Glidstoat in dän dät Foto apnuumen wuud',
+'exif-citycreated' => 'Stääd in ju dät Foto aonuumen wuud',
+'exif-sublocationcreated' => 'Beräk fon de Stääd in dän dät Foto apnuumen wuud',
+'exif-worldregiondest' => 'Wiesde Waareldregione',
+'exif-countrydest' => 'Wiesden Stoat',
+'exif-countrycodedest' => 'Code foar dän wiesden Stoat',
+'exif-provinceorstatedest' => 'Wiesde Provinz of Glidstoat',
+'exif-citydest' => 'Wiesde Stääd',
+'exif-sublocationdest' => 'Beräk fon de wiesde Stääd',
 'exif-objectname' => 'Kuuten Tittel',
+'exif-specialinstructions' => 'Besunnere Anwiesengen',
+'exif-headline' => 'Tittel',
+'exif-credit' => 'Noomensnaamengte/Fereepentelker',
+'exif-source' => 'Wälle',
+'exif-editstatus' => 'Redaktionelle Stoatus fon dät Foto',
+'exif-urgency' => 'Tringelkhaid',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Deerstoalden Standoart',
+'exif-locationdestcode' => 'Code foar dän deerstoalde Standoart',
+'exif-objectcycle' => 'Tied fon dän Dai, foar ju dit Medium bestimd is',
+'exif-contact' => 'Kontaktinformatione',
+'exif-writer' => 'Ferfoater',
+'exif-languagecode' => 'Sproake',
+'exif-iimversion' => 'IM-Version',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Kategorien uurhoop',
+'exif-datetimeexpires' => 'Nit ferweende ätter',
+'exif-originaltransmissionref' => 'Code fon dän Standoart fon dän dät Foto tousoand wuud',
+'exif-identifier' => 'Kannenge',
+'exif-lens' => 'Ferwoand Objektiv',
+'exif-serialnumber' => 'Seriennummer fon ju Kamera',
+'exif-cameraownername' => 'Kamerabesitter',
+'exif-label' => 'Beteekenge',
+'exif-datetimemetadata' => 'Doatum tou dän do Metadoaten toulääst annerd wuuden',
+'exif-nickname' => 'Gebruukelke Noome fon dät Foto',
+'exif-rating' => 'Beweertenge (uut 5)',
+'exif-rightscertificate' => 'Gjuchteferwaltengszertifikoat',
+'exif-copyrighted' => 'Uurhieuwergjuchtstoatus',
+'exif-copyrightowner' => 'Uurhieuwergjuchtsienhääber',
 
 # EXIF attributes
 'exif-compression-1' => 'Uunkomprimierd',
@@ -2758,9 +2883,9 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
 'exif-orientation-3' => 'Uum 180° uumewoand',
 'exif-orientation-4' => 'Vertikoal uumewoand',
 'exif-orientation-5' => 'Juun dän Klokkenwiesersin uum 90° troald un vertikoal uumewoand',
-'exif-orientation-6' => 'Uum 90° in Klokkenwiesersin troald',
+'exif-orientation-6' => 'Uum 90° juun dän Klokkenwiesersin troald',
 'exif-orientation-7' => 'Uum 90° in Klokkenwiesersin troald un vertikoal uumewoand',
-'exif-orientation-8' => 'Uum 90° juun dän Klokkenwiesersin troald',
+'exif-orientation-8' => 'Uum 90° in dän Klokkenwiesersin troald',
 
 'exif-planarconfiguration-1' => 'Groafformoat',
 'exif-planarconfiguration-2' => 'Planoarformoat',
@@ -2828,6 +2953,8 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
 'exif-sensingmethod-7' => 'Trilinearen Sensor',
 'exif-sensingmethod-8' => 'Color sequential linear sensor',
 
+'exif-filesource-3' => 'Digitoale Standbieldekamera',
+
 'exif-scenetype-1' => 'Normoal',
 
 'exif-customrendered-0' => 'Standoard',
index 55de6c4..ff0b98d 100644 (file)
@@ -488,8 +488,8 @@ Sigana geus dihapus ku nu séjén.',
 'cannotdelete-title' => 'Hanteu bisa ngahapus kaca "$1"',
 'badtitle' => 'Judul goréng',
 'badtitletext' => 'Judul kaca nu dipénta teu bener, kosong, atawa judul antarbasa atawa antarwikina salah tutumbu.',
-'perfcached' => 'Data di handap ieu sindangan sahingga--meureun--teu mutahir. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Data di handap ieu mah sindangan, panungtungan diropéa téh $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'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',
@@ -780,7 +780,7 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
 'userinvalidcssjstitle' => "'''Awas''': kulit \"\$1\" mah teu aya. Sing émut yén kaca .css jeung .js mah migunakeun aksara leutik dina judulna, contona baé {{ns:user}}:Foo/vector.css lawan {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Geus diropéa)',
 'note' => "'''Catetan:'''",
-'previewnote' => "'''Inget yén ieu ukur pramidang, can disimpen!'''
+'previewnote' => "'''Inget yén ieu ukur pratayang, can disimpen.'''
 Éditan anjeun can disimpen!",
 'previewconflict' => 'Sawangan ieu mangrupa eunteung pikeun téks na rohangan ngédit sakumaha bakal katémbong mun ku anjeun disimpen.',
 'session_fail_preview' => "'''Punten! Kami teu bisa ngolah éditan anjeun alatan leungitna data rintakan. Mangga cobian deui. Mun tetep teu bisa, cobi kaluar log lajeng lebet deui.'''",
index 5a30a6a..9868b9b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Swedish (Svenska)
+/** Swedish (svenska)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -47,6 +47,7 @@
  * @author Thurs
  * @author Tobulos1
  * @author VickyC
+ * @author Warrakkk
  * @author Where next Columbus
  * @author Where next Columbus?
  * @author WikiPhoenix
@@ -705,6 +706,8 @@ Den uppgivna anledningen är "\'\'$2\'\'".',
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Dålig konfigurering: okänd virusskanner: ''$1''",
@@ -1088,6 +1091,8 @@ Dessa parametrar har uteslutits.',
 'node-count-exceeded-warning' => 'Sidan har överskridit antalet nodar',
 'expansion-depth-exceeded-category' => 'Sidor där expansionsdjupet överskrids',
 'expansion-depth-exceeded-warning' => 'Sidan överskrider expansionsdjupet',
+'parser-unstrip-loop-warning' => 'Tagavskalningsloop upptäcktes',
+'parser-unstrip-recursion-limit' => 'Tagavskalningsloop överskred rekursionsgränsen ($1)',
 
 # "Undo" feature
 'undo-success' => 'Redigeringen kan göras ogjord.
@@ -1365,6 +1370,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Datum och tid',
 'prefs-labs' => 'Testfunktioner',
+'prefs-user-pages' => 'Användarsidor',
 'prefs-personal' => 'Mitt konto',
 'prefs-rc' => 'Senaste ändringar',
 'prefs-watchlist' => 'Bevakningslista',
@@ -1400,7 +1406,7 @@ Här är ett slumpmässigt genererat värde som du kan använda: $1',
 'savedprefs' => 'Dina inställningar har sparats',
 'timezonelegend' => 'Tidszon:',
 'localtime' => 'Lokal tid:',
-'timezoneuseserverdefault' => 'Använd wiki standard ($1)',
+'timezoneuseserverdefault' => 'Använd wikins standard ($1)',
 'timezoneuseoffset' => 'Annan (specificera skillnad)',
 'timezoneoffset' => 'Skillnad¹:',
 'servertime' => 'Serverns tid:',
@@ -1834,13 +1840,14 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
 'backend-fail-closetemp' => 'Kunde inte stänga temporär fil.',
 'backend-fail-read' => 'Kunde inte läsa filen $1.',
 'backend-fail-create' => 'Kunde inte skapa filen $1.',
-'backend-fail-maxsize' => 'Kunde inte skapa filen $1, eftersom den är större än {{PLURAL:$2|$2|$2}} byte.',
+'backend-fail-maxsize' => 'Kunde inte skapa filen $1 eftersom den är större än {{PLURAL:$2|en byte|$2 bytes}}.',
 'backend-fail-readonly' => 'Lagringssystemet "$1" är för närvarande skrivskyddad. Den angivna anledningen är: "$2"',
 'backend-fail-synced' => 'Filen "$1" är i ett inkonsekvent tillstånd inom de interna lagringssystemen',
 'backend-fail-connect' => 'Kunde inte ansluta till lagringssystemet "$1".',
 'backend-fail-internal' => 'Ett okänt fel uppstod i lagringssystemet "$1".',
 'backend-fail-contenttype' => 'Kunde inte bestämma innehållstypen för filen att spara på "$1".',
 'backend-fail-batchsize' => 'Lagringssystemet gav en batch på $1 fil{{PLURAL:$1|operation|operationer}}; gränsen är $2 {{PLURAL:$2|operation|operationer}}.',
+'backend-fail-usable' => 'Kunde inte skriva filen $1 beroende på otillräckliga behörigheter eller saknade kataloger/containrar.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Kunde inte ansluta till journaldatabasen för lagringssystemet "$1".',
@@ -2159,6 +2166,7 @@ Lägg märke till att andra webbplatser kan länka till en fil med en direkt URL
 Du kan avgränsa sökningen och få färre träffar genom att ange typ av logg, användarnamn (skiftlägeskänsligt), eller berörd sida (också skiftlägeskänsligt).',
 'logempty' => 'Inga matchande träffar i loggen.',
 'log-title-wildcard' => 'Sök efter sidtitlar som börjar med texten',
+'showhideselectedlogentries' => 'Visa/Dölj markerade loggposter',
 
 # Special:AllPages
 'allpages' => 'Alla sidor',
@@ -3065,6 +3073,7 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'spambot_username' => 'MediaWikis spampatrull',
 'spam_reverting' => 'Återställer till den senaste versionen som inte innehåller länkar till $1',
 'spam_blanking' => 'Alla versioner innehöll en länk till $1, blankar',
+'spam_deleting' => 'Alla ändringar innehöll länkar till $1, raderar',
 
 # Info page
 'pageinfo-title' => 'Information om "$1"',
@@ -3981,4 +3990,6 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Kunde inte erhålla lås på servern $1 .',
 );
index 6b54e12..ac22a68 100644 (file)
@@ -15,6 +15,7 @@
  * @author Marcos
  * @author Muddyb Blast Producer
  * @author Robert Ullmann
+ * @author Stephenwanjau
  * @author לערי ריינהארט
  */
 
@@ -1004,7 +1005,7 @@ Haliwezi kufichwa.',
 # Suppression log
 'suppressionlog' => 'Kumbukumbu za kuficha',
 'suppressionlogtext' => 'Hapo chini panaonyeshwa orodha ya matukio ya ufutaji na ya uzuio ambayo maelezo yao yamefichwa kutoka kwa wakabidhi.
-Tazama [[Special:BlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
+Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
 
 # History merging
 'mergehistory' => 'Unganisha historia za kurasa',
@@ -1125,6 +1126,7 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'datedefault' => 'Chaguo-msingi',
 'prefs-beta' => 'Zana za Beta',
 'prefs-datetime' => 'Tarehe na saa',
+'prefs-user-pages' => 'Kurasa za watumiaji',
 'prefs-personal' => 'Kuhusu mtumiaji',
 'prefs-rc' => 'Mabadiliko ya karibuni',
 'prefs-watchlist' => 'Maangalizi',
@@ -1250,7 +1252,7 @@ Taarifa hii itakuwa wazi.',
 'userrights-no-interwiki' => 'Huna ruhusa ya kuhariri haki za mtumiaji kwenye wiki zingine.',
 'userrights-nodatabase' => 'Hakuna hifadhidata inayoitwa $1 au haimo katiko jumuia hii ya wiki.',
 'userrights-nologin' => 'Lazima [[Special:UserLogin|uingie ndani]] ya akaunti ya mkabidhi ili kupanga haki za mtumiaji.',
-'userrights-notallowed' => 'Akaunti yako haina ruhusa ya kupanga haki za mtumiaji.',
+'userrights-notallowed' => 'Akaunti yako haina ruhusa ya kuongeza au kutoa haki za mtumiaji.',
 'userrights-changeable-col' => 'Makundi unayoweza kuyabadilisha',
 'userrights-unchangeable-col' => 'Makundi usiyoweza kuyabadilisha',
 
@@ -1313,7 +1315,7 @@ Taarifa hii itakuwa wazi.',
 'right-hideuser' => 'Kuzuia jina la mtumiaji, lisionekane mbele ya kadamnasi',
 'right-protect' => 'Badilisha viwango vya ulinzi na hariri kurasa zilizolindwa',
 'right-editinterface' => 'Kuhariri kusano ya mtumiaji',
-'right-editusercssjs' => 'Kuhariri mafaili ya CSS na JavaScript ya watumiaji wengine',
+'right-editusercssjs' => 'Hariri mafaili ya CSS na Hatijava ya watumiaji wengine',
 'right-editusercss' => 'Hariri mafaili ya CSS ya watumiaji wengine',
 'right-edituserjs' => 'Hariri mafaili ya JavaScript ya watumiaji wengine',
 'right-import' => 'Kuleta kurasa kutoka kwa wiki zingine',
@@ -1369,7 +1371,7 @@ Taarifa hii itakuwa wazi.',
 'nchanges' => '{{PLURAL:$1|badiliko|mabadiliko}} $1',
 'recentchanges' => 'Mabadiliko ya karibuni',
 'recentchanges-legend' => "Machaguo ya 'mabadaliko ya karibuni'",
-'recentchangestext' => 'Orodha ya mabadilisho yaliyofanywa katika {{SITENAME}} siku zilizopita.',
+'recentchanges-summary' => 'Orodha ya mabadilisho yaliyofanywa katika {{SITENAME}} siku zilizopita.',
 'recentchanges-feed-description' => 'Tumia tawanyiko hili kufuatilia mabadiliko yote ya hivi karibuni katika Wiki.',
 'recentchanges-label-newpage' => 'Ukurasa mpya ulianzishwa hapo',
 'recentchanges-label-minor' => 'Hili ni badiliko dogo',
@@ -1554,10 +1556,10 @@ Tatizo likiendelea, uwasiliane na [[Special:ListUsers/sysop|mkabidhi]].',
 # ZipDirectoryReader
 'zip-file-open-error' => 'Ilitokea hitilafu wakati wa kufungua faili kwa ajili ya ukaguzi wa ZIP.',
 'zip-wrong-format' => 'Faili lililotajwa si faili la ZIP.',
-'zip-bad' => 'Faili ZIP hili limevurugika ama halisomeka.
-Haliwezi kugakuliwa ili kukinga usalama.',
-'zip-unsupported' => 'Faili ZIP hili linatumia bidhaa pepe ya ZIP zisizoeleweka na MediaWiki.
-Haliwezi kugakuliwa ili kukinga usalama.',
+'zip-bad' => 'Faili hili la ZIP limevurugika ama haliwezikusomeka.
+Haliwezi kukaguliwa vilivyo kwa sababu za kiusalama.',
+'zip-unsupported' => 'Faili hili la ZIP ambalo linatumia vipengele ambavyo haviungwi mkono na MediaWiki.
+Haliwezi kukaguliwa vilivyo kwa sababu za kiusalama.',
 
 # Special:UploadStash
 'uploadstash-refresh' => 'Zimua orodha ya mafaili',
@@ -1676,7 +1678,7 @@ Pengine ungependa kuhariri maelezo yaliyopo katika [$2 ukurasa wa maelezo ya fai
 ** Faili la nakili',
 'filedelete-edit-reasonlist' => 'Kuhariri orodha ya sababu za kufuta',
 'filedelete-maintenance' => 'Tovuti inarekebishwa. Kwa muda huo kufuta na kurudisha mafaili haiwezikani.',
-'filedelete-maintenance-title' => 'Faili hilifutiki',
+'filedelete-maintenance-title' => 'Faili halifutiki',
 
 # MIME search
 'mimesearch' => 'Utafutaji wa MIME',
@@ -1719,14 +1721,14 @@ Kumbuka kuhakikisha kwamba hakuna viungo vingine vinavyoelekea kigezo fulani kab
 'statistics-edits' => 'Kurasa zilizohaririwa tangu {{SITENAME}} ilivyoanzishwa',
 'statistics-edits-average' => 'Wastani wa uhariri kwa kurasa',
 'statistics-views-total' => 'Jumla ya mitazamaji',
-'statistics-views-total-desc' => 'Ziara za kurasa zisizopatikana na kurasa maalum hazihesabiwi',
+'statistics-views-total-desc' => 'Tazamo za kurasa zisizokuwepo na kurasa maalumu hazionikani.',
 'statistics-views-peredit' => 'Mitazamaji kwa haririo',
 'statistics-users' => '[[Special:ListUsers|Watumiaji]] waliojisajiri',
 'statistics-users-active' => 'Watumiaji wanaofanya kazi',
 'statistics-users-active-desc' => 'Watumiaji waliofanya kazi katika siku {{PLURAL:$1|iliyopita|$1 zilizopita}}',
 'statistics-mostpopular' => 'Kurasa zinazotazamwa sana',
 
-'disambiguations' => 'Kurasa za kuainisha maneno',
+'disambiguations' => 'Kurasa zinazoungana na kurasa za uanishaji',
 'disambiguationspage' => 'Template:Maana',
 'disambiguations-text' => "Kurasa zinazofuata zina viungo vinavyoelekea '''kurasa ya kutofautishana maana'''.
 Ni afadhali kiungo kiende makala inayostahili moja kwa moja.<br />
@@ -1736,8 +1738,8 @@ Kurasa za kutofautishana maana ni zile zinazotumia kigezo kinachoorodheshwa kati
 '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.',
 'double-redirect-fixed-move' => '[[$1]] umehamishwa.
-Sasa unaelekeza [[$2]].',
-'double-redirect-fixed-maintenance' => 'Elekezo maradufu inarekebishwa toka [[$1]] kwenda [[$2]].',
+Sasa unaelekeza kwa [[$2]].',
+'double-redirect-fixed-maintenance' => 'Elekezo maradufu inarekebishwa kutoka [[$1]] kwenda [[$2]].',
 'double-redirect-fixer' => 'Boti ya kurekebisha maelekezo',
 
 'brokenredirects' => 'Maelekezo yenye hitilafu',
@@ -1772,7 +1774,7 @@ Sasa unaelekeza [[$2]].',
 'popularpages' => 'Kurasa zinazopendelewa',
 'wantedcategories' => 'Jamii zinazotakiwa',
 'wantedpages' => 'Kurasa zinazotakiwa',
-'wantedpages-badtitle' => 'Lipo jina batili katika matokeo: $1',
+'wantedpages-badtitle' => 'Kichwa batili katika seti ya matokeo: $1',
 'wantedfiles' => 'Mafaili yanayokosekana',
 'wantedtemplates' => 'Vigezo vinavyotakiwa',
 'mostlinked' => 'Kurasa zinazoungwa kuliko zote',
@@ -1787,11 +1789,13 @@ Sasa unaelekeza [[$2]].',
 'deadendpages' => 'Kurasa ambazo haziungi na ukurasa mwingine wowote',
 'deadendpagestext' => 'Kurasa zifuatazo haziungana na kurasa zingine katika {{SITENAME}}.',
 'protectedpages' => 'Kurasa zinazolindwa',
-'protectedpages-indef' => 'Zinazolindwa kwa muda wote tu',
+'protectedpages-indef' => 'Ulinzi kwa muda usiojulikana tu',
 'protectedpages-cascade' => 'zinazokuwa na ulindaji kwa kurasa chini zake tu',
-'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala zisihaririwe',
+'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',
 'listusers-creationsort' => 'Panga kwa tarehe ya kuanzishwa',
@@ -1802,7 +1806,8 @@ Sasa unaelekeza [[$2]].',
 'ancientpages' => 'Kurasa za kale',
 'move' => 'Hamisha',
 'movethispage' => 'Hamisha ukurasa huu',
-'unusedcategoriestext' => 'Kurasa za jamii zifuatazo zinapatikana, ingawaje hakuna ukurasa wala jamii nyingine iliyowekwa ndani ya jamii hizi.',
+'unusedcategoriestext' => 'Kurasa za jamii zifuatazo zinapatikana, ingawaje hakuna ukurasa wala jamii nyingine inayotumia kurasa hizi.',
+'notargettitle' => 'Hakuna lengo',
 'pager-newer-n' => '{{PLURAL:$1|1 ya karibu zaidi|$1 ya karibu zaidi}}',
 'pager-older-n' => '{{PLURAL:$1|$1 ya zamani zaidi}}',
 
@@ -1861,7 +1866,8 @@ Tazama pia [[Special:WantedCategories|jamii zinazohitajika]].',
 'linksearch-ns' => 'Eneo la wiki:',
 'linksearch-ok' => 'Tafuta',
 'linksearch-text' => 'Alama maalum za kutafuta kama "*.wikipedia.org" zinaweza kutumika.<br />
-Itifaki zinazoungwa mkono: <tt>$1</tt>',
+Kikoa cha kiwango cha juu inahitajika, kwa mfano "*.org".<br />
+Itifaki zinazoungwa mkono: <tt>$1</tt> (usiongeza hizi unapotafuta).',
 'linksearch-line' => '$2 umeungwa kutoka $1',
 'linksearch-error' => 'Alama maalum za kutafuta zinaweza kutumika mwanzoni mwa URL tu.',
 
index 3c7fb48..7da09d3 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Silesian (Å\9alůnski)
+/** Silesian (Å\9blůnski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
 
 $fallback = 'pl';
 
+$namespaceNames = array(
+       NS_SPECIAL        => 'Szpecyjalna',
+       NS_TALK           => 'Dyskusyjo',
+       NS_USER           => 'Używacz',
+       NS_USER_TALK      => 'Dyskusyjo_używacza',
+       NS_PROJECT_TALK   => 'Dyskusyjo_$1',
+       NS_FILE           => 'Plik',
+       NS_FILE_TALK      => 'Dyskusyjo_plika',
+       NS_MEDIAWIKI      => 'MediaWiki',
+       NS_MEDIAWIKI_TALK => 'Dyskusyjo_MediaWiki',
+       NS_TEMPLATE       => 'Muster',
+       NS_TEMPLATE_TALK  => 'Dyskusyjo_mustra',
+       NS_HELP           => 'Půmoc',
+       NS_HELP_TALK      => 'Dyskusyjo_půmocy',
+       NS_CATEGORY       => 'Kategoryjo',
+       NS_CATEGORY_TALK  => 'Dyskusyjo_kategoryji',
+);
+
+$namespaceAliases = array(
+       // Aliases for Polish namespaces (bug 34988).
+       'Specjalna'            => NS_SPECIAL,
+       'Dyskusja'             => NS_TALK,
+       'Użytkownik'           => NS_USER,
+       'Dyskusja_użytkownika' => NS_USER_TALK,
+       'Dyskusja_$1'          => NS_PROJECT_TALK,
+       'Dyskusja_pliku'       => NS_FILE_TALK,
+       'Dyskusja_MediaWiki'   => NS_MEDIAWIKI_TALK,
+       'Szablon'              => NS_TEMPLATE,
+       'Dyskusja_szablonu'    => NS_TEMPLATE_TALK,
+       'Pomoc'                => NS_HELP,
+       'Dyskusja_pomocy'      => NS_HELP_TALK,
+       'Kategoria'            => NS_CATEGORY,
+       'Dyskusja_kategorii'   => NS_CATEGORY_TALK,
+);
+
+// Remove Polish gender aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Podsztrychńyńcy linkůw:',
@@ -373,19 +411,22 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'formerror' => 'Feler: ńy idźe wysuać formulařa',
 'badarticleerror' => 'Tyj uoperacyje ńy idźe zrobić lo tyj zajty.',
 'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
+'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
 'badtitle' => 'Felerno tytůua',
 'badtitletext' => 'Podano felerny titel zajty. Prawdopodańy sům w ńim znoki, kerych ńy wolno užywać we titlach abo je pusty.',
-'perfcached' => 'To co sam je naškryflane, to ino kopja s pamjyńći podrynčnyj a može ńy być aktualne. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'To co sam je naškryflane, to ino kopja s pamjyńći podrynčnyj a bůuo uaktualńůne $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} w 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 překozane do wfQuery()<br />
 Funkcyjo: $1<br />
 Zapytańy: $2',
 'viewsource' => 'Zdrzůdłowy tekst',
+'viewsource-title' => 'Uobocz zdrzůdło lo $1',
 'actionthrottled' => 'Akcyjo wstřimano',
 'actionthrottledtext' => 'Mechańizm uobrůny před spamym uograńičo ličba wykonań tyj čynnośći we jednostce času. Průbowoužeś go uocygańić. Proša, sprůbuj na nowo za pora minut.',
 'protectedpagetext' => 'Ta zajta je zawarto před sprowjańym.',
 'viewsourcetext' => 'We tekst zdřůduowy tyj zajty možno dali filować, idźe go tyž kopjować.',
+'viewyourtext' => 'We tekst zdrzůduowy tyj zajty możno dali filować, idźe go tyż kopjować.',
 'protectedinterface' => 'Na tyj zajće znojduje śe tekst interfejsu uoprogramowańo, bestož uůna je zawarto uod sprowjańo.',
 'editinginterface' => "''''Dej pozůr:''' Sprowjosz zajta, na keryj je tekst interfejsu uoprogramowańo. Pomjyńyńa na tyj zajće zmjyńům wyglůnd interfejsu lo inkšych užytkowńikůw.",
 'sqlhidden' => '(schowano zapytańy SQL)',
@@ -397,6 +438,10 @@ $2',
 'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we přestřyni mjan {{ns:special}}.',
 'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
 Powůd zawarćo: ''$2''.",
+'filereadonlyerror' => 'Ńy idźe pomjyńać plika "$1" abo repozytorjum "$2" terozki je zawarte.
+
+Administrator kery zawarł wćepał kůmyntorz: "$3".',
+'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
 
 # Virus scanner
 'virus-badscanner' => "Felerno konfiguracyjo – ńyznany skaner antywirusowy ''$1''",
@@ -412,7 +457,7 @@ Dej pozůr, co na ńykerych zajtach přeglůndarka može dali pokozywać co jež
 Uotwarli my sam lo Ćebje kůnto.
 Ńy zapomńij poštalować [[Special:Preferences|preferencyji lo {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
 'yourname' => 'Mjano użytkowńika:',
-'yourpassword' => 'Hasuo:',
+'yourpassword' => 'Hasło:',
 'yourpasswordagain' => 'Naszkryflej ausdruk zaś',
 'remembermypassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
 'securelogin-stick-https' => 'Po zalogowańy mjyj połonczenie bez HTTPS',
@@ -426,9 +471,9 @@ Uotwarli my sam lo Ćebje kůnto.
 'logout' => 'Wyloguj',
 'userlogout' => 'Uodloguj śe',
 'notloggedin' => 'Ńy ježeś zalůgowany',
-'nologin' => "Ńy moš kůnta? '''$1'''.",
+'nologin' => "Ńy mosz kůnta? '''$1'''.",
 'nologinlink' => 'Twůrz kůnto',
-'createaccount' => 'Zouůž nowe kůnto',
+'createaccount' => 'Twůrz nowe kůnto',
 'gotaccount' => "Mosz już kůnto? '''$1'''.",
 'gotaccountlink' => 'Naloguj śe',
 'userlogin-resetlink' => 'Zapomńoł żeś dane lo nalogowańo?',
@@ -449,13 +494,13 @@ Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
 'nosuchusershort' => 'Ńy mo sam užytkowńika uo mjańe "$1".',
 'nouserspecified' => 'Podej mjano użytkowńika.',
 'login-userblocked' => 'Tyn sprowjorz ma zawrzite sprowjyńa. Ńy możno sie zalgować.',
-'wrongpassword' => 'Hasuo kere žeś naškryflou je felerne. Poprůbůj naškryflać je ješče roz.',
+'wrongpassword' => 'Hasło kere żeś naszkryfloł je felerne. Poprůbůj naszkryflać je jeszcze roz.',
 'wrongpasswordempty' => 'Hasuo kere žeś podou je puste. Naškryflej je ješče roz.',
 'passwordtooshort' => 'Hasło kere żeś podoł je felerne abo za krůtke.
 Hasło muśi mjeć przinojmńij {{PLURAL:$1|1 buchsztaba|$1 buchsztabůw}} a być inksze od mjana użytkowńika.',
 'password-name-match' => 'Hasło musi być inne niż nazwa użytkownika.',
 'password-login-forbidden' => 'Ńy wolno mjyć takij nazwy a hasua.',
-'mailmypassword' => 'Wyślij mi nowe hasuo bez e-brif',
+'mailmypassword' => 'Wyślij mi nowe hasło bez e-brif',
 'passwordremindertitle' => 'Nowe tymčasowe hasuo dla {{SITENAME}}',
 'passwordremindertext' => 'Ftůś (cheba Ty, s IP $1)
 pado, aże chce nowe hasło do {{SITENAME}} ($4).
@@ -481,10 +526,11 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
 'emailconfirmlink' => 'Potwjerdź swůj adres e-brifa',
 'invalidemailaddress' => 'E-brif ńy bydźe zaakceptůwany skiž tygo co jego format ńy speuńo formalnych wymagań. Proša naškryflać poprowny adres e-brifa abo wyčyśćić pole.',
 'cannotchangeemail' => 'Ńy możno pomjyńyc ausdruku e-mail.',
+'emaildisabled' => 'Ta zajta ńy je mogebna posyłać e-brify.',
 'accountcreated' => 'Utwůřůno kůnto',
 'accountcreatedtext' => 'Kůnto lo $1 zostouo utwůřůne.',
 'createaccount-title' => 'Stwořyńy kůnta na {{GRAMMAR:MS.lp|{{SITENAME}}}}',
-'createaccount-text' => 'Ktoś utwořiu na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasuo to "$3". Powińežeś śe terozki zalogůwać a je zmjyńić.',
+'createaccount-text' => 'Ktoś utworził na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasło to "$3". Powińeżeś śe terozki zalogůwać a je zmjyńić.',
 'usernamehasherror' => 'Nazwa sprowjorza ńy może mjyć buchsztaby "#".',
 'login-throttled' => '!Wykonołżeś za wjela průb zalůgowańo śe na te kůnto. Poczekej chwila ńym zaś sprůbujesz.',
 'login-abort-generic' => 'Felerne logowańe',
@@ -499,9 +545,9 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
 'resetpass' => 'Zmjyń hasło',
 'resetpass_announce' => 'Zalůgowoužeś śe s tymčasowym kodym uotřimanym bez e-brif. Coby zakůńčyć proces logůwańo muśiš naštalować nowe hasuo:',
 'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
-'oldpassword' => 'Stare hasuo',
-'newpassword' => 'Nowe hasuo',
-'retypenew' => 'Naškryflej ješče roz nowe hasuo:',
+'oldpassword' => 'Stare hasło',
+'newpassword' => 'Nowe hasło',
+'retypenew' => 'Naszkryflej jeszcze roz nowe hasło:',
 'resetpass_submit' => 'Naštaluj hasuo a zalůguj',
 'resetpass_success' => 'Twoje hasuo zostouo půmyślńy pomjyńone! Trwo logůwańe...',
 'resetpass_forbidden' => 'Ńy idźe sam půmjyńyć hasuůw.',
@@ -627,8 +673,8 @@ Hasło można pomjyńyć [[Special:ChangePassword|tu]].',
 'newarticle' => '(Nowy)',
 'newarticletext' => 'Ńy mo sam jeszcze artikla uo takijj titli. Eli chcesz go sprowjać, naszkryflej niżyj jego tekst (wjyncy informacyj nojdźesz [[{{MediaWiki:Helppage}}|na zajće půmocy]]). Eli żeś chćoł zrobić cosik inksze, naćiś ino knefel "Nazod".',
 'anontalkpagetext' => "---- ''To je zajta godki lo anůnimowych używoczy  - takich, kerzi ńy majům jeszcze swojigo kůnta abo ńy chcům go terozki używać.
-By jeich idyntyfikować, używomy numerůw IP.
-Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin|utwůrz prosza kůnto]] abo [[Special:UserLogin|zalůguj śe]] - bez tůż uńikńesz potym podobnych ńyporozumjyń.''",
+By jejich idyntyfikować, używomy numerůw IP.
+Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin|utwůrz prosza kůnto]] abo [[Special:UserLogin|zalůguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
 'noarticletext' => 'Ńy můmy zajta uo takij titli. Mogesz [{{fullurl:{{FULLPAGENAME}}|action=edit}} wćepać artikel {{FULLPAGENAME}}] abo [[Special:Search/{{PAGENAME}}|sznupać {{PAGENAME}} we inkszych]].',
 'noarticletext-nopermission' => 'Na tyj zajće ńy mo jeszcze artikla.
 Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśći inkszych zajtůw
@@ -648,7 +694,8 @@ abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}
 'userinvalidcssjstitle' => "'''Pozůr:''' Ńy mo skůrki uo mjańe \"\$1\". Pamjyntej, aže zajty užytkowńika zawjyrajůnce CSS i JavaScript powinny začynać śe mouům buchštabům, np. {{ns:user}}:Foo/vector.css.",
 'updated' => '(Pomjyńano)',
 'note' => "'''Pozůr:'''",
-'previewnote' => "'''To je ino podglůnd - artikel ješče ńy je naškryflany!'''",
+'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
+'continue-editing' => 'Sprowjej dalej',
 'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu s pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecyduješ śe jům naškryflać.',
 'session_fail_preview' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe i zalogůj uod nowa.'''",
 'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
@@ -658,8 +705,9 @@ abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}
 '''Jeli to je prawiduowo průba sprowjańo, sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe a zalůguj na nowo.'''",
 'token_suffix_mismatch' => "'''Twoje sprowjyńy zostouo uodćepńynte skuli tego, co twůj klijynt pomjyšou znaki uod interpůnkcyji w žetůńe sprowjyń. Twoje sprowjyńy zostouo uodćepńynte coby zapobjec zńyščyńu tekstu zajty. Take průblymy zdořajům śe w roźe kůřistańo s felernych anůnimowych śećowych usuůg proxy.'''",
 'editing' => 'Sprowjosz $1',
+'creating' => 'Tworzyńy $1',
 'editingsection' => 'Sprowjosz $1 (sekcyjo)',
-'editingcomment' => 'Sprowjosz "$1" (kůmyntorz)',
+'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.
@@ -676,17 +724,20 @@ By wćepać swoje pomjyńańo muśiš pomjyńać tekst w polu na wjyrchu.
 'copyrightwarning2' => "Pamjyntej uo tym, aže couki wkuod do {{GRAMMAR:MS.lp|{{SITENAME}}}} može być sprowjany, pomjyńany abo wyćepany bez inkšych užytkownikůw. Jak ńy chceš, coby koždy můg go zmjyńać i dali rozpowšychńać bez uograničyń, ńy wćepuj go sam.<br />
 Škryflajůnc sam tukej pośwjadčoš tyž, co te pisańy je twoje wuasne, abo žeś go wźůn(a) s matyrjouůw kere sům na public domain, abo kůmpatybilne (kuknij tyž: $1).
 '''PROŠA ŃY WĆEPYWAĆ SAM MATYRJOUŮW KERE SŮM CHRŮŃONE PRAWYM AUTORSKIM BEZ DOZWOLEŃO WUAŚĆIĆELA!'''",
-'longpageerror' => "'''Feler: Tekst kery Å¾eÅ\9b sam wÄ\87epywou mo $1 kilobajtůw. Maksymalno dugoÅ\9bÄ\87 tekstu Å\84y može byÄ\87 wjynkÅ¡o kej $2 kilobajtůw. Twůj tekst Å\84y bydźe sam naÅ¡kryflany.'''",
+'longpageerror' => "'''Feler: Tekst kery Å¼eÅ\9b sam wÄ\87epywoÅ\82 mo $1 kilobajtůw. Maksymalno dugoÅ\9bÄ\87 tekstu Å\84y może byÄ\87 wjynkszo kej $2 kilobajtůw. Twůj tekst Å\84y bydźe sam naszkryflany.'''",
 'readonlywarning' => "'''Dej pozůr: Baza danych zostoua filowo zawarto skuli potřeb admińistracyjnych. Bestůž ńy do śe terozki naškryflać Twojich pomjyńań. Radzymy přećepać nowy tekst kajś do plika tekstowego (wytnij/wklej) a wćepać sam zaś po uodymkńyńću bazy.'''
 
 Admińistrator kery zawar baza dou take wyjaśńyńe: $1",
-'protectedpagewarning' => "'''Dej pozůr: Sprowjańe tyj zajty zostouo zawarte. Mogům jům sprowjać ino užytkowńicy s uprawńyńami admińistratora.'''",
-'semiprotectedpagewarning' => "'''Pozůr:''' Ta zajta zostoua zawarto a ino zaregišterowani užytkownicy mogům jům sprowjać.",
+'protectedpagewarning' => "'''Dej pozůr: Sprowjańe tyj zajty zostoło zawarte. Mogům jům sprowjać ino użytkowńicy s uprawńyńami admińistratora.'''
+Uostatńy wpis w rejerze je poniżej.",
+'semiprotectedpagewarning' => "'''Pozůr:''' Ta zajta zostoła zawarto a ino zaregiszterowani użytkownicy mogům jům sprowjać.
+Uostotńy wpis w rejerze je ńyżej.",
 'cascadeprotectedwarning' => "'''Dej pozůr:''' Ta zajta zostoua zawarto a ino užytkowńicy s uprawńyńami admińistratora mogům jům sprowjać. Zajta ta je podpjynto pod {{PLURAL:$1|nastympujůnco zajta, kero zostoua zawarto|nastympujůncych zajtach, kere zostouy zawarte}} ze zauůnčonům opcjům dźedźičyńo:",
-'titleprotectedwarning' => "'''DEJ POZŮR: Zajta uo tym titlu zostoua zawarto a ino ńykeři užytkowńicy mogům jům wćepać.'''",
+'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' => 'Šablůny užyte we tym podglůńdźe:',
-'templatesusedsection' => 'Šablůny užyte w tyj tajli:',
+'templatesusedpreview' => '{{PLURAL:$1|Szablon|Szablůny}} użyte na tyj zajće:',
+'templatesusedsection' => '{{PLURAL:$1|Szablon|Szablůny}} użyte w 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}}:',
@@ -694,6 +745,8 @@ Admińistrator kery zawar baza dou take wyjaśńyńe: $1",
 '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.',
+'sectioneditnotsupported-title' => 'Sprowjańy tajli ńymogebne',
+'sectioneditnotsupported-text' => 'Sprowjańy tajli ńymogebne na tyj zajće.',
 'permissionserrors' => 'Felerne uprowńyńa',
 'permissionserrorstext' => 'Ńy moš 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}}:',
@@ -711,6 +764,7 @@ Zdowo śe, co zostoua wyćepano.',
 'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
 'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
 Tako zajta juž sam je.',
+'defaultmessagetext' => 'Tekst důmyślny',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dužo uodwouań do funkcyji parsera, kere mocno uobćůnžajům systym.
@@ -778,9 +832,12 @@ Možeš tyž [[Special:Search|šnupać]] za tům zajtům.',
 Atoli kej admińistrator {{GRAMMAR:MS.lp|{{SITENAME}}}} možeš jům uobejřeć.
 Powody wyćepańo idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejeře wyćepań]',
 'rev-delundel' => 'ukoż/schrůń',
+'rev-showdeleted' => 'ukoż',
 'revisiondelete' => 'Wyćep/wćep nazod wersyje',
 'revdelete-nooldid-title' => 'Ńy wybrano wersyji',
 'revdelete-nooldid-text' => 'Ńy wybrano wersyji na kerych mo zostać wykůnano ta uoperacyjo.',
+'revdelete-no-file' => 'Ńy mo tygo plika.',
+'revdelete-show-file-confirm' => 'Jeżeś echt pewny co chcesz uobejzdrzeć wyćepano wersyjo plika „<nowiki>$1</nowiki>” s $2 $3?',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyja|Wybrane wersyje}} zajty [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdařyńy s rejeru|Wybrane zdařyńa s rejeru}}:'''",
@@ -829,7 +886,7 @@ $1',
 
 # Suppression log
 'suppressionlog' => 'Log schrůńyńć',
-'suppressionlogtext' => 'Půńiżyj je lista nojnowszych wyćepań i zawarć s uwzglyndńyńym treśći schrůńůnej lo admińistratorůw. Coby przřejrzeć lista aktualnych banůw i zawarć, uobezdrzij [[Special:BlockList|IP block list]].',
+'suppressionlogtext' => 'Půńiżyj je lista nojnowszych wyćepań a zawarć s uwzglyndńyńym treśći schrůńůnej lo admińistratorůw. Coby przejrzeć lista teroźnych banůw a zawarć, uobezdrzij [[Special:BlockList|IP block list]].',
 
 # History merging
 'mergehistory' => 'Pouůnč historyjo půmjyńań zajtůw',
@@ -860,7 +917,7 @@ $1',
 'mergelogpagetext' => 'Půńižej znojduje śe lista uostatńich pouůnčyń historyji půmjyńań zajtůw.',
 
 # Diffs
-'history-title' => 'Historyjo sprowjyń "$1"',
+'history-title' => 'Gyszichta sprowjyń "$1"',
 'difference-multipage' => '(Porůwnańje zajt)',
 'lineno' => 'Lińijo $1:',
 'compareselectedversions' => 'zrůwnej uobrane wersyje',
@@ -924,7 +981,7 @@ $1',
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
 'powersearch' => 'Sznupańy zaawansowane',
 'powersearch-legend' => 'Šnupańy zaawansowane',
-'powersearch-ns' => 'Šnupej we přestřyńach mjan:',
+'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
 'powersearch-redir' => 'Pokož překerowańa',
 'powersearch-field' => 'Šnupej',
 'powersearch-togglelabel' => 'Zaznocz:',
@@ -954,16 +1011,19 @@ $1',
 'prefs-beta' => 'Testowe funkcyje',
 'prefs-datetime' => 'Data a czas',
 'prefs-labs' => 'Funkcyje "labs"',
+'prefs-user-pages' => 'Zajty używaczy',
 'prefs-personal' => 'Dane užytkowńika',
 'prefs-rc' => 'Ńydowno pomjyńane',
 'prefs-watchlist' => 'Pozůrlista',
 'prefs-watchlist-days' => 'Ličba dńi widočnych na liśće artikli, na kere dowoš pozůr:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźień|dńi}}',
 'prefs-watchlist-edits' => 'Ličba půmjyńań pokazywanych we rozšyřůnyj liśće artiklůw, na kere dowoš pozůr:',
 'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
 'prefs-watchlist-token' => 'ID půzorlisty:',
 'prefs-misc' => 'Roztůmajte',
 'prefs-resetpass' => 'Zmjyń hasło',
+'prefs-changeemail' => 'Pomjyno ausdruka e-brif',
+'prefs-setemail' => 'Nastow e-brif',
 'prefs-email' => 'E-brif',
 'prefs-rendering' => 'Wyglůnd',
 'saveprefs' => 'Naškryflej',
@@ -1009,11 +1069,14 @@ $1',
 'username' => 'Mjano użytkowńika:',
 'uid' => 'ID užytkowńika:',
 'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
+'prefs-registration' => 'Czas twůrzyńa kůnta:',
 'yourrealname' => 'Prawdźiwe mjano',
 'yourlanguage' => 'Godka interfejsu',
 'yournick' => 'Twoja šrajba:',
 'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
-'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
+'badsiglength' => 'Twůj szrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
+'yourgender' => 'Płeć',
+'gender-unknown' => 'ńyznana',
 'gender-male' => 'chop',
 'gender-female' => 'baba',
 'email' => 'E-brif',
@@ -1166,7 +1229,7 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|pomjyńańe|pomjyńańa|pomjyńań}}',
 'recentchanges' => 'Ńydowno půmjyńane',
 'recentchanges-legend' => 'Uopcyje ńydowno půmjyńanych',
-'recentchangestext' => 'Ta zajta předstawjo historyjo uostatńich půmjyńań na tyj wiki',
+'recentchanges-summary' => 'Ta zajta předstawjo historyjo uostatńich půmjyńań na tyj wiki',
 'recentchanges-feed-description' => 'Dowej pozůr na půmjyńane na uostatku na tyj wiki.',
 'recentchanges-label-newpage' => 'Tym sprowjyńym stworzůno nowa zajta',
 'recentchanges-label-minor' => 'To je ńywjelge sprowjyńy',
index 03cec6d..5c6f837 100644 (file)
@@ -16,6 +16,7 @@
  * @author Mahir78
  * @author Mayooranathan
  * @author Naveen
+ * @author Planemad
  * @author Shanmugamp7
  * @author Sodabottle
  * @author Sundar
@@ -1632,7 +1633,7 @@ $1',
 'file-anchor-link' => 'கோப்பு',
 'filehist' => 'கோப்பு வரலாறு',
 'filehist-help' => 'குறித்த நேரத்தில் இருந்த படிமத்தைப் பார்க்க அந்நேரத்தின் மீது சொடுக்கவும்.',
-'filehist-deleteall' => 'சகலதையும் நீக்கு',
+'filehist-deleteall' => 'à®\9aà®\95லதà¯\8dதà¯\88யà¯\81à®®à¯\8d à®¨à¯\80à®\95à¯\8dà®\95à¯\81',
 'filehist-deleteone' => 'நீக்குக',
 'filehist-revert' => 'முன்நிலையாக்கு',
 'filehist-current' => 'தற்போதைய',
@@ -2077,7 +2078,7 @@ $NEWPAGE
 
 # Protect
 'protectlogpage' => 'காப்புப் பதிகை',
-'protectlogtext' => 'பின்வருவது பக்க திறப்புக்களதும் பூட்டுக்களதும் பட்டியலாகும். தற்போது நடைமுறையிலுள்ள காக்கப்பட்டப் பக்கங்களைக் காண [[Special:ProtectedPages|காக்கப்பட்ட பக்கங்களின் பட்டியலைப்]] பார்க்கவும்.',
+'protectlogtext' => '!!FUzZY!!பின்வருவது பக்க திறப்புக்களதும் பூட்டுக்களதும் பட்டியலாகும். தற்போது நடைமுறையிலுள்ள காக்கப்பட்டப் பக்கங்களைக் காண [[Special:ProtectedPages|காக்கப்பட்ட பக்கங்களின் பட்டியலைப்]] பார்க்கவும்.',
 'protectedarticle' => '"[[$1]]" காக்கப்பட்டது',
 'modifiedarticleprotection' => '"[[$1]]" பக்கத்திற்கான காப்பின் அளவு மாற்றப்பட்டது',
 'unprotectedarticle' => '"[[$1]]" பக்கத்தின் காப்பு நீக்கப்பட்டது',
index 9c73a79..eae871d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Chaduvari
+ * @author Jprmvnvijay5
  * @author Kaganer
  * @author Kiranmayee
  * @author Meno25
@@ -304,23 +305,23 @@ $messages = array(
 'vector-view-history' => 'చరిత్రని చూడండి',
 'vector-view-view' => 'చదువు',
 'vector-view-viewsource' => 'మూలాన్ని చూడండి',
-'actions' => 'à°\9aà°°à±\8dà°¯లు',
-'namespaces' => 'à°¨à±\87à°\82à°¸à±\8dà°ªà±\87à°¸ులు',
-'variants' => 'à°µà±\88విధà±\8dà°¯ాలు',
+'actions' => 'పనà±\81లు',
+'namespaces' => 'à°ªà±\87à°°à±\81బరులు',
+'variants' => 'à°°à°\95à°°à°\95ాలు',
 
 'errorpagetitle' => 'పొరపాటు',
 'returnto' => 'తిరిగి $1కి.',
 'tagline' => '{{SITENAME}} నుండి',
 'help' => 'సహాయం',
-'search' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£',
+'search' => 'à°µà±\86à°¤à±\81à°\95à±\81',
 'searchbutton' => 'వెతుకు',
 'go' => 'వెళ్లు',
 'searcharticle' => 'వెళ్లు',
 'history' => 'పేజీ చరిత్ర',
 'history_short' => 'చరిత్ర',
 'updatedmarker' => 'నేను కిందటిసారి వచ్చిన తరువాత జరిగిన మార్పులు',
-'printableversion' => 'à°®à±\81à°¦à±\8dà°°à°¿à°\82à°\9aà±\81à°\95à±\8bదగ్గ కూర్పు',
-'permalink' => 'శాశà±\8dవత à°²à°¿à°\82à°\95à±\81',
+'printableversion' => 'à°\85à°\9aà±\8dà°\9aà±\81à°¤à±\80à°¯దగ్గ కూర్పు',
+'permalink' => 'శాశà±\8dవత à°²à°\82à°\95à±\86',
 'print' => 'ముద్రించు',
 'view' => 'చూచుట',
 'edit' => 'సవరించు',
@@ -340,12 +341,12 @@ $messages = array(
 'talkpage' => 'ఈ పేజీని చర్చించండి',
 'talkpagelinktext' => 'చర్చ',
 'specialpage' => 'ప్రత్యేక పేజీ',
-'personaltools' => 'à°µà±\8dà°¯à°\95à±\8dతిà°\97à°¤ పనిముట్లు',
+'personaltools' => 'తన పనిముట్లు',
 'postcomment' => 'కొత్త విభాగం',
 'articlepage' => 'విషయపు పేజీని చూడండి',
 'talk' => 'చర్చ',
-'views' => 'à°ªà±\87à°\9cà±\80 à°²à°¿à°\82à°\95ులు',
-'toolbox' => 'పరిà°\95రాలపెట్టె',
+'views' => 'à°\9aà±\82à°ªులు',
+'toolbox' => 'పనిమà±\81à°\9fà±\8dà°² పెట్టె',
 'userpage' => 'వాడుకరి పేజీని చూడండి',
 'projectpage' => 'ప్రాజెక్టు పేజీని చూడు',
 'imagepage' => 'ఫైలు పేజీని చూడండి',
@@ -362,7 +363,7 @@ $messages = array(
 'protectedpage' => 'సంరక్షణలోని పేజీ',
 'jumpto' => 'ఇక్కడికి గెంతు:',
 'jumptonavigation' => 'పేజీకి సంబంధించిన లింకులు',
-'jumptosearch' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£',
+'jumptosearch' => 'à°µà±\86à°¤à±\81à°\95à±\81',
 'view-pool-error' => 'క్షమించండి, ప్రస్తుతం సర్వర్లన్నీ ఓవర్‌లోడ్ అయిఉన్నాయి.
 చాలామంది వాడుకరులు ఈ పేజీని చూస్తున్నారు.
 ఈ పేజీని వీక్షించడానికి కొద్దిసేపు నిరీక్షించండి.
@@ -377,15 +378,15 @@ $1',
 'aboutpage' => 'Project:గురించి',
 'copyright' => 'విషయ సంగ్రహం $1  కి లోబడి లభ్యం.',
 'copyrightpage' => '{{ns:project}}:ప్రచురణ హక్కులు',
-'currentevents' => 'వరà±\8dతమాన à°\98à°\9fà°¨లు',
-'currentevents-url' => 'Project:వరà±\8dతమాన à°\98à°\9fà°¨లు',
+'currentevents' => 'à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dలు',
+'currentevents-url' => 'Project:à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dలు',
 'disclaimers' => 'అస్వీకారములు',
 'disclaimerpage' => 'Project:సాధారణ నిష్పూచీ',
 'edithelp' => 'దిద్దుబాటు సహాయం',
 'edithelppage' => 'Help:దిద్దుబాట్లు ఎలా చెయ్యాలి',
 'helppage' => 'Help:సూచిక',
 'mainpage' => 'మొదటి పేజీ',
-'mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80',
+'mainpage-description' => 'తలపà±\81à°\9f',
 'policy-url' => 'Project:విధానం',
 'portal' => 'సముదాయ పందిరి',
 'portal-url' => 'Project:సముదాయ పందిరి',
@@ -511,8 +512,9 @@ $1',
 'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
 'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
 'actionthrottledtext' => 'స్పామును తగ్గించటానికి తీసుకున్న నిర్ణయాల వల్ల, మీరు ఈ కార్యాన్ని అతి తక్కువ సమయంలో బోలెడన్ని సార్లు చేయకుండా అడ్డుకుంటున్నాము. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
-'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80à°ªà±\88 à°¦à°¿à°¦à±\8dà°¦à±\81బాà°\9fà±\8dà°²à±\81 à°\9aà±\86à°¯à±\8dయనివà±\8dà°µà°\95à±\81à°\82à°¡à°¾ à°²à°¾à°\95à±\81 à°\9aà±\87సాà°\82.',
+'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à°¾à°°à±\8dà°\9aà°\95à±\81à°\82à°¡à°¾ à°\89à°\82à°¡à±\87à°\82à°¦à±\81à°\95à±\81 à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aారà±\81.',
 'viewsourcetext' => 'మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు:',
+'viewyourtext' => "ఈ పేజీకి '''మీ మార్పుల''' యొక్క మూలాన్ని చూడవచ్చు లేదా కాపీచేసుకోవచ్చు:",
 'protectedinterface' => 'సాఫ్టువేరు ఇంటరుఫేసుకు చెందిన టెక్స్టును ఈ పేజీ అందిస్తుంది. దుశ్చర్యల నివారణ కోసమై దీన్ని లాకు చేసాం.',
 'editinginterface' => "'''హెచ్చరిక''': సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించే పేజీని మీరు సరిదిద్దుతున్నారు.
 ఈ పేజీలో చేసే మార్పుల వల్ల ఇతర వాడుకరులకు ఇంటరుఫేసు కనబడే విధానంలో తేడావస్తుంది.
@@ -546,7 +548,7 @@ $2',
 'securelogin-stick-https' => 'ప్రవేశం తర్వాత కూడా HTTPSకి అనుసంధానమై ఉండు',
 'yourdomainname' => 'మీ డోమైను',
 'externaldberror' => 'డేటాబేసు అధీకరణలో పొరపాటు జరిగింది లేదా మీ బయటి ఖాతాని తాజాకరించడానికి మీకు అనుమతి లేదు.',
-'login' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aండి',
+'login' => 'à°²à±\8bనిà°\95à°¿ à°°ండి',
 'nav-login-createaccount' => 'లోనికి ప్రవేశించండి / ఖాతాని సృష్టించుకోండి',
 'loginprompt' => '{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.',
 'userlogin' => 'ప్రవేశించండి / ఖాతాను సృష్టించుకోండి',
@@ -677,6 +679,7 @@ $2
 'passwordreset-emailelement' => 'వాడుకరిపేరు: $1
 తాత్కాలిక సంకేతపదం: $2',
 'passwordreset-emailsent' => 'జ్ఞాపకం ఈమెయిలు పంపించాం.',
+'passwordreset-emailsent-capture' => 'క్రింద చూపబడిన, గుర్తుచేయు సందేశమును పంపినాము.',
 
 # Special:ChangeEmail
 'changeemail' => 'ఈ-మెయిలు చిరునామా మార్పు',
@@ -761,7 +764,7 @@ $2
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
+'loginreqlink' => 'à°²à±\8bనిà°\95à°¿ à°°à°\82à°¡ి',
 'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
@@ -810,6 +813,7 @@ $2
 'token_suffix_mismatch' => "'''మీ క్లయంటు, దిద్దుబాటు టోకెన్‌లోని వ్యాకరణ గుర్తులను గజిబిజి చేసింది కాబట్టి మీ దిద్దుబాటును తిరస్కరించాం. పేజీలోని పాఠ్యాన్ని చెడగొట్టకుండా ఉండేందుకు గాను, ఆ దిద్దుబాటును రద్దు చేశాం. వెబ్‌లో ఉండే లోపభూయిష్టమైన అజ్ఞాత ప్రాక్సీ సర్వీసులను వాడినపుడు ఒక్కోసారి ఇలా జరుగుతుంది.'''",
 'edit_form_incomplete' => '’’’ఈ ఎడిట్ ఫారంలోని కొన్ని భాగాలు సర్వరును చేరలేదు; మీ మార్పుచేర్పులు భద్రంగా ఉన్నాయని ధృవపరచుకుని, మళ్ళీ ప్రయత్నించండి.’’’',
 'editing' => '$1కి మార్పులు',
+'creating' => '$1 పేజీని సృష్టిస్తున్నారు',
 'editingsection' => '$1కు మార్పులు (విభాగం)',
 'editingcomment' => '$1 దిద్దుబాటు (కొత్త విభాగం)',
 'editconflict' => 'దిద్దుబాటు ఘర్షణ: $1',
@@ -1059,7 +1063,8 @@ $1",
 'mergelogpagetext' => 'ఒక పేజీ చరితాన్ని మరో పేజీ చరితం లోకి ఇటీవల చేసిన విలీనాల జాబితా ఇది.',
 
 # Diffs
-'history-title' => '"$1" కూర్పుల చరితం',
+'history-title' => '"$1" యొక్క కూర్పుల చరిత్ర',
+'difference-title' => '"$1" యొక్క తిరిగిచూపుల నడుమ తేడాలు',
 'difference-multipage' => '(పేజీల మధ్య తేడా)',
 'lineno' => 'పంక్తి $1:',
 'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
@@ -1069,7 +1074,7 @@ $1",
 'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 
 # Search results
-'searchresults' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£ ఫలితాలు',
+'searchresults' => 'à°µà±\86à°¦à±\81à°\95à±\81లాà°\9f ఫలితాలు',
 'searchresults-title' => '"$1"కి అన్వేషణ ఫలితాలు',
 'searchresulttext' => '{{SITENAME}}లో అన్వేషించే విషయమై మరింత సమాచారం కొరకు [[{{MediaWiki:Helppage}}|{{int:help}}]] చూడండి.',
 'searchsubtitle' => 'మీరు \'\'\'[[:$1]]\'\'\' కోసం వెతికారు ([[Special:Prefixindex/$1|"$1"తో మొదలయ్యే అన్ని పేజీలు]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"కి లింకు ఉన్న అన్ని పేజీలు]])',
@@ -1154,8 +1159,9 @@ $1",
 'prefs-beta' => 'బీటా సౌలభ్యాలు',
 'prefs-datetime' => 'తేదీ, సమయం',
 'prefs-labs' => 'ప్రయోగాత్మక సౌలభ్యాలు',
+'prefs-user-pages' => 'వాడుకరి పేజీలు',
 'prefs-personal' => 'వాడుకరి వివరాలు',
-'prefs-rc' => 'ఇటీవలి మార్పులు, మొలకలు',
+'prefs-rc' => 'ఇటీవలి మార్పులు',
 'prefs-watchlist' => 'వీక్షణ జాబితా',
 'prefs-watchlist-days' => 'వీక్షణ జాబితాలో చూపించవలసిన రోజులు:',
 'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం',
@@ -1284,7 +1290,7 @@ $1",
 # Groups
 'group' => 'గుంపు:',
 'group-user' => 'వాడుకరులు',
-'group-autoconfirmed' => 'à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°¥ారించబడిన వాడుకరులు',
+'group-autoconfirmed' => 'à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°§ారించబడిన వాడుకరులు',
 'group-bot' => 'బాట్‌లు',
 'group-sysop' => 'నిర్వాహకులు',
 'group-bureaucrat' => 'అధికారులు',
@@ -1292,14 +1298,14 @@ $1",
 'group-all' => '(అందరూ)',
 
 'group-user-member' => '{{GENDER:$1|వాడుకరి}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°¥ారించబడిన వాడుకరి}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°§ారించబడిన వాడుకరి}}',
 'group-bot-member' => '{{GENDER:$1|బాట్}}',
 'group-sysop-member' => '{{GENDER:$1|నిర్వాహకుడు|నిర్వాహకురాలు}}',
 'group-bureaucrat-member' => '{{GENDER:$1|అధికారి|అధికారిణి}}',
 'group-suppress-member' => 'పరాకు',
 
 'grouppage-user' => '{{ns:project}}:వాడుకరులు',
-'grouppage-autoconfirmed' => '{{ns:project}}:à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°¥ారించబడిన వాడుకరులు',
+'grouppage-autoconfirmed' => '{{ns:project}}:à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ à°¨à°¿à°°à±\8dà°§ారించబడిన వాడుకరులు',
 'grouppage-bot' => '{{ns:project}}:బాట్లు',
 'grouppage-sysop' => '{{ns:project}}:నిర్వాహకులు',
 'grouppage-bureaucrat' => '{{ns:project}}:అధికార్లు',
@@ -1411,7 +1417,7 @@ $1",
 'nchanges' => '{{PLURAL:$1|ఒక మార్పు|$1 మార్పులు}}',
 'recentchanges' => 'ఇటీవలి మార్పులు',
 'recentchanges-legend' => 'ఇటీవలి మార్పుల ఎంపికలు',
-'recentchangestext' => 'వికీలో ఇటీవల జరిగిన మార్పులను ఈ పుటలో గమనించవచ్చు.',
+'recentchanges-summary' => 'వికీలో ఇటీవలే జరిగిన మార్పులను ఈ పేజీలో గమనించవచ్చు.',
 'recentchanges-feed-description' => 'ఈ ఫీడు ద్వారా వికీలో జరుగుతున్న మార్పుల గురించి ఎప్పటికప్పుడు సమాచారాన్ని పొందండి.',
 'recentchanges-label-newpage' => 'ఈ మార్పు కొత్త పేజీని సృష్టించింది',
 'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
@@ -1444,7 +1450,7 @@ $1",
 # Recent changes linked
 'recentchangeslinked' => 'సంబంధిత మార్పులు',
 'recentchangeslinked-feed' => 'సంబంధిత మార్పులు',
-'recentchangeslinked-toolbox' => 'à°¸à°\82à°¬à°\82ధిత మార్పులు',
+'recentchangeslinked-toolbox' => 'à°ªà±\8aà°\82తనà°\97à°² మార్పులు',
 'recentchangeslinked-title' => '$1 కు సంబంధించిన మార్పులు',
 'recentchangeslinked-noresult' => 'మీరిచ్చిన కాలంలో ఇక్కడికి లింకు ఉన్న పేజీలలో ఎటువంటు మార్పులూ జరగలేదు.',
 'recentchangeslinked-summary' => "దీనికి లింకై ఉన్న పేజీల్లో జరిగిన చివరి మార్పులు ఇక్కడ చూడవచ్చు. మీ వీక్షణ జాబితాలో ఉన్న పేజీలు '''బొద్దు'''గా ఉంటాయి.",
@@ -1583,6 +1589,7 @@ $1',
 'backend-fail-delete' => '$1 ఫైలును తొలగించలేకున్నాం.',
 'backend-fail-alreadyexists' => '$1 అనే దస్త్రం ఇప్పటికే ఉంది.',
 'backend-fail-opentemp' => 'తాత్కాలిక దస్త్రాన్ని తెరవలేకపోతున్నాం.',
+'backend-fail-read' => '$1 దస్త్రము చదువలేకపోతిమి.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ఈ ఫైలును ZIP పరీక్ష కోసం తెరవబోతే, ఏదో తెలియని లోపం ఎదురైంది.',
@@ -1641,12 +1648,11 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'upload_source_file' => ' (మీ కంప్యూటర్లో ఒక ఫైలు)',
 
 # Special:ListFiles
-'listfiles-summary' => 'ఈ ప్రత్యేక పేజీ ఇప్పటి వరకూ అప్లోడయిన ఫైళ్లను చూపిస్తుంది.
-ఏ క్రమాన్నీ పేర్కొనకపోతే ఇటీవలే అప్లోడయిన ఫైళ్లను ముందుగా చూపిస్తుంది.
-నిలువు వరుసలకున్న శీర్షికలపై నొక్కితే క్రమపరిచే విధానం మారుతుంది.',
+'listfiles-summary' => 'ఈ ప్రత్యేక పేజీ ఇప్పటి వరకూ ఎక్కించిన దస్త్రాలన్నింటినీ చూపిస్తుంది.
+వాడుకరి పేరు మీద వడపోసినప్పుడు, ఆ వాడుకరి ఎక్కించిన కూర్పు ఆ దస్త్రం యొక్క సరికొత్త కూర్పు అయితేనే చూపిస్తుంది.',
 'listfiles_search_for' => 'మీడియా పేరుకై వెతుకు:',
-'imgfile' => 'à°«à±\88à°²à±\81',
-'listfiles' => 'à°«à±\88à°³à±\8dà°³ జాబితా',
+'imgfile' => 'దసà±\8dà°¤à±\8dà°°à°\82',
+'listfiles' => 'దసà±\8dà°¤à±\8dరాల జాబితా',
 'listfiles_thumb' => 'నఖచిత్రం',
 'listfiles_date' => 'తేదీ',
 'listfiles_name' => 'పేరు',
@@ -1759,7 +1765,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'statistics-articles' => 'విషయపు పేజీలు',
 'statistics-pages' => 'పేజీలు',
 'statistics-pages-desc' => 'ఈ వికీలోని అన్ని పేజీలు (చర్చా పేజీలు, దారిమార్పులు, మొదలైనవన్నీ కలుపుకొని).',
-'statistics-files' => 'à°\8eà°\97à±\81మతà±\88à°¨ à°«à±\88à°³à±\8dà°³ు',
+'statistics-files' => 'à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aà°¿à°¨ à°¦à°¸à±\8dà°¤à±\8dరాలు',
 'statistics-edits' => '{{SITENAME}}ని మొదలుపెట్టినప్పటినుండి జరిగిన మార్పులు',
 'statistics-edits-average' => 'పేజీకి సగటు మార్పులు',
 'statistics-views-total' => 'మొత్తం వీక్షణలు',
@@ -1879,7 +1885,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 
 # Special:AllPages
 'allpages' => 'అన్ని పేజీలు',
-'alphaindexline' => '$1 నుండి $2',
+'alphaindexline' => '$1 నుండి $2 వరకు',
 'nextpage' => 'తరువాతి పేజీ ($1)',
 'prevpage' => 'మునుపటి పేజీ ($1)',
 'allpagesfrom' => 'ఇక్కడ మొదలు పెట్టి పేజీలు చూపించు:',
@@ -2256,7 +2262,7 @@ $UNWATCHURL కి వెళ్ళండి.
 'sp-contributions-submit' => 'వెతుకు',
 
 # What links here
-'whatlinkshere' => 'ఇక్కడికి లంకెలున్న పుటలు',
+'whatlinkshere' => 'ఇక్కడికి లంకెలున్నవి',
 'whatlinkshere-title' => '"$1"కి లింకున్న పుటలు',
 'whatlinkshere-page' => 'పేజీ:',
 'linkshere' => "కిందనున్న పేజీల నుండి '''[[:$1]]'''కు లింకులు ఉన్నాయి:",
@@ -2275,6 +2281,7 @@ $UNWATCHURL కి వెళ్ళండి.
 'whatlinkshere-filters' => 'వడపోతలు',
 
 # Block/unblock
+'autoblockid' => 'tanaDDu #$1',
 'block' => 'వాడుకరి నిరోధం',
 'unblock' => 'వాడుకరిపై నిరోధాన్ని తీసెయ్యండి',
 'blockip' => 'వాడుకరి నిరోధం',
@@ -2619,10 +2626,10 @@ $UNWATCHURL కి వెళ్ళండి.
 'tooltip-pt-anonlogin' => 'మీరు లోనికి ప్రవేశించడాన్ని ప్రోత్సహిస్తాం; కానీ, అది తప్పనిసరి కాదు',
 'tooltip-pt-logout' => 'నిష్క్రమించండి',
 'tooltip-ca-talk' => 'విషయపు పుట గురించి చర్చ',
-'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°­à°¦à±\8dరపరిచేముందు మునుజూపు బొత్తాన్ని వాడండి.',
+'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°¦à°¾చేముందు మునుజూపు బొత్తాన్ని వాడండి.',
 'tooltip-ca-addsection' => 'కొత్త విభాగాన్ని మొదలుపెట్టండి',
 'tooltip-ca-viewsource' => 'ఈ పుటని సంరక్షించారు. మీరు దీని మూలాన్ని చూడవచ్చు',
-'tooltip-ca-history' => 'à°\88 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\97à°¤ à°\95à±\82à°°à±\8dà°ªà±\81à°²à±\81.',
+'tooltip-ca-history' => 'à°\88 à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°µà±\86à°¨à±\81à°\95à°\9fà°¿ à°\95à±\82à°°à±\8dà°ªà±\81à°²à±\81',
 'tooltip-ca-protect' => 'ఈ పేజీని సంరక్షించండి',
 'tooltip-ca-unprotect' => 'ఈ పేజీ సంరక్షణను మార్చండి',
 'tooltip-ca-delete' => 'ఈ పేజీని తొలగించండి',
@@ -2634,24 +2641,24 @@ $UNWATCHURL కి వెళ్ళండి.
 'tooltip-search-go' => 'ఇదే పేరుతో పేజీ ఉంటే అక్కడికి తీసుకెళ్ళు',
 'tooltip-search-fulltext' => 'పేజీలలో ఈ పాఠ్యం కొరకు వెతుకు',
 'tooltip-p-logo' => 'మొదటి పుటను దర్శించండి',
-'tooltip-n-mainpage' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80ని à°¦à°°à±\8dశిà°\82à°\9aండి',
-'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80ని à°¦à°°à±\8dశిà°\82à°\9aండి',
+'tooltip-n-mainpage' => 'తలపà±\81à°\9fà°¨à±\81 à°\9aà±\82à°¡ండి',
+'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\81à°\9fà°¨à±\81 à°\9aà±\82à°¡ండి',
 'tooltip-n-portal' => 'ప్రాజెక్టు గురించి, మీరేం చేయవచ్చు, సమాచారం ఎక్కడ దొరుకుతుంది',
-'tooltip-n-currentevents' => 'వరà±\8dతమాన à°\98à°\9fనలà°\95à±\81 à°¸à°\82à°¬à°\82ధిà°\82à°\9aà°¿à°¨ à°¸à°®à°¾à°\9aారానà±\8dని à°ªà±\8aà°\82à°¦à°\82à°¡à°¿.',
+'tooltip-n-currentevents' => 'à°\87à°ªà±\8dà°ªà°\9fà°¿ à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dà°² à°¯à±\8aà°\95à±\8dà°\95 à°®à±\81à°¨à±\81à°ªà°\9fà°¿ à°®à°\82దలనà±\81 à°¤à±\86à°²à±\81à°¸à±\81à°\95à±\8aà°¨à±\81à°¡à°¿',
 'tooltip-n-recentchanges' => 'వికీలో ఇటీవల జరిగిన మార్పుల జాబితా.',
 'tooltip-n-randompage' => 'ఓ యాదృచ్చిక పేజీని చూడండి',
 'tooltip-n-help' => 'తెలుసుకోడానికి ఓ మంచి ప్రదేశం.',
-'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°\95à°¿ à°²à°¿à°\82à°\95యి à°\89à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\87à°\9cà±\80లు',
-'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\87à°\9cà±\80à°¨à±\81à°\82à°¡à°¿ à°²à°¿à°\82à°\95à±\81à°¨à±\8dà°¨ à°ªà±\87à°\9cà±\80à°²à°\95à±\81 జరిగిన ఇటీవలి మార్పులు',
+'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°¤à±\8b à°®à±\81డిపడియà±\81à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\81à°\9fà°² à°²à°\82à°\95à±\86లు',
+'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\81à°\9fà°\95à±\81 à°®à±\81డివడియà±\81à°¨à±\8dà°¨ à°ªà±\81à°\9fలలà±\8b జరిగిన ఇటీవలి మార్పులు',
 'tooltip-feed-rss' => 'ఈ పేజీకి RSS ఫీడు',
 'tooltip-feed-atom' => 'ఈ పేజీకి Atom ఫీడు',
 'tooltip-t-contributions' => 'ఈ వాడుకరి యొక్క రచనల జాబితా చూడండి',
 'tooltip-t-emailuser' => 'ఈ వాడుకరికి ఓ ఈమెయిలు పంపండి',
 'tooltip-t-upload' => 'దస్త్రాలను ఎక్కించండి',
 'tooltip-t-specialpages' => 'అన్ని ప్రత్యేక పుటల యొక్క జాబితా',
-'tooltip-t-print' => 'à°\88 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°®à±\81à°¦à±\8dరణా కూర్పు',
-'tooltip-t-permalink' => 'à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°\95à°¿ à°¶à°¾à°¶à±\8dవత à°²à°¿à°\82à°\95à±\81',
-'tooltip-ca-nstab-main' => 'విషయపà±\81 à°ªà±\87à°\9cà±\80ని చూడండి',
+'tooltip-t-print' => 'à°\88 à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°\85à°\9aà±\8dà°\9aà±\81à°¤à±\80యదà°\97à±\8dà°\97 కూర్పు',
+'tooltip-t-permalink' => 'à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°\95à°¿ à°¶à°¾à°¶à±\8dవత à°²à°\82à°\95à±\86',
+'tooltip-ca-nstab-main' => 'à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dà°² à°ªà±\81à°\9fà°¨à±\81 చూడండి',
 'tooltip-ca-nstab-user' => 'వాడుకరి పేజీని చూడండి',
 'tooltip-ca-nstab-media' => 'మీడియా పేజీని చూడండి',
 'tooltip-ca-nstab-special' => 'ఇది ఒక ప్రత్యేక పుట, దీన్ని మీరు సరిదిద్దలేరు',
@@ -3472,6 +3479,10 @@ $5
 'revdelete-uname-hid' => 'వాడుకరి పేరుని దాచారు',
 'revdelete-restricted' => 'నిర్వాహకులకు ఆంక్షలు విధించాను',
 'revdelete-unrestricted' => 'నిర్వాహకులకున్న ఆంక్షలను ఎత్తేశాను',
+'logentry-move-move' => '$1 $3 పేజీని $4కి తరలించారు',
+'logentry-move-move-noredirect' => '$1 $3 పేజీని $4కి దారిమార్పు లేకుండా తరలించారు',
+'logentry-move-move_redir' => '$1 $3 పేజీని $4కి దారిమార్పు ద్వారా తరలించారు',
+'logentry-move-move_redir-noredirect' => '$1 $3 పేజీని $4కి దారిమార్పు లేకుండా తరలించారు',
 'logentry-newusers-newusers' => '$1 వాడుకరి ఖాతాను సృష్టించారు',
 'logentry-newusers-create' => '$1 ఒక వాడుకరి ఖాతాను సృష్టించారు',
 'logentry-newusers-create2' => '$1  వాడుకరి ఖాతా $3ను సృష్టించారు',
index f43a031..4ba5883 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tetum (Tetun)
+/** Tetum (tetun)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index de424eb..534440a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tajik (Cyrillic script) (Тоҷикӣ)
+/** Tajik (Cyrillic script) (тоҷикӣ)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1025,7 +1025,7 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|тағйир|тағйирот}}',
 'recentchanges' => 'Тағйироти охирин',
 'recentchanges-legend' => 'Ихтиёроти тағйироти охирин',
-'recentchangestext' => 'Назорати тағйиротҳои навтарин дар Википедиа дар ҳамин саҳифа аст.',
+'recentchanges-summary' => 'Назорати тағйиротҳои навтарин дар Википедиа дар ҳамин саҳифа аст.',
 'recentchanges-feed-description' => 'Радёбии охирин тағйироти ин вики дар ин хурд.',
 'rcnote' => "Дар поён  {{PLURAL:$1|'''1''' тағйире аст|'''$1''' тағйирот мебошанд}}, ки дар давоми {{PLURAL:$2|рӯҳ|'''$2''' рӯзҳои}} охир, сар карда аз $5, $4.",
 'rcnotefrom' => 'Дар зер тағйиротҳои охирин аз <b>$2</b> (то <b>$1</b> нишон дода шудааст).',
index 6a83f8b..2ab317f 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tajik (Latin script) (Tojikī)
+/** Tajik (Latin script) (tojikī)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -908,7 +908,7 @@ On bojad kamtar az $1 {{PLURAL:$1|alomat|alomatho}} boşad.',
 'nchanges' => '$1 {{PLURAL:$1|taƣjir|taƣjirot}}',
 'recentchanges' => 'Taƣjiroti oxirin',
 'recentchanges-legend' => 'Ixtijoroti taƣjiroti oxirin',
-'recentchangestext' => 'Nazorati taƣjirothoi navtarin dar Vikipedia dar hamin sahifa ast.',
+'recentchanges-summary' => 'Nazorati taƣjirothoi navtarin dar Vikipedia dar hamin sahifa ast.',
 'recentchanges-feed-description' => 'Radjobiji oxirin taƣjiroti in viki dar in xurd.',
 'rcnote' => "Dar pojon  {{PLURAL:$1|'''1''' taƣjire ast|'''$1''' taƣjirot meboşand}}, ki dar davomi {{PLURAL:$2|rūh|'''$2''' rūzhoi}} oxir, sar karda az $5, $4.",
 'rcnotefrom' => 'Dar zer taƣjirothoi oxirin az <b>$2</b> (to <b>$1</b> nişon doda şudaast).',
index 5a18c25..0a65a7e 100644 (file)
@@ -224,9 +224,11 @@ $messages = array(
 'tog-watchlisthideliu' => 'ซ่อนการแก้ไขโดยผู้ใช้ล็อกอินจากรายการเฝ้าดู',
 'tog-watchlisthideanons' => 'ซ่อนการแก้ไขโดยผู้ใช้นิรนามจากรายการเฝ้าดู',
 'tog-watchlisthidepatrolled' => 'ซ่อนการแก้ไขที่ตรวจแล้วจากรายการเฝ้าดู',
+'tog-nolangconversion' => 'ปิดใช้งานการแปลงอักษรต่างรูป',
 'tog-ccmeonemails' => 'ส่งสำเนาอีเมลกลับมาทุกครั้งที่ส่งหาคนอื่น',
 'tog-diffonly' => 'ไม่แสดงเนื้อหาใต้ส่วนต่างการแก้ไข',
 'tog-showhiddencats' => 'แสดงหมวดหมู่ที่ซ่อนอยู่',
+'tog-noconvertlink' => 'ปิดใช้งานการแปลงชื่อเรื่องของลิงก์',
 'tog-norollbackdiff' => 'ข้ามแสดงความเปลี่ยนแปลงหลังจากดำเนินการย้อนกลับ',
 
 'underline-always' => 'เสมอ',
@@ -720,7 +722,9 @@ $1',
 'headline_tip' => 'หัวข้อ',
 'nowiki_sample' => 'ใส่ข้อความที่ไม่จัดรูปแบบ',
 'nowiki_tip' => 'ข้ามการจัดรูปแบบวิกิ',
+'image_sample' => 'ตัวอย่าง.jpg',
 'image_tip' => 'ใส่ภาพ',
+'media_sample' => 'ตัวอย่าง.ogg',
 'media_tip' => 'เชื่อมโยงไฟล์สื่อ',
 'sig_tip' => 'ลายเซ็นพร้อมลงเวลา',
 'hr_tip' => 'เส้นนอน',
@@ -799,11 +803,12 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
 'userpage-userdoesnotexist-view' => 'ไม่มีบัญชีผู้ใช้ลงทะเบียนในชื่อ "$1"',
 'blocked-notice-logextract' => 'ปัจจุบันเลขที่อยู่ไอพีนี้ถูกบล็อก
 ปูมการบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:',
-'clearyourcache' => "'''คำแนะนำ:''' หลังจากบันทึกผลแล้ว คุณอาจจะต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูผลการเปลี่ยนแปลง <br />
-'''มอซิลลา / ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะกดปุ่ม ''รีโหลด'' หรือกด  ''Ctrl-F5'' หรือกด ''Ctrl-R'' (''Command-R'' สำหรับเครื่องแมคอินทอช); <br />
-'''คองเคอเรอร์:''' กดปุ่ม ''รีโหลด'' หรือกด ''F5;'' <br />
-'''โอเปร่า:''' อาจต้องล้างแคชทั้งหมดผ่านเมนู ''Tools → Preferences;'' <br />
-'''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กด  ''Ctrl'' ค้างไว้ขณะที่กดปุ่ม ''รีเฟรช'' หรือกด ''Ctrl-F5;''",
+'clearyourcache' => "'''หมายเหตุ:''' หลังจากบันทึกแล้ว คุณอาจจะต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง
+* '''ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะคลิก ''Reload'' หรือกดปุ่ม ''Ctrl-F5'' หรือ ''Ctrl-R'' (''⌘-R'' บนแมคอินทอช)
+* '''กูเกิล โครม:''' กดปุ่ม ''Ctrl-Shift-R'' (''⌘-Shift-R'' บนแมคอินทอช)
+* '''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กดปุ่ม ''Ctrl'' ค้างไว้ขณะคลิก ''Refresh'' หรือกดปุ่ม ''Ctrl-F5''
+* '''คองเคอเรอร์:''' คลิก ''Reload'' หรือกดปุ่ม ''F5''
+* '''โอเปร่า:''' ล้างแคชในเมนู ''Tools → Preferences''",
 'usercssyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบ CSS สไตล์ชีทก่อนทำการบันทึก",
 'userjsyoucanpreview' => "'''คำแนะนำ:''' กดปุ่ม 'แสดงตัวอย่าง' เพื่อทดสอบสไตล์ชีตหรือจาวาสคริปต์ก่อนทำการบันทึก",
 'usercsspreview' => "'''อย่าลืมว่าสไตล์ชีตที่คุณสร้างยังไม่ได้ถูกบันทึก'''
@@ -816,7 +821,8 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
 'userinvalidcssjstitle' => "'''คำเตือน:''' ไม่มีแบบหน้าตา \"\$1\" อย่าลืมว่าหน้า .css และ .js ที่ปรับแต่งเอง ใช้เป็นอักษรตัวพิมพ์เล็กทั้งหมด เช่น ใช้ {{ns:user}}:Foo/vector.css แทนที่จะเป็น {{ns:user}}:Foo/Vector.css",
 'updated' => '(ปรับปรุงแล้ว)',
 'note' => "'''คำแนะนำ:'''",
-'previewnote' => "'''พึงระลึกว่านี่เป็นเพียงตัวอย่างเท่านั้น การเปลี่ยนแปลงของคุณยังไม่ได้ถูกบันทึก!'''",
+'previewnote' => "'''พึงระลึกว่านี่เป็นเพียงตัวอย่างเท่านั้น'''
+การเปลี่ยนแปลงของคุณยังไม่ได้ถูกบันทึก!",
 'previewconflict' => 'การแสดงผลส่วนนี้เป็นตัวอย่างของการแก้ไขด้านบน  ถ้ากดบันทึกการแสดงผลจะแสดงในลักษณะนี้ทันที',
 'session_fail_preview' => "'''ขออภัย ไม่สามารถดำเนินการแก้ไขต่อได้ เนื่องจากข้อมูลเชื่อมต่อสูญหาย
 ให้ทดลองแก้ไขอีกครั้งหนึ่ง ถ้ายังไม่สามารถทำได้ ให้ลองล็อกเอาต์และล็อกอินกลับมาอีกครั้ง'''",
@@ -958,29 +964,29 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
 'rev-deleted-user-contribs' => '[ชื่อผู้ใช้หรือหมายเลขไอพีถูกลบแล้ว - การแก้ไขถูกซ่อนจากรายการแก้ไข]',
 'rev-deleted-text-permission' => "รุ่นการปรับปรุงนี้ของหน้านี้'''ถูกลบแล้ว'''
 รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
-'rev-deleted-text-unhide' => "รุà¹\88à¸\99à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89'''à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว'''
-รายละà¹\80อียà¸\94อาà¸\88ยัà¸\87à¸\84à¸\87มีอยูà¹\88à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9aัà¸\99à¸\97ึà¸\81การลบ]
-สำหรัà¸\9aà¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¹\80รียà¸\81à¸\94ูรุà¹\88à¸\99à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89]หาà¸\81à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81าร",
-'rev-suppressed-text-unhide' => "à¸\89à¸\9aัà¸\9aà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ยัà¸\9aยัà¹\89à¸\87à¹\81ลà¹\89ว'''
-à¸\8bึà¹\88à¸\87อาà¸\88มีรายละà¹\80อียà¸\94à¹\83à¸\99 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bระวัà¸\95ิการยับยั้ง]
¹\83à¸\99à¸\90าà¸\99ะà¸\97ีà¹\88à¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¸\94ูà¸\89à¸\9aัà¸\9aà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89]à¹\84à¸\94à¹\89à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81าร",
-'rev-deleted-text-view' => "รุà¹\88à¸\99à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89'''à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว'''
-สำหรัà¸\9aà¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93ยัà¸\87สามารà¸\96à¹\80รียà¸\81à¸\94ูà¹\84à¸\94à¹\89 à¸£à¸²à¸¢à¸¥à¸°à¹\80อียà¸\94อาà¸\88ยัà¸\87à¸\84à¸\87มีอยูà¹\88à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9aัà¸\99à¸\97ึà¸\81การลบ]",
-'rev-suppressed-text-view' => "à¸\89à¸\9aัà¸\9aà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ยัà¸\9aยัà¹\89à¸\87à¹\81ลà¹\89ว'''
¹\83à¸\99à¸\90าà¸\99ะà¸\97ีà¹\88à¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aà¸\84ุà¸\93สามารà¸\96à¸\94ูà¸\89à¸\9aัà¸\9aà¸\9bรัà¸\9aà¸\9bรุà¸\87à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87อาà¸\88à¸\88ะมีรายละà¹\80อียà¸\94à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bระวัà¸\95ิการยับยั้ง]",
+'rev-deleted-text-unhide' => "รุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ลà¸\9aออà¸\81'''
+รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9bูมการลบ]
+à¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¸\94ูรุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89]à¹\84à¸\94à¹\89à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารà¸\94ำà¹\80à¸\99ิà¸\99à¸\95à¹\88อ",
+'rev-suppressed-text-unhide' => "รุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ยัà¸\9aยัà¹\89à¸\87à¹\84วà¹\89'''
+รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bูมการยับยั้ง]
¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¸\94ูรุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89]à¹\84à¸\94à¹\89à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารà¸\94ำà¹\80à¸\99ิà¸\99à¸\95à¹\88อ",
+'rev-deleted-text-view' => "รุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ลà¸\9aออà¸\81'''
+à¸\84ุà¸\93สามารà¸\96à¸\94ูรุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9bูมการลบ]",
+'rev-suppressed-text-view' => "รุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ยัà¸\9aยัà¹\89à¸\87à¹\84วà¹\89'''
¸\84ุà¸\93สามารà¸\96à¸\94ูรุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bูมการยับยั้ง]",
 'rev-deleted-no-diff' => "คุณไม่สามารถเรียกดูความเปลี่ยนแปลงนี้ เนื่องจากรุ่นการปรับปรุงที่นำมาเปรียบเทียบมีบางรุ่น'''ถูกลบออก'''
 รายละเอียดอาจยังคงมีอยู่ใน[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} บันทึกการลบ]",
 'rev-suppressed-no-diff' => "คุณไม่สามารถดูความแตกต่างระหว่างรุ่นที่เลือกได้ เนื่องจากมีความแตกต่างระหว่างรุ่นที่'''ถูกลบ'''",
-'rev-deleted-unhide-diff' => "รุà¹\88à¸\99à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\9aาà¸\87รุà¹\88à¸\99à¸\82อà¸\87à¸\84วามà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¸\99ีà¹\89'''à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว'''
-รายละà¹\80อียà¸\94อาà¸\88ยัà¸\87à¸\84à¸\87มีอยูà¹\88à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9aัà¸\99à¸\97ึà¸\81การลบ]
-สำหรัà¸\9aà¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¹\80รียà¸\81à¸\94ูรุà¹\88à¸\99à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\99ีà¹\89]หาà¸\81à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81าร",
+'rev-deleted-unhide-diff' => "หà¸\99ึà¹\88à¸\87à¹\83à¸\99รุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\97ัà¹\89à¸\87หมà¸\94à¸\82อà¸\87รายà¸\81ารà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81'''ลà¸\9aออà¸\81'''
+รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9bูมการลบ]
+à¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89]à¹\84à¸\94à¹\89à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารà¸\94ำà¹\80à¸\99ิà¸\99à¸\95à¹\88อ",
 'rev-suppressed-unhide-diff' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ยับยั้งไว้'''
-à¸\8bึà¹\88à¸\87อาà¸\88à¸\88ะมีรายละà¹\80อียà¸\94à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸£à¸²à¸¢การยับยั้ง]
¹\83à¸\99à¸\90าà¸\99ะà¸\97ีà¹\88à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93สามารà¸\96 [$1 à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¹\84à¸\94à¹\89]à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81าร",
+รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bูมการยับยั้ง]
¸\84ุà¸\93ยัà¸\87สามารà¸\96[$1 à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89]à¹\84à¸\94à¹\89à¸\96à¹\89าà¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\81ารà¸\94ำà¹\80à¸\99ิà¸\99à¸\95à¹\88อ",
 'rev-deleted-diff-view' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ลบออก'''
¹\83à¸\99à¸\90าà¸\99ะà¸\97ีà¹\88à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93สามารà¸\96à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87อาà¸\88à¸\88ะมีรายละà¹\80อียà¸\94à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸£à¸²à¸¢การลบ]",
¸\84ุà¸\93สามารà¸\96à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à¸\9bูมการลบ]",
 'rev-suppressed-diff-view' => "หนึ่งในรุ่นปรับปรุงทั้งหมดของรายการความแตกต่างนี้ได้ถูก'''ยับยั้งไว้'''
¹\83à¸\99à¸\90าà¸\99ะà¸\97ีà¹\88à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9a à¸\84ุà¸\93สามารà¸\96à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87อาà¸\88à¸\88ะมีรายละà¹\80อียà¸\94à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸£à¸²à¸¢à¸\81ารยัà¸\87ยั้ง]",
¸\84ุà¸\93สามารà¸\96à¸\94ูà¸\84วามà¹\81à¸\95à¸\81à¸\95à¹\88าà¸\87à¸\99ีà¹\89à¹\84à¸\94à¹\89 à¸\8bึà¹\88à¸\87รายละà¹\80อียà¸\94สามารà¸\96à¸\9eà¸\9aà¹\84à¸\94à¹\89à¹\83à¸\99[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à¸\9bูมà¸\81ารยัà¸\9aยั้ง]",
 'rev-delundel' => 'แสดง/ซ่อน',
 'rev-showdeleted' => 'แสดง',
 'revisiondelete' => 'รุ่นการปรับปรุง การลบ/การย้อนการลบ',
@@ -1048,8 +1054,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'บันทึกการระงับ',
-'suppressionlogtext' => 'à¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¸\99ีà¹\89à¸\84ือรายà¸\81ารลà¸\9aà¹\81ละระà¸\87ัà¸\9a à¸£à¸§à¸¡à¹\84à¸\9bà¸\96ึà¸\87à¹\80à¸\99ืà¹\89อหาà¸\97ีà¹\88à¸\96ูà¸\81à¸\8bà¹\88อà¸\99à¹\82à¸\94ยผู้ดูแลระบบ
-ดู [[Special:IPBlockList|รายการหมายเลขไอพีที่ถูกระงับ]] สำหรับรายการระงับและห้ามใช้ที่ยังมีผลอยู่',
+'suppressionlogtext' => 'à¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¸\99ีà¹\89à¸\84ือรายà¸\81ารà¸\81ารลà¸\9aà¹\81ละà¸\81ารà¸\9aลà¹\87อà¸\81à¸\97ีà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89อà¸\87à¸\81ัà¸\9aà¹\80à¸\99ืà¹\89อหาà¸\97ีà¹\88à¸\96ูà¸\81à¸\8bà¹\88อà¸\99à¸\88าà¸\81ผู้ดูแลระบบ
+ดู[[Special:BlockList|รายการบล็อกไอพี]]สำหรับการบล็อกและการระงับในปัจจุบัน',
 
 # History merging
 'mergehistory' => 'ประวัติการรวมหน้า',
@@ -1081,7 +1087,7 @@ $1",
 'mergelogpagetext' => 'ด้านล่างนี้แสดงรายการล่าสุดของการรวมประวัติหน้าหนึ่งๆ เข้ากับอีกหน้าหนึ่ง',
 
 # Diffs
-'history-title' => 'à¸\9bระวัà¸\95ิà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89า "$1"',
+'history-title' => 'à¸\9bระวัà¸\95ิรุà¹\88à¸\99à¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\82อà¸\87 "$1"',
 'difference-multipage' => '(ความแตกต่างระหว่างหน้าต่างๆ)',
 'lineno' => 'แถว $1:',
 'compareselectedversions' => 'เปรียบเทียบสองรุ่นที่เลือก',
@@ -1246,7 +1252,7 @@ $1",
 'prefs-registration' => 'วันเวลาที่ลงทะเบียน:',
 'yourrealname' => 'ชื่อจริง:',
 'yourlanguage' => 'ภาษา:',
-'yourvariant' => 'ภาษาอืà¹\88à¸\99',
+'yourvariant' => 'อัà¸\81ษรà¸\95à¹\88าà¸\87รูà¸\9bà¸\82อà¸\87à¹\80à¸\99ืà¹\89อหา:',
 'yournick' => 'ลายเซ็น:',
 'prefs-help-signature' => 'คอมเมนต์ในหน้าพูดคุยควรจะเซ็นด้วย "<nowiki>~~~~</nowiki>" ซึ่งจะถูกแปลงเป็นลายเซ็นและลงวันที่เขียน',
 'badsig' => 'ลายเซ็นที่ใช้ผิดพลาด กรุณาตรวจสอบคำสั่งเอชทีเอ็มแอล',
@@ -1299,7 +1305,7 @@ $1",
 'userrights-no-interwiki' => 'คุณไม่ได้รับสิทธิในการแก้ไขสิทธิของผู้ใช้บนวิกิอื่นๆ',
 'userrights-nodatabase' => 'ไม่มีฐานข้อมูล $1 อยู่ หรือ ฐานข้อมูลอยู่บนเครื่องอื่น',
 'userrights-nologin' => 'คุณต้อง[[Special:UserLogin|ล็อกอิน]]ด้วยบัญชีผู้ใช้ที่เป็นผู้ดูแลสิทธิแต่งตั้ง จึงจะสามารถกำหนดสิทธิต่างๆ ของผู้ใช้ได้',
-'userrights-notallowed' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aสิà¸\97à¸\98ิà¹\83à¸\99à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82สิทธิของผู้ใช้',
+'userrights-notallowed' => 'à¸\9aัà¸\8dà¸\8aีà¸\82อà¸\87à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aอà¸\99ุà¸\8dาà¸\95à¹\83หà¹\89à¹\80à¸\9eิà¹\88มหรือลà¸\94สิทธิของผู้ใช้',
 'userrights-changeable-col' => 'กลุ่มที่คุณสามารถเปลี่ยนได้',
 'userrights-unchangeable-col' => 'กลุ่มที่คุณไม่สามารถเปลี่ยนได้',
 
@@ -1668,9 +1674,8 @@ $1',
 'upload_source_file' => ' (ไฟล์จากคอมพิวเตอร์คุณ)',
 
 # Special:ListFiles
-'listfiles-summary' => 'หน้าพิเศษนี้แสดงไฟล์ทั้งหมดที่ถูกอัปโหลด
-โดยปริยาย ไฟล์ที่ถูกอัปโหลดล่าสุด จะแสดงอยู่บนสุดของรายการไฟล์
-คลิกที่คอมลัมน์บนสุดจะเปลี่ยนการจัดแยกประเภท',
+'listfiles-summary' => 'หน้าพิเศษนี้แสดงไฟล์ทั้งหมดที่อัปโหลด
+เมื่อกรองตามผู้ใช้แล้ว จะแสดงเฉพาะไฟล์รุ่นล่าสุดที่ผู้ใช้นั้นอัปโหลด',
 'listfiles_search_for' => 'ค้นหาชื่อภาพ:',
 'imgfile' => 'ไฟล์',
 'listfiles' => 'รายชื่อไฟล์',
@@ -1699,7 +1704,7 @@ $1',
 'filehist-filesize' => 'ขนาดไฟล์',
 'filehist-comment' => 'ความเห็น',
 'filehist-missing' => 'ไฟล์หายไป',
-'imagelinks' => 'หà¸\99à¹\89าà¸\97ีà¹\88มีà¹\84à¸\9fลà¹\8cà¸\99ีà¹\89',
+'imagelinks' => 'à¸\81ารà¹\83à¸\8aà¹\89à¹\84à¸\9fลà¹\8c',
 'linkstoimage' => '{{PLURAL:$1|หน้า|หน้า}}ที่ลิงก์มายังไฟล์นี้:',
 'linkstoimage-more' => 'ไฟล์นี้มีการเชื่อมโยงมากกว่า $1 {{PLURAL:$1|แห่ง|แห่ง}}
 รายชื่อต่อไปนี้แสดงการเชื่อมโยง $1 {{PLURAL:$1|แห่งแรก|แห่งแรก}}ที่มายังไฟล์นี้เท่านั้น
@@ -1794,7 +1799,7 @@ $1',
 'statistics-users-active-desc' => 'ผู้ใช้ที่ได้แก้ไขในช่วง $1 วันที่ผ่านมา',
 'statistics-mostpopular' => 'หน้าที่มีการเข้าชมมากที่สุด',
 
-'disambiguations' => 'หน้าแก้ความกำกวม',
+'disambiguations' => 'หà¸\99à¹\89าà¸\97ีà¹\88à¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¸\81ัà¸\9aหà¸\99à¹\89าà¹\81à¸\81à¹\89à¸\84วามà¸\81ำà¸\81วม',
 'disambiguationspage' => 'Template:แก้กำกวม',
 'disambiguations-text' => "หน้าต่อไปนี้เชื่อมโยงไปยัง '''หน้าคำกำกวม''' ซึ่งเนื้อหาในหน้าเหล่านั้นควรถูกเชื่อมโยงไปยังหัวข้อที่เหมาะสมแทนที่<br />
 
@@ -1894,7 +1899,7 @@ $1',
 
 # Special:Log
 'specialloguserlabel' => 'ผู้ดำเนินการ:',
-'speciallogtitlelabel' => 'à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87:',
+'speciallogtitlelabel' => 'à¹\80à¸\9bà¹\89าหมาย (à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87หรือà¸\9cูà¹\89à¹\83à¸\8aà¹\89):',
 'log' => 'ปูม',
 'all-logs-page' => 'ปูมสาธารณะทั้งหมด',
 'alllogstext' => 'แสดงปูมทั้งหมดของ{{SITENAME}}
@@ -1938,8 +1943,9 @@ $1',
 'linksearch-pat' => 'รูปแบบการค้นหา:',
 'linksearch-ns' => 'เนมสเปซ:',
 'linksearch-ok' => 'สืบค้น',
-'linksearch-text' => 'สามารถใช้เครื่องหมายแทนอักขระใดๆ (wildcard) ได้ เช่น "*.wikipedia.org"<br />
-โปรโตคอลที่รองรับ: <tt>$1</tt>',
+'linksearch-text' => 'อักขระตัวแทนเช่น "*.wikipedia.org" สามารถใช้ได้
+โดเมนระดับบนสุดจำเป็นต้องมีเป็นอย่างน้อย เช่น "*.org"<br />
+โพรโทคอลที่รองรับ: <tt>$1</tt> (อย่าใส่คำเหล่านี้ในการสืบค้นของคุณ)',
 'linksearch-line' => '$1 ถูกลิงก์จาก $2',
 'linksearch-error' => 'เครื่องหมายแทนอักขระ (wildcard) อยู่หน้าชื่อโฮสต์ได้เท่านั้น',
 
@@ -2140,7 +2146,8 @@ $UNWATCHURL
 
 # Protect
 'protectlogpage' => 'ปูมการล็อก',
-'protectlogtext' => 'รายการด้านล่างแสดงการล็อกหน้าและการปลดล็อก สำหรับหน้าที่โดนล็อกในปัจจุบันดูที่ [[Special:ProtectedPages|รายการหน้าที่ถูกล็อก]]',
+'protectlogtext' => 'ด้านล่างนี้คือรายการการเปลี่ยนแปลงการป้องกันหน้า
+ดู[[Special:ProtectedPages|รายการหน้าที่ถูกป้องกัน]]สำหรับการป้องกันหน้าในปัจจุบัน',
 'protectedarticle' => '"[[$1]]" ถูกล็อก',
 'modifiedarticleprotection' => 'เปลี่ยนระดับการล็อกสำหรับ "[[$1]]"',
 'unprotectedarticle' => 'ลบการปกป้องข้อมูลออกจาก "[[$1]]" แล้ว',
@@ -2341,8 +2348,8 @@ $1',
 'ipb-confirm' => 'ยืนยันการบล็อก',
 'badipaddress' => 'หมายเลขไอพีไม่ถูกต้อง',
 'blockipsuccesssub' => 'บล็อกสำเร็จ',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ถูกบล็อก
-<br />ดู  [[Special:BlockList|รายการไอพีที่ถูกบล็อก]] เพื่อตรวจสอบการบล็อก',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ถูกบล็อก<br />
+ดู[[Special:BlockList|รายการบล็อกไอพี]]เพื่อตรวจสอบการบล็อก',
 'ipb-blockingself' => 'คุณกำลังทำการบล็อกตัวคุณเอง คุณแน่ใจแล้วหรือว่าต้องการทำเช่นนั้น',
 'ipb-edit-dropdown' => 'แก้ไขสาเหตุการบล็อก',
 'ipb-unblock-addr' => 'เลิกบล็อก $1',
@@ -2356,7 +2363,7 @@ $1',
 'unblocked-range' => '$1 ถูกปลดบล็อกแล้ว',
 'unblocked-id' => 'เลิกบล็อก $1',
 'blocklist' => 'ผู้ใช้ที่ถูกบล็อก',
-'ipblocklist' => 'หมายà¹\80ลà¸\82à¹\84อà¸\9eีà¹\81ละà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81',
+'ipblocklist' => 'ผู้ใช้ที่ถูกบล็อก',
 'ipblocklist-legend' => 'ค้นหาผู้ใช้ที่ถูกระงับการใช้งาน',
 'blocklist-userblocks' => 'ซ่อนบล็อกบัญชี',
 'blocklist-tempblocks' => 'ซ่อนบล็อกชั่วคราว',
@@ -2392,7 +2399,9 @@ $1',
 ปูมการระงับแสดงไว้ด้านล่างนี้เพื่อการอ้างอิง:',
 'blocklogentry' => 'บล็อก "[[$1]]" หมดอายุ $2 $3',
 'reblock-logentry' => 'เปลี่ยนระดับการบล็อกสำหรับ [[$1]] หมดอายุ $2 $3',
-'blocklogtext' => 'ด้านล่างเป็นบันทึกการบล็อกและการเลิกบล็อก  ส่วนการบล็อกอัตโนมัติจะไม่ถูกรวมอยู่ในรายการนี้ ดู [[Special:BlockList|รายการบล็อกไอพี]] สำหรับการบล็อกทั้งหมด',
+'blocklogtext' => 'นี่คือบันทึกการบล็อกและการเลิกบล็อกผู้ใช้
+การบล็อกที่อยู่ไอพีโดยอัตโนมัติจะไม่แสดงในรายการ
+ดู[[Special:BlockList|รายการบล็อกไอพี]]สำหรับการบล็อกและการระงับในปัจจุบัน',
 'unblocklogentry' => 'เลิกบล็อก $1',
 'block-log-flags-anononly' => 'ผู้ใช้นิรนามเท่านั้น',
 'block-log-flags-nocreate' => 'ห้ามสร้างบัญชีผู้ใช้',
@@ -2590,7 +2599,8 @@ $1',
 'import-interwiki-namespace' => 'เนมสเปซปลายทาง:',
 'import-upload-filename' => 'ชื่อไฟล์:',
 'import-comment' => 'ความเห็น:',
-'importtext' => 'กรุณาส่งออกไฟล์จากวิกิอื่นโดยใช้[[Special:Export|เครื่องมือส่งออก]] บันทึก และทำการอัปโหลดมาที่นี่',
+'importtext' => 'กรุณาส่งออกไฟล์จากวิกิต้นทางโดยใช้[[Special:Export|เครื่องมือส่งออก]]
+บันทึกลงคอมพิวเตอร์ของคุณ และอัปโหลดที่นี่',
 'importstart' => 'กำลังนำเข้าหน้า...',
 'import-revision-count' => '$1 {{PLURAL:$1|รุ่นการแก้ไข|รุ่นการแก้ไข}}',
 'importnopages' => 'ไม่มีหน้าให้นำเข้า',
@@ -2648,7 +2658,7 @@ $1',
 'tooltip-ca-viewsource' => 'หน้านี้ถูกล็อก แต่ยังดูโค้ดได้',
 'tooltip-ca-history' => 'รุ่นที่แล้วของหน้านี้',
 'tooltip-ca-protect' => 'ล็อกหน้านี้',
-'tooltip-ca-unprotect' => 'ยà¸\81à¹\80ลิà¸\81การป้องกันหน้านี้',
+'tooltip-ca-unprotect' => 'à¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87การป้องกันหน้านี้',
 'tooltip-ca-delete' => 'ลบหน้านี้',
 'tooltip-ca-undelete' => 'เรียกคืนการแก้ไขหน้านี้กลับมาเป็นรุ่นก่อนที่ถูกลบ',
 'tooltip-ca-move' => 'เปลี่ยนชื่อหน้านี้',
@@ -2700,12 +2710,30 @@ $1',
 'tooltip-summary' => 'ใส่คำอธิบายอย่างย่อสั้น ๆ',
 
 # Stylesheets
-'common.css' => '/** CSS ที่อยู่ในหน้านี้จะมีผลต่อทุกสกินในเว็บไซต์ */',
-'monobook.css' => '/* CSS ที่อยู่ในหน้านี้จะมีผลต่อสกิน Monobook */',
+'common.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ทุกสกิน */',
+'standard.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินคลาสสิก */',
+'nostalgia.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินนอสตัลเจีย */',
+'cologneblue.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโคโลญจ์บลู */',
+'monobook.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */',
+'myskin.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินมายสกิน */',
+'chick.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินชิก */',
+'simple.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินซิมเปิล */',
+'modern.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมเดิร์น */',
+'vector.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
+'print.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ข้อมูลส่งออกเป็นสิ่งพิมพ์ */',
+'handheld.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่อุปกรณ์เคลื่อนที่ โดยขึ้นอยู่กับสกินที่ตั้งค่าไว้ใน $wgHandheldStyle */',
 
 # Scripts
-'common.js' => '/* จาวาสคริปต์ในหน้านี้จะถูกใช้งานต่อผู้ใช้ทุกคน */',
-'monobook.js' => '/* ถ้าไม่เห็นด้วย ให้ใช้ [[MediaWiki:common.js]] */',
+'common.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทุกคนในทุกหน้า */',
+'standard.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินคลาสสิก */',
+'nostalgia.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินนอสตัลเจีย */',
+'cologneblue.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโคโลญจ์บลู */',
+'monobook.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */',
+'myskin.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินมายสกิน */',
+'chick.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินชิก */',
+'simple.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินซิมเปิล */',
+'modern.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมเดิร์น */',
+'vector.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
 
 # Metadata
 'notacceptable' => 'เซิร์ฟเวอร์ของวิกิไม่สามารถให้ข้อมูลในรูปแบบที่ไคลเอนต์สามารถอ่านได้',
@@ -2751,6 +2779,7 @@ $1',
 'skinname-chick' => 'ชิก',
 'skinname-simple' => 'ซิมเปิล',
 'skinname-modern' => 'โมเดิร์น',
+'skinname-vector' => 'เวกเตอร์',
 
 # Patrolling
 'markaspatrolleddiff' => 'ทำเครื่องหมายว่าตรวจสอบแล้ว',
@@ -2829,7 +2858,7 @@ $1',
 'metadata-help' => 'ไฟล์นี้มีข้อมูลเพิ่มเติมแนบไว้ อาจจะมาจาก กล้องดิจิทัล สแกนเนอร์ หรือเครื่องรับส่งจีพีเอส อย่างไรก็ตามข้อมูลที่เก็บไว้อาจถูกดัดแปลงถ้าไฟล์ต้นฉบับถูกแก้ไขจากซอฟต์แวร์อื่น',
 'metadata-expand' => 'แสดงข้อมูลเพิ่มเติม',
 'metadata-collapse' => 'ซ่อนข้อมูลเพิ่มเติม',
-'metadata-fields' => 'à¸\84à¹\88าà¹\80อà¸\81à¸\8bิà¸\9f (Exif) à¸\82อà¸\87ภาà¸\9eà¸\94à¹\89าà¸\99ลà¹\88าà¸\87à¸\88ะà¹\81สà¸\94à¸\87à¸\84วà¸\9aà¸\84ูà¹\88à¹\84à¸\9bà¸\81ัà¸\9aภาà¸\9e
+'metadata-fields' => 'à¹\80à¸\82à¸\95à¸\82à¹\89อมูลà¹\80มà¸\97าà¹\80à¸\94à¸\95าà¸\82อà¸\87ภาà¸\9eà¸\94ัà¸\87à¸\97ีà¹\88à¹\81สà¸\94à¸\87รายà¸\81ารà¹\84วà¹\89à¹\83à¸\99à¸\82à¹\89อà¸\84วามà¸\99ีà¹\89 à¸\88ะà¸\96ูà¸\81รวมà¸\9aà¸\99หà¸\99à¹\89าภาà¸\9eà¹\80มืà¹\88อà¸\95าราà¸\87à¹\80มà¸\97าà¹\80à¸\94à¸\95าà¸\96ูà¸\81ยุà¸\9a à¹\80à¸\82à¸\95à¸\82à¹\89อมูลอืà¹\88à¸\99 à¹\86 à¸\88ะà¸\96ูà¸\81à¸\8bà¹\88อà¸\99à¹\82à¸\94ยà¸\9bริยาย
 * make
 * model
 * datetimeoriginal
@@ -2878,8 +2907,8 @@ $1',
 'exif-colorspace' => 'สเปซสี',
 'exif-componentsconfiguration' => 'ความหมายของแต่ละคอมโพเนนต์',
 'exif-compressedbitsperpixel' => 'โหมดการบีบอัดภาพ',
-'exif-pixelydimension' => 'à¸\84วามà¸\81วà¹\89าà¸\87à¸\97ีà¹\88à¸\99ำà¹\84à¸\9bà¹\83à¸\8aà¹\89à¹\84à¸\94à¹\89',
-'exif-pixelxdimension' => 'à¸\84วามยาวà¸\97ีà¹\88à¸\99ำà¹\84à¸\9bà¹\83à¸\8aà¹\89à¹\84à¸\94à¹\89',
+'exif-pixelydimension' => 'à¸\84วามà¸\81วà¹\89าà¸\87à¸\82อà¸\87ภาà¸\9e',
+'exif-pixelxdimension' => 'à¸\84วามสูà¸\87à¸\82อà¸\87ภาà¸\9e',
 'exif-usercomment' => 'ความเห็นผู้ใช้',
 'exif-relatedsoundfile' => 'ไฟล์เสียงที่เกี่ยวข้อง',
 'exif-datetimeoriginal' => 'วันที่และเวลาที่สร้าง',
@@ -2893,9 +2922,9 @@ $1',
 'exif-exposureprogram' => 'โปรแกรมเอกซ์โพเชอร์',
 'exif-spectralsensitivity' => 'ความไวสเปกตรัม',
 'exif-isospeedratings' => 'อัตราความเร็ว ISO',
-'exif-shutterspeedvalue' => 'à¸\84วามà¹\84วà¸\8aัà¸\95à¹\80à¸\95อรà¹\8c',
-'exif-aperturevalue' => 'รูรับแสง',
-'exif-brightnessvalue' => 'ความสว่าง',
+'exif-shutterspeedvalue' => 'à¸\84วามà¹\80รà¹\87วà¸\8aัà¸\95à¹\80à¸\95อรà¹\8c APEX',
+'exif-aperturevalue' => 'รูรับแสง APEX',
+'exif-brightnessvalue' => 'ความสว่าง APEX',
 'exif-exposurebiasvalue' => 'เอกซ์โพเชอร์ไบแอส',
 'exif-maxaperturevalue' => 'รูรับแสงกว้างสุด',
 'exif-subjectdistance' => 'ระยะวัตถุ',
@@ -2976,9 +3005,9 @@ $1',
 'exif-orientation-3' => 'ถูกหมุน 180°',
 'exif-orientation-4' => 'ถูกสลับแนวตั้ง',
 'exif-orientation-5' => 'ถูกหมุน 90° ทวนเข็มนาฬิกา และถูกสลับแนวตั้ง',
-'exif-orientation-6' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\95ามเข็มนาฬิกา',
+'exif-orientation-6' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\97วà¸\99เข็มนาฬิกา',
 'exif-orientation-7' => 'ถูกหมุน 90° ตามเข็มนาฬิกา และถูกสลับแนวตั้ง',
-'exif-orientation-8' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\97วà¸\99เข็มนาฬิกา',
+'exif-orientation-8' => 'à¸\96ูà¸\81หมุà¸\99 90° à¸\95ามเข็มนาฬิกา',
 
 'exif-planarconfiguration-1' => 'รูปแบบชังกี',
 'exif-planarconfiguration-2' => 'รูปแบบเพลนาร์',
@@ -3046,6 +3075,8 @@ $1',
 'exif-sensingmethod-7' => 'เซนเซอร์สามแนว',
 'exif-sensingmethod-8' => 'เซนเซอร์สามแนวสี',
 
+'exif-filesource-3' => 'กล้องถ่ายภาพนิ่งดิจิทัล',
+
 'exif-scenetype-1' => 'ภาพถ่ายโดยตรง',
 
 'exif-customrendered-0' => 'โพลเซสส์ปกติ',
index 2e3b780..e840332 100644 (file)
@@ -148,7 +148,7 @@ $messages = array(
 'dec' => 'dek',
 
 # Categories related messages
-'pagecategories' => 'Sahypanyň {{PLURAL:$1|kategoriýasy|kategoriýalary}}',
+'pagecategories' => '{{PLURAL:$1|Kategoriýa|Kategoriýalar}}',
 'category_header' => '"$1" kategoriýasyndaky sahypalar',
 'subcategories' => 'Kiçi kategoriýalar',
 'category-media-header' => '"$1" kategoriýasyndaky multimediýa faýllary',
@@ -1270,7 +1270,7 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'nchanges' => '$1 {{PLURAL:$1|üýtgeşme|üýtgeşme}}',
 'recentchanges' => 'Soňky üýtgeşmeler',
 'recentchanges-legend' => 'Soňky üýtgeşmeleriň opsiýalary',
-'recentchangestext' => 'Wikidäki iň soňky üýtgeşmeleri şu sahypadan yzarlaň.',
+'recentchanges-summary' => 'Wikidäki iň soňky üýtgeşmeleri şu sahypadan yzarlaň.',
 'recentchanges-feed-description' => 'Bu lentadaky wikide edilen iň soňky üýtgeşmeleri yzarlaň.',
 'recentchanges-label-newpage' => 'Bu özgerdiş täze bir sahypa döretdi',
 'recentchanges-label-minor' => 'Bu bir ujypsyzja özgerdiş',
index f8afeaa..c084e11 100644 (file)
@@ -140,7 +140,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ikubli ang napatrolyang mga pagbabagong nasa kamakailang mga pagbabago',
 'tog-newpageshidepatrolled' => 'Itago ang napatrolyang mga pahina mula talaan ng bagong pahina',
 'tog-extendwatchlist' => 'Palawigin ang talaan ng mga binabantayan upang maipakita ang lahat ng mga pagbabago, hindi lamang ang pinakakamakailan lamang',
-'tog-usenewrc' => 'Gamitin ang pinadagdagang huling binago (kailangan ng JavaScript)',
+'tog-usenewrc' => 'Mga pagbabago ng pangkat ayon sa pahina sa kamakailang mga pagbabago at bantayan (nangangailangan ng JavaScript)',
 'tog-numberheadings' => 'Automatikong bilangin ang mga pamagat',
 'tog-showtoolbar' => "Ipakita ang ''toolbar'' ng pagbabago (JavaScript)",
 'tog-editondblclick' => 'Magbago ng mga pahina sa dalawahang pagpindot (JavaScript)',
@@ -159,7 +159,7 @@ $messages = array(
 'tog-enotifwatchlistpages' => 'Padalhan ako ng e-liham kapag nabago ang isa sa mga pahinang binabantayan ko',
 'tog-enotifusertalkpages' => 'Padalhan ako ng e-liham kapag binago ang aking pahina ng usapan',
 'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na pagbabago ng mga pahina',
-'tog-enotifrevealaddr' => 'Ipakita ang adres ng e-liham ko sa loob ng mga e-liham ng pagpapahayag',
+'tog-enotifrevealaddr' => 'Ipakita ang aking direksiyong e-liham sa loob ng mga e-liham ng pagpapahayag',
 'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
 'tog-oldsig' => 'Umiiral na lagda:',
 'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
@@ -390,9 +390,9 @@ $1',
 'badaccess-group0' => 'Hindi ka pinahintulutang isagawa ang hiniling mong kilos.',
 'badaccess-groups' => 'Ang kilos na hiniling mo ay nakatakda lamang para sa mga tagagamit sa {{PLURAL:$2|pangkat na|isa sa mga pangkat na}}: $1.',
 
-'versionrequired' => 'Kinakailangan ang bersyong $1 ng MediaWiki',
+'versionrequired' => 'Kinakailangan ang bersiyong $1 ng MediaWiki',
 'versionrequiredtext' => 'Kinakailangan ang bersyong $1 ng MediaWiki upang magamit ang pahinang ito.
-Tingnan ang [[Special:Version|pahina ng bersyon]].',
+Tingnan ang [[Special:Version|pahina ng bersiyon]].',
 
 'ok' => 'Sige',
 'retrievedfrom' => 'Ikinuha mula sa "$1"',
@@ -413,7 +413,7 @@ Tingnan ang [[Special:Version|pahina ng bersyon]].',
 'collapsible-expand' => 'Ibuka',
 'thisisdeleted' => 'Tingnan o ibalik ang $1?',
 'viewdeleted' => 'Tingnan ang $1?',
-'restorelink' => '{{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
+'restorelink' => '{{PLURAL:$1|isang binurang pagbabago|$1 binurang pagbabago}}',
 'feedlinks' => 'Subo/Karga:',
 'feed-invalid' => 'Hindi tanggap na uri ng serbisyo ng pagpaparating.',
 'feed-unavailable' => 'Walang serbisyo mula sa sindikasyong pangpaglalathala',
@@ -495,8 +495,8 @@ Maaaring ibinura na ito ng iba.',
 'badtitle' => 'Hindi kanais-nais na pamagat',
 'badtitletext' => 'Ang hiniling na pamagat ng pahina ay hindi katanggap-tanggap, wala, o isang may-maling kawing na pamagat na pangugnayang-wika (interwika) o pangugnayang wiki (interwiki).
 Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaaring gamitin para sa mga pamagat.',
-'perfcached' => 'Ang sumusunod na datos ay nakaligpit at maaaring wala na sa panahon. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Ang sumusunod na datos ay nakaligpit, at dating isinapanahon noong $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Ang sumusunod na mga dato ay nakaligpit at maaaring hindi na napapanahon. Isang pinakamataas na {{PLURAL:$1|isang resulta|$1 mga resulta ang}} ang makukuha mula sa taguan.',
+'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 />
@@ -509,6 +509,7 @@ Tanong: $2',
 Pakisubok na lang ulit pagkaraan ng kaunting mga minuto.",
 'protectedpagetext' => 'Kinandado ang pahinang ito upang mahadlangang ang pagbago.',
 'viewsourcetext' => 'Maaari mong tingnan at kopyahin ang pinagmulan ng pahinang ito:',
+'viewyourtext' => "Matitingnan at makukopya mo ang pinagmulan ng '''mga pagbabago''' papunta sa pahinang ito:",
 'protectedinterface' => "Nagbibigay ang pahinang ito ng tekstong panghangganan (''interface'') para sa sopwer, at ikinandado para maiwasan ang pangaabuso.",
 'editinginterface' => "'''Babala:''' Binabago mo ang isang pahinang ginagamit sa pagbibigay ng tekstong panghangganan para sa sopwer.
 Makakaapekto ang mga pagbago sa pahinang ito sa anyo ng hangganang (''interface'') pangtagagamit na para sa ibang mga tagagamit.
@@ -517,9 +518,16 @@ Para sa mga salinwika, paki isang-alang-alang o konsiderahin ang paggamit ng [//
 'cascadeprotected' => 'Nakasanggalang ang pahinang ito mula sa mga pagbabago, dahil kabilang ito sa sumusunod na {{PLURAL:$1|pahinang|mga pahinang}} nakasanggalang sa pamamagitan ng binuhay na opsyong "nahuhulog" (kumakaskada):
 $2',
 'namespaceprotected' => "Wala kang pahintulot na magbago ng mga pahinang nasa ngalan-espasyong '''$1'''.",
+'customcssprotected' => 'Wala kang pahintulot na baguhin ang pahina ng CSS na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
+'customjsprotected' => 'Wala kang pahintulot na baguhin ang pahina ng JavaScript na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
 'ns-specialprotected' => 'Hindi pwedeng baguhin ang mga natatanging pahina.',
 'titleprotected' => "Nakasanggalang ang pamagat na ito mula sa paglikha ni [[User:$1|$1]].
 Ang ibinigay na dahilan ay ''$2''.",
+'filereadonlyerror' => 'Hindi nabago ang talaksang "$1" dahil ang repositoryong talaksan na "$2" ay nasa kalakarang mababasa lang.
+
+Ang tagapangasiwang nagkandado nito ay nag-alok ng ganitong paliwanag: "$3".',
+'invalidtitle-knownnamespace' => 'Hindi katanggap-tanggap na pamagat na may puwang na pampangalang "$2" at tekstong "$3"',
+'invalidtitle-unknownnamespace' => 'Hindi katanggap-tanggap na pamagat na mayroong hindi nalalamang bilang na pampuwang ng pangalan na $1 at tekstong "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Masamang kompigurasyon: hindi kilalang tagahagilap (iskaner) ng birus: ''$1''",
@@ -619,6 +627,7 @@ Walang e-liham na ipapadala para sa anumang sumusunod na tampok na kasangkapang-
 'invalidemailaddress' => 'Hindi matatanggap ang direksiyong e-liham na ito dahil tila mayroon itong maling anyo.
 Pakipasok ang isang may mahusay na anyong adres o paki-iwang walang laman na lang ang lagayan.',
 'cannotchangeemail' => 'Hindi maaaring baguhin ang mga direksiyong e-liham sa wiking ito.',
+'emaildisabled' => 'Ang sityong ito ay hindi makapagpapadala ng mga e-liham.',
 'accountcreated' => 'Nilikha na ang kuwenta',
 'accountcreatedtext' => 'Nilikha na ang kuwentang tagagamit para kay $1.',
 'createaccount-title' => 'Paglikha ng kuwenta para sa {{SITENAME}}',
@@ -635,6 +644,7 @@ Maghintay po muna bago subukan uli.',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Hindi malamang kamalian sa tungkulin ng liham ng PHP ()',
+'user-mail-no-addy' => 'Sinubukang magpadala ng e-liham na walang tirahan na para sa e-liham.',
 
 # Change password dialog
 'resetpass' => 'Palitan ang hudyat',
@@ -660,15 +670,18 @@ Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bag
 'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
 'passwordreset-legend' => 'Itakdang muli ang hudyat',
 'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng dato sa ibaba}}',
+'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng datos sa ibaba}}',
 'passwordreset-username' => 'Pangalan ng tagagamit:',
-'passwordreset-email' => 'Tirahan ng e-liham:',
-'passwordreset-emailtitle' => 'Mga detalye ng akawnt sa {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa tirahan ng IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng akawnt para sa {{SITENAME}} ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+'passwordreset-domain' => 'Nasasakupan:',
+'passwordreset-capture' => 'Tingnan ang lumabas na e-liham?',
+'passwordreset-capture-help' => 'Kapag tsetsekan mo ang kahong ito, ang e-liham (may pansamantalang hudyat) ay ipapakita sa iyo at ipapadala rin sa tagagamit.',
+'passwordreset-email' => 'Direksiyong e-liham:',
+'passwordreset-emailtitle' => 'Mga detalye ng kuwenta sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa direksiyong IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng kuwenta para sa {{SITENAME}} ($4). Ang sumusunod na {{PLURAL:$3|kuwenta ng tagagamit ay|mga kuwenta ng tagagamit ay}} may kaugnayan sa direksiyong e-liham na ito:
 
 $2
 
-{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang mga pansamantalang hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
 Dapat kang lumagda at pumili ng isang bagong hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong hudyat, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong hudyat.',
 'passwordreset-emailtext-user' => 'Ang tagagamit na si $1 sa {{SITENAME}} ay humiling ng isang paalala ng iyong mga akawnt ng detalye para sa {{SITENAME}}
 ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
@@ -680,13 +693,18 @@ Dapat kang lumagda at pumili ng isang hudyat ngayon. Kung ibang tao ang gumawa n
 'passwordreset-emailelement' => 'Pangalan ng tagagamit: $1
 Pansamantalang hudyat: $2',
 'passwordreset-emailsent' => 'Naipadala na ang isang e-liham na pampaalala.',
+'passwordreset-emailsent-capture' => 'Naipadala na ang isang e-liham na paalala, na ipinapakita sa ibaba.',
+'passwordreset-emailerror-capture' => 'Nalikha na ang isang e-liham na paalala, na ipinapakita sa ibaba, subalit nabigo ang pagpapadala sa tagagamit: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Baguhin ang direksiyong e-liham',
 'changeemail-header' => 'Baguhin ang direksiyong e-liham ng kuwenta',
+'changeemail-text' => 'Kumpletuhin ang pormularyong ito upang mabago ang tirahan na para sa e-liham mo. Kakailanganin mong ipasok ang iyong hudyat upang tiyakin ang pagbabagong ito.',
+'changeemail-no-info' => 'Kailangan mong lumagda upang tuwirang mapuntahan ang pahinang ito.',
 'changeemail-oldemail' => 'Kasalukuyang direksiyong e-liham:',
 'changeemail-newemail' => 'Bagong direksiyong e-liham:',
 'changeemail-none' => '(wala)',
+'changeemail-submit' => 'Baguhin ang e-liham',
 'changeemail-cancel' => 'Kanselahin',
 
 # Edit page toolbar
@@ -720,8 +738,8 @@ Pansamantalang hudyat: $2',
 'showlivepreview' => 'Buhay na paunang tingin',
 'showdiff' => 'Ipakita ang mga pagbabago',
 'anoneditwarning' => "'''Babala:''' Hindi ka nakalagda.
-Matatala ang adres ng IP mo sa kasaysayan ng pagbabago ng pahinang ito.",
-'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong adres ng IP sa kasaysayan ng pagbabago ng pahinang ito.''",
+Matatala ang iyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.",
+'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
 'missingsummary' => "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.
 Kapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
 'missingcommenttext' => 'Magbigay ng isang kumento/puna sa ibaba.',
@@ -730,17 +748,18 @@ Kapag pinindot mo uli ang \"{{int:savearticle}}\", masasagip ang pagbabago mo na
 'summary-preview' => 'Paunang tingin sa buod:',
 'subject-preview' => 'Paunang tingin sa paksa/paulo:',
 'blockedtitle' => 'Hinarang ang tagagamit',
-'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o adres ng IP.'''
+'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o direksiyong IP.'''
 
-Ginawa ang pagharang/paghadlang ni $1. Ito ang ibinigay na dahilan: ''$2''.
+Ginawa ni $1 ang pagharang/paghadlang.
+Ito ang ibinigay na dahilan: ''$2''.
 
 * Simula ng pagharang/paghadlang: $8
 * Katapusan ng pagharang/paghadlang: $6
 * Ang hinarang/hinadlangan ay si: $7
 
-Maaari kang makipag-ugnayan kay $1 o sa iba pang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
-Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na adres ng e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
-Ang pangkasalukuyang adres ng IP mo ay $3, at ang ID ay #$5.
+Maaari kang makipag-ugnayan kay $1 o sa ibang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
+Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na direksiyong e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
+Ang kasalukuyan mong direksiyong IP ay $3, at ang ID ng pagharang/paghadlang ay #$5.
 Pakisama ang lahat ng mga detalye sa anumang mga pagtatanong na ginagawa/gagawin mo.",
 'autoblockedtext' => 'Kusang hinadlangan/hinarang ang adres ng IP mo dahil ginamit ito ng ibang tagagamit, na hinadlangan/hinarang ni $1.
 Ang ibinigay na dahilan ay:
@@ -791,12 +810,12 @@ Pakisuri kung ibig mong likhain/baguhin ang pahinang ito.',
 'userpage-userdoesnotexist-view' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".',
 'blocked-notice-logextract' => 'Kasalukuyang hinarang ang tagagamit na ito.
 Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa baba para sa inyong pagsasangguni:',
-'clearyourcache' => "'''Tandaan: Pagkatapos magtala, baka kailangan mong linisin ang baunan ng iyong pambasa-basa upang makita ang mga pagbabago.'''
-'''Firefox / Safari:''' Panatilihing nakapindot ang ''Shift'' habang kiniklik ang ''Reload'', o pindutin ang ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' sa isang Mac)
-'''Google Chrome:''' Pindutin ang ''Ctrl-Shift-R'' (''Command-Shift-R'' sa isang Mac)
-'''Internet Explorer:''' Panatilihing nakapindot ang ''Ctrl'' habang kiniklik ang ''Refresh'', o pindutin ang ''Ctrl-F5''.
-'''Konqueror:''' I-klik ang ''Reload'' o pindutin ang ''F5''
-'''Opera:''' Linisin ang baunan sa ''Tools → Preferences''",
+'clearyourcache' => "'''Paunawa: Pagkatapos magsagip, baka kailangan mong laktawan ang taguan ng pantingin-tingin mo upang makita ang mga pagbabago.
+'''Firefox / Safari:''' Panatilihin ang pagpindot sa ''Shift'' habang nilalagitik ang ''Reload'', o pindutin ang ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' sa Mac)
+'''Google Chrome:''' Pindutin ang ''Ctrl-Shift-R'' (''⌘-Shift-R'' sa Mac)
+'''Internet Explorer:''' Panatilihin ang pagpindot sa ''Ctrl'' habang nilalagitik ang ''Refresh'', o pindutin ang ''Ctrl-F5''
+'''Konqueror:''' Lagitikin ang ''Reload'' o pindutin ang ''F5''
+'''Opera:''' Linisin ang taguan sa ''Tools → Preferences''",
 'usercssyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong CSS bago sagipin.",
 'userjsyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong JavaScript bago sagipin.",
 'usercsspreview' => "'''Tandaan mong paunang tingin pa lamang ito ng iyong CSS na pantagagamit.'''
@@ -811,8 +830,9 @@ Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa baba para sa iny
 Tandaang gumagamit ang pinasadyang mga pahinang .css at .js ng mga pamagat na may maliliit na mga titik, halimbawa na ang {{ns:user}}:Foo/vector.css na taliwas sa {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Naisapanahon na)',
 'note' => "'''Paunawa:'''",
-'previewnote' => "'''Isang lamang itong paunang tingin;
-hindi pa nasasagip ang mga pagbabago!'''",
+'previewnote' => "'''Tandaan na isa lamang itong paunang tingin.'''
+Hindi pa nasasagip ang mga binago mo!",
+'continue-editing' => 'Ipagpatuloy ang pamamatnugot',
 'previewconflict' => 'Ipinamamalas ng paunang tinging ito ang teksto sa loob ng pangitaas na pook-patnugutan ng teksto ayon sa lilitaw na anyo nito kapag pinili mo ang pagsagip.',
 'session_fail_preview' => "'''Paumanhin! Hindi namin maproseso ang iyong pagbabago hinggil sa pagkawala ng sesyon ng datos.
 Paki ulit muli. Kung hindi ito gumana, subukang umalis sa pagkalagda at bumalik muli.'''",
@@ -827,6 +847,7 @@ Tinanggihan ang pagbabago upang maiwasan ang korapsyon ng teksto ng artikulo.
 Kadalasang nangyayari ito kapag gumagamit ka ng masurot na serbisyo ng hindi-nakikilalang apoderadong (''anonymous proxy'') nasa web.",
 'edit_form_incomplete' => "'''Ilan sa mga bahagi ng pormularyong pampatnugot ay hindi nakarating sa tagapaghain; suriing muli na ang iyong mga pagbabago ay buo at subukang muli.'''",
 'editing' => 'Binabago ang $1',
+'creating' => 'Nililikha ang $1',
 'editingsection' => 'Binabago ang $1 (bahagi)',
 'editingcomment' => 'Binabago ang $1 (bagong seksyon)',
 'editconflict' => 'Alitan sa pagbabago: $1',
@@ -850,8 +871,8 @@ Nangangako ka rin sa amin na ikaw mismo ang sumulat nito, sumipi/kumopya nito mu
 Kung ayaw mong mabago nang labis-labis ang mga isinulat mo, mas mabuting huwag mo na lamang ipasa iyan dito.<br />
 Nangangako ka rin sa amin na ikaw ang mismong sumulat nito, o sinipi/kinopya mo ito mula sa isang pinagmulang nasa dominyo na ng publiko o katulad (tingnan ang $1 para sa mga detalye).
 '''HUWAG MAGTALA NG AKDANG NAKAKARAPATANG-ARI (NAKAKOPIRAYT) NA HINDI MUNA HUMIHINGI NG PAHINTULOT!'''",
-'longpageerror' => "'''KAMALIAN: May habang $1 ''kilobyte'' ang ipinasa mong teksto, na mas mahaba kaysa $2 ''kilobyte'' na siyang pinakamataas na nakatakdang halaga.
-Hindi ito masasagip.'''",
+'longpageerror' => "'''Kamalian: May haba na {{PLURAL:$1|isang kilobyte|$1 mga kilobyte}} ang ipinasa mong teksto, na mas mahaba kaysa sa pinakamataas na nakatakdang halaga na {{PLURAL:$2|isang kilobyte|$2 mga kilobyte}}.''' 
+Hindi ito masasagip.",
 'readonlywarning' => "'''BABALA: Ikinandado ang kalipunan ng dato para sa gawaing pampagpapanatili, kaya't hindi mo pa masasagip ang mga pagbabagong ginawa mo ngayon.
 Maaaring ibigin mong gupitin at idikit ang teksto patungo sa isang talaksang pangteksto at sagipin ito mamaya.'''
 
@@ -894,6 +915,7 @@ Tila binura na ito.',
 'edit-no-change' => 'Binalewala ang pagbabago mo, dahil walang pagbabagong ginawa sa teksto.',
 'edit-already-exists' => 'Hindi makalikha ng isang bagong pahina.
 Umiiral na ito.',
+'defaultmessagetext' => 'Nakatakdang teksto ng mensahe',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Babala: Naglalaman ang pahinang ito ng napakaraming mamahaling mga tawag na pantungkulin.
@@ -908,6 +930,12 @@ Hindi isasama ang ilang mga suleras.',
 'parser-template-loop-warning' => 'Nadiskubreng silo ng suleras: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Lumabis na sa nakatakdang lalim ng rekursyon (pormula) ng suleras ($1)',
 'language-converter-depth-warning' => 'Lumampas sa ($1) ang hangganan ng lalim ng pampalit ng wika',
+'node-count-exceeded-category' => 'Mga pahina kung saan nalampasan ang bilang ng buko',
+'node-count-exceeded-warning' => 'Lumampas ang pahina sa bilang ng buko',
+'expansion-depth-exceeded-category' => 'Mga pahina kung saan lampas ang lalim ng paglawak',
+'expansion-depth-exceeded-warning' => 'Lumampas ang pahina sa lalim ng paglawak',
+'parser-unstrip-loop-warning' => 'Napansin ang silo ng hindi pagtalop',
+'parser-unstrip-recursion-limit' => 'Nalampasan ang hangganan ng rekursiyon ng hindi pagtalop ($1)',
 
 # "Undo" feature
 'undo-success' => 'Matatanggal ang pagbabago.
@@ -962,28 +990,28 @@ Subukang [[Special:Search|hanapin sa wiki]] para sa mga kaugnay na mga bagong pa
 'rev-deleted-user-contribs' => '[itinanggal ang bansag o adres ng IP - itinago ang pagbabago mula sa mga ambag]',
 'rev-deleted-text-permission' => "Itong pagbabago ng pahina ay '''ibinura'''.
 Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-deleted-text-unhide' => "Itong pagbabago ng pahina ay '''ibinura'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-suppressed-text-unhide' => "Itong pagbabago ng pahina ay '''isinugpo'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-deleted-text-view' => "Itong pagbabago ng pahina ay '''ibinura'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-suppressed-text-view' => "Itong pagbabago ng pahina ay '''isinugpo'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-deleted-text-unhide' => "'''Binura''' ang pahinang ito ng pagbabago.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
+Maaari mo pa ring [$1 tingnan ang pagbabagong ito] kung nais mong magpatuloy.",
+'rev-suppressed-text-unhide' => "Ang pagbabagong ito ng pahina ay '''pinigilan'''.
+Maaaring matagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].
+Maaari mo pa ring [$1 tingnan ang rebisyong ito] kung nais mong magpatuloy.",
+'rev-deleted-text-view' => "Ang pagbabagong ito sa pahina ay '''binura'''.
+Maaarin mo itong makita; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
+'rev-suppressed-text-view' => "Ang pagbabagong ito sa pahina ay '''pinigilan'''.
+Maaari mo itong makita; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].",
 'rev-deleted-no-diff' => "Hindi mo maaaring makita ang pagkakaibang ito dahil '''binura na''' ang isa sa mga pagbabago.  Matatagpuan ang mga detalye mula sa loob ng [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
 'rev-suppressed-no-diff' => "Hindi mo maaaring tingnan ang pagkakaibang ito dahil '''ibinura''' ang isa sa mga pagbabago.",
-'rev-deleted-unhide-diff' => "'''Binura''' ang isa sa mga pagbabago ng pagkakaibang ito.
-Maaaring matagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
-Bilang isang tagapangasiwa, maaari mo pa ring [$1 tingnan ang pagkakaibang ito] kung nais mong magpatuloy.",
-'rev-suppressed-unhide-diff' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-deleted-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''binura'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-suppressed-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-deleted-unhide-diff' => "'''Nabura''' ang isa sa mga pagbabago para sa kaibahang ito.
+Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
+Maaari mo pa ring [$1 makita ang pagkakaibang ito] kung nais mong magpatuloy.",
+'rev-suppressed-unhide-diff' => "Ang isa sa mga pagbabago para sa kaibahang ito ay '''pinigilan'''.
+Matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].
+Maaari mo pa ring [$1 tingnan ang pagbabagong ito] kung nais mong magpatuloy.",
+'rev-deleted-diff-view' => "'''Nabura''' ang isa sa mga pagbabago para sa kaibahang ito.
+Makikita mo pa rin pagkakaibang ito; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
+'rev-suppressed-diff-view' => "'''Pinigalan''' ang isa sa mga pagbabago para sa kaibahang ito.
+Makikita mo ang pagkakaibang ito; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].",
 'rev-delundel' => 'ipakita/itago',
 'rev-showdeleted' => 'ipakita',
 'revisiondelete' => 'Burahin/ibalik ang mga pagbabago',
@@ -1051,8 +1079,8 @@ Pakitingnan ang mga talaan.',
 
 # Suppression log
 'suppressionlog' => 'Tala ng pagpipigil',
-'suppressionlogtext' => "Nasa ibaba ang isang tala ng mga pagbura at mga pagharang/paghadlang na kinakasangkutan ng nilalamang nakatago sa mga ''sysop''.
-Tingnan ang [[Special:IPBlockList|talaan ng hinarang na/hinadlangang IP]] para sa isang talaan ng mga pangkasalukuyan at gumaganang mga pinagbawalan at mga pagharang/paghadlang.",
+'suppressionlogtext' => 'Nasa ibaba ang isang talaan ng mga pagbura at mga pagharang na kinakasangkutan ng nilalamang nakatago sa mga tagapangasiwa.
+Tingnan ang [[Special:BlockList||talaan ng pagharang]] para sa isang talaan ng mga pangkasalukuyang gumaganang mga pinagbawalan at mga pagharang.',
 
 # History merging
 'mergehistory' => 'Pagsanibin mga pahina ng kasaysayan',
@@ -1084,7 +1112,9 @@ Tiyakin na ang pagbabago ay makapagpapanatili ng pagkakatuluy-tuloy ng pahinang
 'mergelogpagetext' => 'Nasa ibaba ang isang talaan ng mga pinakakamakailan lamang na mga pagsasanib ng isang kasaysayan ng pahina patungo sa isa pa.',
 
 # Diffs
-'history-title' => 'Kasaysayan ng pagbabago ng "$1"',
+'history-title' => 'Kasaysayan sa pagbago ng "$1"',
+'difference-title' => 'Pagkakaiba sa pagitan ng mga pagbago ng "$1"',
+'difference-title-multipage' => 'Kaibahan sa pagitan ng mga pahinang "$1" at "$2"',
 'difference-multipage' => '(Pagkakaiba sa pagitan ng mga pahina)',
 'lineno' => 'Linya $1:',
 'compareselectedversions' => 'Paghambingin ang mga napiling bersyon',
@@ -1165,10 +1195,11 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'qbsettings-fixedright' => 'Inayos ang kanan',
 'qbsettings-floatingleft' => 'Kaliwa lumulutang',
 'qbsettings-floatingright' => 'Kanan lumulutang',
+'qbsettings-directionality' => 'Naayos na, ayon sa kapupuntahan ng panitik ng wika mo',
 
 # Preferences page
 'preferences' => 'Mga kagustuhan',
-'mypreferences' => 'Aking mga kagustuhan',
+'mypreferences' => 'Mga nais ko',
 '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.',
@@ -1179,17 +1210,19 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'prefs-beta' => 'Mga kaangkapang-katangiang pang-beta',
 'prefs-datetime' => 'Petsa at oras',
 'prefs-labs' => 'Mga kasangkapang-katangiang pang-Labs',
+'prefs-user-pages' => 'Mga pahina ng tagagamit',
 'prefs-personal' => 'Sanligang pangkatangian ng tagagamit',
 'prefs-rc' => 'Kamakailan lamang na mga pagbabago',
 'prefs-watchlist' => 'Talaan ng mga binabantayan',
 'prefs-watchlist-days' => 'Mga araw na ipapakita sa talaan ng mga binabantayan:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Pinakamataas ang $1 {{PLURAL:$1|araw|mga araw}}',
 'prefs-watchlist-edits' => 'Pinakamaraming bilang ng mga pagbabagong ipapakita sa pinalawak na talaan ng mga binabantayan:',
 'prefs-watchlist-edits-max' => 'Pinakamataas na bilang: 1000',
 'prefs-watchlist-token' => 'Balap ng talaan ng mga binabantayan:',
 'prefs-misc' => 'Bala-balaki',
 'prefs-resetpass' => 'Baguhin ang hudyat',
-'prefs-setemail' => 'Itakda ang bagong tirahan ng e-liham $1',
+'prefs-changeemail' => 'Baguhin ang direksiyong e-liham',
+'prefs-setemail' => 'Magtakda ng direksiyong e-liham',
 'prefs-email' => 'Mga pagpipilian para sa e-liham',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Sagipin',
@@ -1211,7 +1244,7 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'savedprefs' => 'Nasagip na ang mga kagustuhan mo.',
 'timezonelegend' => 'Sona ng oras:',
 'localtime' => 'Lokal na oras:',
-'timezoneuseserverdefault' => 'Gamitin ang itinakda ng serbidor',
+'timezoneuseserverdefault' => 'Gamitin ang katakdaan ng wiki ($1)',
 'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
 'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
 'servertime' => 'Oras sa serbidor',
@@ -1246,7 +1279,8 @@ Hindi ito maibabalik sa dating gawi.',
 'prefs-registration' => 'Oras ng pagtatala:',
 'yourrealname' => 'Tunay na pangalan:',
 'yourlanguage' => 'Wika:',
-'yourvariant' => 'Naiiba pa:',
+'yourvariant' => 'Iba pang anyo ng wika ng nilalaman:',
+'prefs-help-variant' => 'Ang nais mong kaibahan o ortograpiya sa pagpapakita ng mga pahina ng nilalaman ng wiking ito.',
 'yournick' => 'Panglagda:',
 'prefs-help-signature' => 'Ang mga puna sa mga pahina ng usapan ay dapat na lagdaan ng "<nowiki>~~~~</nowiki>" na magiging lagda mo at marka ng oras.',
 'badsig' => 'Hindi tamang hilaw na lagda.
@@ -1263,7 +1297,7 @@ Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
 Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
 'prefs-help-email' => 'Hindi talaga kailangang may tirahan ng e-liham, subalit kailangan para sa muling pagtatakda ng hudyat, kung makalimutan mo ang hudyat mo.',
 'prefs-help-email-others' => 'Mapipili mo rin na makipag-ugnayan sa iyo ang iba sa pamamagitan ng iyong pahina ng tagagamit o usapan na hindi kailangang ilantad ang katauhan mo.',
-'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'prefs-help-email-required' => 'Kailangan ang direksiyong e-liham.',
 'prefs-info' => 'Payak na kabatiran',
 'prefs-i18n' => 'Internasyonalisasyon',
 'prefs-signature' => 'Lagda',
@@ -1280,15 +1314,15 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'prefs-diffs' => 'Mga pagkakaiba',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang tirahan ng e-liham',
-'email-address-validity-invalid' => 'Magpasok ng isang tanggap na tirahan ng e-liham',
+'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang direkisyong e-liham',
+'email-address-validity-invalid' => 'Magpasok ng isang tanggap na direksiyong e-liham',
 
 # User rights
 'userrights' => 'Pamamahala ng mga karapatan ng tagagamit',
 'userrights-lookup-user' => 'Pamahalaan ang mga pangkat ng tagagamit',
 'userrights-user-editname' => 'Magpasok ng isang pangalan ng tagagamit:',
 'editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
-'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
 'saveusergroups' => 'Sagipin ang mga pangkat ng tagagamit',
 'userrights-groupsmember' => 'Kasapi ng:',
@@ -1301,7 +1335,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'userrights-no-interwiki' => 'Wala kang pahintulot na baguhin ang mga karapatan ng tagagamit sa ibang mga wiki.',
 'userrights-nodatabase' => 'Hindi umiiral o hindi lokal ang kalipunan ng datos na $1',
 'userrights-nologin' => 'Kailangang [[Special:UserLogin|nakalagda ka]] bilang tagapangasiwa upang maitalaga ang mga karapatan ng tagagamit.',
-'userrights-notallowed' => 'Walang pahintulot ang iyong akawnt na magtalaga ng mga karapatan ng tagagamit.',
+'userrights-notallowed' => 'Walang pahintulot ang akawnt mo na magdagdag o magtanggal ng mga karapatan ng tagagamit.',
 'userrights-changeable-col' => 'Mga pangkat na maaari mong baguhin',
 'userrights-unchangeable-col' => 'Mga pangkat na hindi mo mababago',
 
@@ -1311,16 +1345,16 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'group-autoconfirmed' => 'Mga tagagamit na nakompirma sa kusang paraan (autokompirmasyon)',
 'group-bot' => "Mga ''bot''",
 'group-sysop' => 'Mga tagapangasiwa',
-'group-bureaucrat' => 'Mga burokrato',
+'group-bureaucrat' => 'Mga burokrata',
 'group-suppress' => 'Mga tagapagingat-tago',
 'group-all' => '(lahat)',
 
-'group-user-member' => 'Tagagamit',
-'group-autoconfirmed-member' => 'Kusang nakumpirmang tagagamit',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'tagapangasiwa',
-'group-bureaucrat-member' => 'Burokrato',
-'group-suppress-member' => 'Tagapagingat-tago',
+'group-user-member' => '{{GENDER:$1|tagagamit}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|tagagamit na kusang natiyak}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|tagapangasiwa}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrata}}',
+'group-suppress-member' => '{{GENDER:$1|tagapangalingat}}',
 
 'grouppage-user' => '{{ns:project}}:Mga tagagamit',
 'grouppage-autoconfirmed' => '{{ns:project}}:Kusang nakumpirmang mga tagagamit',
@@ -1388,12 +1422,13 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'right-siteadmin' => 'Ikandado at alisin ang pagkakakandado ng kalipunan ng dato',
 'right-override-export-depth' => 'Iluwas ang mga pahina na kabilang ang mga pahinang nakakawing magpahanggang sa isang lalim na 5',
 'right-sendemail' => 'Magpadala ng e-liham sa ibang mga tagagamit',
-'right-passwordreset' => 'Muling itinakdang hudyat para sa isang tagagamit ([[Special:PasswordReset|natatanging pahina]])',
+'right-passwordreset' => 'Tingnan ang mga e-liham ng muling pagtatakda ng hudyat',
 
 # User rights log
 'rightslog' => 'Tala ng mga karapatan ng tagagamit',
 'rightslogtext' => 'Isa itong tala ng mga pagbabago sa mga karapatan ng tagagamit.',
 'rightslogentry' => 'binago ang kasapiang pampangkat para kay $1 mula sa $2 patungong $3',
+'rightslogentry-autopromote' => 'ay kusang naitaas ang ranggo mula $2 upang maging $3',
 'rightsnone' => '(wala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1421,6 +1456,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'action-suppressionlog' => 'tingnan itong pribadong tala',
 'action-block' => 'harangin sa paggawa ng pagbabago ang tagagamit na ito',
 'action-protect' => 'baguhin ang mga antas ng pagsasanggalang para sa pahinang ito',
+'action-rollback' => 'mabilisang igulong na pabalik ang mga pagbabago ng huling tagagamit na namatnugot ng isang partikular na pahina',
 'action-import' => 'angkatin itong pahina mula sa ibang wiki',
 'action-importupload' => 'angkatin ang pahinang ito mula sa isang ikinargang talaksan',
 'action-patrol' => 'tatakan bilang napatrolya na ang mga pagbabagong ginawa ng iba',
@@ -1430,12 +1466,13 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'action-userrights' => 'baguhin ang lahat ng karapatan ng tagagamit',
 'action-userrights-interwiki' => 'baguhin ang mga karapatan ng tagagamit na nasa ibang mga wiki',
 'action-siteadmin' => 'ikandado o tanggalin ang pagkakakandado ng kalipunan ng dato',
+'action-sendemail' => 'magpadala ng mga e-liham',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
 'recentchanges' => 'Kamakailang pagbabago',
 'recentchanges-legend' => 'Mga pagpipilian para sa kamakailang mga pagbabago',
-'recentchangestext' => 'Subaybayan ang mga pinakahuling pagbabago sa wiki sa pahinang ito.',
+'recentchanges-summary' => 'Subaybayan ang mga pinakahuling pagbabago sa wiki sa pahinang ito.',
 'recentchanges-feed-description' => 'Sundan ang pinakahuling mga pagbabago sa wiki sa pamamagitan ng feed na ito.',
 'recentchanges-label-newpage' => 'Lumikha ng isang bagong pahina ang pagbabagong ito',
 'recentchanges-label-minor' => 'Isa itong munting pagbabago',
@@ -1461,9 +1498,11 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'number_of_watching_users_pageview' => '[$1 binabantayang {{PLURAL:$1|tagagamit|mga tagagamit}}]',
 'rc_categories' => 'Itakda lang sa mga kaurian (ihiwalay sa pamamagitan ng "|")',
 'rc_categories_any' => 'Kahit ano',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|mga byte}} pagkaraan ng pagbabago',
 'newsectionsummary' => '/* $1 */ bagong seksyon',
 'rc-enhanced-expand' => 'Ipakita ang mga detalye (kailangan ng JavaScript)',
 'rc-enhanced-hide' => 'Itago ang mga detalye',
+'rc-old-title' => 'dating nalikha bilang "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Kaugnay na mga pagbabago',
@@ -1513,6 +1552,7 @@ Para maisama ang isang talaksan sa loob ng isang pahina, gumamit ng isang kawing
 'ignorewarnings' => 'Balewalain ang anumang mga babala',
 'minlength1' => 'Dapat may kahit na isang titik lang ang mga pangalan ng talaksan.',
 'illegalfilename' => 'Ang pangalan ng talaksan (filename) na "$1" ay mayroon mga karakter na hindi pinapahintulot bilang pamagat ng isang pahina. Paki palitan ang pangalan at subukang ikarga muli.',
+'filename-toolong' => 'Ang mga pangalan ng talaksan ay hindi maaaring maging mas mahaba kaysa sa 240 mga byte.',
 'badfilename' => 'Pinalitan ang pangalan ng talaksan na naging "$1".',
 'filetype-mime-mismatch' => 'Hindi tumutugma ang dugtong ng talaksan na ".$1" sa napansing uri ng MIME ng talaksan ($2).',
 'filetype-badmime' => 'Hindi pinapahintulutang maikarga ang uring "$1" ng mga talaksang MIME.',
@@ -1538,6 +1578,7 @@ Ang mga pinapayagang {{PLURAL:$3|uri ng talaksan ay ang|mga uri ng talaksan ay a
 ang talaksang ito ay $2.',
 'largefileserver' => 'Mas malaki ang talaksan kaysa nakatakdang papahintulutan ng serbidor.',
 'emptyfile' => 'Mukhang walang laman ang talaksan (file) na ikinarga mo. Maaaring dahil ito sa maling pagkapasok ng pangalan ng talaksan.  Paki tingin kung gusto mo talagang ikarga ang talaksan na ito.',
+'windows-nonascii-filename' => 'Ang wiking ito ay hindi nagsusuporta ng mga pangalan ng talaksan na mayroong natatanging mga panitik.',
 'fileexists' => "Mayroon ng talaksan na ganitong pangalan, paki tingin ang '''<tt>[[:$1]]</tt>''' kung tiyak ka na babaguhin ito.
 [[$1|thumb]]",
 'filepageexists' => "Ang pahina ng paglalarawan para sa talaksan na ito ay nalikha na sa '''<tt>[[:$1]]</tt>''', ngunit walang talaksang umiiral na may ganitong pangalan.
@@ -1545,8 +1586,8 @@ Hindi lilitaw ang buod na ipapasok mo sa pahina ng paglalarawan.
 Para lumitaw ang buod mo doon, kailangan mong kinakamay na baguhin ito.
 [[$1|thumb]]",
 'fileexists-extension' => "Mayroon talaksan na ganitong pangalan: [[$2|thumb]]
-* Pangalan ng ikakargang talaksan: '''<tt>[[:$1]]</tt>'''
-* Pangalan ng mayroon nang talaksan: '''<tt>[[:$2]]</tt>'''
+* Pangalan ng ikinakargang talaksan: '''<tt>[[:$1]]</tt>'''
+* Pangalan ng umiiral na talaksan: '''<tt>[[:$2]]</tt>'''
 Pumili ng ibang pangalan.",
 'fileexists-thumbnail-yes' => "Mukhang pinaliit ''(thumbnail)'' na larawan ang talaksan. [[$1|thumb]]
 Paki tingin ang talaksan '''<tt>[[:$1]]</tt>'''.
@@ -1603,6 +1644,48 @@ Kapag nagpatuloy ang suliranin, makipagugnayan sa isang [[Special:ListUsers/syso
 'upload-too-many-redirects' => 'Naglalaman ng napakaraming panlipat ng pupuntahan ang URL',
 'upload-unknown-size' => 'Hindi nalalamang laki',
 'upload-http-error' => 'Naganap ang isang kamaliang pang-HTTP: $1',
+'upload-copy-upload-invalid-domain' => 'Hindi makakakuha ng mga pagkakarga ng kopya mula sa nasasakupang ito.',
+
+# File backend
+'backend-fail-stream' => 'Hindi mapadaloy ang talaksang $1.',
+'backend-fail-backup' => 'Hindi na makatigan ng kopya ang talaksang $1.',
+'backend-fail-notexists' => 'Hindi umiiral ang talaksang $1.',
+'backend-fail-hashes' => 'Hindi makuha ang mga tadtad ng talaksan para sa paghahambing.',
+'backend-fail-notsame' => 'Isang hindi kamukhang talaksan ang umiiral na sa $1.',
+'backend-fail-invalidpath' => 'Ang $1 ay hindi isang katanggap-tanggap na landas ng imbakan.',
+'backend-fail-delete' => 'Hindi mabura ang talaksang $1.',
+'backend-fail-alreadyexists' => 'Umiiral na ang pahinang $1.',
+'backend-fail-store' => 'Hindi maimbak ang talaksang $1 sa $2.',
+'backend-fail-copy' => 'Hindi makopya ang talaksang $1 sa $2.',
+'backend-fail-move' => 'Hindi mailipat ang talaksang $1 sa $2.',
+'backend-fail-opentemp' => 'Hindi mabuksan ang pansamantalang talaksan.',
+'backend-fail-writetemp' => 'Hindi maisulat sa pansamantalang talaksan.',
+'backend-fail-closetemp' => 'Hindi maisara ang pansamantalang talaksan.',
+'backend-fail-read' => 'Hindi mabasa ang talaksang $1.',
+'backend-fail-create' => 'Hindi maisulat ang talaksang $1.',
+'backend-fail-maxsize' => 'Hindi maisulat ang talaksang $1 dahil mas malaki ito kaysa sa {{PLURAL:$2|isang byte|$2 mga byte}}.',
+'backend-fail-readonly' => 'Ang hulihang likuran ng pag-iimbak na "$1" ay kasalukuyang mababasa lamang. Ang dahilang ibinigay ay: "\'\'$2\'\'"',
+'backend-fail-synced' => 'Ang talaksang "$1" ay nasa isang katayuang pabagu-bago sa loob ng mga panloob na hulihang likuran ng pag-iimbak',
+'backend-fail-connect' => 'Hindi makakunekta sa hulihang panlikod ng imbakan na "$1".',
+'backend-fail-internal' => 'Naganap ang isang hindi mapag-alamang kamalian sa huling likuran ng imbakan na "$1".',
+'backend-fail-contenttype' => 'Hindi matukoy ang uri ng nilalaman ng talaksang maiimbak sa "$1".',
+'backend-fail-batchsize' => 'Ang hulihang panlikuran ay nabigyan ng isang pulutong na $1 talaksan ng {{PLURAL:$1|operasyon|mga operasyon}}; ang hangganan ay $2 {{PLURAL:$2|operasyon|mga operasyon}}.',
+'backend-fail-usable' => 'Hindi maisulat ang talaksang $1 dahil sa hindi sapat na mga kapahintulutan o nawawalang mga direktoryo/mga lalagyan.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Hindi makakunekta sa kalipunang pandato ng talaarawan para sa hulihang panlikuran ng imbakang "$1".',
+'filejournal-fail-dbquery' => 'Hindi maisapanahon ang kalipunan ng dato ng talaarawan para sa hulihang panlikod ng imbakang "$1".',
+
+# Lock manager
+'lockmanager-notlocked' => 'Hindi mabuksan ang "$1"; hindi ito nakakandado.',
+'lockmanager-fail-closelock' => 'Hindi maisara ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-deletelock' => 'Hindi mabura ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-acquirelock' => 'Hindi makamtan ang kandado para sa "$1".',
+'lockmanager-fail-openlock' => 'Hindi mabuksan ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-releaselock' => 'Hindi mapakawalan ang kandado para sa "$1".',
+'lockmanager-fail-db-bucket' => 'Hindi sapat na makaugnay sa mga kalipunang pandato ng kandado sa timba na $1.',
+'lockmanager-fail-db-release' => 'Hindi mapakawalan ang mga kandado sa kalipunan ng dato na $1.',
+'lockmanager-fail-svr-release' => 'Hindi mapakawalan ang mga kandado sa tagapaghain na $1.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Nakaranas ng isang kamalian habang binubuksan ang talaksan para sa mga pagsusuri ng ZIP.',
@@ -1620,12 +1703,13 @@ Hindi ito maaaring suriin ng tama para sa kaligtasan.',
 'uploadstash-badtoken' => 'Hindi matagumpay ang pagsasagawa ng mga galaw, maaaring dahil wala nang bisa ang iyong mga katibayan ng kapangyarihang mamatnugot.  Subukang muli.',
 'uploadstash-errclear' => 'Nabigo ang paghawi ng mga talaksan.',
 'uploadstash-refresh' => 'Sariwain ang talaan ng mga talaksan',
+'invalid-chunk-offset' => 'Hindi katanggap-tanggap na pagbawi ng tipak',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Hindi pinayagan ang pagpunta',
-'img-auth-nopathinfo' => 'Nawawalang PATH_INFO.
-Ang tagapaghain mo ay hindi nakatakdang na maipasa ang kabatirang ito.
-Maaaring pang-CGI ito at hindi makatangkilik ng img_auth.
+'img-auth-nopathinfo' => 'Nawawala ang PATH_INFO.
+Ang tagapaghain mo ay hindi nakatakda na magpasa ng ganitong kabatiran.
+Maaaring pang-CGI ito at hindi sumusuporta ng img_auth.
 Tingnan ang https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Ang hiniling na daan ay wala sa loob ng isinaayos na direktoryo ng pagkarga.',
 'img-auth-badtitle' => 'Hindi nagawang makabuo ng tanggap na pamagat mula sa "$1".',
@@ -1659,17 +1743,16 @@ Pakisuring muli kung tama ang URL at kung buhay ang sityo/sayt.',
 Pakisuri kung buhay ang sayt, maghintay ng kaunti at subukin uli.
 Maaaring ibigin mong subukin uli sa isang hindi gaanong abalang panahon.',
 
-'license' => 'Paglilisensya:',
-'license-header' => 'Paglilisensya',
+'license' => 'Paglilisensiya:',
+'license-header' => 'Paglilisensiya',
 'nolicense' => 'Walang napili',
 'license-nopreview' => '(Walang makuhang paunang tingin)',
 'upload_source_url' => ' (isang tanggap at napupuntahan ng publikong URL)',
 'upload_source_file' => ' (isang talaksan sa iyong kompyuter)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ipinapakita nitong natatanging pahinang ang lahat ng naikargang mga talaksan.
-Bilang naitakda ipinapakita sa itaas ng talaan ang huling ikinargang mga talaksan.
-Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo ng pahabang kahanayan.',
+'listfiles-summary' => 'Ipinapakita ng natatanging pahinang ito ang lahat ng naikargang mga talaksan.
+Kapag sinala ng tagagamit, tanging mga talaksan lang kung saan nagkarga ang tagagamit na iyan ng pinaka kamakailang bersiyon ng talaksan ang ipinapakita.',
 'listfiles_search_for' => 'Hanapin ang pangalan ng midya:',
 'imgfile' => 'talaksan',
 'listfiles' => 'Talaan ng talaksan',
@@ -1679,7 +1762,7 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
 'listfiles_user' => 'Tagagamit',
 'listfiles_size' => 'Sukat',
 'listfiles_description' => 'Paglalarawan',
-'listfiles_count' => 'Mga bersyon',
+'listfiles_count' => 'Mga bersiyon',
 
 # File description page
 'file-anchor-link' => 'Talaksan',
@@ -1698,19 +1781,24 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
 'filehist-filesize' => 'Sukat ng talaksan',
 'filehist-comment' => 'Puna/Kumento',
 'filehist-missing' => 'Nawawala ang talaksan',
-'imagelinks' => 'Mga kawing ng talaksan',
+'imagelinks' => 'Paggamit ng talaksan',
 'linkstoimage' => 'Nakakawing ang sumusunod na {{PLURAL:$1|pahina|$1 mga pahina}} sa talaksang ito.',
 'linkstoimage-more' => 'Mahigit sa $1 {{PLURAL:$1|pahina|mga pahina}} ang nakakawing sa talaksang ito.
 Ipinapakita sa sumusunod na talaan ang {{PLURAL:$1|unang pahina lamang|unang $1 mga pahina lamang}} na nakakawing sa talaksang ito.
 Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
 'nolinkstoimage' => 'Walang pahinang nakakawing sa talaksang ito.',
 'morelinkstoimage' => 'Tingnan ang [[Special:WhatLinksHere/$1|mas marami pang mga kawing]] para sa pahinang ito.',
+'linkstoimage-redirect' => '$1 (pagpapapunta ng talaksan sa ibang lugar) $2',
 'duplicatesoffile' => 'Ang sumusunod na {{PLURAL:$1|file is a duplicate|$1 mga talaksan ay mga kapareho}} ng talaksang ito ([[Special:FileDuplicateSearch/$2|mas marami pang mga detalye]]):',
 'sharedupload' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin ng iba pang mga proyekto.',
 'sharedupload-desc-there' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
 Pakitingnan ang [$2 pahina ng paglalarawan ng talaksan] para sa iba pang kabatiran.',
 'sharedupload-desc-here' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
 Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito doon ay ipinapakita sa ibaba.',
+'sharedupload-desc-edit' => 'Ang talaksang ito ay mula sa $1 at maaaring gamitin ng iba pang mga proyekto.
+Marahil ay nais mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawan ng talaksan] nito.',
+'sharedupload-desc-create' => 'Ang talaksang ito ay mula sa $1 at maaaring gamitin ng iba pang mga proyekto.
+Marahil ay naisa mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawan ng talaksan] nito.',
 'filepage-nofile' => 'Walang talaksang umiiral sa pangalang ito.',
 'filepage-nofile-link' => 'Walang talaksang umiiral sa pangalang ito, ngunit maaari mong [$1 kargahin ito].',
 'uploadnewversion-linktext' => 'Magkarga ng isang bagong bersyon ng talaksang ito',
@@ -1745,6 +1833,7 @@ Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito do
 ** Nagkadalawang talaksan',
 'filedelete-edit-reasonlist' => 'Baguhin ang mga dahilan ng pagbura',
 'filedelete-maintenance' => 'Pansamantalang hindi pinagana ang pagbura at pagpapnumbalik ng mga talaksan habang nagpapanatili ng kaayusan.',
+'filedelete-maintenance-title' => 'Hindi mabura ang talaksan',
 
 # MIME search
 'mimesearch' => 'Maghanap ng MIME',
@@ -1792,7 +1881,7 @@ Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito do
 'statistics-users-active-desc' => 'Mga tagagamit na nagsagawa ng isang galaw/gawain sa huling {{PLURAL:$1|araw|$1 mga araw}}',
 'statistics-mostpopular' => 'Mga pinakarinarayong pahina',
 
-'disambiguations' => 'Mga pahina ng paglilinaw',
+'disambiguations' => 'Mga pahinang nakakawing sa mga pahina ng paglilinaw',
 'disambiguationspage' => 'Template:disambig',
 'disambiguations-text' => "Ang sumusunod ay mga pahinang may ugnay (link) sa isang '''pahinang naglilinaw'''.
 Dapat silang umugnay sa tamang paksa<br />
@@ -1840,6 +1929,8 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'wantedpages' => 'Kinakailangang mga pahina',
 'wantedpages-badtitle' => 'Hindi tanggap na pamagat sa loob ng pangkat ng kinalabasan: $1',
 'wantedfiles' => 'Ninanais na mga talaksan',
+'wantedfiletext-cat' => 'Ang sumusunod na mga talaksan ay ginagamit ngunit hindi naman umiiral. Ang mga talaksang nagmumula sa mga repositoryong dayuhan ay maaariing nakalista kahit na umiiral. Ang anumang ganyang mga kamalian sa pagiging positibo ay <del>aalisin</del>. Bilang karagdagan, ang mga pahinang may nakabaon na mga talaksang hindi umiiral ay nakatala sa [[:$1]]',
+'wantedfiletext-nocat' => 'Ginagamit ang sumusunod na mga talaksan ngunit hindi naman umiiral. Ang mga talaksan mula sa mga repositoryong dayuhan ay maaaring nakalista kahit na umiiral. Ang ganyang mga kamalian sa pagiging positibo ay <del>aalisin</del>.',
 'wantedtemplates' => 'Ninanais na mga suleras',
 'mostlinked' => 'Pinakamaraming ugnay sa mga pahina',
 'mostlinkedcategories' => 'Pinakamaraming ugnay sa mga kategorya',
@@ -1848,9 +1939,10 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'mostimages' => 'Pinakamaraming ugnay sa mga larawan',
 'mostrevisions' => 'Mga artikulong may pinakamaraming pagbabago',
 'prefixindex' => 'Lahat ng mga pahinang may unlapi',
+'prefixindex-namespace' => 'Lahat ng mga pahinang may unlapi ($1 puwang ng pangalan)',
 'shortpages' => 'Mga maiikling pahina',
 'longpages' => 'Mga mahahabang pahina',
-'deadendpages' => 'Mga pahinang walang panloob na ugnay (internal link)',
+'deadendpages' => 'Mga pahinang walang kawing panloob (internal link)',
 'deadendpagestext' => "Ang mga sumusunod na mga pahina'y hindi umuugnay sa ibang mga pahina sa wiking ito.",
 'protectedpages' => 'Mga nakaprotektang pahina',
 'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
@@ -1864,7 +1956,7 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'listusers-editsonly' => 'Ipakita lamang ang mga tagagamit na gumawa/nakagawa na ng mga pagbabago',
 'listusers-creationsort' => 'Pagsama-samahin ayon sa petsa ng pagkakalikha',
 'usereditcount' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
-'usercreated' => 'Nalikha noong $1 sa ika-$2',
+'usercreated' => '{{GENDER:$3|Nalikha}} noong $1 sa ika-$2',
 'newpages' => 'Mga bagong pahina',
 'newpages-username' => 'Bansag:',
 'ancientpages' => 'Mga pinakalumang pahina',
@@ -1891,14 +1983,15 @@ na iba pang impormasyon 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
-'specialloguserlabel' => 'Tagagamit:',
-'speciallogtitlelabel' => 'Pamagat:',
+'specialloguserlabel' => 'Tagaganap:',
+'speciallogtitlelabel' => 'Pinupukol (pamagat o tagagamit):',
 'log' => 'Mga talaan',
 'all-logs-page' => 'Lahat ng mga pampublikong tala',
 'alllogstext' => 'Pinagsama-samang mga pagpapakita ng makukuhang mga talaan ng {{SITENAME}}.
 Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri ng mga talaan, ang pangalan ng tagagamit (maselan ang pagmamakiniliya ng panitik), o ang naaapektuhang pahina (maselan din ang pagmamakinilya ng panitik).',
 'logempty' => 'Walang katumbas na bagay sa talaan.',
 'log-title-wildcard' => 'Hanapin ang mga pamagat na nagsisimula sa tekstong ito',
+'showhideselectedlogentries' => 'Ipakita/itago ang napiling mga lahok sa talaan',
 
 # Special:AllPages
 'allpages' => 'Lahat ng pahina',
@@ -1916,6 +2009,12 @@ Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri
 'allpagesprefix' => 'Ipakita ang mga pahinang may unlaping:',
 'allpagesbadtitle' => 'Ang binagay na pamagat ng pahina ay hindi tinatanggap o may unlapi na tumuturo sa ibang wika o wiki.  Maaaring naglalaman ito ng isa o higit pa na mga karakter na hindi ginagamit bilang pamagat.',
 'allpages-bad-ns' => 'Wala sa {{SITENAME}} ang espasyo ng pangalang "$1".',
+'allpages-hide-redirects' => 'Itago ang mga pagpapapunta sa iba',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Tinatanaw mo ang isang bersyong nakatago ng pahinang ito, na maaaring $1 na ang katagalan.',
+'cachedspecial-viewing-cached-ts' => 'Tinatanaw mo ang isang bersyong nakatago ng pahinang ito, na maaaring hindi buo ang katalagahan.',
+'cachedspecial-refresh-now' => 'Tingnan ang pinakahuli.',
 
 # Special:Categories
 'categories' => 'Mga kategorya',
@@ -1932,12 +2031,13 @@ Tingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].',
 'sp-deletedcontributions-contribs' => 'mga ambag',
 
 # Special:LinkSearch
-'linksearch' => 'Panlabas na mga kawing',
+'linksearch' => 'Paghanap sa mga kawing na panlabas',
 'linksearch-pat' => 'Huwaran ng hanap',
 'linksearch-ns' => 'Pangalang espasyo',
 'linksearch-ok' => 'Hanapin',
-'linksearch-text' => 'Maaaring gamitin ang mga "barahang panghalili/pamalit" (mga \'\'wildcard\'\') katulad ng "*.wikipedia.org".<br />
-Sinusuportahang mga protokolo: <tt>$1</tt>',
+'linksearch-text' => 'Maaaring gamitin ang mga "barahang pamalit" na katulad ng "*.wikipedia.org".
+Kailangan ng kahit na isang nasasakupang mataas ang kaantasan, halimbawa na ang "*.org".<br />
+Sinusuportahang mga protokolo: <tt>$1</tt> (huwag idagdag ang anuman sa mga ito sa paghahanap mo).',
 'linksearch-line' => '$1 nakakawing/nakaugnay mula sa $2',
 'linksearch-error' => "Lilitaw lamang ang mga \"barahang-pamalit\" (''wildcard'') sa simula ng pangunahin/punong-abalang pangalan.",
 
@@ -1984,9 +2084,9 @@ Maaaring may mga [[{{MediaWiki:Listgrouprights-helppage}}|karagdagang kabatiran]
 'emailuser' => 'Padalhan ng e-liham ang tagagamit',
 'emailpage' => 'Magpadala ng e-liham sa tagagamit',
 'emailpagetext' => 'Magagamit mo ang pormularyo sa ibaba para makapagpadala ng mensahe sa pamamagitan ng isang e-liham para sa tagagamit na ito.
-Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
+Ang ipinasok mong direksiyong e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
 'usermailererror' => 'Pagkakamaling sanhi ng pagkakabalik ng liham mula sa puntirya:',
-'defemailsubject' => 'E-liham ng {{SITENAME}}',
+'defemailsubject' => 'E-liham ng {{SITENAME}} mula sa tagagamit na si "$1"',
 'usermaildisabled' => 'Hindi pinagana ang e-liham ng tagagamit',
 'usermaildisabledtext' => 'Hindi maaaring magpadala ng e-liham sa ibang mga tagagamit sa wiki na ito.',
 'noemailtitle' => 'Walang adres ng e-liham',
@@ -2019,10 +2119,12 @@ Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan
 'watchlistfor2' => 'Para sa $1 $2',
 'nowatchlist' => 'Wala kang pahinang binabantayan.',
 'watchlistanontext' => 'Paki $1 upang makita o mabago ang mga aytem sa iyong binabantayan.',
-'watchnologin' => 'Di ka naka-lagda',
+'watchnologin' => 'Hindi nakalagda',
 'watchnologintext' => 'Dapat kang [[Special:UserLogin|nakalagda]] upang mabago ang talaan mo ng mga binabantayan.',
+'addwatch' => 'Idagdag sa bantayan',
 'addedwatchtext' => "Dinagdag na ang pahinang \"[[:\$1]]\" sa iyong [[Special:Watchlist|Babantayan]].
 Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang usapang pahina, at ang pahina ay makikitang sa '''malalaking titik''' ('''''bold''''') sa [[Special:RecentChanges|tala ng mga huling binago]] para madaling makita.",
+'removewatch' => 'Alisin mula sa bantayan',
 'removedwatchtext' => 'Ang pahinang "[[:$1]]" ay tinanggal na mula sa [[Special:Watchlist|iyong talaan ng binabantayan]].',
 'watch' => 'Bantayan ito',
 'watchthispage' => 'Bantayan ang pahinang ito',
@@ -2038,13 +2140,14 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 'watchmethod-list' => 'sinusuri ang binabantayang mga pahina para sa mga kamakailan lamang na mga pagbabago',
 'watchlistcontains' => 'Naglalaman ng $1 {{PLURAL:$1|pahina|mga pahina}} ang iyong talaan ng mga binabantayan.',
 'iteminvalidname' => "May suliranin ang bagay na '$1', hindi tanggap na pangalan...",
-'wlnote' => "Nasa ibaba ang {{PLURAL:$1|pinakahuling pagbabago|pinakahuling '''$1''' mga pagbabago}} sa loob ng huling {{PLURAL:$2|oras|'''$2''' mga oras}}.",
+'wlnote' => "Nasa ibaba ang {{PLURAL:$1|pinakahuling pagbabago|pinakahuling '''$1''' mga pagbabago}} sa loob ng huling {{PLURAL:$2|oras|'''$2''' mga oras}}, magmula noong $3 sa ganap na ika-$4.",
 'wlshowlast' => 'Ipakita ang huling $1 mga oras $2 mga araw $3',
 'watchlist-options' => 'Mga pagpipilian para sa talaan ng mga binabantayan',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Isinasama sa mga binabantayan...',
 'unwatching' => 'Tinatanggal mula sa mga binabantayan...',
+'watcherrortext' => 'Naganap ang isang kamalian habang binabago ang mga katakdaan ng bantayan mo para sa "$1".',
 
 'enotif_mailer' => 'Tagapagpadala ng mga Pahayag ng {{SITENAME}}',
 'enotif_reset' => 'Tatakan ang lahat ng pahina bilang nadalaw na',
@@ -2056,29 +2159,35 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 'enotif_lastvisited' => 'Tingnan ang $1 para sa lahat ng mga pagbabago magmula noong huling pagdalaw mo.',
 'enotif_lastdiff' => 'Tingnan ang $1 para makita ang pagbabagong ito.',
 'enotif_anon_editor' => 'hindi nakikilalang tagagamit $1',
-'enotif_body' => 'Mahal na $WATCHINGUSERNAME,
+'enotif_body' => 'Mahal naming $WATCHINGUSERNAME,
 
 
-Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
+Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED ni $PAGEEDITOR noong $PAGEEDITDATE, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
 
 $NEWPAGE
 
-Buod mula sa patnugot: $PAGESUMMARY $PAGEMINOREDIT
+Buod ng patnugot: $PAGESUMMARY $PAGEMINOREDIT
 
 Makipagugnayan sa patnugot:
 liham: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
 Wala nang iba pang mga pagpapahayag sa pagkakataon ng pagkakaroon ng karagdagang mga pagbabago maliban na lamang kung dadalawin mo ang pahinang ito.
-Maaari mo ring muling itakda ang mga watawat na pangpag-uulat para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
+Maaari mo ring itakda muli ang mga watawat na pangpagpapabatid para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
 
-             Ang iyong palakaibigang sistemang pangpag-uulat ng {{SITENAME}}
+Ang iyong maginhawang sistema ng pagpapabatid ng {{SITENAME}}
 
 --
-Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan ang
+Upang mabago ang mga katakdaan sa iyong talaan ng mga binabantayan, dalawin ang
+{{canonicalurl:{{#special:Preferences}}}}
+
+Upang baguhin ang mga katakdaan ng bantayan mo, dumalaw sa
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Upang burahin ang pahina mula sa pahina mo ng mga binabantayan, dumalaw sa
 $UNWATCHURL
 
-Balik-tugon at karagdagang tulong:
+Tugon at karagdagang tulong:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2137,14 +2246,17 @@ Pakipindot ang pindutang \"ibalik\" (''back'') at ikarga uli ang pinanggalingan
 
 # Protect
 'protectlogpage' => 'Talaan ng pagsasanggalang',
-'protectlogtext' => 'Nasa ibaba ang isang talaan ng mga pagkandado at pagtanggal na mga pagkandado ng pahina.
-Tingnan ang [[Special:ProtectedPages|talaan ng nakasanggalang na mga pahina]] para sa talaan ng mga pangkasalukuyang gumaganang mga pagsasanggalang ng pahina.',
+'protectlogtext' => 'Nasa ibaba ang isang talaan ng mga pagbabago sa mga pruteksiyon ng pahina.
+Tingnan ang [[Special:ProtectedPages|talaan ng pinuprutektahang mga pahina]] para sa talaan ng kasalukuyang gumaganang mga pagprutekta ng pahina.',
 'protectedarticle' => 'ipinagsanggalang ang "[[$1]]"',
 'modifiedarticleprotection' => 'binago ang antas ng panananggalang para sa "[[$1]]"',
-'unprotectedarticle' => 'tinanggal sa panananggalang ang "[[$1]]"',
+'unprotectedarticle' => 'tinanggal ang pruteksiyon mula sa "[[$1]]"',
 'movedarticleprotection' => 'inilipat ang pagtatakdang pampanananggalang mula sa "[[$2]]" patungong "[[$1]]"',
 'protect-title' => 'Palitan ang antas ng panananggalang para sa "$1"',
+'protect-title-notallowed' => 'Tingnan ang antas ng proteksiyon ng "$1"',
 'prot_1movedto2' => 'Inilipat ang [[$1]] patungo sa [[$2]]',
+'protect-badnamespace-title' => 'Hindi mapupruteksiyunang puwang ng pangalan',
+'protect-badnamespace-text' => 'Hindi mapupruteksiyunan ang mga pahinang nasa puwang na pampangalang ito.',
 'protect-legend' => 'Pagtibayin/tiyakin ang panananggalang',
 'protectcomment' => 'Dahilan:',
 'protectexpiry' => 'Magtatapos sa:',
@@ -2166,6 +2278,7 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
 'protect-level-sysop' => "Mga tagapangasiwa (''sysop'') lamang",
 'protect-summary-cascade' => 'baita-baitang',
 'protect-expiring' => 'mawawalan ng bisa sa $1 (UTC)',
+'protect-expiring-local' => 'magtatapos sa $1',
 'protect-expiry-indefinite' => 'walang katiyakan',
 'protect-cascade' => 'Ipagsanggalang ang mga pahinang kasama/kabilang sa pahinang ito (baita-baitang na panananggalang)',
 'protect-cantedit' => 'Hindi mo mababago ang mga antas ng panananggalang ng pahinang ito, dahil wala kang pahintulot para baguhin ito.',
@@ -2206,8 +2319,8 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
 'undeletepagetext' => 'Ang sumusunod na {{PLURAL:$1|pahina ay nabura na subalit |$1 mga pahina ay nabura na subalit}} nananatili pa rin sa sinupan/arkibo at maaaring bang ibalik mula sa pagkakabura.
 Maaaring palagiang linisin o tanggalan ng laman ang sinupan/arkibo.',
 'undelete-fieldset-title' => 'Ibalik ang mga pagbabago',
-'undeleteextrahelp' => "Para maibalik ang kabuoan ng kasaysayan ng pahina, iwanang walang laman ang mga kahong lagayan ng mga tsek at pindutin ang '''''Ibalik'''''. Para maisagawa ang pagbabalik na may pagpili, lagyan ng tsek ang mga kahong may kaugnayan sa pagpapabalik ng mga pagbabago at pindutin ang '''''Ibalik'''''.
-Malilinis ang pook ng kumento/puna at iba pang mga kahong lagayan ng mga tsek kapag pinindot ang '''''Magtakda uli'''''.",
+'undeleteextrahelp' => "Upang maibalik ang buong kasaysayan ng pahina, iwanang walang mga tsek ang lahat ng mga kahon at lagitikin ang '''''{{int:undeletebtn}}'''''.
+Upang makapagsagawa ng pagpapanumbalik na may pinipili, tsekan ang mga kahon na tumutugma sa mga pagbabagong ibabalik, at pindutin ang '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => 'Sininop/nilagay sa sinupan o arkibo ang $1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
 'undeletehistory' => 'Kapag ibinalik mo ang pahina, ibabalik ang lahat ng mga pagbabago sa kasaysayan.
 Kapag nalikha ang isang bagong pahinang may katulad na pangalan mula noong pagbura, lilitaw ang naibalik na mga pagbabago sa sinaunang kasaysayan.',
@@ -2231,6 +2344,7 @@ Sa ganitong mga pagkakataon, dapat mong tanggalin ang tsek o huwag itago ang pin
 
 Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng mga kamakailan lamang na mga pagbubura at mga pagbabalik mula sa pagkakabura.",
 'undelete-header' => 'Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa kamakailan lamang na  binura/naburang mga pahina.',
+'undelete-search-title' => 'Hanapin ang binurang mga pahina',
 'undelete-search-box' => 'Hanapin ang binura/naburang mga pahina',
 'undelete-search-prefix' => 'Ipakita ang mga pahinang nagsisimula sa:',
 'undelete-search-submit' => 'Maghanap',
@@ -2239,6 +2353,7 @@ Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng m
 'undelete-bad-store-key' => 'Hindi maibalik mula sa pagkakabura ang pagbabagong pangtalaksang may tatak ng oras na $1: nawawala na ang talaksan bago pa maganap ang pagbura.',
 'undelete-cleanup-error' => 'Mali ang pagbura sa hindi ginagamit na talaksan ng sinupan/arkibong "$1".',
 'undelete-missing-filearchive' => 'Hindi naibalik mula sa pagkakabura ang sinupan/arkibo ng talaksang may ID na $1 dahil wala ito sa kalipunan ng dato.  Maaaring naibalik na ito dati mula sa pagkakabura.',
+'undelete-error' => 'Kamalian sa hindi pagbura ng pahina',
 'undelete-error-short' => 'May mali sa pagkakabalik mula sa pagkakabura ng talaksang: $1',
 'undelete-error-long' => 'Nakaranas ng mga kamalian habang ibinabalik mula sa pagkakabura ang talaksang:
 
@@ -2249,13 +2364,15 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Espasyo ng pangalan:',
 'invert' => 'Baligtarin and pinili',
+'tooltip-invert' => 'Tsekan ang kahong ito upang ikubli ang mga pagbabago sa mga pahina sa loob ng napiling mga puwang ng pangalan (at ang kaugnay na puwang ng pangalan kung may tsek)',
 'namespace_association' => 'Kaugnay na mga puwang na pampangalan',
+'tooltip-namespace_association' => 'Tsekan ang kahong ito upang maisama ang puwang na pampangalan ng usapan o paksa na may kaugnayan sa napiling puwang na pampangalan',
 'blanknamespace' => '(Pangunahin)',
 
 # Contributions
 'contributions' => 'Mga ambag ng tagagamit',
 'contributions-title' => 'Mga ambag ng tagagamit na si $1',
-'mycontris' => 'Aking mga ginawa',
+'mycontris' => 'Mga ambag ko',
 'contribsub2' => 'Para kay $1 ($2)',
 'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.',
 'uctop' => ' (itaas)',
@@ -2289,7 +2406,7 @@ Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa ibaba para sa pa
 'nolinkshere-ns' => "Walang pahinang nakakawing sa '''[[:$1]]''' mula sa loob ng napiling espasyo ng pangalan.",
 'isredirect' => 'pahinang panturo/panuto',
 'istemplate' => 'pagsasali',
-'isimage' => 'kawing ng/sa larawan',
+'isimage' => 'kawing sa talaksan',
 'whatlinkshere-prev' => '{{PLURAL:$1|nakaraang|nakaraang $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|susunod|susunod na $1}}',
 'whatlinkshere-links' => '← mga kawing',
@@ -2338,7 +2455,7 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
 'badipaddress' => 'Hindi tanggap na adres ng IP',
 'blockipsuccesssub' => 'Matagumpay ang pagharang/paghadlang',
 'blockipsuccesstext' => 'Hinadlangan ang  [[Special:Contributions/$1|$1]].<br />
-Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang mga paghadlang.',
+Tingnan ang [[Special:BlockList|talaan ng mga hinadlangan]] upang suriin ang mga paghadlang.',
 'ipb-blockingself' => 'Hahadlangan mo na ang sarili mo!  Nakatitiyak ka bang nais mong gawin iyan?',
 'ipb-confirmhideuser' => 'Hahadlangan mo na ang isang tagagamit na pinagagana ang "ikubli ang tagagamit".  Susupilin nito ang pangalan ng tagagamit sa lahat ng mga pagpapasok sa mga tala at mga talaan.  Nakatitiyak ka bang nais mong gawin iyan?',
 'ipb-edit-dropdown' => 'Baguhin ang mga dahilan sa pagharang',
@@ -2358,6 +2475,7 @@ Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang
 'blocklist-userblocks' => 'Itago ang mga paghahadlang ng akawnt',
 'blocklist-tempblocks' => 'Pansamantalang ikubli ang mga pagharang',
 'blocklist-addressblocks' => 'Itago ang isahang mga paghadlang sa IP',
+'blocklist-rangeblocks' => 'Itago ang mga tipak ng nasasaklawan',
 'blocklist-timestamp' => 'Tatak ng oras',
 'blocklist-target' => 'Puntirya',
 'blocklist-expiry' => 'Magtatapos sa',
@@ -2380,6 +2498,7 @@ Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang
 'unblocklink' => 'tanggalin ang pagharang/paghadlang',
 'change-blocklink' => 'baguhin ang pagharang/paghadlang',
 'contribslink' => 'ambag',
+'emaillink' => 'ipadala ang e-liham',
 'autoblocker' => 'Kusang hinarang dahil ang iyong adres ng IP ay kamakailan lamang na ginamit ni "[[User:$1|$1]]".
 Ang dahilang ibinigay para sa pagharang kay $1 ay: "$2"',
 'blocklogpage' => 'Tala ng pagharang',
@@ -2389,9 +2508,9 @@ Ibinigay sa ibaba ang talaan ng pagharang upang mapagsanggunian:',
 Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
 'blocklogentry' => 'hinarang/hinadlangan si [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
 'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
-'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
-Hindi nakatala rito ang mga awtomatiko/kusang hinarang/hinadlangang mga adres ng IP.
-Tingnan ang [[Special:BlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
+'blocklogtext' => 'Isa itong talaan ng mga gawain ng pagharang at hindi pagharang sa tagagamit.
+Hindi nakalista ang mga tirahan ng IP ng kusang hinadlangan.
+Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuyang may bisa na mga pagbabawal at mga paghadlang.',
 'unblocklogentry' => 'tinanggal ang pagharang/paghadlang kay $1',
 'block-log-flags-anononly' => 'mga di-kilalang tagagamit lamang',
 'block-log-flags-nocreate' => 'Nakapatay ang paglikha ng akawnt',
@@ -2445,6 +2564,7 @@ Huwag kalimutang [[Special:UnlockDB|tanggalin ang kandado]] pagkaraan mong maisa
 'lockfilenotwritable' => "Hindi masusulatan ang talaksang pangkandado ng kalipunan ng dato.
 Para ikandado o tanggalin ang kandado ng kalipunan ng dato, kailangan nitong maging nasusulatan/masusulatan ng serbidor ng ''web''.",
 'databasenotlocked' => 'Hindi nakakandado ang kalipunan ng datos.',
+'lockedbyandtime' => '(ni {{GENDER:$1|$1}} noong $2 sa ganap na ika- $3)',
 
 # Move page
 'move-page' => 'Ilipat ang $1',
@@ -2517,7 +2637,7 @@ Pumili muli ng ibang pangalan.',
 
 Mayroon na ang pupuntahang artikulo na "[[$1]]". Nais mo bang burahin ito para magbigay daan para sa paglipat?',
 'delete_and_move_confirm' => 'Oo, burahin ang pahina',
-'delete_and_move_reason' => 'Binura upang makalipat',
+'delete_and_move_reason' => 'Binura upang makapagbigay ng daan para sa paglipat mula sa "[[$1]]"',
 'selfmove' => 'Magkatulad ang pinagmulan at pupuntahan ng mga titulo; hindi mailipat ang isang pahina sa kanyang sarili.',
 'immobile-source-namespace' => 'Hindi mailipat ang mga pahinang nasa espasyo ng pangalang "$1"',
 'immobile-target-namespace' => 'Hindi mailipat ang mga pahina patungo sa espasyo ng pangalang "$1"',
@@ -2546,9 +2666,11 @@ Pumili lang po ng ibang pangalan.',
 Para ilabas ang mga pahina, ipasok ang mga pamagat sa tekstong kahon sa ibaba, isang pamagat bawat guhit, at piliin kung gusto mo rin ang kasalukuyang bersyon o mga lumang bersyon, kasama ang mga pahina ng kasaysayan, o iyon lamang kasalukuyang bersyon kasama ang mga kaalaman tungkol sa huling binago.
 
 Sa huling kaso, maaari mong gumamit ng ungay, hal. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para sa pahinang "[[{{MediaWiki:Mainpage}}]]".',
+'exportall' => 'Iluwas ang lahat ng mga pahina',
 'exportcuronly' => 'Isama lamang ang kasalukuyang rebisyon, hindi ang buong kasaysayan',
 'exportnohistory' => "----
 '''Tandaan:''' Nakapatay ang paglalabas ng buong kasaysayan ng pahina ng mga pahina sa pamamagitan ng ''form'' na ito dahil maaaring bumagal ang sayt.",
+'exportlistauthors' => 'Magsama ng isang buong listahan ng mga tagapab-ambag para sa bawat isang pahina',
 'export-submit' => 'Magluwas',
 'export-addcattext' => 'Magdagdag ng mga pahina mula sa kategorya:',
 'export-addcat' => 'Magdagdag',
@@ -2581,6 +2703,8 @@ Pakidalaw ang [//www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at
 'thumbnail_error' => "May kamalian sa paglikha ng kagyat (''thumbnail''): $1",
 'djvu_page_error' => 'Wala sa nasasakupan ang pahinang DjVu',
 'djvu_no_xml' => 'Hindi makuha ang XML para sa talaksang DjVu',
+'thumbnail-temp-create' => 'Hindi nakalikha ng pansamantalang talaksan ng kagyat',
+'thumbnail-dest-create' => 'Hindi nasagip ang kagyat sa kapupuntahan',
 'thumbnail_invalid_params' => "Hindi tanggap ang mga parametro para sa kagyat (''thumbnail'')",
 'thumbnail_dest_directory' => 'Hindi malikha ang papuntahang direktoryo',
 'thumbnail_image-type' => 'Hindi tinatangkili ang uri ng larawan',
@@ -2625,6 +2749,11 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'import-upload' => 'Magkarga ng datos na XML',
 'import-token-mismatch' => 'Nawala ang dato ng pagpupulong.  Pakisubok muli.',
 'import-invalid-interwiki' => 'Hindi maangkat mula sa tinukoy na wiki.',
+'import-error-edit' => 'Hindi naangkat ang pahinang "$1" dahil  wala kang pahintulot na baguhin ito.',
+'import-error-create' => 'Hindi naangkat ang "$1" dahil wala kang pahintulot na likhain ito.',
+'import-error-interwiki' => 'Hindi naangkat ang pahinang "$1" dahil ang pangalan nito ay nakalaan para sa pagkakawing na panlabas (interwiki).',
+'import-error-special' => 'Hindi naangkat ang pahinang "$1" dahil pag-aari ito ng isang natatanging puwang na pampangalan na hindi nagpapahintulot ng mga pahina.',
+'import-error-invalid' => 'Hindi naangkat ang pahinang "$1" dahil hindi katanggap-tanggap ang pangalan nito.',
 
 # Import log
 'importlogpage' => 'Talaan ng pagaangkat',
@@ -2634,12 +2763,23 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'import-logentry-interwiki' => 'Na-i-transwiki na ang $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}} mula sa $2',
 
+# JavaScriptTest
+'javascripttest' => 'Pagsubok sa JavaScript',
+'javascripttest-disabled' => 'Hindi gumagana ang tungkuling ito sa wiking ito.',
+'javascripttest-title' => 'Pinatatakbo ang mga pagsubok ng $1',
+'javascripttest-pagetext-noframework' => 'Nakalaan ang pahinang ito para sa pagpapatakbo ng mga pagsubok ng JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Hindi napag-aalamang balangkas ng pagsubok na "$1".',
+'javascripttest-pagetext-frameworks' => 'Mangyaring pumili ng isa sa sumusunod na mga  balangkas na pangsubok: $1',
+'javascripttest-pagetext-skins' => 'Pumili ng isang pabalat na patatakbuhan ng mga pagsubok:',
+'javascripttest-qunit-intro' => 'Tingnan ang [$1 dokumentasyon ng pagsubok] sa mediawiki.org.',
+'javascripttest-qunit-heading' => 'Pook na subukan ng QUnit ng JavaScript ng MediaWiki',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ang iyong pahina ng tagagamit',
 'tooltip-pt-anonuserpage' => 'Ang pahina ng tagagamit para sa IP na iyong binabago bilang',
 'tooltip-pt-mytalk' => 'Ang iyong pahina ng usapan',
 'tooltip-pt-anontalk' => 'Usapang tungkol sa mga pagbabagong ginawa sa ip address na ito',
-'tooltip-pt-preferences' => 'Aking mga kagustuhan',
+'tooltip-pt-preferences' => 'Mga nais ko',
 'tooltip-pt-watchlist' => 'Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo',
 'tooltip-pt-mycontris' => 'Talaan ng mga ambag mo',
 'tooltip-pt-login' => 'Hinihimok kang lumagda, bagaman hindi ito kinakailangan.',
@@ -2651,7 +2791,7 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'tooltip-ca-viewsource' => 'Nakaprotekta ang pahinang ito. Makikita mo lamang ang pinagmulan (source) nito.',
 'tooltip-ca-history' => 'Nakaraang bersyon ng pahinang ito.',
 'tooltip-ca-protect' => 'Iprotekta ang pahinang ito',
-'tooltip-ca-unprotect' => 'Huwag prutektahan ang pahinang ito',
+'tooltip-ca-unprotect' => 'Baguhin ang pruteksiyon ng pahinang ito',
 'tooltip-ca-delete' => 'Burahin ang pahinang ito',
 'tooltip-ca-undelete' => 'Ibalik ang mga pagbabagong ginawa sa pahinang ito bago ito binura',
 'tooltip-ca-move' => 'Ilipat ang pahinang ito',
@@ -2694,6 +2834,8 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'tooltip-diff' => 'Ipakita ang mga pagbabagong ginawa mo sa teksto.',
 'tooltip-compareselectedversions' => 'Tingnan ang pagkakaiba sa pagitan ng dalawang napiling bersyon ng pahinang ito.',
 'tooltip-watch' => 'Idagdag ang pahinang ito sa iyong tala ng mga binabantayan',
+'tooltip-watchlistedit-normal-submit' => 'Tanggalin ang mga pamagat',
+'tooltip-watchlistedit-raw-submit' => 'Isapanahon ang bantayan',
 'tooltip-recreate' => 'Muling likhain ang pahina kahit na nabura na ito',
 'tooltip-upload' => 'Simulan ang pagkarga',
 'tooltip-rollback' => 'Ibinabalik ng "Pagulungin pabalik sa dati" ang (mga) pagbabago sa pahinang ito patungo sa huling bersyon ng huling tagapagambag sa pamamagitan ng isang pindot lamang.',
@@ -2748,6 +2890,20 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
 'spambot_username' => "Paglilinis ng ''spam'' ng MediaWiki",
 'spam_reverting' => "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
 'spam_blanking' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang',
+'spam_deleting' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, binubura',
+
+# Info page
+'pageinfo-title' => 'Kabatiran para sa "$1"',
+'pageinfo-header-edits' => 'Mga pagpatnugot',
+'pageinfo-header-watchlist' => 'Bantayan ko',
+'pageinfo-header-views' => 'Mga pagtanaw',
+'pageinfo-subjectpage' => 'Pahina',
+'pageinfo-talkpage' => 'Pahina ng usapan',
+'pageinfo-watchers' => 'Bilang ng mga nagbabantay',
+'pageinfo-edits' => 'Bilang ng mga pamamatnugot',
+'pageinfo-authors' => 'Bilang ng magkakabukod na mga may-akda',
+'pageinfo-views' => 'Bilang ng mga pagtanaw',
+'pageinfo-viewsperedit' => 'Pagtanaw sa bawat pagbago',
 
 # Skin names
 'skinname-standard' => 'Klasiko',
@@ -2803,7 +2959,7 @@ Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
 'svg-long-desc' => 'Talaksang SVG, nasa mga bilang na $1 × $2 mga piksel, sukat ng talaksan: $3',
 'show-big-image' => 'Buong resolusyon (kalinawan)',
 'show-big-image-preview' => 'Sukat ng paunang-tingin na ito: $1.',
-'show-big-image-other' => 'Iba pang mga resolusyon: $1.',
+'show-big-image-other' => 'Iba pang {{PLURAL:$2|resolusyon|mga resolusyon}}: $1.',
 'show-big-image-size' => '$1 x $2 mga piksel',
 'file-info-gif-looped' => 'nasilo na',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|banhay|mga banhay}}',
@@ -2825,6 +2981,11 @@ Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'hours-abbrev' => '$1o',
+'seconds' => '{{PLURAL:$1|$1 segundo|$1 mga segundo}}',
+'minutes' => '{{PLURAL:$1|$1 minuto|$1 mga minuto}}',
+'hours' => '{{PLURAL:$1|$1 horas|$1 mga oras}}',
+'days' => '{{PLURAL:$1|$1 araw|$1 mga araw}}',
+'ago' => '$1 na ang nakalipas',
 
 # Bad image list
 'bad_image_list' => 'Ang anyo ay ang mga sumusunod:
@@ -3035,6 +3196,9 @@ Likas na nakatakdang itago ang iba pa.
 
 # EXIF attributes
 'exif-compression-1' => 'Walang kompresyon',
+'exif-compression-2' => 'CCITT Pangkat 3 1-kodigo sa haba ng pagtakbo ng Pangdimensiyong Huffman na May Bahagyang Pagbabago',
+'exif-compression-3' => 'Kodigo ng Pangkat 3 ng CCITT',
+'exif-compression-4' => 'Kodigo ng Pangkat 4 ng CCITT',
 
 'exif-copyrighted-true' => 'Nakakarapatang-ari',
 'exif-copyrighted-false' => 'Nasasakupan ng madla',
@@ -3046,9 +3210,9 @@ Likas na nakatakdang itago ang iba pa.
 'exif-orientation-3' => 'Pinaikot ng 180°',
 'exif-orientation-4' => 'Pinihit ng patayo',
 'exif-orientation-5' => 'Pinaikot ng 90° CCW at pinihit ng patayo',
-'exif-orientation-6' => 'Pinaikot ng 90° CW',
+'exif-orientation-6' => 'Pinaikot ng 90° na salungat sa galaw ng kamay ng orasan',
 'exif-orientation-7' => 'Pinaikot ng 90° CW at pinihit ng patayo',
-'exif-orientation-8' => 'Pinaikot ng 90° CCW',
+'exif-orientation-8' => 'Pinaikot ng 90° na nakaayon sa galaw ng kamay ng orasan',
 
 'exif-planarconfiguration-1' => 'pagkaayos sa malalaking bahagi (chunky)',
 'exif-planarconfiguration-2' => 'planar na pagkaayos',
@@ -3338,6 +3502,12 @@ Pakitiyak kung ibig mo talagang likhain muli ang pahinang ito.",
 'confirm-purge-top' => 'Linisin/hawiin ang taguan ng pahinang ito?',
 'confirm-purge-bottom' => 'Nililinis ng pagdadalisay ng isang pahina ang taguan at mapipilitang palitawin ang pinakapangkasalukuyang bersyon.',
 
+# action=watch/unwatch
+'confirm-watch-button' => 'Sige',
+'confirm-watch-top' => 'Idaragdag ba ang pahinang ito sa bantayan mo?',
+'confirm-unwatch-button' => 'Sige',
+'confirm-unwatch-top' => 'Aalisin ba ang pahinang ito mula sa bantayan mo?',
+
 # Multipage image navigation
 'imgmultipageprev' => '← nakaraang pahina',
 'imgmultipagenext' => 'susunod na pahina →',
@@ -3444,6 +3614,9 @@ Maaari mo ring [[Special:EditWatchlist|gamitin ang pangkaraniwang pampatnugot]].
 'hebrew-calendar-m11' => 'Av',
 'hebrew-calendar-m12' => 'Elul',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|makipag-usap]])',
+
 # Core parser functions
 'unknown_extension_tag' => 'Hindi nalalamang tatak ng karugtong na "$1"',
 'duplicate-defaultsort' => 'Babala: Madadaig ng susi ng pagtatakdang "$2" ang mas naunang susi ng pagtatakdang "$1".',
@@ -3474,14 +3647,16 @@ Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangk
 'version-software' => 'Inistalang software',
 'version-software-product' => 'Produkto',
 'version-software-version' => 'Bersyon',
+'version-entrypoints' => 'Mga URL na butas-pasukan',
+'version-entrypoints-header-entrypoint' => 'Butas na pasukan',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Lokasyon ng talaksan (file path)',
 'filepath-page' => 'Talaksan:',
 'filepath-submit' => 'Gawin',
-'filepath-summary' => 'Ibinabalik ng natatanging pahinang ito ang buong daanan ng isang talaksan.  Ipinapakita ang mga larawan na may buong resolusyon (kalinawan), tuwirang sinimulan ang ibang uri ng mga talaksan sa pamamagitan ng kaugnay nilang mga programa.
-
-Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
+'filepath-summary' => 'Ibinabalik ng natatanging pahinang ito ang buong landas para sa isang talaksan.  
+Ipinapakita ang mga larawan sa buong kalinawan, tuwirang sinisimulan ang ibang uri ng mga talaksan sa pamamagitan ng kaugnay nilang mga programa.',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Maghanap ng kaparehong mga talaksan',
@@ -3497,9 +3672,8 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 # Special:SpecialPages
 'specialpages' => 'Mga natatanging pahina',
 'specialpages-note' => '----
-* Pangkaraniwang natatanging mga pahina.
-* <strong class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</strong>
-* <span class="mw-specialpagecached">Nakakubli lamang na natatanging mga pahina.</span>',
+* 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',
 'specialpages-group-login' => 'Lumagda/tumala',
@@ -3547,6 +3721,9 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'compare-rev1' => 'Rebisyon 1',
 'compare-rev2' => 'Rebisyon 2',
 'compare-submit' => 'Paghambingin',
+'compare-invalid-title' => 'Hindi katanggap-tanggap ang tinukoy mong pamagat.',
+'compare-title-not-exists' => 'Hindi umiiral ang tinukoy mong pamagat.',
+'compare-revision-not-exists' => 'Hindi umiiral ang tinukoy mong rebisyon.',
 
 # Database error messages
 'dberr-header' => 'May isang suliranin ang wiking ito',
@@ -3574,11 +3751,40 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'sqlite-no-fts' => '$1 na walang suporta ng paghahanap ng buong teksto',
 
 # New logging system
+'logentry-delete-delete' => 'Binura ni $1 ang pahinang $3',
+'logentry-delete-restore' => 'Ibinalik ni $1 ang pahinang $3',
+'logentry-delete-event' => 'Binago ni $1 ang antas ng pagkanatatanaw ng {{PLURAL:$5|isang pangyayari sa talaan|$5 mga pangyayari sa talaan}} sa $3: $4',
+'logentry-delete-revision' => 'Binago ni $1 ang antas ng pagtanaw sa {{PLURAL:$5|isang rebisyon|$5 mga rebisyon}} sa pahinang $3: $4',
+'logentry-delete-event-legacy' => 'Binago ni $1 ang antas ng pagtanaw sa mga pangyayari sa talaan sa $3',
+'logentry-delete-revision-legacy' => 'Binago ni $1 ang antas ng pagtanaw sa mga rebisyong nasa pahinang $3',
+'logentry-suppress-delete' => 'Sinupil ni $1 ang pahinang $3',
+'logentry-suppress-event' => 'Palihim na binago ni $1 ang antas ng pagtanaw sa {{PLURAL:$5|isang pangyayari sa talaan|$5 mga pangyayari sa talaan}} sa $3: $4',
+'logentry-suppress-revision' => 'Palihim na binago ni  $1 ang antas ng pagkanakikita ng {{PLURAL:$5|isang rebisyon|$5 mga rebisyon}} sa pahinang $3: $4',
+'logentry-suppress-event-legacy' => 'Palihim na binago ni $1 ang antas ng pagtanaw sa mga kaganapan sa talaan sa $3',
+'logentry-suppress-revision-legacy' => 'Palihim na binago ni $1 ang antas ng pagtanaw ng mga rebisyon sa pahinang $3',
+'revdelete-content-hid' => 'nakatago ang nilalaman',
+'revdelete-summary-hid' => 'nakatago ang buod ng pagbago',
+'revdelete-uname-hid' => 'nakatago ang pangalan ng tagagamit',
+'revdelete-content-unhid' => 'hindi na nakatago ang nilalaman',
+'revdelete-summary-unhid' => 'pinalitaw ang buod ng pagpatnugot',
+'revdelete-uname-unhid' => 'pinalitaw ang pangalan ng tagagamit',
 'revdelete-restricted' => 'nilapat na mga paghihigpit sa mga tagapangasiwa',
 'revdelete-unrestricted' => 'tinanggal ang mga pagbabawal para sa mga tagapangasiwa',
+'logentry-move-move' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4',
+'logentry-move-move-noredirect' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 na hindi nag-iiwan ng ibang kapupuntahan',
+'logentry-move-move_redir' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 na nasa ibayo ng ibang kapupuntahan',
+'logentry-move-move_redir-noredirect' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 sa ibabaw ng isang pagpapunta sa iba na hindi nag-iiwan ng isang pagpapapunta sa iba',
+'logentry-patrol-patrol' => 'Minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
+'logentry-patrol-patrol-auto' => 'Kusang minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
+'logentry-newusers-newusers' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
+'logentry-newusers-create' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
+'logentry-newusers-create2' => 'Lumikha si $1 ng isang akawnt ng tagagamit na $3',
+'logentry-newusers-autocreate' => 'Kusang nalikha ang akawnt na $1',
 'newuserlog-byemail' => 'Ipinadala ang hudyat sa pamamagitan ng e-liham',
 
 # Feedback
+'feedback-bugornote' => 'Kung handa ka nang detalyadong maglarawan ng isang suliraning teknikal mangyaring [$1 iulat ang sira].
+O kaya, maaari mong gamitin ang maginhawang pormularyo sa ibaba. Ang iyong pagpuna ay idaragdag sa pahinang "[$3 $2]", kasama ang iyong pangalan na pangtagagamit at kung anong pantingin-tingin ang ginagamit mo.',
 'feedback-subject' => 'Paksa:',
 'feedback-message' => 'Mensahe:',
 'feedback-cancel' => 'Huwag ituloy',
@@ -3587,6 +3793,10 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'feedback-error1' => 'Kamalian: Hindi nakikilalang kinalabasan mula sa API',
 'feedback-error2' => 'Kamalian: Nabigo ang pagpatnugot',
 'feedback-error3' => 'Kamalian: Walang tugon mula sa API',
+'feedback-thanks' => 'Salamat! Ang katugunan mo ay naipaskil na sa pahinang "[$2 $1]".',
+'feedback-close' => 'Nagawa na',
+'feedback-bugcheck' => 'Mahusay! Suriin lang na hindi pa ito isa sa [$1 nalalamang mga depekto].',
+'feedback-bugnew' => 'Sinuri ko na. Mag-ulat ng panibagong sira',
 
 # API errors
 'api-error-badaccess-groups' => 'Hindi ka pinapayagang makapagkarga ng mga talaksan papunta sa wiking ito.',
@@ -3597,6 +3807,7 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'api-error-duplicate-archive-popup-title' => 'Nabura nang kakambal na {{PLURAL:$1|talaksan|mga talaksan}}',
 'api-error-duplicate-popup-title' => 'Kagayang {{PLURAL:$1|talaksan|mga talaksan}}',
 'api-error-empty-file' => 'Walang laman ang ipinasa mong talaksan.',
+'api-error-emptypage' => 'Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.',
 'api-error-fetchfileerror' => 'Panloob na kamalian: may naganap na pagkakamali habang kinukuha ang talaksan.',
 'api-error-file-too-large' => 'Napakalaki ng talaksang ipinasa mo.',
 'api-error-filename-tooshort' => 'Napakaiksi ng pangalan ng talaksan.',
@@ -3621,7 +3832,21 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'api-error-unknown-code' => 'Hindi malamang kamalian: "$1"',
 'api-error-unknown-error' => 'Panloob na kamalian: may nangyaring kamalian habang sinusubok mong ikarga ang talaksan mo.',
 'api-error-unknown-warning' => 'Hindi nalalamang babala: $1',
+'api-error-unknownerror' => 'Hindi malamang kamalian: "$1".',
 'api-error-uploaddisabled' => 'Hindi pinapagana ang pagkakargang paitaas sa wiking ito.',
 'api-error-verification-error' => 'Maaaring sira ang talaksang ito, o may maling karugtong.',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|segundo|mga segundo}}',
+'duration-minutes' => '$1 {{PLURAL:$1|minuto|mga minuto}}',
+'duration-hours' => '$1 {{PLURAL:$1|oras|mga oras}}',
+'duration-days' => '$1 {{PLURAL:$1|araw|mga araw}}',
+'duration-weeks' => '$1 {{PLURAL:$1|linggo|mga linggo}}',
+'duration-years' => '$1 {{PLURAL:$1|taon|mga taon}}',
+'duration-decades' => '$1 {{PLURAL:$1|dekada|mga dekada}}',
+'duration-centuries' => '$1 {{PLURAL:$1|daantaon|mga daantaon}}',
+'duration-millennia' => '$1 {{PLURAL:$1|milenyo|mga milenyo}}',
+
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Hindi magawang kunin ang mga kandado sa tagapaghain na $1.',
 );
index 6aff982..5b7947c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Толышә зывон (Толышә зывон)
+/** толышә зывон (толышә зывон)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -46,7 +46,7 @@ $messages = array(
 'tog-watchdefault' => 'Зијод кардеј демы дәгиш кардә быә сәһифон бә ноғо доә сијоһи',
 'tog-watchmoves' => 'Зијод кардеј ном дәгиш кардә быә сәһифон бә ноғо доә сијоһи',
 'tog-watchdeletion' => 'Зијод кардеј сәһифон комон аз рәдд кардәме бә ноғо доә сијоһи',
-'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә сәһифон кејнә дәгиш бәбен бәмы е-номә бывығанд',
+'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә кејнә сәһифон дәгиш бәбен бәмы е-номә бывығанд',
 'tog-watchlisthideown' => 'Чымы дәгишон ноғо доә сијһиәдә нијо кардеј',
 'tog-watchlisthidebots' => 'Нијо кардеј ботон дәгишон ноғо доә сијоһиәдә',
 'tog-watchlisthideminor' => 'Нијо кардеј гәдә дәгишон ноғо доә сијоһиәдә',
@@ -138,7 +138,7 @@ $messages = array(
 'qbpageoptions' => 'Ым сәһифә',
 'qbpageinfo' => 'Мәзмун.',
 'qbmyoptions' => 'Чымы сәһифон',
-'qbspecialpages' => 'Хысусиә сәһифон',
+'qbspecialpages' => 'Хысусијә сәһифон',
 'faq' => 'РАП',
 'faqpage' => 'Project:РАП',
 
@@ -188,7 +188,7 @@ $messages = array(
 'newpage' => 'Тожә сәһифә',
 'talkpage' => 'Ым сәһифә мызокирә кардеј',
 'talkpagelinktext' => 'Мызокирә',
-'specialpage' => 'Хысусиә сәһифә',
+'specialpage' => 'Хысусијә сәһифә',
 'personaltools' => 'Шәхси диләгон',
 'postcomment' => 'Нујә ғысм',
 'articlepage' => 'Мәғолә дијә кардеј',
@@ -263,7 +263,7 @@ $messages = array(
 'nstab-main' => 'Мәғолә',
 'nstab-user' => 'Иштирокәкә сәһифә',
 'nstab-media' => 'Медијә сәһифә',
-'nstab-special' => 'Хысусиә сәһифә',
+'nstab-special' => 'Хысусијә сәһифә',
 'nstab-project' => 'Нахшә бәрәдә',
 'nstab-image' => 'Фајл',
 'nstab-template' => 'Ғәлиб',
@@ -438,7 +438,7 @@ $messages = array(
 'revertmerge' => 'Бахш кардеј',
 
 # Diffs
-'history-title' => 'Дәгишон тарых "$1"',
+'history-title' => '$1: Дәгишон тарых',
 'lineno' => 'Сәтыр $1:',
 'compareselectedversions' => 'Сәчын кардә быә рәвојәтон мығојисә кардеј.',
 'editundo' => 'ләғв кардеј',
@@ -484,9 +484,10 @@ $messages = array(
 'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
 'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
-'prefs-rc' => 'Ән нуә дәгишон',
+'prefs-user-pages' => 'Иштирокәкә сәһифон',
+'prefs-rc' => 'Ән нујә дәгишон',
 'prefs-changeemail' => 'Е-номә дәгиш кардеј',
-'saveprefs' => 'Огәте',
+'saveprefs' => 'Огәтеј',
 'searchresultshead' => 'Нәве',
 'timezoneregion-america' => 'Америка',
 'timezoneregion-europe' => 'Авропа',
@@ -532,6 +533,8 @@ $messages = array(
 'minoreditletter' => 'г',
 'newpageletter' => 'Т',
 'boteditletter' => 'б',
+'rc_categories_any' => 'Һар гылә',
+'newsectionsummary' => '/* $1 */ нујә мывзу',
 'rc-enhanced-expand' => 'Тәфсилотон нишо дој (JavaScript истифодә бедә)',
 'rc-enhanced-hide' => 'Тәфсилотон нијо кардеј',
 
@@ -554,10 +557,21 @@ $messages = array(
 'license' => 'Лисензијә:',
 'license-header' => 'Лисензијә',
 
+# Special:ListFiles
+'imgfile' => 'фајл',
+'listfiles' => 'Фајлон сијоһи',
+'listfiles_thumb' => 'Гәдә шикил',
+'listfiles_name' => 'Фајли ном',
+'listfiles_user' => 'Иштирокәкә',
+'listfiles_size' => 'Улгу',
+'listfiles_description' => 'Тәсвир',
+'listfiles_count' => 'Рәвојәт',
+
 # File description page
 'file-anchor-link' => 'Фајл',
 'filehist' => 'Фајли тарых',
 'filehist-help' => 'Фајли сыфтә рәвојәти виндеј горә бә тарых/вахт егәтән.',
+'filehist-deleteall' => 'һәммәј рәдд кардеј',
 'filehist-revert' => 'Огард',
 'filehist-current' => 'есәтнә',
 'filehist-datetime' => 'Тарых/Вахт',
@@ -677,7 +691,7 @@ $messages = array(
 'whatlinkshere-page' => 'Сәһифә:',
 'linkshere' => "Ым сәһифон сәбон вардән ијо ''[[:$1]]''':",
 'nolinkshere' => "Бә ым сәһифә ҹо сәһифонку сәбонон нин '''[[:$1]]'''.",
-'isredirect' => 'увони дәгиш кардә сәһифәје',
+'isredirect' => 'Ñ\83нвони Ð´Ó\99гиÑ\88 ÐºÐ°Ñ\80дÓ\99 Ñ\81Ó\99һиÑ\84Ó\99Ñ\98е',
 'istemplate' => 'әловә',
 'isimage' => 'фајлинә сәбон',
 'whatlinkshere-prev' => '{{PLURAL:$1|навынәни|навынәни $1}}',
@@ -701,19 +715,24 @@ $messages = array(
 'block-log-flags-nocreate' => 'нујә иштирокәкон ғејд карде ғәдәғәне',
 
 # Move page
+'move-page-legend' => 'Сәһифә номи дәгиш карде',
+'newtitle' => 'Нујә ном:',
+'movepagebtn' => 'Сәһифә номи дәгиш кардеј',
 'movelogpage' => 'Ном дәгиш кардә быә чијон журнал',
 'revertmove' => 'Бә кәно окырније',
 
 # Export
 'export' => 'Сәһифон ихроҹ кардеј',
+'export-addcat' => 'Зијод кардеј',
 
 # Namespace 8 related
 'allmessagesname' => 'Хәбә',
 'allmessagesdefault' => 'Иминә огәтә быә мәтн',
+'allmessages-filter-all' => 'Һаммај',
 
 # Thumbnails
 'thumbnail-more' => 'Һејве кардеј',
-'thumbnail_error' => 'Гәдә шикили туму кардәдә сәһф: $1',
+'thumbnail_error' => 'Гәдә шикили туму кардејәдә сәһв: $1',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Шымә иштирокәкә сәһифә',
@@ -755,6 +774,7 @@ $messages = array(
 'tooltip-t-permalink' => 'Бә ым сәһифә рәвојәти еғрорә сәбон',
 'tooltip-ca-nstab-main' => 'Мәғолә мығдор',
 'tooltip-ca-nstab-user' => 'Иштирок кардәкәси сәһифә',
+'tooltip-ca-nstab-media' => 'Медиа-фајл',
 'tooltip-ca-nstab-special' => 'Ым хыдмәтә сәһифәје бычыми горә дәгиш кардеј әбыни',
 'tooltip-ca-nstab-project' => 'Нәхши сәһифә',
 'tooltip-ca-nstab-image' => 'Фајли сәһифә',
@@ -766,6 +786,7 @@ $messages = array(
 'tooltip-diff' => 'Бешемонә мәтни һәхәдә сохтә быә дәгишон нишо дој.',
 'tooltip-compareselectedversions' => 'Че ым сәһифә ды гылә выжнијә быә рәвојәтон мијонәдә фәрғи едјәсеј.',
 'tooltip-watch' => 'Ым сәһифә зијод кардеј бә ыштә нығо доә сијоһи',
+'tooltip-upload' => 'Бо жәј бино кардеј',
 'tooltip-rollback' => 'Охонә редактори дәгиш кардә быә чијон де и гылә егәте ләғв кардеј',
 'tooltip-undo' => 'Дәғандә дәгиши рәдд кардеј ијән "сыфтәнә нишо дој" окардеј, де ләғви сәбәби нышон дој имкони.',
 'tooltip-summary' => 'Кыртә тәсвир бынывыштән',
@@ -814,6 +835,11 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
+# EXIF tags
+'exif-imagewidth' => 'Һовужи',
+'exif-imagelength' => 'Былынди',
+'exif-languagecode' => 'Зывон',
+
 'exif-gaincontrol-0' => 'Ни',
 
 'exif-saturation-0' => 'Ади',
@@ -836,6 +862,8 @@ $messages = array(
 'duplicate-defaultsort' => '\'\'\'Дыггәт:\'\'\' Еһтимал кардә быә "$2" классификасијә ачари нафконә "$1" классификасијә ачари етиборсоз кардә',
 
 # Special:Version
+'version' => 'Рәвојәт',
+'version-specialpages' => 'Хысусијә сәһифон',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -846,7 +874,7 @@ $messages = array(
 'fileduplicatesearch-submit' => 'Нәве',
 
 # Special:SpecialPages
-'specialpages' => 'Хысусиә сәһифон',
+'specialpages' => 'Хысусијә сәһифон',
 
 # External image whitelist
 'external_image_whitelist' => ' #Ым сәтри огәтәнән чокнәј әв һесте<pre>
index bd1e1ec..62be8db 100644 (file)
@@ -15,6 +15,7 @@
  * @author Dbl2010
  * @author Don Alessandro
  * @author Emperyan
+ * @author Erdemaslancan
  * @author Erkan Yilmaz
  * @author Fryed-peach
  * @author Goktr001
@@ -713,8 +714,8 @@ Verilen sebep: ''$2''.",
 # Login and logout pages
 'logouttext' => "'''Oturumu kapattınız.'''
 
-Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz, ya da [[Special:UserLogin|yeniden oturum açabilirsiniz]] (ister aynı kullanıcı adıyla, ister başka bir kullanıcı adıyla).
-Web tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hala oturumunuz açıkmış gibi görünebilir.",
+Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz ya da aynı kullanıcı adıyla ya da ister başka bir kullanıcı adıyla [[Special:UserLogin|yeniden oturum açabilirsiniz]].
+Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ oturumunuz açıkmış gibi görünebilir.",
 'welcomecreation' => '== Hoş geldin, $1! ==
 
 Hesabınız açıldı.
@@ -1825,6 +1826,7 @@ Güvenlik denetimi uygun bir şekilde gerçekleştirilemiyor.',
 'uploadstash-badtoken' => 'İşlemin gerçekleştirilmesi başarısız oldu, muhtemelen düzenleme yetkileriniz zaman aşımına uğradı. Yeniden deneyin.',
 'uploadstash-errclear' => 'Dosyaların silinmesi başarısız oldu.',
 'uploadstash-refresh' => 'Dosya listelerini yenile',
+'invalid-chunk-offset' => 'Geçersiz öbek ofset',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Erişim engellendi',
@@ -2866,8 +2868,8 @@ Geçici dosya kayıp.',
 'tooltip-pt-preferences' => 'Tercihleriniz (ayarlarınız)',
 'tooltip-pt-watchlist' => 'Değişiklikler için izlemeye aldığınız sayfaların listesi',
 'tooltip-pt-mycontris' => 'Katkılarınızın listesi',
-'tooltip-pt-login' => 'Mecbur değilsiniz fakat oturum açmanız tavsiye olunur',
-'tooltip-pt-anonlogin' => 'Oturum açmanız tavsiye olunur ama mecbur değilsiniz.',
+'tooltip-pt-login' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
+'tooltip-pt-anonlogin' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
 'tooltip-pt-logout' => 'Sistemden çık',
 'tooltip-ca-talk' => 'İçerik ile ilgili tartışma',
 'tooltip-ca-edit' => 'Bu sayfayı değiştirebilirsiniz. Lütfen kaydetmeden önce önizleme düğmesini kullanın.',
index 7104bb2..726ecba 100644 (file)
@@ -174,6 +174,7 @@ $messages = array(
 'printableversion' => 'Vona Ngangliso',
 'permalink' => 'Xithlavinyeti xa nkarhi hinkwawo',
 'print' => 'Gandlisa',
+'view' => 'Langutisa',
 'edit' => 'Lulamisa',
 'create' => 'Tumbuluxa',
 'editthispage' => 'Lulamisa Tluka leri',
@@ -193,6 +194,7 @@ $messages = array(
 'specialpage' => 'Tluka ro hlawuleka',
 'personaltools' => "Switirhisi swa n'wini",
 'postcomment' => 'Xiyenge xintswa',
+'articlepage' => 'Langutisa tluka ra matsalwa',
 'talk' => 'Mbulavuriswano',
 'views' => 'Kulanguteka',
 'toolbox' => 'Bokisi ra switirhisiwa',
@@ -208,6 +210,7 @@ $messages = array(
 'redirectedfrom' => '(Ritlerisewe kusuka e $1)',
 'redirectpagesub' => 'Tluka ro kongomisa',
 'lastmodifiedat' => 'Tluka leri rihetelele ku lulamisiwa hi $1, nkarhi kuri $2.',
+'viewcount' => "Tluka leri ri vhakeriwe {{PLURAL:$1|kan'we|makhambi ya $1}}.",
 'protectedpage' => 'Tluka leri sirheleriweke',
 'jumpto' => 'Tlulela eka:',
 'jumptonavigation' => 'Xikomba-ndlela',
@@ -217,7 +220,8 @@ $messages = array(
 # 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) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'ta {{SITENAME}}',
 'aboutpage' => 'Project:ta',
-'copyrightpage' => '{{ns:project}}:Mpfumelelo wo ringisa',
+'copyright' => 'Matsalwa makumeka ehansi ka $1.',
+'copyrightpage' => '{{ns:project}}:Swisivela ku encenyeta',
 'currentevents' => 'Leswi endlekaka sweswi',
 'currentevents-url' => 'Project:Leswi endlekaka sweswi',
 'disclaimers' => 'Swi alanandzu',
@@ -269,6 +273,8 @@ See [[Special:Version|version page]].',
 'page-rss-feed' => '"$1" RSS Feed',
 'page-atom-feed' => '"$1" Atom Feed',
 'red-link-title' => '$1 (Tluka leri, arisi tsariwa)',
+'sort-descending' => 'Xaxameta kuya ehansi',
+'sort-ascending' => 'Xaxameta kuya ehenhla',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Tluka',
@@ -346,6 +352,22 @@ Data here will not presently be refreshed.',
 Function: $1<br />
 Query: $2',
 'viewsource' => 'Vona tsalwa-tumbuluxa',
+'viewsource-title' => 'vona xihlovo xa $1',
+'protectedpagetext' => 'Tluka leri riserheleriwile kusivele ndzulamiso.',
+'viewsourcetext' => 'Unga langutisa naswona u kopa xihlovo xa tluka leri.',
+'viewyourtext' => 'Unga langutisa naswona ukopa xihlovo xa "mindzulamiso yawena" eka tluka leri.',
+'protectedinterface' => 'Tluka leri rina xihlanganisi xa software, naswona risirheleriwile kusivela kuthyakisiwa.',
+'editinginterface' => "'''Tivonele:''' ulekululamiseni tlika leri tirhisiwaka ku komba matsalwa yo hlanganisa ya software.
+Kucinca eka tluka leri kunga onha kulanguteka ka matluka eka vatirhisi van'wana.
+Leswaku uvona kuhundzuluxa langutisa [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], Phurojeki yo hundzuluxa tindzimi ya MediaWiki.",
+'cascadeprotected' => 'Tluka leri risirheleriwile eka mindzulamiso, hikwalaho kaleswi rikatsiweke eka {{PLURAL:$1|tluka, leri|matluka, lama}} sirheleriweke nswona mangana nhlawulo wo "katsakanya" lowu hlawuriweke:
+$2',
+'namespaceprotected' => "Uhava mfumelelo wo lulamisa matluka eka maviti-vundzawu bya '''$1'''.",
+'customcssprotected' => "Uhava mpfumelelo wo ulamisa tluka leri ra CSS, hikuva rina minhlawulo ya mutirhisi un'wana.",
+'customjsprotected' => "Uhava mpfumelelo wolulamisa tluka-xirhumiwa xa Java, hiuva ringava rikhome minhlawulo yamutirhisi un'wana.",
+'ns-specialprotected' => 'Matluka yohlawuleka amalulamisiwi.',
+'titleprotected' => 'Nhlokomhaka leyi yisirheleriwile ekutumbuluxiwa hi [[User:$1|$1]].
+Hikwlaho ka xivangelo xa "\'\'$2\'\'".',
 
 # Login and logout pages
 'logouttext' => "'''Uhumile eka wiki leyi.'''
@@ -366,6 +388,7 @@ Unda rivali ku cinca [[Special:Preferences|{{SITENAME}} minhlawulo ya wena]].',
 'userloginnocreate' => 'Pfula unghena',
 'logout' => 'Pfala u famba',
 'userlogout' => 'Pfala u famba',
+'notloggedin' => 'A wusipfula unghena',
 'nologin' => 'Xana upfumala akhawunti? $1.',
 'nologinlink' => 'Tumbuluxa akhawunti',
 'createaccount' => 'Tumbuluxa akhawunti',
index daea741..3015bec 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1108,6 +1108,7 @@ $1",
 'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
 'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
 'editundo' => 'үткәрмәү',
+'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
 
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
@@ -1119,6 +1120,8 @@ $1",
 'notextmatches' => 'Тиңдәш текстлы битләр юк',
 '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-legend' => 'Эзләү көйләнмәләре',
@@ -1137,6 +1140,7 @@ $1",
 'searchprofile-everything-tooltip' => 'Барлык битләрдә дә эзләү',
 'searchprofile-advanced-tooltip' => 'Бирелгән исемнәр мәйданында эзләү',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сүз}})',
+'search-result-category-size' => '{{PLURAL:$1|1 әгъза|$1 әгъза}} ({{PLURAL:$2|1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1 файл|$3 файл}})',
 'search-result-score' => 'Релевантлыгы: $1 %',
 'search-redirect' => '(юнәлтү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1360,7 +1364,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|үзгәртү|үзгәртү}}',
 'recentchanges' => 'Соңгы үзгәртүләр',
 'recentchanges-legend' => 'Соңгы үзгәртүләр көйләүләре',
-'recentchangestext' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
+'recentchanges-summary' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
 'recentchanges-feed-description' => 'Бу агымда соңгы үзгәртүләрне күзәтү.',
 'recentchanges-label-newpage' => 'Бу үзгәртү белән яңа бит төзелде',
 'recentchanges-label-minor' => 'Бу кече үзгәртү',
@@ -1632,6 +1636,7 @@ PICT # төрле
 'protectedpages' => 'Якланган битләр',
 'protectedtitles' => 'Тыелган исемнәр',
 'listusers' => 'Кулланучылар исемлеге',
+'usercreated' => '$3 $1 көнне $2 вакытта {{GENDER:$3|теркәлде}}',
 'newpages' => 'Яңа битләр',
 'newpages-username' => 'Кулланучы:',
 'ancientpages' => 'Иң иске битләр',
@@ -1739,6 +1744,7 @@ PICT # төрле
 # Watchlist
 'watchlist' => 'Күзәтү исемлегем',
 'mywatchlist' => 'Күзәтү исемлегем',
+'watchlistfor2' => '$1 $2 өчен',
 'nowatchlist' => 'Күзәтү исемлегегездә битләр юк.',
 'watchnologin' => 'Кермәдегез',
 'watchnologintext' => 'Күзәтү исемлегегезне үзгәртү өчен сез [[Special:UserLogin|керергә]] тиешсез.',
@@ -1923,6 +1929,7 @@ $1',
 'sp-contributions-talk' => 'бәхәс',
 'sp-contributions-search' => 'Кертемне эзләү',
 'sp-contributions-username' => 'Кулланучының IP адресы яки исеме:',
+'sp-contributions-toponly' => 'Соңгы версия булган үзгәртүләрне генә күрсәтергә',
 'sp-contributions-submit' => 'Эзләү',
 
 # What links here
@@ -2426,6 +2433,9 @@ $1',
 'hijri-calendar-m7' => 'Раҗәб',
 'hijri-calendar-m9' => 'Рамазан',
 
+# Core parser functions
+'duplicate-defaultsort' => 'Игътибар. Уйланма куелган "$2" бүлгәләү ачкычы элеккеге уйланма куелган "$1" бүлгәләү ачкычын үзгәртә.',
+
 # Special:Version
 'version' => 'Юрама',
 'version-extensions' => 'Куелган киңәйтүләр',
@@ -2469,6 +2479,16 @@ $1',
 'blankpage' => 'Буш бит',
 'intentionallyblankpage' => 'Бу бит махсус буш калдырылган',
 
+# External image whitelist
+'external_image_whitelist' => '#Бу юлны ничек бар, шулаө калдырыгыз<pre>
+#Монда даими фразаларның фрагментларын куегыз (// арасында торган өлешен)
+#алар тышкы сурәтләрнең URL белән бәйләнерләр.
+#Туры килгәннәре сурәт буларак, туры килмәгәннәре сурәткә сылтама буларак күрсәтеләчәкләр.
+# # билгесе белән башланучы юллар шәрехнамә дип саналалар.
+#Юллар регистрга игътибар бирмиләр.
+
+#Даими фразаларның фрагментларын бу кыр өстендә куегыз. Бу кырны ничек бар, шулай калдырыгыз.</pre>',
+
 # Special:Tags
 'tags' => 'Гамәлдә булучы үзгәртүләр билгеләре',
 'tag-filter' => '[[Special:Tags|Tag]] фильтры:',
index ca1d641..af7b3b2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Latin script) (Tatarça)
+/** Tatar (Latin script) (tatarça)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1136,7 +1136,7 @@ Ul $1 {{PLURAL:$1|xäreftän}} kübräk bulırğa tieş tügel.',
 'nchanges' => '$1 {{PLURAL:$1|üzgärtü|üzgärtü}}',
 'recentchanges' => 'Soñğı üzgärtülär',
 'recentchanges-legend' => 'Soñğı üzgärtülär köyläwläre',
-'recentchangestext' => 'Bu bittä {{grammar:genitive|{{SITENAME}}}} proyektınıñ soñğı üzgärtüläre kürsätelä.',
+'recentchanges-summary' => 'Bu bittä {{grammar:genitive|{{SITENAME}}}} proyektınıñ soñğı üzgärtüläre kürsätelä.',
 'recentchanges-feed-description' => 'Bu ağımda soñğı üzgärtülärne küzätü.',
 'recentchanges-label-newpage' => 'Bu üzgärtü belän yaña bit tözelde',
 'recentchanges-label-minor' => 'Bu keçe üzgärtü',
index 49910be..6dd36aa 100644 (file)
@@ -60,22 +60,24 @@ $fallback8bitEncoding = "windows-1251";
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Холбааны шыяры:',
-'tog-justify' => 'Арынның дооразынга сөзүглелди дескилээри',
+'tog-justify' => 'Арынның дооразының аайы-биле сөзүглелди дескилээри',
 'tog-hideminor' => 'Сөөлгү өскерлиишкиннер арында бичии өскерлиишкиннерни чажырар',
 'tog-hidepatrolled' => 'Амгы өскерлиишкиннер арында истээн өскерлиишкиннерни чажырары',
 'tog-newpageshidepatrolled' => 'Чаа арыннарның даңзындан истээн арыннарны чажырары',
-'tog-usenewrc' => 'Use enhanced recent changes (JavaScript херек)',
+'tog-usenewrc' => 'Чаа өскерлиишкиннерниң өөделеттинген даңзызын ажыглаар (JavaScript херек)',
+'tog-numberheadings' => 'Эгелерин авто-санаар',
 'tog-showtoolbar' => 'Өскертир херекселдерни көргүзер (JavaScript)',
 'tog-editondblclick' => 'Арынны өскертирде ийи катап базар (JavaScript)',
 'tog-editsection' => '[өскертири] деп холбаалар-биле section editing enable.',
-'tog-rememberpassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
-'tog-watchcreations' => 'Мээң чогааткан арыннарымны хайгаарал даңзымга немерелээри.',
-'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымга немерелээри.',
-'tog-watchmoves' => 'Мээң шимчеткен арыннарымны хайгаарал даңзымга немерелээри.',
+'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|хүн|хүн}} ишти)',
+'tog-watchcreations' => 'Мээң чаяан арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchmoves' => 'Мээң катап адаан арыннарымны хайгаарал даңзымче немээри.',
+'tog-watchdeletion' => 'Мээң казаан арыннарымны хайгаарал даңзымче немээри.',
 'tog-oldsig' => 'Амгы хол үжүү:',
-'tog-watchlisthideown' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ð¼Ñ\8dÑ\8dÒ£ Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80Ñ\8bмнÑ\8b Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
-'tog-watchlisthidebots' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ñ\80обоÑ\82Ñ\82аÑ\80нÑ\8bÒ£ Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80Ñ\8bн Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
-'tog-watchlisthideminor' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bндан Ð±Ð¸Ñ\87ии Ó©Ñ\81кеÑ\80лииÑ\88киннеÑ\80нÑ\8b Ñ\87ажÑ\8bÑ\80аÑ\80Ñ\8b',
+'tog-watchlisthideown' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ñ\8dдиглеÑ\80имни Ñ\87ажÑ\8bÑ\80',
+'tog-watchlisthidebots' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ñ\80обоÑ\82Ñ\82аÑ\80нÑ\8bÒ£ Ñ\8dдиглеÑ\80ин Ñ\87ажÑ\8bÑ\80',
+'tog-watchlisthideminor' => 'ХайгааÑ\80ал Ð´Ð°Ò£Ð·Ñ\8bзÑ\8bндан Ð±Ð¸Ñ\87ии Ñ\8dдиглеÑ\80ни Ñ\87ажÑ\8bÑ\80',
 'tog-watchlisthidepatrolled' => 'Хайгаарал даңзындан истээн өскерлиишкиннерны чажырары',
 'tog-showhiddencats' => 'Чажыт бөлүктерни көргүзери',
 
@@ -113,42 +115,43 @@ $messages = array(
 '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' => '1.ай',
-'feb' => '2.ай',
-'mar' => '3.ай',
-'apr' => '4.ай',
-'may' => '5.ай',
-'jun' => '6.ай',
-'jul' => '7.ай',
-'aug' => '8.ай',
-'sep' => '9.ай',
-'oct' => '10.ай',
-'nov' => '11.ай',
-'dec' => '12.ай',
+'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' => '1 ай',
+'feb' => '2 ай',
+'mar' => '3 ай',
+'apr' => '4 ай',
+'may' => '5 ай',
+'jun' => '6 ай',
+'jul' => '7 ай',
+'aug' => '8 ай',
+'sep' => '9 ай',
+'oct' => '10 ай',
+'nov' => '11 ай',
+'dec' => '12 ай',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Бөлүк|Бөлүктер}}',
 'category_header' => '«$1» деп бөлүктүң арыннары',
-'subcategories' => 'Ð\91иÑ\87ии бөлүктер',
-'category-media-header' => '«$1» деп бөлүкте медиа',
+'subcategories' => 'Ð\90даккÑ\8b бөлүктер',
+'category-media-header' => '«$1» деп бөлүкте файлдар',
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
 'hidden-categories' => '{{PLURAL:$1|Чажыт бөлүк|Чажыт бөлүктер}}',
 'hidden-category-category' => 'Чажыт бөлүктер',
-'category-subcat-count-limited' => 'Ð\91о Ð±Ó©Ð»Ò¯Ðº {{PLURAL:$1|биÑ\80|$1}} Ð±Ð¸Ñ\87ии бөлүктүү.',
+'category-subcat-count-limited' => 'Ð\91о Ð±Ó©Ð»Ò¯Ðº {{PLURAL:$1|биÑ\80|$1}} Ð°Ð´Ð°ÐºÐºÑ\8b бөлүктүү.',
 'listingcontinuesabbrev' => '(уланчы)',
 'noindex-category' => 'Индекстелбес арынар',
+'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
 
 'about' => 'Дугайында',
 'article' => 'Допчу арын',
@@ -166,6 +169,7 @@ $messages = array(
 'qbbrowse' => 'Каралаары',
 'qbedit' => 'Өскертири',
 'qbpageoptions' => 'Бо арын',
+'qbpageinfo' => 'Арын дугайында медээ',
 'qbmyoptions' => 'Мээң арыннарым',
 'qbspecialpages' => 'Тускай арыннар',
 'faq' => 'Бо-ла салыр айтырыглар (БлСА)',
@@ -176,9 +180,10 @@ $messages = array(
 'vector-action-delete' => 'Ырадыры',
 'vector-action-move' => 'Шимчээри',
 'vector-action-protect' => 'Камгалаары',
+'vector-action-undelete' => 'Эгидер',
 'vector-action-unprotect' => 'Камгалалды өскертири',
-'vector-view-create' => 'ЧогаадÑ\8bры',
-'vector-view-edit' => 'Өскертири',
+'vector-view-create' => 'ЧаÑ\8fары',
+'vector-view-edit' => 'Эдери',
 'vector-view-history' => 'Төөгүнү көөрү',
 'vector-view-view' => 'Номчууру',
 'vector-view-viewsource' => 'Дөзү бижиин көөрү',
@@ -194,18 +199,19 @@ $messages = array(
 'searchbutton' => 'Дилээри',
 'go' => 'Баары',
 'searcharticle' => 'Күүcедири',
-'history' => 'Арынның Төөгүзү',
+'history' => 'Арынның төөгүзү',
 'history_short' => 'Төөгү',
 'printableversion' => 'Саазынга үндүрерин көөрү',
 'permalink' => 'Турум холбаа',
 'print' => 'Саазынга үндүрер',
 'view' => 'Көөрү',
-'edit' => 'Өскертири',
+'edit' => 'Эдери',
 'create' => 'Чогаадыры',
 'editthispage' => 'Бо арынны өскертири',
 'create-this-page' => 'Бо арынны чогаадыры',
 'delete' => 'Ырадыры',
 'deletethispage' => 'Бо арынны ырадыры',
+'undelete_short' => '$1 {{PLURAL:$1|эдигни|эдиглерни}} катап үндүрери',
 'viewdeleted_short' => '{{PLURAL:$1|Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
 'protect' => 'Камгалаары',
 'protect_change' => 'өскертири',
@@ -231,7 +237,9 @@ $messages = array(
 'categorypage' => 'Бөлүктүң арынын көөрү',
 'viewtalkpage' => 'Чугааны көөрү',
 'otherlanguages' => 'Өске дылдарга',
-'lastmodifiedat' => 'Бо арын сөөлгү каттап $2, $1 өскерилген.',
+'redirectedfrom' => '($1 шигленген)',
+'redirectpagesub' => 'шигледир арын',
+'lastmodifiedat' => 'Бо арын сөөлгү катап $1, $2 өскерилген.',
 'protectedpage' => 'Камгалаган арын',
 'jumpto' => 'Шилчиир:',
 'jumptonavigation' => 'навигация',
@@ -246,17 +254,19 @@ $messages = array(
 'currentevents-url' => 'Project:Амгы үеде болуушкуннар',
 'disclaimers' => 'Ажыглаар харысаалгазын чөрчүүрү (ойталаары)',
 'disclaimerpage' => 'Project:Ажыглаар харысаалгазын ойталаары',
-'edithelp' => 'Өскертиринге дуза',
-'edithelppage' => 'Help:Өскертири',
+'edithelp' => 'Эдеринге дуза',
+'edithelppage' => 'Help:Эдери',
 'helppage' => 'Help:Допчузу',
 'mainpage' => 'Кол Арын',
 'mainpage-description' => 'Кол Арын',
-'policy-url' => 'Project:Ð\9fолиÑ\82ика',
+'policy-url' => 'Project:ЧÑ\83Ñ\80Ñ\83м',
 'portal' => 'Ниитилелдиң хаалгазы',
 'portal-url' => 'Project:Ниитилелдиң хаалгазы',
-'privacy' => 'Актыг бүзүрел дугуржулга',
+'privacy' => 'Актыг бүзүрел дугуржулгазы',
 'privacypage' => 'Project:Актыг бүзүрел дугуржулгазы',
 
+'badaccess' => 'Алдаг:Эргеңер чок.',
+
 'versionrequired' => 'МедиаВикиниң $1 үндүреризи херек',
 
 'ok' => 'Чөп',
@@ -265,12 +275,12 @@ $messages = array(
 'newmessageslink' => 'чаа чагаалар',
 'newmessagesdifflink' => 'эрткен өскерлиишкин',
 'youhavenewmessagesmulti' => '«$1» деп арында силерге чаа чагаалар бар.',
-'editsection' => 'өскертири',
-'editold' => 'өскертири',
+'editsection' => 'эдер',
+'editold' => 'эдер',
 'viewsourceold' => 'дөзү кодун көөрү',
-'editlink' => 'өскертири',
+'editlink' => 'эдер',
 'viewsourcelink' => 'дөзү кодун көөрү',
-'editsectionhint' => '«$1» деп салбырны өскертири',
+'editsectionhint' => '«$1» деп салбырны эдер',
 'toc' => 'Допчузу',
 'showtoc' => 'көргүзери',
 'hidetoc' => 'чажырары',
@@ -279,7 +289,7 @@ $messages = array(
 'viewdeleted' => '{{grammar:accusative|$1}} көөр?',
 'restorelink' => '{{PLURAL:$1|$1 балаттынган өскерилгелер}}',
 'feedlinks' => 'Агым:',
-'feed-invalid' => 'Ð\91ижидилгениң Ð°Ð³Ñ\8bм Ñ\8fнзÑ\8b багай-дыр.',
+'feed-invalid' => 'Ð\91ижидилгениң Ð°Ð³Ñ\8bм Ñ\85евиÑ\80и багай-дыр.',
 'site-rss-feed' => '$1 RSS Медээ Агымы',
 'site-atom-feed' => '$1 Atom Медээ Агымы',
 'page-rss-feed' => '«$1» RSS Медээ Агымы',
@@ -318,24 +328,26 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
 'internalerror' => 'Иштики алдаг',
 'internalerror_info' => 'Иштики алдаг: $1',
 'badtitle' => 'Багай ат',
-'viewsource' => 'Ð\91ажÑ\8b көөрү',
+'viewsource' => 'Ð\94өзүн көөрү',
 'actionthrottled' => 'Шеглээн дүрген',
+'sqlhidden' => '(SQL айтырыгны чажырган)',
 
 # Login and logout pages
 'welcomecreation' => '== Кирип моорлаңар, $1! ==
-Your account has been created.
+Силер бүрүткел бижик has been created.
 Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'yourname' => 'Aжыглакчының ады',
 'yourpassword' => 'Чажыт сөс',
 'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
 'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
 'login' => 'Кирери',
-'nav-login-createaccount' => 'Кирери / бүрүткел бижикти бүдүрери',
-'userlogin' => 'Кирери / бүрүткел бижикти бүдүрери',
+'nav-login-createaccount' => 'Кирери / бүрүткел бижикти чогаадыры',
+'userlogin' => 'Кирери / бүрүткел бижикти чогаадыры',
 'userloginnocreate' => 'Кирери',
 'logout' => 'Үнери',
 'userlogout' => 'Үнери',
 'notloggedin' => 'Кирбес',
+'nologin' => 'Силерде бүрүткел бижик чок? $1',
 'nologinlink' => 'Бүрүткел бижикти бүдүрери',
 'createaccount' => 'Бүрүткел бижикти бүдүрери',
 'gotaccount' => "Силер бүрүтекнип алдыңар де? '''$1'''.",
@@ -352,6 +364,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'mailmypassword' => 'Меңээ чаа чажыт сөсту чорудаары',
 'accountcreated' => 'Бүрүткел бижикти бүдүрген',
 'accountcreatedtext' => '«$1» деп ажыглакчының бүрүткел бижиини бүдүрген.',
+'login-abort-generic' => 'Системаже таптыг эвес кирип тур силер',
 'loginlanguagelabel' => 'Дыл: $1',
 
 # E-mail sending
@@ -371,6 +384,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'resetpass-temp-password' => 'Түр чажыт сөс:',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Чажыт атты дүжүр',
 'passwordreset-username' => 'Aжыглакчының ады:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-email' => 'Э-чагааның адреси:',
@@ -379,6 +393,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 
 # Special:ChangeEmail
 'changeemail' => 'Э-чагааның адресин өскертири',
+'changeemail-header' => 'Бүрүткел бижиктиң э-чагааның адресин өскертири',
 'changeemail-oldemail' => 'Амгы э-чагааның адреси:',
 'changeemail-newemail' => 'Чаа э-чагааның адреси:',
 'changeemail-none' => '(чок)',
@@ -402,11 +417,12 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'image_tip' => 'Киир туткан файл',
 'media_sample' => 'Чижек.ogg',
 'media_tip' => 'Файлдың холбаазы',
+'hr_tip' => 'Доора шугум (use sparingly)',
 
 # Edit pages
 'summary' => 'Түңнел:',
 'subject' => 'Кол сөс:',
-'minoredit' => 'Бо өскерлиишкин бичии-дир',
+'minoredit' => 'Бо эдилге бичии-дир',
 'watchthis' => 'Бо арынны хайгаараары',
 'savearticle' => 'Арынны шыгжаары',
 'preview' => 'Чижеглей көөрү',
@@ -423,11 +439,14 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 
 The password for this new account can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
 'newarticle' => '(Чаа)',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» деп ажыглакчы is not registered.
+Please check if you want to create/edit this page.',
+'userpage-userdoesnotexist-view' => '«$1» деп ажыглакчы not registered.',
 'note' => "'''Тайылбыр:'''",
 'previewnote' => "'''Бо чүгле шенеп көөрү-дүр.'''
  Бижик ам-даа шыгжатынмаан!",
-'editing' => '«$1» деп арынны өскертип турар',
-'editingsection' => '«$1» деп арынның салбырын өскертип турар',
+'editing' => '«$1» деп арынны эдери',
+'editingsection' => '«$1» деп арынның салбырын эдери',
 'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
 'yourtext' => 'Силерниң сөзүглелиңер',
 'yourdiff' => 'Ылгалдар',
@@ -501,23 +520,25 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
 'searchresults-title' => '«$1» диле',
 'prevn' => 'эрткен {{PLURAL:$1|$1}}',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эрткен $1 {{PLURAL:$1|түңнел|түңнел}}',
-'nextn-title' => 'Дараазында $1 {{PLURAL:$1|түңнел|түңнел}}',
+'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
+'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
 'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнелди|түңнелди}} көргүзери',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
-'searchmenu-new' => "'''Бо вики-проектиге «[[:$1]]» арынны чогаадыры'''",
+'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
+'searchmenu-new' => "'''Бо викиде «[[:$1]]» арынны чогаадыры'''",
 'searchhelp-url' => 'Help:Допчузу',
 'searchprofile-articles' => 'үндезин арыннар',
 'searchprofile-project' => 'Төлевилел биле дуза арыннары',
 'searchprofile-images' => 'Мультимедиа',
 'searchprofile-everything' => 'Бүгүде',
-'searchprofile-advanced' => 'делгем',
+'searchprofile-advanced' => 'Ð\9aалбаÑ\80Ñ\82Ñ\8bÑ\80Ñ\8b',
 'searchprofile-articles-tooltip' => '$1 иштинден дилээри',
 'searchprofile-project-tooltip' => '$1 иштинде дилээри',
 'searchprofile-images-tooltip' => 'Файлдар дилээри',
 'searchprofile-everything-tooltip' => 'Шупту арыннардан дилээри (сумележиишкиннерден база)',
 'searchprofile-advanced-tooltip' => 'Айыткан аттар делгемнеринден дилээри',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сөс}})',
+'search-redirect' => '(шигледир $1)',
 'search-section' => '(«$1» деп салбыр)',
 'search-suggest' => 'Силер «$1» деп бодадыңар чадавас',
 'search-interwiki-more' => '(артык)',
@@ -633,7 +654,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'бо арынны номчууру',
-'action-edit' => 'бо арынны өскертири',
+'action-edit' => 'бо арынны эдери',
 'action-createpage' => 'арыннарны чогаадыры',
 'action-createtalk' => 'чугаалажырга арыннарны чогаадыры',
 'action-createaccount' => 'бо бүрүткел бижиктерин бүдүрери',
@@ -649,14 +670,16 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchanges-feed-description' => 'Бо агымда викиниң сөөлгү өскерлиишкиннерин көөрү.',
 'recentchanges-label-newpage' => 'Бо өскерлиишкин чаа арынны чогааткан.',
 'recentchanges-label-minor' => 'Бо өскерлиишкин бичии-дир',
+'recentchanges-label-bot' => 'Бо эдилгени робот күүсетти.',
 'recentchanges-label-unpatrolled' => 'Бо өскерлиишкин истенмейн каан',
+'rclistfrom' => 'Starting from $1 чаа өскерлиишкиннерни көргүзери',
 'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
 'rcshowhidebots' => 'Роботтарну $1',
 'rcshowhideliu' => 'Кирер ажыглакчыларны $1',
 'rcshowhideanons' => 'Ат эвес ажыглакчыларны $1',
 'rcshowhidepatr' => 'истээн өскерлиишкиннерни $1',
 'rcshowhidemine' => 'Мээң өскерлиишкинимни $1',
-'rclinks' => ' $2 буруңу хүнде $1 өскерлиишкиннерни көргүзери<br />$3',
+'rclinks' => '$2 хүнде эрткен $1 өскерлиишкиннерни көргүзери<br />$3',
 'diff' => 'ылгал',
 'hist' => 'төөгү',
 'hide' => 'чажырары',
@@ -672,6 +695,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Recent changes linked
 'recentchangeslinked' => 'Хамааржыр өскерлиишкиннер',
 'recentchangeslinked-toolbox' => 'Хамааржыр өскерлиишкиннер',
+'recentchangeslinked-title' => '«$1» деп арынга хамаарыштырган өскерлиишкиннер',
 'recentchangeslinked-page' => 'Арынның ады:',
 
 # Upload
@@ -716,7 +740,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filehist-revert' => 'эгидип тургузары',
 'filehist-current' => 'амгы',
 'filehist-datetime' => 'Ай, Хүн/Шак',
-'filehist-thumb' => 'Бичии чурук',
+'filehist-thumb' => 'Бичии чурумал',
+'filehist-thumbtext' => 'Бичии чурумал for version as of $1',
 'filehist-user' => 'Ажыглакчы',
 'filehist-dimensions' => 'Хемчээлдери',
 'filehist-filesize' => 'Файл хемчээли',
@@ -738,6 +763,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filedelete-reason-otherlist' => 'Өске чылдагаан',
 
 # MIME search
+'mimetype' => 'MIME хевири:',
 'download' => 'алыры',
 
 # Unwatched pages
@@ -792,6 +818,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'longpages' => 'Узун арыннар',
 'protectedpages' => 'Камгалаган арыннар',
 'listusers' => 'Ажыглакчылар даңзызы',
+'usereditcount' => '$1 {{PLURAL:$1|эдилге}}',
 'newpages' => 'Чаа арыннар',
 'newpages-username' => 'Ажыглакчының ады:',
 'ancientpages' => 'Эң эрги арыннар',
@@ -806,7 +833,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'booksources-go' => 'Күүcедири',
 
 # Special:Log
-'specialloguserlabel' => 'Ð\90жÑ\8bглакÑ\87Ñ\8b:',
+'specialloguserlabel' => 'Ð\9aÒ¯Ò¯Ñ\81едикÑ\87и:',
 'speciallogtitlelabel' => 'Target (aтка азы ажыглакчыга):',
 'log' => 'Журналдар',
 
@@ -823,6 +850,9 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Special:Categories
 'categories' => 'Бөлүктер',
 
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'салыышкыннар',
+
 # Special:LinkSearch
 'linksearch' => 'Даштыкы холбааларга дилээри',
 'linksearch-ns' => 'Аттар делгеми:',
@@ -863,6 +893,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'watchthispage' => 'Бо арынны хайгаараары',
 'unwatch' => 'Хайгааравас',
 'unwatchthispage' => 'Бо арынны хайгаарабас',
+'watchlist-details' => 'Not counting talk pages, хайгаарал даңзыңарда {{PLURAL:$1|$1 арын}} бар.',
 'wlshowlast' => 'Сөөлү $1 шак болгаш $2 хүн иштинде $3 көргүзери',
 'watchlist-options' => 'Хайгаарал даңзының эдиглери',
 
@@ -872,6 +903,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 'enotif_newpagetext' => 'Бо чаа арын-дыр.',
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
+'changed' => 'өскертти',
 'enotif_anon_editor' => 'ат эвес ажыглакчы $1',
 
 # Delete
@@ -918,26 +950,28 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'blanknamespace' => '(Кол)',
 
 # Contributions
-'contributions' => 'Ажыглакчыниң немелделери',
-'contributions-title' => '«$1» деп ажыглакчының немелделери',
-'mycontris' => 'Мээң немелделерим',
+'contributions' => 'Ажыглакчыниң салыышкыннары',
+'contributions-title' => '«$1» деп ажыглакчының салыышкыннары',
+'mycontris' => 'Мээң салыышкыннарым',
 'contribsub2' => '$1 ($2)',
 'uctop' => '(баш)',
 'month' => 'Айдан:',
 'year' => 'Чылдан:',
 
-'sp-contributions-newbies' => 'Чүгле Ñ\87аа ÐºÐ¸Ñ\80еÑ\80илеÑ\80ниң Ð½ÐµÐ¼ÐµÐ»Ð´ÐµÐ»ÐµÑ\80ин ÐºÓ©Ñ\80гүзеÑ\80н',
+'sp-contributions-newbies' => 'Чүгле Ñ\87аа ÐºÐµÐ¶Ð¸Ð³Ò¯Ð½Ð½ÐµÑ\80ниң Ñ\81алÑ\8bÑ\8bÑ\88кÑ\8bннаÑ\80Ñ\8bн ÐºÓ©Ñ\80гүзеÑ\80и',
 'sp-contributions-blocklog' => 'кызыгаарлаашкынның журналы',
 'sp-contributions-uploads' => 'киирген чүүлдер',
 'sp-contributions-logs' => 'журналдар',
 'sp-contributions-talk' => 'чугаалажыры',
-'sp-contributions-search' => 'Ð\9dемелделеÑ\80ин дилээри',
+'sp-contributions-search' => 'СалÑ\8bÑ\8bÑ\88кÑ\8bннаÑ\80Ñ\8bн дилээри',
 'sp-contributions-username' => 'ИП-адрес азы ажыглачының ады:',
 'sp-contributions-submit' => 'Дилээри',
 
 # What links here
 'whatlinkshere' => 'Шөлүлгелерни бээр',
+'whatlinkshere-title' => '«$1» деп арынга шөлүтген арыннар',
 'whatlinkshere-page' => 'Арын:',
+'nolinkshere' => "'''[[:$1]]''' деп арынга шөлүтген арыннар чок.",
 'isredirect' => 'шиглидер арын',
 'istemplate' => 'киирткен арыннар',
 'isimage' => 'файлдың холбаазы',
@@ -951,10 +985,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'whatlinkshere-filters' => 'Шүүрлер',
 
 # Block/unblock
+'block' => 'Ажыглакчыны кызыгаарлаары',
 'blockip' => 'Ажыглакчыны кызыгаарлаары',
+'blockip-title' => 'Ажыглакчыны кызыгаарлаары',
+'blockip-legend' => 'Ажыглакчыны кызыгаарлаары',
 'ipadressorusername' => 'ИП-адрес азы aжыглaкчының aды',
 'ipbreason' => 'Чылдагаан:',
 'ipbreasonotherlist' => 'Өске чылдагаан',
+'ipbsubmit' => 'Бо ажыглакчыны кызыгаарлаары',
 'ipbother' => 'Өске шак:',
 'ipboptions' => '2 шак:2 hours,1 хүн:1 day,3 хүн:3 days,1 чеди-хонук:1 week,2 чеди-хонук:2 weeks,1 ай:1 month,3 ай:3 months,6 ай:6 months,1 чыл:1 year,төнмес-батпас:infinite',
 'ipbotheroption' => 'өске',
@@ -967,7 +1005,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'blocklink' => 'кызыгаарлаары',
 'unblocklink' => 'ажыдып хостаар',
 'change-blocklink' => 'кызыгаарлаашкынны өскертири',
-'contribslink' => 'немелделер',
+'contribslink' => 'салыышкыннар',
 'blocklogpage' => 'Кызыгаарлаашкынның журналы',
 'blocklogentry' => ', [[$1]] $2 дургузунда кызыгаарлаттынган: $3',
 'block-log-flags-anononly' => 'чүгле ат эвес ажыглакчылар',
@@ -1006,6 +1044,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Thumbnails
 'thumbnail-more' => 'Улгаттыр',
+'thumbnail_error' => 'Error creating бичии чурумал: $1',
 
 # Special:Import
 'import-comment' => 'Тайылбыр:',
@@ -1017,11 +1056,11 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-pt-userpage' => 'Силерниң ажыглакчы арыныңнар',
 'tooltip-pt-mytalk' => 'Силерниң чугаалажыр арыныңар',
 'tooltip-pt-preferences' => 'Силерниң шилилгеңер',
-'tooltip-pt-mycontris' => 'Силерниң немелделериңерның даңзызы',
+'tooltip-pt-mycontris' => 'Силерниң салыышкыннарыңарның даңзызы',
 'tooltip-pt-login' => 'Маңаа системаже киир бүрүткенип болур, ынчалза-даа ол албан эвес.',
 'tooltip-pt-logout' => 'Үнери',
 'tooltip-ca-talk' => 'Бо арын дугайында чыгаалажыры',
-'tooltip-ca-edit' => 'Силер бо арынны өскертип болур. Шыгжаар мурунда чижеглеп көрем.',
+'tooltip-ca-edit' => 'Силер бо арынны эдип болур. Шыгжаар мурунда чижеглеп көрем.',
 'tooltip-ca-addsection' => 'Чаа салбыр чаяар',
 'tooltip-ca-viewsource' => 'Бо арын камгалаттырган.
 Дөзү кодун көрүп болур силер.',
@@ -1041,10 +1080,11 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-n-recentchanges' => 'Викиниң энир өскерлиишкиннери',
 'tooltip-n-randompage' => 'Душ арынны көөрү',
 'tooltip-n-help' => 'Төлевилелдиң тайылбыры «{{SITENAME}}»',
+'tooltip-t-whatlinkshere' => 'Бүгү маңаа шөлүтген вики арыннарның даңзызы',
 'tooltip-t-recentchangeslinked' => 'Бо арындан шөлүткен өске арыннарның сөөлгү өскерлиишкиннери',
 'tooltip-feed-rss' => 'Бо арының РСС медээ агымы',
 'tooltip-feed-atom' => 'Бо арының Атом медээ агымы',
-'tooltip-t-contributions' => 'Бо ажыглакчының немелделериниң даңзазын көөрү.',
+'tooltip-t-contributions' => 'Бо ажыглакчының салыышкыннарының даңзазын көөрү.',
 'tooltip-t-emailuser' => 'Бо ажыглакчыга э-чагааны чорудаары',
 'tooltip-t-upload' => 'Файлдарны киирери',
 'tooltip-t-specialpages' => 'Шупту тускай арыннар даңзызы',
@@ -1086,11 +1126,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'nextdiff' => 'Артык чаа үндүрери →',
 
 # Media information
+'thumbsize' => 'Бичии чурумалдың хемчээли:',
 'widthheightpage' => '$1x$2, $3 {{PLURAL:$3|арын}}',
-'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME янзызы: $4',
+'file-info' => 'файлдың хемчээли: $1, MIME хевири: $2',
+'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME хевири: $4',
+'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|арын|арын}}',
 'file-nohires' => 'Оон улуг хевири чок',
 'svg-long-desc' => 'SVG файл, $1 x $2 пиксел, файл хемчээли: $3',
-'show-big-image' => 'УлÑ\83г Ñ\87Ñ\83Ñ\80Ñ\83к',
+'show-big-image' => 'УлÑ\83г Ñ\87Ñ\83Ñ\80Ñ\83мал',
 'show-big-image-size' => '$1 × $2 пиксел',
 
 # Special:NewFiles
@@ -1099,6 +1142,31 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'noimages' => 'Nothing to see.',
 'ilsubmit' => 'Дилээр',
 
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '{{PLURAL: $1|$1 секунда|$1 секунда}}',
+'minutes' => '{{PLURAL: $1|$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|$1 шак|$1 шак}}',
+'days' => '{{PLURAL:$1|$1 хүн|$1 хүн}}',
+'ago' => '$1 бурунгаар',
+
+# Metadata
+'metadata' => 'Чурумал дугайында медээлер',
+'metadata-fields' => 'Чурумал дугайында медээлер listed in this message will be included on image page display when the metadata table is collapsed.
+Others will be hidden by default.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
 # EXIF tags
 'exif-imagewidth' => 'Калбаа',
 'exif-imagelength' => 'Бедик',
@@ -1107,21 +1175,38 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'exif-usercomment' => 'Ажыглакчының тайылбырлары',
 'exif-jpegfilecomment' => 'JPEG фалй тайылбыры',
 'exif-headline' => 'Баш ат',
+'exif-languagecode' => 'Дыл',
 'exif-pngfilecomment' => 'PNG фалй тайылбыры',
 'exif-giffilecomment' => 'GIF фалй тайылбыры',
 
 'exif-subjectdistancerange-2' => 'Чоок көрүш',
 'exif-subjectdistancerange-3' => 'ырак көрүш',
 
+'exif-dc-type' => 'Медиа хевири',
+
+'exif-iimcategory-sci' => 'Эртем база техника',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-wea' => 'Агаар',
+
+# External editor support
+'edit-externally' => 'Бо файлды даштыки application-биле эдер',
+
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'шупту',
 'namespacesall' => 'шупту',
 'monthsall' => 'шупту',
 'limitall' => 'шупту',
 
+# Delete conflict
+'recreate' => 'Катап чогаадыры',
+
 # action=purge
 'confirm_purge_button' => 'Чөп',
 
+# action=watch/unwatch
+'confirm-watch-button' => 'Чөп',
+'confirm-unwatch-button' => 'Чөп',
+
 # Multipage image navigation
 'imgmultipageprev' => '← эрткен арын',
 'imgmultipagenext' => 'дараазында арын →',
@@ -1147,7 +1232,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Даңзы арыннарының өскерлиишкиннери',
-'watchlisttools-edit' => 'Хайгаарал даңзыны көөрү болгаш өскертири',
+'watchlisttools-edit' => 'Хайгаарал даңзыны көөрү/эдери',
 'watchlisttools-raw' => 'Чиг хайгаарал даңзыны өскертири',
 
 # Special:Version
@@ -1163,11 +1248,12 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Файлдың ады:',
 'fileduplicatesearch-submit' => 'Дилээри',
-'fileduplicatesearch-info' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81ел<br />Файл Ñ\85емÑ\87Ñ\8dÑ\8dли: $3<br />MIME Ñ\8fнзÑ\8bзÑ\8b: $4',
+'fileduplicatesearch-info' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81ел<br />Файл Ñ\85емÑ\87Ñ\8dÑ\8dли: $3<br />MIME Ñ\85евиÑ\80и: $4',
 
 # Special:SpecialPages
 'specialpages' => 'Тускай арыннар',
 'specialpages-group-other' => 'Өске тускай арыннар',
+'specialpages-group-pages' => 'Арыннарның даңзызы',
 'specialpages-group-pagetools' => 'Арын херекселдери',
 
 # Special:BlankPage
@@ -1178,6 +1264,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tag-filter-submit' => 'Шүүрү',
 'tags-title' => 'Демдеглелдер',
 'tags-edit' => 'өскертири',
+'tags-hitcount' => '$1 {{PLURAL:$1|өскерлиишкин}}',
 
 # Special:ComparePages
 'comparepages' => 'Арыннарны дөмейлеп көөрү',
@@ -1195,4 +1282,14 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'feedback-message' => 'Чагаа:',
 'feedback-cancel' => 'Соксаары',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL: $1|секунда|секунда}}',
+'duration-minutes' => '$1 {{PLURAL: $1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL: $1|шак|шак}}',
+'duration-days' => '$1 {{PLURAL:$1|хүн|хүн}}',
+'duration-weeks' => '$1 {{PLURAL: $1|чеди-хонук|чеди-хонук}}',
+'duration-years' => '$1 {{PLURAL: $1|чыл|чыл}}',
+'duration-decades' => '$1 {{PLURAL:$1|он хонук|он хонук}}',
+'duration-centuries' => '$1 {{PLURAL:$1|чүс чыл|чүс чыл}}',
+
 );
index 5d5a8b9..2423ec2 100644 (file)
@@ -1364,7 +1364,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'nchanges' => '$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
 'recentchanges' => 'يېقىنقى ئۆزگەرتىشلەر',
 'recentchanges-legend' => 'يېقىنقى ئۆزگەرتىش تاللانمىسى',
-'recentchangestext' => 'بۇ wiki نىڭ يېقىنقى ئۆزگىرىشىنى ئىز قوغلا.',
+'recentchanges-summary' => 'بۇ wiki نىڭ يېقىنقى ئۆزگىرىشىنى ئىز قوغلا.',
 'recentchanges-feed-description' => 'بۇ قانالنىڭ wiki دىكى يېقىنقى ئۆزگىرىشىنى ئىز قوغلا.',
 'recentchanges-label-newpage' => 'بۇ قېتىملىق تەھىر يېڭى بەتتىن بىرنى قۇرىدۇ',
 'recentchanges-label-minor' => 'بۇ ئازراقلا تەھرىرلەش',
index 7e3da2d..4d1ce94 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Ukrainian (Українська)
+/** Ukrainian (українська)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
  * @author Тест
  */
 
-/**
- * УВАГА! НЕ РЕДАГУЙТЕ ЦЕЙ ФАЙЛ!
- *
- * Якщо необхідно змінити переклад окремих частин інтерфейсу,
- * то це можна зробити редагуючи сторінки типу «MediaWiki:*».
- * Їх список можна знайти на сторінці «Special:Allmessages».
- */
-
 $separatorTransformTable = array(
        ',' => "\xc2\xa0", # nbsp
        '.' => ','
@@ -109,6 +101,104 @@ $bookstoreList = array(
        'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
 );
 
+$specialPageAliases = array(
+       'Activeusers'               => array( 'Активні_учасники' ),
+       'Allmessages'               => array( 'Системні_повідомлення' ),
+       'Allpages'                  => array( 'Усі_сторінки' ),
+       'Ancientpages'              => array( 'Давні_сторінки' ),
+       'Badtitle'                  => array( 'Помилковий_заголовок' ),
+       'Blankpage'                 => array( 'Порожня_сторінка' ),
+       'Block'                     => array( 'Заблокувати' ),
+       'Blockme'                   => array( 'Заблокуйте_мене' ),
+       'Booksources'               => array( 'Джерела_книг' ),
+       'BrokenRedirects'           => array( 'Розірвані_перенаправлення' ),
+       'Categories'                => array( 'Категорії' ),
+       'ChangeEmail'               => array( 'Змінити_e-mail' ),
+       'ChangePassword'            => array( 'Змінити_пароль' ),
+       'ComparePages'              => array( 'Порівняння_сторінок' ),
+       'Confirmemail'              => array( 'Підтвердити_e-mail' ),
+       'Contributions'             => array( 'Внесок' ),
+       'CreateAccount'             => array( 'Створити_обліковий_запис' ),
+       'Deadendpages'              => array( 'Сторінки_без_посилань' ),
+       'DeletedContributions'      => array( 'Вилучений_внесок' ),
+       'Disambiguations'           => array( 'Неоднозначні_посилання' ),
+       'DoubleRedirects'           => array( 'Подвійні_перенаправлення' ),
+       'EditWatchlist'             => array( 'Правити_список_спостереження' ),
+       'Emailuser'                 => array( 'Лист_користувачеві' ),
+       'Export'                    => array( 'Експорт' ),
+       'Fewestrevisions'           => array( 'Найменші_перевірки' ),
+       'FileDuplicateSearch'       => array( 'Пошук_дублікатів_файлів' ),
+       'Filepath'                  => array( 'Шлях_до_файлу' ),
+       'Import'                    => array( 'Імпорт' ),
+       'Invalidateemail'           => array( 'Нечинна_e-mail' ),
+       'BlockList'                 => array( 'Список_блокувань', 'Блокування', 'Блокування_IP-адрес' ),
+       '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( 'Найбільш_використовувані_файли' ),
+       '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( 'Налаштування' ),
+       'Protectedpages'            => array( 'Захищені_сторінки' ),
+       'Protectedtitles'           => array( 'Захищені_назви_сторінок' ),
+       'Randompage'                => array( 'Випадкова_сторінка' ),
+       'Randomredirect'            => array( 'Випадкове_перенаправлення' ),
+       'Recentchanges'             => array( 'Нові_редагування' ),
+       'Recentchangeslinked'       => array( 'Пов\'язані_редагування' ),
+       'Revisiondelete'            => 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( 'Завантаження' ),
+       'UploadStash'               => array( 'Приховане_завантаження' ),
+       'Userlogin'                 => array( 'Вхід' ),
+       'Userlogout'                => array( 'Вихід' ),
+       'Userrights'                => array( 'Керування_правами_користувачів' ),
+       'Version'                   => array( 'Версія' ),
+       'Wantedcategories'          => array( 'Потрібні_категорії' ),
+       'Wantedfiles'               => array( 'Потрібні_файли' ),
+       'Wantedpages'               => array( 'Потрібні_сторінки' ),
+       'Wantedtemplates'           => array( 'Потрібні_шаблони' ),
+       'Watchlist'                 => array( 'Список_спостереження' ),
+       'Whatlinkshere'             => array( 'Посилання_сюди' ),
+       'Withoutinterwiki'          => array( 'Без_інтервікі' ),
+);
+
 $magicWords = array(
        'redirect'                => array( '0', '#ПЕРЕНАПРАВЛЕННЯ', '#ПЕРЕНАПР', '#перенапр', '#перенаправление', '#REDIRECT' ),
        'notoc'                   => array( '0', '__БЕЗ_ЗМІСТУ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
@@ -263,10 +353,10 @@ $messages = array(
 'tog-hideminor' => 'Ховати незначні редагування у списку останніх змін',
 'tog-hidepatrolled' => 'Приховувати патрульовані редагування у списку нових редагувань',
 'tog-newpageshidepatrolled' => 'Приховувати патрульовані сторінки у списку нових сторінок',
-'tog-extendwatchlist' => 'РозÑ\88иÑ\80ений Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f, Ñ\89о Ð²ÐºÐ»Ñ\8eÑ\87аÑ\94 Ð²сі зміни, а не лише останню',
-'tog-usenewrc' => 'Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ð¿Ð¾ÐºÑ\80аÑ\89ений Ñ\81пиÑ\81ок Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н (JavaScript)',
+'tog-extendwatchlist' => 'РозÑ\88иÑ\80ений Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f, Ñ\89о Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\83сі зміни, а не лише останню',
+'tog-usenewrc' => 'Ð\9dа Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85 Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н Ñ\82а Ð² Ñ\81пиÑ\81кÑ\83 Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f Ð³Ñ\80Ñ\83пÑ\83ваÑ\82и Ñ\80едагÑ\83ваннÑ\8f (поÑ\82Ñ\80Ñ\96бен JavaScript)',
 'tog-numberheadings' => 'Автоматично нумерувати заголовки',
-'tog-showtoolbar' => 'Показувати панель інструментів при редагуванні (JavaScript)',
+'tog-showtoolbar' => 'Показувати панель інструментів (JavaScript)',
 'tog-editondblclick' => 'Редагувати сторінки при подвійному клацанні мишкою (JavaScript)',
 'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
 'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку (JavaScript)',
@@ -278,7 +368,7 @@ $messages = array(
 'tog-watchdeletion' => 'Додавати вилучені мною сторінки до мого списку спостереження',
 'tog-minordefault' => 'Спочатку позначати всі зміни незначними',
 'tog-previewontop' => 'Показувати попередній перегляд перед вікном редагування, а не після',
-'tog-previewonfirst' => 'Ð\9fоказÑ\83ваÑ\82и Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\80и Ð¿ÐµÑ\80Ñ\88омÑ\83 Ñ\80едагÑ\83ваннÑ\96',
+'tog-previewonfirst' => 'Ð\9fоказÑ\83ваÑ\82и Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\96д Ñ\87аÑ\81 Ð¿ÐµÑ\80Ñ\88ого Ñ\80едагÑ\83ваннÑ\8f',
 'tog-nocache' => 'Відключити кешування сторінок браузером',
 'tog-enotifwatchlistpages' => 'Повідомляти електронною поштою, коли сторінка з мого списку спостереження змінилася',
 'tog-enotifusertalkpages' => 'Повідомляти електронною поштою про зміну моєї сторінки обговорення',
@@ -299,7 +389,7 @@ $messages = array(
 'tog-watchlisthideanons' => 'Ховати редагування анонімів у списку спостереження',
 'tog-watchlisthidepatrolled' => 'Приховувати патрульовані редагування у списку спостререження',
 'tog-nolangconversion' => 'Відключити перетворення систем письма',
-'tog-ccmeonemails' => 'Ð\92Ñ\96дпÑ\80авлÑ\8fти мені копії листів, які я надсилаю іншим користувачам',
+'tog-ccmeonemails' => 'Ð\9dадÑ\81илати мені копії листів, які я надсилаю іншим користувачам',
 'tog-diffonly' => 'Не показувати вміст сторінки під різницею версій',
 'tog-showhiddencats' => 'Показувати приховані категорії',
 'tog-noconvertlink' => 'Вимкнути конвертацію назви посилання',
@@ -376,11 +466,11 @@ $messages = array(
 'category-empty' => "''Ця категорія зараз порожня.''",
 'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
 'hidden-category-category' => 'Приховані категорії',
-'category-subcat-count' => '{{PLURAL:$1|Показана $1 підкатегорія|Показані $1 підкатегорії|Показані $1 підкатегорій}} із $2.',
+'category-subcat-count' => 'Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.',
 'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
-'category-article-count' => '{{PLURAL:$1|Показана $1 сторінка|Показані $1 сторінки|Показані $1 сторінок}} цієї категорії з $2.',
+'category-article-count' => 'Показано $1 {{PLURAL:$1|сторінку|сторінки|сторінок}} цієї категорії (із $2).',
 'category-article-count-limited' => 'У цій категорії {{PLURAL:$1|$1 сторінка|$1 сторінки|$1 сторінок}}.',
-'category-file-count' => '{{PLURAL:$2|Ця категорія містить $2 файл.|{{PLURAL:$1|Показаний $1 файл|Показані $1 файли|Показані $1 файлів}} цієї категорії з $2.}}',
+'category-file-count' => 'Показано $1 {{PLURAL:$1|файл|файли|файлів}} цієї категорії (із $2).',
 'category-file-count-limited' => 'У цій категорії {{PLURAL:$1|$1 файл|$1 файли|$1 файлів}}.',
 'listingcontinuesabbrev' => '(прод.)',
 'index-category' => 'Індексовані сторінки',
@@ -488,7 +578,7 @@ $messages = array(
 Будь ласка, почекайте і повторіть спробу отримати доступ пізніше.
 
 $1',
-'pool-timeout' => 'ЧаÑ\81 Ð¾Ñ\87Ñ\8bкування блокування вичерпано',
+'pool-timeout' => 'ЧаÑ\81 Ð¾Ñ\87Ñ\96кування блокування вичерпано',
 'pool-queuefull' => 'Сервер запитів заповнений',
 'pool-errorunknown' => 'Невідома помилка',
 
@@ -637,7 +727,7 @@ $1',
 'actionthrottledtext' => 'Як захід боротьби зі спамом, установлено обмеження на багаторазове застосування цієї дії протягом короткого проміжку часу. Будь ласка, повторіть спробу через кілька хвилин.',
 'protectedpagetext' => 'Ця сторінка закрита для редагування.',
 'viewsourcetext' => 'Ви можете переглянути та скопіювати початковий текст цієї сторінки:',
-'viewyourtext' => "Ви можете переглянути або скопіювати вихідний текст '''ваших редагувань''' на цю сторінку:",
+'viewyourtext' => "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
 'protectedinterface' => 'Ця сторінка є частиною інтерфейсу програмного забезпечення і її можуть редагувати лише адміністратори проекту.',
 'editinginterface' => "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки викличуть зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
 'sqlhidden' => '(SQL запит приховано)',
@@ -648,8 +738,11 @@ $1',
 'ns-specialprotected' => 'Спеціальні сторінки не можна редагувати.',
 'titleprotected' => "Створення сторінки з такою назвою було заборонене користувачем [[User:$1|$1]].
 Зазначена наступна причина: ''$2''.",
-'filereadonlyerror' => 'Не вдалося змінити файл «$1» тому, що файловий архів «$2» знаходиться в режимі «лише для читання».
-Вказана причина — «$3».',
+'filereadonlyerror' => "Неможливо змінити файл «$1» тому, що файловий архів «$2» перебуває в режимі «лише для читання».
+Адміністратор, що заблокував його, залишив таке пояснення: «''$3''».",
+'invalidtitle-knownnamespace' => 'Неприйнятна назва у просторі імен «$2» і текстом «$3»',
+'exception-nologin' => 'Не виконано вхід',
+'exception-nologin-text' => 'Ця сторінка чи дія потребує, щоб Ви ввійшли до цієї Вікі.',
 
 # Virus scanner
 'virus-badscanner' => "Помилка налаштування: невідомий сканер вірусів: ''$1''",
@@ -680,7 +773,7 @@ $1',
 'notloggedin' => 'Ви не ввійшли до системи',
 'nologin' => "Ви ще не зареєструвались? '''$1'''.",
 'nologinlink' => 'Створіть обліковий запис',
-'createaccount' => 'СÑ\82воÑ\80иÑ\82и',
+'createaccount' => 'Ð\97аÑ\80еÑ\94Ñ\81Ñ\82Ñ\80Ñ\83ваÑ\82иÑ\81Ñ\8f',
 'gotaccount' => "Ви вже зареєстровані? '''$1'''.",
 'gotaccountlink' => 'Увійдіть',
 'userlogin-resetlink' => 'Забули дані, потрібні для входу?',
@@ -746,6 +839,7 @@ $1',
 'invalidemailaddress' => 'Уведена адреса не може бути прийнята, бо вона не відповідає формату адрес електронної пошти.
 Будь ласка, введіть коректну адресу або залиште поле порожнім.',
 'cannotchangeemail' => 'У цій вікі не можна міняти свою адресу ел. пошти.',
+'emaildisabled' => 'Цей сайт не може надіслати електронні листи.',
 'accountcreated' => 'Обліковий запис створено.',
 'accountcreatedtext' => 'Обліковий запис для $1 створено.',
 'createaccount-title' => 'Створення облікового запису для {{SITENAME}}',
@@ -942,8 +1036,8 @@ $2
 Пам'ятайте, що користувацькі .css та .js сторінки повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
 'updated' => '(Оновлена)',
 'note' => "'''Зауваження:'''",
-'previewnote' => "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е лише попередній перегляд.'''
\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\89е Ð½Ðµ Ð±Ñ\83ли Ð·Ð±ÐµÑ\80еженÑ\96!",
+'previewnote' => "'''Це лише попередній перегляд.'''
\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\89е Ð½Ðµ Ð·Ð±ÐµÑ\80ежено!",
 'continue-editing' => 'Продовжити редагування',
 'previewconflict' => 'Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядіти, якщо ви вирішите зберегти його.',
 'session_fail_preview' => "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.
@@ -968,7 +1062,8 @@ $2
 Якщо ви натиснете «{{int:savearticle}}», то буде збережено '''тільки''' текст у верхньому вікні редагування.",
 'yourtext' => 'Ваш текст',
 'storedversion' => 'Збережена версія',
-'nonunicodebrowser' => "'''ПОПЕРЕДЖЕННЯ: Ваш [[браузер]] не підтримує кодування [[Юнікод]]. При редагуванні статей всі не-ASCII символи будуть замінені на свої шіснадцяткові коди.'''",
+'nonunicodebrowser' => "'''ПОПЕРЕДЖЕННЯ: Ваш [[браузер]] не підтримує [[Юнікод]].''' 
+Щоб подолати це обмеження та дозволити Вам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
 'editingold' => "'''ПОПЕРЕДЖЕННЯ: Ви редагуєте застарілу версію даної статті.
 Якщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
 'yourdiff' => 'Відмінності',
@@ -1026,6 +1121,7 @@ $2
 'edit-no-change' => 'Ваше редагування відхилене, оскільки в тексті не було зроблено змін.',
 'edit-already-exists' => 'Неможливо створити нову сторінку.
 Вона вже існує.',
+'defaultmessagetext' => 'Текст «за замовчування»',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Увага: Ця сторінка містить дуже багато викликів ресурсомістких функцій.
@@ -1041,6 +1137,11 @@ $2
 'parser-template-loop-warning' => 'Виявлена петля у шаблонах: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Перевищене обмеження глибини рекурсії шаблону ($1)',
 'language-converter-depth-warning' => 'Перевищене обмеження глибини мовного конвертора ($1)',
+'node-count-exceeded-category' => 'Сторінки, на яких перевищено лічильник вузлів',
+'node-count-exceeded-warning' => 'Кількість вузлів препроцесора на сторінці перевищила встановлену межу.',
+'expansion-depth-exceeded-category' => 'Сторінки, де перевищено глибину розгортання',
+'expansion-depth-exceeded-warning' => 'На сторінці перевищено межу глибини вкладеності',
+'parser-unstrip-loop-warning' => 'Виявлено незакритий тег (такий, як <pre>)',
 
 # "Undo" feature
 'undo-success' => 'Редагування може бути скасовано.
@@ -1218,9 +1319,9 @@ $1",
 'mergelogpagetext' => "Нижче наведений список останніх об'єднань історій сторінок.",
 
 # Diffs
-'history-title' => 'Історія змін сторінки «$1»',
-'difference-title' => 'Відмінності між версіями «$1»',
-'difference-title-multipage' => 'Ð\92Ñ\96дмÑ\96нноÑ\81Ñ\82Ñ\96 Ð¼Ñ\96ж Ñ\81Ñ\82оÑ\80Ñ\96нками Â«$1» Ñ\96 «$2»',
+'history-title' => '$1: Історія змін',
+'difference-title' => '$1: Відмінності між версіями',
+'difference-title-multipage' => 'РÑ\96зниÑ\86Ñ\8f Ð¼Ñ\96ж Ñ\81Ñ\82оÑ\80Ñ\96нками Â«$1» Ñ\82а «$2»',
 'difference-multipage' => '(Різниця між сторінками)',
 'lineno' => 'Рядок $1:',
 'compareselectedversions' => 'Порівняти вибрані версії',
@@ -1315,6 +1416,7 @@ $1",
 'prefs-beta' => 'Бета-функції',
 'prefs-datetime' => 'Дата й час',
 'prefs-labs' => 'Експериментальні функції',
+'prefs-user-pages' => 'Сторінки користувача',
 'prefs-personal' => 'Особисті дані',
 'prefs-rc' => 'Сторінка останніх редагувань',
 'prefs-watchlist' => 'Список спостереження',
@@ -1340,10 +1442,10 @@ $1",
 'resultsperpage' => 'Кількість результатів на сторінку:',
 'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
 'stub-threshold-disabled' => 'Вимкнений',
-'recentchangesdays' => 'Ð\9dа скільки днів показувати нові редагування:',
+'recentchangesdays' => 'Ð\97а скільки днів показувати нові редагування:',
 'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|день|дні|днів}})',
 'recentchangescount' => 'Кількість редагувань для показу за умовчанням:',
-'prefs-help-recentchangescount' => 'Це Ñ\82оÑ\80кається нових редагувань, історій сторінок і журналів.',
+'prefs-help-recentchangescount' => 'Це Ñ\81Ñ\82оÑ\81Ñ\83ється нових редагувань, історій сторінок і журналів.',
 'prefs-help-watchlist-token' => 'Заповнення цього поля секретним ключем буде створювати RSS-трансляцію для вашого списку спостереження.
 Кожен, хто знає ключ в цьому полі, зможе читати ваш список спостереження, тому оберіть секретне значення.
 Ви можете використати це випадково згенероване значення: $1',
@@ -1399,7 +1501,8 @@ $1",
 'gender-unknown' => 'не зазначена',
 'gender-male' => 'чоловіча',
 'gender-female' => 'жіноча',
-'prefs-help-gender' => "Необов'язкове поле: використовується в деяких повідомленнях двигуна, які залежать від статі користувача. Значення параметра загальнодоступне.",
+'prefs-help-gender' => "Необов'язково. Застосовується рушієм у тих звертаннях до користувача, які залежать від статі.
+Ця інформація загальнодоступна.",
 'email' => 'Електронна пошта',
 'prefs-help-realname' => "Справжнє ім'я необов'язково вказувати.
 Якщо ви його зазначите, то воно буде використовуватися, щоб показати, хто редагував сторінку.",
@@ -1581,7 +1684,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|зміна|зміни|змін}}',
 'recentchanges' => 'Нові редагування',
 'recentchanges-legend' => 'Налаштування нових редагувань',
-'recentchanges-summary' => 'Ð\9dа Ñ\86Ñ\96й Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð¾Ñ\81Ñ\82аннÑ\96 Ð·Ð¼Ñ\96ни на сторінках {{grammar:genitive|{{SITENAME}}}}.',
+'recentchanges-summary' => 'Ð\92Ñ\96дÑ\81Ñ\82еженнÑ\8f Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н на сторінках {{grammar:genitive|{{SITENAME}}}}.',
 'recentchanges-feed-description' => 'Відстежувати останні зміни у вікі в цьому потоці.',
 'recentchanges-label-newpage' => 'Цим редагуванням створена нова сторінка',
 'recentchanges-label-minor' => 'Це незначна зміна',
@@ -1622,7 +1725,7 @@ $1",
 'recentchangeslinked-title' => "Пов'язані редагування для «$1»",
 'recentchangeslinked-noresult' => "На пов'язаних сторінках не було змін протягом зазначеного періоду.",
 'recentchangeslinked-summary' => "Це список нещодавніх змін на сторінках, на які посилається зазначена сторінка (або на сторінках, що містяться в цій категорії).
-Сторінки з [[Special:Watchlist|вашого списку спостереження]] виділені '''жирним шрифтом'''.",
+Сторінки з [[Special:Watchlist|вашого списку спостереження]] виділено '''жирним шрифтом'''.",
 'recentchangeslinked-page' => 'Назва сторінки:',
 'recentchangeslinked-to' => "Показати зміни на сторінках, пов'язаних з даною",
 
@@ -1688,7 +1791,7 @@ $1",
 'filename-tooshort' => 'Назва файлу занадто коротка.',
 'filetype-banned' => 'Цей тип файлів заборонений.',
 'verification-error' => 'Файлу не вдалося пройти процедуру перевірки.',
-'hookaborted' => 'Ð\97апÑ\80опонованÑ\83 Ð²Ð°Ð¼Ð¸ Ð·Ð¼Ñ\96нÑ\83 Ð¿ÐµÑ\80еÑ\80вав Ð¾Ð±Ñ\80обник Ñ\80озÑ\88иÑ\80еннÑ\8f.',
+'hookaborted' => 'Ð\97мÑ\96нÑ\83, Ñ\89о Ð\92и Ð½Ð°Ð¼Ð°Ð³Ð°Ð»Ð¸Ñ\81Ñ\8f Ð·Ñ\80обиÑ\82и, Ð²Ñ\96дкинÑ\83Ñ\82о Ð¾Ð±Ñ\80обником.',
 'illegal-filename' => 'Недозволена назва файлу.',
 'overwrite' => 'Заміну існуючого файлу не дозволено.',
 'unknown-error' => 'Трапилась невідома помилка.',
@@ -1802,6 +1905,7 @@ $1',
 'backend-fail-internal' => 'Сталася невідома помилка у сховищі рушія "$1".',
 'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
 'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
+'backend-fail-usable' => 'Файл $1 не може бути записано через недостатні повноваження чи відсутність каталогів (контейнерів).',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Не вдалося підключитися до бази даних журналу для сховища «$1».',
@@ -1926,6 +2030,10 @@ $1',
 Додаткову інформацію можна знайти на [$2 сторінці опису файлу].',
 'sharedupload-desc-here' => 'Цей файл з $1 і може використовуватися в інших проектах.
 Далі наведена інформація з його [$2 сторінки опису].',
+'sharedupload-desc-edit' => 'Цей файл з $1 і може використовуватися в інших проектах. 
+Його опис можна відредагувати [$2 на відповідній сторінці тут].',
+'sharedupload-desc-create' => 'Цей файл з $1 і може використовуватися в інших проектах. 
+Його опис можна зробити [$2 на відповідній сторінці тут].',
 'filepage-nofile' => 'Не існує файлу з такою назвою.',
 'filepage-nofile-link' => 'Не існує файлу з такою назвою, але ви можете [$1 завантажити його].',
 'uploadnewversion-linktext' => 'Завантажити нову версію цього файлу',
@@ -2119,6 +2227,7 @@ $1',
 Ви можете відфільтрувати результати за типом журналу, іменем користувача (враховується регістр) або зазначеною сторінкою (також враховується регістр).',
 'logempty' => 'В журналі немає подібних записів.',
 'log-title-wildcard' => 'Знайти заголовки, що починаються з цих символів',
+'showhideselectedlogentries' => 'Показати/приховати виділені записи журналу',
 
 # Special:AllPages
 'allpages' => 'Усі сторінки',
@@ -2138,6 +2247,11 @@ $1',
 'allpages-bad-ns' => '{{SITENAME}} не має простору назв «$1».',
 'allpages-hide-redirects' => 'Сховати перенаправлення',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Ви переглядаєте кешовану версію сторінки, яка могла бути оновлена $1 тому.',
+'cachedspecial-viewing-cached-ts' => 'Ви переглядаєте кешовану версію сторінки, яка могла втратити актуальність',
+'cachedspecial-refresh-now' => 'Показати останні',
+
 # Special:Categories
 'categories' => 'Категорії',
 'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
@@ -2248,8 +2362,8 @@ $1',
 'watchnologin' => 'Ви не ввійшли до системи',
 'watchnologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]], щоб мати можливість змінювати список спостереження.',
 'addwatch' => 'Додати до списку спостереження',
-'addedwatchtext' => "Сторінка «[[:$1]]» додана до вашого [[Special:Watchlist|списку спостереження]].
\9dаÑ\81Ñ\82Ñ\83пнÑ\96 Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82аÑ\82Ñ\82Ñ\96 Ñ\96 Ð¿Ð¾Ð²'Ñ\8fзаноÑ\97 Ð· Ð½ÐµÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ\80еннÑ\8f Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83, Ð° Ñ\82акож Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð²Ð¸Ð´Ñ\96ленÑ\96 '''жирним шрифтом''' на сторінці зі [[Special:RecentChanges|списком останніх редагувань]], щоб їх було легше помітити.",
+'addedwatchtext' => "Сторінку «[[:$1]]» додано до вашого [[Special:Watchlist|списку спостереження]].
\9fодалÑ\8cÑ\88Ñ\96 Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки (Ñ\82а Ð¿Ð¾Ð²'Ñ\8fзаноÑ\97 Ð· Ð½ÐµÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ\80еннÑ\8f) Ð²Ñ\96добÑ\80ажаÑ\82имÑ\83Ñ\82Ñ\8cÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83. Ð¢Ð°ÐºÐ¾Ð¶ Ñ\97Ñ\85 Ð±Ñ\83де Ð²Ð¸Ð´Ñ\96лено '''жирним шрифтом''' на сторінці зі [[Special:RecentChanges|списком останніх редагувань]], щоб їх було легше помітити.",
 'removewatch' => 'Видалити зі списку спостереження',
 'removedwatchtext' => 'Сторінка «[[:$1]]» вилучена з вашого [[Special:Watchlist|списку спостереження]].',
 'watch' => 'Спостерігати',
@@ -2276,7 +2390,7 @@ $1',
 'watcherrortext' => 'Сталася помилка при заміні налаштувань списку спостереження для " $1 ".',
 
 'enotif_mailer' => '{{SITENAME}} Служба сповіщення поштою',
-'enotif_reset' => 'Ð\9fомÑ\96Ñ\82ити всі сторінки як переглянуті',
+'enotif_reset' => 'Ð\9fознаÑ\87ити всі сторінки як переглянуті',
 'enotif_newpagetext' => 'Це нова сторінка.',
 'enotif_impersonal_salutation' => 'Користувач {{grammar:genitive|{{SITENAME}}}}',
 'changed' => 'змінена',
@@ -2319,7 +2433,7 @@ $UNWATCHURL
 'deletepage' => 'Вилучити сторінку',
 'confirm' => 'Підтвердження',
 'excontent' => 'зміст: «$1»',
-'excontentauthor' => 'змÑ\96Ñ\81Ñ\82 Ð±Ñ\83в: Â«$1» (Ñ\94диним Ð°Ð²Ñ\82оÑ\80ом Ð±Ñ\83в [[Special:Contributions/$2|$2]])',
+'excontentauthor' => 'змÑ\96Ñ\81Ñ\82 Ð±Ñ\83в: Â«$1» (Ñ\94диний Ð°Ð²Ñ\82оÑ\80: [[Special:Contributions/$2|$2]])',
 'exbeforeblank' => 'зміст до очистки: «$1»',
 'exblank' => 'стаття була порожньою',
 'delete-confirm' => 'Вилучення «$1»',
@@ -2568,7 +2682,7 @@ $1',
 'ipboptions' => '2 години:2 hours,1 день:1 day,3 дні:3 days,1 тиждень:1 week,2 тижні:2 weeks,1 місяць:1 month,3 місяці:3 months,6 місяців:6 months,1 рік:1 year,назавжди:infinite',
 'ipbotheroption' => 'інший термін',
 'ipbotherreason' => 'Інша/додаткова причина:',
-'ipbhidename' => "Приховати ім'я користувача у редагуваннях ті списках",
+'ipbhidename' => "Приховати ім'я користувача у редагуваннях та списках",
 'ipbwatchuser' => 'Додати до списку спостереження сторінку користувача і його обговорення',
 'ipb-disableusertalk' => 'Заборонити користувачу редагувати свою сторінку обговорення під час блокування',
 'ipb-change-block' => 'Переблокувати користувача з цими налаштуваннями',
@@ -2626,9 +2740,9 @@ $1',
 'blocklog-showsuppresslog' => 'Цього користувача вже заблоковано і приховано. Далі наведено журнал приховань:',
 'blocklogentry' => 'заблокував [[$1]] на термін $2 $3',
 'reblock-logentry' => 'переблокував [[$1]] на термін $2 $3',
-'blocklogtext' => 'Ð\96Ñ\83Ñ\80нал Ð±Ð»Ð¾ÐºÑ\83ваннÑ\8f Ð¹ розблокування користувачів.
-IP-адреси, що блокуються автоматично тут не вказуються. Див.
-[[Special:BlockList|список поточних заборон і блокувань]].',
+'blocklogtext' => 'Ð\96Ñ\83Ñ\80нал Ð´Ñ\96й Ñ\89одо Ð±Ð»Ð¾ÐºÑ\83ваннÑ\8f Ñ\82а розблокування користувачів.
+Автоматично заблоковані IP-адреси тут не вказуються. 
+Див. [[Special:BlockList|перелік чинних обмежень]] .',
 'unblocklogentry' => 'розблокував $1',
 'block-log-flags-anononly' => 'тільки анонімні користувачі',
 'block-log-flags-nocreate' => 'заборонена реєстрація облікових записів',
@@ -3031,6 +3145,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Очистка спаму',
 'spam_reverting' => 'Відкинути до останньої версії, що не містить посилання на $1',
 'spam_blanking' => 'Всі версії містять посилання на $1, очистка',
+'spam_deleting' => 'Все версії, що містили посилання на $1, вилучаються',
 
 # Info page
 'pageinfo-title' => 'Інформація про " $1 "',
@@ -3788,8 +3903,8 @@ $5
 'livepreview-error' => "Не вдалося встановити з'єднання: $1 «$2». Спробуйте скористатися звичайним попереднім переглядом.",
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Зміни, зроблені $1 {{PLURAL:$1|секунду|секунди|секунд}} тому, можуть бути не показані в цьому списку.',
-'lag-warn-high' => 'ЧеÑ\80ез Ð²ÐµÐ»Ð¸ÐºÐµ Ð²Ñ\96дÑ\81Ñ\82аваннÑ\8f Ñ\83 Ñ\81инÑ\85Ñ\80онÑ\96заÑ\86Ñ\96Ñ\97 Ñ\81еÑ\80веÑ\80Ñ\96в Ð±Ð°Ð· Ð´Ð°Ð½Ð¸Ñ\85 Ð·Ð¼Ñ\96ни, Ð·Ñ\80обленÑ\96 Ð¼ÐµÐ½Ñ\88 Ð½Ñ\96ж $1 {{PLURAL:$1|Ñ\81екÑ\83ндÑ\83\81екÑ\83нди|Ñ\81екÑ\83нд}} Ñ\82омÑ\83, Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83.',
+'lag-warn-normal' => 'Зміни, зроблені менш ніж $1 {{PLURAL:$1|секунду|секунди|секунд}} тому, можуть не відображатися в цьому переліку.',
+'lag-warn-high' => 'Ð\97мÑ\96ни, Ð·Ñ\80обленÑ\96 Ð¼ÐµÐ½Ñ\88 Ð½Ñ\96ж $1 {{PLURAL:$1|Ñ\81екÑ\83ндÑ\83\81екÑ\83нди|Ñ\81екÑ\83нд}} Ñ\82омÑ\83, Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð½Ðµ Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ð¿ÐµÑ\80елÑ\96кÑ\83 Ð²Ð½Ð°Ñ\81лÑ\96док Ð·Ð½Ð°Ñ\87ноÑ\97 Ð·Ð°Ñ\82Ñ\80имки Ñ\81еÑ\80веÑ\80а Ð\91Ð\94.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Ваш список спостереження містить {{PLURAL:$1|$1 запис|$1 записи|$1 записів}}, не включаючи сторінок обговорення.',
@@ -3912,6 +4027,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-software' => 'Установлене програмне забезпечення',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версія',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Шлях до файлу',
@@ -4064,7 +4180,7 @@ MediaWiki поширюється в надії, що вона буде кори
 
 # API errors
 'api-error-badaccess-groups' => 'Вам не дозволено завантажувати файли до цього вікіпроекту.',
-'api-error-badtoken' => 'Ð\92нÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ð³Ð°Ð½Ð¸Ð¹ Ð·Ð½Ð°Ðº.',
+'api-error-badtoken' => 'Ð\92нÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\8f Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐºÐ¾Ñ\80екÑ\82ний Ñ\82окен.',
 'api-error-copyuploaddisabled' => 'На цьому сервері вимкнене завантаження за URL-адресою.',
 'api-error-duplicate' => 'Вже {{PLURAL:$1|існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
 'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|був|були}} вилучені.',
@@ -4077,7 +4193,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-filename-tooshort' => 'Назва файлу занадто коротка.',
 'api-error-filetype-banned' => 'Цей тип файлів заборонений.',
 'api-error-filetype-missing' => 'У цього файла відсутнє розширення.',
-'api-error-hookaborted' => 'Зміни, які ви намагалися зробити перервав обробник розширення.',
+'api-error-hookaborted' => 'Зміну, що Ви намагалися зробити, відкинуто обробником.',
 'api-error-http' => 'Внутрішня помилка: Не вдається підключитися до сервера.',
 'api-error-illegal-filename' => "Неприпустиме ім'я файлу.",
 'api-error-internal-error' => 'Внутрішня помилка: Щось пішло не так під час обробки вашого завантаження на вікі.',
@@ -4111,4 +4227,6 @@ MediaWiki поширюється в надії, що вона буде кори
 'duration-centuries' => '$1 {{PLURAL:$1|століття|століття|століть}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Не вдалося одержати блокування на сервері $1.',
 );
index c49a716..21ff98b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Uzbek (Oʻzbek)
+/** Uzbek (Oʻzbekcha)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -50,6 +50,10 @@ $namespaceAliases = array(
 $linkTrail = '/^([a-zʻʼ“»]+)(.*)$/sDu';
 
 $messages = array(
+# User preference toggles
+'tog-oldsig' => 'Mavjud imzo:',
+'tog-fancysig' => 'Imzoni wikimatn sifatida qara (avtomatik ishoratsiz)',
+
 'underline-always' => 'Har doim',
 'underline-never' => 'Hech qachon',
 
@@ -419,7 +423,11 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 
 # Recent changes
 'recentchanges' => 'Yangi o‘zgartirishlar',
-'recentchangestext' => 'Ushbu sahifada siz eng so‘nggi o‘zgartirishlarni ko‘rishingiz mumkin.',
+'recentchanges-summary' => "Bu sahifada siz oxirgi o'zgartirishlarni ko'rishingiz mumkin.",
+'recentchanges-label-newpage' => 'Bu tahrir yangi sahifani yaratdi',
+'recentchanges-label-minor' => 'Bu kichik tahrir',
+'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
+'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmadi',
 'rcnote' => "Quyida $5, $4ga koʻra oxirgi {{PLURAL:$2|kun|'''$2''' kun}} davomida sodir boʻlgan {{PLURAL:$1|'''1''' oʻzgartirish|'''$1''' oʻzgartirishlar}} koʻrsatilgan.",
 'rclistfrom' => "$1dan boshlab yangi o'zgartirishlarni ko'rsat.",
 'rcshowhideminor' => 'Kichik tahrirlarni $1',
index e854364..73c51f3 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -537,6 +537,8 @@ $2',
 'filereadonlyerror' => 'No xe stà posibiłe modifegare el file "$1" parché el repository de file "$2" xe in modałità de soła letura.
 
 L\'aministradore che ło ga blocà ga fornìo sta spiegasion: "$3".',
+'invalidtitle-knownnamespace' => 'Titoło no vałido co namespace "$2" e testo "$3"',
+'invalidtitle-unknownnamespace' => 'Titoło no vałido co namespace sconosùo "$1" e testo "$2"',
 
 # Virus scanner
 'virus-badscanner' => 'Erore de configurasion: antivirus sconossuo: "$1"',
@@ -909,6 +911,11 @@ Sti argomenti i xe stà omessi.",
 'parser-template-recursion-depth-warning' => 'Xe stà rajunto el limite màssimo de ricorsion in tel modèl ($1)',
 'language-converter-depth-warning' => 'Limite de profondità del convertidor de lengua superà ($1)',
 'node-count-exceeded-category' => 'Pajine ndove che el node-count supera el limite',
+'node-count-exceeded-warning' => 'Sta pajina ga superà el numaro limite de nodi',
+'expansion-depth-exceeded-category' => 'Pajine ndove che vien superà ła profondità de espansion',
+'expansion-depth-exceeded-warning' => 'Sta pajina ga superà el limite de profondità de espansion',
+'parser-unstrip-loop-warning' => 'Xe sta riłevà un ciclo de Unstrip',
+'parser-unstrip-recursion-limit' => 'Superadi i limiti de recursion de Unstrip ($1)',
 
 # "Undo" feature
 'undo-success' => 'Sta modifica la pode èssar anulà. Verifica el confronto presentà de seguito par èssar sicuro che el contenuto el sia come te lo voli e quindi salva le modifiche par conpletar la procedura de anulamento.',
@@ -1080,7 +1087,9 @@ Assicùrete che la continuità storica de la pagina no la vegna alterà.',
 'mergelogpagetext' => "Qua de seguito vien presentà na lista de le ultime operazion de unione de la cronologia de na pagina in un'altra.",
 
 # Diffs
-'history-title' => "Storia dei canbiamenti de ''$1''",
+'history-title' => '$1: cronołojia dełe modifeghe',
+'difference-title' => '$1: difarense fra łe version',
+'difference-title-multipage' => '$1 e $2: difarense fra łe pajine',
 'difference-multipage' => '(Difarensa tra le pagine)',
 'lineno' => 'Riga $1:',
 'compareselectedversions' => 'Confronta le version segnàe',
@@ -1161,6 +1170,7 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'qbsettings-fixedright' => 'Fisso a destra',
 'qbsettings-floatingleft' => 'Fluttuante a sinistra',
 'qbsettings-floatingright' => 'Fluttuante a destra',
+'qbsettings-directionality' => 'Fiso, a seconda de ła diresion del testo nte ła to lengua',
 
 # Preferences page
 'preferences' => 'Prefarense',
@@ -1179,12 +1189,14 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'prefs-rc' => 'Ultime modifeghe',
 'prefs-watchlist' => 'Tegnùi de òcio',
 'prefs-watchlist-days' => 'Nùmaro de giòrni da far védar nei osservati speciali:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Masimo $1 dì',
 'prefs-watchlist-edits' => 'Nùmaro de modifiche da far védar con le funzion avanzade:',
 'prefs-watchlist-edits-max' => 'Numaro massimo: 1000',
 'prefs-watchlist-token' => "Segnal par le pagine tegnùe d'ocio:",
 'prefs-misc' => 'Preferense varie',
 'prefs-resetpass' => 'Cànbia password',
+'prefs-changeemail' => 'Canbia indiriso de posta ełetronega',
+'prefs-setemail' => 'Inposta un indiriso de posta ełetronega',
 'prefs-email' => 'Preferense e-mail',
 'prefs-rendering' => 'Aspeto grafico',
 'saveprefs' => 'Salva le preferense',
@@ -1206,7 +1218,7 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'savedprefs' => 'Le to preferense łe xè stà salvae.',
 'timezonelegend' => 'Fuso orario:',
 'localtime' => 'Ora locale:',
-'timezoneuseserverdefault' => "Dòpara l'ora del server",
+'timezoneuseserverdefault' => 'Dopara el orario predefinìo de wiki ($1)',
 'timezoneuseoffset' => 'Altro (spesifica difarensa)',
 'timezoneoffset' => 'Difarensa¹:',
 'servertime' => 'Ora del server:',
@@ -1241,7 +1253,8 @@ Sta operassion no la pol èssar anulà.',
 'prefs-registration' => 'Data de registrassion:',
 'yourrealname' => 'El to vero nome:',
 'yourlanguage' => 'Lengua:',
-'yourvariant' => 'Variante de linguaggio:',
+'yourvariant' => 'Variante de ła lengua:',
+'prefs-help-variant' => 'La variante o grafia in cui te preferisi che te vegna mostrade łe pajine de wiki.',
 'yournick' => 'Firma:',
 'prefs-help-signature' => 'Co se scrive in te le pagine de discussion, a se gà senpre da firmar scrivendo "<nowiki>~~~~</nowiki>", che vegnarà convertìo in te la propria firma seguìa da data e ora.',
 'badsig' => 'Erór ne ła firma non standard, verifica i tag HTML.',
@@ -1282,7 +1295,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'userrights-lookup-user' => 'Gestion de i gruppi utente',
 'userrights-user-editname' => 'Inserir el nome utente:',
 'editusergroup' => 'Modifica grupi utente',
-'editinguser' => "Modifica dei diriti assegnà a l'utente '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Modifega dei diriti utente de'l utente '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Modifica grupi utente',
 'saveusergroups' => 'Salva grupi utente',
 'userrights-groupsmember' => 'Apartien ai grupi:',
@@ -1382,11 +1395,13 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'right-siteadmin' => 'Bloca e desbloca el database',
 'right-override-export-depth' => 'Esporta le pàxene, includendo le pàxene ligàe fin a na profondità de 5',
 'right-sendemail' => 'Mandarghe e-mail a cheialtri utenti',
+'right-passwordreset' => 'Vedi i mesaji de rinpostasion de ła password',
 
 # User rights log
 'rightslog' => 'Diriti de i utenti',
 'rightslogtext' => 'Sto qua el xe el registro de le modifiche ai diriti assegnà ai utenti.',
 'rightslogentry' => "gà modificà l'apartenenza de $1 dal grupo $2 al grupo $3",
+'rightslogentry-autopromote' => 'xe stà automategamente promoso/a da $2 a $3',
 'rightsnone' => '(nissun)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1414,6 +1429,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'action-suppressionlog' => 'vardar sto registro privato',
 'action-block' => 'blocar sto utente in scritura',
 'action-protect' => 'canbiar i livèi de protession par sta pàxena',
+'action-rollback' => "Anuła in presa łe modifeghe fate da l'ultimo utente intervegnù so' na determinada pajina.",
 'action-import' => "inportar sta pàxena da n'antra wiki",
 'action-importupload' => 'inportar sta pàxena tramite caricamento da file',
 'action-patrol' => 'segnar le modìfeghe dei altri utenti come verificàe',
@@ -1455,9 +1471,11 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'number_of_watching_users_pageview' => '[osservà da {{PLURAL:$1|un utente|$1 utenti}}]',
 'rc_categories' => 'Limita a le categorie (separà da "|")',
 'rc_categories_any' => 'Qualsiasi',
+'rc-change-size-new' => '$1 byte dopo ła modifega',
 'newsectionsummary' => '/* $1 */ sezion nova',
 'rc-enhanced-expand' => 'Mostra detaji (richiede JavaScript)',
 'rc-enhanced-hide' => 'Scondi detaji',
+'rc-old-title' => 'creà in orijine come "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Canbiamenti ligà a sta pagina',
@@ -1509,12 +1527,13 @@ Varda la [[Special:NewFiles|galerìa dei file nóvi]] par na vision de insieme.'
 'ignorewarnings' => 'Ignora i messagi de avertimento del sistema',
 'minlength1' => 'El nome del file el ga da contegner almanco un caràtere.',
 'illegalfilename' => 'El nome file "$1" el contien caràteri che no xè permessi nei titoli de le pagine. Par piaser, rinomina el file e próa a ricaricarlo.',
+'filename-toolong' => 'I nomi dei file no połe superare i 240 byte.',
 'badfilename' => 'El nome de el file el xè stà convertio in "$1".',
-'filetype-mime-mismatch' => "L'estension del file no a corisponde con el tipo MIME.",
+'filetype-mime-mismatch' => 'L\'estension del file ".$1" no corisponde al tipo MIME del file ($2).',
 'filetype-badmime' => 'No xe consentìo de cargar file de tipo MIME "$1".',
 'filetype-bad-ie-mime' => 'No se pode cargar sto file, parché da Internet Explorer el vegnarìa rilevà come "$1", che xe un tipo de file disativà e potensialmente pericoloso.',
 'filetype-unwanted-type' => "Cargar file de tipo '''\".\$1\"''' xe sconsiglià. {{PLURAL:\$3|El tipo de file consiglià el|I tipi de file consiglià i}} xe \$2.",
-'filetype-banned-type' => "Cargar file de tipo '''\".\$1\"''' no xe mìa consentìo. {{PLURAL:\$3|El tipo de file consentìo el|I tipi de file consentìi i}} xe \$2.",
+'filetype-banned-type' => "'''\".\$1\"''' {{PLURAL:\$4|no'l xe un tipo de file consentìo|no łi xe tipi de file consentidi}}. {{PLURAL:\$3|El tipo de file consentìo xe|I tipi de file consentidi xe}} \$2.",
 'filetype-missing' => 'El file no\'l gà nissuna estension (ad es. ".jpg").',
 'empty-file' => 'El file che te ghè cargà el xe vodo.',
 'file-too-large' => 'El file che te ghè cargà el xe massa grando.',
@@ -1530,6 +1549,7 @@ Varda la [[Special:NewFiles|galerìa dei file nóvi]] par na vision de insieme.'
 'large-file' => 'Se racomanda de no superar mìa le dimension de $1 par ciascun file; sto file el xe grando $2.',
 'largefileserver' => 'El file el supera le dimension consentìe da la configurazion del server.',
 'emptyfile' => 'El file che te ghè caricà el xè aparentemente vodo. Podarìa èssar par un eror nel nome del file. Par piaser controla se te vol dal bon caricar sto file.',
+'windows-nonascii-filename' => 'Sta wiki no suporta nomi de file co carateri speciałi.',
 'fileexists' => "Un file co sto nome el esiste de xà, par piaser controła '''<tt>[[:$1]]</tt>''' se no te sì sicuro de volerlo sovrascrìvar.
 [[$1|thumb]]",
 'filepageexists' => "La pagina de descrizion de sto file la xe zà stà creà a '''<tt>[[:$1]]</tt>''', anca se no ghe xe gnancora un file co sto nome.
@@ -1563,6 +1583,8 @@ Se te vol cargar el file istesso, par piaser torna indrio e canbia el nome che t
 'php-uploaddisabledtext' => 'El caricamento de file tramite PHP el xe disabilità. Contròla la configurassion de file_uploads.',
 'uploadscripted' => 'Sto file contegne codexe HTML o de script, che podaria essere interpretà eroneamente da un browser web.',
 'uploadvirus' => 'Sto file contegne un virus! Detagli: $1',
+'uploadjava' => 'Sto file xe un file ZIP che contien un file Java ".class".
+Cargar file Java no xe consentìo, parché łi podarìa cauxare on ajiramento de łe restrision de sicuresa.',
 'upload-source' => 'File de origine',
 'sourcefilename' => 'Nome del file de origine:',
 'sourceurl' => 'URL de origine:',
@@ -1594,6 +1616,31 @@ Se el problema el persiste, contatar un [[Special:ListUsers/sysop|aministrador]]
 'upload-too-many-redirects' => "In te l'URL ghe jera massa rimandi",
 'upload-unknown-size' => 'Dimension sconossiùa',
 'upload-http-error' => 'Se gà verificà un eròr HTTP: $1',
+'upload-copy-upload-invalid-domain' => 'No xe consentìo cargare copie da sto dominio.',
+
+# File backend
+'backend-fail-stream' => 'Inposibiłe traxmetare el file $1.',
+'backend-fail-backup' => 'Inposibiłe fare el backup del file $1.',
+'backend-fail-notexists' => 'El file $1 no existe.',
+'backend-fail-hashes' => "Inposibiłe otegnere el hash dei file pa'l confronto.",
+'backend-fail-notsame' => 'Existe xà un file no identico a  $1 .',
+'backend-fail-invalidpath' => '$1 no xe un percorso de archiviasion vałido.',
+'backend-fail-delete' => 'Inposibiłe scançełare el file "$1".',
+'backend-fail-alreadyexists' => 'El file $1 existe xà.',
+'backend-fail-store' => 'Inposibiłe memorixare el file  $1  in  $2 .',
+'backend-fail-copy' => 'Inposibiłe copiare el file "$1" in "$2".',
+'backend-fail-move' => 'Inposibiłe spostare el file  $1  in  $2 .',
+'backend-fail-opentemp' => 'Inposibiłe verxare el file tenporaneo',
+'backend-fail-writetemp' => 'Inposibiłe creare el file tenporaneo.',
+'backend-fail-closetemp' => 'Inposibiłe sarare el file tenporaneo',
+'backend-fail-read' => 'Inposibiłe lexare el file $1.',
+'backend-fail-create' => 'Inposibiłe creare el file "$1".',
+'backend-fail-maxsize' => 'Inposibiłe creare el file $1 parché el xe pi grando de {{PLURAL:$2|un|$2}} byte.',
+'backend-fail-readonly' => 'El backend "$1" xe atualmente in soła letura. La raxon indicà xe: "$2"',
+'backend-fail-synced' => 'El file "$1" xe incoerente rento i backend de ła memoria interna.',
+'backend-fail-connect' => 'Inposibiłe conétarse al backend de memoria "$1".',
+'backend-fail-internal' => 'Se ga verifegà on erore sconosùo nte\'l backend de memoria "$1".',
+'backend-fail-usable' => 'Inposibiłe modifegare el file $1 a cauxa de autorixasion insuficenti o directory mancanti.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Acesso negà',
@@ -3300,28 +3347,28 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
 'sqlite-no-fts' => '$1 sensa la possibilità de riserca completa nel testo',
 
 # New logging system
-'logentry-delete-delete' => '$1 ga scanselà la pajina $3',
+'logentry-delete-delete' => '$1 ga scansełà ła pajina $3',
 'logentry-delete-restore' => '$1 ga ripristinà "$3"',
-'logentry-delete-event' => '$1 ga canbià la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
-'logentry-delete-revision' => '$1 ga canbià la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de la pajina"$3": $4',
-'logentry-delete-event-legacy' => '$1 ga canbià la vixibilità de calche asion del registro de "$3"',
-'logentry-delete-revision-legacy' => '$1 ga canbià la vixibilità par le revixion de la pajina $3',
+'logentry-delete-event' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
+'logentry-delete-revision' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|na revixion|$5 revixion}} de ła pajina"$3": $4',
+'logentry-delete-event-legacy' => '$1 ga canbià ła vixibiłità de calche asion del registro de "$3"',
+'logentry-delete-revision-legacy' => '$1 ga canbià ła vixibiłità par łe revixion de ła pajina $3',
 'logentry-suppress-delete' => '$1 ga sconto la pajina "$3"',
 'logentry-suppress-event' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
 'logentry-suppress-revision' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de "$3": $4',
 'logentry-suppress-event-legacy' => '$1 ga canbià de scondón la vixibilità de calche asion del registro de "$3"',
 'logentry-suppress-revision-legacy' => '$1 ga canbià de scondón la vixibilità de calche revixion de $3',
 'revdelete-content-hid' => 'contegnùo sconto',
-'revdelete-summary-hid' => 'ogeto de la modifega sconto',
+'revdelete-summary-hid' => 'ogeto de ła modifega sconto',
 'revdelete-uname-hid' => 'nome utente sconto',
 'revdelete-content-unhid' => 'contegnùo ripristinà',
 'revdelete-summary-unhid' => 'ogeto ripristinà',
 'revdelete-uname-unhid' => 'nome utente ripristinà',
 'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
 'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
-'logentry-move-move' => '$1 ga spostà la pajina $3 a $4',
-'logentry-move-move-noredirect' => '$1 ga spostà la pajina $3 a $4 sensa metare un rimando',
-'logentry-move-move_redir' => '$1 ga spostà la pajina $3 a $4 metendo un rimando',
+'logentry-move-move' => '$1 ga spostà ła pajina $3 a $4',
+'logentry-move-move-noredirect' => '$1 ga spostà ła pajina $3 a $4 sensa metare un rimando',
+'logentry-move-move_redir' => '$1 ga spostà ła pajina $3 a $4 lasiando un rimando',
 'logentry-move-move_redir-noredirect' => '$1 ga spostà la pajina $3 a $4 al posto de un rimando sensa metare un rimando',
 'logentry-patrol-patrol' => '$1 ga segnà la revixion $4 de la pajina $3 come verifegà',
 'logentry-patrol-patrol-auto' => '$1 ga segnà automategamente la revixion $4 de la pajina $3 come verifegà',
index 3958b47..0ae2302 100644 (file)
@@ -2397,7 +2397,7 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 
 # Patrolling
 'markaspatrolleddiff' => 'Znamoita kut patruliruidud',
-'markaspatrolledtext' => "Zmamoita nece lehtpol' kut patruliruidud",
+'markaspatrolledtext' => "Znamoita nece lehtpol' kut patruliruidud",
 'markedaspatrolled' => 'Om znamoitud kut patruliruidud',
 'markedaspatrolledtext' => 'Valitud [[:$1]]-n versii om znamoitud kut patruliruidud.',
 'rcpatroldisabled' => "Jäl'gmäižiden toižetusiden patruliruind ei ole kävutamas",
index 67f8ad8..82292c3 100644 (file)
@@ -15,6 +15,7 @@
  * @author Mxn
  * @author Neoneurone
  * @author Nguyễn Thanh Quang
+ * @author Prenn
  * @author Thaisk
  * @author Thanhtai2009
  * @author Tmct
@@ -300,7 +301,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ẩn sửa đổi đã tuần tra trong trang thay đổi gần đây',
 'tog-newpageshidepatrolled' => 'Ẩn trang đã tuần tra trong danh sách các trang mới',
 'tog-extendwatchlist' => 'Mở rộng danh sách theo dõi để hiển thị tất cả các thay đổi, chứ không chỉ các thay đổi gần đây',
-'tog-usenewrc' => 'Sử dụng Thay đổi gần đây nâng cao (cần JavaScript)',
+'tog-usenewrc' => 'Thu gọn các thay đổi theo trang trong thay đổi gần đây và danh sách theo dõi (cần JavaScript)',
 'tog-numberheadings' => 'Tự động đánh số các đề mục',
 'tog-showtoolbar' => 'Hiển thị thanh định dạng (JavaScript)',
 'tog-editondblclick' => 'Nhấn đúp để sửa đổi trang (JavaScript)',
@@ -456,7 +457,7 @@ $messages = array(
 'vector-view-create' => 'Tạo',
 'vector-view-edit' => 'Sửa',
 'vector-view-history' => 'Xem lịch sử',
-'vector-view-view' => 'Xem',
+'vector-view-view' => 'Đọc',
 'vector-view-viewsource' => 'Xem mã nguồn',
 'actions' => 'Tác vụ',
 'namespaces' => 'Không gian tên',
@@ -682,6 +683,8 @@ Lý do được cung cấp là ''$2''.",
 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.',
 
 # Virus scanner
 'virus-badscanner' => "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
@@ -781,7 +784,7 @@ Xin hãy đợi chốc lát rồi thử lại.',
 
 # Change password dialog
 'resetpass' => 'Đổi mật khẩu',
-'resetpass_announce' => 'Bạn Ä\91ã Ä\91Ä\83ng nhập bằng mật khẩu tạm gá»\9fi qua e-mail. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
+'resetpass_announce' => 'Bạn Ä\91ã Ä\91Ä\83ng nhập bằng mật khẩu tạm gá»­i qua thÆ° Ä\91iá»\87n tá»­. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
 'resetpass_text' => '<!-- Nhập văn bản vào đây -->',
 'resetpass_header' => 'Đổi mật khẩu cho tài khoản',
 'oldpassword' => 'Mật khẩu cũ:',
@@ -1339,6 +1342,7 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
 'prefs-beta' => 'Tính năng beta',
 'prefs-datetime' => 'Ngày tháng',
 'prefs-labs' => 'Tính năng phòng thí nghiệm',
+'prefs-user-pages' => 'Trang cá nhân',
 'prefs-personal' => 'Thông tin cá nhân',
 'prefs-rc' => 'Thay đổi gần đây',
 'prefs-watchlist' => 'Theo dõi',
@@ -1427,7 +1431,7 @@ Thông tin này là công khai.',
 Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
 'prefs-help-email' => 'Địa chỉ thư điện tử là tùy chọn, nhưng nó giúp chúng tôi gửi cho bạn mật khẩu mới qua thư điện tử nếu bạn quên mật khẩu của mình.',
 'prefs-help-email-others' => 'Bạn cũng có thể lựa chọn cho phép người khác liên lạc với bạn thông qua trang cá nhân hoặc trang thảo luận cá nhân mà không cần để lộ danh tính.',
-'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ e-mail.',
+'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ thư điện tử.',
 'prefs-info' => 'Thông tin cơ bản',
 'prefs-i18n' => 'Quốc tế hóa',
 'prefs-signature' => 'Chữ ký',
@@ -1526,7 +1530,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'right-suppressrevision' => 'Xem lại và phục hồi phiên bản mà Sysop không thấy',
 'right-suppressionlog' => 'Xem nhật trình riêng tư',
 'right-block' => 'Cấm thành viên khác sửa đổi',
-'right-blockemail' => 'Cấm thành viên gửi thư',
+'right-blockemail' => 'Cấm người dùng gửi thư điện tử',
 'right-hideuser' => 'Cấm thành viên, rồi ẩn nó đi',
 'right-ipblock-exempt' => 'Bỏ qua cấm IP, tự động cấm và cấm dải IP',
 'right-proxyunbannable' => 'Bỏ qua cấm proxy tự động',
@@ -2135,6 +2139,7 @@ Xin lưu ý là các trang Web bên ngoài có thể liên kết đến một t
 Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình, tên thành viên (phân biệt chữ hoa-chữ thường), hoặc các trang bị ảnh hưởng (cũng phân biệt chữ hoa-chữ thường).',
 'logempty' => 'Không có mục nào khớp với từ khóa.',
 'log-title-wildcard' => 'Tìm các tựa trang bắt đầu bằng các chữ này',
+'showhideselectedlogentries' => 'Hiện/ẩn các mục nhật trình đã chọn',
 
 # Special:AllPages
 'allpages' => 'Mọi trang',
@@ -2584,7 +2589,7 @@ $1',
 ** Con rối của thành viên bị cấm',
 'ipb-hardblock' => 'Ngăn không cho thành viên đã đăng nhập sửa đổi từ địa chỉ IP này',
 'ipbcreateaccount' => 'Cấm mở tài khoản',
-'ipbemailban' => 'Không cho gửi email',
+'ipbemailban' => 'Không cho gửi thư điện tử',
 'ipbenableautoblock' => 'Tự động cấm các địa chỉ IP mà thành viên này sử dụng',
 'ipbsubmit' => 'Cấm',
 'ipbother' => 'Thời hạn khác:',
@@ -3038,7 +3043,8 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'spamprotectionmatch' => 'Nội dung sau đây đã kích hoạt bộ lọc thư rác: $1',
 'spambot_username' => 'Bộ dọn dẹp thư rác MediaWiki',
 'spam_reverting' => 'Lùi lại đến phiên bản cuối không chứa liên kết đến $1',
-'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1, đang tẩy trống',
+'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1; tẩy trống',
+'spam_deleting' => 'Tất cả các phiên bản có liên kết đến $1; xóa',
 
 # Info page
 'pageinfo-title' => 'Thông tin về “$1”',
@@ -3279,7 +3285,7 @@ Những thông tin khác mặc định sẽ được ẩn đi.
 'exif-scenetype' => 'Loại cảnh',
 'exif-customrendered' => 'Sửa hình thủ công',
 'exif-exposuremode' => 'Chế độ phơi sáng',
-'exif-whitebalance' => 'Độ sáng trắng',
+'exif-whitebalance' => 'Cân bằng trắng',
 'exif-digitalzoomratio' => 'Tỷ lệ phóng lớn kỹ thuật số',
 'exif-focallengthin35mmfilm' => 'Tiêu cự trong phim 35 mm',
 'exif-scenecapturetype' => 'Kiểu chụp cảnh',
@@ -4052,4 +4058,6 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'duration-centuries' => '$1 thế kỷ',
 'duration-millennia' => '$1 thiên niên kỷ',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => 'Không thể lấy các chìa khóa trên máy chủ $1.',
 );
index 76df447..d382711 100644 (file)
@@ -1190,7 +1190,7 @@ Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sä
 'nchanges' => '{{PLURAL:$1|votükam|votükams}} $1',
 'recentchanges' => 'Votükams nulik',
 'recentchanges-legend' => 'Votükams nulik: paramets',
-'recentchangestext' => 'Su pad at binons votükams nulikün in vüki at.',
+'recentchanges-summary' => 'Su pad at binons votükams nulikün in vüki at.',
 'recentchanges-feed-description' => 'Getön votükamis nulikün in vük at me nünakanad at.',
 'recentchanges-label-newpage' => 'Redakam at päjafon pad nulik',
 'recentchanges-label-minor' => 'Atos binon redakam pülik',
index 369b8f8..1e4980e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Walloon (Walon)
+/** Walloon (walon)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -55,6 +55,19 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Categoreye_copene',
 );
 
+$specialPageAliases = array(
+       'Allpages'                  => array( 'Totes_les_pådjes' ),
+       'Block'                     => array( 'Bloker', 'Blocaedje' ),
+       'Categories'                => array( 'Categoreyes' ),
+       'Preferences'               => array( 'Preferinces' ),
+       'Prefixindex'               => array( 'Indecse_pa_betchete' ),
+       'Search'                    => array( 'Cweri' ),
+       'Specialpages'              => array( 'Pådjes_sipeciåles' ),
+       'Statistics'                => array( 'Sitatistikes' ),
+       'Version'                   => array( 'Modêye' ),
+       'Watchlist'                 => array( 'Pådjes_shuvowes' ),
+);
+
 # definixha del cogne po les limeros
 # (number format definition)
 # en: 12,345.67 -> wa: 12 345,67
@@ -63,26 +76,22 @@ $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 # $linkTrail = '/^([a-zåâêîôûçéèA-ZÅÂÊÎÔÛÇÉÈ]+)(.*)$/sDu';
 $linkTrail = '/^([a-zåâêîôûçéè]+)(.*)$/sDu';
 
-#
-# NOTE:
-# sysop = manaedjeu
-# bureaucrat = mwaisse-manaedjeu
-#
-
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Sorlignî les loyéns',
+'tog-underline' => 'Sorlignî les loyéns:',
 'tog-justify' => 'Djustifyî les hagnons',
-'tog-hideminor' => 'Èn nén mostrer les <i>dierins candjmints</i> mineurs',
-'tog-extendwatchlist' => "Ragrandi l' djivêye po mostrer tos les candjmints",
-'tog-usenewrc' => 'Ramidrés <i>dierins candjmints</i> (JavaScript)',
+'tog-hideminor' => 'Èn nén mostrer les dierins candjmints mineurs',
+'tog-hidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
+'tog-newpageshidepatrolled' => 'Èn nén mostrer el djivêye des novelès pådjes les cenes dedja patrouyeyes',
+'tog-extendwatchlist' => "Ragrandi l' djivêye po mostrer tos les candjmints, nén seulmint les dierins",
+'tog-usenewrc' => "Relére par pådje dins les dierins candjmints et l' djivêye des shuvous (i fåt JavaScript)",
 'tog-numberheadings' => 'Limerotaedje otomatike des tites',
 'tog-showtoolbar' => "Mostrer l' bår d' usteyes e môde candjmint (JavaScript)",
 'tog-editondblclick' => 'Candjî les pådjes avou on dobe-clitch (JavaScript)',
 'tog-editsection' => "Eployî les loyéns «[candjî]» po candjî rén k' ene seccion",
 'tog-editsectiononrightclick' => 'Candjî les seccions avou on dobe-clitch sol tite (JavaScript)',
 'tog-showtoc' => "Mostrer l' tåvlea d' ådvins<br />(po ls årtikes avou pus di 3 seccions)",
-'tog-rememberpassword' => 'Rimimbrer li scret inte les sessions (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
 'tog-watchcreations' => "Mete les pådjes ki dj' askepeye dins l' djivêye des pådjes shuvowes",
 'tog-watchdefault' => "Shuve les årtikes ki dj' fwai ou ki dj' candje",
 'tog-watchmoves' => "Radjouter a m' djivêye des shuvous les pådjes ki dji displaece",
@@ -96,16 +105,20 @@ $messages = array(
 'tog-enotifminoredits' => "M' emiler eto po les ptits candjmints",
 'tog-enotifrevealaddr' => 'Mostrer mi adresse emile dins les emiles di notifiaedje',
 'tog-shownumberswatching' => "Mostrer l' nombe d' uzeus ki shuvèt l' pådje",
-'tog-fancysig' => 'Sinateure brute (sins loyén otomatike)',
-'tog-externaleditor' => "Eployî on dfoûtrin aspougneu d' tecse come prémetowe dujhance",
-'tog-externaldiff' => 'Eployî on dfoûtrin programe di diferinces come prémetowe dujhance',
+'tog-oldsig' => 'Siné pol moumint:',
+'tog-fancysig' => 'Sinateure avou do tecse wiki (sins loyén otomatike)',
+'tog-externaleditor' => "Eployî on dfoûtrin aspougneu d' tecse come prémetowe dujhance (po les spepieus uzeus seulmint, ca i vs fåt fé des apontiaedjes sol sopiutrece da vosse, [//www.mediawiki.org/wiki/Manual:External_editors loukîz chal po pus di racsegnes]).",
+'tog-externaldiff' => 'Eployî on dfoûtrin programe di diferinces come prémetowe dujhance (po les spepieus uzeus seulmint, ca i vs fåt fé des apontiaedjes sol sopiutrece da vosse, [//www.mediawiki.org/wiki/Manual:External_editors loukîz chal po pus di racsegnes]).',
 'tog-showjumplinks' => 'Mete en alaedje les loyéns di naiviaedje «potchî a» å dzeu del pådje (pol pea «Myskin» et ds ôtes)',
 'tog-uselivepreview' => "Eployî l' prévoeyaedje abeye (JavaScript) (Esperimintå)",
 'tog-forceeditsummary' => "M' advierti cwand dji lai vude on rascourti",
 'tog-watchlisthideown' => 'Èn nén mostrer les candjmints da minne',
 'tog-watchlisthidebots' => 'Èn nén mostrer les candjmints des robots',
-'tog-watchlisthideminor' => "Catchî les candjmints mineurs dins l' djivêye des shuvous",
-'tog-ccmeonemails' => "m' evoyî ene copeye des emiles ki dj' evoye ås ôtes",
+'tog-watchlisthideminor' => 'Èn nén mostrer les candjmints mineurs',
+'tog-watchlisthideliu' => 'Èn nén mostrer les candjmints fwait pa des uzeus edjîstrés',
+'tog-watchlisthideanons' => 'Èn nén mostrer les candjmints fwait pa des uzeus anonimes',
+'tog-watchlisthidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
+'tog-ccmeonemails' => "M' evoyî ene copeye des emiles ki dj' evoye ås ôtes",
 'tog-diffonly' => "Èn nén håyner l' contnou del pådje pa dzo l' pådje des diferinces",
 'tog-showhiddencats' => 'Mostrer les categoreyes mucheyes',
 
@@ -113,6 +126,10 @@ $messages = array(
 'underline-never' => 'Måy',
 'underline-default' => 'Valixhance do betchteu',
 
+# Font style option in Special:Preferences
+'editfont-style' => 'Stîle del fonte pol boesse di tecse',
+'editfont-default' => 'Valixhance do betchteu',
+
 # Dates
 'sunday' => 'dimegne',
 'monday' => 'londi',
@@ -171,12 +188,15 @@ $messages = array(
 'subcategories' => 'Dizo-categoreyes',
 'category-media-header' => 'Media el categoreye «$1»',
 'category-empty' => "''Cisse categoreye ci n' a pol moumint nol årtike ni media.''",
+'hidden-categories' => '{{PLURAL:$1|Categoreye catcheye|Categoreyes catcheyes}}',
+'hidden-category-category' => 'Categoreyes catcheyes',
 'category-subcat-count' => 'Dins cisse categoreye, gn a {{PLURAL:$2|li dzo-categoreye|$2 dizo-categoreyes, inte di zeles {{PLURAL:$1|li cene|les $1}}}} cial pa-dzo.',
 'category-subcat-count-limited' => "Dins cisse categoreye, gn a {{PLURAL:$1|l' dizo-categoreye|les dzo-categoreyes}} shuvantes.",
-'category-article-count' => 'Dins cisse categoreye cial, gn a {{PLURAL:$2|li pådje ki shût|$2 pådje, inte di zeles {{PLURAL:$1|li cene|les $1}} cial padzo}}.',
+'category-article-count' => 'Dins cisse categoreye cial, gn a {{PLURAL:$2|li pådje ki shût|$2 pådjes, inte di zeles {{PLURAL:$1|li cene|les $1}} cial padzo}}.',
 'category-article-count-limited' => "{{PLURAL:$1|Gn a l' pådje ki shût|Les $1 pådjes ki shuvnut si trovèt ddja}} dins cisse categoreye ci.",
 'category-file-count' => "{{PLURAL:$2|Dins cisse categoreye ci, gn a k' ene pådje.|{{PLURAL:$1|Gn a cisse pådje ci|Gn a les $1 pådjes ki shuvèt}} dins cisse categoreye ci, po $2 pådjes å totå.}}",
 'category-file-count-limited' => "{{PLURAL:$1|Gn a k' cisse pådje cial|Gn a les $1 pådjes ciddé padzo}} dins cisse categoreye ci.",
+'listingcontinuesabbrev' => '(shûte)',
 
 'about' => 'Åd fwait',
 'article' => 'Årtike',
@@ -198,6 +218,23 @@ $messages = array(
 'qbmyoptions' => 'Mes pådjes',
 'qbspecialpages' => 'Pådjes sipeciåles',
 
+# Vector skin
+'vector-action-addsection' => 'Radjouter on sudjet',
+'vector-action-delete' => 'Disfacer',
+'vector-action-move' => 'Displaecî',
+'vector-action-protect' => 'Protedjî',
+'vector-action-undelete' => 'Rapexhî',
+'vector-action-unprotect' => "Candjî l' protedjaedje",
+'vector-simplesearch-preference' => 'Permete les amidreyès sudjestions di cweraedje (pea «Vector» seulmint)',
+'vector-view-create' => 'Ahiver',
+'vector-view-edit' => 'Candjî',
+'vector-view-history' => "Vey l' istwere",
+'vector-view-view' => 'Lére',
+'vector-view-viewsource' => 'Vey côde sourdant',
+'actions' => 'Accions',
+'namespaces' => 'Espåces di lomaedje',
+'variants' => 'Variantes',
+
 'errorpagetitle' => 'Aroke',
 'returnto' => 'Rivni al pådje «$1».',
 'tagline' => 'Èn årtike di {{SITENAME}}.',
@@ -212,6 +249,7 @@ $messages = array(
 'printableversion' => 'Modêye sicrirece-amiståve',
 'permalink' => 'Hårdêye viè cisse modêye ci',
 'print' => 'Imprimer',
+'view' => 'Vey',
 'edit' => 'Candjî',
 'create' => 'Ahiver',
 'editthispage' => "Candjî l' pådje",
@@ -219,29 +257,30 @@ $messages = array(
 'delete' => 'Disfacer',
 'deletethispage' => "Disfacer l' pådje",
 'undelete_short' => 'Rapexhî {{PLURAL:$1|on candjmint|$1 candjmints}}',
+'viewdeleted_short' => 'Vey {{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}',
 'protect' => 'Protedjî',
-'protect_change' => "candjî l' protedjaedje",
+'protect_change' => 'candjî',
 'protectthispage' => "Protedjî l' pådje",
-'unprotect' => 'Disprotedjî',
-'unprotectthispage' => "Disprotedjî l' pådje",
+'unprotect' => "Candjî l' protedjaedje",
+'unprotectthispage' => "Candjî l' protedjaedje del pådje",
 'newpage' => 'Novele pådje',
 'talkpage' => 'Copene sol pådje',
 'talkpagelinktext' => 'Copiner',
 'specialpage' => 'Pådje sipeciåle',
 'personaltools' => 'Usteyes da vosse',
-'postcomment' => 'Sicrire on comintaire',
+'postcomment' => 'Novele seccion',
 'articlepage' => "Vey l' årtike",
 'talk' => 'Copene',
 'views' => 'Vuwes',
 'toolbox' => 'Boesse ås usteyes',
 'userpage' => "Vey li pådje di l' uzeu",
 'projectpage' => 'Vey li pådje do pordjet',
-'imagepage' => "Vey li pådje di l' imådje",
+'imagepage' => 'Vey li pådje do fitchî',
 'viewtalkpage' => 'Vey li pådje di copene',
 'otherlanguages' => 'Ôtes lingaedjes',
 'redirectedfrom' => '(Redjiblé di $1)',
 'redirectpagesub' => 'Pådje di redjiblaedje',
-'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.',
+'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2 a $1.',
 'viewcount' => 'Cisse pådje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.',
 'protectedpage' => 'Pådje protedjeye',
 'jumpto' => 'Potchî a:',
@@ -252,6 +291,7 @@ Gn a trop d' uzeus ki saynut di vey cisse pådje ci.
 Soeyoz vayant di ratinde ene miete divant di rsayî di vey cisse pådje ci.
 
 $1",
+'pool-errorunknown' => 'Aroke nén cnoxhowe',
 
 # 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) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Åd fwait di {{SITENAME}}',
@@ -271,7 +311,7 @@ $1",
 'badaccess' => "Åk n' a nén stî avou les permissions",
 
 'versionrequired' => "I vs fåt l' modêye $1 di MediaWiki",
-'versionrequiredtext' => "I vs fåt l' modêye $1 di MediaWiki po-z eployî cisse pådje ci. Loukîz a [[Special:Version]]",
+'versionrequiredtext' => "I vs fåt l' modêye $1 di MediaWiki po-z eployî cisse pådje ci. Loukîz [[Special:Version|al pådje des modêyes]]",
 
 'ok' => "'l est bon",
 'retrievedfrom' => 'Prin del pådje «$1»',
@@ -281,26 +321,33 @@ $1",
 'youhavenewmessagesmulti' => 'Vos avoz des noveas messaedjes so $1',
 'editsection' => 'candjî',
 'editold' => 'candjî',
+'viewsourceold' => 'vey côde sourdant',
 'editlink' => 'candjî',
 'viewsourcelink' => 'Vey côde sourdant',
 'editsectionhint' => "Candjî l' seccion: $1",
 'toc' => 'Ådvins',
 'showtoc' => 'mostrer',
 'hidetoc' => 'catchî',
+'collapsible-collapse' => 'erôler',
+'collapsible-expand' => 'diswalper',
 'thisisdeleted' => 'Vey ou rapexhî $1?',
 'viewdeleted' => 'Vey $1?',
 'restorelink' => '{{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}',
 'feedlinks' => 'Sindicåcion:',
 'feed-invalid' => 'Sôre di sindicåcion nén valide.',
+'site-atom-feed' => 'Floûs Atom di $1',
+'page-atom-feed' => 'Floûs Atom di «$1»',
 'red-link-title' => '$1 (nén co ataké)',
+'sort-descending' => 'Discrexhant relijhaedje',
+'sort-ascending' => 'Acrexhant relijhaedje',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Årtike',
 'nstab-user' => "Pådje di l' uzeu",
 'nstab-media' => 'Media',
-'nstab-special' => 'Sipeciås',
+'nstab-special' => 'Pådje sipeciåle',
 'nstab-project' => 'Pådje',
-'nstab-image' => 'Imådje',
+'nstab-image' => 'Fitchî',
 'nstab-mediawiki' => 'Messaedje',
 'nstab-template' => 'Modele',
 'nstab-help' => 'Aidance',
@@ -308,7 +355,9 @@ $1",
 
 # Main script and global functions
 'nosuchaction' => 'Nole sifwaite accion',
-'nosuchactiontext' => "L' accion specifieye pal hårdêye n' est nén ricnoxhowe på wiki.",
+'nosuchactiontext' => "L' accion specifieye pal hårdêye n' est nén ricnoxhowe på wiki.
+Motoit ki vos avoz må scrît l' hårdêye ou shuvou on cron loyén.
+Ça pôreut eto esse on bug do programe eployî pa {{SITENAME}}.",
 'nosuchspecialpage' => 'Nole sifwaite pådje',
 'nospecialpagetext' => 'Vos avoz dmandé ene pådje sipeciåle nén valide, po ene djivêye des pådjes sipeciåles valides, loukîz a [[Special:SpecialPages]].',
 
@@ -320,14 +369,24 @@ $1",
 Li dierin cweraedje del båze di dnêyes di sayî esteut:
 <blockquote><tt>$1</tt></blockquote>
 a pårti del fonccion «<tt>$2</tt>».
-MySQL a rtourné l' aroke «<tt>$3: $4</tt>».",
+Li båze di dnêyes a rtourné l' aroke «<tt>$3: $4</tt>».",
 'dberrortextcl' => "Åk n' a nén stî avou l' sintacse do cweraedje del båze di dnêyes.
 Li dierin cweraedje del båze di dnêyes di sayî esteut:
 «$1»
 a pårti del fonccion «$2».
-MySQL a rtourné l' aroke «$3: $4».",
+Li båze di dnêyes a rtourné l' aroke «$3: $4».",
 'laggedslavemode' => "Asteme: I s' pout ki l' pådje n' åye nén co les dierins candjmints.",
+'readonly' => 'Li båze di dnêyes est aclawêye',
+'missing-article' => "Li båze di dnêyes n' a nén trové l' tecse d' ene pådje k' åreut dvou esse trovêye, lomêye «$1» $2.
+
+Çoula arive cwand on shût on loyén po ene diferince k' est houte ou viè l' istwere d' ene pådej disfacêye.
+
+Si c' est nén çoula, motoit k' vos avoz trové on bug dins l' programe.
+Adon dijhoz l' a on [[Special:ListUsers/sysop|manaedjeu]], sins rovyî d' mete li hårdêye (URL) ki mostere l' aroke.",
+'missingarticle-rev' => '(l° del modêye: $1)',
+'missingarticle-diff' => '(dif: $1, $2)',
 'internalerror' => 'Divintrinne aroke',
+'internalerror_info' => 'Divintrinne aroke: $1',
 'filecopyerror' => "Dji n' a savou copyî l' fitchî «$1» viè «$2».",
 'filerenameerror' => "Dji n' a savou rlomer l' fitchî «$1» e «$2».",
 'filedeleteerror' => "Dji n' a savou disfacer l' fitchî «$1».",
@@ -335,31 +394,36 @@ MySQL a rtourné l' aroke «$3: $4».",
 'filenotfound' => "Dji n' a savou trover l' fitchî «$1».",
 'unexpected' => 'Valixhance nén ratindowe: «$1»=«$2».',
 'badarticleerror' => "Cisse accion la n' si pout nén fé so cisse pådje ci.",
-'cannotdelete' => "Dji n' sai disfacer l' pådje ou l' imådje dimandêye (ça s' pôreut k' ene ôte sakî l' a ddja disfacé).",
+'cannotdelete' => "Dji n' sai disfacer l' pådje ou l' fitchî «$1».
+Ça s' pôreut k' ene ôte sakî l' a ddja disfacé.",
+'cannotdelete-title' => "Dji n' sai disfacer l' pådje «$1»",
 'badtitle' => 'Måva tite',
 '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û. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-'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. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
+'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',
-'viewsourcetext' => 'Loukîz li contnou di l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis :',
+'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:",
 'protectedinterface' => "Cisse pådje ci dene on tecse d' eterface pol programe, eyet elle a stî protedjeye po s' waeranti siconte des abus.",
-'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
-Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'editinginterface' => "'''Asteme:''' Vos estoz ki candje ene pådje eployeye po fé l' tecse po l' eterface do programe.
+Les candjmints ki vso frîz vont candjî l' rivnance di l' eterface po ds ôtes uzeus.
+Po des ratournaedjes, loukîz purade a [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], li pordjet di locålijhaedje da MediaWiki.",
+'cascadeprotected' => "Cisse pådje ci a stî protedjeye siconte des candjmints, pask' ele est eploye ådvins {{PLURAL:$1|del pådje shuvante k' est protedjeye|des pådjes shuvantes ki sont protedjeyes}} avou l' tchuze «e cascåde» en alaedje:
+$2",
 
 # Login and logout pages
 'logouttext' => "'''Vos vs avoz dislodjî.'''
 
-Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén vos relodjî dizo l' minme uzeu ou dizo èn uzeu diferin.
+Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén [[Special:UserLogin|vos relodjî]], dizo l' minme uzeu ou dizo èn uzeu diferin.
 Notez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz elodjî, disk' a tant ki vos vudrîz l' muchete di vosse betchteu waibe.",
 'welcomecreation' => '== Bénvnowe, $1! ==
 
 Vosse conte a stî ahivé.
-Èn rovyîz nén di candjî les preferinces di {{SITENAME}} a vosse môde.',
-'yourname' => "Vosse no d' elodjaedje",
+Èn rovyîz nén di candjî les [[Special:Preferences|preferinces di {{SITENAME}}]] a vosse môde.',
+'yourname' => "Vosse no d' elodjaedje:",
 'yourpassword' => 'Vosse sicret',
 'yourpasswordagain' => 'Ritapez vosse sicret',
 'remembermypassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
@@ -368,18 +432,21 @@ Vosse conte a stî ahivé.
 'nav-login-createaccount' => "Ahiver on conte, udon-bén s' elodjî",
 'loginprompt' => 'Vos dvoz permete les coûkes po vs elodjî so {{SITENAME}}.',
 'userlogin' => "S' elodjî",
+'userloginnocreate' => "S' elodjî",
 'logout' => 'Si dislodjî',
 'userlogout' => 'Si dislodjî',
 'notloggedin' => 'Nén elodjî',
-'nologin' => "Vos n' avoz nén d' conte so ç' wiki ci? '''$1'''.",
+'nologin' => "Vos n' avoz nén d' conte so ç' wiki ci? $1.",
 'nologinlink' => 'Ahivez on conte da vosse',
 'createaccount' => 'Ahiver on novea conte',
 'gotaccount' => "Vos avoz ddja on conte so ç' wiki ci? '''$1'''.",
 'gotaccountlink' => 'Elodjîz vs',
+'userlogin-resetlink' => "Avoz rovyî vos detays d' elodjaedje?",
 'createaccountmail' => 'pa emile',
 'createaccountreason' => 'Råjhon:',
 'badretype' => 'Vos avoz dné deus screts diferins.',
-'userexists' => "Li no d' uzeu ki vs avoz tchoezi est ddja eployî. Tchoezixhoz è èn ôte s' i vs plait.",
+'userexists' => "Li no d' uzeu ki vs avoz tchoezi est ddja eployî.
+Tchoezixhoz è èn ôte s' i vs plait.",
 'loginerror' => "Aroke d' elodjaedje",
 'nocookiesnew' => "Li conte a stî ahivé, mins vos n' estoz nén elodjî. {{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs avou vosse novea no d' elodjaedje eyet scret, s' i vs plait.",
 'nocookieslogin' => "{{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs s' i vs plait.",
@@ -387,41 +454,86 @@ Vosse conte a stî ahivé.
 'loginsuccesstitle' => 'Vos estoz elodjî',
 'loginsuccess' => "'''L' elodjaedje a stî comifåt, asteure vos estoz elodjî dins {{SITENAME}} dizo l' no d' uzeu «$1».'''",
 'nosuchuser' => "I g na nou uzeu dizo l' no «$1».
-Verifyîz çou k' vos avoz tapé, oudonbén rimplixhoz les ôtes tchamps
-et clitchîz sol boton po-z ahiver on novea conte.",
+Notez k' les nos d' uzeu fjhèt l' diferince etur pitites et grandès letes.
+Verifyîz çou k' vos avoz tapé, oudonbén [[Special:UserLogin/signup|ahivez on novea conte]].",
 'nosuchusershort' => "I g na nou uzeu dizo l' no «$1». Verifyîz çou k' vos avoz tapé.",
 'nouserspecified' => "Vos dvoz dner on no d' elodjaedje.",
 'wrongpassword' => "Li scret ki vs avoz dné est måva. Rissayîz s' i vs plait.",
 'wrongpasswordempty' => "Vos avoz dné on vude sicret. Rissayîz s' i vs plait.",
-'passwordtooshort' => 'Li scret est pår trop court. I doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.',
+'passwordtooshort' => 'Li scret doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.',
 'mailmypassword' => "M' emiler on novea scret",
-'passwordremindertitle' => 'Rimimbraedje do scret po {{SITENAME}}',
-'passwordremindertext' => "Ene sakî (probåblumint vos-minme, avou l' adresse IP $1) a dmandé k' on vs emile on novea scret po {{SITENAME}} ($4).
-Li scret po l' uzeu «$2» est asteure «$3».
-Po pus di såvrité, vos vos dvrîz elodjî eyet rcandjî vosse sicret å pus abeye.
-
-Si ene ôte sakî a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet nel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.",
+'passwordremindertitle' => 'Novea scret timporaire po {{SITENAME}}',
+'passwordremindertext' => "Ene sakî (probåblumint vos-minme, avou l' adresse IP $1) a dmandé 
+on novea scret po {{SITENAME}} ($4).
+On scret timporare po l' uzeu «$2» a stî fwait, c' est «$3».
+Si c' est vos k' a fwait l' dimande, vos vs divoz elodjî eyet tchoezi on novea scret.
+Li scret timporaire ni srè pus valide après {{PLURAL:$5|on djoû|$5 djoûs}}.
+
+Si c' est ene ôte sakî k' a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet 
+nel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.",
 'noemail' => "I n' a pont d' adresse emile di cnoxhowe po l' uzeu «$1».",
+'noemailcreate' => 'Vos dvoz dner ene adresse emile valide.',
 'passwordsent' => "On novea scret a stî emilé a l' adresse emile
 racsegneye po l' uzeu «$1».
 Relodjîz vs avou ç' noû scret on côp ki vos l' åroz rçuvou s' i vs plait.",
+'blocked-mailpassword' => "Voste adresse IP est blokêye pol sicrijhaedje, et do côp vos n' poloz nén eployî l' fonccion d' rapexhaedje do scret po-z eviter les abus.",
 'eauthentsent' => "Èn emile d' acertinaedje a stî evoyî a l' adresse emile tchoezeye.
 Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instruccions di l' emile ki vos alez rçure, po-z acertiner ki l' conte est bén da vosse.",
 'mailerror' => "Åk n' a nén stî tot-z evoyant l' emile: $1",
-'acct_creation_throttle_hit' => "Mande escuzes, mins vos avoz ddja ahivé {{PLURAL:$1|1 conte|$1 contes}}. Vos n' endè ploz nén fé des ôtes.",
-'emailauthenticated' => 'Voste adresse emile a stî acertinêye li $1.',
+'acct_creation_throttle_hit' => "Ene sakî a ddja ahivé {{PLURAL:$1|1 conte|$1 contes}} dins les dierinnes 24 eures a pårti dek minme adresse IP, çou k' est l' limite acceptêye po ene sifwaite termene.
+Ça fwait ki l' ahivaedje di contes a p·årti di ciste adresse IP la a stî dismetou pol moumint.",
+'emailauthenticated' => 'Voste adresse emile a stî acertinêye li $2 a $3.',
 'emailnotauthenticated' => "Voste adresse emile n' a nén co stî acertinêye. Nol emile ni serè-st evoyî po les fonccions shuvantes.",
 'noemailprefs' => 'Dinez ene adresse emile po ces fonccions si mete en alaedje.',
 'emailconfirmlink' => 'Acertinaedje di voste adresse emile',
-'invalidemailaddress' => "L' adresse emile ni pout nén esse acceptêye la k' i shonnreut k' ele soeye dins ene cogne nén valide. Tapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs plait.",
+'invalidemailaddress' => "L' adresse emile ni pout nén esse acceptêye la k' i shonnreut k' ele soeye dins ene cogne nén valide.
+Tapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs plait.",
 'accountcreated' => 'Conte ahivé',
 'accountcreatedtext' => "Li conte d' uzeu «$1» a stî ahivé.",
 'loginlanguagelabel' => 'Lingaedje: $1',
 
 # Change password dialog
-'oldpassword' => 'Vî scret',
-'newpassword' => 'Noû scret',
-'retypenew' => "Ritapez l' noû scret",
+'resetpass' => "Candjî l' sicret",
+'resetpass_announce' => "Vos vs avoz elodjî avou on scret timporaire ki vos a stî emilé.
+Por vos fini l' elodjaedje, vos dvoz defini on novea scret:",
+'resetpass_header' => "Candjî l' sicret do conte",
+'oldpassword' => 'Vî scret:',
+'newpassword' => 'Noû scret:',
+'retypenew' => "Ritapez l' noû scret:",
+'resetpass_submit' => "Defini on scret et s' elodjî",
+'resetpass_success' => "Vosse sicret a stî candjî comifåt!
+Asteure l' elodjaedje...",
+'resetpass_forbidden' => "Les screts n' polèt nén esse candjîs",
+'resetpass-no-info' => 'Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.',
+'resetpass-submit-loggedin' => "Candjî l' sicret",
+'resetpass-submit-cancel' => 'Rinoncî',
+'resetpass-wrong-oldpass' => "Li scret timporaire ou do moumint n' est nén valide.
+Motoit ki vos l' avoz ddja candjî ou ridmandé on novea scret timporaire.",
+'resetpass-temp-password' => 'Sicret timporaire:',
+
+# Special:PasswordReset
+'passwordreset' => "Rifé l' sicret",
+'passwordreset-text' => 'Completez cisse formulrece ci po rçure èn emile ki dene les detays do conte da vosse.',
+'passwordreset-legend' => "Rifé l' sicret",
+'passwordreset-disabled' => "Li rfijhaedje di screts a stî dismetou so ç' wiki ci.",
+'passwordreset-pretext' => '{{PLURAL:$1||Dinez onk des elemints di dnêyes shuvants}}',
+'passwordreset-username' => "No d' elodjaedje:",
+'passwordreset-domain' => 'Dominne:',
+'passwordreset-capture' => "Vey li messaedje di l' emile?",
+'passwordreset-capture-help' => "Si vos clitchîz cisse boesse ci, l' emile (eyet li scret timporaire) vos srè håyné e minme tins k' il est emilé.",
+'passwordreset-email' => 'Adresse emile:',
+'passwordreset-emailtitle' => 'Detays do contre so {{SITENAME}}',
+
+# Special:ChangeEmail
+'changeemail' => "Candjî l' emile",
+'changeemail-header' => "Candjî l' adresse emile do conte",
+'changeemail-text' => "Rimplixhoz l' formulrece po candjî voste adresse emile. Vos dvroz dner vosse sicret po-z acertiner l' candjmint.",
+'changeemail-no-info' => 'Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.',
+'changeemail-oldemail' => 'Adresse emile pol moumint:',
+'changeemail-newemail' => 'Novele adresse emile:',
+'changeemail-none' => '(nole)',
+'changeemail-submit' => "Candjî l' emile",
+'changeemail-cancel' => 'Rinoncî',
 
 # Edit page toolbar
 'bold_sample' => 'Cråssès letes',
@@ -431,7 +543,7 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
 'link_sample' => 'Tecse pol loyén',
 'link_tip' => 'Divintrin loyén',
 'extlink_sample' => 'http://www.example.com tecse pol hårdêye',
-'extlink_tip' => 'Difoûtrinne hårdêye (en rovyîz nén di mete «http://» pa dvant)',
+'extlink_tip' => 'Difoûtrinne hårdêye (èn rovyîz nén di mete «http://» pa dvant)',
 'headline_sample' => 'Tecse di tite',
 'headline_tip' => 'Tite di 2inme livea',
 'nowiki_sample' => "Tapez l' tecse nén wiki chal",
@@ -453,49 +565,99 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
 'showpreview' => 'Vey divant',
 'showlivepreview' => 'Vey divant',
 'showdiff' => 'Vey les candjmints',
-'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî. Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî.
+Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+'anonpreviewwarning' => "''Vos n' estoz nén elodjî. Si vos schapez c' est voste adresse IP ki serè wårdêye dins l' istwere des candjmints.''",
 'missingsummary' => "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pådje.",
 'missingcommenttext' => "Tapez on comintaire chal pa dzo s' i vs plait.",
 'blockedtitle' => "L' uzeu est bloké",
-'blockedtext' => "Vosse no d' uzeu ou voste adresse IP a stî blokêye pa $1.
-Li råjhon dnêye est:<br />''$2''<p>Vos ploz contacter $1 oudonbén onk des
+'blockedtext' => "'''Vosse no d' uzeu ou voste adresse IP a stî blokêye.'''
+
+Li blocaedje a stî fwait pa $1.
+Li råjhon dnêye est ''$2''.
+
+* Comince do blocaedje: $8
+* Fén do blocaedje: $6
+* Blocaedje di: $7
+
+Vos ploz contacter $1 oudonbén onk des
+[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.
+Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.
+Voste adresse IP est $3 eyet l' ID di blocaedje est $5.
+S' i vs plait racsegnoz totes les racsegnes chal å dzeur dins les dmandes ki vos frîz.",
+'autoblockedtext' => "Voste adresse IP a stî ablokêye otomaticmint, pask' elle a stî eployeye pa èn ôte uzeu, lu-minme dedja rbouté pa $1.
+Li råjhon k' on-z a dné, c' est:
+
+:''$2''.
+
+* Comince do blocaedje: $8
+* Fén do blocaedje: $6
+* Blocaedje di: $7
+
+Vos ploz contacter $1 oudonbén onk des
 [[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.
 
-Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]].
+Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.
 
-Voste adresse IP est $3. S' i vs plait racsegnoz ciste adresse IP la dins les dmandes ki vos frîz.",
+Voste adresse IP est $3 eyet l' ID di blocaedje est $5.
+S' i vs plait racsegnoz totes les racsegnes chal å dzeur dins les dmandes ki vos frîz.",
+'blockednoreason' => 'sins dire pocwè',
 'whitelistedittext' => 'I vs fåt $1 po pleur candjî les årtikes.',
 'confirmedittext' => "I vs fåt acertiner vost emile po pleur candjî les årtikes. Dinez èn emile eyet l' acertiner dins vos [[Special:Preferences|preferinces d' uzeu]].",
 'loginreqtitle' => 'I vs fåt esse elodjî',
 'loginreqlink' => 'elodjî',
 'loginreqpagetext' => 'Vos vs divoz $1 po vey des ôtès pådjes.',
 'accmailtitle' => 'Li scret a stî evoyî.',
-'accmailtext' => 'Li scret po «$1» a stî evoyî a $2.',
+'accmailtext' => "On scret costrût a l' astcheyance po [[User talk:$1|$1]] a stî evoyî a $2.
+
+Li scret po ci novea conte ci pout esse candjî sol pådje di ''[[Special:ChangePassword|candjmint di scret]]'' après l' elodjaedje.",
 'newarticle' => '(Novea)',
 'newarticletext' => "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.
 Mins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse chal pa dzo (alez vey li [[{{MediaWiki:Helppage}}|pådje d' aidance]] po pus d' infôrmåcion).
 Si vos n' voloz nén scrire cisse pådje chal, clitchîz simplumint sol boton '''En erî''' di vosse betchteu waibe po rivni al pådje di dvant.",
-'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén. Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî. Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmåkes et des messaedjes ki n' sont nén por vos. Loukîz s' i vs plait po [[Special:UserLogin|fé on novea conte ou s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
-'noarticletext' => "I gn a pol moumint nou tecse e cisse pådje chal, vos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes, oudonbén [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje].",
-'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe: '''Mozilla / Firefox / Safari:''' tchôkîz so ''Shift'' to clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-Shift-R'' (''Cmd-Shift-R'' so on Mac); '''IE:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''; '''Konqueror:''' simplumint clitchîz so ''Rafrister'' ou l' tape ''F5''; les uzeus d' '''Opera''' dvront motoit netyî pår leu muchete, dins ''Usteyes→Preferinces''.",
-'usercssyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea CSS divant del schaper.",
-'userjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea JS divant del schaper.",
-'usercsspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu, i n' a nén co stî schapé!'''",
+'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.
+Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî.
+Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.
+Loukîz s' i vs plait po [[Special:UserLogin/signup|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
+'noarticletext' => 'I gn a pol moumint nou tecse e cisse pådje chal.
+Vos ploz [[Special:Search/{{PAGENAME}}|cweri après l\' tite di cisse pådje ci]] dins des ôtès pådjes,
+oudonbén <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås],
+ou co [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l\' pådje]</span>.',
+'noarticletext-nopermission' => 'I gn a pol moumint nou tecse e cisse pådje chal.
+Vos ploz [[Special:Search/{{PAGENAME}}|cweri après l\' tite di cisse pådje ci]] dins des ôtès pådjes,
+oudonbén <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>.',
+'blocked-notice-logextract' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.
+* '''Firefox / Safari:''' tchôkîz so ''Shift'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' so on Mac)
+* '''Google Chrome:''' tchôkîz so ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
+* '''Internet Explorer:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''
+* '''Konqueror:''' clitchîz so ''Rafrister'' ou tchôkîz so ''F5''
+* '''Opera:''' vudîz l' muchete dins ''Usteyes → Preferinces''.",
+'usercssyoucanpreview' => "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea CSS divant del schaper.",
+'userjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea JavaScript divant del schaper.",
+'usercsspreview' => "Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu.'''
+'''I n' a nén co stî schapé!'''",
 'userjspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje/saye di vosse JavaScript d' uzeu, i n' a nén co stî schapé!'''",
 'userinvalidcssjstitle' => "'''Asteme:''' I n' a pont d' pea lomêye «$1». Tuzez ki les pådjes .css eyet .js des uzeus eployèt des tite e ptitès letes, metans {{ns:user}}:Toto/vector.css et nén {{ns:user}}:Toto/Vector.css.",
 'updated' => '(Ramidré)',
-'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje, li pådje n' est nén co schapêye!'''",
-'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez di clitchî so «schaper».',
+'note' => "'''Note :'''",
+'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje.'''
+'''Les candmints n' ont nén co stî schapés!'''",
+'continue-editing' => 'Continouwer a candjî',
+'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez del schaper.',
 'session_fail_preview' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.
 Rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
 'session_fail_preview_html' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.'''
 
-''Come ci wiki chal a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''
+''Come {{SITENAME}} a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''
 
-'''Si c' est ene saye oniesse di candjî l' pådje, rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
+'''Si c' est ene saye oniesse di candjî l' pådje, rissayîz s' i vs plait.'''
+Si çoula n' va todi nén, sayîz di vs [[Special:UserLogout|dislodjî]] eyet di vs relodjî.",
 'editing' => 'Candjant $1',
+'creating' => 'Ahivant $1',
 'editingsection' => 'Candjant $1 (seccion)',
-'editingcomment' => 'Candjant $1 (comintaire)',
+'editingcomment' => 'Candjant $1 (novele seccion)',
 'editconflict' => 'Ecramiaedje inte deus candjmints: $1',
 'explainconflict' => "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.
 Li boesse di tecse do dzeur mostere li tecse del pådje come il est
@@ -518,18 +680,30 @@ Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz c
 Si vos n' voloz nén scrire des årtikes ki polèt esse candjîs pa des ôtes, adon nels evoyîz nén chal.<br />
 Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (voeyoz $1 po pus di racsegnes).
 '''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
-'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octets, çou k' est pus ki l' macsimom di $2 kilo-octets. C' est nén possible del schaper sol sierveu.'''",
+'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octet{{PLURAL:$1||s}}, çou k' est pus ki l' macsimom di $2 kilo-octet{{PLURAL:$2||s}}.'''
+C' est nén possible del schaper sol sierveu.",
 'readonlywarning' => "'''ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.
-Do côp, vos n' såroz schaper vos candjmints asteure; motoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.'''",
-'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye siconte des candjmints, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''",
-'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.",
-'templatesused' => 'Modeles eployîs e cisse pådje ci:',
+Do côp, vos n' såroz schaper vos candjmints asteure.'''
+Motoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.
+
+Li manaedjeu k' a-st eclawé l' båze di dnêyes a dné cist esplicaedje ci: $1",
+'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''
+Li dierinne intrêye ezès djournås est håynêye chal pa dzo po referince:",
+'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.
+Li dierinne intrêye do djournå est håynêye chal pa dzo po referince:",
+'cascadeprotectedwarning' => "'''ASTEME:''' cisse pådje ci a stî protedjeye ça fwait ki seulmint les uzeus avou l' livea d' manaedjeu el polnut candjî, paski l' pådje est eployeye å dvins {{PLURAL:$1|del pådje shuvante, k' est protedjeye|des pådjes shuvantes, ki sont protedjeyes}} avou l' tchuze «e cascåde» en alaedje:",
+'templatesused' => '{{PLURAL:$1|Modele eployî|Modeles eployîs}} e cisse pådje ci:',
+'templatesusedpreview' => "{{PLURAL:$1|Modele eployî|Modeles eployîs}} e ç' prévoeyaedje ci:",
+'templatesusedsection' => '{{PLURAL:$1|Modele eployî|Modeles eployîs}} e cisse seccion ci:',
 'template-protected' => '(protedjî)',
 'template-semiprotected' => '(dimey-protedjî)',
+'hiddencategories' => "Cisse pådje ci est mimbe {{PLURAL:$1|d' ene categoreye catcheye|di $1 categoreyes catcheyes}}:",
 'nocreatetitle' => 'Ahivaedje di pådjes limité',
-'nocreatetext' => "Cisse waibe ci a limité l' possibilité d' ahiver des novelès pådjes. Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
+'nocreatetext' => "{{SITENAME}} a limité l' possibilité d' ahiver des novelès pådjes.
+Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
 'nocreate-loggedin' => "Vos n' avoz nén l' droet d' ahiver des novelès pådjes.",
-'recreate-moveddeleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî dsfacêye davance.'''
+'permissionserrorstext-withaction' => "Vos n' avoz nén l' droet d' $2, cåze {{PLURAL:$1|del råjhon shuvante|des råjhons shuvantes}}:",
+'recreate-moveddeleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî disfacêye davance.'''
 
 Tuzez bén s' el fåt vormint rahiver, tot tapant èn ouy so l' istwere del pådje :",
 'edit-gone-missing' => "Li pàdje n' a sepou esse rapontieye.
@@ -538,6 +712,11 @@ Motoit k' elle a stî tapêye evoye.",
 'edit-no-change' => "Vosse sicrijhaedje n' a nén passé, paski rén n' a stî candjî al modêye di dvant.",
 'edit-already-exists' => "Li novele pâdje n' a savou esse ahivêye, ca cisse pâdje la egzistêye dedja.",
 
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Asteme:''' I gn a trop di modeles dins cisse pådje ci.
+Sacwants di zels ni seront nén eployîs.",
+'post-expand-template-inclusion-category' => "Pådjes ki l' inclusion d' modeles est foû limite",
+
 # Account creation failure
 'cantcreateaccounttitle' => "Vos n' ploz nén ahiver-st on conte.",
 
@@ -545,54 +724,76 @@ Motoit k' elle a stî tapêye evoye.",
 'viewpagelogs' => 'Vey les djournås po cisse pådje ci',
 'nohistory' => "I n' a pont d' istwere des modêyes po cisse pådje chal.",
 'currentrev' => "Modêye d' asteure",
+'currentrev-asof' => 'Dierinne modêye å $1',
 'revisionasof' => 'Modêye do $1',
+'revision-info' => 'Modêye do $1 pa $2',
 'previousrevision' => '←Modêye di dvant',
 'nextrevision' => 'Modêye shuvante→',
 'currentrevisionlink' => "Modêye d' asteure",
 'cur' => 'ast.',
 'next' => 'shuv.',
-'last' => 'dif.',
+'last' => 'div.',
 'page_first' => 'prumî',
 'page_last' => 'dierin',
 'histlegend' => "Tchoezi les modêyes a comparer: clitchîz so les botons radio des deus modêyes
 ki vos vloz comparer et s' tchôkîz sol tape «enter» ou clitchîz sol
 boton do dzo.<br />
-Ledjinde: (ast.) = diferince avou l' modêye d' asteure,
-(dif.) = diferince avou l' modêye di dvant, M = pitit candjmint d' rén do tot.",
+Ledjinde: '''({{int:cur}})''' = diferince avou l' modêye d' asteure, '''({{int:last}})''' = diferince avou l' modêye di dvant, '''{{int:minoreditletter}}''' = pitit candjmint d' rén do tot.",
+'history-fieldset-title' => "Naivyî l' istwere des candjmints",
+'history-show-deleted' => 'Disfacés seulmint',
 'histfirst' => 'li pus vî',
 'histlast' => 'li dierin',
 'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
 'historyempty' => '(vude)',
 
 # Revision feed
+'history-feed-title' => 'Istwere des modêyes',
+'history-feed-description' => 'Istwere des candjmints di cisse pådje ci sol wiki',
 'history-feed-item-nocomment' => '$1 li $2',
+'history-feed-empty' => "Li pådje ki vos vloz drovi n' egzistêye nén.
+Elle a motoit stî  disfacêye ou k' elle a rcandjî d' no.
+Asprouvez do [[Special:Search|ricweri sol wiki]] po trover des pådjes vijhenes.",
 
 # Revision deletion
-'rev-deleted-comment' => '(comintaire oisté)',
+'rev-deleted-comment' => '(rascourti di candjmint oisté)',
 'rev-deleted-user' => "(no d' elodjaedje oisté)",
-'rev-deleted-text-permission' => 'Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-I gn a motoit des racsegnes sol [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} djournå des disfaçaedjes].',
-'rev-deleted-text-view' => "Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-Come manaedjeu so ç' wiki ci, vos avoz l' droet del vey; i gn a motoit des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
+'rev-deleted-text-permission' => "Cisse modêye ci del pådje a stî '''disfacêye'''.
+Vos ploz vey les ca et les ma sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
+'rev-deleted-text-view' => "Cisse modêye ci del pådje a stî '''disfacêye'''.
+Vos l' poloz co vey; i gn a des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
 'rev-delundel' => 'mostrer/catchî',
 'revisiondelete' => 'Disfacer/rapexhî des modêyes',
-'revdelete-selected' => "'''Tchoezeye modêye di [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$2|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås po '''$1:''''''",
-'revdelete-text' => "'''Les disfacêyès modêyes vont continouwer d' aparexhe dins l' pådje di l' istwere, mins leu contnou n' serè nén veyåve do publik.'''
+'revdelete-show-file-submit' => 'Oyi',
+'revdelete-selected' => "'''{{PLURAL:$2|Tchoezeye modêye|Tchoezeyès modêyes}} di [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås:'''",
+'revdelete-text' => "'''Les disfacés avenmints et modêyes vont continouwer d' aparexhe dins l' pådje di l' istwere, mins leu contnou n' serè nén veyåve do publik.'''
 
-Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l' rapexhî åd triviè di cisse minme eterface ci, a moens k' ene restriccion di pus ni soeye metowe en alaedje pås mwaisses-manaedjeus del waibe.",
-'revdelete-legend' => 'Defini des restriccions sol modêye',
+Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l' rapexhî åd triviè di cisse minme eterface ci, a moens k' ene restriccion di pus ni soeye metowe en alaedje pås mwaisses-manaedjeus del waibe.",
+'revdelete-legend' => 'Defini des restriccions sol voeyaedje',
 'revdelete-hide-text' => "Catchî l' tecse del modêye",
 'revdelete-hide-comment' => "Catchî l' comintaire di candjmint",
 'revdelete-hide-user' => "Catchî l' no d' uzeu/adresse IP do candjeu",
-'revdelete-hide-restricted' => 'Apliker ces restrictions ossu åzès manaedjeus',
+'revdelete-hide-restricted' => "Oister foû les dnêyes ossu bén po les manaedjeus k' po les ôtes",
+'revdelete-radio-set' => 'Oyi',
+'revdelete-radio-unset' => 'Neni',
 'revdelete-log' => 'Råjhon:',
-'revdelete-submit' => 'Apliker al modêye tchoezeye',
+'revdelete-submit' => 'Apliker {{PLURAL:$1|al modêye tchoezeye|åzès modêyes tchoezeyes}}',
+'revdel-restore' => "candjî l' veyåvisté",
+'revdel-restore-deleted' => 'disfacêyès modêyes',
+'revdel-restore-visible' => 'veyåvès modêyes',
+'deletedhist' => 'Istwere disfacêye',
 
 # History merging
+'mergehistory-success' => '$3 modêye{{PLURAL:$3||s}} di [[:$1]] {{PLURAL:$3|a stî metowe|ont stî metowes}} avou [[:$2]].',
+'mergehistory-fail' => "Nén possibe di mete eshonne les istweres. Verifyîz l' pådje et les parametes di date.",
+'mergehistory-no-source' => "Li pådje sourdant $1 n' egzistêye nén.",
 'mergehistory-reason' => 'Råjhon:',
 
+# Merge log
+'revertmerge' => 'Dispårti',
+
 # Diffs
+'history-title' => 'Istwere des candjmints po «$1»',
 'lineno' => 'Roye $1:',
 'compareselectedversions' => 'Comparer les modêyes tchoezeyes',
 'editundo' => 'disfé',
@@ -601,28 +802,57 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 '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' => 'Pol cweraedje «[[$1]]»',
+'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' => '$1 di dvant',
-'nextn' => '{{PLURAL:$1|$1}} shuvants',
+'prevn' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
+'nextn' => '{{PLURAL:$1|shuvant|$1 shuvants}}',
+'prevn-title' => '$1 {{PLURAL:$1|rizultat|rizultats}} di dvant',
+'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!'''",
 'searchhelp-url' => 'Help:Aidance',
-'search-redirect' => '(ridjiblé di $1)',
-'search-interwiki-caption' => 'So les ôtes pordjets Wiki',
+'searchprofile-articles' => 'Pådjes di contnou',
+'searchprofile-project' => "Pådjes d' aidance et do pordjet",
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Tote li waibe',
+'searchprofile-advanced' => 'Sipepieus',
+'searchprofile-articles-tooltip' => 'Cweri dins $1',
+'searchprofile-project-tooltip' => 'Cweri dins $1',
+'searchprofile-images-tooltip' => 'Cweri après des fitchîs multimedia',
+'searchprofile-everything-tooltip' => "Cweri tot avå l' waibe (dins tos les espåces di lomaedje eyet leu pådjes di copene)",
+'searchprofile-advanced-tooltip' => 'Tchoezixhoz les espåces di lomaedje ki vos vloz rwaitî pol cweraedje',
+'search-result-size' => '$1 ($2 mot{{PLURAL:$2||s}})',
+'search-result-category-size' => '$1 mimbe{{PLURAL:$1||s}} ($2 dizo-categoreye{{PLURAL:$2||s}}, $3 fitchî{{PLURAL:$3||s}})',
+'search-result-score' => 'Pertinance: $1%',
+'search-redirect' => '(redjiblé di $1)',
+'search-section' => '(seccion $1)',
+'search-suggest' => 'Sayîz motoit çoula: $1',
+'search-interwiki-caption' => 'So les ôtes pordjets frés',
 'search-interwiki-default' => 'Gn a des sfwaitès sacwès so $1 :',
 'search-interwiki-more' => '(dipus)',
+'searchall' => 'totafwait',
 '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'''.",
-'nonefound' => "'''Note''': des cweraedjes ki n' dinèt nou rzultat c' est sovint li cweraedje di ptits mots trop corants (come «les», «des») ki n' sont nén indecsés, oudonbén des cweraedjes di pus d' on mot (seulmint les pådjes avou tos les mots dmandés sront håynêyes dins l' rizultat do cweraedje).",
+'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',
+'search-external' => 'Difoûtrin cweraedje',
 'searchdisabled' => "Mande escuzes! Li cweraedje å dvins des årtikes a stî dismetou pol moumint, cåze ki l' sierveu est fortcherdjî. Tot ratindant, vos ploz eployî Google po fé les rcweraedjes so {{SITENAME}}, mins çoula pout esse ene miete vî.",
 
 # Quickbar
@@ -632,106 +862,248 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'qbsettings-fixedright' => 'Aclawêye a droete',
 'qbsettings-floatingleft' => 'Flotante a hintche',
 'qbsettings-floatingright' => 'Flotante a droete',
+'qbsettings-directionality' => "Aclawêye, sorlon l' sinse di scrijhaedje di vosse lingaedje",
 
 # Preferences page
 'preferences' => 'Preferinces',
 'mypreferences' => 'Mes preferinces',
 'prefs-edits' => 'Nombe di candjmints:',
 'prefsnologin' => "Vos n' estoz nén elodjî",
-'prefsnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] po pleur candjî vos preferinces.',
+'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',
 'datedefault' => 'Nole preferince',
 'prefs-datetime' => 'Cogne del date',
+'prefs-user-pages' => 'Pådjes des uzeus',
 'prefs-personal' => 'Dinêyes da vosse',
 'prefs-rc' => 'Håynaedje des dierins candjmints',
 'prefs-watchlist' => 'Djivêye des shuvous',
 'prefs-watchlist-days' => "Nombe di djoûs a mostrer dins l' djivêye:",
+'prefs-watchlist-days-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
 'prefs-watchlist-edits' => "Nombe di candjmints a mostrer dins l' djivêye:",
 'prefs-misc' => 'Totes sôres',
+'prefs-resetpass' => "Candjî l' sicret",
+'prefs-changeemail' => "Candjî l' emile",
+'prefs-setemail' => 'Diner ene adresse emile',
+'prefs-email' => "Tchuzes d' emilaedje",
+'prefs-rendering' => 'Rivnance',
 'saveprefs' => 'Schaper les preferinces',
 'resetprefs' => 'Rimete les prémetowès valixhances',
-'prefs-editing' => 'Grandeu del boesse di tecse',
+'restoreprefs' => 'Rimete totes les prémetowès valixhances',
+'prefs-editing' => 'Boesse di tecse',
 'rows' => 'Royes',
 'columns' => 'Colones',
 'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
 'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
 'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
-'recentchangescount' => 'Nombe di tites dins les dierins candjmints',
+'recentchangesdays-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
+'recentchangescount' => 'Prémetou nombe di candjmintstites a håyner:',
 'savedprefs' => 'Vos preferinces ont stî schapêyes.',
-'timezonelegend' => "Coisse d' eureye",
-'localtime' => "Håyner l' eure locåle",
-'timezoneoffset' => "Diferince d' eures¹",
-'servertime' => "L' eure sol sierveu",
+'timezonelegend' => "Coisse d' eureye:",
+'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',
+'timezoneregion-america' => 'Amerike',
+'timezoneregion-antarctica' => 'Antartike',
+'timezoneregion-arctic' => 'Arctike',
+'timezoneregion-asia' => 'Azeye',
+'timezoneregion-atlantic' => 'Oceyan Atlantike',
+'timezoneregion-australia' => 'Ostraleye',
+'timezoneregion-europe' => 'Urope',
+'timezoneregion-indian' => 'Oceyan Indyin',
+'timezoneregion-pacific' => 'Oceyan Pacifike',
 'allowemail' => "Permete di rçure des emiles d' ôtes uzeus",
-'defaultns' => 'Prémetous spåces di nos pol cweraedje:',
+'prefs-searchoptions' => 'Tchuzes di cweraedje',
+'prefs-namespaces' => 'Espåces di lomaedje',
+'defaultns' => 'Oudonbén dins les spåces di nos shuvants:',
 'default' => 'prémetou',
 'prefs-files' => 'Fitchîs',
-'youremail' => 'Vost emile*',
+'prefs-custom-css' => 'CSS a vosse môde',
+'prefs-custom-js' => 'JavaScript a vosse môde',
+'prefs-common-css-js' => 'CSS/JavaScript pårtaedjî po totes les peas:',
+'prefs-reset-intro' => "Vos ploz eployî ç' boton chal po rmete totes vos preferinces åzès prémetowès valixhances del waibe.
+Çoul n' pôrè nén esse disfwait.",
+'prefs-emailconfirm-label' => "Acertinaedje di l' emile:",
+'prefs-textboxsize' => 'Grandeu del boesse di tecse',
+'youremail' => 'Vost emile:',
 'username' => "No d' elodjaedje:",
 'uid' => "Limero d' l' uzeu:",
-'yourrealname' => 'Li vraiy no da vosse*',
+'prefs-memberingroups' => 'Mimbe {{PLURAL:$1|do groupe|des groupes}}:',
+'prefs-registration' => "Date d' edjîstraedje:",
+'yourrealname' => 'Li vraiy no da vosse:',
 'yourlanguage' => "Lingaedje po l' eterface",
-'yourvariant' => 'Variante do lingaedje',
-'yournick' => 'Vosse no metou (po les sinateures)',
-'badsig' => 'Sinateure brute nén valide; verifyîz les etiketes HTML.',
+'yourvariant' => 'Variante di lingaedje pol contnou:',
+'prefs-help-variant' => "Li variante ou ortografeye ki vos avoz ptchî po håyner li contnou des pådjes so ç' wiki ci.",
+'yournick' => 'Novele sinateure:',
+'prefs-help-signature' => "Les comintaires so les pådjes di copene divrént esse sinés avou «<nowiki>~~~~</nowiki>» (dj' ô bén, 4 wachletes), çou ki srè candjî otomaticmint a vosse sinateure eyet li date et l' eure.",
+'badsig' => 'Sinateure brute nén valide.
+Verifyîz les etiketes HTML.',
+'badsiglength' => "Vosse sinateure est pår trop longowe.
+Racourtixhoz l' a moens di $1 {{PLURAL:$1|caractere|caracteres}}.",
+'yourgender' => 'Seke:',
+'gender-unknown' => 'Nén dné',
+'gender-male' => 'Omrin',
+'gender-female' => 'Femrin',
+'prefs-help-gender' => "Seke (opcionel): eployî po-z acoirder l' djinre di sacwants messaedjes di l' eterface.
+Ciste infôrmacion serè publike po tertos.",
 'email' => 'Emile',
-'prefs-help-realname' => '* Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
-'prefs-help-email' => "* Emile (opcionel): Permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
+'prefs-help-realname' => 'Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
+'prefs-help-email' => "Emile (opcionel): permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
+'prefs-help-email-others' => "Vos ploz eto tchoezi k' les ôtes vos emilexhe a pårti d' on loyén sol pådje di copene da vosse. Voste adresse emile n' est nén veyowe cwand des ôtes uzeus vos scrijhèt.",
+'prefs-help-email-required' => 'I fåt dner ene adresse emile.',
+'prefs-info' => "Infôrmåcion d' båze",
+'prefs-i18n' => 'Eternåcionålijhaedje',
 'prefs-signature' => 'Sinateure',
 'prefs-dateformat' => 'Cogne del date',
+'prefs-timeoffset' => "Diferince d' eures",
+'prefs-advancedediting' => 'Sipepieuzès tchuzes',
+'prefs-advancedrc' => 'Sipepieuzès tchuzes',
+'prefs-advancedrendering' => 'Sipepieuzès tchuzes',
+'prefs-advancedsearchoptions' => 'Sipepieuzès tchuzes',
+'prefs-advancedwatchlist' => 'Sipepieuzès tchuzes',
+'prefs-displayrc' => 'Tchuzes di håynaedje',
+'prefs-displaysearchoptions' => 'Tchuzes di håynaedje',
+'prefs-displaywatchlist' => 'Tchuzes di håynaedje',
+'prefs-diffs' => 'Diferinces',
+
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => "L' adresse emile a l' air d' esse valide",
+'email-address-validity-invalid' => 'Dinez ene adresse emile valide',
 
 # User rights
 'userrights' => 'Manaedjî les liveas des uzeus',
-'userrights-lookup-user' => "Manaedjî les groupes d' èn uzeu",
+'userrights-lookup-user' => "Manaedjî les groupes d' uzeus",
 'userrights-user-editname' => "Tapez on no d' uzeu:",
-'editusergroup' => "Candjî les groupes di l' uzeu",
-'editinguser' => "Candjant '''[[User:$1|$1]]''' $2",
-'userrights-editusergroup' => "Candjî groupes d' uzeus",
-'saveusergroups' => "Schaper des groupes d' uzeus",
-'userrights-groupsmember' => 'Mimbes di:',
+'editusergroup' => "Candjî les groupes d' uzeus",
+'editinguser' => "Candjant les droets d' l' {{GENDER:$1|uzeu|uzeuse}} '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => "Candjî les groupes d' uzeus",
+'saveusergroups' => "Schaper les groupes d' uzeus",
+'userrights-groupsmember' => 'Mimbe di:',
+'userrights-groupsmember-auto' => 'Mimbe implicite di:',
+'userrights-groups-help' => "Vos ploz candjî les groupes ki {{GENDER:\$1|cist uzeu|ciste uzeuse}} apårtént:
+* Ene boesse clitcheye c' est k' {{GENDER:\$|il|elle}} est mimbe do groupe.
+* Ene boesse disclitcheye c' est k' {{GENDER:\$|i|ele}} n' end est nén mimbe.
+* Ene sitoele (*) mostere k' on n' pout nén rsaetchî l' groupe on côp k' il a stî radjouté, ou årvierdimint.",
 'userrights-reason' => 'Råjhon:',
+'userrights-no-interwiki' => "Vos n' avoz nén les permissions po candjî les droets des uzeus so ds ôtes wikis.",
+'userrights-nodatabase' => "Li båze di dnêyes «$1» n' egzistêye nén ou n' est nén locåle.",
+'userrights-nologin' => 'Vos vs divoz [[Special:UserLogin|elodjî]] avou on conte manaedjeu por vos pleur candjî les droets des uzeus.',
+'userrights-notallowed' => "Li conte da vosse n' pout nén radjouter ou rsaetchî des droets des uzeus.",
+'userrights-changeable-col' => 'Groupes ki vos ploz candjî',
+'userrights-unchangeable-col' => "Groupes ki vos n' poloz nén candjî",
 
 # Groups
 'group' => 'Groupe:',
+'group-user' => 'Uzeus',
+'group-autoconfirmed' => 'Uzeus edjîstrés',
 'group-bot' => 'Robots',
 'group-sysop' => 'Manaedjeus',
 'group-bureaucrat' => 'Mwaisse-manaedjeus',
+'group-suppress' => 'Supervizeus',
 'group-all' => '(tertos)',
 
-'group-bot-member' => 'robot',
-'group-sysop-member' => 'manaedjeu',
-'group-bureaucrat-member' => 'mwaisse-manaedjeu',
+'group-user-member' => '{{GENDER:$1|uzeu|uzeuse}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|uzeu edjîstré|uzeuse edjîstrêye}}',
+'group-bot-member' => '{{GENDER:$1|robot|robote}}',
+'group-sysop-member' => '{{GENDER:$1|manaedjeu|manaedjresse}}',
+'group-bureaucrat-member' => '{{GENDER:$1|mwaisse-manaedjeu|mwaisse-manaedjresse}}',
+'group-suppress-member' => '{{GENDER:$1|supervizeu|supervizeuse}}',
 
+'grouppage-user' => '{{ns:project}}:Uzeus',
+'grouppage-autoconfirmed' => '{{ns:project}}:Uzeus edjîstrés',
 'grouppage-bot' => '{{ns:project}}:Robots',
 'grouppage-sysop' => '{{ns:project}}:Manaedjeus',
 'grouppage-bureaucrat' => '{{ns:project}}:Mwaisse-manaedjeus',
+'grouppage-suppress' => '{{ns:project}}:Supervizeus',
 
 # Rights
 'right-read' => 'Lére les pådjes',
+'right-edit' => 'Candjî les pådjes',
+'right-createpage' => "Ahiver des pådjes (ki n' sont nén des pådjes di copene)",
+'right-createtalk' => 'Ahiver des pådjes di copinaedje',
+'right-createaccount' => "Ahiver des noveas contes d' uzeu",
+'right-minoredit' => 'Marker les candjmints come mineurs',
+'right-move' => 'Displaecî des pådjes',
+'right-move-subpages' => 'Displaecî des pådjes avou leus dzo-pådjes',
+'right-move-rootuserpages' => 'Displaecî les pådjes raecene des uzeus',
+'right-movefile' => 'Displaecî des fitchîs',
+'right-suppressredirect' => 'Èn nén fé di pådje di redjiblaedje dispoy li vî no cwand on displaece ene pådje',
+'right-upload' => 'Eberweter des fitchîs',
+'right-reupload' => "Sipotchî des fitchîs k' egzitèt ddja",
+'right-reupload-own' => 'Sipotchî les itchîs eberwetés pa vos-minme',
+'right-reupload-shared' => "Sipotchî locålmint des fitchî ki s' trovèt sol depot pårtaedjî",
+'right-upload_by_url' => "Eberweter des fitchîs a pårti d' hårdêyes",
+'right-purge' => "Vudî l' muchete des pådjes sins acertinaedje",
+'right-autoconfirmed' => 'Candjî les pådjes dimey-protedjeyes',
+'right-bot' => 'Esse traitî come on programe otomatike',
+'right-nominornewtalk' => "Èn nén dire k' i gn a des noveas messaedjes cwand les candjmints del pådje di copene d' èn uzeu sont mineurs",
+'right-writeapi' => "Eployî l' API di scrijhaedje sol wiki",
+'right-delete' => 'Disfacer des pådjes',
+'right-bigdelete' => 'Disfacer des pådjes avou ene longowe istwere',
+'right-deleterevision' => "Disfacer et rapexhî des modêyes d' ene pådje",
+'right-deletedhistory' => "Vey les disfacêyès intrêyes di l' istwere, sins leu tecse",
+'right-deletedtext' => 'Vey les tecses disfacés eyet les candjmints etur disfacêyès modêyes',
+'right-browsearchive' => 'Loukî après les disfacêyès pådjes',
+'right-undelete' => "Rapexhî ene pådje k' a stî disfacêye",
+'right-suppressrevision' => 'Verifyî et rapexhî les modêyes catcheyes åzès manaedjeus',
+'right-suppressionlog' => 'Vey les djournås privés',
+'right-block' => "Espaitchî d' ôtes uzeus di scrire",
+'right-blockemail' => "Espaitchî èn uzeu d' evoyî des emiles",
+'right-hideuser' => "Bloker on no d' uzeu, tot catchant s' no ås ôtes",
+'right-ipblock-exempt' => "Passer houte des blocaedjes pa adresse IP, pa fortchete d' adresses ou des blocaedjes otomatikes",
+'right-proxyunbannable' => 'Passer houte des blocaedjes otomatikes des procsis',
+'right-unblockself' => 'Si disbloker lu-minme',
+'right-protect' => "Candjî les liveas d' protedjaedje eyet candjî les pådjes protedjeyes",
 
 # User rights log
 'rightslog' => 'Djournå des droets des uzeus',
 'rightslogtext' => "Çouchal, c' est on djournå des candjmints des droets des uzeus.",
-'rightslogentry' => "l' uzeu «$1» a stî candjî do groupe «$2» viè «$3»",
+'rightslogentry' => "a candjî l' uzeu «$1» do groupe «$2» viè «$3»",
+'rightslogentry-autopromote' => 'a stî otomaticmint candjî di «$2» a «$3»',
 'rightsnone' => '(nouk)',
 
 # Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'lére cisse pådje ci',
+'action-edit' => "candjî l' pådje",
 'action-createpage' => 'ahiver des pådjes',
 'action-createtalk' => 'ahiver des pådjes di copinaedje',
 'action-createaccount' => "ahiver ci conte d' uzeu ci",
-'action-delete' => 'Disfacer cisse pådje ci',
-'action-browsearchive' => 'Loukî après les disfacêyès pådjes',
-'action-block' => 'Espaitchî cist(e) uzeu(se) ci di scrire',
+'action-minoredit' => "marker ç' candjmint la come mineur",
+'action-move' => 'displaecî cisse pådje ci',
+'action-move-subpages' => "displaecî l' pådje et ses dzo-pådjes",
+'action-move-rootuserpages' => "displaecî l' pådje raecene d' èn uzeu",
+'action-movefile' => "displaecî ç' fitchî ci",
+'action-upload' => "eberweter ç' fitchî ci",
+'action-reupload' => 'sipotchî ci fitchî ci',
+'action-reupload-shared' => "sipotchî l' pårtaedjî fitchî avou ci-chal",
+'action-upload_by_url' => "eberweter l' fitchî a pårti d' ene hårdêye",
+'action-writeapi' => "eployî l' API di scrijhaedje",
+'action-delete' => 'disfacer cisse pådje ci',
+'action-deleterevision' => 'disfacer cisse modêye ci',
+'action-deletedhistory' => "vey les disfacêyès intrêyes di l' istwere",
+'action-browsearchive' => 'loukî après les disfacêyès pådjes',
+'action-undelete' => "rapexhî l' pådje",
+'action-suppressrevision' => "verifyî et rapexhî l' modêye catcheye",
+'action-suppressionlog' => 'vey ci djournå privé ci',
+'action-block' => 'espaitchî cist(e) uzeu(se) ci di scrire',
+'action-protect' => "candjî les liveas d' protedjaedje del pådje",
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|candjmint|candjmints}}',
 'recentchanges' => 'Dierins candjmints',
-'recentchangestext' => "Shuvoz chal les dierins candjmints k' i gn a yeu dsu {{SITENAME}}.",
-'rcnote' => 'Chal pa dzo les <strong>$1</strong> dierins candjmints des dierins <strong>$2</strong> djoûs, å $3.',
-'rcnotefrom' => "Chal pa dzo les candjmints dispoy li <b>$2</b> (disk' a <b>$1</b> di mostrés).",
+'recentchanges-legend' => 'Tchuzes po les dierins candjmints',
+'recentchanges-summary' => "Shuvoz chal les dierins candjmints k' i gn a yeu dsu {{SITENAME}}.",
+'recentchanges-label-newpage' => "Ci candjmint la est èn ahivaedje d' ene nouve pådje",
+'recentchanges-label-minor' => "Ci n' est k' on ptit candjmint",
+'recentchanges-label-bot' => 'Ci candjmint la a stî fwait pa on robot',
+'recentchanges-label-unpatrolled' => "Ci candjmint la n' a nén co stî patrouyî",
+'rcnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|do dierin djoû|des '''$2''' dierins djoûs}}, disk' å $4 a $5.",
+'rcnotefrom' => "Chal pa dzo les candjmints dispoy li '''$2''' (disk' a '''$1''' di mostrés).",
 'rclistfrom' => "Mostrer les candjmints k' i gn a yeu a pårti do $1",
 'rcshowhideminor' => '$1 candjmints mineurs',
 'rcshowhidebots' => '$1 robots',
@@ -742,17 +1114,28 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'rclinks' => 'Mostrer les $1 dierins candjmints des dierins $2 djoûs.<br />$3',
 'diff' => 'dif.',
 'hist' => 'ist.',
-'hide' => 'Muchyî',
-'show' => 'håyner',
+'hide' => 'catch.',
+'show' => 'håy.',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[shuvou pa $1 {{PLURAL:$1|uzeu|uzeus}}]',
 'rc_categories' => 'Limiter åzès categoreyes (separer avou des «|»)',
 'rc_categories_any' => 'Totes',
+'rc-change-size-new' => "$1 {{PLURAL:$1|octet|octets}} après l' candjmint",
 'newsectionsummary' => '/* $1 */ novele seccion',
+'rc-enhanced-expand' => 'Mostrer les detays (i fåt JavaScript)',
+'rc-enhanced-hide' => 'Catchî les detays',
 
 # Recent changes linked
 'recentchangeslinked' => 'Candjmints aloyîs',
 'recentchangeslinked-feed' => 'Candjmints aloyîs',
 'recentchangeslinked-toolbox' => 'Candjmints aloyîs',
+'recentchangeslinked-title' => 'Candjmints aloyîs a «$1»',
+'recentchangeslinked-summary' => "Çouchal c' est ene djivêye des candjmints k' ont stî fwaits dierinnmint a des pådjes aloyeyes a pårti d' ene pådje dinêye (ou mimbes d' ene categoreye dinêye).
+Les pådjes ki [[Special:Watchlist|vos shuvoz]] sont-st e '''cråssès letes'''.",
+'recentchangeslinked-page' => 'No del pådje:',
+'recentchangeslinked-to' => "Mostere les candjmints des pådjes avou on loyén viè l' pådje dinêye purade k' å rviè",
 
 # Upload
 'upload' => 'Eberweter on fitchî',
@@ -762,18 +1145,18 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'uploadnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] por vos pleur eberweter des fitchîs.',
 'upload_directory_read_only' => "Li sierveu waibe èn pout nén scrire sol ridant d' eberwetaedje ($1).",
 'uploaderror' => "Aroke d' eberwetaedje",
-'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des noveas fitchîs d' imådjes po vos årtikes. Sol plupårt des betchteus, vos voeroz on boton «Foyter...» (ou «Browse...») ki vs permetrè di foyter dins les ridants del deure plake da vosse po tchoezi l' fitchî, çou ki rimplirè otomaticmint li tchamp do no do fitchî k' est a costé.
-
-Po håyner ou cweri des imådjes k' ont ddja stî rçuvowes, alez sol [[Special:FileList|djivêye des imådjes dedja eberwetêyes]]. Les eberwetaedjes et disfaçaedjes sont metous èn on [[Special:Log/upload|djournå des eberwetaedjes]].
-
-Po håyner l' imådje dins èn årtike, eployîz on loyén del foûme
-* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.jpg]]</nowiki>'''
-* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.png|thumb|tecse a mete padzo]]</nowiki>'''
-ou co po les sons
-* '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fitchî.ogg]]</nowiki>'''",
+'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des fitchîs.
+Po håyner ou cweri des fitchîs k' ont ddja stî rçuvous, alez sol [[Special:FileList|djivêye des fitchîs ddja eberwetés]].
+Les (r)eberwetaedjes sont eto metos sol [[Special:Log/upload|djournå des eberwetaedjes]], les disfaçaedjes sol [[Special:Log/delete|ci des disfaçaedjes]].
+
+Po mete on fitchî dins ene pådje, eployîz on loyén del fôme:
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.jpg]]</nowiki></tt>''' po-z eployî l' modêye e grandeu oridjinnåle do fitchî
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.png|200px|thumb|left|tecse di rawete]]</nowiki></tt>''' po håyner so ene lårdjeur di 200 picsels dins ene boesse (''thumb'') sol hintche (''left''; metoz ''right'' pol mete sol droete) avou «tecse di rawete» come discrijhaedje
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fitchî.ogg]]</nowiki></tt>''' po fé on loyén viè l' fitchî, sins l' håyner",
 'uploadlog' => 'djournå des eberwetaedjes',
 'uploadlogpage' => 'Djournå des eberwetaedjes',
-'uploadlogpagetext' => 'Chal pa dzo li djivêye des dierins eberwetaedjes.',
+'uploadlogpagetext' => 'Chal pa dzo li djivêye des dierins eberwetaedjes.
+Loukîz al [[Special:NewFiles|galreye des noveas fitchîs]] po ene vuwe pus vizuwele.',
 'filename' => 'No do fitchî',
 'filedesc' => 'Discrijhaedje',
 'fileuploadsummary' => 'Discrijhaedje:',
@@ -788,13 +1171,17 @@ ou co po les sons
 'emptyfile' => "I shonnreut kel fitchî k' vos eberwetez soeye vude. Çoula pout esse cåze d' ene aroke di tapaedje dins l' no do fitchî. Acertinez si vos vloz evoyî po do bon ç' fitchî ci, s' i vs plait.",
 'fileexists' => "On fitchî avou ç' no la egzistêye dedja, loukîz s' i vs plait a '''<tt>[[:$1]]</tt>''' po vs acertiner ki vos vloz bén replaecî l' fitchî avou l' ci ki vos eberwetez asteure, oubén si vos l' voloz eberweter dizo èn ôte no.
 [[$1|thumb]]",
-'fileexists-forbidden' => "I gn a ddja on fitchî avou ç' no la; rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no. [[File:$1|thumb|center|$1]]",
-'fileexists-shared-forbidden' => "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs; rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no. [[File:$1|thumb|center|$1]]",
+'fileexists-forbidden' => "I gn a ddja on fitchî avou ç' no la, et n' pout nén esse sipotchî.
+Si vos l' voloz tot l' minme eberweter, rivnoz en erî et s' reberwetez l' fitchî dizo èn ôte no.
+[[File:$1|thumb|center|$1]]",
+'fileexists-shared-forbidden' => "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs.
+Rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos vloz.
+[[File:$1|thumb|center|$1]]",
 'uploadwarning' => "Adviertixhmint so l' eberwetaedje",
 'savefile' => "Schaper l' fitchî",
 'uploadedimage' => 'eberwetaedje di «[[$1]]»',
 'uploaddisabled' => 'Eberwetaedje di fitchîs dismetou',
-'uploaddisabledtext' => "Mande escuzes, mins l' eberwetaedje di fitchîs a stî dismetou pol moumint.",
+'uploaddisabledtext' => "L' eberwetaedje di fitchîs a stî dismetou.",
 'uploadscripted' => 'Ci fitchî ci a-st å dvins do côde HTML ou on scripe ki pôreut esse må comprin pa on betchteu waibe.',
 'uploadvirus' => 'Li fitchî a-st on virusse! Detays: $1',
 'sourcefilename' => "No d' fitchî so vosse copiutrece:",
@@ -804,7 +1191,7 @@ ou co po les sons
 
 'upload-file-error' => 'Divintrinne aroke',
 
-'license' => "Licince di l' imådje",
+'license' => 'Licince:',
 'nolicense' => 'Nole licince tchoezeye',
 'upload_source_file' => ' (on fitchî sol copiutrece da vosse)',
 
@@ -812,39 +1199,55 @@ ou co po les sons
 'listfiles_search_for' => "Cweri l' no d' imådje:",
 'imgfile' => 'fitchî',
 'listfiles' => 'Djivêye des imådjes',
+'listfiles_thumb' => 'Imådjete',
+'listfiles_date' => 'Date',
 'listfiles_name' => 'No',
 'listfiles_user' => 'Uzeu',
 'listfiles_size' => 'Grandeu',
 'listfiles_description' => 'Discrijhaedje',
+'listfiles_count' => 'Modêyes',
 
 # File description page
-'file-anchor-link' => 'Imådje',
+'file-anchor-link' => 'Fitchî',
 'filehist' => 'Istwere do fitchî',
 'filehist-help' => "Clitchîz so ene date ey ene eure po vey kimint ki l' fitchî esteut adon.",
 'filehist-deleteall' => 'disfacer ttafwait',
-'filehist-deleteone' => 'disfacer çouci',
+'filehist-deleteone' => 'disfacer',
+'filehist-revert' => 'disfé',
 'filehist-current' => 'asteure',
 'filehist-datetime' => 'Date/Eure',
+'filehist-thumb' => 'Imådjete',
+'filehist-thumbtext' => 'Imådjete pol modêye do $1',
+'filehist-nothumb' => 'Nole imådjete',
 'filehist-user' => 'Uzeu',
 'filehist-dimensions' => 'Grandeur',
 'filehist-filesize' => 'Grandeur do fitchî',
 'filehist-comment' => 'Comintaire',
-'imagelinks' => 'Loyéns viè ciste imådje cial',
-'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante|Les pådjes shuvantes}} eployèt ciste imådje chal:',
+'filehist-missing' => 'Fitchî mancant',
+'imagelinks' => 'Eployaedjes do fitchî',
+'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante eploye|Les $1 pådjes shuvantes eployèt}} ciste imådje chal:',
 'nolinkstoimage' => "I n' a nole pådje k' eploye ciste imådje chal.",
-'sharedupload' => "Ci fitchî ci est so on ridant pårtaedjî ey i s' pout k' i soeye eployî pa ds ôtes pordjets.",
-'sharedupload-desc-there' => 'Ci fitchî ci provént di $1; si pout i esse reployî dins des ôtes pordjets "Wiki". Loukîz [$2 si pådje di discrijhaedje] po-z esse mî racsegnî.',
-'sharedupload-desc-here' => 'Ci fitchî ci provént di $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pådje di discrijhaedje] låvå est håynêye cial ådzo.',
+'sharedupload' => "Ci fitchî ci vént d' $1 ey i s' pout k' i soeye eployî pa ds ôtes pordjets.",
+'sharedupload-desc-there' => "Ci fitchî ci provént d' $1; si pout i esse reployî dins des ôtes pordjets. Loukîz [$2 si pådje di discrijhaedje] po-z esse mî racsegnî.",
+'sharedupload-desc-here' => "Ci fitchî ci provént d' $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pådje di discrijhaedje] låvå est håynêye cial ådzo.",
 'uploadnewversion-linktext' => 'Eberweter ene nouve modêye di ci fitchî ci',
+'shared-repo-from' => "vént d' $1",
+'shared-repo' => 'on depot pårtaedjî',
 
 # File reversion
+'filerevert' => 'Rimete come divant $1',
 'filerevert-comment' => 'Råjhon:',
+'filerevert-submit' => 'Disfé',
 
 # File deletion
 'filedelete' => 'Disfacer $1',
 'filedelete-legend' => 'Disfacer fitchî',
 'filedelete-comment' => 'Råjhon:',
 'filedelete-submit' => 'Disfacer',
+'filedelete-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'filedelete-reason-dropdown' => '*Råjhons po disfacer (å pus sovint)
+** Nén respet des abondroets
+** Fitchî e dobe',
 
 # MIME search
 'mimesearch' => 'Cweraedje MIME',
@@ -859,7 +1262,8 @@ ou co po les sons
 
 # Unused templates
 'unusedtemplates' => 'Modeles nén eployîs',
-'unusedtemplatestext' => "Cisse pådje ci mostere totes les pådjes di modele (espåce di lomaedje «{{ns:template}}») ki n' sont nén eployîs dins ene ôte pådje. Rimimbrez vs di verifyî s' i n' a nén des ôtes loyéns divant delzès disfacer.",
+'unusedtemplatestext' => "Cisse pådje ci mostere totes les pådjes di modele (espåce di lomaedje «{{ns:template}}») ki n' sont nén eployîs dins ene ôte pådje.
+Rimimbrez vs di verifyî s' i n' a nén des ôtes loyéns divant delzès disfacer.",
 'unusedtemplateswlh' => 'ôtes loyéns',
 
 # Random page
@@ -871,20 +1275,36 @@ ou co po les sons
 # Statistics
 'statistics' => 'Sitatistikes',
 'statistics-header-users' => 'Sitatistikes des uzeus',
+'statistics-articles' => 'Pådjes di contnou',
 'statistics-pages-desc' => 'Totes les pådjes do "Wiki", minme les copinaedjes, les rdjiblaedjes, evnd.',
 'statistics-mostpopular' => 'Pådjes les pus veyowes',
 
-'disambiguations' => "Pådjes d' omonimeye",
-'disambiguationspage' => 'Template:Omonimeye',
+'disambiguations' => "Pådjes avou des loyéns viè des pådjes d' omonimeye",
+'disambiguationspage' => 'Template:omonimeye',
+'disambiguations-text' => "Ces pådjes ci loynut eviè ene '''pådje d' omonimeye'''.
+Ele divrént purade raloyî direk å mwaisse sudjet.<br />
+Ene pådje est waiteye come pådje d' omonimeye s' ele eploye on modele k' est loyî a [[MediaWiki:Disambiguationspage]].",
 
 'doubleredirects' => 'Dobes redjiblaedjes',
-'doubleredirectstext' => "Tchaeke roye a-st on loyén viè l' prumî eyet l' deujhinme redjiblaedje, avou on mostraedje del prumire roye do tecse do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l' prumî redjiblaedje divreut evoyî viè lu.",
+'doubleredirectstext' => "Cisse pådje ci mostere les dobes redjiblaedjes (pådjes ki redjiblèt viè ene ôte pådje di redjiblaedje).
+Tchaeke roye a-st on loyén viè l' prumî eyet l' deujhinme redjiblaedje, avou on mostraedje del såme do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l' prumî redjiblaedje divreut evoyî viè lu.
+Lis intrêyes <del>bårêyes</del> otn ddja stî coridjeyes.",
+'double-redirect-fixed-move' => "[[$1]] a stî displaecî.
+Asteure c' est on redjiblaedje viè [[$2]].",
+'double-redirect-fixer' => 'Coridjaedje des dobes redjiblaedjes',
 
 'brokenredirects' => 'Pierdous redjiblaedjes',
-'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén.",
+'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén:",
 'brokenredirects-edit' => 'candjî',
 'brokenredirects-delete' => 'disfacer',
 
+'withoutinterwiki' => 'Pådjes sins loyéns eterwiki',
+'withoutinterwiki-summary' => "Les pådjes shuvantes n' ont nén des loyéns viè ds ôtes lingaedjes.",
+'withoutinterwiki-legend' => 'Betchete',
+'withoutinterwiki-submit' => 'Vey',
+
+'fewestrevisions' => "Årtikes k' on n' î a waire bodjî",
+
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|octet|octets}}',
 'ncategories' => '$1 {{PLURAL:$1|categoreye|categoreyes}}',
@@ -892,17 +1312,21 @@ ou co po les sons
 'nmembers' => '$1 {{PLURAL:$1|mimbe|mimbes}}',
 'nrevisions' => '$1 {{PLURAL:$1|modêye|modêyes}}',
 'nviews' => 'léjhowe $1 {{PLURAL:$1|côp|côps}}',
+'nimagelinks' => 'Eployî so $1 pådje{{PLURAL:$1||s}}',
+'ntransclusions' => 'eployî so $1 pådje{{PLURAL:$1||s}}',
 'specialpage-empty' => 'Cisse pådje cial est vude.',
 'lonelypages' => 'Pådjes ôrfulinnes',
 'uncategorizedpages' => 'Pådjes sins nole categoreye',
 'uncategorizedcategories' => 'Categoreyes nén categorijheyes',
-'uncategorizedimages' => 'Imådjes nén categorijheyes',
+'uncategorizedimages' => 'Fitchîs nén categorijhîs',
 'uncategorizedtemplates' => 'Modele nén categorijhî',
 'unusedcategories' => 'Categoreyes nén eployeyes',
 'unusedimages' => 'Imådjes nén eployeyes',
 'popularpages' => 'Pådjes les pus léjhowes',
 'wantedcategories' => 'Categoreyes les pus rcwerowes',
 'wantedpages' => 'Pådjes les pus rcwerowes',
+'wantedfiles' => 'Fitchîs les pus rcwerous',
+'wantedtemplates' => 'Modeles ricwerous',
 'mostlinked' => 'Pådjes les pus loyeyes',
 'mostlinkedcategories' => 'Categoreyes les pus loyeyes',
 'mostlinkedtemplates' => 'Modeles les pus eployîs',
@@ -913,33 +1337,50 @@ ou co po les sons
 'shortpages' => 'Coûtès pådjes',
 'longpages' => 'Longowès pådjes',
 'deadendpages' => 'Pådjes sins nou loyén wiki',
+'deadendpagestext' => "Les pådjes shuvantes n' ont nou loyén viè ds ôtès pådjes di {{SITENAME}}.",
 '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}}',
+'usercreated' => '{{GENDER:$3|Edjîstré|Edjîstrêye}} li $1 a $2',
 'newpages' => 'Novelès pådjes',
+'newpages-username' => "No d' elodjaedje:",
 'ancientpages' => 'Viyès pådjes',
 'move' => 'Displaecî',
 'movethispage' => 'Displaecî cisse pådje',
-'unusedimagestext' => "Notez tot l' minme ki d' ôtès waibes polèt aveur des loyéns viè ces imådjes la gråcès a ene direke hårdêye. Do côp, ces imådjes aparexhèt chal, mågré k' ele soeyexhe eployeyes.",
+'unusedimagestext' => "Les fitchîs shuvants egzistèt mins n' sont håynés dins nole pādje.
+Notez tot l' minme ki d' ôtès waibes polèt aveur des loyéns viè ces imådjes la gråcès a ene direke hårdêye; do côp, ces imådjes aparexhèt chal, mågré k' ele soeyexhe eployeyes.",
 'unusedcategoriestext' => "Les pådjes di categoreye shuvantes egzistént, mins i n' a nol årtike ni categoreye å dvins.",
-'pager-newer-n' => '{{PLURAL:$1|pus novea 1|pus noveas $1}}',
-'pager-older-n' => '{{PLURAL:$1|pus vî 1|pus vîs $1}}',
+'pager-newer-n' => '{{PLURAL:$1|$1 pus novea|$1 pus noveas}}',
+'pager-older-n' => '{{PLURAL:$1|$1 pus vî|$1 pus vîs}}',
 
 # Book sources
 'booksources' => 'Sourdants po les lives',
+'booksources-search-legend' => 'Cweri des sourdants po des lives',
+'booksources-go' => 'I va',
 
 # Special:Log
-'specialloguserlabel' => 'Uzeu:',
-'speciallogtitlelabel' => 'Tite:',
+'specialloguserlabel' => 'Fwait pa:',
+'speciallogtitlelabel' => 'Såme (tite ou uzeu):',
 'log' => 'Djournås',
-'alllogstext' => "Håynaedje etercroejhlé des djournås d' eberwetaedje, disfaçaedje, protedjaedje, blocaedje eyet manaedjeus.
-Vos ploz limiter l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' uzeu, ou l' tite d' ene pådje.",
+'all-logs-page' => 'Tos les djournås publiks',
+'alllogstext' => "Håynaedje etercroejhlé di tos les djournås disponibes so {{SITENAME}}.<br />
+Vos ploz defini l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' uzeu, ou l' tite d' ene pådje (po ces deus dierins l' sitinme fwait l' diferince inte les grandes et les ptitès letes).",
 'logempty' => "Rén n' corespond dins l' djournå.",
+'log-title-wildcard' => "Cweri emey les tites ki cmincèt avou ç' tecse la",
 
 # Special:AllPages
 'allpages' => 'Totes les pådjes',
 'alphaindexline' => 'di $1 a $2',
 'nextpage' => 'Pådje shuvante ($1)',
 'allpagesfrom' => 'Håyner les pådjes a pårti di:',
+'allpagesto' => "Håyner les pådjes disk' a:",
 'allarticles' => 'Tos les årtikes',
 'allinnamespace' => 'Totes les pådjes (espåce di lomaedje $1)',
 'allnotinnamespace' => "Totes les pådjes (foû d' l' espåce di lomaedje $1)",
@@ -951,41 +1392,69 @@ Vos ploz limiter l' håynaedje tot tchoezixhant ene sôre di djournå, on no d'
 
 # Special:Categories
 'categories' => 'Categoreyes',
-'categoriespagetext' => 'I gn a les categoreyes shuvantes sol wiki.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].',
+'categoriespagetext' => '{{PLURAL:$1|Li categoreye shuvante est eployeye|Les categoreyes shuvantes sont-st eployeyes}} pa des pådjes ou des fitchîs.
+[[Special:UnusedCategories|Les categoreyes nén eployeyes]] èn sont nén håynêyes chal.
+Loukîz eto [[Special:WantedCategories|les categoreyes dimandêyes]].',
+'categoriesfrom' => 'Håyner les categoreyes a pårti di:',
+'special-categories-sort-count' => 'relére pa nombe di cayets',
+'special-categories-sort-abc' => 'relére alfabeticmint',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Contribouwaedjes disfacés',
+'deletedcontributions-title' => 'Contribouwaedjes disfacés',
+'sp-deletedcontributions-contribs' => 'contribouwaedjes',
+
+# Special:LinkSearch
+'linksearch' => 'Cweri des dfoûtrinnès hårdêyes',
+'linksearch-pat' => 'Patron pol cweraedje:',
+'linksearch-ns' => 'Espåce di lomaedje:',
+'linksearch-ok' => 'Cweri',
+'linksearch-text' => 'Des caracteres «djokers» polèt esse eployîs, metans «*.wikipedia.org».
+Mins i fåt pol moens on dominne di prumî livea, metans «*.org»<br />
+Protocoles ricnoxhous: <tt>$1</tt> (nelzès metoz nén dins vosse tchinne di cweraedje).',
+'linksearch-line' => "$1 est loyî a pårti d' $2",
+'linksearch-error' => "Les caracteres djokers èn polèt esse eployîs k' a l' atake d' on no d' dominne ou d' lodjoe.",
+
+# Special:ListUsers
+'listusersfrom' => 'Håyner les uzeus a pårti di:',
+'listusers-submit' => 'Vey',
+'listusers-noresult' => 'Nol uzeu di trové.',
+'listusers-blocked' => '({{GENDER:$1|bloké|blokêye}})',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Djournå des noveas uzeus',
 'newuserlogpagetext' => "Chal pa dzo c' est ene djivêye des uzeus novelmint eredjîstrés.",
 
+# Special:ListGroupRights
+'listgrouprights-members' => '(djivêye des mimbes)',
+
 # E-mail user
 'mailnologin' => "Nole adresse d' evoyeu",
 'mailnologintext' => "Po-z evoyî èn emile a èn ôte uzeu i vs fåt esse [[Special:UserLogin|elodjî]] eyet aveur ene adresse emile d' evoyeu ki soeye valide dins vos [[Special:Preferences|preferinces]].",
 'emailuser' => "Emiler a l' uzeu",
 'emailpage' => 'Emilaedje a èn uzeu',
-'emailpagetext' => "Si cist uzeu chal a dné ene adresse emile valide dins
-ses preferinces, vos lyi ploz evoyî èn emile a pårti di cisse pådje chal.
-L' adresse emile k' i gn a dins vos preferinces serè-st eployeye
+'emailpagetext' => "Vos ploz eployî l' formulrece chal pa dzo po-z evoyî èn emile a l' uzeu.
+L' adresse emile k' i gn a dins [[Special:Preferences|vos preferinces]] serè-st eployeye
 come adresse di l' evoyeu (adresse «From:» di l' emile),
 po ki l' riçuveu poye risponde.",
 'usermailererror' => "Åk n' a nén stî tot voyant l' emile:",
-'defemailsubject' => 'Emile da {{SITENAME}}',
+'defemailsubject' => "Emile da l' uzeu «$1» so {{SITENAME}}",
 'noemailtitle' => "Pont d' adresse emile",
-'noemailtext' => "Cist uzeu chal n' a nén dné d' adresse emile
-valide, ou n' vout nén rçure des emiles des ôtes uzeus.
-Do côp, c' est nén possibe di lyi evoyî èn emile.",
-'emailfrom' => 'Di',
+'noemailtext' => "Cist uzeu chal n' a nén dné d' adresse emile valide.",
+'emailfrom' => 'Di:',
 'emailto' => 'Po:',
-'emailsubject' => 'Sudjet',
-'emailmessage' => 'Messaedje',
+'emailsubject' => 'Sudjet:',
+'emailmessage' => 'Messaedje:',
 'emailsend' => 'Evoyî',
+'emailccme' => "M' emiler ene copeye do messaedje",
+'emailccsubject' => 'Copeyee di vosse messaedje a $1: $2',
 'emailsent' => 'Emile evoyî',
 'emailsenttext' => 'Vost emilaedje a stî evoyî comifåt.',
 
 # Watchlist
 'watchlist' => 'Pådjes shuvowes',
 'mywatchlist' => 'Pådjes shuvowes',
+'watchlistfor2' => 'Pa $1 ($2)',
 'nowatchlist' => 'Vosse djivêye des pådjes a shuve est vude.',
 'watchlistanontext' => 'I vs fåt $1 po vey ou candjî les cayets di vosse djivêye des shuvous.',
 'watchnologin' => "Vos n' estoz nén elodjî",
@@ -1003,15 +1472,16 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 'unwatchthispage' => 'Èn pus shuve li pådje',
 'notanarticle' => 'Nén èn årtike',
 'watchnochange' => "Nole des pådjes di vosse djivêye di pådjes a shuve n' a stî candjeye dins l' termene di tins dmandêye.",
-'watchlist-details' => '{{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).',
+'watchlist-details' => 'Vos avoz {{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).',
 'wlheader-enotif' => '* Li notifiaedje pa emile est en alaedje.',
 'wlheader-showupdated' => "* Les pådjes k' ont candjî dispoy vosse dierinne vizite sont metowes e '''cråssès letes'''",
 'watchmethod-recent' => "Cwerant après les pådjes k' ont stî candjeyes dierinnmint ki sont eto des pådjes shuvowes",
 'watchmethod-list' => "Cwerant après les pådjes shuvowes k' ont stî candjeyes dierinnmint",
 'watchlistcontains' => 'I gn a {{PLURAL:$1|$1 pådje|$1 pådjes}} e vosse djivêye des pådjes a shuve.',
 'iteminvalidname' => "Åk n' a nén stî avou «$1», li no n' est nén valide...",
-'wlnote' => 'Chal pa dzo les $1 dierins candjmints des <b>$2</b> dierinnès eures.',
-'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs $3',
+'wlnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' å $3 a $4.",
+'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs ou $3',
+'watchlist-options' => 'Tchuzes del djivêye des shuvous',
 
 'enotif_mailer' => 'Notifiaedje pa emile di {{SITENAME}}',
 'enotif_reset' => 'Mårker totes les pådjes come vizitêyes',
@@ -1022,7 +1492,8 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 'enotif_lastvisited' => 'Loukîz $1 po tos les candjmints dispoy vosse dierinne vizite.',
 'enotif_body' => 'Binamé $WATCHINGUSERNAME,
 
-Li pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED li $PAGEEDITDATE pa $PAGEEDITOR, loukîz $PAGETITLE_URL pol modêye do moumint.
+Li pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED li $PAGEEDITDATE pa $PAGEEDITOR,
+loukîz $PAGETITLE_URL pol modêye do moumint.
 
 $NEWPAGE
 
@@ -1032,17 +1503,24 @@ Contak do candjeu:
 emile: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme pådje ci tant k\' vos n\' l\' åroz nén vizitêye. Vos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.
+I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme pådje ci tant k\' vos n\' l\' åroz nén vizitêye.
+Vos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.
 
 
-         Vosse binamé sistinme di notifiaedje so {{SITENAME}}
+Vosse binamé sistinme di notifiaedje so {{SITENAME}}
 
 --
+Po candjî l\' apontiaedje di vos notifiaedjes pa emile, loukîz
+{{canonicalurl:{{#special:Preferences}}}}
+
 Po candjî l\' apontiaedje di vosse djivêye a shuve, loukîz
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
+Po rsaetchî l\' pådje di vosse djivêye a shuve, alez so
+$UNWATCHURL
+
 Po pus d\' aidance:
-{{canonicalurl:{{ns:help}}:Aidance}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
 'deletepage' => "Disfacer l' pådje",
@@ -1051,13 +1529,15 @@ Po pus d\' aidance:
 'excontentauthor' => "li contnou esteut: «$1» (eyet l' seu contribouweu esteut «$2»)",
 'exbeforeblank' => "li contnou dvant l' disfaçaedje esteut: «$1»",
 'exblank' => 'li pådje esteut vude',
-'historywarning' => 'Asteme: Li pådje ki vos alez disfacer a-st ene istwere:',
-'confirmdeletetext' => "Vos alez disfacer po tofer del båze di dnêyes ene
-pådje ou ene imådje, avou tote si istwere.
+'delete-confirm' => 'Disfacer «$1»',
+'delete-legend' => 'Disfacer',
+'historywarning' => "'''Asteme:''' Li pådje ki vos alez disfacer a-st ene istwere avou a pô près $1 modêye{{PLURAL:$1||s}}:",
+'confirmdeletetext' => "Vos alez disfacer ene pådje avou tote si istwere.
 Acertinez s' i vs plait ki c' est bén çoula ki vos vloz fé,
 ki vos comprindoz les consecwinces, et ki vos fjhoz çoula
 tot [[{{MediaWiki:Policy-url}}|shuvant les rîles]].",
 'actioncomplete' => 'Fwait',
+'actionfailed' => "L' accion a fwait berwete",
 'deletedtext' => 'Li pådje «$1» a stî disfacêye. Loukîz li $2 po ene
 djivêye des dierins disfaçaedjes.',
 'dellogpage' => 'Djournå des disfaçaedjes',
@@ -1065,54 +1545,98 @@ djivêye des dierins disfaçaedjes.',
 'deletionlog' => 'djournå des disfaçaedjes',
 'reverted' => 'Rimetou ene modêye di dvant',
 'deletecomment' => 'Råjhon:',
+'deleteotherreason' => 'Ene råjhon diferinne ou di pus:',
+'deletereasonotherlist' => 'Ôte råjhon',
+'deletereason-dropdown' => "* Råjhons les pus corantes po disfacer
+** Dimande di l' oteur
+** Violåcion d' abondroets
+** Vandalisse",
+'delete-edit-reasonlist' => 'Candjî les råjhons do disfaçaedje',
+'delete-toobig' => "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.
+Li disfaçaedje des sfwaitès pådjes a stî dismetou po-z espaitchî k' i gn åye des problinmes so {{SITENAME}}.",
+'delete-warning-toobig' => "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.
+Si disfaçaedje pôreut fé des problinmes avou l' rotaedje del båze di dnêyes so {{SITENAME}}; 
+nel fijhoz k' avou asteme.",
 
 # Rollback
+'rollbacklink' => 'netyî',
 'cantrollback' => "Dji n' sai disfé les candjmints; li dierin contribouweu est li seu oteur po cist årtike ci.",
 'alreadyrolled' => "Dji n' sai disfé li dierin candjmint di [[$1]] fwait pa [[User:$2|$2]] ([[User talk:$2|Copene]]);
 ene sakî d' ôte a ddja candjî l' årtike ou ddja rmetou l' modêye di dvant.
 
 Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
-'editcomment' => "Li comintaire do candjmint esteut: «''$1''».",
-'revertpage' => 'Disfwait li candjmint da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]',
+'editcomment' => "Li rascourti do candjmint esteut: «''$1''».",
+'revertpage' => 'Disfwait les candjmints da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]',
 
 # Protect
 'protectlogpage' => 'Djournå des protedjaedjes',
-'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.",
+'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.
+Loukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey les protedjaedjes ki sont en alaedje pol moumint.",
 'protectedarticle' => '«[[$1]]» protedjî',
-'unprotectedarticle' => '«[[$1]]» disprotedjî',
+'modifiedarticleprotection' => "a candjî l' livea d' protedjaedje di «[[$1]]»",
+'unprotectedarticle' => 'a disprotedjî «[[$1]]»',
+'movedarticleprotection' => 'a displaecî les parametes di protedjaedje di «[[$1]]» eviè «[[$2]]»',
 'protect-title' => 'Protedjant «$1»',
+'protect-title-notallowed' => "Livea d' protedjaedje di «$1»",
 'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
+'protect-badnamespace-title' => 'Espåce di lomaedjé nén protedjåve',
+'protect-badnamespace-text' => "Les pådjes e cist espåce di lomaedje ci n' polèt nén esse protedjeyes.",
 'protect-legend' => "Acertinez l' protedjaedje",
 'protectcomment' => 'Råjhon:',
+'protectexpiry' => 'Termene:',
+'protect-unchain-permissions' => "Disclawer d' ôtès tchuzes di protedjaedje",
 'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''$1'''.",
-'protect-default' => '(prémetou)',
-'protect-level-autoconfirmed' => 'Bloker les uzeus nén eredjîstrés',
+'protect-default' => 'Permete a tos les uzeus',
+'protect-level-autoconfirmed' => 'Bloker les noveas uzeus et les cis nén edjîstrés',
 'protect-level-sysop' => 'Seulmint les manaedjeus',
-'protect-expiry-options' => '2 eures:2 hours,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'protect-summary-cascade' => 'e cascåde',
+'protect-expiring' => 'finixh li $1 (UTC)',
+'protect-expiring-local' => 'finixh li $1',
+'protect-expiry-indefinite' => 'po todi',
+'protect-cascade' => 'Protedjî eto les modeles eployîs so cisse pådje ci (protedjaedje e cascåde)',
+'protect-othertime' => 'Date di fén:',
+'protect-othertime-op' => 'ôte (a vos del diner)',
+'protect-existing-expiry' => 'Li protedjaedje finixh li $2 a $3',
+'protect-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'protect-otherreason-op' => 'Ôte råjhon',
+'protect-expiry-options' => '1 eure:1 hour,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'restriction-type' => 'Permission po:',
+'restriction-level' => "Livea d' protedjaedje:",
+'minimum-size' => 'Grandeu minimom',
+'maximum-size' => 'Grandeu macsimom:',
 'pagesize' => '(octets)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Candjî',
-'restriction-move' => 'Displaecî',
+'restriction-edit' => 'candjî',
+'restriction-move' => 'displaecî',
+'restriction-create' => 'ahiver',
+'restriction-upload' => 'eberweter',
+
+# Restriction levels
+'restriction-level-sysop' => 'protedjaedje complet',
+'restriction-level-autoconfirmed' => 'dimey-protedjaedje',
+'restriction-level-all' => 'tos les liveas',
 
 # Undelete
 'undelete' => 'Rapexhî des disfacêyès pådjes',
 'undeletepage' => 'Vey et rapexhî des disfacêyès pådjes',
 'viewdeletedpage' => 'Vey les disfacêyès pådjes',
-'undeletepagetext' => 'Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes.',
-'undeleteextrahelp' => "Po rapexhî l' pådje etire, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''Rapexhî'''». Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''Rapexhî'''». Si vos clitchîz sol boton «'''Netyî'''», çoula neteyrè l' tchamp d' comintaire eyet totes les boesses a clitchî.",
-'undeleterevisions' => '$1 modêyes ezès årtchives',
-'undeletehistory' => "Si vos rapexhîz l' pådje, l' istwere del pådje
-serè rapexheye eto, avou totes les modêyes co ezès årtchives.
-Si ene novele pådje avou l' minme no a stî askepieye dispoy li disfaçaedje
-di cisse chal, les rapexheyès modêyes seront metowes e l' istwere mins
-c' est l' modêye do moumint, et nén l' cisse rapexheye, ki
-srè håynêye.",
+'undeletepagetext' => '{{PLURAL:$1|Li pådje shuvante a stî disfacêye mins elle est co ezès årtchives, do côp ele pout esse rapexheye|Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes}}.
+Les årtchives polèt esse rnetieyes di tinzintins.',
+'undelete-fieldset-title' => 'Rapexhî les modêyes',
+'undeleteextrahelp' => "Po rapexhî l' istwere etire del pådje, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''{{int:undeletebtn}}'''».
+Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''{{int:undeletebtn}}'''».",
+'undeleterevisions' => '$1 modêye{{PLURAL:$1||s}} ezès årtchives',
+'undeletehistory' => "Si vos rapexhîz l' pådje, tote l' istwere del pådje serè rapexheye eto.
+Si ene novele pådje avou l' minme no a stî askepieye dispoy li disfaçaedje di cisse-chal,
+les rapexheyès modêyes seront metowes e l' istwere del nouve pådje, come viyès modêyes di cisse-lale.",
 'undeletehistorynoadmin' => "Cist årtike a stî disfacé. Li råjhon do
 disfaçaedje est dnêye chal pa dzo, avou les detays des uzeus k' ont
 candjî l' pådje divant do disfaçaedje. Li tecse di ces modêyes disfacêyes
 ni pout esse veyou ki des manaedjeus.",
-'undeletebtn' => 'Rapexhî!',
+'undeletebtn' => 'Rapexhî',
+'undeletelink' => 'vey/rapexhî',
+'undeleteviewlink' => 'vey',
 'undeletereset' => 'Netyî',
 'undeletecomment' => 'Råjhon:',
 'undeletedrevisions' => '{{PLURAL:$1|1 modêye|$1 modêyes}} di rapexheyes',
@@ -1124,7 +1648,7 @@ ni pout esse veyou ki des manaedjeus.",
 Loukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des dierins disfaçaedjes eyet rapexhaedjes.",
 'undelete-search-submit' => 'Cweri',
 'undelete-filename-mismatch' => 'Nén possibe di rapexhî li fitchî do $1 : on nel ritrove nén.',
-'undelete-bad-store-key' => "Nén possibe d' aler rapexhî li fitchî daté do $1 : i n' esteut nén la divant li disfaçaedje.",
+'undelete-bad-store-key' => "Nén possibe d' aler rapexhî li fitchî daté do $1: i n' esteut nén la divant li disfaçaedje.",
 'undelete-missing-filearchive' => "Nén possibe d' aler rapexhî li fitchî avou l’ ID $1 pask' i n' est nén dins l' båze di dnêyes. Motoit k' il a ddja stî rapexhî dvant.",
 
 # Namespace form on various pages
@@ -1134,28 +1658,50 @@ Loukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des
 
 # Contributions
 'contributions' => "Ovraedjes di l' uzeu",
+'contributions-title' => "Djivêye des ovraedjes di l' {{GENDER:$1|uzeu|uzeuse}} $1",
 'mycontris' => 'Mi ovraedje',
 'contribsub2' => "Po l' uzeu $1 ($2)",
 'nocontribs' => "Nou candjmint di trové ki corespondreut a ç' critere la.",
+'uctop' => '(dierinne)',
 'month' => "dispu l' moes (et pus timpe)",
-
-'sp-contributions-talk' => 'Copiner',
-'sp-contributions-userrights' => 'Manaedjî les liveas des uzeus',
+'year' => "Dispu l' anêye (et pus timpe):",
+
+'sp-contributions-newbies' => 'Mostrer seulmint les contribouwaedjes des noveas contes',
+'sp-contributions-newbies-sub' => 'Emey les noveas uzeus',
+'sp-contributions-newbies-title' => 'Contribouwaedjes des noveas uzeus',
+'sp-contributions-blocklog' => 'djournå des blocaedjes',
+'sp-contributions-deleted' => 'contribouwaedjes disfacés',
+'sp-contributions-uploads' => 'eberwetaedjes',
+'sp-contributions-logs' => 'djournås',
+'sp-contributions-talk' => 'copiner',
+'sp-contributions-userrights' => 'droets',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-blocked-notice-anon' => 'Ciste adresse IP est blokêye pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-search' => 'Cweri les contribouwaedjes',
+'sp-contributions-username' => "Adresse IP ou no d' uzeu:",
 'sp-contributions-submit' => 'Cweri',
 
 # What links here
 'whatlinkshere' => 'Pådjes ki loynut chal',
-'whatlinkshere-title' => 'Pådjes ki loynut aviè « $1 »',
-'linkshere' => 'Les pådjes ki shuvèt ont des loyéns viè cisse ci:',
-'nolinkshere' => 'Nole pådje avou des loyéns viè cisse ci.',
+'whatlinkshere-title' => 'Pådjes ki loynut aviè «$1»',
+'whatlinkshere-page' => 'Pådje:',
+'linkshere' => "Les pådjes ki shuvèt ont des loyéns viè '''[[:$1]]''':",
+'nolinkshere' => "Nole pådje avou des loyéns viè '''[[:$1]]'''.",
 'isredirect' => 'pådje di redjiblaedje',
+'isimage' => "loyén viè l' fitchî",
+'whatlinkshere-prev' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
+'whatlinkshere-next' => '{{PLURAL:$1|shuvant|$1 shuvants}}',
 'whatlinkshere-links' => '← loyaedjes',
-'whatlinkshere-hideredirs' => '$1 ridjiblaedjes',
-'whatlinkshere-hidelinks' => '$1 loyaedjes',
+'whatlinkshere-hideredirs' => '$1 les rdjiblaedjes',
+'whatlinkshere-hidetrans' => '$1 les inclusions',
+'whatlinkshere-hidelinks' => '$1 les loyaedjes',
 'whatlinkshere-hideimages' => "$1 fitchîs k' eploynut cist imådje ci",
-'whatlinkshere-filters' => 'Passettes',
+'whatlinkshere-filters' => 'Passetes',
 
 # Block/unblock
+'autoblockid' => 'Blocaedje otomatike #$1',
 'blockip' => 'Bloker èn uzeu',
 'blockiptext' => "Rimplixhoz les tchamps chal pa dzo po bloker
 l' accès e scrijhaedje d' èn uzeu dné ou a pårt d' ene
@@ -1173,24 +1719,41 @@ stî vandalijheyes).",
 'ipbotheroption' => 'ôte',
 'badipaddress' => "Nol uzeu avou ç' no la, ou adresse IP nén valide",
 'blockipsuccesssub' => 'Li blocaedje a stî comifåt',
-'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» a stî bloké.<br />Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po candjî on blocaedje.',
+'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» a stî {{GENDER:$1|bloké|blokêye}}.<br />
+Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po verifyî les blocaedjes.',
 'unblockip' => 'Disbloker èn uzeu',
 'unblockiptext' => "Rimplixhoz les tchamps chal pa dzo po ridner accès e scrijhaedje a èn uzeu ou adresse IP k' estént blokés.",
-'ipusubmit' => 'Disbloker ciste adresse ci',
+'ipusubmit' => "Rissaetchî l' blocaedje",
 'unblocked' => '«[[User:$1|$1]]» a stî disbloké',
-'ipblocklist' => "Djivêye d' adresses IP et di nos d' uzeus ki sont blokés",
+'unblocked-range' => '$1 a stî disbloké',
+'unblocked-id' => 'Li blocaedje $1 a stî rsaetchî',
+'blocklist' => 'Uzeus blokés',
+'ipblocklist' => 'Uzeus blokés',
+'ipblocklist-legend' => 'Cweri après èn uzeu bloké',
+'blocklist-userblocks' => 'Catchî les blocaedjes des contes',
+'blocklist-tempblocks' => 'Catchî les blocaedjes timporaires',
+'blocklist-addressblocks' => "Catchî les blocaedjes d' ene seule adresse IP",
+'blocklist-rangeblocks' => 'Catchî les blocaedjes di fortchetes',
+'blocklist-timestamp' => 'Date et eure',
+'blocklist-target' => 'Såme',
 'blocklist-reason' => 'Råjhon',
 'ipblocklist-submit' => 'Cweri',
+'ipblocklist-localblock' => 'Blocaedje locå',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Ôte blocaedje|Ôtes blocaedjes}}',
 'infiniteblock' => 'po todi',
-'expiringblock' => "disk' å $1 $2",
+'expiringblock' => "disk' å $1 $2",
 'blocklink' => 'bloker',
 'unblocklink' => 'disbloker',
+'change-blocklink' => "candjî l' blocaedje",
 'contribslink' => 'contribouwaedjes',
+'emaillink' => 'evoyî èn emile',
 'autoblocker' => "Bloké otomaticmint paski vos eployîz li minme adresse IP ki «[[User:$1|$1]]». Råjhon do blocaedje «'''$2'''».",
 'blocklogpage' => 'Djournå des blocaedjes',
-'blocklogentry' => '«[[$1]]» a stî bloké po ene termene di $2',
-'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus. Les adresses IP blokêyes otomaticmint èn sont nén håynêyes. Loukîz li [[Special:BlockList|djivêye des adresses IP blokêyes]] po vey les blocaedjes d' adresses IP do moumint.",
-'unblocklogentry' => '«$1» a stî disbloké',
+'blocklogentry' => 'a bloké «[[$1]]» po ene termene di $2 $3',
+'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus.
+Les adresses IP blokêyes otomaticmint èn sont nén håynêyes.
+Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po vey les blocaedjes èn alaedje pol moumint.",
+'unblocklogentry' => 'a disbloké «$1»',
 'range_block_disabled' => "Li possibilité po les manaedjeus di bloker des fortchetes d' adresses IP a stî dismetowe.",
 'ipb_expiry_invalid' => 'Tins di blocaedje nén valide.',
 'ip_range_invalid' => "Fortchete d' adresses IP nén valide.",
@@ -1200,16 +1763,24 @@ stî vandalijheyes).",
 'sorbsreason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL.",
 'sorbs_create_account_reason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL. Vos n' poloz nén ahiver on conte d' uzeu.",
 
+# Developer tools
+'lockdb' => 'Aclawaedje del båze di dnêyes',
+'lockdbsuccesssub' => "L' aclawaedje del båze di dnêyes a stî comifåt",
+'lockdbsuccesstext' => 'Li båze di dnêyes a stî aclawêye.<br />
+Ni rovyîz nén del [[Special:UnlockDB|disserer]] cwand vos åroz tot fwait avou voste etertinaedje.',
+'lockedbyandtime' => '(pa $1 li $2 a $3)',
+
 # Move page
 'move-page' => 'Rilomer $1',
 'move-page-legend' => "Displaecî l' pådje",
-'movepagetext' => "Chal vos ploz candjî l' no d' ene pådje, dj' ô bén displaecî l' pådje, eyet si istwere, viè l' novea no.
+'movepagetext' => "Chal vos ploz candjî l' no d' ene pådje, dj' ô bén displaecî l' pådje, eyet si istwere, eviè l' novea no.
 Li vî tite divénrè-st ene pådje di redjiblaedje viè l' novele.
-Les loyéns viè l' viye pådje èn seront nén candjîs; acertinez vs di verifyî s' i n' a nén des dobes ou crons redjiblaedjes.
+Vos ploz mete otomaticmint a djoû les redjiblaedje k' evoyént sol vî tite.
+Si vos nel vloz nén fé, acertinez vs di verifyî s' i n' a nén des [[Special:DoubleRedirects|dobes]] ou [[Special:BrokenRedirects|crons redjiblaedjes]].
 Vos estoz responsåve di fé çou k' i fåt po k' les loyéns continouwexhe di moenner la k' i fåt.
 
 Notez k' el pådje èn serè '''nén''' displaeceye s' i gn a ddja ene pådje avou l' novea tite, a moens k' ele soeye vude, ou ene pådje di redjiblaedje, et k' ele n' åye nole istwere.
-Çoula vout dire ki vos ploz ri-displaecî ene pådje viè l' no k' ele aveut djusse divant, et insi disfé vosse prumî displaeçaedje, å cas ou vos vs rindrîz conte ki vos avoz fwait ene flotche;
+Çoula vout dire ki vos ploz ridisplaecî ene pådje viè l' no k' ele aveut djusse divant, et insi disfé vosse prumî displaeçaedje, å cas ou vos vs rindrîz conte ki vos avoz fwait ene flotche;
 ey eto ki vos n' poloz nén spotchî par accidint ene pådje k' egzistêye dedja.
 
 '''ASTEME!'''
@@ -1236,7 +1807,7 @@ Tchoezixhoz è èn ôte s' i vs plait.",
 'talkexists' => "'''Li pådje leye minme a stî displaeceye comifåt, mins nén li pådje di copene, ca i gn aveut ddja ene pådje di copene k' egzistéve al novele plaece. I vs fårè copyî l' tecse del pådje di copene al mwin.'''",
 'movedto' => 'displaecî viè',
 'movetalk' => 'Displaecî li pådje di copene avou, si ça astchait.',
-'movelogpage' => 'Djournå des displaçaedjes',
+'movelogpage' => 'Djournå des displaeçaedjes',
 'movelogpagetext' => "Chal pa dzo c' est ene djivêye des pådjes k' on stî displaceyes.",
 'movereason' => 'Råjhon:',
 'revertmove' => 'disfé',
@@ -1245,9 +1816,9 @@ Tchoezixhoz è èn ôte s' i vs plait.",
 
 L' årtike såme «[[:$1]]» egzistêye dedja. El voloz vs disfacer po vs permete di displaecî l' ôte?",
 'delete_and_move_confirm' => "Oyi, disfacer l' pådje",
-'delete_and_move_reason' => 'Disfacé po permete on displaeçaedje',
+'delete_and_move_reason' => 'Disfacé po permete li displaeçaedje di «[[$1]]»',
 'selfmove' => 'Les tites sourdant et såme sont les minmes; ene pådje ni pout nén esse displaeceye so leye minme.',
-'fix-double-redirects' => "Rapontyî les rdjiblaedjes ki loynut aviè l' mwaisse tite",
+'fix-double-redirects' => "Rapontyî eto les rdjiblaedjes ki loynut aviè l' mwaisse tite",
 
 # Export
 'export' => 'Ricopyî des pådjes foû',
@@ -1267,8 +1838,18 @@ Dins ç' dierin cas, vos ploz eto eployî ene hårdêye, eg: [[{{#Special:Export
 'allmessagesname' => 'No del variåve',
 'allmessagesdefault' => 'Tecse prémetou',
 'allmessagescurrent' => 'Tecse pol moumint',
-'allmessagestext' => "Çouchal est ene djivêye di tos les messaedjes k' i gn a dins l' espåce di lomaedje ''MediaWiki:''",
+'allmessagestext' => "Çouchal est ene djivêye des messaedjes sistinme k' i gn a dins l' espåce di lomaedje ''MediaWiki:''.
+Loukîz les pådjes sol [//www.mediawiki.org/wiki/Localisation Locålijhaedje di MediaWiki] et 
+[//translatewiki.net/ translatewiki.net] si vos vloz pårticiper avou l' ratournaeje djenerike di MediaWiki.",
 'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' n' est nén sopoirté paski '''\$wgUseDatabaseMessages''' est dismetou.",
+'allmessages-filter-legend' => 'Passete',
+'allmessages-filter' => "Sorlon l' estat d' candjaedje:",
+'allmessages-filter-unmodified' => 'Nén candjîs',
+'allmessages-filter-all' => 'Totafwait',
+'allmessages-filter-modified' => 'Candjîs',
+'allmessages-prefix' => "Sorlon l' betchete:",
+'allmessages-language' => 'Lingaedje:',
+'allmessages-filter-submit' => 'Apliker',
 
 # Thumbnails
 'thumbnail-more' => 'Ragrandi',
@@ -1284,16 +1865,26 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'import-interwiki-history' => "Ristitchî avou l' istwere di totes les modêyes",
 'import-interwiki-submit' => 'Ristitchî',
 'import-comment' => 'Comintaire:',
-'importtext' => "S' vs plait ricopyîz l' fitchî foû do sourdant wiki avou l' usteye di rcopiaedje foû (Special:Export), el schaper so voste éndjole, et poy l' eberweter droci.",
+'importtext' => "S' i vs plait ricopyîz l' fitchî foû do sourdant wiki avou l' [[Special:Export|usteye di rcopiaedje foû]].
+Et s' el schaper so voste éndjole, et poy li ristitchî droci.",
 'importstart' => "Dj' enonde li ristitchaedje...",
 'import-revision-count' => '{{PLURAL:$1|1 modêye|$1 modêyes}}',
 'importnopages' => 'Nole pådje a ristitchî.',
-'importfailed' => 'Li ristitchaedje a fwait berwete: $1',
+'importfailed' => 'Li ristitchaedje a fwait berwete: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Sourdant nén cnoxhou pol ristitchaedje',
 'importcantopen' => "Dji n' sai drovi l' fitchî a ristitchî",
 'importbadinterwiki' => 'Cron loyén eterwiki',
 'importnotext' => "Vude ou pont d' tecse",
 'importsuccess' => 'Li ristitchaedje a stî comifåt!',
+'xml-error-string' => '$1 al roye $2, colone $3 (octet $4): $5',
+
+# Import log
+'importlogpage' => 'Djournå des ristitchaedjes',
+'importlogpagetext' => "Ristitchaedjes (import) administratifs di pådjes avou leus istorikes di candjmints, a pårti d' ôtes wikis.",
+'import-logentry-upload' => 'a ristitchî [[$1]] avou èn eberwetaedje di fitchî',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|modêye|modêyes}}',
+'import-logentry-interwiki' => "a ristitchî $1 foû d' èn ôte wiki",
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|modêye|modêyes}} foû di $2',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "Pådje d' uzeu da minne",
@@ -1308,18 +1899,23 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'tooltip-pt-logout' => 'Vos dislodjî',
 'tooltip-ca-talk' => 'Copene åd fwait do contnou del pådje',
 'tooltip-ca-edit' => "Vos ploz candjî cisse pådje ci. S' i vs plait, eployîz l' boton «Vey divant» po vs acertiner k' tot est comifåt dvant d' schaper vos candjmints.",
-'tooltip-ca-addsection' => 'Radjouter on comintaire a cisse copene ci.',
-'tooltip-ca-viewsource' => "Cisse pådje ci est protedjeye. Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
+'tooltip-ca-addsection' => 'Radjouter ene novele seccion',
+'tooltip-ca-viewsource' => "Cisse pådje ci est protedjeye.
+Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
 'tooltip-ca-history' => 'Viyès modêyes del pådje.',
 'tooltip-ca-protect' => 'Protedjî cisse pådje ci',
+'tooltip-ca-unprotect' => "Candjî l' protedjaedje del pådje",
 'tooltip-ca-delete' => 'Disfacer ci pådje ci',
 'tooltip-ca-undelete' => "Rapexhî les candjmitns fwaits al pådje divant k' ele soeyexhe disfacêye",
 'tooltip-ca-move' => 'Displaecî cisse pådje ci',
 'tooltip-ca-watch' => 'Radjouter cisse pådje ci al djivêye di vos årtikes shuvous',
 'tooltip-ca-unwatch' => 'Bodjî cisse pådje ci di vosse djivêye des årtikes shuvous',
 'tooltip-search' => 'Cweri so ci wiki chal',
+'tooltip-search-go' => 'Potchî so ene pådje avou egzactumint ci no ci, si ele egzistêye.',
+'tooltip-search-fulltext' => "Cweri les pådjes avou ç' tecse ci",
 'tooltip-p-logo' => 'Mwaisse pådje',
 'tooltip-n-mainpage' => 'Vizitez li Mwaisse pådje',
+'tooltip-n-mainpage-description' => 'Vizitez li Mwaisse pådje',
 'tooltip-n-portal' => "Åd fwait do pordjet, çou k' vos ploz fé, wice trover des sacwès",
 'tooltip-n-currentevents' => "Des infôrmåcions so des evenmints d' actouwålité",
 'tooltip-n-recentchanges' => "Li djivêye des dierins candjmints k' i gn a-st avou sol wiki.",
@@ -1333,23 +1929,29 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'tooltip-t-emailuser' => 'Evoyî èn emile a cist uzeu ci',
 'tooltip-t-upload' => 'Eberweter sol sierveu des imådjes ou fitchîs media',
 'tooltip-t-specialpages' => 'Djivêye di totes les pådjes sipeciåles',
+'tooltip-t-print' => 'Modêye sicrirece-amiståve del pådje',
+'tooltip-t-permalink' => 'Permanante hårdêye viè cisse modêye chal del pådje',
 'tooltip-ca-nstab-main' => 'Vey li pådje di contnou',
 'tooltip-ca-nstab-user' => "Vey li pådje di l' uzeu",
 'tooltip-ca-nstab-media' => 'Vey li pådje di media',
-'tooltip-ca-nstab-special' => "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leyminme.",
+'tooltip-ca-nstab-special' => "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leye-minme.",
 'tooltip-ca-nstab-project' => 'Vey li pådje di pordjet',
-'tooltip-ca-nstab-image' => "Vey li pådje d' imådje",
+'tooltip-ca-nstab-image' => 'Vey li pådje do fitchî',
 'tooltip-ca-nstab-mediawiki' => 'Vey li messaedje ratournåve do sistinme',
 'tooltip-ca-nstab-template' => 'Vey li modele',
 'tooltip-ca-nstab-help' => "Vey li pådje d' aidance",
 'tooltip-ca-nstab-category' => 'Vey li pådje di categoreye',
-'tooltip-minoredit' => "Mete çouci come on ptit candjmint d' rén do tot [alt-i]",
+'tooltip-minoredit' => "Mete çouci come on ptit candjmint d' rén do tot",
 'tooltip-save' => 'Schaper vos candjmints [alt-s]',
 'tooltip-preview' => "Prévey vos candjmints, fijhoz l' divant d' schaper s' i vs plait! [alt-p]",
 'tooltip-diff' => 'Mostrer les candjmints ki vos avoz fwait e tecse. [alt-v]',
 'tooltip-compareselectedversions' => 'Mostrer les diferinces etur les deus modêyes tchoezeyes di cisse pådje ci. [alt-v]',
 'tooltip-watch' => 'Radjouter cisse pådje ci a vosse djivêye des shuvous [alt-w]',
 'tooltip-recreate' => "Rifé cisse pådje ci mågré k' ele åye sitî disfacêye",
+'tooltip-rollback' => "Li loyén «{{int:rollbacklink}}» permete di disfé d' on seu clitch tos les candjmints(s) fwaits sol pådje på dierin uzeu.",
+'tooltip-undo' => "Li loyén «{{int:editundo}}» permete di disfé li candjmint et drouve li boesse di candjmint e môde prévoeyaedje.
+Dj' ô bén, ça permete di disfé l' candjmint et d' mete on messaedje dins l' boesse di rascourti.",
+'tooltip-summary' => 'Dinez on ptit rascourti',
 
 # Stylesheets
 'common.css' => '/* li côde CSS metou chal serè eployî pa totes les peas et tos les uzeus */',
@@ -1360,27 +1962,55 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|Uzeu anonime|Uzeus anonimes}} di {{SITENAME}}',
-'siteuser' => "Uzeu d' {{SITENAME}} «$1»",
+'siteuser' => "$1, {{GENDER:$2|uzeu d'|uzeuse di}} {{SITENAME}}",
+'anonuser' => '$1, uzeu anonime di {{SITENAME}}',
 'lastmodifiedatby' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1 pa $3.',
 'othercontribs' => "Båzé so l' ovraedje da $1.",
-'others' => 'des ôtes',
-'siteusers' => "{{PLURAL:$2|uzeu|uzeus}} d' {{SITENAME}} «$1»",
+'others' => 'co ds ôtes',
+'siteusers' => "$1, {{PLURAL:$2|uzeu|uzeus}} d' {{SITENAME}}",
+'anonusers' => '$1, {{PLURAL:$2|uzeu anonime|uzeus anonimes}} di {{SITENAME}}',
 'creditspage' => 'Pådje di credits',
 'nocredits' => "I n' a pont d' infôrmåcion di credits po cisse pådje ci.",
 
+# Info page
+'pageinfo-title' => 'Infôrmåcion po «$1»',
+'pageinfo-header-watchlist' => 'Djivêye des shuvous',
+'pageinfo-header-views' => 'Vuwes',
+'pageinfo-subjectpage' => 'Pådje',
+'pageinfo-talkpage' => 'Pådje di copene',
+'pageinfo-watchers' => 'Nombe di shuveus',
+'pageinfo-edits' => 'Nombe di candjmints',
+'pageinfo-authors' => "Nombe d' oteurs diferins",
+'pageinfo-views' => 'Nombe di lijhaedjes',
+
+# Patrolling
+'markaspatrolleddiff' => 'Marké come patrouyî',
+'markaspatrolledtext' => 'Marker cisse pådje ci come dedja patrouyeye',
+
+# Patrol log
+'patrol-log-page' => 'Djournå des patrouyaedjes',
+'patrol-log-header' => "Çouchal c' est on djournå des modêyes k' ont stî patrouyeyes.",
+
 # Image deletion
 'deletedrevision' => 'Viye modêye $1 disfacêye',
+'filedelete-missing' => "Li fitchî «$1» n' pout nén esse disfacé, la k' i n' egzistêye nén.",
+'filedelete-old-unregistered' => "Li modêye do fitchî dnêye «$1» ni s' trove nén el båze di dnêyes.",
+'filedelete-current-unregistered' => "Li fitchî dné «$1» ni s' trove nén el båze di dnêyes.",
 
 # Browsing diffs
 'previousdiff' => '← Diferinces des candjmints di dvant',
 'nextdiff' => 'Diferinces des candjmints shuvants →',
 
 # Media information
-'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé, si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
-'imagemaxsize' => "Limite pol håynaedje ezès pådjes d' imådje:",
+'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé.
+Si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
+'imagemaxsize' => "Limite pol grandeu des imådjes:<br />''(ezès pådjes d'i discrijhaedje di fitchîs)''",
 'thumbsize' => 'Grandeu po les imådjetes (thumb):',
+'widthheightpage' => '$1 × $2, $3 pådje{{PLURAL:$3||s}}',
 'file-info-size' => '$1 × $2 picsels, groxheur do fitchî: $3, del sôre "MIME": $4',
-'show-big-image' => 'Pus grande imådje',
+'file-nohires' => "I n' a nén di pus grande finté.",
+'svg-long-desc' => 'Fitchî SVG, finté di $1 × $2 picsels, grandeu: $3',
+'show-big-image' => "Imådje a si grandeur d' oridjinne",
 
 # Special:NewFiles
 'newimages' => 'Galreye des nouvès imådjes',
@@ -1391,12 +2021,27 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'bydate' => 'pazès dates',
 'sp-newimages-showfrom' => 'Mostrer les nouvès imådjes a pårti do $2, $1',
 
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '$1 segonde{{PLURAL:$1||s}}',
+'minutes' => '$1 munute{{PLURAL:$1||s}}',
+'hours' => '$1 eures{{PLURAL:$1||s}}',
+'days' => '$1 djoû{{PLURAL:$1||s}}',
+'ago' => 'i gn a $1',
+
+# Bad image list
+'bad_image_list' => "Li fôrmat est l' shuvant:
+
+Seulmint les intrêyes di djivêye (dj' ô bén, les royes ki cmincèt avou ene sitoele «*») sont acontêyes.
+Li prumî loén d' ene roye doet esse on loyén viè on fitchî k' on vout bloker si eployaedje.
+Les ôtes loyéns dnés sol minme roye sont veyous come des foû-rîle, dj' ô bén les pådjes wice ki l' fitchî pout esse eployî",
+
 # Metadata
 'metadata' => 'Meta-dnêyes',
-'metadata-help' => "Ci fitchî chal a des infôrmåcions di rawete, motoit bén radjoutêyes pa l' aparey foto limerike ou l' sicanrece eployeye po fé l' imådje. Si l' imådje a stî candjeye dispoy adon, i s' pout ki sacwants detays ni corespondexhe pus totafwait.",
+'metadata-help' => "Ci fitchî chal a des infôrmåcions di rawete, motoit bén radjoutêyes pa l' aparey foto limerike ou l' sicanrece eployeye po fé l' imådje.
+Si l' imådje a stî candjeye dispoy adon, i s' pout ki sacwants detays ni corespondexhe pus totafwait.",
 'metadata-expand' => 'Mostrer les stindous detays',
 'metadata-collapse' => 'Catchî les stindous detays',
-'metadata-fields' => "Les tchamps di meta-dnêyes EXIF metous chal vont esse
+'metadata-fields' => "Les tchamps di meta-dnêyes des imådjes metous chal vont esse
 håynés ezès pådjes d' imådje cwand l' tåvlea di meta-dnêyes
 est raptiti. Les ôtes seront catchîs.
 * make
@@ -1454,6 +2099,8 @@ est raptiti. Les ôtes seront catchîs.
 'exif-gpsareainformation' => 'No del redjon GPS',
 'exif-gpsdatestamp' => 'Date do GPS',
 'exif-gpsdifferential' => 'Coridjaedje diferenciel do GPS',
+'exif-iimcategory' => 'Categoreye',
+'exif-iimsupplementalcategory' => 'Categoreyes di rawete',
 
 'exif-orientation-1' => 'Normå',
 'exif-orientation-3' => 'Tourné di 180°',
@@ -1521,7 +2168,7 @@ est raptiti. Les ôtes seront catchîs.
 
 # External editor support
 'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "Loukîz les [//www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes.",
+'edit-externally-help' => "(Loukîz les [//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',
@@ -1538,7 +2185,10 @@ tcherdjîz l' hårdêye dins l' betchteu waibe da vosse, eyet
 acertinez ki l' adresse emile est djusse tot dnant l' côde.",
 'confirmemail_send' => "Emiler on côde d' acertinaedje",
 'confirmemail_sent' => "L' emile d' acertinaedje a stî evoyî.",
-'confirmemail_sendfailed' => "Dji n' a savou evoyî l' emile d' acertinaedje. Verifyîz ki l' adresse est bén djusse.",
+'confirmemail_sendfailed' => "{{SITENAME}} n' a nén savou vs evoyî l' emile d' acertinaedje.
+Verifyîz ki l' adresse est bén djusse.
+
+Li programe d' emilaedje a rtourné: $1",
 'confirmemail_invalid' => "Côde d' acertinaedje nén valide. Motoit k' il esteut trop vî.",
 'confirmemail_needlogin' => 'I vs fåt $1 po pleur acertiner voste adresse emile.',
 'confirmemail_success' => 'Voste adresse emile a stî acertinêye. Vos vs poloz asteure elodjî eyet profiter do wiki.',
@@ -1554,15 +2204,18 @@ alez drovî avou vosse betchteu waibe li hårdêye ki shût:
 
 $3
 
-Si c' est *nén* vos k' a-st ahivé l' conte, adon èn shuvoz
-nén l' hårdêye. Ci côde d' acertinaedje ci va-st espirer
-po l' $4.",
+Si c' est *nén* vos k' a-st ahivé l' conte, adon shuvoz
+l' hårdêye shuvante po fé rnoncî l' acertinaedje d' emile:
+
+$5
+
+Ci côde d' acertinaedje ci va-st espirer po l' $4.",
 
 # Scary transclusion
 'scarytranscludetoolong' => '[Li hårdêye est pår trop longue]',
 
 # Delete conflict
-'deletedwhileediting' => 'Asteme: Cisse pådje ci a stî disfacêye sol tins ki vos scrijhîz!',
+'deletedwhileediting' => "'''Asteme''': Cisse pådje ci a stî disfacêye sol tins ki vos scrijhîz!",
 'confirmrecreate' => "L' uzeu [[User:$1|$1]] ([[User talk:$1|copene]]) a disfacé cisse pådje ci après ki vos avoz cmincî a scrire, li råjhon k' il a dné c' est:
 : ''$2''.
 Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
@@ -1577,15 +2230,22 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'imgmultipagenext' => 'pådje shuvante →',
 
 # Table pager
+'ascending_abbrev' => 'crexh.',
+'descending_abbrev' => 'discr.',
 'table_pager_next' => 'Pådje shuvante',
 'table_pager_prev' => 'Pådje di dvant',
 'table_pager_first' => 'Prumire pådje',
 'table_pager_last' => 'Dierinne pådje',
+'table_pager_limit' => 'Håyner $1 cayets el pådje',
+'table_pager_limit_label' => 'Cayets par pådje:',
+'table_pager_limit_submit' => 'I va',
+'table_pager_empty' => 'Nou rzultat',
 
 # Auto-summaries
-'autosumm-replace' => 'Li contnou a stî replaecé pa « $1 »',
+'autosumm-blank' => 'Pådje vudeye',
+'autosumm-replace' => 'Li contnou a stî replaecî pa « $1 »',
 'autoredircomment' => 'Redjiblaedje viè [[$1]]',
-'autosumm-new' => 'Novele pådje: $1',
+'autosumm-new' => 'Pådje ahivêye avou «$1»',
 
 # Size units
 'size-bytes' => '$1 o',
@@ -1593,11 +2253,34 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'size-megabytes' => '$1 Mo',
 'size-gigabytes' => '$1 Go',
 
+# Live preview
+'livepreview-loading' => 'Tcherdjant...',
+
 # Watchlist editor
 'watchlistedit-raw-titles' => 'Tites:',
 
+# Watchlist editing tools
+'watchlisttools-edit' => "Vey et candjî l' djivêye des shuvous",
+
 # Special:Version
 'version' => 'Modêye des programes',
+'version-extensions' => "Rawetes d' astalêyes",
+'version-specialpages' => 'Pådjes sipeciåles',
+'version-variables' => 'Variåves',
+'version-antispam' => 'Siconte do spam',
+'version-skins' => 'Peas',
+'version-other' => 'Ôtes',
+'version-license' => 'Licince',
+'version-software' => 'Programes astalés',
+'version-software-product' => 'Prodût',
+'version-software-version' => 'Modêye',
+
+# Special:FilePath
+'filepath-page' => 'Fitchî:',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Cweraedje après les dobes fitchîs',
+'fileduplicatesearch-submit' => 'Cweri',
 
 # Special:SpecialPages
 'specialpages' => 'Pådjes sipeciåles',
@@ -1605,9 +2288,65 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'specialpages-group-other' => 'Ôtès pådjes especiåles',
 'specialpages-group-login' => "S' elodjî / si rashire",
 'specialpages-group-changes' => 'Dierins candjmints et djournås',
+'specialpages-group-media' => 'Rapoirts et eberwetaedjes multimedia',
 'specialpages-group-users' => 'Uzeus et abondroets',
 'specialpages-group-highuse' => 'Eployaedje timpesse des pådjes',
+'specialpages-group-pages' => 'Djivêyes di pådjes',
+'specialpages-group-pagetools' => 'Usteyes po les pådjes',
+'specialpages-group-wiki' => 'Usteyes et dnêyes do wiki',
 'specialpages-group-redirects' => 'Ridjiblaedjes di pådjes sipeciåles',
+'specialpages-group-spam' => 'Usteyes siconte do spam',
+
+# Special:BlankPage
+'blankpage' => 'Vude pådje',
+'intentionallyblankpage' => 'Cisse pådje ci est vude en esprès.',
+
+# Special:Tags
+'tag-filter' => 'Passete po ls [[Special:Tags|etiketes]]:',
+'tag-filter-submit' => 'Passete',
+'tags-edit' => 'candjî',
+'tags-hitcount' => '$1 candjmint{{PLURAL:$1||s}}',
+
+# Special:ComparePages
+'comparepages' => 'Comparer des pådjes',
+'compare-selector' => 'Comparer des modêyes di pådjes',
+'compare-page1' => 'Pådje 1',
+'compare-page2' => 'Pådje 2',
+'compare-rev1' => 'Modêye 1',
+'compare-rev2' => 'Modêye 2',
+'compare-submit' => 'Comparer',
+
+# New logging system
+'logentry-delete-delete' => "$1 a disfacé l' pådje $3",
+'logentry-delete-restore' => "$1 a rapexhî l' pådje $3",
+'logentry-delete-event' => "$1 a candjî l' veyåvisté d' {{PLURAL:$5| èn evenmint|$5 evenmints}} do djournå åd fwait di $3: $4",
+'logentry-delete-revision' => "$1 a candjî l' veyåvisté d' {{PLURAL:$5| on candjmint|$5 candjmints}} åd fwait di $3: $4",
+'logentry-delete-event-legacy' => "$1 a candjî l' veyåvisté d' evenmints do djournå åd fwait di $3",
+'logentry-delete-revision-legacy' => "$1 a candjî l' veyåvisté des candjmints so $3",
+'logentry-suppress-delete' => "$1 a disfacé l' pådje $3",
+'logentry-suppress-event' => "$1 a catcheymint candjî l' veyåvisté d' {{PLURAL:$5| èn evenmint|$5 evenmints}} do djournå åd fwait di $3: $4",
+'logentry-suppress-revision' => "$1 a catcheymint candjî l' veyåvisté d' {{PLURAL:$5| on candjmint|$5 candjmints}} åd fwait di $3: $4",
+'logentry-suppress-event-legacy' => "$1 a catcheymint candjî l' veyåvisté d' evenmints do djournå åd fwait di $3",
+'logentry-suppress-revision-legacy' => "$1 a catcheymint candjî l' veyåvisté des candjmints so $3",
+'revdelete-content-hid' => 'contnou catchî',
+'revdelete-summary-hid' => 'rascourti catchî',
+'revdelete-uname-hid' => "no d' uzeu catchî",
+'revdelete-content-unhid' => 'contnou discatchî',
+'revdelete-summary-unhid' => 'rascourti discatchî',
+'revdelete-uname-unhid' => "no d' uzeu discatchî",
+'revdelete-restricted' => 'restriccions aplikêyes ås manaedjeus',
+'revdelete-unrestricted' => 'restriccions ås manaedjeus rsaetcheyes',
+'logentry-move-move' => "$1 a displaecî l' pådje $3 viè $4",
+'logentry-move-move-noredirect' => "$1 a displaecî l' pådje $3 viè $4 sins leyî d' redjiblaedje",
+'logentry-move-move_redir' => "$1 a displaecî l' pådje $3 viè $4 pa dzeu d' on redjiblaedje",
+'logentry-move-move_redir-noredirect' => "$1 a displaecî l' pådje $3 viè $4 pa dzeu d' on redjiblaedje et sins leyî d' redjblaedje",
+'logentry-patrol-patrol' => "$1 a marké come patrouyî l' candjmint $4 del pådje $3",
+'logentry-patrol-patrol-auto' => "$1 a marké otomaticmint come patrouyî l' candjmint $4 del pådje $3",
+'logentry-newusers-newusers' => "$1 a-st ahivé on conte d' uzeu",
+'logentry-newusers-create' => "$1 a-st ahivé on conte d' uzeu",
+'logentry-newusers-create2' => "$1 a-st ahivé on conte d' uzeu $3",
+'logentry-newusers-autocreate' => 'li conte $1 a stî ahivé otomaticmint',
+'newuserlog-byemail' => "emilaedje d' on scret",
 
 # Feedback
 'feedback-subject' => 'Sudjet',
@@ -1616,6 +2355,7 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'feedback-submit' => "Evoyî l' vosse",
 'feedback-adding' => 'Vosse messaedje a stî håyné sol pådje...',
 'feedback-error2' => "Aroke : Li candjaedje n' a nén stî",
+'feedback-close' => 'Fwait',
 
 # API errors
 'api-error-badaccess-groups' => "Vos n' avoz nén l' droet d' eberweter des fitchîs so ç' wiki cial",
@@ -1625,11 +2365,13 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'api-error-duplicate-archive-popup-title' => "Ricopyî {{PLURAL:$1|l' fitchî|les fitchîs}} k' {{PLURAL:$1|a stî rsaetchî|k' ont stî rsaetchîs}}",
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|fitchî|fitchîs}} a dobe',
 'api-error-empty-file' => 'Vosse fitchî est vude.',
+'api-error-emptypage' => "C' est nén permetou d' ahiver ene novele pådje et l' leyî vude.",
 'api-error-fetchfileerror' => 'Aroke divintrinne : ene sacwè a fwait berwete cwand on-z a volou rawè vosse fitchî',
 'api-error-file-too-large' => 'Vosse fitchî est trop pezant',
 'api-error-filename-tooshort' => 'Li no do fitchî est trop court',
 'api-error-filetype-banned' => "On n' pout nén eberweter des sfwaits fitchîs",
 'api-error-filetype-missing' => 'I manke li cawete do fitchî',
+'api-error-hookaborted' => 'Li candjmint ki vos vlîz fé a stî espaitchî pa on module di rawete.',
 'api-error-http' => 'Aroke divintrinne : nou raloyaedje å sierveu',
 'api-error-illegal-filename' => "On n' pout nén prinde ci no la pol fitchî",
 'api-error-internal-error' => "Aroke divintrinne : gn a ene sacwè k' a må stî tins d' l' eredjistrumint d' vost eberwetêye",
@@ -1645,9 +2387,22 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'api-error-stashfailed' => 'Aroke divintrinne : li sierveu a pierdou les dnêyes provizweres',
 'api-error-timeout' => "Li sierveu n' a nén respondou dins les tins",
 'api-error-unclassified' => 'Aroke nén cnoxhowe',
-'api-error-unknown-code' => 'Aroke nén cnoxhowe : « $1 »',
+'api-error-unknown-code' => 'Aroke nén cnoxhowe: «$1».',
 'api-error-unknown-error' => "Aroke divintrinne : gn a ene sacwè ki n' a nén stî tins d' l' eberwetaedje",
+'api-error-unknown-warning' => 'Adviertixhmint nén cnoxhou: «$1».',
+'api-error-unknownerror' => 'Aroke nén cnoxhowe: «$1».',
 'api-error-uploaddisabled' => "L' eberwetaedje ni va nén so ç' wiki cial",
 'api-error-verification-error' => "Ci fitchî la est cron, oudon-bén si cawete n' est nén boune",
 
+# Durations
+'duration-seconds' => '$1 segonde{{PLURAL:$1||s}}',
+'duration-minutes' => '$1 munute{{PLURAL:$1||s}}',
+'duration-hours' => '$1 eure{{PLURAL:$1||s}}',
+'duration-days' => '$1 djoû{{PLURAL:$1||s}}',
+'duration-weeks' => '$1 samwinne{{PLURAL:$1||s}}',
+'duration-years' => '$1 anêye{{PLURAL:$1||s}}',
+'duration-decades' => "$1 dijhinne{{PLURAL:$1||s}} d' anêyes",
+'duration-centuries' => '$1 sieke{{PLURAL:$1||s}}',
+'duration-millennia' => '$1 meynaire{{PLURAL:$1||s}}',
+
 );
index acd1dcb..ba70453 100644 (file)
@@ -70,7 +70,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Tago-a in mga gin-patrol o binantayan nga mga pagliwat ha mga dipala naiha nga mga kabag-ohan',
 'tog-newpageshidepatrolled' => 'Tago-a an mga gin-patrol o binantayan nga mga pakli tikang han talaan hin bag-o nga pakli',
 'tog-extendwatchlist' => 'Padako-a an angay timan-an agod makita an tanan nga kabag-ohan, diri la an gibag-ohi',
-'tog-usenewrc' => 'Gamit hin mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)',
+'tog-usenewrc' => 'Gamitin mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)',
 'tog-numberheadings' => 'Auto-nga-ihap nga mga pagngaran',
 'tog-showtoolbar' => 'Igpakita an edit toolbar (nakinahanglan hin JavaScript)',
 'tog-editondblclick' => 'Igliwat in mga pakli ha doble nga klik (nakinahanglan hin JavaScript)',
@@ -542,14 +542,18 @@ Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bi
 'accmailtitle' => 'Ginpadara na an tigaman-pagsulod.',
 'newarticle' => '(Bag-o)',
 'newarticletext' => "Ginsunod mo an pakli nga waray pa kahihimo.  Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [[{{MediaWiki:Helppage}}|nabulig nga pakli]] para han kadugangan nga pananabutan).  Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.",
+'noarticletext' => 'Waray yana nahasurat hini nga pakli.
+Puyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],
+o [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.',
 'noarticletext-nopermission' => 'Ha yana waray surat ini nga pakli.
 Puydi nimo [[Special:Search/{{PAGENAME}}|pamilngon ini nga titulo han pakli]] ha iba nga mga pakli,
 o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilngon ha mga kasumpay nga talaan]</span>.',
 'userpage-userdoesnotexist-view' => "An akawnt han gumaramit ni ''$1'' in diri nakarehistro.",
 'updated' => '(Ginbag-ohan)',
 'note' => "'''Pahibaro:'''",
-'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas la ini.'''
-An imo mga ginbag-o in waray pa katipig!",
+'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas pa la ini.'''
+¡Waray pa katipig an imo mga ginbag-o!",
 'editing' => 'Ginliliwat an $1',
 'editingsection' => 'Ginliliwat an $1 (bahin)',
 'editingcomment' => 'Ginliliwat an $1 (bag-o nga bahin)',
@@ -879,7 +883,7 @@ Mga detalye: $1',
 'nolicense' => 'Waray napili',
 
 # Special:ListFiles
-'imgfile' => 'fayl',
+'imgfile' => 'paypay',
 'listfiles' => 'Listahan han fayl',
 'listfiles_date' => 'Pitsa',
 'listfiles_name' => 'Ngaran',
@@ -888,8 +892,8 @@ Mga detalye: $1',
 'listfiles_count' => 'Mga bersyon',
 
 # File description page
-'file-anchor-link' => 'Fayl',
-'filehist' => 'Kaagi han fayl',
+'file-anchor-link' => 'Paypay',
+'filehist' => 'Kaagi han paypay',
 'filehist-help' => 'Pidlita an adlaw/oras para makit-an an fayl nga naggawas hito nga oras.',
 'filehist-deleteall' => 'Paraa ngatanan',
 'filehist-deleteone' => 'paraa',
@@ -944,7 +948,7 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 'statistics-articles' => 'Unod nga mga pakli',
 'statistics-pages' => 'Mga pakli',
 'statistics-pages-desc' => 'Ngatanan nga mga pakli ha sulod hini nga wiki, lakip an hiruhimangraw nga mga pakli, mga redirect, ngan iba pa',
-'statistics-files' => 'Ginkarga nga mga file',
+'statistics-files' => 'Ginkarga nga mga paypay',
 'statistics-edits' => 'Mga pagliwat hit pakli tikang gintukod hini nga {{SITENAME}}',
 'statistics-edits-average' => 'Average nga mga pagliwat kada pakli',
 'statistics-views-total' => 'Ngatanan nga mga panginano',
@@ -1288,7 +1292,7 @@ Makikit-an nimo an ginkuhaaan',
 'tooltip-feed-atom' => 'Atom nga pangarga para hini nga pakli',
 'tooltip-t-contributions' => 'Kitaa an talaan hin mga amot hini nga nágámit',
 'tooltip-t-emailuser' => 'Padad-i hin e-mail ini nga nágámit',
-'tooltip-t-upload' => 'Pagkarga hin mga fayl',
+'tooltip-t-upload' => 'Pagkarga hin mga paypay',
 'tooltip-t-specialpages' => 'Talaan hin mga pinaurog nga pakli',
 'tooltip-t-print' => 'Maipapatik nga bersyon hini nga pakli',
 'tooltip-t-permalink' => 'Sumpay nga unob ha hini nga pagliwat han pakli',
@@ -1349,6 +1353,8 @@ An bisan ano nga masunod nga mga sumpay ha kapareho nga bagis in igtratrato nga
 
 # Metadata
 'metadata' => 'Metadata',
+'metadata-help' => 'Iní nga paypay mayda dugang nga pagpasabot, nga bangin gindugáng tikang han digital nga camera o iskaner nga gin-gamit paghimo o pag-digitar hini.
+Kon an paypay ginliwat tikang han orihinal nga kamutangan, mayda mga detalye nga bangin diri magpakita han ginliwat nga paypay',
 'metadata-fields' => 'An mga rumbay han hulagway han metadato nga nakatala dinhi nga mensahe in iglalakip ha padayag hin hulagway nga pakli kun an taramdan metadato in nakalukot.
 An iba in daan nakatago.
 * make
@@ -1505,6 +1511,16 @@ An iba in daan nakatago.
 'blankpage' => 'Blanko nga pakli',
 'intentionallyblankpage' => 'Ini nga pakli gintuyo pagpabilin nga blanko.',
 
+# External image whitelist
+'external_image_whitelist' => '#Pabay-i ini nga linea nga sugad gud la <pre>
+#Igbutang in mga regular nga expresyon nga mga fragment (iton bahin nga ada ha butnga han //) ha ubos
+#Ini igpapadis han mga URL han mga ha gawas (gin-hotlink) nga mga hulagway
+#An mga nasakto igpapakita nga mga hulagway, kon diri, sumpay la ngadto han hulagway an igpapakita
+#Mga linea nga natikang hin  # ginta-tratar nga mga komento
+# Case-insensitive ini
+
+#Igbutang an mga regex nga fragment ha igbaw hini nga linea. Pabay-i ini nga linea nga sugad gud la</pre>',
+
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] panara:',
 'tag-filter-submit' => 'Panara',
index 5a6f244..13c5a11 100644 (file)
@@ -1175,7 +1175,7 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'nchanges' => '$1 {{PLURAL:$1|coppite|ciy coppite}}',
 'recentchanges' => 'Coppite yu mujj',
 'recentchanges-legend' => 'tànneefi coppite yu mujj',
-'recentchangestext' => 'Toppal ci wii xët coppite yu mujj ci {{SITENAME}}.',
+'recentchanges-summary' => 'Toppal ci wii xët coppite yu mujj ci {{SITENAME}}.',
 'recentchanges-feed-description' => 'Toppal coppite yu mujj yu bii wiki.',
 'recentchanges-label-newpage' => 'Coppite gi sos na xët wu bees',
 'recentchanges-label-minor' => 'Coppite gu néewal la',
index b6c9a70..a9d7dd5 100644 (file)
@@ -1013,7 +1013,7 @@ $1",
 'nchanges' => '$1趟更改',
 'recentchanges' => '近段辰光个改动',
 'recentchanges-legend' => '近段辰光个改动选项',
-'recentchangestext' => '登该个页面浪跟踪最近对维基百科个改动。',
+'recentchanges-summary' => '登该个页面浪跟踪最近对维基百科个改动。',
 'recentchanges-feed-description' => '跟踪此订阅垃拉 wiki 高头个最近更改。',
 'rcnote' => "下底是垃拉$4 $5,最近'''$2'''日天里向个'''$1'''趟最近更改记录:",
 'rclistfrom' => '显示 $1 以来个新改动',
index b85c6a7..2aea831 100644 (file)
@@ -725,7 +725,7 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|сольлһн|сольлһн}}',
 'recentchanges' => 'Шидрә сольлһн',
 'recentchanges-legend' => 'Шидрә сольлһна көгүд',
-'recentchangestext' => 'Эн цагин дараһар бичсн шидрә сольлһн',
+'recentchanges-summary' => 'Эн цагин дараһар бичсн шидрә сольлһн',
 'recentchanges-feed-description' => 'Эн зәңгллһд шидрә хүврһд шинҗлх.',
 'recentchanges-label-newpage' => 'Тер үүләр шин халх бүтәв',
 'recentchanges-label-minor' => 'Эн баһ чинртә сольлһн',
index 96d6be2..2d51ec6 100644 (file)
@@ -311,6 +311,7 @@ $messages = array(
 'index-category' => 'אינדעקסירטע בלעטער',
 'noindex-category' => 'אומאינדעקסירטע בלעטער',
 'broken-file-category' => 'בלעטער מיט צעבראכענע טעקע לינקען',
+'categoryviewer-pagedlinks' => '($1) ($2)',
 
 'about' => 'וועגן',
 'article' => 'אינהאלט בלאט',
@@ -605,8 +606,8 @@ $2',
 'userlogout' => 'אַרױסלאָגירן',
 'notloggedin' => 'נישט איינגעשריבן',
 'nologin' => "איר האט נישט קיין קאנטע? '''$1'''.",
-'nologinlink' => '×\91×\90ש×\90פֿ×\98 ×\90 קאנטע',
-'createaccount' => '×\91×\90ש×\90פֿ×\98 ×\90 × ×\99×\99ע קאנטע',
+'nologinlink' => 'ש×\90ַפֿ×\9f ×\90Ö· קאנטע',
+'createaccount' => 'ש×\90ַפֿ×\9f ×\90Ö· × ×²Ö·ע קאנטע',
 'gotaccount' => "האסטו שוין א קאנטע? '''$1'''.",
 'gotaccountlink' => 'אַרײַנלאגירן',
 'userlogin-resetlink' => 'פארגעסן אײַערע אַרײַנלאָגירן פרטים?',
@@ -631,7 +632,7 @@ $2',
 'loginsuccess' => "'''איר זענט אַצינד אַרײַנלאָגירט אין {{SITENAME}} ווי \"\$1\".'''",
 'nosuchuser' => 'נישטא קיין באניצער מיטן נאמען  "$1".
 
-ק×\95ק×\98 ×\90×\99×\91ער ×\90×\99×\99ער ×\90×\95×\99ס×\9c×\99×\99×\92, ×\90×\93ער [[Special:UserLogin/signup|×\91×\90ש×\90פֿ×\98 ×\90 × ×\99×\99ע קאנטע]].',
+ק×\95ק×\98 ×\90×\99×\91ער ×\90ײַער ×\90×\95×\99ס×\9c×\99×\99×\92, ×\90×\93ער [[Special:UserLogin/signup|ש×\90ַפֿ×\98 ×\90 × ×²Ö·ע קאנטע]].',
 'nosuchusershort' => 'נישטאָ קיין באַניצער מיטן נאָמען "$1". 
 ביטע באַשטעטיקט דעם אויסלייג.',
 'nouserspecified' => 'איר ברויכט ספעציפֿיצירן א באַניצער-נאָמען.',
@@ -838,7 +839,7 @@ $2
 'newarticletext' => "איר זענט געקומען צו אַ בלאַט וואָס עקזיסטירט נאָך נישט!
 כדי שאַפֿן דעם בלאַט, קלאַפט אַרײַן טעקסט אין דעם קעסטל אונטן (זעט דעם [[{{MediaWiki:Helppage}}|הילף בלאַט]] פֿאַר מער אינפֿארמאַציע).
 אויב איר זענט אַהערגעקומען בטעות, דרוקט דאָס '''Back''' קנעפל אין אײַער בלעטערער.",
-'anontalkpagetext' => "----'''דאס איז א רעדן בלאט פון א אן אנאנימען באַניצער וואס האט נאך נישט באַשאַפֿן קיין קאנטע, אדער באניצט זיך נישט דערמיט. דערוועגן, מוזן מיר זיך באניצן מיט זיין IP אדרעס כדי אים צו אידענטיפיצירן. עס קען זיין אז עטלעכע אנדערע ניצן אויך דעם  IP אדרעס. אויב זענט איר אן אנאנימער באַניצער וואס שפירט אז איר האט באקומען מעלדונגען וואס זענען נישט שייך צו אייך, ביטע [[Special:UserLogin/signup|באַשאַפֿט א קאנטע]] אדער [[Special:UserLogin|טוט זיך אריינלאגירן]] כדי צו פארמיידן דאס אין די עתיד זיך פארמישן מיט אנדערע אנאנימע באַניצערס.'''",
+'anontalkpagetext' => "----'''דאָס איז א רעדן בלאַט פון א אַן אַנאנימען באַניצער וואָס האט נאך נישט געשאַפֿן קיין קאנטע, אדער באניצט זיך נישט דערמיט. דערוועגן, מוזן מיר זיך באניצן מיט זיין IP אדרעס כדי אים צו אידענטיפיצירן. עס קען זיין אז עטלעכע אנדערע ניצן אויך דעם  IP אדרעס. אויב זענט איר אן אנאנימער באַניצער וואס שפירט אז איר האט באקומען מעלדונגען וואס זענען נישט שייך צו אייך, ביטע [[Special:UserLogin/signup|שאַפֿט א קאנטע]] אדער [[Special:UserLogin|טוט זיך אריינלאגירן]] כדי צו פארמיידן דאס אין די עתיד זיך פארמישן מיט אנדערע אַנאנימע באַניצערס.'''",
 'noarticletext' => 'דערווייל איז נישט פאַרהאן קיין שום טעקסט אין דעם בלאט.
 איר קענט [[Special:Search/{{PAGENAME}}|זוכן דעם בלאט טיטל]] אין אנדערע בלעטער,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} זוכן די רעלעוואנטע לאגביכער],
@@ -932,13 +933,13 @@ $2
 'hiddencategories' => 'דער דאזיגער בלאט געהערט צו {{PLURAL:$1|איין באהאלטענער קאטעגאריע|$1 באהאלטענע קאטעגאריעס}}:',
 'edittools' => '<!-- טעקסט דא וועט געוויזן ווערן אונטער ענדערן און ארויפלאדירן פארעמס. -->',
 'nocreatetitle' => 'בלאט באשאפן באגרעניצט',
-'nocreatetext' => '×\93×\99 ×¡×\99×\99×\98 ×\94×\90×\98 ×\91×\90×\92רענ×\99צ×\98 ×\93×\99 ×\9e×¢×\92×\9c×\99×\9bק×\99×\99×\98 ×¦×\95 ×\91×\90ש×\90פ×\9f × ×\99×\99×¢ ×\91×\9c×¢×\98ער.
\90×\99ר ×§×¢× ×\98 ×¦×\95ר×\99ק×\92×\99×\99×\9f ×\90×\95×\9f ×¢× ×\93ער×\9f ×\93×\99 ×¢×§×\96×\99ס×\98×\99רנ×\93×¢ ×\91×\9c×\90×\98, ×\90×\93ער [[Special:UserLogin|×\9c×\90×\92×\99ר×\98 ×\96×\99×\9a ×\90ר×\99×\99×\9f ×\90×\95×\9f ×\91×\90שאפט א קאנטע]].',
+'nocreatetext' => 'די סייט האט באגרעניצט די מעגליכקייט צו שאפן נייע בלעטער.
\90×\99ר ×§×¢× ×\98 ×¦×\95ר×\99ק×\92×\99×\99×\9f ×\90×\95×\9f ×¢× ×\93ער×\9f ×\93×¢×\9d ×¢×§×\96×\99ס×\98×\99רנ×\93×\9f ×\91×\9c×\90×\98, ×\90×\93ער [[Special:UserLogin|×\9c×\90×\92×\99ר×\98 ×\96×\99×\9a ×\90ר×\99×\99×\9f ×\90×\93ער שאפט א קאנטע]].',
 'nocreate-loggedin' => 'איר זענט נישט ערלויבט צו שאַפֿן נײַע בלעטער.',
 'sectioneditnotsupported-title' => 'רעדאקטירן אפטיילונגען נישט געשטיצט.',
 'sectioneditnotsupported-text' => 'רעדאַקטירן אָפטיילונגען נישט געשטיצט אויף דעם בלאַט',
-'permissionserrors' => 'ער×\9c×\95×\99×\91×¢× ×\99ש×\9f ×¤×¢×\99×\9cערס',
-'permissionserrorstext' => 'איר זענט נישט ערלויבט צו טון דאס, פֿאַר  {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:',
+'permissionserrors' => 'ערלויבענישן פעלערס',
+'permissionserrorstext' => 'איר זענט נישט ערלויבט צו טון דאס, פֿאַר {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:',
 'permissionserrorstext-withaction' => 'איר זענט נישט ערלויבט צו $2, וועגן {{PLURAL:$1|דער פֿאלגנדער סיבה| די פֿאלגנדע סיבות}}:',
 'recreate-moveddeleted-warn' => "'''ווארענונג: איר שאפט א נייעם בלאט וואס איז שוין איינמאל  געווארן אויסגעמעקט.'''
 
@@ -1061,6 +1062,8 @@ $2
 'revdelete-show-file-submit' => 'יא',
 'revdelete-selected' => "'''{{PLURAL:$2|אויסדערוויילטע ווערסיע| אויסדערוויילטע ווערסיעס}} פון [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1| אויסדערוויילטע לאג אקציע|אויסדערוויילטע לאג אקציעס}}:'''",
+'revdelete-text' => "'''אויסגעמעקטע רעוויזיעס און געשעענישן וועלן בלייבן אין דער בלאט היסטאריע און די לאגביכער, אבער טיילן פון זייער אינהאלט וועט ווערן אומגרייכלעך צום קהל. '''
+אנדערע סיסאפן אויף {{SITENAME}} וועלן נאך האבן צוטריט צום באהאלטענעם אינהאלט און קענען אים צוריקשטעלן דורך דעם זעלבן אייבערפלאך,  אחוץ ווען מען שטעלט נאך באגרענעצונגען.",
 'revdelete-suppress-text' => "באהאלטן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגענדע פעלער:
 * אויפדעקונג פון פריוואטקייט אינפארמאציע
 * ''היים אדרעסן, טעלעפאן נומערן, אדער סאשעל סעקיורעטי, א.א.וו.:'''",
@@ -1241,6 +1244,7 @@ $1",
 'prefs-beta' => 'בעטאַ אייגנשאַפֿטן',
 'prefs-datetime' => 'דאטום און צייט',
 'prefs-labs' => 'לאַבאראַטאריע מעגלעכקייטן',
+'prefs-user-pages' => 'באניצער בלעטער',
 'prefs-personal' => 'באַנוצער פראָפֿיל',
 'prefs-rc' => 'לעצטע ענדערונגען',
 'prefs-watchlist' => 'אויפפאסונג ליסטע',
@@ -1443,6 +1447,7 @@ $1",
 'right-userrights' => 'רעדאַקטירן אלע באַניצער רעכטן',
 'right-userrights-interwiki' => 'רעדאַקטירן באַניצער רעכטן פֿון באַניצער אויף אנדערע וויקיס',
 'right-siteadmin' => 'פארשליס און שליס-אויף די דאטעבאזע',
+'right-override-export-depth' => 'עקספארטירן בלעטער כולל געלינקטע בלעטער ביז א טיף פון 5',
 'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
 'right-passwordreset' => 'באַקוקן פאַסווארט צוריקשטעלן ע־בריוו',
 
@@ -1459,13 +1464,14 @@ $1",
 'action-createpage' => 'שאַפֿן בלעטער',
 'action-createtalk' => 'שאַפֿן שמועס בלעטער',
 'action-createaccount' => 'שאַפֿן די באַניצער קאנטע',
-'action-minoredit' => 'באַצייכנען די רעדאַקטירונג ווי מינערדיק',
+'action-minoredit' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\93×\99 ×¨×¢×\93×\90ַק×\98×\99ר×\95× ×\92 ×\95×\95×\99 ×\9e×\99נער×\93×\99ק',
 'action-move' => 'באַוועגן דעם בלאַט',
 'action-move-subpages' => 'באַוועגן דעם בלאַט מיט זײַנע אונטערבלעטער',
 'action-move-rootuserpages' => 'באַוועגן באַניצער הויפטבלעטער',
 'action-movefile' => 'באַוועגן די טעקע',
 'action-upload' => 'אַרויפֿלאָדן די טעקע',
 'action-reupload' => 'איבערשרײַבן די עקזיסטירנדע טעקע',
+'action-reupload-shared' => 'אריבערשרייבן די טעקע אין א געמיינזאמער רעפאזיטאריע',
 'action-upload_by_url' => 'ארויפֿלאָדן די טעקע פֿון א URL',
 'action-writeapi' => 'ניצן דעם שרײַבן API',
 'action-delete' => 'אויסמעקן דעם בלאַט',
@@ -1477,6 +1483,7 @@ $1",
 'action-suppressionlog' => 'באקוקן דעם פריוואטן לאג',
 'action-block' => 'בלאקירן דעם באַניצער פֿון רעדאַקטירן',
 'action-protect' => 'ענדערן שיצונג ניוואען פֿאַר דעם בלאַט',
+'action-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
 'action-import' => 'אימפארטירן דעם בלאַט פֿון אַן אַנדער וויקי',
 'action-importupload' => 'אימפארטירן דעם בלאַט דורך ארויפֿלאָדן אַ טעקע',
 'action-patrol' => "אנצייכענען אנדערס' רעדאקטירונגן אלס נאכגעקוקט",
@@ -1542,6 +1549,7 @@ $1",
 'upload-tryagain' => 'פֿאָרלייגן מאדיפֿיצירטע טעקע באַשרײַבונג',
 'uploadnologin' => 'נישט אַרײַנלאגירט',
 'uploadnologintext' => 'איר מוזט זײַן [[Special:UserLogin| אַרײַנלאָָגירט]] כדי ארויפֿצולאָדן טעקעס',
+'upload_directory_missing' => 'די ארויפלאד דירעקטאריע ($1) פעלט און דער וועבסערווירער קען זי נישט שאפן.',
 'upload_directory_read_only' => 'דער וועבסארווער קען נישט שרייבן צום ארויפלאדן ארכיוו "$1".',
 'uploaderror' => 'אַרויפֿלאָדן פֿעלער',
 'upload-recreate-warning' => "'''ווארענונג: א טעקע מיט דעם נאמען איז געווארן אויסגעמעקט אדער באוועגט.'''
@@ -1577,6 +1585,8 @@ $1",
 'badfilename' => 'טעקע נאמען איז געטוישט צו "$1".',
 'filetype-mime-mismatch' => 'טעקע סופֿיקס ".$1" שטימט נישט מיטן MIME טיפ פון דער טעקע($2).',
 'filetype-badmime' => 'טעקעס מיטן  MIME טיפ "$1" טאר מען נישט ארויפלאדן.',
+'filetype-unwanted-type' => "'''\".\$1\"''' איז אן אומרעקאמענדירטער טעקע־טיפ. {{PLURAL:\$3|רעקאמענדירטער טעקע־טיפ איז|רעקאמענדירטע טעקע־טיפן זענען}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|איז נישט קיין דערלויבטער טעקע־טיפ |זענען נישט קיין דערלויבטע טעקע־טיפן}}. {{PLURAL:$3|דערלויבטער טעקע־טיפ איז|דערלויבטע טעקע־טיפן זענען}} $2.',
 'filetype-missing' => 'די טעקע האט נישט קיין פארברייטערונג (למשל ".jpg").',
 'empty-file' => 'די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.',
 'file-too-large' => 'די טעקע וואָס איר האט אײַנגעגעבן איז צו גרויס.',
@@ -1612,6 +1622,7 @@ $1",
 'uploadedimage' => 'אַרױפֿגעלאָדן "[[$1]]"',
 'overwroteimage' => 'אַרויפֿגעלאָדן א נײַע ווערסיע פון "[[$1]]"',
 'uploaddisabled' => 'אַרויפֿלאָדן טעקעס מבוטל',
+'copyuploaddisabled' => 'ארויפלאדן דורך URL אומאקטיווירט',
 'uploadfromurl-queued' => 'אייער ארויפלאד איז אין דער רייע.',
 'uploaddisabledtext' => 'אַרויפֿלאָדן טעקעס נישט דערמעגלעכט אצינד.',
 'uploadscripted' => 'די טעקע האט א סקריפט אדער HTML קאד וואס קען ווערן פֿאלש אויסגעטייטשט דורך א בלעטערער',
@@ -1655,13 +1666,18 @@ $1",
 'backend-fail-writetemp' => 'קען נישט שרײַבן צו צייַטווייַליקער טעקע.',
 'backend-fail-closetemp' => 'קען נישט שליסן צייַטווייַליקע טעקע.',
 'backend-fail-read' => 'קען נישט ליינען טעקע "$1".',
-'backend-fail-create' => 'קע×\9f × ×\99ש×\98 ×©×\90פֿן טעקע "$1".',
+'backend-fail-create' => 'קע×\9f × ×\99ש×\98 ×©×¨×\99×\99×\91ן טעקע "$1".',
 
 # Lock manager
 'lockmanager-notlocked' => 'מ\'קען נישט אויפֿשליסן "$1"; ער איז נישט פֿארשלאסן.',
 
+# ZipDirectoryReader
+'zip-wrong-format' => 'ספעציפירטע טעקע איז נישט קיין ZIP טעקע.',
+
 # Special:UploadStash
 'uploadstash' => 'אַרויפֿלאָד רעזערוו',
+'uploadstash-clear' => 'אויסמעקן טעקעס פון זאפאס',
+'uploadstash-nofiles' => 'איר האט נישט קיין טעקעס אין זאפאס.',
 'uploadstash-refresh' => 'דערפֿרישן די רשימה פון טעקעס',
 
 # img_auth script messages
@@ -2038,6 +2054,7 @@ $1",
 # User Messenger
 'usermessage-summary' => 'איבערלאזן סיסטעם אָנזאָג',
 'usermessage-editor' => 'סיסטעם שליח',
+'usermessage-template' => 'MediaWiki:באניצער־מעלדונג',
 
 # Watchlist
 'watchlist' => 'מיין אויפפַּאסונג ליסטע',
@@ -2078,12 +2095,12 @@ $1",
 'watcherrortext' => 'א גרײַז האט פאסירט ביים ענדערן אײַערע אויפֿפאסן ליסטע אײַנשטעלונגען פֿאר "$1".',
 
 'enotif_mailer' => 'נאטיפאקאציע שיקער {{SITENAME}}',
-'enotif_reset' => 'באַצייכן אלע בלעטער שוין געזען',
+'enotif_reset' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9c×¢ ×\91×\9c×¢×\98ער ×©×\95×\99×\9f ×\92×¢×\96×¢×\9f',
 'enotif_newpagetext' => 'דאס איז א נייער בלאט.',
-'enotif_impersonal_salutation' => 'באנוצער {{SITENAME}}',
+'enotif_impersonal_salutation' => '{{SITENAME}} באַניצער',
 'changed' => 'געטוישט',
-'created' => '×\91×\90ש×\90פן',
-'enotif_subject' => 'דער בלאט $PAGETITLE אין {{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED דורך $PAGEEDITOR',
+'created' => '×\92עש×\90ַפֿן',
+'enotif_subject' => 'דער בלאט $PAGETITLE אין {{SITENAME}} $CHANGEDORCREATED דורך $PAGEEDITOR',
 'enotif_lastvisited' => 'זעט $1 פֿאַר אלע ענדערונגען זינט אײַער לעצטן וויזיט.',
 'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
 'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
@@ -2118,7 +2135,7 @@ $UNWATCHURL
 'deletepage' => 'מעק אויס בלאט',
 'confirm' => 'באַשטעטיגן',
 'excontent' => 'אינהאלט געווען: "$1"',
-'excontentauthor' => "×\90×\99× ×\94×\90×\9c×\98 ×\92×¢×\95×\95×¢×\9f: '$1' (×\90×\95×\9f ×\93ער ×\90×\99×\99נצ×\99×\92ס×\98ער ×\91×\90ר×\91×\99×\99טער איז געווען '[[Special:Contributions/$2|$2]]')",
+'excontentauthor' => "×\90×\99× ×\94×\90×\9c×\98 ×\92×¢×\95×\95×¢×\9f: '$1' (×\90×\95×\9f ×\93ער ×\90×\99×\99נצ×\99×\92ס×\98ער ×\91×\90×\90ר×\91×¢טער איז געווען '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => 'אינהאַלט בעפֿאַרן אויסליידיגן איז געווען: "$1"',
 'exblank' => 'בלאט איז געווען ליידיג',
 'delete-confirm' => 'אויסמעקן $1',
@@ -2174,6 +2191,7 @@ $UNWATCHURL
 'unprotectedarticle' => 'אראפגענומען שוץ פון "[[$1]] "',
 'movedarticleprotection' => 'באוועגט די שיץ באשטימונגען פֿון "[[$2]]" אויף "[[$1]]"',
 'protect-title' => 'ענדערן שיץ ניווא פֿאַר "$1"',
+'protect-title-notallowed' => 'באקוקן שיץ־ניווא פון "$1"',
 'prot_1movedto2' => '[[$1]] אריבערגעפירט צו [[$2]]',
 'protect-badnamespace-title' => 'אומשיצבארער נאמענטייל',
 'protect-badnamespace-text' => 'בלעטער אין דעם נאמענטייל קען מען נישט שיצן.',
@@ -2274,6 +2292,7 @@ $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' => 'נאמענטייל:',
@@ -2456,6 +2475,7 @@ $1',
 'proxyblocker-disabled' => 'די  פֿונקציע איז אומאַקטיווירט.',
 'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
 'proxyblocksuccess' => 'געטאן.',
+'cant-block-while-blocked' => 'איר קען נישט בלאקירן קיין אנדערע באניצער ווען איר זענט אליין בלאקירט.',
 'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
 
 # Developer tools
@@ -2673,6 +2693,8 @@ $1',
 'javascripttest-disabled' => 'די  פֿונקציע איז אומאַקטיווירט אין דער דאזיקער וויקי.',
 'javascripttest-title' => 'דורכפירנדיק $1 בדיקות',
 'javascripttest-pagetext-skins' => 'קלויבט א באניצער־אייבערפלאך מיט וואס דורכצופירן די בדיקות:',
+'javascripttest-qunit-intro' => 'זעט [$1 דאקומענטאציע פאר טעסטן] בײַ mediawiki.org.',
+'javascripttest-qunit-heading' => 'מעדיעוויקי JavaScript QUnit קאנטראל־פראגראם',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'אייער באניצער בלאט',
@@ -2728,8 +2750,8 @@ $1',
 'tooltip-ca-nstab-template' => 'זעט דעם מוסטער',
 'tooltip-ca-nstab-help' => 'זעט דעם הילף בלאַט',
 'tooltip-ca-nstab-category' => 'באקוקט דעם קאטעגאריע בלאט',
-'tooltip-minoredit' => 'באצייכן דאס אלס מינערדיגע ענדערונג',
-'tooltip-save' => '×\94×\99×\98 ×\90×\95×\99×£ אייערע ענדערונגען',
+'tooltip-minoredit' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\93×\90ס ×\90×\9cס ×\9e×\99נער×\93×\99×\92×¢ ×¢× ×\93ער×\95× ×\92',
+'tooltip-save' => '×\90×\95×\99פֿ×\94×\99×\98×\9f אייערע ענדערונגען',
 'tooltip-preview' => 'פֿארויסדיגע ווײַזונג, זײַט אזוי גוט באניצט די געלעגנהייט פֿארן אויפֿהיטן!',
 'tooltip-diff' => 'ווײַזן אייערע ענדערונגען צום טעקסט',
 'tooltip-compareselectedversions' => 'פארגלײַכם די צוויי ווערסיעס פון דעם בלאט',
@@ -2745,8 +2767,15 @@ $1',
 
 # Stylesheets
 'common.css' => '/* CSS געשריבן דא וועט אפילירן און באיינפלוסן אלע סקינס */',
-'monobook.css' => '/* סטייל דא געלייגט וועט באיינפלוסן די בעקגראונד Monobook בלויז */',
-'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן Vector סקין */',
+'standard.css' => '/* CSS געשטעלט דא ווירקט אויפן סטאנדארט סקין */',
+'nostalgia.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן נאסטאלגיע סקין */',
+'cologneblue.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן קעלנישן־בלוי סקין */',
+'monobook.css' => '/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */',
+'myskin.css' => '/* CSS געשטעלט דא ווירקט אויפן MySkin סקין */',
+'chick.css' => '/* CSS געשטעלט דא ווירקט אויפן טשיק סקין */',
+'simple.css' => '/* CSS געשטעלט דא ווירקט אויפן איינפאך סקין */',
+'modern.css' => '/* CSS געשטעלט דא ווירקט אויפן מאדערנעם סקין */',
+'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */',
 
 # Scripts
 'common.js' => '/* אלע סקריפטן פון JavaScript דא געשריבן וועט לויפן פאר אלע באנוצער ווען זיי וועלן לאדירן דעם בלאט */',
@@ -2784,11 +2813,22 @@ $1',
 'pageinfo-views' => 'צאַל קוקן',
 'pageinfo-viewsperedit' => 'צאל קוקן צו א רעדאַקטירונג',
 
+# Skin names
+'skinname-standard' => 'קלאסיש',
+'skinname-nostalgia' => 'נאסטאלגיע',
+'skinname-cologneblue' => 'קעלניש בלוי',
+'skinname-monobook' => 'מאנאבוק',
+'skinname-myskin' => 'מיין סקין',
+'skinname-chick' => 'טשיק',
+'skinname-simple' => 'איינפֿאַך',
+'skinname-modern' => 'מאדערן',
+'skinname-vector' => 'וועקטאר',
+
 # Patrolling
-'markaspatrolleddiff' => 'באצייכנען אלס פאטראלירט',
-'markaspatrolledtext' => 'באצייכנען בלאט אלס פאטראלירט',
+'markaspatrolleddiff' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
+'markaspatrolledtext' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\91×\9c×\90×\98 ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
 'markedaspatrolled' => 'באצייכנט אלס פאטראלירט',
-'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\92עצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90לס פאַטארלירט.',
+'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\91×\90ַצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90Ö·לס פאַטארלירט.',
 'rcpatroldisabled' => 'פאַטראלירן ענדערונגען איז  מבוטל געווארן',
 'rcpatroldisabledtext' => 'די לעצטע ענדערונגען פאַטראלירן אייגנקייט איז אצינד בטל.',
 'markedaspatrollederror' => 'נישט מעגלעך צו צייכענען אלס פאַטראלירט',
@@ -2817,6 +2857,7 @@ $1',
 
 # Media information
 'thumbsize' => 'קליינבילד גרייס:',
+'widthheight' => '$1 × $2',
 'widthheightpage' => '$1 × $2, {{PLURAL:$3|איין בלאט|$3 בלעטער}}',
 'file-info' => 'טעקע גרייס: $1, MIME טיפ: $2',
 'file-info-size' => '$1 × $2 פיקסעל, טעקע גרייס: $3, טיפ MIME: $4',
@@ -2846,6 +2887,9 @@ $1',
 'sp-newimages-showfrom' => 'באַװײַזן נײַע טעקעס פון $2, $1',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'video-dims' => '$1, $2 × $3',
+'seconds-abbrev' => '$1ס',
+'minutes-abbrev' => '$1מ',
 'seconds' => '{{PLURAL:$1|$1 סעקונדע|$1 סעקונדעס}}',
 'minutes' => '{{PLURAL:$1|$1 מינוט|$1 מינוט}}',
 'hours' => '{{PLURAL:$1|$1 שעה|$1 שעה}}',
@@ -2931,24 +2975,34 @@ $1',
 'exif-focallength-format' => '$1 מ"מ',
 'exif-subjectarea' => 'סוביעקט געגנט',
 'exif-flashenergy' => 'פלעש ענערגיע',
-'exif-focalplanexresolution' => 'פאקאל פלעין עקס רעזאלוציע',
-'exif-focalplaneresolutionunit' => 'פאקאל פלעין רעזאלוציע מאס',
-'exif-exposureindex' => 'עקספאוזשער אינדעקס',
+'exif-focalplanexresolution' => 'פאקוס־שטח האריזאנטאל',
+'exif-focalplaneyresolution' => 'פאקוס־שטח ווערטיקאל',
+'exif-focalplaneresolutionunit' => 'פאקוס־שטח רעזאלוציע איינהייט',
+'exif-subjectlocation' => 'סוביעקט ארט',
+'exif-exposureindex' => 'באַלײַכטן אינדעקס',
+'exif-sensingmethod' => 'דערשפירן מעטאד',
 'exif-filesource' => 'מקור פֿון דער טעקע',
 'exif-scenetype' => 'סצענע טיפ',
 'exif-customrendered' => 'קאסטעם בילד פראצעסירונג',
 'exif-exposuremode' => 'באַלײַכטן מצב',
-'exif-digitalzoomratio' => 'דיזשיטאלער זום ראשיאו',
+'exif-whitebalance' => 'ווײַס באַלאַנס',
+'exif-digitalzoomratio' => 'דיגיטאלער זום פארהעלטעניש',
 'exif-focallengthin35mmfilm' => 'פאקאל לענג אין 35 מ"מ פילם',
+'exif-scenecapturetype' => 'סצענע אויפנעם טיפ',
 'exif-gaincontrol' => 'סצענע קאנטראל',
 'exif-contrast' => 'קאנטראסט',
 'exif-devicesettingdescription' => 'זאך סעטינגס אראפמאלונג',
-'exif-gpslatitude' => 'לאטיטוד',
+'exif-gpslatituderef' => 'צפון אדער דרום גארטל־ליניע',
+'exif-gpslatitude' => 'גארטל־ליניע',
 'exif-gpslongituderef' => 'מזרח אדער מערב לענג',
 'exif-gpslongitude' => 'געאגראַפֿישע לענג',
 'exif-gpsaltituderef' => 'אלטיטוט רעפערענץ',
-'exif-gpsaltitude' => 'אלטיטוט',
+'exif-gpsaltitude' => 'הייך',
+'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
+'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
 'exif-gpsdop' => 'מאס פוקנטליכקייט',
+'exif-gpsspeedref' => 'גיך איינהייט',
+'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
 'exif-gpsimgdirectionref' => 'רעפערענץ פאר ריכטונג פון בילד',
 'exif-gpsimgdirection' => 'ריכטונג פון בילד',
 'exif-gpsdestlatituderef' => 'רעפֿערענץ פֿאַר ברייט־ליניע פון ציל',
@@ -2959,14 +3013,21 @@ $1',
 'exif-gpsdestbearing' => 'ריכטונג פֿון ציל',
 'exif-gpsdestdistanceref' => 'רעפֿערענץ פֿאַר ווײַטקייט פֿון ציל',
 'exif-gpsdestdistance' => 'ווײַטקייט צום ציל',
+'exif-gpsprocessingmethod' => 'נאמען פון GPS פראצעסירן מעטאד',
 'exif-gpsareainformation' => 'נאמען פון GPS געגענט',
-'exif-gpsdatestamp' => 'דאטום GPS',
-'exif-gpsdifferential' => 'דיפראנציאלע קאקרעקציע GPS',
+'exif-gpsdatestamp' => 'GPS דאטע',
+'exif-gpsdifferential' => 'GPS דיפראנציאלע קאקרעקציע',
+'exif-jpegfilecomment' => 'JPEG טעקע הערה',
+'exif-keywords' => 'שליסלווערטער',
+'exif-worldregioncreated' => "וועלטראיאן וואו מ'האט גענומען דאס בילד",
+'exif-countrycreated' => "לאנד וואו מ'האט געמאכט דאס בילד",
 'exif-provinceorstatecreated' => "פראווינץ אדער שטאַט וואו מ'האט גענומען דאס בילד",
-'exif-citycreated' => "שטאַט וואו מ'האט געמאכט דאס בילד",
+'exif-citycreated' => "שטאָט וואו מ'האט געמאכט דאס בילד",
+'exif-worldregiondest' => 'וועלטראיאן געוויזן',
 'exif-countrydest' => 'לאנד געוויזן',
 'exif-countrycodedest' => 'קאד פאר לאנד געוויזן',
-'exif-citydest' => 'געוויזענע שטאט',
+'exif-provinceorstatedest' => 'פראווינץ אדער שטאַט געוויזן',
+'exif-citydest' => 'געוויזענע שטָאט',
 'exif-objectname' => 'קורצער טיטל',
 'exif-source' => 'מקור',
 'exif-editstatus' => 'רעדאקציאנעלער סטאטוס פון בילד',
@@ -2995,6 +3056,7 @@ $1',
 'exif-licenseurl' => 'URL פֿאר קאפירעכט ליצענץ',
 'exif-morepermissionsurl' => 'אלטערנאטיווע ליצענצירן אינפארמאציע',
 'exif-pngfilecomment' => 'PNG טעקע הערה',
+'exif-contentwarning' => 'אינהאלט ווארענונג',
 'exif-giffilecomment' => 'GIF טעקע הערה',
 'exif-intellectualgenre' => 'ארט  איינהייט',
 'exif-subjectnewscode' => 'טעמע קאד',
@@ -3066,7 +3128,7 @@ $1',
 
 'exif-contrast-0' => 'נארמאל',
 'exif-contrast-1' => 'ווייך',
-'exif-contrast-2' => 'הארט',
+'exif-contrast-2' => 'האַרט',
 
 'exif-saturation-0' => 'נארמאַל',
 
@@ -3301,8 +3363,27 @@ $5
 'iranian-calendar-m11' => 'באַהמאַן',
 'iranian-calendar-m12' => 'עספֿאַנד',
 
+# Hijri month names
+'hijri-calendar-m9' => 'ראמאדאן',
+'hijri-calendar-m10' => 'שאוואל',
+'hijri-calendar-m11' => 'דהו אל־קאדא',
+'hijri-calendar-m12' => 'דהו אל־הידזשא',
+
 # Hebrew month names
+'hebrew-calendar-m1' => 'תשרי',
+'hebrew-calendar-m2' => 'חשוון',
+'hebrew-calendar-m3' => 'כסלו',
+'hebrew-calendar-m4' => 'טבת',
+'hebrew-calendar-m5' => 'שבט',
+'hebrew-calendar-m6' => 'אדר',
+'hebrew-calendar-m6a' => "אדר א'",
+'hebrew-calendar-m6b' => "אדר ב'",
+'hebrew-calendar-m7' => 'ניסן',
+'hebrew-calendar-m8' => 'אייר',
 'hebrew-calendar-m9' => 'סיון',
+'hebrew-calendar-m10' => 'תמוז',
+'hebrew-calendar-m11' => 'אב',
+'hebrew-calendar-m12' => 'אלול',
 'hebrew-calendar-m1-gen' => 'תשרי',
 'hebrew-calendar-m2-gen' => 'חשוון',
 'hebrew-calendar-m3-gen' => 'כסלו',
@@ -3325,6 +3406,7 @@ $5
 'version' => 'ווערסיע',
 'version-specialpages' => 'ספעציעלע בלעטער',
 'version-variables' => 'וואַריאַבלען',
+'version-skins' => 'באניצער־אייבערפלאכן',
 'version-other' => 'אנדער',
 'version-version' => '(ווערסיע $1)',
 'version-license' => 'ליצענץ',
@@ -3520,5 +3602,6 @@ $5
 'duration-years' => '$1 {{PLURAL:$1|יאר|יאר}}',
 'duration-decades' => '$1 {{PLURAL:$1|צענדליקער|צענדליקערס}}',
 'duration-centuries' => '$1 {{PLURAL:$1|יארהונדערט|יארהונדערטער}}',
+'duration-millennia' => '$1 {{PLURAL:$1|יארטויזנט|יארטויזנטער}}',
 
 );
index c5a0a86..9fe1f99 100644 (file)
@@ -214,7 +214,7 @@ $messages = array(
 'vector-view-create' => "Ṣ'èdá",
 'vector-view-edit' => 'Àtúnṣe',
 'vector-view-history' => 'Wo ìtàn',
-'vector-view-view' => 'kà',
+'vector-view-view' => 'Àwòkà',
 'vector-view-viewsource' => 'Wo àmìọ̀rọ̀',
 'actions' => 'Àwọn ìgbéṣe',
 'namespaces' => 'Àwọn orúkọàyè',
@@ -271,7 +271,7 @@ $messages = array(
 'redirectpagesub' => 'Ojúewé àtúnjúwe',
 'lastmodifiedat' => 'Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ago $2, ọjọ́ọdún $1.',
 'viewcount' => 'A ti wo ojúewé yi ni {{PLURAL:$1|ẹ̀kan péré|iye ìgbà $1}}.',
-'protectedpage' => 'Ojúewé ajẹ́dídáàbòbò',
+'protectedpage' => 'Ojúewé oníàbò',
 'jumpto' => 'Lọ sí:',
 'jumptonavigation' => 'atọ́ka',
 'jumptosearch' => 'àwárí',
@@ -438,7 +438,7 @@ Fún ìyédèpadà, ẹ jọ̀wọ́ ẹ lo [//translatewiki.net/wiki/Main_Page?
 'customcssprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé CSS yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'customjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'ns-specialprotected' => 'Àtúnṣe kò ṣe é ṣe sí àwọn ojúewé pàtàkì.',
-'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá Ã ká»\8dlé yìí. Ã\80làyé rẹÌ\80 ni pí ''$2''.",
+'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá Ã ká»\8dlé yìí. Ã\8cdí rẹÌ\80 ni pé ''$2''.",
 
 # Virus scanner
 'virus-badscanner' => "Ìtorapọ̀ búburú: awáìpasẹ̀ èràn aláìmọ̀n : ''$1''",
@@ -466,8 +466,8 @@ A ti ṣ'èdá àpamọ́ yín.
 'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
 'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
 'userloginnocreate' => 'Ìwọlé',
-'logout' => 'Ìbọ́sóde',
-'userlogout' => 'Ìbọ́sóde',
+'logout' => 'Ìde',
+'userlogout' => 'Ìde',
 'notloggedin' => "Ẹ kò tí w'ọlé",
 'nologin' => "Ṣé ẹ fẹ́ wọlé? '''$1'''.",
 'nologinlink' => 'Ìforúkọsílẹ̀',
@@ -737,6 +737,7 @@ Tó bá jẹ́ pé oníṣe aláìlórúkọ ni yín, tí ẹ sì ri pé wọ́n
 'note' => "'''Àkíyèsí:'''",
 'previewnote' => "'''Ẹ rántí pé àyẹ̀wò lásán nì yí.'''
 Àwọn àtúnṣe yín kò tíì jẹ́ kìkópamọ́!",
+'continue-editing' => 'Ìtẹ̀síwájú àtúnṣe',
 'previewconflict' => 'Àkọ́wò yìí jẹ́ bí ìkọ̀rọ̀ inú àlà ìtúnṣe ìkọ̀rọ̀ òkè yíò ṣe hàn tí ẹ bá yàn láti ṣàmúpamọ́.',
 'session_fail_preview' => "'''Àforíjìn! A kò le gbésẹ̀ àtúnṣe yín nítorí ìpòfo data ìsinsìyí.
 Ẹ jọ̀wọ́ ẹ gbìyànjú lẹ́ẹ̀kan si.
@@ -752,6 +753,7 @@ Tí kò bá ṣiṣẹ́ síbẹ̀, ẹ gbìyànjú láti [[Special:UserLogout|j
 Èyí únsábà ṣẹlẹ̀ nígbàtí ẹ bá únlo ẹ̀rọ-ìwọ̀fà ẹlòmíràn aláìlórúkọ torí Internet tí kò dára.",
 'edit_form_incomplete' => "'''Àwọn apá kan fọ́ọ̀mù àtúnṣe kò dé ọ̀dọ̀ ẹ̀rọ-ìwọ̀fà; ẹ wo àtúnṣe yín pẹ́ o wà bí ẹ ṣe ṣé kí ẹ tó tún gbìyànjú lẹ́ẹ̀kan síi.'''",
 'editing' => 'Àtúnṣe sí $1',
+'creating' => 'Ìdá $1',
 'editingsection' => 'Àtúnṣe sí $1 (abala)',
 'editingcomment' => 'Àtúnṣe sí $1 (abala tuntun)',
 'editconflict' => 'Ìtakora àtúnṣe: $1',
@@ -1009,6 +1011,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 
 # Diffs
 'history-title' => 'Ìtàn àtúnyẹ̀wò fún "$1"',
+'difference-title' => 'Ìyàtọ̀ láàrin àwọn àtúnyẹ̀wò "$1"',
+'difference-title-multipage' => 'Ìyàtọ̀ láàrin àwọn ojúewé "$1" àti "$2"',
 'difference-multipage' => '(Ìyàtọ̀ láàrin àwọn ojúewé)',
 'lineno' => 'Ìlà $1:',
 'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
@@ -1105,6 +1109,7 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'prefs-beta' => 'Àwọn ìní Beta',
 'prefs-datetime' => 'Ọjọ́ọdún àti àkókò',
 'prefs-labs' => 'Àwọn ìní ibiàdánwò',
+'prefs-user-pages' => 'Àwọn ojúewé oníṣe',
 'prefs-personal' => 'Ọ̀rọ̀ nípa oníṣe',
 'prefs-rc' => 'Àwọn àtúnṣe tuntun',
 'prefs-watchlist' => 'Ìmójútó',
@@ -1267,7 +1272,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'right-movefile' => 'Yípò fáìlì',
 'right-suppressredirect' => 'Mọ́ dàá àwọn àtúnjúwe lati ojúewé orísun nígbà tí ojúewé bá únyípòdà',
 'right-upload' => 'Ìrùsókè àwọn faili',
-'right-reupload' => 'Kọléṣórí fáìlì tó wà yìí',
+'right-reupload' => 'Ìkọṣórí àwọn fáìlì',
 'right-reupload-own' => 'Ìkọsórí àwọn fáìlì tó wà tí wọn jẹ́ rírùsókè lọ́wọ́ araẹni',
 'right-reupload-shared' => 'Ìrékọjá àwọn fáìlì nínú ibi-àkójọ amóhùnmáwòrán àjọpín lábẹ́lé',
 'right-upload_by_url' => 'Ìrùsókè àwọn faili láti URL kan',
@@ -1333,7 +1338,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'action-move-subpages' => 'yípò ojúewé yìí àti àwọn ọmọ ojúewé rẹ̀',
 'action-move-rootuserpages' => 'yípòdà gbọ̀ngàn àwọn ojúewé oníṣe',
 'action-movefile' => 'yípò fáìlì yìí',
-'action-upload' => 'rùsókè fáìlì yìí',
+'action-upload' => 'ìrùsókè fáìlì yìí',
 'action-reupload' => 'kọléṣórí fáìlì tó wà yìí',
 'action-reupload-shared' => 'ṣe ìrékọjá fáìlì yìí nínú ibi-àkójọ àjọpín',
 'action-upload_by_url' => 'rùsókè fáìlí yìí láti URL',
@@ -1564,7 +1569,7 @@ Tí ìṣòro náà ò bá jáwọ́, ẹ bẹ [[Special:ListUsers/sysop|olùmó
 'backend-fail-writetemp' => 'Kò le kọ sínú fáìlì onígbàdíẹ̀.',
 'backend-fail-closetemp' => 'Kò le de fáìlì onígbàdíẹ̀.',
 'backend-fail-read' => 'Kò le ka fáìlì "$1".',
-'backend-fail-create' => 'Kò le dá fáìlì "$1".',
+'backend-fail-create' => 'Kò le kọ fáìlì $1.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Kò le sí àgádágodo "$1" sílẹ̀; kò jẹ́ dídè.',
@@ -2530,6 +2535,9 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'import-logentry-interwiki' => 'mú $1 wá láti inú wiki míràn',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1 láti $2',
 
+# JavaScriptTest
+'javascripttest' => 'Ìdánwò JavaScript',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ojúewé oníṣe yín',
 'tooltip-pt-mytalk' => 'Ojúewé ọ̀rọ̀ yín',
@@ -2538,7 +2546,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'tooltip-pt-mycontris' => 'Àkójọ àwọn àfikún yín',
 'tooltip-pt-login' => 'A gbà yín níyànjú kí ẹwọlé, bótilẹ̀jẹ́pẹ́ kò pọndandan.',
 'tooltip-pt-anonlogin' => 'A gbàyín níyànjú láti wọlé, bótilẹ̀jẹ́pé kò ṣe dandan.',
-'tooltip-pt-logout' => 'Ìbọ́sódé',
+'tooltip-pt-logout' => 'Ìjáde',
 'tooltip-ca-talk' => 'Ìfọ̀rọ̀wérọ̀ nípa ohun inú ojúewé yìí',
 'tooltip-ca-edit' => 'Ẹ le ṣe àtúnṣe sí ojúewé yìí.
 Ẹ jọ̀wọ́ ẹ lo bọtini àyẹ̀wò kí ẹ tó fipamọ́.',
@@ -2609,6 +2617,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'spamprotectiontitle' => 'Ajọ̀ àbò spam',
 
 # Info page
+'pageinfo-title' => 'Àròyé fún "$1"',
 'pageinfo-header-edits' => 'Àwọn àtúnṣe',
 'pageinfo-header-watchlist' => 'Ìmójútó',
 'pageinfo-header-views' => 'Àwọn ìwò',
@@ -2639,6 +2648,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|ojúewé|àwọn ojúewé}}',
 'file-info' => 'ìtóbi faili: $1, irú MIME: $2',
 'file-info-size' => '$1 × $2 pixel, ìtóbi faili: $3, irú MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixel, ìtóbi faili: $3, irú MIME: $4, {{PLURAL:$5|ojúewé|ojúewé}} $5',
 'file-nohires' => 'Kò sí ìgbéhàn gíga jù báun lọ.',
 'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
 'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
@@ -2878,6 +2888,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'version-poweredby-credits' => "Agbára ìṣiṣẹ́ wiki yìí wá látọwọ́ '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'àwọn mìíràn',
 'version-software-version' => 'Àtẹ̀jáde',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Ipaṣẹ̀ fáìlì',
@@ -2980,4 +2991,12 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'api-error-unknown-code' => 'Àsìṣe aláìlójúùtú: "$1".',
 'api-error-unknownerror' => 'Àsìṣe aláìlójúùtú: "$1".',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|ìṣẹ́júkejì|ìṣẹ́júkejì}} $1',
+'duration-minutes' => '{{PLURAL:$1|ìṣẹ́jú|ìṣẹ́jú}} $1',
+'duration-hours' => '{{PLURAL:$1|wákàtí|wákàtí}} $1',
+'duration-days' => '{{PLURAL:$1|ọjọ́|ọjọ́}} $1',
+'duration-weeks' => '{{PLURAL:$1|ọ̀sẹ̀|ọ̀sẹ̀}} $1',
+'duration-years' => '{{PLURAL:$1|ọdún|ọdún}} $1',
+
 );
index 2eb7a06..ea1a0a6 100644 (file)
@@ -1446,7 +1446,7 @@ $1",
 'nchanges' => '$1次更改',
 'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改選項',
-'recentchangestext' => '追蹤對哩一個 wiki 嘅最後更改。',
+'recentchanges-summary' => '追蹤對哩一個 wiki 嘅最後更改。',
 'recentchanges-feed-description' => '追蹤對哩一個 wiki 度呢個集合嘅最後更改。',
 'recentchanges-label-newpage' => '呢次編輯開咗一個新版',
 'recentchanges-label-minor' => '呢個係一個細編輯',
index 6fde574..a326277 100644 (file)
@@ -960,7 +960,7 @@ Een nie anekruusd vienkvakje beteêken da de gebruker hin lid is van de hroep.",
 'nchanges' => '$1 {{PLURAL:$1|bewerkieng|bewerkiengen}}',
 'recentchanges' => 'Juust angepast',
 'recentchanges-legend' => 'Opties vò juust angepast',
-'recentchangestext' => 'Bekiek wat-a juust veranderd is op deêze wiki.',
+'recentchanges-summary' => 'Bekiek wat-a juust veranderd is op deêze wiki.',
 'recentchanges-feed-description' => 'Bekiek wat-a juust veranderd is op deêze wiki.',
 'recentchanges-label-newpage' => "Mei deêze bewarkienge is 'n nuwe pagina angemaekt",
 'recentchanges-label-minor' => 'Dit is een kleine wieziging',
index 3572e30..6e6ad18 100644 (file)
@@ -173,21 +173,8 @@ $specialPageAliases = array(
 );
 
 $messages = array(
-# User preference toggles
-'tog-norollbackdiff' => '進行回退後略過差異比較',
-
-'newpage' => '最新页面',
-
-# Edit pages
-'editing' => '正在编辑 $1',
-
-# Miscellaneous special pages
-'newpages' => '最新页面',
-
 /*
 Short names for language variants used for language conversion links.
-To disable showing a particular link, set it to 'disable', e.g.
-'variantname-zh-sg' => 'disable',
 Variants for Chinese language
 */
 'variantname-zh-hans' => '简体',
index f4f64e5..45c578e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Simplified Chinese (‪中文(简体)‬)
+/** Simplified Chinese (‪中文(简体)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -15,6 +15,7 @@
  * @author Chenxiaoqino
  * @author Chenzw
  * @author Chinalace
+ * @author Dimension
  * @author Dingyuang
  * @author Fantasticfears
  * @author Fengchao
@@ -52,6 +53,7 @@
  * @author Wrightbus
  * @author Xiaomingyan
  * @author Yfdyh000
+ * @author 燃玉
  * @author 阿pp
  */
 
@@ -533,7 +535,7 @@ $1',
 'youhavenewmessages' => '你有$1($2)。',
 'newmessageslink' => '新信息',
 'newmessagesdifflink' => '最后更改',
-'youhavenewmessagesmulti' => '您在$1有一条新信息',
+'youhavenewmessagesmulti' => '你在$1有新信息',
 'editsection' => '编辑',
 'editold' => '编辑',
 'viewsourceold' => '查看源代码',
@@ -555,7 +557,7 @@ $1',
 'site-atom-feed' => '$1的Atom',
 'page-rss-feed' => '“$1”的RSS订阅',
 'page-atom-feed' => '“$1”的Atom订阅',
-'red-link-title' => '$1(尚未撰写)',
+'red-link-title' => '$1(页面不存在)',
 'sort-descending' => '降序',
 'sort-ascending' => '升序',
 
@@ -630,7 +632,7 @@ $1',
 'viewsource' => '查看源代码',
 'viewsource-title' => '查看$1的源代码',
 'actionthrottled' => '操作被限制',
-'actionthrottledtext' => '基于反垃圾链接的考量,您被限制在短时间内多次重复该操作,但您已超过此上限。请在数分钟后再尝试。',
+'actionthrottledtext' => '基于反垃圾的考量,您被限制在短时间内多次重复该操作,但您已超过此上限。请在数分钟后再尝试。',
 'protectedpagetext' => '该页面已被保护以防止编辑。',
 'viewsourcetext' => '您可以查看并复制此页面的源代码:',
 'viewyourtext' => "您可以查看并复制'''您对此页面作出编辑后'''的源代码:",
@@ -660,7 +662,7 @@ $2',
 
 您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份[[Special:UserLogin|登录]]。请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
 'welcomecreation' => '== 欢迎,$1! ==
-您的账户已经建立。别忘了设置您的[[Special:Preferences|{{SITENAME}}个人参数]]。',
+你的账户已创建。请别忘记更改你的[[Special:Preferences|{{SITENAME}}系统设置]]。',
 'yourname' => '用户名:',
 'yourpassword' => '密码:',
 'yourpasswordagain' => '再次输入密码:',
@@ -676,7 +678,7 @@ $2',
 'logout' => '退出',
 'userlogout' => '退出',
 'notloggedin' => '未登录',
-'nologin' => '你还没有账户吗?$1。',
+'nologin' => '没有账户?$1。',
 'nologinlink' => '创建账户',
 'createaccount' => '创建账户',
 'gotaccount' => '已经拥有账户?请$1。',
@@ -696,7 +698,7 @@ $2',
 'loginsuccesstitle' => '登录成功',
 'loginsuccess' => "'''“$1”,欢迎登录{{SITENAME}}。'''",
 'nosuchuser' => '找不到用户“$1”。用户名是大小写敏感且区分繁简体的。请检查您的拼写,或者[[Special:UserLogin/signup|建立一个新账户]]。',
-'nosuchusershort' => '没有一个名为“$1”的用户。请检查您输入的文字是否有错误。',
+'nosuchusershort' => '没有名为“$1”的用户。请检查您输入的文字是否有错误。',
 'nouserspecified' => '你需要指定一个用户名。',
 'login-userblocked' => '该用户已被封禁,禁止登录。',
 'wrongpassword' => '您输入的密码错误,请再试一次。',
@@ -810,7 +812,7 @@ $2
 'italic_tip' => '斜体文字',
 'link_sample' => '链接文字',
 'link_tip' => '内部链接',
-'extlink_sample' => 'http://www.example.com é\93¾æ\8e¥æ \87é¢\98',
+'extlink_sample' => 'http://www.example.com é\93¾æ\8e¥æ\96\87å­\97',
 'extlink_tip' => '外部链接(加前缀 http://)',
 'headline_sample' => '大标题文字',
 'headline_tip' => '2级标题文字',
@@ -819,7 +821,7 @@ $2
 'image_tip' => '插入文件',
 'media_tip' => '文件链接',
 'sig_tip' => '带时间戳的签名',
-'hr_tip' => '水平线 (小心使用)',
+'hr_tip' => '水平线(请小心使用)',
 
 # Edit pages
 'summary' => '摘要:',
@@ -834,7 +836,7 @@ $2
 'anoneditwarning' => "'''警告:'''您没有登录。
 您的IP地址将记录在此页的编辑历史中。",
 'anonpreviewwarning' => "''您没有登录。保存页面将会把您的IP地址记录在此页的编辑历史中。''",
-'missingsummary' => "'''提示:''' 您没有提供一个编辑摘要。如果您再次单击“{{int:savearticle}}”,您的编辑将不带编辑摘要保存。",
+'missingsummary' => "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
 'missingcommenttext' => '请在下面输入评论。',
 'missingcommentheader' => "'''提示:''' 您没有为此评论提供一个标题。如果您再次单击“{{int:savearticle}}”,您的编辑将不带标题保存。",
 'summary-preview' => '摘要预览:',
@@ -871,21 +873,22 @@ $2
 'accmailtext' => "'$1'的密码已经被发送到$2。",
 'newarticle' => '(新页面)',
 'newarticletext' => '您进入了一个尚未创建的页面。
-要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{MediaWiki:Helppage}}|帮助]])。
-如果您是不小心来到此页面,直接点击您浏览器中的“返回”按钮返回。',
+要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{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}}}} 搜索有关日志]</span>。',
-'userpage-userdoesnotexist' => '用户账户“<nowiki>$1</nowiki>”未曾创建。请在创建/编辑这个页面前先检查一下。',
+'userpage-userdoesnotexist' => '用户账户"$1"未注册。
+请在创建/编辑该页之前进行核对。',
 'userpage-userdoesnotexist-view' => '用户账户“$1”未曾创建。',
 'blocked-notice-logextract' => '这位用户目前已被封禁。以下提供最近的封禁日志以供参考:',
-'clearyourcache' => "'''注意:在保存以后,您必须绕过浏览器缓存才能看到所作出的改变。'''
-* '''火狐(Firefox)/Safari''':按住“Shift”键再点击“刷新”,或按下“Ctrl-F5”或“Ctrl-R”(Mac上为“⌘-R”)
-* '''谷歌浏览器(Google Chrome)''':按下“Ctrl-Shift-R”(Mac上为“⌘-Shift-R”)
-* '''Internet Explorer''':按住“Ctrl”键再点击“刷新”,或按下“Ctrl-F5”
-* '''Konqueror''':点击“刷新”或按下“F5”
-* '''Opera''':在“工具→首选项”中清除缓存",
+'clearyourcache' => "'''注意:'''保存之后,你必须清除浏览器缓存才能看到做出的更改。
+* '''火狐(Firefox)/Safari:'''按住“Shift”,同时单击“刷新”,或按“Ctrl-F5”或“Ctrl-R”(Mac为“⌘-R”)
+* '''谷歌浏览器(Google Chrome):'''按“Ctrl-Shift-R”(Mac为“⌘-Shift-R”)
+* '''Internet Explorer:'''按住“Ctrl”,同时单击“刷新”,或按“Ctrl-F5”
+* '''Konqueror:'''点击“刷新”或按“F5”
+* '''Opera:'''在“工具→首选项”中清除缓存",
 'usercssyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 CSS 。",
 'userjsyoucanpreview' => "'''提示:''' 在保存前请用“{{int:showpreview}}”按钮来测试您新的 JavaScript 。",
 'usercsspreview' => "'''记住您只是在预览您的个人 CSS。'''
@@ -908,8 +911,9 @@ $2
 ''由于{{SITENAME}}允许使用原始的 HTML,为了防范 JavaScript 攻击,预览已被隐藏。''
 
 '''如果这是一次合法的编辑,请重新进行尝试。'''如果还不行,请[[Special:UserLogout|退出]]并重新登录。",
-'token_suffix_mismatch' => "'''由于您用户端中的编辑令牌毁损了一些标点符号字元,为防止编辑的文字损坏,您的编辑已经被拒绝。'''
-这种情况通常出现于使用含有很多臭虫、以网络为主的匿名代理服务的时候。",
+'token_suffix_mismatch' => "'''由于您用户端中的编辑令牌毁损了一些标点符号字元,您的编辑已经被拒绝。'''
+此次编辑被拒绝以防止页面文本损坏。
+这种情况通常在您使用含有故障的网页式匿名代理服务的时候出现。",
 'edit_form_incomplete' => "'''编辑表单的某些部分没有到达服务器 ;请检查您的编辑内容是否完整并再试一次。'''",
 'editing' => '编辑“$1”',
 'creating' => '创建 $1',
@@ -921,7 +925,7 @@ $2
 你所做的修改显示在下面的文字框中。
 你应当将你所做的修改加入现有的内容中。
 '''只有'''在上面文字框中的内容会在你点击“{{int:savearticle}}”后被保存。",
-'yourtext' => '的文字',
+'yourtext' => '的文字',
 'storedversion' => '已保存的版本',
 'nonunicodebrowser' => "'''警告:您的浏览器不兼容Unicode编码。'''这里有一个工作区将使您能安全地编辑页面:非ASCII字符将以十六进制编码方式出现在编辑框中。",
 'editingold' => "'''警告:你正在编辑的是本页的旧版本。'''
@@ -942,8 +946,8 @@ $2
 
 锁定数据库的管理员有如下解释:$1",
 'protectedpagewarning' => "'''警告:本页面已被保护,只有拥有管理员权限的用户可以编辑。'''下面提供最后的日志条目以供参考:",
-'semiprotectedpagewarning' => "'''注意:''' 本页面已被保护,只有注册用户可以编辑。下面提供最后的日志条目以供参考:",
-'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''æ\9c¬é¡µé\9d¢å·²è¢«ä¿\9dæ\8a¤ï¼\8cå\8fªæ\9c\89æ\8b¥æ\9c\89管ç\90\86å\91\98æ\9d\83é\99\90ç\9a\84ç\94¨æ\88·å\8f¯ä»¥ç¼\96è¾\91ï¼\8cå\9b ä¸ºå\85¶å\8c\85å\90«äº\8eä¸\8bå\88\97受连锁保护的{{PLURAL:$1|页面}}:",
+'semiprotectedpagewarning' => "'''注意:'''本页面已被保护,只有注册用户可以编辑。下面提供最后的日志条目以供参考:",
+'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''æ\9c¬é¡µé\9d¢å·²è¢«ä¿\9dæ\8a¤ï¼\8cå\8fªæ\9c\89æ\8b¥æ\9c\89管ç\90\86å\91\98æ\9d\83é\99\90ç\9a\84ç\94¨æ\88·å\8f¯ä»¥ç¼\96è¾\91ï¼\8cå\9b ä¸ºå\85¶å\8c\85å\90«äº\8e以ä¸\8b受连锁保护的{{PLURAL:$1|页面}}:",
 'titleprotectedwarning' => "'''警告:本页面已被保护,创建本页面需要[[Special:ListGroupRights|特定权限]]。'''下面提供最后的日志条目以供参考:",
 'templatesused' => '该页面使用的{{PLURAL:$1|模板}}:',
 'templatesusedpreview' => '本预览使用的{{PLURAL:$1|模板}}:',
@@ -951,21 +955,21 @@ $2
 'template-protected' => '(保护)',
 'template-semiprotected' => '(半保护)',
 'hiddencategories' => '本页面属于$1个隐藏分类:',
-'edittools' => '<!-- 这里的文字将显示在编辑和上传表单下方。 -->',
+'edittools' => '<!-- 这里的文字将显示在编辑和上传表格下面。 -->',
 'nocreatetitle' => '创建页面受限',
 'nocreatetext' => '{{SITENAME}}限制了创建新页面的功能。你可以返回并编辑已有的页面,或者[[Special:UserLogin|登录或创建新账户]]。',
 'nocreate-loggedin' => '你没有权限创建新页面。',
 'sectioneditnotsupported-title' => '段落编辑不支持',
 'sectioneditnotsupported-text' => '本页面不支持段落编辑。',
 'permissionserrors' => '权限错误',
-'permissionserrorstext' => '根据下列{{PLURAL:$1|原因}},你没有权限进行本操作:',
+'permissionserrorstext' => '因为以下{{PLURAL:$1|原因}},你没有权限进行该操作:',
 'permissionserrorstext-withaction' => '因为以下{{PLURAL:$1|原因}},你没有权限$2:',
 'recreate-moveddeleted-warn' => "'''警告:你正在重新创建曾经被删除的页面。'''
 
 你应该考虑继续编辑本页是否合适。这里提供本页的删除和移动记录以供参考:",
 'moveddeleted-notice' => '本页面已被删除。下面提供本页的删除和移动日志以供参考。',
 'log-fulllog' => '查看完整日志',
-'edit-hook-aborted' => '编辑被取消。
+'edit-hook-aborted' => '编辑被hook指令取消。
 无解释。',
 'edit-gone-missing' => '不能更新页面。
 它可能刚刚被删除。',
@@ -1040,14 +1044,14 @@ $3的理由是''$2''",
 尝试[[Special:Search|搜索本站]]获得相关的新建页面。',
 
 # Revision deletion
-'rev-deleted-comment' => '(编辑摘要删除)',
-'rev-deleted-user' => '(用户名删除)',
-'rev-deleted-event' => '(日志条目删除)',
-'rev-deleted-user-contribs' => '[用户名或IP地址已移除 - 从贡献中隐藏编辑]',
+'rev-deleted-comment' => '(编辑摘要删除)',
+'rev-deleted-user' => '(用户名删除)',
+'rev-deleted-event' => '(日志条目删除)',
+'rev-deleted-user-contribs' => '[用户名或IP地址被删除 - 编辑在贡献中隐藏]',
 'rev-deleted-text-permission' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]。",
 'rev-deleted-text-unhide' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。如果你想继续操作,你仍然可以[$1 查看本版本]。",
 'rev-suppressed-text-unhide' => "该页面修订已经被'''监督隐藏'''。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
-'rev-deleted-text-view' => "该页面修订已经被'''删除'''。您可以查看它。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到详细的信息。",
+'rev-deleted-text-view' => "本页面版本已被'''删除'''。你可以查看它,详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
 'rev-suppressed-text-view' => "该页面修订已经被'''监督隐藏'''。您可以查看它。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。",
 'rev-deleted-no-diff' => "因为其中一次修订已被'''删除''',您不可以查看这个差异。
 在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中可以找到更多的信息。",
@@ -1085,7 +1089,7 @@ $3的理由是''$2''",
 'revdelete-hide-comment' => '隐藏编辑摘要',
 'revdelete-hide-user' => '隐藏编辑者的用户名/IP地址',
 'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
-'revdelete-radio-same' => '(勿更改)',
+'revdelete-radio-same' => '(不要更改)',
 'revdelete-radio-set' => '是',
 'revdelete-radio-unset' => '否',
 'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
@@ -1153,8 +1157,8 @@ $1",
 
 # Diffs
 'history-title' => '“$1”的版本历史',
-'difference-title' => '"$1"不同修订版本之间的差异',
-'difference-title-multipage' => '页面"$1"与"$2"之间的差异',
+'difference-title' => '“$1”的版本间的差异',
+'difference-title-multipage' => '页面“$1”与“$2”之间的差异',
 'difference-multipage' => '(页面间的差异)',
 'lineno' => '第$1行:',
 'compareselectedversions' => '对比选择的版本',
@@ -1201,7 +1205,7 @@ $1",
 'search-redirect' => '(重定向自“$1”)',
 'search-section' => '(“$1”段落)',
 'search-suggest' => '您是不是要找:$1',
-'search-interwiki-caption' => 'å§\90妹项目',
+'search-interwiki-caption' => 'å§\8a妹项目',
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
 'search-mwsuggest-enabled' => '有建议',
@@ -1213,7 +1217,7 @@ $1",
 'searchall' => '所有',
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
-'showingresultsheader' => "对'''$4'''ç\9a\84{{PLURAL:$5|第'''$1'''è\87³ç¬¬'''$3'''项ç»\93æ\9e\9c|第'''$1'''è\87³ç¬¬'''$2'''项ç»\93æ\9e\9cï¼\8cå\85±'''$3'''项结果}}",
+'showingresultsheader' => "å\85³äº\8e'''$4'''ç\9a\84{{PLURAL:$5|第'''$1'''æ\9d¡è\87³ç¬¬'''$3'''æ\9d¡ç»\93æ\9e\9c|第'''$1'''æ\9d¡è\87³ç¬¬'''$2'''æ\9d¡ç»\93æ\9e\9cï¼\8cå\85±'''$3'''æ\9d¡结果}}",
 'nonefound' => "'''注意''':只有部分名字空间的页面会被默认搜索。尝试在您的搜索语句前添加“all:”前缀,这样可以搜索全部页面(包括讨论页、模板等),或者亦可使用所需名字空间作为前缀。",
 'search-nonefound' => '找不到和查询相匹配的结果。',
 'powersearch' => '高级搜索',
@@ -1249,6 +1253,7 @@ $1",
 'prefs-beta' => '测试版特色',
 'prefs-datetime' => '日期和时间',
 'prefs-labs' => '实验室特色',
+'prefs-user-pages' => '用户页面',
 'prefs-personal' => '用户资料',
 'prefs-rc' => '最近更改',
 'prefs-watchlist' => '监视列表',
@@ -1261,7 +1266,7 @@ $1",
 'prefs-resetpass' => '更改密码',
 'prefs-changeemail' => '更改电子邮件地址',
 'prefs-setemail' => '设置电子邮件地址',
-'prefs-email' => '电子邮件选项',
+'prefs-email' => '电子邮件',
 'prefs-rendering' => '显示',
 'saveprefs' => '保存',
 'resetprefs' => '清除未保存的更改',
@@ -1272,14 +1277,14 @@ $1",
 'columns' => '列:',
 'searchresultshead' => '搜索',
 'resultsperpage' => '每页显示链接数:',
-'stub-threshold' => '<a href="#" class="stub">ç\9f­é¡µé\9d¢é\93¾æ\8e¥</a>æ ¼å¼\8fé\97¨æ§\9b值(字节):',
+'stub-threshold' => '<a href="#" class="stub">ç\9f­é¡µé\9d¢é\93¾æ\8e¥</a>æ ¼å¼\8fé\98\88值(字节):',
 'stub-threshold-disabled' => '已停用',
-'recentchangesdays' => '最近更改中的显示日数:',
-'recentchangesdays-max' => '最多$1{{PLURAL:$1|天}}',
+'recentchangesdays' => '最近更改中显示的天数:',
+'recentchangesdays-max' => '最多$1',
 'recentchangescount' => '默认显示的编辑数:',
-'prefs-help-recentchangescount' => 'è¿\99个å\8c\85æ\8b¬æ\9c\80è¿\91æ\9b´æ\94¹ã\80\81页é\9d¢å\8e\86å\8f²ä»¥å\8f\8a日志。',
+'prefs-help-recentchangescount' => '该项å\8c\85å\90«æ\9c\80è¿\91æ\9b´æ\94¹ã\80\81页é\9d¢å\8e\86å\8f²å\92\8c日志。',
 'prefs-help-watchlist-token' => '此栏填写的密钥可以生成您监视列表的RSS源。任何知晓本栏密钥的人都能阅读您的监视列表,因此请使用安全的数值。这里已提供了一个随机生成的数值供您选择:$1',
-'savedprefs' => '您的个人参数设置已经保存。',
+'savedprefs' => '你的系统设置已经保存。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时间:',
 'timezoneuseserverdefault' => '使用wiki默认值($1)',
@@ -1306,7 +1311,7 @@ $1",
 'prefs-custom-css' => '自定义CSS',
 'prefs-custom-js' => '自定义JavaScript',
 'prefs-common-css-js' => '所有皮肤共用的CSS/JavaScript:',
-'prefs-reset-intro' => '您可以利用这个页面去重设您的参数设置到网站默认值。这个动作无法复原。',
+'prefs-reset-intro' => '你可以使用本页面重置你的系统设置为网站默认值。该操作不能撤销。',
 'prefs-emailconfirm-label' => '电子邮件确认:',
 'prefs-textboxsize' => '编辑框大小',
 'youremail' => '电子邮件:',
@@ -1319,22 +1324,20 @@ $1",
 'yourvariant' => '内容语言变种:',
 'prefs-help-variant' => '您希望用于显示本站内容的语种或拼写语系。',
 'yournick' => '新签名:',
-'prefs-help-signature' => '在讨论页上的发言应该使用“<nowiki>~~~~</nowiki>”签名,它会被自动转换成你的签名并附带时间戳。',
+'prefs-help-signature' => '讨论页面上的评论应该使用“<nowiki>~~~~</nowiki>”签名,它会自动转换为你的签名及时间戳。',
 'badsig' => '错误的原始签名。请检查HTML标签。',
-'badsiglength' => '签名过长。
-它的长度不可超过$1个字符。',
+'badsiglength' => '签名过长。请不超过$1个字符。',
 'yourgender' => '性别:',
 'gender-unknown' => '不指明',
 'gender-male' => '男',
 'gender-female' => '女',
-'prefs-help-gender' => '可选:用以软件中的性别指定。此项资料将会被公开。',
-'email' => '电子邮箱',
-'prefs-help-realname' => '真实姓名为选填项。
-如果提供,可用于贡献署名。',
+'prefs-help-gender' => '选填项目。使软件使用正确的性别称呼。该信息将会公开。',
+'email' => '电子邮件',
+'prefs-help-realname' => '真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。',
 'prefs-help-email' => '电子邮件地址是选填项目。但是在你忘记密码需要重置密码时需要电子邮件地址。',
 'prefs-help-email-others' => '你亦可以选择让其他用户通过你的用户页或讨论页上的链接用电子邮件联系你。其他用户联系你时你的电子邮件地址不会显示。',
-'prefs-help-email-required' => '需要电子邮件地址。',
-'prefs-info' => '基本资料',
+'prefs-help-email-required' => '电子邮件地址是必填项目。',
+'prefs-info' => '基本信息',
 'prefs-i18n' => '界面语言',
 'prefs-signature' => '签名',
 'prefs-dateformat' => '日期格式',
@@ -1351,7 +1354,7 @@ $1",
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => '电子邮件地址有效',
-'email-address-validity-invalid' => '请提供一个有效的电子邮件地址',
+'email-address-validity-invalid' => '请输入有效的电子邮件地址',
 
 # User rights
 'userrights' => '用户权限管理',
@@ -1363,10 +1366,10 @@ $1",
 'saveusergroups' => '保存用户组',
 'userrights-groupsmember' => '用户组:',
 'userrights-groupsmember-auto' => '自动用户组:',
-'userrights-groups-help' => '可以更改该用户的用户组:
-* é\92©é\80\89的选项框表示该用户属于该用户组。
-* æ\9cªé\92©é\80\89的选项框表示该用户不属于该用户组。
-* æ \87æ\98\9få\8f·ï¼\88*ï¼\89ç\9a\84项ç\9b®è¡¨ç¤ºä½ ä¸\80æ\97¦æ·»å\8a è¯¥ç\94¨æ\88·ç»\84å\90\8eä¸\8dè\83½å\88 é\99¤。',
+'userrights-groups-help' => '可以更改该用户的用户组:
+* é\80\89中的选项框表示该用户属于该用户组。
+* æ\9cªé\80\89中的选项框表示该用户不属于该用户组。
+* æ\98\9få\8f·ï¼\88*ï¼\89表示ä¸\80æ\97¦æ·»å\8a è¯¥ç\94¨æ\88·ç»\84å\90\8eä¸\8dè\83½å\88 é\99¤ï¼\8cå\8f\8dä¹\8b亦ç\84。',
 'userrights-reason' => '原因:',
 'userrights-no-interwiki' => '您并没有权限去编辑在其它wiki上的用户权限。',
 'userrights-nodatabase' => '数据库$1不存在或并非为本地的。',
@@ -1410,60 +1413,60 @@ $1",
 'right-move-subpages' => '移动页面及其子页面',
 'right-move-rootuserpages' => '移动根用户页面',
 'right-movefile' => '移动文件',
-'right-suppressredirect' => '移å\8a¨é¡µé\9d¢æ\97¶ä¸\8då\9c¨æº\90页é\9d¢å\88\9b建重定向',
+'right-suppressredirect' => '移å\8a¨é¡µé\9d¢æ\97¶ä¸\8då\88\9b建æ\9d¥è\87ªæ\9d¥æº\90页é\9d¢ç\9a\84重定向',
 'right-upload' => '上传文件',
-'right-reupload' => '覆盖已有文件',
-'right-reupload-own' => '覆盖由同一位上传的文件',
-'right-reupload-shared' => '于本地无视共用媒体文件库上的文件',
-'right-upload_by_url' => '由一个URL上传文件',
-'right-purge' => '不需要确认之下清除网站快取',
+'right-reupload' => '覆盖现存文件',
+'right-reupload-own' => '覆盖自己上传的文件',
+'right-reupload-shared' => '本地覆盖共享文件库的文件',
+'right-upload_by_url' => 'URL上传文件',
+'right-purge' => '无确认清除页面缓存',
 'right-autoconfirmed' => '编辑半保护页面',
-'right-bot' => 'è§\86为ä¸\80个è\87ªå\8a¨ç¨\8båº\8f',
-'right-nominornewtalk' => '小编辑不引发新信息提示',
-'right-apihighlimits' => '在API查询中使用更高的上限',
-'right-writeapi' => '使用编写的API',
+'right-bot' => '被è§\86为è\87ªå\8a¨è¿\87ç¨\8b',
+'right-nominornewtalk' => '不使小编辑在讨论页面引发新信息提示',
+'right-apihighlimits' => '在API问题中使用更高的限制',
+'right-writeapi' => '使用书写API',
 'right-delete' => '删除页面',
-'right-bigdelete' => '删除大量历史之页面',
-'right-deleterevision' => 'å\88 é\99¤å\8f\8aå\90\8cå\8f\8då\88 é\99¤é¡µé\9d¢ä¸­ç\9a\84æ\8c\87å®\9a修订',
-'right-deletedhistory' => '查看已删除的历史项目,不含关联的文本',
-'right-deletedtext' => '查看已删除修订中之已删除的字以及更改',
-'right-browsearchive' => '搜索已删除之页面',
+'right-bigdelete' => '删除有大型历史的页面',
+'right-deleterevision' => 'å\88 é\99¤å\92\8cæ\81¢å¤\8d页é\9d¢ç\9a\84ç\89¹å®\9aç\89\88æ\9c¬',
+'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
+'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
+'right-browsearchive' => '搜索被删除的页面',
 'right-undelete' => '恢复页面',
-'right-suppressrevision' => '查看和恢复由管理员隐藏的修订',
-'right-suppressionlog' => '查看私人的日志',
-'right-block' => '封锁其他用户防止编辑',
-'right-blockemail' => '封锁用户不可发电邮',
-'right-hideuser' => '封锁用户名,对公众隐藏',
-'right-ipblock-exempt' => 'ç»\95è¿\87IPå°\81é\94\81ã\80\81è\87ªå\8a¨å°\81é\94\81以å\8f\8aè\8c\83å\9b´å°\81é\94\81',
-'right-proxyunbannable' => 'ç»\95è¿\87Proxyç\9a\84è\87ªå\8a¨å°\81é\94\81',
-'right-unblockself' => '自æ\88\91解é\99¤å°\81é\94\81',
-'right-protect' => 'æ\9b´æ\94¹ä¿\9dæ\8a¤ç­\89级以å\8f\8aç¼\96è¾\91保护页面',
+'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
+'right-suppressionlog' => '查看非公开日志',
+'right-block' => '阻止其他用户编辑',
+'right-blockemail' => '阻止用户电邮联系',
+'right-hideuser' => '封禁并隐藏用户名',
+'right-ipblock-exempt' => 'é\81¿å¼\80IPå°\81ç¦\81ã\80\81è\87ªå\8a¨å°\81ç¦\81å\92\8cIP段å°\81ç¦\81',
+'right-proxyunbannable' => 'é\81¿å¼\80代ç\90\86æ\9c\8då\8a¡å\99¨ç\9a\84è\87ªå\8a¨å°\81ç¦\81',
+'right-unblockself' => '自己解å°\81',
+'right-protect' => 'æ\9b´æ\94¹ä¿\9dæ\8a¤çº§å\88«å\92\8cç¼\96è¾\91å\8f\97保护页面',
 'right-editprotected' => '编辑保护页面(无连锁保护)',
 'right-editinterface' => '编辑用户界面',
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-rollback' => '快速回退最后对特定页面作出的编辑的用户的所有编辑',
-'right-markbotedits' => '将回退编辑标记为机器人编辑动作',
-'right-noratelimit' => '没有使用频率限制',
-'right-import' => '由其它wiki中导入页面',
-'right-importupload' => '由文件上传中导入页面',
-'right-patrol' => '标他人的编辑为已巡查',
-'right-autopatrol' => '将自己的编辑自动标示为已巡查的',
-'right-patrolmarks' => '查看最近巡查标记更改',
-'right-unwatchedpages' => '查看未监视页面列表',
+'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'right-markbotedits' => '标记回退编辑为机器人编辑',
+'right-noratelimit' => '不受速率限制影响',
+'right-import' => '从其他wiki导入页面',
+'right-importupload' => '从文件上传导入页面',
+'right-patrol' => '标他人的编辑为已巡查',
+'right-autopatrol' => '使自己的编辑自动标记为已巡查',
+'right-patrolmarks' => '查看最近更改的巡查标记',
+'right-unwatchedpages' => '查看未受监视页面的列表',
 'right-mergehistory' => '合并页面历史',
 'right-userrights' => '编辑所有用户的权限',
-'right-userrights-interwiki' => 'ç¼\96è¾\91å\9c¨å\85¶å®\83wikiä¸\8a的用户权限',
-'right-siteadmin' => 'é\94\81å®\9aå\92\8c解é\99¤é\94\81å®\9a数据库',
-'right-override-export-depth' => '导出含有五层深度链接页面之页面',
-'right-sendemail' => '发电子邮件给其他用户',
-'right-passwordreset' => '查看重置密码邮件',
+'right-userrights-interwiki' => 'ç¼\96è¾\91å\85¶å®\83wikiç\9a\84ç\94¨æ\88·的用户权限',
+'right-siteadmin' => 'é\94\81å®\9aå\92\8c解é\94\81数据库',
+'right-override-export-depth' => '导出含有链接页面深度为5的页面',
+'right-sendemail' => '电邮联系其他用户',
+'right-passwordreset' => '查看密码重置电子邮件',
 
 # User rights log
 'rightslog' => '用户权限日志',
 'rightslogtext' => '这是用户权限更改的日志。',
-'rightslogentry' => '更改$1的用户组自$2至$3',
+'rightslogentry' => '将$1的用户组由$2更改为$3',
 'rightslogentry-autopromote' => '被自动提升自$2至$3',
 'rightsnone' => '(无)',
 
@@ -1477,32 +1480,32 @@ $1",
 'action-move' => '移动本页',
 'action-move-subpages' => '移动本页及其子页面',
 'action-move-rootuserpages' => '移动根用户页面',
-'action-movefile' => '移动文件',
-'action-upload' => '上传文件',
-'action-reupload' => '覆盖这个现有的文件',
-'action-reupload-shared' => 'è¦\86ç\9b\96å\9c¨å\85±ç\94¨æ\96\87件åº\93ä¸\8aç\9a\84文件',
-'action-upload_by_url' => '由一个URL中上传文件',
+'action-movefile' => '移动文件',
+'action-upload' => '上传文件',
+'action-reupload' => '覆盖文件',
+'action-reupload-shared' => 'è¦\86ç\9b\96å\85±äº«æ\96\87件åº\93ç\9a\84æ\9c¬文件',
+'action-upload_by_url' => '从URL上传本文件',
 'action-writeapi' => '使用书写API',
-'action-delete' => '删除这个页面',
-'action-deleterevision' => '删除这次修订',
-'action-deletedhistory' => '查看这个页面的删除历史',
-'action-browsearchive' => '搜索删除的页面',
-'action-undelete' => '反删除这个页面',
-'action-suppressrevision' => '翻查和恢复这次隐藏修订',
-'action-suppressionlog' => '查看这个私有日志',
-'action-block' => '封锁这位用户的编辑',
-'action-protect' => '更改这个页面的保护等级',
-'action-rollback' => '快速回退最后对特定页面作出的编辑的用户的所有编辑',
-'action-import' => '由另一个wiki导入这个页面',
-'action-importupload' => '由一个文件上传中导入这个页面',
-'action-patrol' => '标示其它的编辑为已巡查的',
-'action-autopatrol' => '将您的编辑标示为已巡查的',
-'action-unwatchedpages' => '查看未监视页面列表',
-'action-mergehistory' => '合并这个页面的历史',
-'action-userrights' => '编辑所有的权限',
-'action-userrights-interwiki' => 'ç¼\96è¾\91å\9c¨å\85¶å®\83wikiä¸\8aç\94¨æ\88·ç\9a\84权限',
-'action-siteadmin' => '锁定和解除锁定数据库',
-'action-sendemail' => '发送电邮',
+'action-delete' => '删除本页',
+'action-deleterevision' => '删除本版本',
+'action-deletedhistory' => '查看本页面被删除的历史',
+'action-browsearchive' => '搜索删除的页面',
+'action-undelete' => '恢复本页',
+'action-suppressrevision' => '审查和恢复本隐藏版本',
+'action-suppressionlog' => '查看本非公开日志',
+'action-block' => '阻止该用户编辑',
+'action-protect' => '更改本页面的保护级别',
+'action-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'action-import' => '从其他wiki导入本页面',
+'action-importupload' => '从文件上传导入本页面',
+'action-patrol' => '标记他人的编辑为已巡查',
+'action-autopatrol' => '使你的编辑标记为已巡查',
+'action-unwatchedpages' => '查看未受监视页面的列表',
+'action-mergehistory' => '合并页面的历史',
+'action-userrights' => 'ç¼\96è¾\91æ\89\80æ\9c\89ç\94¨æ\88·ç\9a\84æ\9d\83é\99\90',
+'action-userrights-interwiki' => 'ç¼\96è¾\91å\85¶å®\83wikiç\9a\84ç\94¨æ\88·ç\9a\84ç\94¨æ\88·权限',
+'action-siteadmin' => '锁定或解锁数据库',
+'action-sendemail' => '电邮联系其他用户',
 
 # Recent changes
 'nchanges' => '$1次更改',
@@ -1513,7 +1516,7 @@ $1",
 'recentchanges-label-newpage' => '这次编辑建立了一个新页面',
 'recentchanges-label-minor' => '这是一个小编辑',
 'recentchanges-label-bot' => '这次编辑是由机器人进行',
-'recentchanges-label-unpatrolled' => 'è¿\99次ç¼\96è¾\91å°\9aæ\9cªå·¡æ\9f¥è¿\87',
+'recentchanges-label-unpatrolled' => '该ç¼\96è¾\91å°\9aæ\9cªå·¡æ\9f¥',
 'rcnote' => "下面是最后'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
 'rcnotefrom' => "下面是自'''$2'''起的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示自$1起的新更改',
@@ -1564,10 +1567,9 @@ $1",
 'upload-recreate-warning' => "'''警告:一个相同名字的文件曾经被删除或者移动至别处。'''
 
 这个页面的删除和移动日志在这里提供以便参考:",
-'uploadtext' => "使用下面的表单来上传文件。
-要查看或搜索以前上传的文件,可以进入[[Special:FileList|文件上传列表]],(重新)上传也将在[[Special:Log/upload|上传日志]]中记录,而删除将在[[Special:Log/delete|删除日志]]中记录。
+'uploadtext' => "请使用下面的表格上传文件。要查看或搜索以前上传的文件,可以进入[[Special:FileList|文件上传列表]],(重新)上传也将在[[Special:Log/upload|上传日志]]中记录,而删除将在[[Special:Log/delete|删除日志]]中记录。
 
-要在页面中加入文件,使用以下其中一种形式的链接:
+要在页面中加入文件,请使用一种以下形式的链接:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>'''使用文件的完整版本
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|替换文字]]</nowiki></tt>'''使用放置于左侧的一个框内的200像素宽的图片,同时使用“替换文字”作为描述
 * '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''直接链接到文件而不显示文件",
@@ -1576,8 +1578,7 @@ $1",
 'upload-prohibited' => '禁止的文件类型:$1。',
 'uploadlog' => '上传日志',
 'uploadlogpage' => '上传日志',
-'uploadlogpagetext' => '以下是一个最近上传文件的列表。
-查看[[Special:NewFiles|新文件画廊]]去看更富图像的总览。',
+'uploadlogpagetext' => '下面是最近的文件上传的列表。图像概览请见[[Special:NewFiles|新文件库]]。',
 'filename' => '文件名',
 'filedesc' => '文件说明',
 'fileuploadsummary' => '摘要:',
@@ -1585,7 +1586,7 @@ $1",
 'filestatus' => '著作权状况:',
 'filesource' => '来源:',
 'uploadedfiles' => '已上传文件',
-'ignorewarning' => '忽略警告并保存文件',
+'ignorewarning' => '忽视警告并继续保存文件',
 'ignorewarnings' => '忽略所有警告',
 'minlength1' => '文件名至少要有一个字符。',
 'illegalfilename' => '文件名“$1”包含在页面标题中不允许使用的字符。请重命名该文件,然后重新上传。',
@@ -1702,6 +1703,7 @@ $1',
 'backend-fail-internal' => '存储后端“$1”发生了一个未知错误。',
 'backend-fail-contenttype' => '无法判断文件的内容类型来储存于“$1”。',
 'backend-fail-batchsize' => '存储后端被给予了一批$1个文件{{PLURAL:$1|操作|操作}};限值为$2个{{PLURAL:$2|操作|操作}}。',
+'backend-fail-usable' => '权限不足或缺少目录/贮存器,无法写入文件$1。',
 
 # File journal errors
 'filejournal-fail-dbconnect' => '无法连接到后端存储的日志数据库“$1”。',
@@ -1776,8 +1778,7 @@ $1',
 'upload_source_file' => '(您计算机上的一个文件)',
 
 # Special:ListFiles
-'listfiles-summary' => '该特殊页面显示所有上传的文件。
-当用户过滤图片时,只有当该文件的最新版本由该用户上传时才会显示。',
+'listfiles-summary' => '本特殊页面显示所有上传的文件。当按用户过滤时,只显示输入的用户最后上传的文件版本。',
 'listfiles_search_for' => '按媒体名称搜索:',
 'imgfile' => '文件',
 'listfiles' => '文件列表',
@@ -1804,7 +1805,7 @@ $1',
 'filehist-user' => '用户',
 'filehist-dimensions' => '大小',
 'filehist-filesize' => '文件大小',
-'filehist-comment' => '注解',
+'filehist-comment' => '评论',
 'filehist-missing' => '文件遗失',
 'imagelinks' => '文件用途',
 'linkstoimage' => '以下的$1个页面链接到本文件:',
@@ -1862,7 +1863,7 @@ $1',
 'filedelete-maintenance-title' => '无法删除文件',
 
 # MIME search
-'mimesearch' => 'MIME 搜索',
+'mimesearch' => 'MIME搜索',
 'mimesearch-summary' => '本页面启用文件MIME类型过滤器。输入:内容类型/子类型,如 <tt>image/jpeg</tt>。',
 'mimetype' => 'MIME 类型:',
 'download' => '下载',
@@ -1907,7 +1908,7 @@ $1',
 'statistics-users-active-desc' => '在前$1天中操作过的用户',
 'statistics-mostpopular' => '浏览最多的页面',
 
-'disambiguations' => '链接消歧义页的页面',
+'disambiguations' => '链接消歧义页的页面',
 'disambiguationspage' => 'Template:消歧义',
 'disambiguations-text' => "以下的页面都有到'''消歧义页'''的链接,但它们应该链接到适当的页面。<br />一个页面如果使用了[[MediaWiki:Disambiguationspage]]内的模板,则会被视为消歧义页。",
 
@@ -1948,7 +1949,7 @@ $1',
 'unusedcategories' => '未使用分类',
 'unusedimages' => '未使用图像',
 'popularpages' => '热点页面',
-'wantedcategories' => '待撰分类',
+'wantedcategories' => '需要的分类',
 'wantedpages' => '待撰页面',
 'wantedpages-badtitle' => '在结果组上的无效标题:$1',
 'wantedfiles' => '需要的文件',
@@ -2014,6 +2015,7 @@ $1',
 您可以选择日志类型,用户名(区分大小写)或者相关页面(区分大小写)来缩小查询范围。',
 'logempty' => '在日志中不存在匹配项。',
 'log-title-wildcard' => '搜索以这个文字开始的标题',
+'showhideselectedlogentries' => '显示/隐藏所选日志项',
 
 # Special:AllPages
 'allpages' => '所有页面',
@@ -2085,8 +2087,8 @@ $1',
 'listgrouprights' => '用户组权限',
 'listgrouprights-summary' => '以下面是一个在这个wiki中定义出来的用户权限列表,以及它们的访问权。
 更多有关个别权限的细节可以在[[{{MediaWiki:Listgrouprights-helppage}}|这里]]找到。',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">授予的权限</span>
-* <span class="listgrouprights-revoked">已撤除的权限</span>',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">授予的权限</span>
+* <span class="listgrouprights-revoked">被取消的权限</span>',
 'listgrouprights-group' => '用户组',
 'listgrouprights-rights' => '权限',
 'listgrouprights-helppage' => 'Help:用户组权限',
@@ -2221,7 +2223,7 @@ $UNWATCHURL
 请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}]]。',
 'actioncomplete' => '操作完成',
 'actionfailed' => '操作失败',
-'deletedtext' => '"$1"已经被删除。最近删除的记录请参见$2。',
+'deletedtext' => '“$1”已经被删除。最近删除的记录请参见$2。',
 'dellogpage' => '删除日志',
 'dellogpagetext' => '以下是最近的删除的列表。',
 'deletionlog' => '删除记录',
@@ -2233,7 +2235,7 @@ $UNWATCHURL
 ** 作者申请
 ** 侵犯著作权
 ** 破坏行为',
-'delete-edit-reasonlist' => '编辑删除理由',
+'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
 
@@ -2300,7 +2302,7 @@ $UNWATCHURL
 ** 过多垃圾信息
 ** 负面的编辑战
 ** 高流量页面',
-'protect-edit-reasonlist' => '编辑保护理由',
+'protect-edit-reasonlist' => '编辑保护原因',
 'protect-expiry-options' => '1小时:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1个月:1 month,3个月:3 months,6个月:6 months,1年:1 year,无限期:infinite',
 'restriction-type' => '权限:',
 'restriction-level' => '限制级别:',
@@ -2320,7 +2322,7 @@ $UNWATCHURL
 'restriction-level-all' => '任何级别',
 
 # Undelete
-'undelete' => '查看删除页面',
+'undelete' => '查看删除页面',
 'undeletepage' => '浏览及恢复被删页面',
 'undeletepagetitle' => "'''以下包含[[:$1]]的已删除之修订版本'''。",
 'viewdeletedpage' => '查看被删页面',
@@ -2381,13 +2383,13 @@ $1',
 'contribsub2' => '$1的贡献($2)',
 'nocontribs' => '没有找到符合特征的更改。',
 'uctop' => '(最后更改)',
-'month' => '自月份(及之前内容):',
-'year' => '自年份(及之前内容):',
+'month' => '截止月份:',
+'year' => '截止年份:',
 
 'sp-contributions-newbies' => '只显示新账户的贡献',
 'sp-contributions-newbies-sub' => '新手',
 'sp-contributions-newbies-title' => '新手的用户贡献',
-'sp-contributions-blocklog' => '封禁记录',
+'sp-contributions-blocklog' => '封禁日志',
 'sp-contributions-deleted' => '已删除的用户贡献',
 'sp-contributions-uploads' => '上传',
 'sp-contributions-logs' => '日志',
@@ -2406,7 +2408,7 @@ $1',
 'whatlinkshere' => '链入页面',
 'whatlinkshere-title' => '链接至“$1”的页面',
 'whatlinkshere-page' => '页面:',
-'linkshere' => "ä¸\8bå\88\97页面链接至'''[[:$1]]''':",
+'linkshere' => "以ä¸\8b页面链接至'''[[:$1]]''':",
 'nolinkshere' => "没有页面链接至'''[[:$1]]'''。",
 'nolinkshere-ns' => "在所选的名字空间内没有页面链接到'''[[:$1]]'''。",
 'isredirect' => '重定向页',
@@ -2443,7 +2445,7 @@ $1',
 ** 恐吓行为/骚扰
 ** 滥用多个账户
 ** 不能接受的用户名',
-'ipb-hardblock' => 'é\98²æ­¢å·²ç\99»å½\95ç\9a\84ç\94¨æ\88·ä»\8e该 IP 地址编辑',
+'ipb-hardblock' => 'é\98»æ­¢ç\99»å½\95ç\94¨æ\88·ä½¿ç\94¨è¯¥IP地址编辑',
 'ipbcreateaccount' => '阻止创建新账号',
 'ipbemailban' => '阻止用户发送电邮',
 'ipbenableautoblock' => '自动封禁该用户最后使用的IP地址,以及他们随后试图用于编辑的所有IP地址',
@@ -2453,8 +2455,8 @@ $1',
 'ipbotheroption' => '其他',
 'ipbotherreason' => '其他/附加原因:',
 'ipbhidename' => '在编辑及列表中隐藏用户名',
-'ipbwatchuser' => 'ç\9b\91è§\86è¿\99ä½\8dç\94¨æ\88·ç\9a\84ç\94¨æ\88·é¡µé\9d¢ä»¥å\8f\8aå\85¶å¯¹è¯\9d页面',
-'ipb-disableusertalk' => '禁止被封禁用户编辑自己的对话页',
+'ipbwatchuser' => 'ç\9b\91è§\86该ç\94¨æ\88·ç\9a\84ç\94¨æ\88·é¡µé\9d¢å\92\8c讨论页面',
+'ipb-disableusertalk' => '阻止用户在封禁期间编辑自己的讨论页面',
 'ipb-change-block' => '使用这些设置重新封禁用户',
 'ipb-confirm' => '确认封禁',
 'badipaddress' => '无效IP地址',
@@ -2463,7 +2465,7 @@ $1',
 参见[[Special:BlockList|封禁列表]]以复核封禁。',
 'ipb-blockingself' => '您将要封禁自己!确实要这样做吗?',
 'ipb-confirmhideuser' => '您即将在封禁用户的同时启用“隐藏账户”功能。这将从所有列表和日志记录中隐藏这个用户名。您确认这样做吗?',
-'ipb-edit-dropdown' => '编辑封禁理由',
+'ipb-edit-dropdown' => '编辑封禁原因',
 'ipb-unblock-addr' => '解封$1',
 'ipb-unblock' => '解封用户名或IP地址',
 'ipb-blocklist' => '查看现有封禁',
@@ -2476,7 +2478,7 @@ $1',
 'unblocked-id' => '封禁$1已被解除',
 'blocklist' => '被封禁用户',
 'ipblocklist' => '被封禁用户',
-'ipblocklist-legend' => '查找封禁用户',
+'ipblocklist-legend' => '查找封禁用户',
 'blocklist-userblocks' => '隐藏帐户封禁',
 'blocklist-tempblocks' => '隐藏临时封禁',
 'blocklist-addressblocks' => '隐藏单个IP封禁',
@@ -2507,7 +2509,7 @@ $1',
 'autoblocker' => '由于您与“[[User:$1|$1]]”共享一个IP地址而被自动封禁。
 $1被封禁的理由是:“$2”',
 'blocklogpage' => '封禁日志',
-'blocklog-showlog' => '此用户曾被封禁。以下列出封禁日志以供参考:',
+'blocklog-showlog' => '该用户曾被封禁。下面提供封禁日志以供参考:',
 'blocklog-showsuppresslog' => '此用户曾被封禁并隐藏。以下列出隐藏日志以供参考:',
 'blocklogentry' => '封禁[[$1]],终止时间为$2$3',
 'reblock-logentry' => '更改[[$1]]的封禁终止时间 $2 $3',
@@ -2599,16 +2601,16 @@ $1被封禁的理由是:“$2”',
 
 在这些情况下,您在必要时必须手工移动或合并页面。",
 'movearticle' => '移动页面:',
-'moveuserpage-warning' => "'''警告:'''您将会移动一个用户页面。请留意该页面在移动后该用户的名字是''不会''变更的。",
+'moveuserpage-warning' => "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
 'movenologin' => '未登录',
 'movenologintext' => '您必须是一名登记用户并且[[Special:UserLogin|登录]]
 后才可移动一个页面。',
-'movenotallowed' => '您并没有权限去移动页面。',
-'movenotallowedfile' => '您并没有权限去移动文件。',
-'cant-move-user-page' => '您并没有许可权去移动用户页面(它的子页面除外)。',
-'cant-move-to-user-page' => '您并没有许可权去移动到用户页面(它的子页面除外)。',
+'movenotallowed' => '你没有权限移动页面。',
+'movenotallowedfile' => '你没有权限移动文件。',
+'cant-move-user-page' => '你没有权限移动用户页面(子页面除外)。',
+'cant-move-to-user-page' => '你没有权限移动页面至用户页面(用户子页面除外)。',
 'newtitle' => '新标题:',
-'move-watch' => '监视来源以及目标页',
+'move-watch' => '监视来源页面和目标页面',
 'movepagebtn' => '移动页面',
 'pagemovedsub' => '移动成功',
 'movepage-moved' => "'''“$1”已移动到“$2”'''",
@@ -2626,8 +2628,8 @@ $1被封禁的理由是:“$2”',
 'movepage-page-unmoved' => '页面$1无法移动到$2。',
 'movepage-max-pages' => '所移动$1个页面的数量已达最大限额,无法同时自动移动更多页面。',
 'movelogpage' => '移动日志',
-'movelogpagetext' => '以ä¸\8bæ\98¯æ\89\80æ\9c\89移å\8a¨ç\9a\84页é\9d¢å\88\97表ï¼\9a',
-'movesubpage' => '{{PLURAL:$1|子页面|子页面}}',
+'movelogpagetext' => 'ä¸\8bé\9d¢æ\98¯æ\89\80æ\9c\89页é\9d¢ç§»å\8a¨ç\9a\84å\88\97表ã\80\82',
+'movesubpage' => '{{PLURAL:$1|子页面}}',
 'movesubpagetext' => '这个页面有$1个子页面,列示如下。',
 'movenosubpage' => '这个页面没有子页面。',
 'movereason' => '原因:',
@@ -2650,10 +2652,8 @@ $1被封禁的理由是:“$2”',
 'imageinvalidfilename' => '目标文件名称无效',
 'fix-double-redirects' => '更新所有指向原始标题的重定向',
 'move-leave-redirect' => '保留重定向',
-'protectedpagemovewarning' => "'''警告:'''这个页面已经被保护,只有拥有管理员权限的用户才可以移动它。
-最近的日志在下面提供以便参考:",
-'semiprotectedpagemovewarning' => "'''注意:'''这个页面已经被保护,只有已经注册的用户才可以移动它。
-最近的日志在下面提供以便参考:",
+'protectedpagemovewarning' => "'''警告:'''本页面已被保护,只有拥有管理员权限的用户可以移动。下面提供最后的日志条目以供参考:",
+'semiprotectedpagemovewarning' => "'''注意:'''本页面已被保护,只有注册用户可以移动。下面提供最后的日志条目以供参考:",
 'move-over-sharedrepo' => '== 文件已存在 ==
 [[:$1]]已于共享资源存在,将文件移动到此标题会覆盖共享资源中的文件。',
 'file-exists-sharedrepo' => '同名文件已于共享资源存在。
@@ -2674,9 +2674,9 @@ $1被封禁的理由是:“$2”',
 '''注意:'''由于性能原因,从此表单导出页面的全部历史已被禁用。",
 'exportlistauthors' => '为每个页面包含贡献者的完整列表',
 'export-submit' => '导出',
-'export-addcattext' => '由分类中添加页面:',
+'export-addcattext' => '从分类添加页面:',
 'export-addcat' => '添加',
-'export-addnstext' => '由名字空间中添加页面:',
+'export-addnstext' => '从名字空间添加页面:',
 'export-addns' => '添加',
 'export-download' => '另存为文件',
 'export-templates' => '包含模板',
@@ -2685,7 +2685,7 @@ $1被封禁的理由是:“$2”',
 # Namespace 8 related
 'allmessages' => '系统信息',
 'allmessagesname' => '名称',
-'allmessagesdefault' => '默认消息文本',
+'allmessagesdefault' => '默认信息文字',
 'allmessagescurrent' => '当前消息文本',
 'allmessagestext' => '此处列出了MediaWiki名字空间下的所有有效系统消息。
 如果想为MediaWiki的本地化贡献翻译,请访问[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[//translatewiki.net translatewiki.net]。',
@@ -2758,7 +2758,7 @@ $1被封禁的理由是:“$2”',
 # Import log
 'importlogpage' => '导入日志',
 'importlogpagetext' => '由管理员从其他wiki导入的带有编辑历史的页面。',
-'import-logentry-upload' => '通过文件上传导入的[[$1]]',
+'import-logentry-upload' => '以文件上传导入[[$1]]',
 'import-logentry-upload-detail' => '$1个版本',
 'import-logentry-interwiki' => '跨站导入 $1',
 'import-logentry-interwiki-detail' => '来自$2的$1个修订',
@@ -2856,6 +2856,11 @@ $1被封禁的理由是:“$2”',
 'vector.css' => '/* 此处的 CSS 将影响使用 Vector 皮肤的用户 */',
 'print.css' => '/* 此处的 CSS 将影响打印输出 */',
 'handheld.css' => '/* 此处的 CSS 将影响在 $wgHandheldStyle 设置手提装置面板 */',
+'noscript.css' => '/* 此处的 CSS 将影响没有启用 JavaScript 的用户 */',
+'group-autoconfirmed.css' => '/* 此处的 CSS 将只会影响自动确认用户 */',
+'group-bot.css' => '/* 此处的 CSS 将只会影响机器人 */',
+'group-sysop.css' => '/* 此处的 CSS 将只会影响管理员 */',
+'group-bureaucrat.css' => '/* 此处的 CSS 将只会影响行政员 */',
 
 # Scripts
 'common.js' => '/* 此处的JavaScript将加载于所有用户每一个页面。 */',
@@ -2892,6 +2897,7 @@ $1被封禁的理由是:“$2”',
 'spambot_username' => 'MediaWiki垃圾链接清理器',
 'spam_reverting' => '恢复到不包含链接的最近修订版本$1',
 'spam_blanking' => '消隐所有包含链接至$1的修订',
+'spam_deleting' => '正在删除所有包含至$1的版本',
 
 # Info page
 'pageinfo-title' => '"$1" 的信息',
@@ -3001,11 +3007,14 @@ Variants for Chinese language
 'variantname-zh-cn' => '大陆简体',
 'variantname-zh-tw' => '台湾正体',
 'variantname-zh-hk' => '香港繁体',
+'variantname-zh-mo' => '澳门繁体',
 'variantname-zh-sg' => '新加坡简体',
+'variantname-zh-my' => '马来西亚简体',
 'variantname-zh' => '不转换',
 
 # Variants for Gan language
-'variantname-gan-hans' => '',
+'variantname-gan-hans' => '‪中文(简体)',
+'variantname-gan-hant' => '‪中文(繁体)',
 
 # Variants for Kazakh language
 'variantname-kk-cyrl' => '',
@@ -3061,7 +3070,7 @@ Variants for Chinese language
 'exif-model' => '相机型号',
 'exif-software' => '使用软件',
 'exif-artist' => '作者',
-'exif-copyright' => '著作权所有',
+'exif-copyright' => '著作权所有',
 'exif-exifversion' => 'Exif版本',
 'exif-flashpixversion' => '支持的Flashpix版本',
 'exif-colorspace' => '色彩空间',
@@ -3221,7 +3230,7 @@ Variants for Chinese language
 'exif-copyrighted-true' => '版权',
 'exif-copyrighted-false' => '公共领域',
 
-'exif-unknowndate' => '未知日期',
+'exif-unknowndate' => '未知日期',
 
 'exif-orientation-1' => '标准',
 'exif-orientation-2' => '水平翻转',
@@ -3519,6 +3528,7 @@ $5
 
 # Separators for various lists, etc.
 'comma-separator' => '、',
+'colon-separator' => ':',
 'word-separator' => '',
 'parentheses' => '($1)',
 
@@ -3533,8 +3543,8 @@ $5
 'descending_abbrev' => '降',
 'table_pager_next' => '下一页',
 'table_pager_prev' => '上一页',
-'table_pager_first' => '第一页',
-'table_pager_last' => 'æ\9c\80å\90\8eä¸\80页',
+'table_pager_first' => '页',
+'table_pager_last' => 'æ\9c«页',
 'table_pager_limit' => '每页显示$1项',
 'table_pager_limit_label' => '每页项目数:',
 'table_pager_limit_submit' => '提交',
@@ -3579,7 +3589,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b¸å\85³更改',
+'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b\91è§\86更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
@@ -3596,10 +3606,10 @@ $5
 'version-specialpages' => '特殊页面',
 'version-parserhooks' => '解析器钩',
 'version-variables' => '变量',
-'version-antispam' => 'å\9e\83å\9c¾é\98²止',
+'version-antispam' => 'å\9e\83å\9c¾é\98»止',
 'version-skins' => '皮肤',
 'version-other' => '其他',
-'version-mediahandlers' => '媒体处理器',
+'version-mediahandlers' => '媒体文件处理器',
 'version-hooks' => '钩',
 'version-extension-functions' => '扩展函数',
 'version-parser-extensiontags' => '解析器扩展标签',
@@ -3618,8 +3628,8 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'version-software' => '已安装的软件',
 'version-software-product' => '产品',
 'version-software-version' => '版本',
-'version-entrypoints' => '入口点 URL',
-'version-entrypoints-header-entrypoint' => '入口点',
+'version-entrypoints' => '接入点URL',
+'version-entrypoints-header-entrypoint' => '接入点',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
@@ -3800,7 +3810,7 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'api-error-overwrite' => '不允许覆盖现有文件。',
 'api-error-stashfailed' => '内部错误:服务器保存临时文件失败。',
 'api-error-timeout' => '服务器没有在预期内响应。',
-'api-error-unclassified' => 'å\8f\91ç\94\9fæ\9cªç\9f¥é\94\99误',
+'api-error-unclassified' => 'å\87ºç\8e°æ\9cªç\9f¥é\94\99误ã\80\82',
 'api-error-unknown-code' => '未知错误:$1',
 'api-error-unknown-error' => '内部错误:尝试上传文件时出错。',
 'api-error-unknown-warning' => '未知的警告:$1',
@@ -3809,14 +3819,14 @@ MediaWiki是基于使用目的而加以发布,然而不负任何担保责任
 'api-error-verification-error' => '此文件可能已损坏,或有错误的扩展名。',
 
 # Durations
-'duration-seconds' => '$1{{PLURAL:$1|秒|秒}}',
-'duration-minutes' => '$1{{PLURAL:$1|分钟|分钟}}',
-'duration-hours' => '$1{{PLURAL:$1|小时|小时}}',
-'duration-days' => '$1{{PLURAL:$1|天|天}}',
-'duration-weeks' => '$1{{PLURAL:$1|星期|星期}}',
-'duration-years' => '$1{{PLURAL:$1|年|年}}',
-'duration-decades' => '$1{{PLURAL:$1|0年|0年}}',
-'duration-centuries' => '$1{{PLURAL:$1|00年|00年}}',
-'duration-millennia' => '$1{{PLURAL:$1|千年|千年}}',
+'duration-seconds' => '$1',
+'duration-minutes' => '$1',
+'duration-hours' => '$1小时',
+'duration-days' => '$1',
+'duration-weeks' => '$1',
+'duration-years' => '$1',
+'duration-decades' => '$10年',
+'duration-centuries' => '$1个世纪',
+'duration-millennia' => '$1千年',
 
 );
index 7a3ff53..3e567b1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Traditional Chinese (‪中文(繁體)‬)
+/** Traditional Chinese (‪中文(繁體)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -216,7 +216,7 @@ $messages = array(
 'tog-hidepatrolled' => '於最近更改中隱藏巡查過的編輯',
 'tog-newpageshidepatrolled' => '於新頁面清單中隱藏巡查過的頁面',
 'tog-extendwatchlist' => '展開監視清單以顯示所有更改,不只是最近的',
-'tog-usenewrc' => '使用增強最近更改 (需要JavaScript)',
+'tog-usenewrc' => '在最近更改和監視列表中整合同一頁的修改 (需要JavaScript)',
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '顯示編輯工具欄 (需要JavaScript)',
 'tog-editondblclick' => '雙擊編輯頁面 (需要JavaScript)',
@@ -496,7 +496,7 @@ $1',
 'site-atom-feed' => '$1的Atom訂閱',
 'page-rss-feed' => '「$1」的RSS訂閱',
 'page-atom-feed' => '「$1」的Atom訂閱',
-'red-link-title' => '$1 (頁面未存在)',
+'red-link-title' => '$1(頁面未存在)',
 'sort-descending' => '倒序排列',
 'sort-ascending' => '升序排序',
 
@@ -799,18 +799,15 @@ $2
 'summary-preview' => '摘要預覽:',
 'subject-preview' => '主題/標題預覽:',
 'blockedtitle' => '用戶被查封',
-'blockedtext' => "{{GENDER:|你|妳|你}}的用戶名或IP地址已經被$1查封。
+'blockedtext' => "'''您的用戶名或IP地址已被封禁。'''
 
-這次查封是由$1所封的。當中的原因是''$2''。
+此次封禁操作由$1完成,封禁原因爲''$2''。
 
-* 這次查封開始的時間是:$8
-* 這次查封到期的時間是:$6
-* 對於被查封者:$7
-
-{{GENDER:|你|妳|你}}可以聯絡$1或者其他的[[{{MediaWiki:Grouppage-sysop}}|管理員]],討論這次查封。
-除非{{GENDER:|你|妳|你}}已經在{{GENDER:|你|妳|你}}的[[Special:Preferences|賬號參數設置]]中設定了一個有效的電子郵件地址,否則{{GENDER:|你|妳|你}}是不能使用「電郵這位用戶」的功能。當設定了一個有效的電子郵件地址後,這個功能是不會封鎖的。
+* 起始時間:$8
+* 終止時間:$6
+* 擬封禁對象:$7
 
-{{GENDER:|你|妳|你}}目前的IP地址是$3,而該查封ID是 #$5。 請在{{GENDER:|你|妳|你}}的查詢中註明以上所有的資料。",
+您可以聯繫$1或其他的[[{{MediaWiki:Grouppage-sysop}}|管理員]]討論此次封禁。若您已在[[Special:Preferences|帳號設置]]中配置了一個有效的電子郵件地址,且未被封禁電子郵件功能,則您可通過“發送電子郵件給這位用戶”功能來聯絡相關管理員。您當前的IP地址是$3,此次封禁的ID爲#$5。請在您的查詢中註明上述所有信息。",
 'autoblockedtext' => "{{GENDER:|你|妳|你}}的IP地址已經被自動查封,由於先前的另一位用戶被$1所查封。
 而查封的原因是:
 
@@ -1064,7 +1061,7 @@ $2
 'revdelete-hide-comment' => '隱藏編輯摘要',
 'revdelete-hide-user' => '隱藏編輯者的用戶名/IP地址',
 'revdelete-hide-restricted' => '同時廢止由操作員以及其他用戶的資料',
-'revdelete-radio-same' => '(勿更改)',
+'revdelete-radio-same' => '(不要更改)',
 'revdelete-radio-set' => '是',
 'revdelete-radio-unset' => '否',
 'revdelete-suppress' => '同時廢止由操作員以及其他用戶的資料',
@@ -1131,9 +1128,9 @@ $1",
 'mergelogpagetext' => '以下是一個最近由一個頁面的修訂歷史合併到另一個頁面的列表。',
 
 # Diffs
-'history-title' => '「$1」的修訂歷史',
-'difference-title' => '"$1"修訂版本之間的差異',
-'difference-title-multipage' => '"$1"和"$2"頁面之間的差異',
+'history-title' => '$1:修訂歷史',
+'difference-title' => '$1:修訂版本之間的差異',
+'difference-title-multipage' => '"$1"和"$2"頁面之間的差異',
 'difference-multipage' => '(頁面間的差異)',
 'lineno' => '第$1行:',
 'compareselectedversions' => '比較選定的修訂版本',
@@ -1228,6 +1225,7 @@ $1",
 'prefs-beta' => 'Beta 特性',
 'prefs-datetime' => '日期和時間',
 'prefs-labs' => '實驗中的功能',
+'prefs-user-pages' => '用戶頁面',
 'prefs-personal' => '用戶資料',
 'prefs-rc' => '最近更改',
 'prefs-watchlist' => '監視列表',
@@ -2005,6 +2003,7 @@ Template:消除歧義',
 'alllogstext' => '綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。',
 'logempty' => '在日誌中不存在匹配項。',
 'log-title-wildcard' => '搜尋以這個文字開始的標題',
+'showhideselectedlogentries' => '顯示/隱藏所選的日誌項目',
 
 # Special:AllPages
 'allpages' => '所有頁面',
@@ -2909,6 +2908,7 @@ $1被封禁的理由是“$2”',
 'spambot_username' => 'MediaWiki 廣告清除',
 'spam_reverting' => '恢復到不包含連結至$1的最近修訂版本',
 'spam_blanking' => '所有包含連結至$1的修訂,清空',
+'spam_deleting' => '所有包含連結至$1的修訂,刪除中',
 
 # Info page
 'pageinfo-title' => '" $1 "的信息',
@@ -3537,6 +3537,7 @@ $5
 
 # Separators for various lists, etc.
 'comma-separator' => '、',
+'colon-separator' => ':',
 'word-separator' => '',
 'parentheses' => '($1)',
 
@@ -3837,4 +3838,6 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'duration-centuries' => '$1世紀',
 'duration-millennia' => '$1千年',
 
+# Unknown messages
+'lockmanager-fail-svr-acquire' => '無法取得伺服器$1上的鎖。',
 );
index 2fa637a..4c72080 100644 (file)
--- a/load.php
+++ b/load.php
@@ -20,7 +20,6 @@
  * @file
  * @author Roan Kattouw
  * @author Trevor Parscal
- *
  */
 
 // Bail if PHP is too low
index 529e7f7..728530f 100644 (file)
--- a/load.php5
+++ b/load.php5
@@ -1 +1,24 @@
-<?php require './load.php';
\ No newline at end of file
+<?php
+/**
+ * Version of load.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require './load.php';
index 6e09671..78cae8c 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * quick hackjob to fix damages imports on wikisource
- * page records have page_latest wrong
+ * Corrects wrong values in the `page_latest` field in the database.
  *
  * Copyright © 2005 Brion Vibber <brion@pobox.com>
  * http://www.mediawiki.org/
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to correct wrong values in the `page_latest` field
+ * in the database.
+ *
+ * @ingroup Maintenance
+ */
 class AttachLatest extends Maintenance {
 
        public function __construct() {
diff --git a/maintenance/benchmarks/bench_utf8_title_check.php b/maintenance/benchmarks/bench_utf8_title_check.php
new file mode 100644 (file)
index 0000000..2e4b902
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+/**\r
+ * @file\r
+ * @ingroup Benchmark\r
+ */\r
+\r
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );\r
+
+/**
+ * This little benchmark executes the regexp used in Language->checkTitleEncoding() and compares its execution time
+ * against that of mb_check_encoding, if available.
+ */\r
+class bench_utf8_title_check extends Benchmarker {
+
+       private $canRun;
+
+       private $data;
+
+       public function __construct() {\r
+               parent::__construct();
+
+               $this->data = array (
+                       "",
+                       "United States of America", // 7bit ASCII
+                       "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e",
+                       "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn",
+                       // This comes from bug 36839
+                       "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
+                       . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
+                       . "Internet%20Movie%20Database%7CJim%20Brass%7CLady%20Heather%7C"
+                       . "Les%20Experts%20(s%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e)%7CLes%20Experts%20:%20Manhattan%7C"
+                       . "Les%20Experts%20:%20Miami%7CListe%20des%20personnages%20des%20Experts%7C"
+                       . "Liste%20des%20%C3%A9pisodes%20des%20Experts%7CMod%C3%A8le%20discussion:Palette%20Les%20Experts%7C"
+                       . "Nick%20Stokes%7CPersonnage%20de%20fiction%7CPersonnage%20fictif%7CPersonnage%20de%20fiction%7C"
+                       . "Personnages%20r%C3%A9currents%20dans%20Les%20Experts%7CRaymond%20Langston%7CRiley%20Adams%7C"
+                       . "Saison%201%20des%20Experts%7CSaison%2010%20des%20Experts%7CSaison%2011%20des%20Experts%7C"
+                       . "Saison%2012%20des%20Experts%7CSaison%202%20des%20Experts%7CSaison%203%20des%20Experts%7C"
+                       . "Saison%204%20des%20Experts%7CSaison%205%20des%20Experts%7CSaison%206%20des%20Experts%7C"
+                       . "Saison%207%20des%20Experts%7CSaison%208%20des%20Experts%7CSaison%209%20des%20Experts%7C"
+                       . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
+                       . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
+               );
+
+               $this->canRun = function_exists ( 'mb_check_encoding' );
+
+               if ( $this->canRun ) {\r
+                       $this->mDescription = "Benchmark for using a regexp vs. mb_check_encoding to check for UTF-8 encoding.";
+                       mb_internal_encoding( 'UTF-8' );
+               } else {
+                       $this->mDescription = "CANNOT RUN benchmark using mb_check_encoding: function not available.";
+               }\r
+       }\r
+\r
+       public function execute() {
+               if ( !$this->canRun ) {
+                       return;
+               }
+               $benchmarks = array();
+               foreach ($this->data as $val) {
+                       $benchmarks[] = array(
+                               'function' => array( $this, 'use_regexp' ),
+                               'args' => array( rawurldecode ( $val ) )
+                       );
+                       $benchmarks[] = array(
+                               'function' => array( $this, 'use_regexp_non_capturing' ),
+                               'args' => array( rawurldecode ( $val ) )
+                       );
+                       $benchmarks[] = array(
+                               'function' => array( $this, 'use_regexp_once_only' ),
+                               'args' => array( rawurldecode ( $val ) )
+                       );
+                       $benchmarks[] = array(\r
+                               'function' => array( $this, 'use_mb_check_encoding' ),\r
+                               'args' => array( rawurldecode ( $val ) )\r
+                       );
+               }\r
+               $this->bench( $benchmarks );
+               print $this->getFormattedResults();\r
+       }\r
+
+       private $isutf8;
+\r
+       function use_regexp( $s ) {
+               $this->isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+                               '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );\r
+       }\r
+\r
+       function use_regexp_non_capturing( $s ) {
+               // Same as above with a non-capturing subgroup.
+               $this->isutf8 = preg_match( '/^(?:[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+                               '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+       }
+
+       function use_regexp_once_only( $s ) {
+               // Same as above with a once-only subgroup.
+               $this->isutf8 = preg_match( '/^(?>[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+                               '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+       }
+
+       function use_mb_check_encoding( $s ) {\r
+               $this->isutf8 = mb_check_encoding( $s, 'UTF-8' );\r
+       }\r
+\r
+}\r
+\r
+$maintClass = 'bench_utf8_title_check';\r
+require_once( RUN_MAINTENANCE_IF_MAIN );\r
index cfcac40..e4063f9 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to change the password of a given user.
+ *
+ * @ingroup Maintenance
+ */
 class ChangePassword extends Maintenance {
        public function __construct() {
                parent::__construct();
index d199b6f..ea6c09f 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check classes definitions in the autoloader.
+ *
+ * @ingroup Maintenance
+ */
 class CheckAutoLoader extends Maintenance {
        public function __construct() {
                parent::__construct();
index bac2ff6..f8b8955 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * CheckBadRedirects - See if pages marked as being redirects
- * really are.
+ * Check that pages marked as being redirects really are.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check that pages marked as being redirects really are.
+ *
+ * @ingroup Maintenance
+ */
 class CheckBadRedirects extends Maintenance {
        public function __construct() {
                parent::__construct();
index 484217d..d7463ec 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Check images to see if they exist, are readable, etc etc
+ * Check images to see if they exist, are readable, etc.
  *
  * 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
  */
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check images to see if they exist, are readable, etc.
+ *
+ * @ingroup Maintenance
+ */
 class CheckImages extends Maintenance {
 
        public function __construct() {
index 6137a95..3019b84 100644 (file)
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check syntax of all PHP files in MediaWiki.
+ *
+ * @ingroup Maintenance
+ */
 class CheckSyntax extends Maintenance {
 
        // List of files we're going to check
index 9b98721..6a9294a 100644 (file)
@@ -1,8 +1,6 @@
 <?php
 /**
- * This script verifies that database usernames are actually valid.
- * An existing usernames can become invalid if User::isValidUserName()
- * is altered or if we change the $wgMaxNameChars
+ * Check that database usernames are actually valid.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to check that database usernames are actually valid.
+ *
+ * An existing usernames can become invalid if User::isValidUserName()
+ * is altered or if we change the $wgMaxNameChars
+ *
+ * @ingroup Maintenance
+ */
 class CheckUsernames extends Maintenance {
 
        public function __construct() {
index 8a760cd..f104899 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CleanupSpam extends Maintenance {
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Cleanup all spam from a given hostname";
                $this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
-               $this->addArg( 'hostname', 'Hostname that was spamming' );
+               $this->addOption( 'delete', 'Delete pages containing only spam instead of blanking them' );
+               $this->addArg( 'hostname', 'Hostname that was spamming, single * wildcard in the beginning allowed' );
        }
 
        public function execute() {
@@ -108,15 +110,19 @@ class CleanupSpam extends Maintenance {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->begin( __METHOD__ );
                        $page = WikiPage::factory( $title );
-                       if ( !$rev ) {
-                               // Didn't find a non-spammy revision, blank the page
-                               $this->output( "blanking\n" );
-                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
-                       } else {
+                       if ( $rev ) {
                                // Revert to this revision
                                $this->output( "reverting\n" );
                                $page->doEdit( $rev->getText(), wfMsgForContent( 'spam_reverting', $domain ),
                                        EDIT_UPDATE, $rev->getId() );
+                       } elseif ( $this->hasOption( 'delete' ) ) {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "deleting\n" );
+                               $page->doDeleteArticle( wfMsgForContent( 'spam_deleting', $domain ) );
+                       } else {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "blanking\n" );
+                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
                        }
                        $dbw->commit( __METHOD__ );
                }
index 85ef5c8..275d8fa 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 /**
- * Convert from the old links schema (string->ID) to the new schema (ID->ID)
- * The wiki should be put into read-only mode while this script executes
+ * Convert from the old links schema (string->ID) to the new schema (ID->ID).
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to convert from the old links schema (string->ID)
+ * to the new schema (ID->ID).
+ *
+ * The wiki should be put into read-only mode while this script executes.
+ *
+ * @ingroup Maintenance
+ */
 class ConvertLinks extends Maintenance {
        private $logPerformance;
 
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Convert from the old links schema (string->ID) to the new schema (ID->ID)
+               $this->mDescription = "Convert from the old links schema (string->ID) to the new schema (ID->ID).
 The wiki should be put into read-only mode while this script executes";
 
                $this->addArg( 'logperformance', "Log performance to perfLogFilename.", false );
index da6ff9b..e666b65 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Do each user sequentially, since accounts can't be deleted
+ * Convert user options to the new `user_properties` table.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to convert user options to the new `user_properties` table.
+ *
+ * Do each user sequentially, since accounts can't be deleted
+ *
+ * @ingroup Maintenance
+ */
 class ConvertUserOptions extends Maintenance {
 
        private $mConversionCount = 0;
index 314318f..530b5ca 100644 (file)
@@ -1,12 +1,6 @@
 <?php
 /**
- * Copy all files in one container of one backend to another.
- *
- * This can also be used to re-shard the files for one backend using the
- * config of second backend. The second backend should have the same config
- * as the first, except for it having a different name and different sharding
- * configuration. The backend should be made read-only while this runs.
- * After this script finishes, the old files in the containers can be deleted.
+ * Copy all files in some containers of one backend to another.
  *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Copy all files in one container of one backend to another.
+ *
+ * This can also be used to re-shard the files for one backend using the
+ * config of second backend. The second backend should have the same config
+ * as the first, except for it having a different name and different sharding
+ * configuration. The backend should be made read-only while this runs.
+ * After this script finishes, the old files in the containers can be deleted.
+ *
+ * @ingroup Maintenance
+ */
 class CopyFileBackend extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Copy all the files in one backend to another.";
+               $this->mDescription = "Copy files in one backend to another.";
                $this->addOption( 'src', 'Backend containing the source files', true, true );
                $this->addOption( 'dst', 'Backend where files should be copied to', true, true );
                $this->addOption( 'containers', 'Pipe separated list of containers', true, true );
-               $this->addOption( 'fast', 'Skip SHA-1 checks on pre-existing files' );
+               $this->addOption( 'subdir', 'Only do items in this child directory', false, true );
+               $this->setBatchSize( 50 );
        }
 
        public function execute() {
                $src = FileBackendGroup::singleton()->get( $this->getOption( 'src' ) );
                $dst = FileBackendGroup::singleton()->get( $this->getOption( 'dst' ) );
-
                $containers = explode( '|', $this->getOption( 'containers' ) );
+               $subDir = $this->getOption( rtrim( 'subdir', '/' ), '' );
+
+               $count = 0;
                foreach ( $containers as $container ) {
-                       $this->output( "Doing container $container...\n" );
+                       if ( $subDir != '' ) {
+                               $backendRel = "$container/$subDir";
+                               $this->output( "Doing container '$container', directory '$subDir'...\n" );
+                       } else {
+                               $backendRel = $container;
+                               $this->output( "Doing container '$container'...\n" );
+                       }
 
-                       $srcPathsRel = $src->getFileList(
-                               array( 'dir' => $src->getRootStoragePath() . "/$container" ) );
+                       $dir = $src->getRootStoragePath() . "/$backendRel";
+                       $srcPathsRel = $src->getFileList( array( 'dir' => $dir ) );
                        if ( $srcPathsRel === null ) {
                                $this->error( "Could not list files in $container.", 1 ); // die
                        }
-                       foreach ( $srcPathsRel as $srcPathRel ) {
-                               $srcPath = $src->getRootStoragePath() . "/$container/$srcPathRel";
-                               $dstPath = $dst->getRootStoragePath() . "/$container/$srcPathRel";
 
-                               if ( $dst->fileExists( array( 'src' => $dstPath, 'latest' => 1 ) ) ) {
-                                       if ( $this->hasOption( 'fast' ) ) {
-                                               $this->output( "Already have $dstPath.\n" );
-                                               continue; // assume already copied...
-                                       }
-                                       $srcSha1 = $src->getFileSha1Base36( array( 'src' => $srcPath ) );
-                                       $dstSha1 = $dst->getFileSha1Base36( array( 'src' => $dstPath ) );
-                                       if ( $srcSha1 && $srcSha1 === $dstSha1 ) {
-                                               $this->output( "Already have $dstPath.\n" );
-                                               continue; // already copied...
-                                       }
+                       $batchPaths = array();
+                       foreach ( $srcPathsRel as $srcPathRel ) {
+                               $batchPaths[$srcPathRel] = 1; // remove duplicates
+                               if ( count( $batchPaths ) >= $this->mBatchSize ) {
+                                       $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst );
+                                       $batchPaths = array(); // done
                                }
+                               ++$count;
+                       }
+                       if ( count( $batchPaths ) ) { // left-overs
+                               $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst );
+                               $batchPaths = array(); // done
+                       }
 
-                               $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) );
-                               if ( !$fsFile ) {
-                                       $this->error( "Could not get local copy of $srcPath.", 1 ); // die
-                               }
+                       if ( $subDir != '' ) {
+                               $this->output( "Finished container '$container', directory '$subDir'.\n" );
+                       } else {
+                               $this->output( "Finished container '$container'.\n" );
+                       }
+               }
 
-                               $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) );
-                               $status->merge( $dst->store(
-                                       array( 'src' => $fsFile->getPath(), 'dst' => $dstPath ),
-                                       array( 'nonLocking' => 1, 'nonJournaled' => 1 )
-                               ) );
-                               if ( !$status->isOK() ) {
-                                       print_r( $status->getErrorsArray() );
-                                       $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die
-                               }
+               $this->output( "Done [$count file(s)].\n" );
+       }
 
-                               $this->output( "Copied $srcPath to $dstPath.\n" );
+       protected function copyFileBatch(
+               array $srcPathsRel, $backendRel, FileBackend $src, FileBackend $dst
+       ) {
+               $ops = array();
+               $fsFiles = array();
+               foreach ( $srcPathsRel as $srcPathRel ) {
+                       $srcPath = $src->getRootStoragePath() . "/$backendRel/$srcPathRel";
+                       $dstPath = $dst->getRootStoragePath() . "/$backendRel/$srcPathRel";
+                       if ( $this->filesAreSame( $src, $dst, $srcPath, $dstPath ) ) {
+                               $this->output( "Already have $srcPathRel.\n" );
+                               continue; // assume already copied...
+                       }
+                       // Note: getLocalReference() is fast for FS backends
+                       $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) );
+                       if ( !$fsFile ) {
+                               $this->error( "Could not get local copy of $srcPath.", 1 ); // die
+                       }
+                       $fsFiles[] = $fsFile; // keep TempFSFile objects alive as needed
+                       // Note: prepare() is usually fast for key/value backends
+                       $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) );
+                       if ( !$status->isOK() ) {
+                               $this->error( print_r( $status->getErrorsArray(), true ) );
+                               $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die
                        }
+                       $ops[] = array( 'op' => 'store',
+                               'src' => $fsFile->getPath(), 'dst' => $dstPath, 'overwrite' => 1 );
                }
+
+               $status = $dst->doOperations( $ops, array( 'nonJournaled' => 1 ) );
+               if ( !$status->isOK() ) {
+                       $this->error( print_r( $status->getErrorsArray(), true ) );
+                       $this->error( "Could not copy file batch.", 1 ); // die
+               } else {
+                       $this->output( "Copied these file(s):\n" . implode( "\n", $srcPathsRel ) . "\n\n" );
+               }
+       }
+
+       protected function filesAreSame( FileBackend $src, FileBackend $dst, $sPath, $dPath ) {
+               return (
+                       ( $src->fileExists( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->fileExists( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit
+                       ) && ( $src->getFileSize( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->getFileSize( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit
+                       ) && ( $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) )
+                       )
+               );
        }
 }
 
index 0d7de9a..3f328f9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Maintenance script to create an account and grant it administrator rights
+ * Creates an account and grant it administrator rights.
  *
  * 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
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
+/**
+ * Maintenance script to create an account and grant it administrator rights.
+ *
+ * @ingroup Maintenance
+ */
 class CreateAndPromote extends Maintenance {
 
        public function __construct() {
@@ -76,4 +81,4 @@ class CreateAndPromote extends Maintenance {
 }
 
 $maintClass = "CreateAndPromote";
-require_once( RUN_MAINTENANCE_IF_MAIN );
\ No newline at end of file
+require_once( RUN_MAINTENANCE_IF_MAIN );
index 2eacb73..728997d 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  */
 
+/**
+ * Core functions for deleteArchivedFiles.php
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedFilesImplementation {
        static public function doDelete( $output, $force ) {
                # Data should come off the master, wrapped in a transaction
@@ -62,4 +68,4 @@ class DeleteArchivedFilesImplementation {
                $dbw->commit( __METHOD__ );
                $output->handleOutput( "Done! [$count file(s)]\n" );
        }
-}
\ No newline at end of file
+}
index 6067c80..8709ee8 100644 (file)
@@ -1,8 +1,9 @@
 <?php
-
 /**
  * Delete archived (non-current) files from the database
  *
+ * Based on deleteOldRevisions.php by Rob Church.
+ *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  * @author Aaron Schulz
- * Based on deleteOldRevisions.php by Rob Church
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 require_once( dirname( __FILE__ ) . '/deleteArchivedFiles.inc' );
 
+/**
+ * Maintenance script to delete archived (non-current) files from the database.
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedFiles extends Maintenance {
        public function __construct() {
                parent::__construct();
index 0faa0ab..353661a 100644 (file)
@@ -1,8 +1,9 @@
 <?php
-
 /**
  * Delete archived (deleted from public) revisions from the database
  *
+ * Shamelessly stolen from deleteOldRevisions.php by Rob Church :)
+ *
  * 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
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
  *
+ * @file
  * @ingroup Maintenance
  * @author Aaron Schulz
- * Shamelessly stolen from deleteOldRevisions.php by Rob Church :)
  */
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 require_once( dirname( __FILE__ ) . '/deleteArchivedRevisions.inc' );
 
+/**
+ * Maintenance script to delete archived (deleted from public) revisions
+ * from the database.
+ *
+ * @ingroup Maintenance
+ */
 class DeleteArchivedRevisions extends Maintenance {
        public function __construct() {
                parent::__construct();
index 6b29c5f..2bb2a0f 100644 (file)
@@ -93,6 +93,11 @@ if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
 {
        require( MWInit::interpretedPath( 'AdminSettings.php' ) );
 }
+
+if ( $maintenance->getDbType() === Maintenance::DB_NONE ) {
+       if ( $wgLocalisationCacheConf['storeClass'] === false && ( $wgLocalisationCacheConf['store'] == 'db' || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) ) )
+               $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+}
 $maintenance->finalSetup();
 // Some last includes
 require_once( MWInit::compiledPath( 'includes/Setup.php' ) );
index b3bb50c..fa98813 100644 (file)
@@ -1,5 +1,21 @@
 <?php
 /**
+ * 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
  */
 
index 0dc200e..0ce9388 100644 (file)
@@ -2,6 +2,22 @@
 /**
  * Maintenance script to import all scripts in the MediaWiki namespace from a
  * local site.
+ *
+ * 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
  */
index 96a65fc..8e0b2e1 100644 (file)
@@ -39,7 +39,7 @@ class CommandLineInstaller extends Maintenance {
                $this->addArg( 'name', 'The name of the wiki', true);
 
                $this->addArg( 'admin', 'The username of the wiki administrator (WikiSysop)', true );
-               $this->addOption( 'pass', 'The password for the wiki administrator. You will be prompted for this if it isn\'t provided', false, true );
+               $this->addOption( 'pass', 'The password for the wiki administrator.', true, true );
                /* $this->addOption( 'email', 'The email for the wiki administrator', false, true ); */
                $this->addOption( 'scriptpath', 'The relative path of the wiki in the web server (/wiki)', false, true );
 
@@ -81,7 +81,7 @@ class CommandLineInstaller extends Maintenance {
                }
 
                $installer =
-                       new CliInstaller( $siteName, $adminName, $this->mOptions );
+                       InstallerOverrides::getCliInstaller( $siteName, $adminName, $this->mOptions );
 
                $status = $installer->doEnvironmentChecks();
                if( $status->isGood() ) {
index 2e4f40f..4cb90ff 100644 (file)
@@ -1,5 +1,22 @@
 <?php
 /**
+ * Maintenance script to generate first letter data files for Collation.php.
+ *
+ * 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
+ *
  * @ingroup Maintenance
  * @file
  */
index 42354ea..9cdbf34 100644 (file)
@@ -452,6 +452,7 @@ $wgOptionalMessages = array(
        'ellipsis',
        'percent',
        'parentheses',
+       'brackets',
        'autocomment-prefix',
        'listgrouprights-right-display',
        'listgrouprights-right-revoked',
@@ -470,6 +471,9 @@ $wgOptionalMessages = array(
        'nocookiesforlogin',
        'version-entrypoints-articlepath',
        'version-entrypoints-scriptpath',
+       'mergehistory-revisionrow',
+       'categoryviewer-pagedlinks',
+       'undelete-revisionrow',
 );
 
 /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
index 27862c8..befff60 100644 (file)
@@ -157,6 +157,7 @@ $wgMessageStructure = array(
                'index-category',
                'noindex-category',
                'broken-file-category',
+               'categoryviewer-pagedlinks',
        ),
        'mainpage' => array(
                'linkprefix',
@@ -411,6 +412,8 @@ $wgMessageStructure = array(
                'filereadonlyerror',
                'invalidtitle-knownnamespace',
                'invalidtitle-unknownnamespace',
+               'exception-nologin',
+               'exception-nologin-text',
        ),
        'virus' => array(
                'virus-badscanner',
@@ -832,7 +835,8 @@ $wgMessageStructure = array(
                'mergehistory-autocomment',
                'mergehistory-comment',
                'mergehistory-same-destination',
-               'mergehistory-reason'
+               'mergehistory-reason',
+               'mergehistory-revisionrow'
        ),
        'mergelog' => array(
                'mergelog',
@@ -948,6 +952,7 @@ $wgMessageStructure = array(
                'prefs-beta',
                'prefs-datetime',
                'prefs-labs',
+               'prefs-user-pages',
                'prefs-personal',
                'prefs-rc',
                'prefs-watchlist',
@@ -1404,6 +1409,7 @@ $wgMessageStructure = array(
                'lockmanager-fail-deletelock',
                'lockmanager-fail-acquirelock',
                'lockmanager-fail-openlock',
+               'lockmanager-fail-acquirelock',
                'lockmanager-fail-releaselock',
                'lockmanager-fail-db-bucket',
                'lockmanager-fail-db-release',
@@ -1747,6 +1753,7 @@ $wgMessageStructure = array(
                'alllogstext',
                'logempty',
                'log-title-wildcard',
+               'showhideselectedlogentries',
        ),
        'allpages' => array(
                'allpages',
@@ -2064,6 +2071,7 @@ $wgMessageStructure = array(
                'undelete-error-long',
                'undelete-show-file-confirm',
                'undelete-show-file-submit',
+               'undelete-revisionrow',
        ),
        'nsform' => array(
                'namespace',
@@ -2629,6 +2637,7 @@ $wgMessageStructure = array(
                'spambot_username',
                'spam_reverting',
                'spam_blanking',
+               'spam_deleting',
        ),
        'info' => array(
                'pageinfo-title',
@@ -3320,6 +3329,7 @@ $wgMessageStructure = array(
                'ellipsis',
                'percent',
                'parentheses',
+               'brackets',
        ),
        'imgmulti' => array(
                'imgmultipageprev',
index 50b939c..ba778f4 100644 (file)
@@ -1,12 +1,28 @@
 <?php
 /**
+ * Simple lock server daemon that accepts lock/unlock requests.
+ *
+ * This code should not require MediaWiki setup or PHP files.
+ *
+ * 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 LockManager Maintenance
  */
 
-/**
- * This code should not require MediaWiki setup or PHP files.
- */
 if ( php_sapi_name() !== 'cli' ) {
        die( "This is not a valid entry point.\n" );
 }
index a353504..2edeaba 100644 (file)
@@ -77,9 +77,9 @@ $mwExcludePaths = array(
 
 /** Variable to get user input */
 $input = '';
-$exclude_patterns = '';
+$excludePatterns = '';
 /** Whether to generates man pages: */
-$wgDoxyGenerateMan = false;
+$doxyGenerateMan = false;
 
 #
 # Functions
@@ -128,13 +128,12 @@ function getSvnRevision( $dir ) {
  * @param $svnstat String: path to the svnstat file
  * @param $input String: Path to analyze.
  * @param $exclude String: Additionals path regex to exclude
- * @param $exclude_patterns String: Additionals path regex to exclude
+ * @param $excludePatterns String: Additionals path regex to exclude
  *                 (LocalSettings.php, AdminSettings.php, .svn and .git directories are always excluded)
+ * @param $doxyGenerateMan Boolean
  * @return string
  */
-function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $exclude_patterns ) {
-
-       global $wgDoxyGenerateMan;
+function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $excludePatterns, $doxyGenerateMan ) {
 
        $template = file_get_contents( $doxygenTemplate );
 
@@ -146,9 +145,9 @@ function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath,
                '{{SVNSTAT}}'          => $svnstat,
                '{{INPUT}}'            => $input,
                '{{EXCLUDE}}'          => $exclude,
-               '{{EXCLUDE_PATTERNS}}' => $exclude_patterns,
+               '{{EXCLUDE_PATTERNS}}' => $excludePatterns,
                '{{HAVE_DOT}}'         => `which dot` ? 'YES' : 'NO',
-               '{{GENERATE_MAN}}'     => $wgDoxyGenerateMan ? 'YES' : 'NO',
+               '{{GENERATE_MAN}}'     => $doxyGenerateMan ? 'YES' : 'NO',
        );
        $tmpCfg = str_replace( array_keys( $replacements ), array_values( $replacements ), $template );
        $tmpFileName = tempnam( wfTempDir(), 'mwdocgen-' );
@@ -186,7 +185,7 @@ if ( is_array( $argv ) ) {
                        }
                        break;
                case '--generate-man':
-                       $wgDoxyGenerateMan = true;
+                       $doxyGenerateMan = true;
                        break;
                case '--help':
                        print <<<END
@@ -252,7 +251,7 @@ case 5:
        break;
 case 6:
        $input = $mwPath;
-       $exclude_patterns = 'extensions';
+       $excludePatterns = 'extensions';
 }
 
 $versionNumber = getSvnRevision( $input );
@@ -268,7 +267,7 @@ if ( $versionNumber === false ) { # Not using subversion ?
 $excludedPaths = $mwPath . join( " $mwPath", $mwExcludePaths );
 print "EXCLUDE: $excludedPaths\n\n";
 
-$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $exclude_patterns );
+$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $excludePatterns, $doxyGenerateMan );
 $command = $doxygenBin . ' ' . $generatedConf;
 
 echo <<<TEXT
index 67aa308..ac4e723 100644 (file)
@@ -94,11 +94,12 @@ class nextJobDB extends Maintenance {
                $lb = wfGetLB( $dbName );
                $db = $lb->getConnection( DB_MASTER, array(), $dbName );
                if ( $type === false ) {
-                       $conds = array();
+                       $conds = Job::defaultQueueConditions( );
                } else {
                        $conds = array( 'job_cmd' => $type );
                }
 
+
                $exists = (bool) $db->selectField( 'job', '1', $conds, __METHOD__ );
                $lb->reuseConnection( $db );
                return $exists;
index 54ff247..0847edf 100644 (file)
@@ -50,12 +50,13 @@ class PopulateImageSha1 extends LoggedUpdateMaintenance {
 
        public function doDBUpdates() {
                $method = $this->getOption( 'method', 'normal' );
-               $file = $this->getOption( 'file' );
+               $file = $this->getOption( 'file', '' );
                $force = $this->getOption( 'force' );
+               $isRegen = ( $force || $file != '' ); // forced recalculation?
 
                $t = -microtime( true );
                $dbw = wfGetDB( DB_MASTER );
-               if ( $file ) {
+               if ( $file != '' ) {
                        $res = $dbw->select(
                                'image',
                                array( 'img_name' ),
@@ -82,10 +83,10 @@ class PopulateImageSha1 extends LoggedUpdateMaintenance {
                $oldImageTable = $dbw->tableName( 'oldimage' );
 
                if ( $method == 'pipe' ) {
-                       // Opening a pipe allows the SHA-1 operation to be done in parallel 
+                       // Opening a pipe allows the SHA-1 operation to be done in parallel
                        // with the database write operation, because the writes are queued
-                       // in the pipe buffer. This can improve performance by up to a 
-                       // factor of 2. 
+                       // in the pipe buffer. This can improve performance by up to a
+                       // factor of 2.
                        global $wgDBuser, $wgDBserver, $wgDBpassword, $wgDBname;
                        $cmd = 'mysql -u' . wfEscapeShellArg( $wgDBuser ) .
                                ' -h' . wfEscapeShellArg( $wgDBserver ) .
@@ -109,25 +110,37 @@ class PopulateImageSha1 extends LoggedUpdateMaintenance {
                        // Upgrade the current file version...
                        $sha1 = $file->getRepo()->getFileSha1( $file->getPath() );
                        if ( strval( $sha1 ) !== '' ) { // file on disk and hashed properly
-                               $sql = "UPDATE $imageTable SET img_sha1=" . $dbw->addQuotes( $sha1 ) .
-                                       " WHERE img_name=" . $dbw->addQuotes( $file->getName() );
-                               if ( $method == 'pipe' ) {
-                                       fwrite( $pipe, "$sql;\n" );
+                               if ( $isRegen && $file->getSha1() !== $sha1 ) {
+                                       // The population was probably done already. If the old SHA1
+                                       // does not match, then both fix the SHA1 and the metadata.
+                                       $file->upgradeRow();
                                } else {
-                                       $dbw->query( $sql, __METHOD__ );
+                                       $sql = "UPDATE $imageTable SET img_sha1=" . $dbw->addQuotes( $sha1 ) .
+                                               " WHERE img_name=" . $dbw->addQuotes( $file->getName() );
+                                       if ( $method == 'pipe' ) {
+                                               fwrite( $pipe, "$sql;\n" );
+                                       } else {
+                                               $dbw->query( $sql, __METHOD__ );
+                                       }
                                }
                        }
                        // Upgrade the old file versions...
                        foreach ( $file->getHistory() as $oldFile ) {
                                $sha1 = $oldFile->getRepo()->getFileSha1( $oldFile->getPath() );
                                if ( strval( $sha1 ) !== '' ) { // file on disk and hashed properly
-                                       $sql = "UPDATE $oldImageTable SET oi_sha1=" . $dbw->addQuotes( $sha1 ) .
-                                               " WHERE (oi_name=" . $dbw->addQuotes( $oldFile->getName() ) . " AND" .
-                                               " oi_archive_name=" . $dbw->addQuotes( $oldFile->getArchiveName() ) . ")";
-                                       if ( $method == 'pipe' ) {
-                                               fwrite( $pipe, "$sql;\n" );
+                                       if ( $isRegen && $oldFile->getSha1() !== $sha1 ) {
+                                               // The population was probably done already. If the old SHA1
+                                               // does not match, then both fix the SHA1 and the metadata.
+                                               $oldFile->upgradeRow();
                                        } else {
-                                               $dbw->query( $sql, __METHOD__ );
+                                               $sql = "UPDATE $oldImageTable SET oi_sha1=" . $dbw->addQuotes( $sha1 ) .
+                                                       " WHERE (oi_name=" . $dbw->addQuotes( $oldFile->getName() ) . " AND" .
+                                                       " oi_archive_name=" . $dbw->addQuotes( $oldFile->getArchiveName() ) . ")";
+                                               if ( $method == 'pipe' ) {
+                                                       fwrite( $pipe, "$sql;\n" );
+                                               } else {
+                                                       $dbw->query( $sql, __METHOD__ );
+                                               }
                                        }
                                }
                        }
index 6125fc0..1d8e4c8 100644 (file)
@@ -102,7 +102,8 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
        protected function doSha1LegacyUpdates() {
                $count = 0;
                $db = $this->getDB( DB_MASTER );
-               $res = $db->select( 'archive', '*', array( 'ar_rev_id IS NULL' ), __METHOD__ );
+               $res = $db->select( 'archive', '*',
+                       array( 'ar_rev_id IS NULL', 'ar_sha1' => '' ), __METHOD__ );
 
                $updateSize = 0;
                $db->begin( __METHOD__ );
@@ -131,12 +132,15 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
         */
        protected function upgradeRow( $row, $table, $idCol, $prefix ) {
                $db = $this->getDB( DB_MASTER );
-               if ( $table === 'archive' ) {
-                       $rev = Revision::newFromArchiveRow( $row );
-               } else {
-                       $rev = new Revision( $row );
+               try {
+                       $rev = ( $table === 'archive' )
+                               ? Revision::newFromArchiveRow( $row )
+                               : new Revision( $row );
+                       $text = $rev->getRawText();
+               } catch ( MWException $e ) {
+                       $this->output( "Text of revision with {$idCol}={$row->$idCol} unavailable!\n" );
+                       return false; // bug 22624?
                }
-               $text = $rev->getRawText();
                if ( !is_string( $text ) ) {
                        # This should not happen, but sometimes does (bug 20757)
                        $this->output( "Text of revision with {$idCol}={$row->$idCol} unavailable!\n" );
@@ -145,7 +149,7 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
                        $db->update( $table,
                                array( "{$prefix}_sha1" => Revision::base36Sha1( $text ) ),
                                array( $idCol => $row->$idCol ),
-                               __METHOD__ 
+                               __METHOD__
                        );
                        return true;
                }
@@ -157,7 +161,12 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
         */
        protected function upgradeLegacyArchiveRow( $row ) {
                $db = $this->getDB( DB_MASTER );
-               $rev = Revision::newFromArchiveRow( $row );
+               try {
+                       $rev = Revision::newFromArchiveRow( $row );
+               } catch ( MWException $e ) {
+                       $this->output( "Text of revision with timestamp {$row->ar_timestamp} unavailable!\n" );
+                       return false; // bug 22624?
+               }
                $text = $rev->getRawText();
                if ( !is_string( $text ) ) {
                        # This should not happen, but sometimes does (bug 20757)
@@ -174,7 +183,7 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
                                        'ar_timestamp' => $row->ar_timestamp,
                                        'ar_len'       => $row->ar_len // extra sanity
                                ),
-                               __METHOD__ 
+                               __METHOD__
                        );
                        return true;
                }
index 9c5f32b..10892c4 100644 (file)
@@ -1,6 +1,21 @@
 <?php
 /**
- * Command line script to check for an open proxy at a specified location
+ * Command line script to check for an open proxy at a specified location.
+ *
+ * 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
index 4d775f9..84a2b51 100644 (file)
@@ -1,7 +1,25 @@
 <?php
 /**
- * @ingroup Maintenance
+ * Maintenance script to remove old objects from the parser cache.
+ * This only works when the parser cache is in an SQL database.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
  * @file
+ * @ingroup Maintenance
  */
 
 require( dirname( __FILE__ ) . '/Maintenance.php' );
index fc9a6a8..ec7b081 100644 (file)
@@ -1,7 +1,22 @@
 <?php
 /**
- * @ingroup Maintenance Memcached
+ * 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 Memcached
  */
 
 require_once( dirname( __FILE__ ) . '/commandLine.inc' );
index 26d7e29..b5aa85f 100644 (file)
@@ -287,6 +287,7 @@ class RefreshLinks extends Maintenance {
                                $dbw->delete( $table, array( $field => $list ), __METHOD__ );
                        }
                        $this->output( "\n" );
+                       wfWaitForSlaves();
                }
                $lb->closeAll();
        }
index 6068311..9c1ad29 100644 (file)
@@ -61,7 +61,9 @@ class RunJobs extends Maintenance {
                $dbw = wfGetDB( DB_MASTER );
                $n = 0;
                $conds = '';
-               if ( $type !== false ) {
+               if ( $type === false ) {
+                       $conds = Job::defaultQueueConditions( );
+               } else {
                        $conds = "job_cmd = " . $dbw->addQuotes( $type );
                }
 
@@ -77,6 +79,7 @@ class RunJobs extends Maintenance {
                                wfWaitForSlaves();
                                $t = microtime( true );
                                $offset = $job->id;
+                               $this->runJobsLog( $job->toString() . " STARTING" );
                                $status = $job->run();
                                $t = microtime( true ) - $t;
                                $timeMs = intval( $t * 1000 );
index 5887a75..29904db 100644 (file)
@@ -388,7 +388,8 @@ class CheckStorage {
        }
 
        function restoreText( $revIds, $xml ) {
-               global $wgTmpDirectory, $wgDBname;
+               global $wgDBname;
+               $tmpDir = wfTempDir();
 
                if ( !count( $revIds ) ) {
                        return;
@@ -396,8 +397,8 @@ class CheckStorage {
 
                print "Restoring text from XML backup...\n";
 
-               $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
-               $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
+               $revFileName = "$tmpDir/broken-revlist-$wgDBname";
+               $filteredXmlFileName = "$tmpDir/filtered-$wgDBname.xml";
 
                // Write revision list
                if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
@@ -481,4 +482,3 @@ class CheckStorage {
                $this->errors['fixed'][$id] = true;
        }
 }
-
index 36fb8ee..ca0f95d 100644 (file)
@@ -1,14 +1,31 @@
 <?php
-
 /**
- * @ingroup Testing
- *
  * Set of classes to help with test output and such. Right now pretty specific
  * to the parser tests but could be more useful one day :)
  *
+ * 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 Testing
  * @todo Fixme: Make this more generic
  */
 
+/**
+ * Terminal that supports ANSI escape sequences.
+ */
 class AnsiTermColorer {
        function __construct() {
        }
@@ -37,7 +54,9 @@ class AnsiTermColorer {
        }
 }
 
-/* A colour-less terminal */
+/**
+ * A colour-less terminal
+ */
 class DummyTermColorer {
        public function color( $color ) {
                return '';
index edfae92..3f993f0 100644 (file)
@@ -20,7 +20,7 @@ wfInstallerMain();
 function wfInstallerMain() {
        global $wgRequest, $wgLang, $wgMetaNamespace, $wgCanonicalNamespaceNames;
 
-       $installer = new WebInstaller( $wgRequest );
+       $installer = InstallerOverrides::getWebInstaller( $wgRequest );
 
        if ( !$installer->startSession() ) {
                $installer->finish();
diff --git a/mw-config/overrides.php b/mw-config/overrides.php
new file mode 100644 (file)
index 0000000..ae98295
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * MediaWiki installer overrides.
+ * Modify this file if you are a packager who needs to modify the behavior of the MediaWiki installer.
+ * Altering it is preferred over changing anything in /includes.
+ *
+ * Note: this file doesn't gets included from a global scope, don't use globals directly.
+ */
+
+/*
+
+Example of modifications:
+
+       public static function getLocalSettingsGenerator( Installer $installer ) {
+               return new MyLocalSettingsGenerator( $installer );
+       }
+
+Then add the following to the bottom of this file:
+
+class MyLocalSettingsGenerator extends LocalSettingsGenerator {
+       function getText() {
+               // Modify an existing setting
+               $this->values['wgResourceLoaderMaxQueryLength'] = 512;
+               // add a new setting
+               $ls = parent::getText();
+               return $ls . "\n\$wgUseTex = true;\n";
+       }
+}
+*/
+
+/**
+ * @since 1.20
+ */
+class InstallerOverrides {
+       /**
+        * Instantiates and returns an instance of LocalSettingsGenerator or its descendant classes
+        * @param Installer $installer
+        * @return LocalSettingsGenerator
+        */
+       public static function getLocalSettingsGenerator( Installer $installer ) {
+               return new LocalSettingsGenerator( $installer );
+       }
+
+       /**
+        * Instantiates and returns an instance of WebInstaller or its descendant classes
+        * @param WebRequest $request
+        * @return WebInstaller
+        */
+       public static function getWebInstaller( WebRequest $request ) {
+               return new WebInstaller( $request );
+       }
+
+       /**
+        * Instantiates and returns an instance of CliInstaller or its descendant classes
+        * @param string $siteName
+        * @param string|null $admin
+        * @param array $options
+        * @return CliInstaller
+        */
+       public static function getCliInstaller( $siteName, $admin = null, array $options = array() ) {
+               return new CliInstaller( $siteName, $admin, $options );
+       }
+}
index 85ec580..a5e48fa 100644 (file)
@@ -1,7 +1,21 @@
 <?php
-
 /**
- * Generate an OpenSearch description file
+ * Generate an OpenSearch description file.
+ *
+ * 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
  */
index 3f2f287..16d09ea 100644 (file)
@@ -1 +1,24 @@
-<?php require './opensearch_desc.php'; 
\ No newline at end of file
+<?php
+/**
+ * Version of opensearch_desc.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require './opensearch_desc.php'; 
index eb15c6b..fde960e 100644 (file)
@@ -1,11 +1,26 @@
 <?php
-
 /**
  * Script that redirects to the article passed in the "wpDropdown" parameter.
  * This is used by the nostalgia skin for the special pages drop-down
  *
+ * 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
  */
+
 if ( isset( $_SERVER['MW_COMPILED'] ) ) {
        require ( 'phase3/includes/WebStart.php' );
 } else {
index 1eaa3d0..ae29c4c 100644 (file)
@@ -1 +1,24 @@
-<?php require './redirect.php';
\ No newline at end of file
+<?php
+/**
+ * Version of redirect.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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
+ */
+
+require './redirect.php';
index 34b9be6..0e85050 100644 (file)
@@ -364,6 +364,7 @@ return array(
                        'is' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-is.js',
                        'it' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-it.js',
                        'ja' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js',
+                       'ka' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js',
                        'kk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js',
                        'km' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-km.js',
                        'ko' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ko.js',
@@ -525,32 +526,32 @@ return array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.js',
                'dependencies' => 'mediawiki.util',
        ),
-       'mediawiki.api.category' => array( 
+       'mediawiki.api.category' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.category.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.edit' => array( 
+       'mediawiki.api.edit' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.edit.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.parse' => array( 
+       'mediawiki.api.parse' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.parse.js',
                'dependencies' => 'mediawiki.api',
        ),
-       'mediawiki.api.titleblacklist' => array( 
+       'mediawiki.api.titleblacklist' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.titleblacklist.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.watch' => array( 
+       'mediawiki.api.watch' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.watch.js',
                'dependencies' => array(
                        'mediawiki.api',
@@ -573,13 +574,13 @@ return array(
        'mediawiki.feedback' => array(
                'scripts' => 'resources/mediawiki/mediawiki.feedback.js',
                'styles' => 'resources/mediawiki/mediawiki.feedback.css',
-               'dependencies' => array( 
-                       'mediawiki.api.edit', 
+               'dependencies' => array(
+                       'mediawiki.api.edit',
                        'mediawiki.Title',
                        'mediawiki.jqueryMsg',
                        'jquery.ui.dialog',
                ),
-               'messages' => array( 
+               'messages' => array(
                        'feedback-bugornote',
                        'feedback-subject',
                        'feedback-message',
@@ -654,21 +655,9 @@ return array(
        'mediawiki.action.view.rightClickEdit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
        ),
+       // Alias for backwards compatibility
        'mediawiki.action.watch.ajax' => array(
-               'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js',
-               'dependencies' => array(
-                       'mediawiki.api.watch',
-                       'mediawiki.util',
-               ),
-               'messages' => array(
-                       'watch',
-                       'unwatch',
-                       'watching',
-                       'unwatching',
-                       'tooltip-ca-watch',
-                       'tooltip-ca-unwatch',
-                       'watcherrortext',
-               ),
+               'dependencies' => 'mediawiki.page.watch.ajax'
        ),
 
        /* MediaWiki Language */
@@ -687,6 +676,7 @@ return array(
                        'cu' => 'resources/mediawiki.language/languages/cu.js',
                        'cy' => 'resources/mediawiki.language/languages/cy.js',
                        'dsb' => 'resources/mediawiki.language/languages/dsb.js',
+                       'fi' => 'resources/mediawiki.language/languages/fi.js',
                        'fr' => 'resources/mediawiki.language/languages/fr.js',
                        'ga' => 'resources/mediawiki.language/languages/ga.js',
                        'gd' => 'resources/mediawiki.language/languages/gd.js',
@@ -695,8 +685,10 @@ return array(
                        'hi' => 'resources/mediawiki.language/languages/hi.js',
                        'hr' => 'resources/mediawiki.language/languages/hr.js',
                        'hsb' => 'resources/mediawiki.language/languages/hsb.js',
+                       'hu' => 'resources/mediawiki.language/languages/hu.js',
                        'hy' => 'resources/mediawiki.language/languages/hy.js',
                        'ksh' => 'resources/mediawiki.language/languages/ksh.js',
+                       'la' => 'resources/mediawiki.language/languages/la.js',
                        'ln' => 'resources/mediawiki.language/languages/ln.js',
                        'lt' => 'resources/mediawiki.language/languages/lt.js',
                        'lv' => 'resources/mediawiki.language/languages/lv.js',
@@ -704,11 +696,9 @@ return array(
                        'mk' => 'resources/mediawiki.language/languages/mk.js',
                        'mo' => 'resources/mediawiki.language/languages/mo.js',
                        'mt' => 'resources/mediawiki.language/languages/mt.js',
-                       'nl' => 'resources/mediawiki.language/languages/nl.js',
                        'nso' => 'resources/mediawiki.language/languages/nso.js',
+                       'os' => 'resources/mediawiki.language/languages/os.js',
                        'pl' => 'resources/mediawiki.language/languages/pl.js',
-                       'pt' => 'resources/mediawiki.language/languages/pt.js',
-                       'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
                        'ro' => 'resources/mediawiki.language/languages/ro.js',
                        'ru' => 'resources/mediawiki.language/languages/ru.js',
                        'se' => 'resources/mediawiki.language/languages/se.js',
@@ -724,11 +714,19 @@ return array(
                        'uk' => 'resources/mediawiki.language/languages/uk.js',
                        'wa' => 'resources/mediawiki.language/languages/wa.js',
                ),
+               'dependencies' => array( 'mediawiki.language.data' ),
+       ),
+
+       'mediawiki.language.init' => array(
+               'scripts' => 'resources/mediawiki.language/mediawiki.language.init.js',
        ),
 
        'mediawiki.jqueryMsg' => array(
-               'dependencies' => array( 'mediawiki.language', 'mediawiki.util' ),
-               'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js'
+               'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js',
+               'dependencies' => array(
+                       'mediawiki.util',
+                       'mediawiki.language',
+               ),
        ),
 
        /* MediaWiki Libs */
@@ -757,7 +755,23 @@ return array(
                ),
                'position' => 'top',
        ),
-
+       'mediawiki.page.watch.ajax' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.watch.ajax.js',
+               'dependencies' => array(
+                       'mediawiki.page.startup',
+                       'mediawiki.api.watch',
+                       'mediawiki.util'
+               ),
+               'messages' => array(
+                       'watch',
+                       'unwatch',
+                       'watching',
+                       'unwatching',
+                       'tooltip-ca-watch',
+                       'tooltip-ca-unwatch',
+                       'watcherrortext',
+               ),
+       ),
 
        /* MediaWiki Special pages */
 
@@ -802,6 +816,11 @@ return array(
        'mediawiki.special.search' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/mediawiki.special/mediawiki.special.search.css',
+               'messages' => array(
+                       'powersearch-togglelabel',
+                       'powersearch-toggleall',
+                       'powersearch-togglenone',
+               ),
        ),
        'mediawiki.special.undelete' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
index c28503b..686cdb7 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Blind 1.8.20
+ * jQuery UI Effects Blind 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 5666312..e3fc3d8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Bounce 1.8.20
+ * jQuery UI Effects Bounce 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 9244a15..2b43554 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Clip 1.8.20
+ * jQuery UI Effects Clip 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c49bdaa..cc31827 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects 1.8.20
+ * jQuery UI Effects 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -306,7 +306,7 @@ $.fn.extend({
 /******************************************************************************/
 
 $.extend($.effects, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        // Saves a set of properties in a data storage
        save: function(element, set) {
@@ -370,7 +370,16 @@ $.extend($.effects, {
                                }),
                        active = document.activeElement;
 
-               element.wrap(wrapper);
+               // support: Firefox
+               // Firefox incorrectly exposes anonymous content
+               // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+               try {
+                       active.id;
+               } catch( e ) {
+                       active = document.body;
+               }
+
+               element.wrap( wrapper );
 
                // Fixes #7595 - Elements lose focus when wrapped.
                if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
index 4fdb521..1fa5660 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Drop 1.8.20
+ * jQuery UI Effects Drop 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1a9d32e..f50e257 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Explode 1.8.20
+ * jQuery UI Effects Explode 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c976ce4..c62037f 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Fade 1.8.20
+ * jQuery UI Effects Fade 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 017f70c..a660eed 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Fold 1.8.20
+ * jQuery UI Effects Fold 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 71462fb..e65bda3 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Highlight 1.8.20
+ * jQuery UI Effects Highlight 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 4d8e90e..a512184 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Pulsate 1.8.20
+ * jQuery UI Effects Pulsate 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index a4941f9..c312195 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Scale 1.8.20
+ * jQuery UI Effects Scale 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b40c783..08ce5a8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Shake 1.8.20
+ * jQuery UI Effects Shake 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 49059cf..3258a9a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Slide 1.8.20
+ * jQuery UI Effects Slide 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 565ad28..97514f1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Transfer 1.8.20
+ * jQuery UI Effects Transfer 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 743a15d..8a9218d 100644 (file)
@@ -12,7 +12,7 @@ jQuery(function($){
                monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
                dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
                dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
-               dayNamesMin: ['اÙ\84أحد', 'اÙ\84اثÙ\86Ù\8aÙ\86', 'اÙ\84Ø«Ù\84اثاء', 'اÙ\84أربعاء', 'اÙ\84Ø®Ù\85Ù\8aس', 'اÙ\84جÙ\85عة', 'اÙ\84سبت'],
+               dayNamesMin: ['Ø­', 'Ù\86', 'Ø«', 'ر', 'Ø®', 'ج', 'س'],
                weekHeader: 'أسبوع',
                dateFormat: 'dd/mm/yy',
                firstDay: 6,
index bee4bfb..ff66e49 100644 (file)
@@ -6,15 +6,15 @@ jQuery(function($){
                prevText: '&#x3c;Aur',
                nextText: 'Hur&#x3e;',
                currentText: 'Gaur',
-               monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina',
-               'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
-               monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka',
-               'Uzt','Abu','Ira','Urr','Aza','Abe'],
-               dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],
-               dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],
-               dayNamesMin: ['Ig','As','As','As','Os','Os','La'],
-               weekHeader: 'Wk',
-               dateFormat: 'yy/mm/dd',
+               monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+                       'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+               monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+                       'uzt.','abu.','ira.','urr.','aza.','abe.'],
+               dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+               dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+               dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+               weekHeader: 'As',
+               dateFormat: 'yy-mm-dd',
                firstDay: 1,
                isRTL: false,
                showMonthAfterYear: false,
diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js
new file mode 100644 (file)
index 0000000..c10658d
--- /dev/null
@@ -0,0 +1,21 @@
+/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Lado Lomidze (lado.lomidze@gmail.com). */
+jQuery(function($){
+       $.datepicker.regional['ka'] = {
+               closeText: 'დახურვა',
+               prevText: '&#x3c; წინა',
+               nextText: 'შემდეგი &#x3e;',
+               currentText: 'დღეს',
+               monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],
+               monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],
+               dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],
+               dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+               dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+               weekHeader: 'კვირა',
+               dateFormat: 'dd-mm-yy',
+               firstDay: 1,
+               isRTL: false,
+               showMonthAfterYear: false,
+               yearSuffix: ''};
+       $.datepicker.setDefaults($.datepicker.regional['ka']);
+});
index f086f81..fe0a729 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Accordion 1.8.20
+ * jQuery UI Accordion 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -518,7 +518,7 @@ $.widget( "ui.accordion", {
 });
 
 $.extend( $.ui.accordion, {
-       version: "1.8.20",
+       version: "1.8.21",
        animations: {
                slide: function( options, additions ) {
                        options = $.extend({
index f95b78f..f8009c6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Autocomplete 1.8.20
+ * jQuery UI Autocomplete 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index cbec505..47bd6aa 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Button 1.8.20
+ * jQuery UI Button 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 6e2b3be..2a8a2c1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI 1.8.20
+ * jQuery UI 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -18,7 +18,7 @@ if ( $.ui.version ) {
 }
 
 $.extend( $.ui, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        keyCode: {
                ALT: 18,
index 951c1a9..8ca1b15 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Datepicker 1.8.20
+ * jQuery UI Datepicker 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -12,7 +12,7 @@
  */
 (function( $, undefined ) {
 
-$.extend($.ui, { datepicker: { version: "1.8.20" } });
+$.extend($.ui, { datepicker: { version: "1.8.21" } });
 
 var PROP_NAME = 'datepicker';
 var dpuuid = new Date().getTime();
@@ -1815,7 +1815,7 @@ $.fn.datepicker = function(options){
 $.datepicker = new Datepicker(); // singleton instance
 $.datepicker.initialized = false;
 $.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.8.20";
+$.datepicker.version = "1.8.21";
 
 // Workaround for #4055
 // Add another global to avoid noConflict issues with inline event handlers
index d28be0c..e7e05b1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Dialog 1.8.20
+ * jQuery UI Dialog 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -702,7 +702,7 @@ $.widget("ui.dialog", {
 });
 
 $.extend($.ui.dialog, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        uuid: 0,
        maxZ: 0,
index dee9777..40a0c52 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Draggable 1.8.20
+ * jQuery UI Draggable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -103,6 +103,8 @@ $.widget("ui.draggable", $.ui.mouse, {
                //Create and append the visible helper
                this.helper = this._createHelper(event);
 
+               this.helper.addClass("ui-draggable-dragging");
+
                //Cache the helper size
                this._cacheHelperProportions();
 
@@ -163,7 +165,7 @@ $.widget("ui.draggable", $.ui.mouse, {
                if ($.ui.ddmanager && !o.dropBehaviour)
                        $.ui.ddmanager.prepareOffsets(this, event);
 
-               this.helper.addClass("ui-draggable-dragging");
+               
                this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
                
                //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
@@ -511,7 +513,7 @@ $.widget("ui.draggable", $.ui.mouse, {
 });
 
 $.extend($.ui.draggable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 $.ui.plugin.add("draggable", "connectToSortable", {
index 8cb2bb7..a749161 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Droppable 1.8.20
+ * jQuery UI Droppable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -147,7 +147,7 @@ $.widget("ui.droppable", {
 });
 
 $.extend($.ui.droppable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 $.ui.intersect = function(draggable, droppable, toleranceMode) {
index 63f8570..a4392de 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Mouse 1.8.20
+ * jQuery UI Mouse 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1989896..164804b 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Position 1.8.20
+ * jQuery UI Position 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -243,7 +243,12 @@ if ( !$.offset.setOffset ) {
        $.fn.offset = function( options ) {
                var elem = this[ 0 ];
                if ( !elem || !elem.ownerDocument ) { return null; }
-               if ( options ) { 
+               if ( options ) {
+                       if ( $.isFunction( options ) ) {
+                               return this.each(function( i ) {
+                                       $( this ).offset( options.call( this, i, $( this ).offset() ) );
+                               });
+                       }
                        return this.each(function() {
                                $.offset.setOffset( this, options );
                        });
index b1c05de..4139be6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Progressbar 1.8.20
+ * jQuery UI Progressbar 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -103,7 +103,7 @@ $.widget( "ui.progressbar", {
 });
 
 $.extend( $.ui.progressbar, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })( jQuery );
index a2a7ad5..904be47 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Resizable 1.8.20
+ * jQuery UI Resizable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -540,7 +540,7 @@ $.widget("ui.resizable", $.ui.mouse, {
 });
 
 $.extend($.ui.resizable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 /*
index b68ea95..403e62d 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Selectable 1.8.20
+ * jQuery UI Selectable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -261,7 +261,7 @@ $.widget("ui.selectable", $.ui.mouse, {
 });
 
 $.extend($.ui.selectable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })(jQuery);
index 3e6178e..8629dc6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Slider 1.8.20
+ * jQuery UI Slider 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -656,7 +656,7 @@ $.widget( "ui.slider", $.ui.mouse, {
 });
 
 $.extend( $.ui.slider, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 }(jQuery));
index 3438f59..45fbb1c 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Sortable 1.8.20
+ * jQuery UI Sortable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -155,11 +155,6 @@ $.widget("ui.sortable", $.ui.mouse, {
                        left: this.offset.left - this.margins.left
                };
 
-               // Only after we got the offset, we can change the helper's position to absolute
-               // TODO: Still need to figure out a way to make relative sorting possible
-               this.helper.css("position", "absolute");
-               this.cssPosition = this.helper.css("position");
-
                $.extend(this.offset, {
                        click: { //Where the click happened, relative to the element
                                left: event.pageX - this.offset.left,
@@ -169,6 +164,11 @@ $.widget("ui.sortable", $.ui.mouse, {
                        relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
                });
 
+               // Only after we got the offset, we can change the helper's position to absolute
+               // TODO: Still need to figure out a way to make relative sorting possible
+               this.helper.css("position", "absolute");
+               this.cssPosition = this.helper.css("position");
+               
                //Generate the original position
                this.originalPosition = this._generatePosition(event);
                this.originalPageX = event.pageX;
@@ -730,30 +730,31 @@ $.widget("ui.sortable", $.ui.mouse, {
                if(this.containers.length === 1) {
                        this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
                        this.containers[innermostIndex].containerCache.over = 1;
-               } else if(this.currentContainer != this.containers[innermostIndex]) { 
-
-                       //When entering a new container, we will find the item with the least distance and append our item near it 
-                       var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top']; 
-                       for (var j = this.items.length - 1; j >= 0; j--) { 
-                               if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue; 
-                               var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top']; 
-                               if(Math.abs(cur - base) < dist) { 
-                                       dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; 
-                               } 
-                       } 
-
-                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled 
-                               return; 
-
-                       this.currentContainer = this.containers[innermostIndex]; 
-                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); 
-                       this._trigger("change", event, this._uiHash()); 
-                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); 
-
-                       //Update the placeholder 
-                       this.options.placeholder.update(this.currentContainer, this.placeholder); 
-               
-                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); 
+               } else if(this.currentContainer != this.containers[innermostIndex]) {
+
+                       //When entering a new container, we will find the item with the least distance and append our item near it
+                       var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
+                       for (var j = this.items.length - 1; j >= 0; j--) {
+                               if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
+                               var cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;
+                               if(Math.abs(cur - base) < dist) {
+                                       dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+                                       this.direction = (cur - base > 0) ? 'down' : 'up';
+                               }
+                       }
+
+                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled
+                               return;
+
+                       this.currentContainer = this.containers[innermostIndex];
+                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
+                       this._trigger("change", event, this._uiHash());
+                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
+
+                       //Update the placeholder
+                       this.options.placeholder.update(this.currentContainer, this.placeholder);
+
+                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
                        this.containers[innermostIndex].containerCache.over = 1;
                } 
        
@@ -1075,7 +1076,7 @@ $.widget("ui.sortable", $.ui.mouse, {
 });
 
 $.extend($.ui.sortable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })(jQuery);
index 7cc19f0..d9e2fdf 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Tabs 1.8.20
+ * jQuery UI Tabs 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -698,7 +698,7 @@ $.widget( "ui.tabs", {
 });
 
 $.extend( $.ui.tabs, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 /*
index 5a71348..4f7aea7 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Widget 1.8.20
+ * jQuery UI Widget 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index cd207b9..4ad0cec 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Accordion 1.8.20
+ * jQuery UI Accordion 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 535f1e6..428e66a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Autocomplete 1.8.20
+ * jQuery UI Autocomplete 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -13,7 +13,7 @@
 * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
 
 /*
- * jQuery UI Menu 1.8.20
+ * jQuery UI Menu 1.8.21
  *
  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1e2b1ff..f5fe74e 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Button 1.8.20
+ * jQuery UI Button 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c42f9ba..f19df47 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.8.20
+ * jQuery UI CSS Framework 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index fefb016..4c0ca36 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Datepicker 1.8.20
+ * jQuery UI Datepicker 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 2319611..77329fb 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Dialog 1.8.20
+ * jQuery UI Dialog 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 7c099ad..4c2a52d 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Progressbar 1.8.20
+ * jQuery UI Progressbar 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b6b90de..0105c8a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Resizable 1.8.20
+ * jQuery UI Resizable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
 .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
 .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
 .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-/* @noflip */
 .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-/* @noflip */
 .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-/* @noflip */
 .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-/* @noflip */
 .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-/* @noflip */
 .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-/* @noflip */
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
\ No newline at end of file
index 279effc..1d89569 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Selectable 1.8.20
+ * jQuery UI Selectable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 6acaeaa..9bd0fd9 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Slider 1.8.20
+ * jQuery UI Slider 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 42a3692..d4645f8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Tabs 1.8.20
+ * jQuery UI Tabs 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b705ff6..aad5943 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.8.20
+ * jQuery UI CSS Framework 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 3c0d7e5..45df39a 100644 (file)
@@ -8,7 +8,7 @@
 
        /**
         * Enforces a byte limit to a textbox, so that UTF-8 entries are counted as well, when, for example,
-        * a databae field has a byte limit rather than a character limit.
+        * a database field has a byte limit rather than a character limit.
         * Plugin rationale: Browser has native maxlength for number of characters, this plugin exists to
         * limit number of bytes instead.
         *
index 5abb869..2db0629 100644 (file)
@@ -1,19 +1,85 @@
 /**
- * jQuery QUnit CompletenessTest 0.3
+ * jQuery QUnit CompletenessTest 0.4
  *
  * Tests the completeness of test suites for object oriented javascript
  * libraries. Written to be used in environments with jQuery and QUnit.
- * Requires jQuery 1.5.2 or higher.
- *
- * Globals: jQuery, QUnit, console.log
+ * Requires jQuery 1.7.2 or higher.
  *
  * Built for and tested with:
- * - Safari 5
+ * - Chrome 19
  * - Firefox 4
+ * - Safari 5
  *
- * @author Timo Tijhof, 2011
+ * @author Timo Tijhof, 2011-2012
  */
-( function( $ ) {
+/*global jQuery, QUnit */
+/*jshint eqeqeq:false, eqnull:false, forin:false */
+( function ( $ ) {
+       "use strict";
+
+       var util,
+               hasOwn = Object.prototype.hasOwnProperty,
+               log = (window.console && window.console.log)
+                       ? function () { return window.console.log.apply(window.console, arguments); }
+                       : function () {};
+
+       // Simplified version of a few jQuery methods, except that they don't
+       // call other jQuery methods. Required to be able to run the CompletenessTest
+       // on jQuery itself as well.
+       util = {
+               keys: Object.keys || function ( object ) {
+                       var key, keys = [];
+                       for ( key in object ) {
+                               if ( hasOwn.call( object, key ) ) {
+                                       keys.push( key );
+                               }
+                       }
+                       return keys;
+               },
+               extend: function () {
+                       var options, name, src, copy,
+                               target = arguments[0] || {},
+                               i = 1,
+                               length = arguments.length;
+
+                       for ( ; i < length; i++ ) {
+                               // Only deal with non-null/undefined values
+                               if ( (options = arguments[ i ]) != null ) {
+                                       // Extend the base object
+                                       for ( name in options ) {
+                                               src = target[ name ];
+                                               copy = options[ name ];
+
+                                               // Prevent never-ending loop
+                                               if ( target === copy ) {
+                                                       continue;
+                                               }
+
+                                               if ( copy !== undefined ) {
+                                                       target[ name ] = copy;
+                                               }
+                                       }
+                               }
+                       }
+
+                       // Return the modified object
+                       return target;
+               },
+               each: function ( object, callback ) {
+                       var name;
+                       for ( name in object ) {
+                               if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+                                       break;
+                               }
+                       }
+               },
+               // $.type and $.isEmptyObject are safe as is, they don't call
+               // other $.* methods. Still need to be derefenced into `util`
+               // since the CompletenessTest will overload them with spies.
+               type: $.type,
+               isEmptyObject: $.isEmptyObject
+       };
+
 
 /**
  * CompletenessTest
@@ -33,67 +99,103 @@ var CompletenessTest = function ( masterVariable, ignoreFn ) {
 
        // Keep track in these objects. Keyed by strings with the
        // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
+       this.injectionTracker = {};
        this.methodCallTracker = {};
        this.missingTests = {};
 
-       this.ignoreFn = undefined === ignoreFn ? function(){ return false; } : ignoreFn;
+       this.ignoreFn = undefined === ignoreFn ? function () { return false; } : ignoreFn;
 
        // Lazy limit in case something weird happends (like recurse (part of) ourself).
-       this.lazyLimit = 1000;
+       this.lazyLimit = 2000;
        this.lazyCounter = 0;
 
        var that = this;
 
        // Bind begin and end to QUnit.
-       QUnit.begin = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
-       };
+       QUnit.begin( function () {
+               that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
+               log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+       });
+
+       QUnit.done( function () {
+               that.populateMissingTests();
+               log( 'CompletenessTest/populateMissingTests', that );
+
+               var toolbar, testResults, cntTotal, cntCalled, cntMissing;
+
+               cntTotal = util.keys( that.injectionTracker ).length;
+               cntCalled = util.keys( that.methodCallTracker ).length;
+               cntMissing = util.keys( that.missingTests ).length;
 
-       QUnit.done = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_CHECK );
-               console.log( 'CompletenessTest.ACTION_CHECK', that );
+               function makeTestResults( blob, title, style ) {
+                       var elOutputWrapper, elTitle, elContainer, elList, elFoot;
 
-               // Build HTML representing the outcome from CompletenessTest
-               // And insert it into the header.
+                       elTitle = document.createElement( 'strong' );
+                       elTitle.textContent = title || 'Values';
 
-               var makeList = function( blob, title, style ) {
-                       title = title || 'Values';
-                       var html = '<strong>' + mw.html.escape(title) + '</strong>';
-                       $.each( blob, function( key ) {
-                               html += '<br />' + mw.html.escape(key);
+                       elList = document.createElement( 'ul' );
+                       util.each( blob, function ( key ) {
+                               var elItem = document.createElement( 'li' );
+                               elItem.textContent = key;
+                               elList.appendChild( elItem );
                        });
-                       html += '<br /><br /><em>&mdash; CompletenessTest</em>';
-                       var     $oldResult = $( '#qunit-completenesstest' ),
-                               $result = $oldResult.length ? $oldResult : $( '<div id="qunit-completenesstest"></div>' );
-                       return $result.css( style ).html( html );
-               };
 
-               if ( $.isEmptyObject( that.missingTests ) ) {
+                       elFoot = document.createElement( 'p' );
+                       elFoot.innerHTML = '<em>&mdash; CompletenessTest</em>';
+
+                       elContainer = document.createElement( 'div' );
+                       elContainer.appendChild( elTitle );
+                       elContainer.appendChild( elList );
+                       elContainer.appendChild( elFoot );
+
+                       elOutputWrapper = document.getElementById( 'qunit-completenesstest' );
+                       if ( !elOutputWrapper ) {
+                               elOutputWrapper = document.createElement( 'div' );
+                               elOutputWrapper.id = 'qunit-completenesstest';
+                       }
+                       elOutputWrapper.appendChild( elContainer );
+
+                       util.each( style, function ( key, value ) {
+                               elOutputWrapper.style[key] = value;
+                       });
+                       return elOutputWrapper;
+               }
+
+               if ( cntMissing === 0 ) {
                        // Good
-                       var $testResults = makeList(
-                               { 'No missing tests!': true },
-                               'missingTests',
+                       testResults = makeTestResults(
+                               {},
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. No missing tests!',
                                {
-                                       background: '#D2E0E6',
+                                       backgroundColor: '#D2E0E6',
                                        color: '#366097',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                } else {
                        // Bad
-                       var $testResults = makeList(
+                       testResults = makeTestResults(
                                that.missingTests,
-                               'missingTests',
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. ' + cntMissing + ' methods not covered:',
                                {
-                                       background: '#EE5757',
+                                       backgroundColor: '#EE5757',
                                        color: 'black',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                }
 
-               $( '#qunit-testrunner-toolbar' ).prepend( $testResults );
-       };
+               toolbar = document.getElementById( 'qunit-testrunner-toolbar' );
+               if ( toolbar ) {
+                       toolbar.insertBefore( testResults, toolbar.firstChild );
+               }
+       });
 
        return this;
 };
@@ -106,7 +208,7 @@ CompletenessTest.ACTION_CHECK = 501;
 CompletenessTest.fn = CompletenessTest.prototype = {
 
        /**
-        * CompletenessTest.fn.checkTests
+        * CompletenessTest.fn.walkTheObject
         *
         * This function recursively walks through the given object, calling itself as it goes.
         * Depending on the action it either injects our listener into the methods, or
@@ -121,92 +223,86 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         *  masterVariable. Not including currName.
         * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
         */
-       checkTests: function( currName, currVar, masterVariable, parentPathArray, action ) {
-
-               // Handle the lazy limit
-               this.lazyCounter++;
-               if ( this.lazyCounter > this.lazyLimit ) {
-                       console.log( 'CompletenessTest.fn.checkTests> Limit reached: ' + this.lazyCounter );
-                       return null;
-               }
+       walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
 
-               var     type = $.type( currVar ),
+               var key, value, tmpPathArray,
+                       type = util.type( currVar ),
                        that = this;
 
                // Hard ignores
                if ( this.ignoreFn( currVar, that, parentPathArray ) ) {
                        return null;
+               }
 
-               // Functions
-               } else  if ( type === 'function' ) {
-
-                       /* CHECK MODE */
-
-                       if ( action === CompletenessTest.ACTION_CHECK ) {
-
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
-
-                                       that.hasTest( parentPathArray.join( '.' ) );
+               // Handle the lazy limit
+               this.lazyCounter++;
+               if ( this.lazyCounter > this.lazyLimit ) {
+                       log( 'CompletenessTest.fn.walkTheObject> Limit reached: ' + this.lazyCounter, parentPathArray );
+                       return null;
+               }
 
-                               // We don't support checking object constructors yet...
-                               } else {
+               // Functions
+               if ( type === 'function' ) {
 
-                                       // ...the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
+                       if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
 
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                                               that.hasTest( tmpPathArray.join( '.' ) );
+                                       that.injectionTracker[ parentPathArray.join( '.' ) ] = true;
+                                       that.injectCheck( masterVariable, parentPathArray, function () {
+                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
                                        } );
                                }
 
-                       /* INJECT MODE */
-
-                       } else if ( action === CompletenessTest.ACTION_INJECT ) {
+                       // We don't support checking object constructors yet...
+                       // ...we can check the prototypes fine, though.
+                       } else {
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+                                       for ( key in currVar.prototype ) {
+                                               if ( hasOwn.call( currVar.prototype, key ) ) {
+                                                       value = currVar.prototype[key];
+                                                       if ( key === 'constructor' ) {
+                                                               continue;
+                                                       }
 
-                                       // Inject check
-                                       that.injectCheck( masterVariable, parentPathArray, function() {
-                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
-                                       } );
+                                                       // Clone and break reference to parentPathArray
+                                                       tmpPathArray = util.extend( [], parentPathArray );
+                                                       tmpPathArray.push( 'prototype' );
+                                                       tmpPathArray.push( key );
 
-                               // We don't support checking object constructors yet...
-                               } else {
+                                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                                               }
+                                       }
 
-                                       // ... the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
-
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
-
-                                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
-                                       } );
                                }
-
                        }
 
-               // Recursively. After all, this *is* the completeness test
-               } else if ( type === 'object' ) {
-
-                       $.each( currVar, function( key, value ) {
-
-                               // Clone and break reference to parentPathArray
-                               var tmpPathArray = $.extend( [], parentPathArray );
-                               tmpPathArray.push( key );
+               }
 
-                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
+               // Recursively. After all, this is the *completeness* test
+               if ( type === 'function' || type === 'object' ) {
+                       for ( key in currVar ) {
+                               if ( hasOwn.call( currVar, key ) ) {
+                                       value = currVar[key];
 
-                       } );
+                                       // Clone and break reference to parentPathArray
+                                       tmpPathArray = util.extend( [], parentPathArray );
+                                       tmpPathArray.push( key );
 
+                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                               }
+                       }
                }
        },
 
+       populateMissingTests: function () {
+               var ct = this;
+               util.each( ct.injectionTracker, function ( key ) {
+                       ct.hasTest( key );
+               });
+       },
+
        /**
         * CompletenessTest.fn.hasTest
         *
@@ -217,7 +313,7 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param fnName {String}
         * @return {Boolean}
         */
-       hasTest: function( fnName ) {
+       hasTest: function ( fnName ) {
                if ( !( fnName in this.methodCallTracker ) ) {
                        this.missingTests[fnName] = true;
                        return false;
@@ -235,19 +331,24 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param objectPathArray {Array}
         * @param injectFn {Function}
         */
-       injectCheck: function( masterVariable, objectPathArray, injectFn ) {
-               var     prev,
-                       curr = masterVariable,
-                       lastMember;
+       injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
+               var i, len, prev, memberName, lastMember,
+                       curr = masterVariable;
+
+               // Get the object in question through the path from the master variable,
+               // We can't pass the value directly because we need to re-define the object
+               // member and keep references to the parent object, member name and member
+               // value at all times.
+               for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
+                       memberName = objectPathArray[i];
 
-               $.each( objectPathArray, function( i, memberName ) {
                        prev = curr;
                        curr = prev[memberName];
                        lastMember = memberName;
-               });
+               }
 
                // Objects are by reference, members (unless objects) are not.
-               prev[lastMember] = function() {
+               prev[lastMember] = function () {
                        injectFn();
                        return curr.apply( this, arguments );
                };
index b948bae..5684a44 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.5.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.8.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
@@ -56,6 +56,7 @@
 
 #qunit-header label {
        display: inline-block;
+       padding-left: 0.5em;
 }
 
 #qunit-banner {
index 66dd721..c1570c2 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.5.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.8.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
@@ -8,75 +8,89 @@
  * or GPL (GPL-LICENSE.txt) licenses.
  */
 
-(function(window) {
+(function( window ) {
 
-var defined = {
+var QUnit,
+       config,
+       onErrorFnPrev,
+       testId = 0,
+       fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
+       toString = Object.prototype.toString,
+       hasOwn = Object.prototype.hasOwnProperty,
+       defined = {
        setTimeout: typeof window.setTimeout !== "undefined",
        sessionStorage: (function() {
                var x = "qunit-test-string";
                try {
-                       sessionStorage.setItem(x, x);
-                       sessionStorage.removeItem(x);
+                       sessionStorage.setItem( x, x );
+                       sessionStorage.removeItem( x );
                        return true;
-               } catch(e) {
+               } catch( e ) {
                        return false;
                }
        }())
 };
 
-var    testId = 0,
-       toString = Object.prototype.toString,
-       hasOwn = Object.prototype.hasOwnProperty;
-
-var Test = function(name, testName, expected, async, callback) {
-       this.name = name;
-       this.testName = testName;
-       this.expected = expected;
-       this.async = async;
-       this.callback = callback;
+function Test( settings ) {
+       extend( this, settings );
        this.assertions = [];
-};
+       this.testNumber = ++Test.count;
+}
+
+Test.count = 0;
+
 Test.prototype = {
        init: function() {
-               var tests = id("qunit-tests");
-               if (tests) {
-                       var b = document.createElement("strong");
-                               b.innerHTML = "Running " + this.name;
-                       var li = document.createElement("li");
-                               li.appendChild( b );
-                               li.className = "running";
-                               li.id = this.id = "test-output" + testId++;
+               var a, b, li,
+        tests = id( "qunit-tests" );
+
+               if ( tests ) {
+                       b = document.createElement( "strong" );
+                       b.innerHTML = this.name;
+
+                       // `a` initialized at top of scope
+                       a = document.createElement( "a" );
+                       a.innerHTML = "Rerun";
+                       a.href = QUnit.url({ testNumber: this.testNumber });
+
+                       li = document.createElement( "li" );
+                       li.appendChild( b );
+                       li.appendChild( a );
+                       li.className = "running";
+                       li.id = this.id = "qunit-test-output" + testId++;
+
                        tests.appendChild( li );
                }
        },
        setup: function() {
-               if (this.module != config.previousModule) {
+               if ( this.module !== config.previousModule ) {
                        if ( config.previousModule ) {
-                               runLoggingCallbacks('moduleDone', QUnit, {
+                               runLoggingCallbacks( "moduleDone", QUnit, {
                                        name: config.previousModule,
                                        failed: config.moduleStats.bad,
                                        passed: config.moduleStats.all - config.moduleStats.bad,
                                        total: config.moduleStats.all
-                               } );
+                               });
                        }
                        config.previousModule = this.module;
                        config.moduleStats = { all: 0, bad: 0 };
-                       runLoggingCallbacks( 'moduleStart', QUnit, {
+                       runLoggingCallbacks( "moduleStart", QUnit, {
                                name: this.module
-                       } );
-               } else if (config.autorun) {
-                       runLoggingCallbacks( 'moduleStart', QUnit, {
+                       });
+               } else if ( config.autorun ) {
+                       runLoggingCallbacks( "moduleStart", QUnit, {
                                name: this.module
-                       } );
+                       });
                }
 
                config.current = this;
+
                this.testEnvironment = extend({
                        setup: function() {},
                        teardown: function() {}
-               }, this.moduleTestEnvironment);
+               }, this.moduleTestEnvironment );
 
-               runLoggingCallbacks( 'testStart', QUnit, {
+               runLoggingCallbacks( "testStart", QUnit, {
                        name: this.testName,
                        module: this.module
                });
@@ -89,19 +103,19 @@ Test.prototype = {
                        saveGlobal();
                }
                if ( config.notrycatch ) {
-                       this.testEnvironment.setup.call(this.testEnvironment);
+                       this.testEnvironment.setup.call( this.testEnvironment );
                        return;
                }
                try {
-                       this.testEnvironment.setup.call(this.testEnvironment);
-               } catch(e) {
+                       this.testEnvironment.setup.call( this.testEnvironment );
+               } catch( e ) {
                        QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
                }
        },
        run: function() {
                config.current = this;
 
-               var running = id("qunit-testresult");
+               var running = id( "qunit-testresult" );
 
                if ( running ) {
                        running.innerHTML = "Running: <br/>" + this.name;
@@ -112,13 +126,14 @@ Test.prototype = {
                }
 
                if ( config.notrycatch ) {
-                       this.callback.call(this.testEnvironment);
+                       this.callback.call( this.testEnvironment, QUnit.assert );
                        return;
                }
+
                try {
-                       this.callback.call(this.testEnvironment);
-               } catch(e) {
-                       QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + ": " + e.message, extractStacktrace( e, 1 ) );
+                       this.callback.call( this.testEnvironment, QUnit.assert );
+               } catch( e ) {
+                       QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
                        // else next test will carry the responsibility
                        saveGlobal();
 
@@ -131,12 +146,12 @@ Test.prototype = {
        teardown: function() {
                config.current = this;
                if ( config.notrycatch ) {
-                       this.testEnvironment.teardown.call(this.testEnvironment);
+                       this.testEnvironment.teardown.call( this.testEnvironment );
                        return;
                } else {
                        try {
-                               this.testEnvironment.teardown.call(this.testEnvironment);
-                       } catch(e) {
+                               this.testEnvironment.teardown.call( this.testEnvironment );
+                       } catch( e ) {
                                QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
                        }
                }
@@ -144,28 +159,32 @@ Test.prototype = {
        },
        finish: function() {
                config.current = this;
-               if ( this.expected != null && this.expected != this.assertions.length ) {
-                       QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+               if ( config.requireExpects && this.expected == null ) {
+                       QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
+               } else if ( this.expected != null && this.expected != this.assertions.length ) {
+                       QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
                } else if ( this.expected == null && !this.assertions.length ) {
-                       QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions." );
+                       QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
                }
 
-               var good = 0, bad = 0,
-                       li, i,
-                       tests = id("qunit-tests");
+               var assertion, a, b, i, li, ol,
+                       test = this,
+                       good = 0,
+                       bad = 0,
+                       tests = id( "qunit-tests" );
 
                config.stats.all += this.assertions.length;
                config.moduleStats.all += this.assertions.length;
 
                if ( tests ) {
-                       var ol = document.createElement("ol");
+                       ol = document.createElement( "ol" );
 
                        for ( i = 0; i < this.assertions.length; i++ ) {
-                               var assertion = this.assertions[i];
+                               assertion = this.assertions[i];
 
-                               li = document.createElement("li");
+                               li = document.createElement( "li" );
                                li.className = assertion.result ? "pass" : "fail";
-                               li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+                               li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
                                ol.appendChild( li );
 
                                if ( assertion.result ) {
@@ -179,45 +198,44 @@ Test.prototype = {
 
                        // store result when possible
                        if ( QUnit.config.reorder && defined.sessionStorage ) {
-                               if (bad) {
-                                       sessionStorage.setItem("qunit-test-" + this.module + "-" + this.testName, bad);
+                               if ( bad ) {
+                                       sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
                                } else {
-                                       sessionStorage.removeItem("qunit-test-" + this.module + "-" + this.testName);
+                                       sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
                                }
                        }
 
-                       if (bad === 0) {
+                       if ( bad === 0 ) {
                                ol.style.display = "none";
                        }
 
-                       var b = document.createElement("strong");
+                       // `b` initialized at top of scope
+                       b = document.createElement( "strong" );
                        b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
 
-                       var a = document.createElement("a");
-                       a.innerHTML = "Rerun";
-                       a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
-
                        addEvent(b, "click", function() {
                                var next = b.nextSibling.nextSibling,
                                        display = next.style.display;
                                next.style.display = display === "none" ? "block" : "none";
                        });
 
-                       addEvent(b, "dblclick", function(e) {
+                       addEvent(b, "dblclick", function( e ) {
                                var target = e && e.target ? e.target : window.event.srcElement;
                                if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
                                        target = target.parentNode;
                                }
                                if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-                                       window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+                                       window.location = QUnit.url({ testNumber: test.testNumber });
                                }
                        });
 
-                       li = id(this.id);
+                       // `li` initialized at top of scope
+                       li = id( this.id );
                        li.className = bad ? "fail" : "pass";
                        li.removeChild( li.firstChild );
+                       a = li.firstChild;
                        li.appendChild( b );
-                       li.appendChild( a );
+                       li.appendChild ( a );
                        li.appendChild( ol );
 
                } else {
@@ -230,19 +248,23 @@ Test.prototype = {
                        }
                }
 
-               QUnit.reset();
-
-               runLoggingCallbacks( 'testDone', QUnit, {
+               runLoggingCallbacks( "testDone", QUnit, {
                        name: this.testName,
                        module: this.module,
                        failed: bad,
                        passed: this.assertions.length - bad,
                        total: this.assertions.length
-               } );
+               });
+
+               QUnit.reset();
+
+               config.current = undefined;
        },
 
        queue: function() {
-               var test = this;
+               var bad,
+                       test = this;
+
                synchronize(function() {
                        test.init();
                });
@@ -261,36 +283,42 @@ Test.prototype = {
                                test.finish();
                        });
                }
+
+               // `bad` initialized at top of scope
                // defer when previous test run passed, if storage is available
-               var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-test-" + this.module + "-" + this.testName);
-               if (bad) {
+               bad = QUnit.config.reorder && defined.sessionStorage &&
+                                               +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
+
+               if ( bad ) {
                        run();
                } else {
-                       synchronize(run, true);
+                       synchronize( run, true );
                }
        }
-
 };
 
-var QUnit = {
+// Root QUnit object.
+// `QUnit` initialized at top of scope
+QUnit = {
 
        // call on start of module test to prepend name to all tests
-       module: function(name, testEnvironment) {
+       module: function( name, testEnvironment ) {
                config.currentModule = name;
                config.currentModuleTestEnviroment = testEnvironment;
        },
 
-       asyncTest: function(testName, expected, callback) {
+       asyncTest: function( testName, expected, callback ) {
                if ( arguments.length === 2 ) {
                        callback = expected;
                        expected = null;
                }
 
-               QUnit.test(testName, expected, callback, true);
+               QUnit.test( testName, expected, callback, true );
        },
 
-       test: function(testName, expected, callback, async) {
-               var name = '<span class="test-name">' + escapeInnerText(testName) + '</span>';
+       test: function( testName, expected, callback, async ) {
+               var test,
+                       name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
 
                if ( arguments.length === 2 ) {
                        callback = expected;
@@ -298,173 +326,209 @@ var QUnit = {
                }
 
                if ( config.currentModule ) {
-                       name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
-               }
+                       name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
+               }
+
+               test = new Test({
+                       name: name,
+                       testName: testName,
+                       expected: expected,
+                       async: async,
+                       callback: callback,
+                       module: config.currentModule,
+                       moduleTestEnvironment: config.currentModuleTestEnviroment,
+                       stack: sourceFromStacktrace( 2 )
+               });
 
-               if ( !validTest(config.currentModule + ": " + testName) ) {
+               if ( !validTest( test ) ) {
                        return;
                }
 
-               var test = new Test(name, testName, expected, async, callback);
-               test.module = config.currentModule;
-               test.moduleTestEnvironment = config.currentModuleTestEnviroment;
                test.queue();
        },
 
        // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-       expect: function(asserts) {
+       expect: function( asserts ) {
                config.current.expected = asserts;
        },
 
-       // Asserts true.
-       // @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-       ok: function(result, msg) {
-               if (!config.current) {
-                       throw new Error("ok() assertion outside test context, was " + sourceFromStacktrace(2));
+       start: function( count ) {
+               config.semaphore -= count || 1;
+               // don't start until equal number of stop-calls
+               if ( config.semaphore > 0 ) {
+                       return;
+               }
+               // ignore if start is called more often then stop
+               if ( config.semaphore < 0 ) {
+                       config.semaphore = 0;
+               }
+               // A slight delay, to avoid any current callbacks
+               if ( defined.setTimeout ) {
+                       window.setTimeout(function() {
+                               if ( config.semaphore > 0 ) {
+                                       return;
+                               }
+                               if ( config.timeout ) {
+                                       clearTimeout( config.timeout );
+                               }
+
+                               config.blocking = false;
+                               process( true );
+                       }, 13);
+               } else {
+                       config.blocking = false;
+                       process( true );
+               }
+       },
+
+       stop: function( count ) {
+               config.semaphore += count || 1;
+               config.blocking = true;
+
+               if ( config.testTimeout && defined.setTimeout ) {
+                       clearTimeout( config.timeout );
+                       config.timeout = window.setTimeout(function() {
+                               QUnit.ok( false, "Test timed out" );
+                               config.semaphore = 1;
+                               QUnit.start();
+                       }, config.testTimeout );
+               }
+       }
+};
+
+// Asssert helpers
+// All of these must call either QUnit.push() or manually do:
+// - runLoggingCallbacks( "log", .. );
+// - config.current.assertions.push({ .. });
+QUnit.assert = {
+       /**
+        * Asserts rough true-ish result.
+        * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+        */
+       ok: function( result, msg ) {
+               if ( !config.current ) {
+                       throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
                }
                result = !!result;
-               var details = {
-                       result: result,
-                       message: msg
-               };
-               msg = escapeInnerText(msg || (result ? "okay" : "failed"));
+
+               var source,
+                       details = {
+                               result: result,
+                               message: msg
+                       };
+
+               msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
+               msg = "<span class='test-message'>" + msg + "</span>";
+
                if ( !result ) {
-                       var source = sourceFromStacktrace(2);
-                       if (source) {
+                       source = sourceFromStacktrace( 2 );
+                       if ( source ) {
                                details.source = source;
-                               msg += '<table><tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';
+                               msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
                        }
                }
-               runLoggingCallbacks( 'log', QUnit, details );
+               runLoggingCallbacks( "log", QUnit, details );
                config.current.assertions.push({
                        result: result,
                        message: msg
                });
        },
 
-       // Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values.
-       // @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
-       equal: function(actual, expected, message) {
-               QUnit.push(expected == actual, actual, expected, message);
+       /**
+        * Assert that the first two arguments are equal, with an optional message.
+        * Prints out both actual and expected values.
+        * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
+        */
+       equal: function( actual, expected, message ) {
+               QUnit.push( expected == actual, actual, expected, message );
        },
 
-       notEqual: function(actual, expected, message) {
-               QUnit.push(expected != actual, actual, expected, message);
+       notEqual: function( actual, expected, message ) {
+               QUnit.push( expected != actual, actual, expected, message );
        },
 
-       deepEqual: function(actual, expected, message) {
-               QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+       deepEqual: function( actual, expected, message ) {
+               QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
        },
 
-       notDeepEqual: function(actual, expected, message) {
-               QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+       notDeepEqual: function( actual, expected, message ) {
+               QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
        },
 
-       strictEqual: function(actual, expected, message) {
-               QUnit.push(expected === actual, actual, expected, message);
+       strictEqual: function( actual, expected, message ) {
+               QUnit.push( expected === actual, actual, expected, message );
        },
 
-       notStrictEqual: function(actual, expected, message) {
-               QUnit.push(expected !== actual, actual, expected, message);
+       notStrictEqual: function( actual, expected, message ) {
+               QUnit.push( expected !== actual, actual, expected, message );
        },
 
-       raises: function(block, expected, message) {
-               var actual, ok = false;
+       raises: function( block, expected, message ) {
+               var actual,
+                       ok = false;
 
-               if (typeof expected === 'string') {
+               if ( typeof expected === "string" ) {
                        message = expected;
                        expected = null;
                }
 
+               config.current.ignoreGlobalErrors = true;
                try {
-                       block.call(config.current.testEnvironment);
+                       block.call( config.current.testEnvironment );
                } catch (e) {
                        actual = e;
                }
+               config.current.ignoreGlobalErrors = false;
 
-               if (actual) {
+               if ( actual ) {
                        // we don't want to validate thrown error
-                       if (!expected) {
+                       if ( !expected ) {
                                ok = true;
                        // expected is a regexp
-                       } else if (QUnit.objectType(expected) === "regexp") {
-                               ok = expected.test(actual);
+                       } else if ( QUnit.objectType( expected ) === "regexp" ) {
+                               ok = expected.test( actual );
                        // expected is a constructor
-                       } else if (actual instanceof expected) {
+                       } else if ( actual instanceof expected ) {
                                ok = true;
                        // expected is a validation function which returns true is validation passed
-                       } else if (expected.call({}, actual) === true) {
+                       } else if ( expected.call( {}, actual ) === true ) {
                                ok = true;
                        }
                }
 
-               QUnit.ok(ok, message);
-       },
-
-       start: function(count) {
-               config.semaphore -= count || 1;
-               if (config.semaphore > 0) {
-                       // don't start until equal number of stop-calls
-                       return;
-               }
-               if (config.semaphore < 0) {
-                       // ignore if start is called more often then stop
-                       config.semaphore = 0;
-               }
-               // A slight delay, to avoid any current callbacks
-               if ( defined.setTimeout ) {
-                       window.setTimeout(function() {
-                               if (config.semaphore > 0) {
-                                       return;
-                               }
-                               if ( config.timeout ) {
-                                       clearTimeout(config.timeout);
-                               }
-
-                               config.blocking = false;
-                               process(true);
-                       }, 13);
-               } else {
-                       config.blocking = false;
-                       process(true);
-               }
-       },
+               QUnit.push( ok, actual, null, message );
+       }
+};
 
-       stop: function(count) {
-               config.semaphore += count || 1;
-               config.blocking = true;
+// @deprecated: Kept assertion helpers in root for backwards compatibility
+extend( QUnit, QUnit.assert );
 
-               if ( config.testTimeout && defined.setTimeout ) {
-                       clearTimeout(config.timeout);
-                       config.timeout = window.setTimeout(function() {
-                               QUnit.ok( false, "Test timed out" );
-                               config.semaphore = 1;
-                               QUnit.start();
-                       }, config.testTimeout);
-               }
-       }
+/**
+ * @deprecated: Kept for backwards compatibility
+ * next step: remove entirely
+ */
+QUnit.equals = function() {
+       QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
+};
+QUnit.same = function() {
+       QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
 };
 
-//We want access to the constructor's prototype
+// We want access to the constructor's prototype
 (function() {
-       function F(){}
+       function F() {}
        F.prototype = QUnit;
        QUnit = new F();
-       //Make F QUnit's constructor so that we can add to the prototype later
+       // Make F QUnit's constructor so that we can add to the prototype later
        QUnit.constructor = F;
 }());
 
-// deprecated; still export them to window to provide clear error messages
-// next step: remove entirely
-QUnit.equals = function() {
-       QUnit.push(false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead");
-};
-QUnit.same = function() {
-       QUnit.push(false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead");
-};
-
-// Maintain internal state
-var config = {
+/**
+ * Config object: Maintain internal state
+ * Later exposed as QUnit.config
+ * `config` initialized at top of scope
+ */
+config = {
        // The queue of tests to run
        queue: [],
 
@@ -482,9 +546,12 @@ var config = {
        // by default, modify document.title when suite is done
        altertitle: true,
 
-       urlConfig: ['noglobals', 'notrycatch'],
+       // when enabled, all tests must call expect()
+       requireExpects: false,
 
-       //logging callback queues
+       urlConfig: [ "noglobals", "notrycatch" ],
+
+       // logging callback queues
        begin: [],
        done: [],
        log: [],
@@ -494,16 +561,17 @@ var config = {
        moduleDone: []
 };
 
-// Load paramaters
+// Initialize more QUnit.config and QUnit.urlParams
 (function() {
-       var location = window.location || { search: "", protocol: "file:" },
+       var i,
+               location = window.location || { search: "", protocol: "file:" },
                params = location.search.slice( 1 ).split( "&" ),
                length = params.length,
                urlParams = {},
                current;
 
        if ( params[ 0 ] ) {
-               for ( var i = 0; i < length; i++ ) {
+               for ( i = 0; i < length; i++ ) {
                        current = params[ i ].split( "=" );
                        current[ 0 ] = decodeURIComponent( current[ 0 ] );
                        // allow just a key to turn on a flag, e.g., test.html?noglobals
@@ -513,26 +581,36 @@ var config = {
        }
 
        QUnit.urlParams = urlParams;
+
+       // String search anywhere in moduleName+testName
        config.filter = urlParams.filter;
 
+       // Exact match of the module name
+       config.module = urlParams.module;
+
+       config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
+
        // Figure out if we're running the tests from a server or not
-       QUnit.isLocal = location.protocol === 'file:';
+       QUnit.isLocal = location.protocol === "file:";
 }());
 
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS - export everything at the end
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
-       extend(window, QUnit);
+// Export global variables, unless an 'exports' object exists,
+// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
+if ( typeof exports === "undefined" ) {
+       extend( window, QUnit );
+
+       // Expose QUnit object
        window.QUnit = QUnit;
 }
 
-// define these after exposing globals to keep them in these QUnit namespace only
-extend(QUnit, {
+// Extend QUnit object,
+// these after set here because they should not be exposed as global functions
+extend( QUnit, {
        config: config,
 
        // Initialize the configuration options
        init: function() {
-               extend(config, {
+               extend( config, {
                        stats: { all: 0, bad: 0 },
                        moduleStats: { all: 0, bad: 0 },
                        started: +new Date(),
@@ -545,19 +623,21 @@ extend(QUnit, {
                        semaphore: 0
                });
 
-               var qunit = id( "qunit" );
+               var tests, banner, result,
+                       qunit = id( "qunit" );
+
                if ( qunit ) {
                        qunit.innerHTML =
-                               '<h1 id="qunit-header">' + escapeInnerText( document.title ) + '</h1>' +
-                               '<h2 id="qunit-banner"></h2>' +
-                               '<div id="qunit-testrunner-toolbar"></div>' +
-                               '<h2 id="qunit-userAgent"></h2>' +
-                               '<ol id="qunit-tests"></ol>';
+                               "<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
+                               "<h2 id='qunit-banner'></h2>" +
+                               "<div id='qunit-testrunner-toolbar'></div>" +
+                               "<h2 id='qunit-userAgent'></h2>" +
+                               "<ol id='qunit-tests'></ol>";
                }
 
-               var tests = id( "qunit-tests" ),
-                       banner = id( "qunit-banner" ),
-                       result = id( "qunit-testresult" );
+               tests = id( "qunit-tests" );
+               banner = id( "qunit-banner" );
+               result = id( "qunit-testresult" );
 
                if ( tests ) {
                        tests.innerHTML = "";
@@ -576,19 +656,21 @@ extend(QUnit, {
                        result.id = "qunit-testresult";
                        result.className = "result";
                        tests.parentNode.insertBefore( result, tests );
-                       result.innerHTML = 'Running...<br/>&nbsp;';
+                       result.innerHTML = "Running...<br/>&nbsp;";
                }
        },
 
        // Resets the test setup. Useful for tests that modify the DOM.
        // If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
        reset: function() {
+               var fixture;
+
                if ( window.jQuery ) {
                        jQuery( "#qunit-fixture" ).html( config.fixture );
                } else {
-                       var main = id( 'qunit-fixture' );
-                       if ( main ) {
-                               main.innerHTML = config.fixture;
+                       fixture = id( "qunit-fixture" );
+                       if ( fixture ) {
+                               fixture.innerHTML = config.fixture;
                        }
                }
        },
@@ -597,13 +679,13 @@ extend(QUnit, {
        // @example triggerEvent( document.body, "click" );
        triggerEvent: function( elem, type, event ) {
                if ( document.createEvent ) {
-                       event = document.createEvent("MouseEvents");
+                       event = document.createEvent( "MouseEvents" );
                        event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
                                0, 0, 0, 0, 0, false, false, false, false, 0, null);
-                       elem.dispatchEvent( event );
 
+                       elem.dispatchEvent( event );
                } else if ( elem.fireEvent ) {
-                       elem.fireEvent("on"+type);
+                       elem.fireEvent( "on" + type );
                }
        },
 
@@ -613,68 +695,74 @@ extend(QUnit, {
        },
 
        objectType: function( obj ) {
-               if (typeof obj === "undefined") {
+               if ( typeof obj === "undefined" ) {
                                return "undefined";
-
                // consider: typeof null === object
                }
-               if (obj === null) {
+               if ( obj === null ) {
                                return "null";
                }
 
-               var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || '';
+               var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
 
-               switch (type) {
-                       case 'Number':
-                               if (isNaN(obj)) {
+               switch ( type ) {
+                       case "Number":
+                               if ( isNaN(obj) ) {
                                        return "nan";
                                }
                                return "number";
-                       case 'String':
-                       case 'Boolean':
-                       case 'Array':
-                       case 'Date':
-                       case 'RegExp':
-                       case 'Function':
-                                       return type.toLowerCase();
+                       case "String":
+                       case "Boolean":
+                       case "Array":
+                       case "Date":
+                       case "RegExp":
+                       case "Function":
+                               return type.toLowerCase();
                }
-               if (typeof obj === "object") {
-                               return "object";
+               if ( typeof obj === "object" ) {
+                       return "object";
                }
                return undefined;
        },
 
-       push: function(result, actual, expected, message) {
-               if (!config.current) {
-                       throw new Error("assertion outside test context, was " + sourceFromStacktrace());
+       push: function( result, actual, expected, message ) {
+               if ( !config.current ) {
+                       throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
                }
-               var details = {
-                       result: result,
-                       message: message,
-                       actual: actual,
-                       expected: expected
-               };
 
-               message = escapeInnerText(message) || (result ? "okay" : "failed");
-               message = '<span class="test-message">' + message + "</span>";
-               var output = message;
-               if (!result) {
-                       expected = escapeInnerText(QUnit.jsDump.parse(expected));
-                       actual = escapeInnerText(QUnit.jsDump.parse(actual));
-                       output += '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
-                       if (actual != expected) {
-                               output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
-                               output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
+               var output, source,
+                       details = {
+                               result: result,
+                               message: message,
+                               actual: actual,
+                               expected: expected
+                       };
+
+               message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               if ( !result ) {
+                       expected = escapeInnerText( QUnit.jsDump.parse(expected) );
+                       actual = escapeInnerText( QUnit.jsDump.parse(actual) );
+                       output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
+
+                       if ( actual != expected ) {
+                               output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
+                               output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
                        }
-                       var source = sourceFromStacktrace();
-                       if (source) {
+
+                       source = sourceFromStacktrace();
+
+                       if ( source ) {
                                details.source = source;
-                               output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';
+                               output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
                        }
+
                        output += "</table>";
                }
 
-               runLoggingCallbacks( 'log', QUnit, details );
+               runLoggingCallbacks( "log", QUnit, details );
 
                config.current.assertions.push({
                        result: !!result,
@@ -682,17 +770,28 @@ extend(QUnit, {
                });
        },
 
-       pushFailure: function(message, source) {
-               var details = {
-                       result: false,
-                       message: message
-               };
-               var output = escapeInnerText(message);
-               if (source) {
+       pushFailure: function( message, source ) {
+               if ( !config.current ) {
+                       throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
+               }
+
+               var output,
+                       details = {
+                               result: false,
+                               message: message
+                       };
+
+               message = escapeInnerText(message ) || "error";
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               if ( source ) {
                        details.source = source;
-                       output += '<table><tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';
+                       output += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
                }
-               runLoggingCallbacks( 'log', QUnit, details );
+
+               runLoggingCallbacks( "log", QUnit, details );
+
                config.current.assertions.push({
                        result: false,
                        message: output
@@ -701,8 +800,9 @@ extend(QUnit, {
 
        url: function( params ) {
                params = extend( extend( {}, QUnit.urlParams ), params );
-               var querystring = "?",
-                       key;
+               var key,
+                       querystring = "?";
+
                for ( key in params ) {
                        if ( !hasOwn.call( params, key ) ) {
                                continue;
@@ -716,27 +816,39 @@ extend(QUnit, {
        extend: extend,
        id: id,
        addEvent: addEvent
+       // load, equiv, jsDump, diff: Attached later
 });
 
-//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later
-//Doing this allows us to tell if the following methods have been overwritten on the actual
-//QUnit object, which is a deprecated way of using the callbacks.
-extend(QUnit.constructor.prototype, {
+/**
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
+ * QUnit object.
+ */
+extend( QUnit.constructor.prototype, {
+
        // Logging callbacks; all receive a single argument with the listed properties
        // run test/logs.html for any related changes
-       begin: registerLoggingCallback('begin'),
+       begin: registerLoggingCallback( "begin" ),
+
        // done: { failed, passed, total, runtime }
-       done: registerLoggingCallback('done'),
+       done: registerLoggingCallback( "done" ),
+
        // log: { result, actual, expected, message }
-       log: registerLoggingCallback('log'),
+       log: registerLoggingCallback( "log" ),
+
        // testStart: { name }
-       testStart: registerLoggingCallback('testStart'),
+       testStart: registerLoggingCallback( "testStart" ),
+
        // testDone: { name, failed, passed, total }
-       testDone: registerLoggingCallback('testDone'),
+       testDone: registerLoggingCallback( "testDone" ),
+
        // moduleStart: { name }
-       moduleStart: registerLoggingCallback('moduleStart'),
+       moduleStart: registerLoggingCallback( "moduleStart" ),
+
        // moduleDone: { name, failed, passed, total }
-       moduleDone: registerLoggingCallback('moduleDone')
+       moduleDone: registerLoggingCallback( "moduleDone" )
 });
 
 if ( typeof document === "undefined" || document.readyState === "complete" ) {
@@ -744,29 +856,36 @@ if ( typeof document === "undefined" || document.readyState === "complete" ) {
 }
 
 QUnit.load = function() {
-       runLoggingCallbacks( 'begin', QUnit, {} );
+       runLoggingCallbacks( "begin", QUnit, {} );
 
        // Initialize the config, saving the execution queue
-       var oldconfig = extend({}, config);
+       var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
+               urlConfigHtml = "",
+               oldconfig = extend( {}, config );
+
        QUnit.init();
        extend(config, oldconfig);
 
        config.blocking = false;
 
-       var urlConfigHtml = '', len = config.urlConfig.length;
-       for ( var i = 0, val; i < len; i++ ) {
+       len = config.urlConfig.length;
+
+       for ( i = 0; i < len; i++ ) {
                val = config.urlConfig[i];
                config[val] = QUnit.urlParams[val];
-               urlConfigHtml += '<label><input name="' + val + '" type="checkbox"' + ( config[val] ? ' checked="checked"' : '' ) + '>' + val + '</label>';
+               urlConfigHtml += "<label><input name='" + val + "' type='checkbox'" + ( config[val] ? " checked='checked'" : "" ) + ">" + val + "</label>";
        }
 
-       var userAgent = id("qunit-userAgent");
+       // `userAgent` initialized at top of scope
+       userAgent = id( "qunit-userAgent" );
        if ( userAgent ) {
                userAgent.innerHTML = navigator.userAgent;
        }
-       var banner = id("qunit-header");
+
+       // `banner` initialized at top of scope
+       banner = id( "qunit-header" );
        if ( banner ) {
-               banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;
+               banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined }) + "'>" + banner.innerHTML + "</a> " + urlConfigHtml;
                addEvent( banner, "change", function( event ) {
                        var params = {};
                        params[ event.target.name ] = event.target.checked ? true : undefined;
@@ -774,61 +893,91 @@ QUnit.load = function() {
                });
        }
 
-       var toolbar = id("qunit-testrunner-toolbar");
+       // `toolbar` initialized at top of scope
+       toolbar = id( "qunit-testrunner-toolbar" );
        if ( toolbar ) {
-               var filter = document.createElement("input");
+               // `filter` initialized at top of scope
+               filter = document.createElement( "input" );
                filter.type = "checkbox";
                filter.id = "qunit-filter-pass";
+
                addEvent( filter, "click", function() {
-                       var ol = document.getElementById("qunit-tests");
+                       var tmp,
+                               ol = document.getElementById( "qunit-tests" );
+
                        if ( filter.checked ) {
                                ol.className = ol.className + " hidepass";
                        } else {
-                               var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-                               ol.className = tmp.replace(/ hidepass /, " ");
+                               tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+                               ol.className = tmp.replace( / hidepass /, " " );
                        }
                        if ( defined.sessionStorage ) {
                                if (filter.checked) {
-                                       sessionStorage.setItem("qunit-filter-passed-tests", "true");
+                                       sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
                                } else {
-                                       sessionStorage.removeItem("qunit-filter-passed-tests");
+                                       sessionStorage.removeItem( "qunit-filter-passed-tests" );
                                }
                        }
                });
-               if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+
+               if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
                        filter.checked = true;
-                       var ol = document.getElementById("qunit-tests");
+                       // `ol` initialized at top of scope
+                       ol = document.getElementById( "qunit-tests" );
                        ol.className = ol.className + " hidepass";
                }
                toolbar.appendChild( filter );
 
-               var label = document.createElement("label");
-               label.setAttribute("for", "qunit-filter-pass");
+               // `label` initialized at top of scope
+               label = document.createElement( "label" );
+               label.setAttribute( "for", "qunit-filter-pass" );
                label.innerHTML = "Hide passed tests";
                toolbar.appendChild( label );
        }
 
-       var main = id('qunit-fixture');
+       // `main` initialized at top of scope
+       main = id( "qunit-fixture" );
        if ( main ) {
                config.fixture = main.innerHTML;
        }
 
-       if (config.autostart) {
+       if ( config.autostart ) {
                QUnit.start();
        }
 };
 
-addEvent(window, "load", QUnit.load);
+addEvent( window, "load", QUnit.load );
 
-// addEvent(window, "error") gives us a useless event object
-window.onerror = function( message, file, line ) {
-       if ( QUnit.config.current ) {
-               QUnit.pushFailure( message, file + ":" + line );
-       } else {
-               QUnit.test( "global failure", function() {
-                       QUnit.pushFailure( message, file + ":" + line );
-               });
+// `onErrorFnPrev` initialized at top of scope
+// Preserve other handlers
+onErrorFnPrev = window.onerror;
+
+// Cover uncaught exceptions
+// Returning true will surpress the default browser handler,
+// returning false will let it run.
+window.onerror = function ( error, filePath, linerNr ) {
+       var ret = false;
+       if ( onErrorFnPrev ) {
+               ret = onErrorFnPrev( error, filePath, linerNr );
        }
+
+       // Treat return value as window.onerror itself does,
+       // Only do our handling if not surpressed.
+       if ( ret !== true ) {
+               if ( QUnit.config.current ) {
+                       if ( QUnit.config.current.ignoreGlobalErrors ) {
+                               return true;
+                       }
+                       QUnit.pushFailure( error, filePath + ":" + linerNr );
+               } else {
+                       QUnit.test( "global failure", function() {
+                               QUnit.pushFailure( error, filePath + ":" + linerNr );
+                       });
+               }
+               return false;
+       }
+
+       return ret;
 };
 
 function done() {
@@ -836,33 +985,34 @@ function done() {
 
        // Log the last module results
        if ( config.currentModule ) {
-               runLoggingCallbacks( 'moduleDone', QUnit, {
+               runLoggingCallbacks( "moduleDone", QUnit, {
                        name: config.currentModule,
                        failed: config.moduleStats.bad,
                        passed: config.moduleStats.all - config.moduleStats.bad,
                        total: config.moduleStats.all
-               } );
+               });
        }
 
-       var banner = id("qunit-banner"),
-               tests = id("qunit-tests"),
+       var i, key,
+               banner = id( "qunit-banner" ),
+               tests = id( "qunit-tests" ),
                runtime = +new Date() - config.started,
                passed = config.stats.all - config.stats.bad,
                html = [
-                       'Tests completed in ',
+                       "Tests completed in ",
                        runtime,
-                       ' milliseconds.<br/>',
-                       '<span class="passed">',
+                       " milliseconds.<br/>",
+                       "<span class='passed'>",
                        passed,
-                       '</span> tests of <span class="total">',
+                       "</span> tests of <span class='total'>",
                        config.stats.all,
-                       '</span> passed, <span class="failed">',
+                       "</span> passed, <span class='failed'>",
                        config.stats.bad,
-                       '</span> failed.'
-               ].join('');
+                       "</span> failed."
+               ].join( "" );
 
        if ( banner ) {
-               banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+               banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
        }
 
        if ( tests ) {
@@ -873,70 +1023,94 @@ function done() {
                // show ✖ for good, ✔ for bad suite result in title
                // use escape sequences in case file gets loaded with non-utf-8-charset
                document.title = [
-                       (config.stats.bad ? "\u2716" : "\u2714"),
-                       document.title.replace(/^[\u2714\u2716] /i, "")
-               ].join(" ");
+                       ( config.stats.bad ? "\u2716" : "\u2714" ),
+                       document.title.replace( /^[\u2714\u2716] /i, "" )
+               ].join( " " );
        }
 
        // clear own sessionStorage items if all tests passed
        if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-               var key;
-               for ( var i = 0; i < sessionStorage.length; i++ ) {
+               // `key` & `i` initialized at top of scope
+               for ( i = 0; i < sessionStorage.length; i++ ) {
                        key = sessionStorage.key( i++ );
-                       if ( key.indexOf("qunit-test-") === 0 ) {
+                       if ( key.indexOf( "qunit-test-" ) === 0 ) {
                                sessionStorage.removeItem( key );
                        }
                }
        }
 
-       runLoggingCallbacks( 'done', QUnit, {
+       runLoggingCallbacks( "done", QUnit, {
                failed: config.stats.bad,
                passed: passed,
                total: config.stats.all,
                runtime: runtime
-       } );
+       });
 }
 
-function validTest( name ) {
-       var filter = config.filter,
-               run = false;
+/** @return Boolean: true if this test should be ran */
+function validTest( test ) {
+       var include,
+               filter = config.filter && config.filter.toLowerCase(),
+               module = config.module,
+               fullName = (test.module + ": " + test.testName).toLowerCase();
+
+       if ( config.testNumber ) {
+               return test.testNumber === config.testNumber;
+       }
+
+       if ( module && test.module !== module ) {
+               return false;
+       }
 
        if ( !filter ) {
                return true;
        }
 
-       var not = filter.charAt( 0 ) === "!";
-       if ( not ) {
+       include = filter.charAt( 0 ) !== "!";
+       if ( !include ) {
                filter = filter.slice( 1 );
        }
 
-       if ( name.indexOf( filter ) !== -1 ) {
-               return !not;
-       }
-
-       if ( not ) {
-               run = true;
+       // If the filter matches, we need to honour include
+       if ( fullName.indexOf( filter ) !== -1 ) {
+               return include;
        }
 
-       return run;
+       // Otherwise, do the opposite
+       return !include;
 }
 
 // so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
 // Later Safari and IE10 are supposed to support error.stack as well
 // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
 function extractStacktrace( e, offset ) {
-       offset = offset || 3;
-       if (e.stacktrace) {
+       offset = offset === undefined ? 3 : offset;
+
+       var stack, include, i, regex;
+
+       if ( e.stacktrace ) {
                // Opera
-               return e.stacktrace.split("\n")[offset + 3];
-       } else if (e.stack) {
+               return e.stacktrace.split( "\n" )[ offset + 3 ];
+       } else if ( e.stack ) {
                // Firefox, Chrome
-               var stack = e.stack.split("\n");
-               if (/^error$/i.test(stack[0])) {
+               stack = e.stack.split( "\n" );
+               if (/^error$/i.test( stack[0] ) ) {
                        stack.shift();
                }
-               return stack[offset];
-       } else if (e.sourceURL) {
+               if ( fileName ) {
+                       include = [];
+                       for ( i = offset; i < stack.length; i++ ) {
+                               if ( stack[ i ].indexOf( fileName ) != -1 ) {
+                                       break;
+                               }
+                               include.push( stack[ i ] );
+                       }
+                       if ( include.length ) {
+                               return include.join( "\n" );
+                       }
+               }
+               return stack[ offset ];
+       } else if ( e.sourceURL ) {
                // Safari, PhantomJS
                // hopefully one day Safari provides actual stacktraces
                // exclude useless self-reference for generated Error objects
@@ -947,7 +1121,7 @@ function extractStacktrace( e, offset ) {
                return e.sourceURL + ":" + e.line;
        }
 }
-function sourceFromStacktrace(offset) {
+function sourceFromStacktrace( offset ) {
        try {
                throw new Error();
        } catch ( e ) {
@@ -955,13 +1129,13 @@ function sourceFromStacktrace(offset) {
        }
 }
 
-function escapeInnerText(s) {
-       if (!s) {
+function escapeInnerText( s ) {
+       if ( !s ) {
                return "";
        }
        s = s + "";
-       return s.replace(/[\&<>]/g, function(s) {
-               switch(s) {
+       return s.replace( /[\&<>]/g, function( s ) {
+               switch( s ) {
                        case "&": return "&amp;";
                        case "<": return "&lt;";
                        case ">": return "&gt;";
@@ -974,7 +1148,7 @@ function synchronize( callback, last ) {
        config.queue.push( callback );
 
        if ( config.autorun && !config.blocking ) {
-               process(last);
+               process( last );
        }
 }
 
@@ -1004,7 +1178,8 @@ function saveGlobal() {
 
        if ( config.noglobals ) {
                for ( var key in window ) {
-                       if ( !hasOwn.call( window, key ) ) {
+                       // in Opera sometimes DOM element ids show up here, ignore them
+                       if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
                                continue;
                        }
                        config.pollution.push( key );
@@ -1013,15 +1188,18 @@ function saveGlobal() {
 }
 
 function checkPollution( name ) {
-       var old = config.pollution;
+       var newGlobals,
+               deletedGlobals,
+               old = config.pollution;
+
        saveGlobal();
 
-       var newGlobals = diff( config.pollution, old );
+       newGlobals = diff( config.pollution, old );
        if ( newGlobals.length > 0 ) {
                QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
        }
 
-       var deletedGlobals = diff( old, config.pollution );
+       deletedGlobals = diff( old, config.pollution );
        if ( deletedGlobals.length > 0 ) {
                QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
        }
@@ -1029,11 +1207,13 @@ function checkPollution( name ) {
 
 // returns a new Array with the elements that are in a but not in b
 function diff( a, b ) {
-       var result = a.slice();
-       for ( var i = 0; i < result.length; i++ ) {
-               for ( var j = 0; j < b.length; j++ ) {
+       var i, j,
+               result = a.slice();
+
+       for ( i = 0; i < result.length; i++ ) {
+               for ( j = 0; j < b.length; j++ ) {
                        if ( result[i] === b[j] ) {
-                               result.splice(i, 1);
+                               result.splice( i, 1 );
                                i--;
                                break;
                        }
@@ -1042,21 +1222,21 @@ function diff( a, b ) {
        return result;
 }
 
-function extend(a, b) {
+function extend( a, b ) {
        for ( var prop in b ) {
-               if ( b[prop] === undefined ) {
-                       delete a[prop];
+               if ( b[ prop ] === undefined ) {
+                       delete a[ prop ];
 
                // Avoid "Member not found" error in IE8 caused by setting window.constructor
                } else if ( prop !== "constructor" || a !== window ) {
-                       a[prop] = b[prop];
+                       a[ prop ] = b[ prop ];
                }
        }
 
        return a;
 }
 
-function addEvent(elem, type, fn) {
+function addEvent( elem, type, fn ) {
        if ( elem.addEventListener ) {
                elem.addEventListener( type, fn, false );
        } else if ( elem.attachEvent ) {
@@ -1066,27 +1246,27 @@ function addEvent(elem, type, fn) {
        }
 }
 
-function id(name) {
-       return !!(typeof document !== "undefined" && document && document.getElementById) &&
+function id( name ) {
+       return !!( typeof document !== "undefined" && document && document.getElementById ) &&
                document.getElementById( name );
 }
 
-function registerLoggingCallback(key){
-       return function(callback){
+function registerLoggingCallback( key ) {
+       return function( callback ) {
                config[key].push( callback );
        };
 }
 
 // Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks(key, scope, args) {
+function runLoggingCallbacks( key, scope, args ) {
        //debugger;
-       var callbacks;
-       if ( QUnit.hasOwnProperty(key) ) {
-               QUnit[key].call(scope, args);
+       var i, callbacks;
+       if ( QUnit.hasOwnProperty( key ) ) {
+               QUnit[ key ].call(scope, args );
        } else {
-               callbacks = config[key];
-               for( var i = 0; i < callbacks.length; i++ ) {
-                       callbacks[i].call( scope, args );
+               callbacks = config[ key ];
+               for ( i = 0; i < callbacks.length; i++ ) {
+                       callbacks[ i ].call( scope, args );
                }
        }
 }
@@ -1095,183 +1275,184 @@ function runLoggingCallbacks(key, scope, args) {
 // Author: Philippe Rathé <prathe@gmail.com>
 QUnit.equiv = (function() {
 
-       var innerEquiv; // the real equiv function
-       var callers = []; // stack to decide between skip/abort functions
-       var parents = []; // stack to avoiding loops from circular referencing
-
        // Call the o related callback with the given arguments.
-       function bindCallbacks(o, callbacks, args) {
-               var prop = QUnit.objectType(o);
-               if (prop) {
-                       if (QUnit.objectType(callbacks[prop]) === "function") {
-                               return callbacks[prop].apply(callbacks, args);
+       function bindCallbacks( o, callbacks, args ) {
+               var prop = QUnit.objectType( o );
+               if ( prop ) {
+                       if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
+                               return callbacks[ prop ].apply( callbacks, args );
                        } else {
-                               return callbacks[prop]; // or undefined
+                               return callbacks[ prop ]; // or undefined
                        }
                }
        }
 
-       var getProto = Object.getPrototypeOf || function (obj) {
-               return obj.__proto__;
-       };
-
-       var callbacks = (function () {
-
-               // for string, boolean, number and null
-               function useStrictEquality(b, a) {
-                       if (b instanceof a.constructor || a instanceof b.constructor) {
-                               // to catch short annotaion VS 'new' annotation of a
-                               // declaration
-                               // e.g. var i = 1;
-                               // var j = new Number(1);
-                               return a == b;
-                       } else {
-                               return a === b;
-                       }
-               }
-
-               return {
-                       "string" : useStrictEquality,
-                       "boolean" : useStrictEquality,
-                       "number" : useStrictEquality,
-                       "null" : useStrictEquality,
-                       "undefined" : useStrictEquality,
-
-                       "nan" : function(b) {
-                               return isNaN(b);
-                       },
-
-                       "date" : function(b, a) {
-                               return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
-                       },
-
-                       "regexp" : function(b, a) {
-                               return QUnit.objectType(b) === "regexp" &&
-                                       // the regex itself
-                                       a.source === b.source &&
-                                       // and its modifers
-                                       a.global === b.global &&
-                                       // (gmi) ...
-                                       a.ignoreCase === b.ignoreCase &&
-                                       a.multiline === b.multiline;
-                       },
-
-                       // - skip when the property is a method of an instance (OOP)
-                       // - abort otherwise,
-                       // initial === would have catch identical references anyway
-                       "function" : function() {
-                               var caller = callers[callers.length - 1];
-                               return caller !== Object && typeof caller !== "undefined";
-                       },
-
-                       "array" : function(b, a) {
-                               var i, j, loop;
-                               var len;
+       // the real equiv function
+       var innerEquiv,
+               // stack to decide between skip/abort functions
+               callers = [],
+               // stack to avoiding loops from circular referencing
+               parents = [],
 
-                               // b could be an object literal here
-                               if (QUnit.objectType(b) !== "array") {
-                                       return false;
-                               }
-
-                               len = a.length;
-                               if (len !== b.length) { // safe and faster
-                                       return false;
+               getProto = Object.getPrototypeOf || function ( obj ) {
+                       return obj.__proto__;
+               },
+               callbacks = (function () {
+
+                       // for string, boolean, number and null
+                       function useStrictEquality( b, a ) {
+                               if ( b instanceof a.constructor || a instanceof b.constructor ) {
+                                       // to catch short annotaion VS 'new' annotation of a
+                                       // declaration
+                                       // e.g. var i = 1;
+                                       // var j = new Number(1);
+                                       return a == b;
+                               } else {
+                                       return a === b;
                                }
+                       }
 
-                               // track reference to avoid circular references
-                               parents.push(a);
-                               for (i = 0; i < len; i++) {
-                                       loop = false;
-                                       for (j = 0; j < parents.length; j++) {
-                                               if (parents[j] === a[i]) {
-                                                       loop = true;// dont rewalk array
-                                               }
-                                       }
-                                       if (!loop && !innerEquiv(a[i], b[i])) {
-                                               parents.pop();
+                       return {
+                               "string": useStrictEquality,
+                               "boolean": useStrictEquality,
+                               "number": useStrictEquality,
+                               "null": useStrictEquality,
+                               "undefined": useStrictEquality,
+
+                               "nan": function( b ) {
+                                       return isNaN( b );
+                               },
+
+                               "date": function( b, a ) {
+                                       return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
+                               },
+
+                               "regexp": function( b, a ) {
+                                       return QUnit.objectType( b ) === "regexp" &&
+                                               // the regex itself
+                                               a.source === b.source &&
+                                               // and its modifers
+                                               a.global === b.global &&
+                                               // (gmi) ...
+                                               a.ignoreCase === b.ignoreCase &&
+                                               a.multiline === b.multiline;
+                               },
+
+                               // - skip when the property is a method of an instance (OOP)
+                               // - abort otherwise,
+                               // initial === would have catch identical references anyway
+                               "function": function() {
+                                       var caller = callers[callers.length - 1];
+                                       return caller !== Object && typeof caller !== "undefined";
+                               },
+
+                               "array": function( b, a ) {
+                                       var i, j, len, loop;
+
+                                       // b could be an object literal here
+                                       if ( QUnit.objectType( b ) !== "array" ) {
                                                return false;
                                        }
-                               }
-                               parents.pop();
-                               return true;
-                       },
 
-                       "object" : function(b, a) {
-                               var i, j, loop;
-                               var eq = true; // unless we can proove it
-                               var aProperties = [], bProperties = []; // collection of
-                                                                                                               // strings
-
-                               // comparing constructors is more strict than using
-                               // instanceof
-                               if (a.constructor !== b.constructor) {
-                                       // Allow objects with no prototype to be equivalent to
-                                       // objects with Object as their constructor.
-                                       if (!((getProto(a) === null && getProto(b) === Object.prototype) ||
-                                               (getProto(b) === null && getProto(a) === Object.prototype)))
-                                       {
+                                       len = a.length;
+                                       if ( len !== b.length ) {
+                                               // safe and faster
                                                return false;
                                        }
-                               }
 
-                               // stack constructor before traversing properties
-                               callers.push(a.constructor);
-                               // track reference to avoid circular references
-                               parents.push(a);
-
-                               for (i in a) { // be strict: don't ensures hasOwnProperty
-                                                               // and go deep
-                                       loop = false;
-                                       for (j = 0; j < parents.length; j++) {
-                                               if (parents[j] === a[i]) {
-                                                       // don't go down the same path twice
-                                                       loop = true;
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+                                       for ( i = 0; i < len; i++ ) {
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               loop = true;// dont rewalk array
+                                                       }
+                                               }
+                                               if ( !loop && !innerEquiv(a[i], b[i]) ) {
+                                                       parents.pop();
+                                                       return false;
+                                               }
+                                       }
+                                       parents.pop();
+                                       return true;
+                               },
+
+                               "object": function( b, a ) {
+                                       var i, j, loop,
+                                               // Default to true
+                                               eq = true,
+                                               aProperties = [],
+                                               bProperties = [];
+
+                                       // comparing constructors is more strict than using
+                                       // instanceof
+                                       if ( a.constructor !== b.constructor ) {
+                                               // Allow objects with no prototype to be equivalent to
+                                               // objects with Object as their constructor.
+                                               if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
+                                                       ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
+                                                               return false;
                                                }
                                        }
-                                       aProperties.push(i); // collect a's properties
 
-                                       if (!loop && !innerEquiv(a[i], b[i])) {
-                                               eq = false;
-                                               break;
+                                       // stack constructor before traversing properties
+                                       callers.push( a.constructor );
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+
+                                       for ( i in a ) { // be strict: don't ensures hasOwnProperty
+                                                                       // and go deep
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               // don't go down the same path twice
+                                                               loop = true;
+                                                       }
+                                               }
+                                               aProperties.push(i); // collect a's properties
+
+                                               if (!loop && !innerEquiv( a[i], b[i] ) ) {
+                                                       eq = false;
+                                                       break;
+                                               }
                                        }
-                               }
 
-                               callers.pop(); // unstack, we are done
-                               parents.pop();
+                                       callers.pop(); // unstack, we are done
+                                       parents.pop();
 
-                               for (i in b) {
-                                       bProperties.push(i); // collect b's properties
-                               }
+                                       for ( i in b ) {
+                                               bProperties.push( i ); // collect b's properties
+                                       }
 
-                               // Ensures identical properties name
-                               return eq && innerEquiv(aProperties.sort(), bProperties.sort());
-                       }
-               };
-       }());
+                                       // Ensures identical properties name
+                                       return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
+                               }
+                       };
+               }());
 
        innerEquiv = function() { // can take multiple arguments
-               var args = Array.prototype.slice.apply(arguments);
-               if (args.length < 2) {
+               var args = [].slice.apply( arguments );
+               if ( args.length < 2 ) {
                        return true; // end transition
                }
 
-               return (function(a, b) {
-                       if (a === b) {
+               return (function( a, b ) {
+                       if ( a === b ) {
                                return true; // catch the most you can
-                       } else if (a === null || b === null || typeof a === "undefined" ||
+                       } else if ( a === null || b === null || typeof a === "undefined" ||
                                        typeof b === "undefined" ||
-                                       QUnit.objectType(a) !== QUnit.objectType(b)) {
+                                       QUnit.objectType(a) !== QUnit.objectType(b) ) {
                                return false; // don't lose time with error prone cases
                        } else {
                                return bindCallbacks(a, callbacks, [ b, a ]);
                        }
 
                        // apply transition with (1..n) arguments
-               }(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)));
+               }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
        };
 
        return innerEquiv;
-
 }());
 
 /**
@@ -1286,17 +1467,17 @@ QUnit.equiv = (function() {
  */
 QUnit.jsDump = (function() {
        function quote( str ) {
-               return '"' + str.toString().replace(/"/g, '\\"') + '"';
+               return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
        }
        function literal( o ) {
-               return o + '';
+               return o + "";
        }
        function join( pre, arr, post ) {
                var s = jsDump.separator(),
                        base = jsDump.indent(),
                        inner = jsDump.indent(1);
                if ( arr.join ) {
-                       arr = arr.join( ',' + s + inner );
+                       arr = arr.join( "," + s + inner );
                }
                if ( !arr ) {
                        return pre + post;
@@ -1310,182 +1491,191 @@ QUnit.jsDump = (function() {
                        ret[i] = this.parse( arr[i] , undefined , stack);
                }
                this.down();
-               return join( '[', ret, ']' );
+               return join( "[", ret, "]" );
        }
 
-       var reName = /^function (\w+)/;
+       var reName = /^function (\w+)/,
+               jsDump = {
+                       parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
+                               stack = stack || [ ];
+                               var inStack, res,
+                                       parser = this.parsers[ type || this.typeOf(obj) ];
 
-       var jsDump = {
-               parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-                       stack = stack || [ ];
-                       var parser = this.parsers[ type || this.typeOf(obj) ];
-                       type = typeof parser;
-                       var inStack = inArray(obj, stack);
-                       if (inStack != -1) {
-                               return 'recursion('+(inStack - stack.length)+')';
-                       }
-                       //else
-                       if (type == 'function')  {
-                                       stack.push(obj);
-                                       var res = parser.call( this, obj, stack );
+                               type = typeof parser;
+                               inStack = inArray( obj, stack );
+
+                               if ( inStack != -1 ) {
+                                       return "recursion(" + (inStack - stack.length) + ")";
+                               }
+                               //else
+                               if ( type == "function" )  {
+                                       stack.push( obj );
+                                       res = parser.call( this, obj, stack );
                                        stack.pop();
                                        return res;
-                       }
-                       // else
-                       return (type == 'string') ? parser : this.parsers.error;
-               },
-               typeOf: function( obj ) {
-                       var type;
-                       if ( obj === null ) {
-                               type = "null";
-                       } else if (typeof obj === "undefined") {
-                               type = "undefined";
-                       } else if (QUnit.is("RegExp", obj)) {
-                               type = "regexp";
-                       } else if (QUnit.is("Date", obj)) {
-                               type = "date";
-                       } else if (QUnit.is("Function", obj)) {
-                               type = "function";
-                       } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
-                               type = "window";
-                       } else if (obj.nodeType === 9) {
-                               type = "document";
-                       } else if (obj.nodeType) {
-                               type = "node";
-                       } else if (
-                               // native arrays
-                               toString.call( obj ) === "[object Array]" ||
-                               // NodeList objects
-                               ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-                       ) {
-                               type = "array";
-                       } else {
-                               type = typeof obj;
-                       }
-                       return type;
-               },
-               separator: function() {
-                       return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
-               },
-               indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-                       if ( !this.multiline ) {
-                               return '';
-                       }
-                       var chr = this.indentChar;
-                       if ( this.HTML ) {
-                               chr = chr.replace(/\t/g,'   ').replace(/ /g,'&nbsp;');
-                       }
-                       return new Array( this._depth_ + (extra||0) ).join(chr);
-               },
-               up: function( a ) {
-                       this._depth_ += a || 1;
-               },
-               down: function( a ) {
-                       this._depth_ -= a || 1;
-               },
-               setParser: function( name, parser ) {
-                       this.parsers[name] = parser;
-               },
-               // The next 3 are exposed so you can use them
-               quote: quote,
-               literal: literal,
-               join: join,
-               //
-               _depth_: 1,
-               // This is the list of parsers, to modify them, use jsDump.setParser
-               parsers: {
-                       window: '[Window]',
-                       document: '[Document]',
-                       error: '[ERROR]', //when no parser is found, shouldn't happen
-                       unknown: '[Unknown]',
-                       'null': 'null',
-                       'undefined': 'undefined',
-                       'function': function( fn ) {
-                               var ret = 'function',
-                                       name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
-                               if ( name ) {
-                                       ret += ' ' + name;
                                }
-                               ret += '(';
-
-                               ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
-                               return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+                               // else
+                               return ( type == "string" ) ? parser : this.parsers.error;
                        },
-                       array: array,
-                       nodelist: array,
-                       'arguments': array,
-                       object: function( map, stack ) {
-                               var ret = [ ], keys, key, val, i;
-                               QUnit.jsDump.up();
-                               if (Object.keys) {
-                                       keys = Object.keys( map );
+                       typeOf: function( obj ) {
+                               var type;
+                               if ( obj === null ) {
+                                       type = "null";
+                               } else if ( typeof obj === "undefined" ) {
+                                       type = "undefined";
+                               } else if ( QUnit.is( "regexp", obj) ) {
+                                       type = "regexp";
+                               } else if ( QUnit.is( "date", obj) ) {
+                                       type = "date";
+                               } else if ( QUnit.is( "function", obj) ) {
+                                       type = "function";
+                               } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
+                                       type = "window";
+                               } else if ( obj.nodeType === 9 ) {
+                                       type = "document";
+                               } else if ( obj.nodeType ) {
+                                       type = "node";
+                               } else if (
+                                       // native arrays
+                                       toString.call( obj ) === "[object Array]" ||
+                                       // NodeList objects
+                                       ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
+                               ) {
+                                       type = "array";
                                } else {
-                                       keys = [];
-                                       for (key in map) { keys.push( key ); }
+                                       type = typeof obj;
                                }
-                               keys.sort();
-                               for (i = 0; i < keys.length; i++) {
-                                       key = keys[ i ];
-                                       val = map[ key ];
-                                       ret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) );
+                               return type;
+                       },
+                       separator: function() {
+                               return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
+                       },
+                       indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+                               if ( !this.multiline ) {
+                                       return "";
+                               }
+                               var chr = this.indentChar;
+                               if ( this.HTML ) {
+                                       chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
                                }
-                               QUnit.jsDump.down();
-                               return join( '{', ret, '}' );
+                               return new Array( this._depth_ + (extra||0) ).join(chr);
                        },
-                       node: function( node ) {
-                               var open = QUnit.jsDump.HTML ? '&lt;' : '<',
-                                       close = QUnit.jsDump.HTML ? '&gt;' : '>';
-
-                               var tag = node.nodeName.toLowerCase(),
-                                       ret = open + tag;
+                       up: function( a ) {
+                               this._depth_ += a || 1;
+                       },
+                       down: function( a ) {
+                               this._depth_ -= a || 1;
+                       },
+                       setParser: function( name, parser ) {
+                               this.parsers[name] = parser;
+                       },
+                       // The next 3 are exposed so you can use them
+                       quote: quote,
+                       literal: literal,
+                       join: join,
+                       //
+                       _depth_: 1,
+                       // This is the list of parsers, to modify them, use jsDump.setParser
+                       parsers: {
+                               window: "[Window]",
+                               document: "[Document]",
+                               error: "[ERROR]", //when no parser is found, shouldn"t happen
+                               unknown: "[Unknown]",
+                               "null": "null",
+                               "undefined": "undefined",
+                               "function": function( fn ) {
+                                       var ret = "function",
+                                               name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
+
+                                       if ( name ) {
+                                               ret += " " + name;
+                                       }
+                                       ret += "( ";
+
+                                       ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
+                                       return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
+                               },
+                               array: array,
+                               nodelist: array,
+                               "arguments": array,
+                               object: function( map, stack ) {
+                                       var ret = [ ], keys, key, val, i;
+                                       QUnit.jsDump.up();
+                                       if ( Object.keys ) {
+                                               keys = Object.keys( map );
+                                       } else {
+                                               keys = [];
+                                               for ( key in map ) {
+                                                       keys.push( key );
+                                               }
+                                       }
+                                       keys.sort();
+                                       for ( i = 0; i < keys.length; i++ ) {
+                                               key = keys[ i ];
+                                               val = map[ key ];
+                                               ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
+                                       }
+                                       QUnit.jsDump.down();
+                                       return join( "{", ret, "}" );
+                               },
+                               node: function( node ) {
+                                       var a, val,
+                                               open = QUnit.jsDump.HTML ? "&lt;" : "<",
+                                               close = QUnit.jsDump.HTML ? "&gt;" : ">",
+                                               tag = node.nodeName.toLowerCase(),
+                                               ret = open + tag;
+
+                                       for ( a in QUnit.jsDump.DOMAttrs ) {
+                                               val = node[ QUnit.jsDump.DOMAttrs[a] ];
+                                               if ( val ) {
+                                                       ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
+                                               }
+                                       }
+                                       return ret + close + open + "/" + tag + close;
+                               },
+                               functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
+                                       var args,
+                                               l = fn.length;
+
+                                       if ( !l ) {
+                                               return "";
+                                       }
 
-                               for ( var a in QUnit.jsDump.DOMAttrs ) {
-                                       var val = node[QUnit.jsDump.DOMAttrs[a]];
-                                       if ( val ) {
-                                               ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+                                       args = new Array(l);
+                                       while ( l-- ) {
+                                               args[l] = String.fromCharCode(97+l);//97 is 'a'
                                        }
-                               }
-                               return ret + close + open + '/' + tag + close;
+                                       return " " + args.join( ", " ) + " ";
+                               },
+                               key: quote, //object calls it internally, the key part of an item in a map
+                               functionCode: "[code]", //function calls it internally, it's the content of the function
+                               attribute: quote, //node calls it internally, it's an html attribute value
+                               string: quote,
+                               date: quote,
+                               regexp: literal, //regex
+                               number: literal,
+                               "boolean": literal
                        },
-                       functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-                               var l = fn.length;
-                               if ( !l ) {
-                                       return '';
-                               }
-
-                               var args = new Array(l);
-                               while ( l-- ) {
-                                       args[l] = String.fromCharCode(97+l);//97 is 'a'
-                               }
-                               return ' ' + args.join(', ') + ' ';
+                       DOMAttrs: {
+                               //attributes to dump from nodes, name=>realName
+                               id: "id",
+                               name: "name",
+                               "class": "className"
                        },
-                       key: quote, //object calls it internally, the key part of an item in a map
-                       functionCode: '[code]', //function calls it internally, it's the content of the function
-                       attribute: quote, //node calls it internally, it's an html attribute value
-                       string: quote,
-                       date: quote,
-                       regexp: literal, //regex
-                       number: literal,
-                       'boolean': literal
-               },
-               DOMAttrs:{//attributes to dump from nodes, name=>realName
-                       id:'id',
-                       name:'name',
-                       'class':'className'
-               },
-               HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
-               indentChar:'  ',//indentation unit
-               multiline:true //if true, items in a collection, are separated by a \n, else just a space.
-       };
+                       HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
+                       indentChar: "  ",//indentation unit
+                       multiline: true //if true, items in a collection, are separated by a \n, else just a space.
+               };
 
        return jsDump;
 }());
 
 // from Sizzle.js
 function getText( elems ) {
-       var ret = "", elem;
+       var i, elem,
+               ret = "";
 
-       for ( var i = 0; elems[i]; i++ ) {
+       for ( i = 0; elems[i]; i++ ) {
                elem = elems[i];
 
                // Get the text from text nodes and CDATA nodes
@@ -1501,7 +1691,7 @@ function getText( elems ) {
        return ret;
 }
 
-//from jquery.js
+// from jquery.js
 function inArray( elem, array ) {
        if ( array.indexOf ) {
                return array.indexOf( elem );
@@ -1528,73 +1718,75 @@ function inArray( elem, array ) {
  *
  * Usage: QUnit.diff(expected, actual)
  *
- * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
  */
 QUnit.diff = (function() {
-       function diff(o, n) {
-               var ns = {};
-               var os = {};
-               var i;
-
-               for (i = 0; i < n.length; i++) {
-                       if (ns[n[i]] == null) {
-                               ns[n[i]] = {
+       function diff( o, n ) {
+               var i,
+                       ns = {},
+                       os = {};
+
+               for ( i = 0; i < n.length; i++ ) {
+                       if ( ns[ n[i] ] == null ) {
+                               ns[ n[i] ] = {
                                        rows: [],
                                        o: null
                                };
                        }
-                       ns[n[i]].rows.push(i);
+                       ns[ n[i] ].rows.push( i );
                }
 
-               for (i = 0; i < o.length; i++) {
-                       if (os[o[i]] == null) {
-                               os[o[i]] = {
+               for ( i = 0; i < o.length; i++ ) {
+                       if ( os[ o[i] ] == null ) {
+                               os[ o[i] ] = {
                                        rows: [],
                                        n: null
                                };
                        }
-                       os[o[i]].rows.push(i);
+                       os[ o[i] ].rows.push( i );
                }
 
-               for (i in ns) {
+               for ( i in ns ) {
                        if ( !hasOwn.call( ns, i ) ) {
                                continue;
                        }
-                       if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
-                               n[ns[i].rows[0]] = {
-                                       text: n[ns[i].rows[0]],
+                       if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
+                               n[ ns[i].rows[0] ] = {
+                                       text: n[ ns[i].rows[0] ],
                                        row: os[i].rows[0]
                                };
-                               o[os[i].rows[0]] = {
-                                       text: o[os[i].rows[0]],
+                               o[ os[i].rows[0] ] = {
+                                       text: o[ os[i].rows[0] ],
                                        row: ns[i].rows[0]
                                };
                        }
                }
 
-               for (i = 0; i < n.length - 1; i++) {
-                       if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
-                       n[i + 1] == o[n[i].row + 1]) {
-                               n[i + 1] = {
-                                       text: n[i + 1],
+               for ( i = 0; i < n.length - 1; i++ ) {
+                       if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
+                                               n[ i + 1 ] == o[ n[i].row + 1 ] ) {
+
+                               n[ i + 1 ] = {
+                                       text: n[ i + 1 ],
                                        row: n[i].row + 1
                                };
-                               o[n[i].row + 1] = {
-                                       text: o[n[i].row + 1],
+                               o[ n[i].row + 1 ] = {
+                                       text: o[ n[i].row + 1 ],
                                        row: i + 1
                                };
                        }
                }
 
-               for (i = n.length - 1; i > 0; i--) {
-                       if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
-                       n[i - 1] == o[n[i].row - 1]) {
-                               n[i - 1] = {
-                                       text: n[i - 1],
+               for ( i = n.length - 1; i > 0; i-- ) {
+                       if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
+                                               n[ i - 1 ] == o[ n[i].row - 1 ]) {
+
+                               n[ i - 1 ] = {
+                                       text: n[ i - 1 ],
                                        row: n[i].row - 1
                                };
-                               o[n[i].row - 1] = {
-                                       text: o[n[i].row - 1],
+                               o[ n[i].row - 1 ] = {
+                                       text: o[ n[i].row - 1 ],
                                        row: i - 1
                                };
                        }
@@ -1606,50 +1798,52 @@ QUnit.diff = (function() {
                };
        }
 
-       return function(o, n) {
-               o = o.replace(/\s+$/, '');
-               n = n.replace(/\s+$/, '');
-               var out = diff(o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/));
+       return function( o, n ) {
+               o = o.replace( /\s+$/, "" );
+               n = n.replace( /\s+$/, "" );
 
-               var str = "";
-               var i;
+               var i, pre,
+                       str = "",
+                       out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
+                       oSpace = o.match(/\s+/g),
+                       nSpace = n.match(/\s+/g);
 
-               var oSpace = o.match(/\s+/g);
-               if (oSpace == null) {
-                       oSpace = [" "];
+               if ( oSpace == null ) {
+                       oSpace = [ " " ];
                }
                else {
-                       oSpace.push(" ");
+                       oSpace.push( " " );
                }
-               var nSpace = n.match(/\s+/g);
-               if (nSpace == null) {
-                       nSpace = [" "];
+
+               if ( nSpace == null ) {
+                       nSpace = [ " " ];
                }
                else {
-                       nSpace.push(" ");
+                       nSpace.push( " " );
                }
 
-               if (out.n.length === 0) {
-                       for (i = 0; i < out.o.length; i++) {
-                               str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+               if ( out.n.length === 0 ) {
+                       for ( i = 0; i < out.o.length; i++ ) {
+                               str += "<del>" + out.o[i] + oSpace[i] + "</del>";
                        }
                }
                else {
-                       if (out.n[0].text == null) {
-                               for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
-                                       str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+                       if ( out.n[0].text == null ) {
+                               for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
+                                       str += "<del>" + out.o[n] + oSpace[n] + "</del>";
                                }
                        }
 
-                       for (i = 0; i < out.n.length; i++) {
+                       for ( i = 0; i < out.n.length; i++ ) {
                                if (out.n[i].text == null) {
-                                       str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+                                       str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
                                }
                                else {
-                                       var pre = "";
+                                       // `pre` initialized at top of scope
+                                       pre = "";
 
-                                       for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
-                                               pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+                                       for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
+                                               pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
                                        }
                                        str += " " + out.n[i].text + nSpace[i] + pre;
                                }
@@ -1661,7 +1855,7 @@ QUnit.diff = (function() {
 }());
 
 // for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" || typeof require !== "undefined" ) {
+if ( typeof exports !== "undefined" ) {
        extend(exports, QUnit);
 }
 
diff --git a/resources/mediawiki.action/mediawiki.action.watch.ajax.js b/resources/mediawiki.action/mediawiki.action.watch.ajax.js
deleted file mode 100644 (file)
index 090e4c3..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * Animate watch/unwatch links to use asynchronous API requests to
- * watch pages, rather than navigating to a different URI.
- */
-( function ( $, mw, undefined ) {
-
-       /**
-        * The name of the page to watch or unwatch.
-        */
-       var title = mw.config.get( 'wgRelevantPageName', mw.config.get( 'wgPageName' ) );
-
-       /**
-        * Update the link text, link href attribute and (if applicable)
-        * "loading" class.
-        *
-        * @param $link {jQuery} Anchor tag of (un)watch link.
-        * @param action {String} One of 'watch', 'unwatch'.
-        * @param state {String} [optional] 'idle' or 'loading'. Default is 'idle'.
-        */
-       function updateWatchLink( $link, action, state ) {
-               var accesskeyTip, msgKey, $li;
-
-               // message keys 'watch', 'watching', 'unwatch' or 'unwatching'.
-               msgKey = state === 'loading' ? action + 'ing' : action;
-               accesskeyTip = $link.attr( 'title' ).match( mw.util.tooltipAccessKeyRegexp );
-               $li = $link.closest( 'li' );
-
-               $link
-                       .text( mw.msg( msgKey ) )
-                       .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
-                               ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
-                       )
-                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
-                                       title: title,
-                                       action: action
-                               })
-                       );
-
-               // Special case for vector icon
-               if ( $li.hasClass( 'icon' ) ) {
-                       if ( state === 'loading' ) {
-                               $link.addClass( 'loading' );
-                       } else {
-                               $link.removeClass( 'loading' );
-                       }
-               }
-       }
-
-       /**
-        * @todo This should be moved somewhere more accessible.
-        * @param url {String}
-        * @return {String} The extracted action, defaults to 'view'.
-        */
-       function mwUriGetAction( url ) {
-               var action, actionPaths, key, i, m, parts;
-
-               actionPaths = mw.config.get( 'wgActionPaths' );
-
-               // @todo: Does MediaWiki give action path or query param
-               // precedence ? If the former, move this to the bottom
-               action = mw.util.getParamValue( 'action', url );
-               if ( action !== null ) {
-                       return action;
-               }
-
-               for ( key in actionPaths ) {
-                       if ( actionPaths.hasOwnProperty( key ) ) {
-                               parts = actionPaths[key].split( '$1' );
-                               for ( i = 0; i < parts.length; i += 1 ) {
-                                       parts[i] = $.escapeRE( parts[i] );
-                               }
-                               m = new RegExp( parts.join( '(.+)' ) ).exec( url );
-                               if ( m && m[1] ) {
-                                       return key;
-                               }
-
-                       }
-               }
-
-               return 'view';
-       }
-
-       $( document ).ready( function () {
-               var $links = $( '.mw-watchlink a, a.mw-watchlink, ' +
-                       '#ca-watch a, #ca-unwatch a, #mw-unwatch-link1, ' +
-                       '#mw-unwatch-link2, #mw-watch-link2, #mw-watch-link1' );
-
-               // Allowing people to add inline animated links is a little scary
-               $links = $links.filter( ':not( #bodyContent *, #content * )' );
-
-               $links.click( function ( e ) {
-                       var action, api, $link;
-
-                       action = mwUriGetAction( this.href );
-
-                       if ( action !== 'watch' && action !== 'unwatch' ) {
-                               // Could not extract target action from link url,
-                               // let native browsing handle it further
-                               return true;
-                       }
-                       e.preventDefault();
-                       e.stopPropagation();
-
-                       $link = $( this );
-
-                       updateWatchLink( $link, action, 'loading' );
-
-                       api = new mw.Api();
-                       api[action](
-                               title,
-                               // Success
-                               function ( watchResponse ) {
-                                       var $li, otherAction;
-
-                                       otherAction = action === 'watch' ? 'unwatch' : 'watch';
-                                       $li = $link.closest( 'li' );
-
-                                       mw.util.jsMessage( watchResponse.message, 'ajaxwatch' );
-
-                                       // Set link to opposite
-                                       updateWatchLink( $link, otherAction );
-
-                                       // Most common ID style
-                                       if ( $li.prop( 'id' ) === 'ca-' + otherAction || $li.prop( 'id' ) === 'ca-' + action ) {
-                                               $li.prop( 'id', 'ca-' + otherAction );
-                                       }
-
-                                       // Bug 12395 - update the watch checkbox on edit pages when the
-                                       // page is watched or unwatched via the tab.
-                                       if ( watchResponse.watched !== undefined ) {
-                                               $( '#wpWatchthis' ).prop( 'checked', true );
-                                       } else {
-                                               $( '#wpWatchthis' ).removeProp( 'checked' );
-                                       }
-                               },
-                               // Error
-                               function () {
-                                       var cleanTitle, html, link;
-
-                                       // Reset link to non-loading mode
-                                       updateWatchLink( $link, action );
-
-                                       // Format error message
-                                       cleanTitle = title.replace( /_/g, ' ' );
-                                       link = mw.html.element(
-                                               'a', {
-                                                       href: mw.util.wikiGetlink( title ),
-                                                       title: cleanTitle
-                                               }, cleanTitle
-                                       );
-                                       html = mw.msg( 'watcherrortext', link );
-
-                                       // Report to user about the error
-                                       mw.util.jsMessage( html, 'ajaxwatch' );
-
-                               }
-                       );
-               });
-       });
-
-}( jQuery, mediaWiki ) );
index 225093b..74306d5 100644 (file)
                 * @return {jqXHR}
                 */
                ajax: function( parameters, ajaxOptions ) {
+                       var token;
                        parameters = $.extend( {}, this.defaults.parameters, parameters );
                        ajaxOptions = $.extend( {}, this.defaults.ajax, ajaxOptions );
 
+                       // Ensure that token parameter is last (per [[mw:API:Edit#Token]]).
+                       if ( parameters.token ) {
+                               token = parameters.token;
+                               delete parameters.token;
+                       }
                        // Some deployed MediaWiki >= 1.17 forbid periods in URLs, due to an IE XSS bug
                        // So let's escape them here. See bug #28235
                        // This works because jQuery accepts data as a query string or as an Object
                        ajaxOptions.data = $.param( parameters ).replace( /\./g, '%2E' );
-
+                       // If we extracted a token parameter, add it back in.
+                       if ( token ) {
+                               ajaxOptions.data += '&token=' + encodeURIComponent( token );
+                       }
                        ajaxOptions.error = function( xhr, textStatus, exception ) {
                                ajaxOptions.err( 'http', {
                                        xhr: xhr,
index 7d9e114..d21df7e 100644 (file)
@@ -22,17 +22,3 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        return forms[5];
 };
 
-mediaWiki.language.digitTransformTable = {
-    '0': '٠', // &#x0660;
-    '1': '١', // &#x0661;
-    '2': '٢', // &#x0662;
-    '3': '٣', // &#x0663;
-    '4': '٤', // &#x0664;
-    '5': '٥', // &#x0665;
-    '6': '٦', // &#x0666;
-    '7': '٧', // &#x0667;
-    '8': '٨', // &#x0668;
-    '9': '٩', // &#x0669;
-    '.': '٫', // &#x066b; wrong table ?
-    ',': '٬' // &#x066c;
-};
index 9f22426..9affcf0 100644 (file)
@@ -18,3 +18,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'bs', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 's ' + word;
+                       break;
+               case 'lokativ': // locative
+                       word = 'o ' + word;
+                       break;
+       }
+       return word;
+};
index c3eaa1f..e3c5808 100644 (file)
@@ -16,3 +16,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[3];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'dsb', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 'z ' + word;
+                       break;
+               case 'lokatiw': // lokatiw
+                       word = 'wo ' + word;
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/fi.js b/resources/mediawiki.language/languages/fi.js
new file mode 100644 (file)
index 0000000..374698d
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ *  Finnish (Suomi) language functions
+ *  @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'fi', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+
+       // vowel harmony flag
+       var aou = word.match( /[aou][^äöy]*$/i );
+       var origWord = word;
+       if ( word.match( /wiki$/i ) ) {
+               aou = false;
+       }
+       //append i after final consonant
+       if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) )
+               word += 'i';
+
+       switch ( form ) {
+               case 'genitive':
+                       word += 'n';
+                       break;
+               case 'elative':
+                       word += ( aou ? 'sta' : 'stä' );
+                       break;
+               case 'partitive':
+                       word += ( aou ? 'a' : 'ä' );
+                       break;
+               case 'illative':
+                       // Double the last letter and add 'n'
+                       word += word.substr(  word.length-1 ) + 'n';
+                       break;
+               case 'inessive':
+                       word += ( aou ? 'ssa' : 'ssä' );
+                       break;
+               default:
+                       word = origWord;
+                       break;
+       }
+       return word;
+};
index 3928013..51fce35 100644 (file)
@@ -12,3 +12,38 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[2];
 };
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'ga', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'ainmlae':
+                       switch ( word ) {
+                               case 'an Domhnach':
+                                       word = 'Dé Domhnaigh';
+                                       break;
+                               case 'an Luan':
+                                       word = 'Dé Luain';
+                                       break;
+                               case 'an Mháirt':
+                                       word = 'Dé Mháirt';
+                                       break;
+                               case 'an Chéadaoin':
+                                       word = 'Dé Chéadaoin';
+                                       break;
+                               case 'an Déardaoin':
+                                       word = 'Déardaoin';
+                                       break;
+                               case 'an Aoine':
+                                       word = 'Dé hAoine';
+                                       break;
+                               case 'an Satharn':
+                                       word = 'Dé Sathairn';
+                                       break;
+                       }
+       }
+       return word;
+};
index b74440e..e737a7c 100644 (file)
@@ -12,3 +12,29 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[1];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'he', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'prefixed':
+               case 'תחילית': // the same word in Hebrew
+                       // Duplicate prefixed "Waw", but only if it's not already double
+                       if ( word.substr( 0, 1 ) === "ו" && word.substr( 0, 2 ) !== "וו" ) {
+                               word = "ו" + word;
+                       }
+
+                       // Remove the "He" if prefixed
+                       if ( word.substr( 0, 1 ) === "ה" ) {
+                               word = word.substr( 1, word.length );
+                       }
+
+                       // Add a hyphen (maqaf) before numbers and non-Hebrew letters
+                       if (  word.substr( 0, 1 ) < "א" ||  word.substr( 0, 1 ) > "ת" ) {
+                               word = "־" + word;
+                       }
+       }
+       return word;
+};
index 8651fe4..6aa993c 100644 (file)
@@ -16,3 +16,20 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[3];
        }
 };
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms =mw.language.getData( 'hsb', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 'z ' + word;
+                       break;
+               case 'lokatiw': // lokatiw
+                       word = 'wo ' + word;
+                       break;
+               }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/hu.js b/resources/mediawiki.language/languages/hu.js
new file mode 100644 (file)
index 0000000..eb3f1f3
--- /dev/null
@@ -0,0 +1,23 @@
+/**
+ *  Hungarian language functions
+ *  @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'hu', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'rol':
+                       word += 'ról';
+                       break;
+               case 'ba':
+                       word += 'ba';
+                       break;
+               case 'k':
+                       word += 'k';
+                       break;
+       }
+       return word;
+};
index 734c26d..b51b2b6 100644 (file)
@@ -6,3 +6,27 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        forms = mediaWiki.language.preConvertPlural( forms, 2 );
        return ( Math.abs( count ) <= 1 ) ? forms[0] : forms[1];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'hy', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+
+       // These rules are not perfect, but they are currently only used for site names so it doesn't
+       // matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+
+       switch ( form ) {
+               case 'genitive': // սեռական հոլով
+                       if ( word.substr( -1 ) === 'ա' )
+                               word = word.substr( 0, word.length -1 )  + 'այի';
+                       else if ( word.substr( -1 ) === 'ո' )
+                               word = word.substr( 0, word.length - 1 ) + 'ոյի';
+                       else if ( word.substr( -4 ) === 'գիրք' )
+                               word = word.substr( 0, word.length - 4 ) + 'գրքի';
+                       else
+                               word = word + 'ի';
+                       break;
+               }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/la.js b/resources/mediawiki.language/languages/la.js
new file mode 100644 (file)
index 0000000..313bb1c
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * Latin (lingua Latina) language functions
+ * @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'la', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'ae' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'librorum' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tionis' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'ntis' );
+                       word = word.replace( /as$/i, 'atis' );
+                       word = word.replace( /es$/i ,'ei' ); // 5th declension singular
+                       break;
+               case 'accusative':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'libros' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tionem' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'ntem' );
+                       word = word.replace( /as$/i, 'atem');
+                       word = word.replace( /es$/i ,'em' ); // 5th declension singular
+                       break;
+               case 'ablative':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'a' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'libris' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tione' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'nte' );
+                       word = word.replace( /as$/i, 'ate');
+                       word = word.replace( /es$/i ,'e' ); // 5th declension singular
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/nl.js b/resources/mediawiki.language/languages/nl.js
deleted file mode 100644 (file)
index a2b22f4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Dutch (Nederlands) language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : '.'
-};
diff --git a/resources/mediawiki.language/languages/os.js b/resources/mediawiki.language/languages/os.js
new file mode 100644 (file)
index 0000000..431e38c
--- /dev/null
@@ -0,0 +1,69 @@
+/**
+ * Ossetian (Ирон) language functions
+ * @author Santhosh Thottingal
+ */
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'os', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       // Ending for allative case
+       var end_allative = 'мæ';
+       // Variable for 'j' beetwen vowels
+       var jot = '';
+       // Variable for "-" for not Ossetic words
+       var hyphen = '';
+       // Variable for ending
+       var ending = '';
+       // Checking if the $word is in plural form
+       if ( word.match( /тæ$/i ) ) {
+               word = word.substring( 0, word.length - 1 );
+               end_allative = 'æм';
+       }
+       // Works if word is in singular form.
+       // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю, я.
+       else if ( word.match( /[аæеёиоыэюя]$/i ) ) {
+               jot = 'й';
+       }
+       // Checking if word ends on 'у'. 'У' can be either consonant 'W' or vowel 'U' in cyrillic Ossetic.
+       // Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы.
+       else if ( word.match( /у$/i ) ) {
+               if ( ! word.substring( word.length-2, word.length-1 ).match( /[аæеёиоыэюя]$/i ) ) {
+                       jot = 'й';
+               }
+       } else if ( !word.match( /[бвгджзйклмнопрстфхцчшщьъ]$/i ) ) {
+               hyphen = '-';
+       }
+
+       switch ( form ) {
+               case 'genitive':
+                       ending = hyphen + jot + 'ы';
+                       break;
+               case 'dative':
+                       ending = hyphen + jot + 'æн';
+                       break;
+               case 'allative':
+                       ending = hyphen + end_allative;
+                       break;
+               case 'ablative':
+                       if ( jot == 'й' ) {
+                               ending = hyphen + jot + 'æ';
+                       }
+                       else {
+                               ending = hyphen + jot + 'æй';
+                       }
+                       break;
+               case 'superessive':
+                       ending = hyphen + jot + 'ыл';
+                       break;
+               case 'equative':
+                       ending = hyphen + jot + 'ау';
+                       break;
+               case 'comitative':
+                       ending = hyphen + 'имæ';
+                       break;
+       }
+       return word + ending;
+};
diff --git a/resources/mediawiki.language/languages/pt-br.js b/resources/mediawiki.language/languages/pt-br.js
deleted file mode 100644 (file)
index 2457e24..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Brazilian Portugese (Portuguêsi do Brasil) language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : ' '
-};
diff --git a/resources/mediawiki.language/languages/pt.js b/resources/mediawiki.language/languages/pt.js
deleted file mode 100644 (file)
index 1b8fc72..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Portugese language functions
- */
-
-mediaWiki.language.digitTransformTable = {
-    '.' : ',',
-    ',' : ' '
-};
index 17c9293..42be4f9 100644 (file)
@@ -21,3 +21,29 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'ru', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive': // родительный падеж
+                       if ( (  word.substr( word.length - 4 )  == 'вики' ) || (  word.substr( word.length - 4 ) == 'Вики' ) ) {
+                       }
+                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                               word = word.substr(0, word.length - 1 ) + 'я';
+                       else if ( word.substr( word.length - 2 ) == 'ия' )
+                               word = word.substr(0, word.length - 2 ) + 'ии';
+                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                               word = word.substr(0, word.length - 2 ) + 'ки';
+                       else if ( word.substr( word.length - 2 )  == 'ти' )
+                               word = word.substr(0, word.length - 2 ) + 'тей';
+                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                               word = word.substr(0, word.length - 2 ) + 'дов';
+                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                               word = word.substr(0, word.length - 3 ) + 'ника';
+                       break;
+       }
+       return word;
+};
index a887e0e..cfb5781 100644 (file)
@@ -18,3 +18,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[4];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'sl', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'mestnik': // locative
+                       word = 'o ' + word;
+                       break;
+               case 'orodnik': // instrumental
+                       word = 'z ' + word;
+                       break;
+       }
+       return word;
+};
index 5c1294e..372d441 100644 (file)
@@ -21,3 +21,35 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'uk', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive': // родовий відмінок
+                       if ( (  word.substr( word.length - 4 ) == 'вікі' ) || (  word.substr( word.length - 4 ) == 'Вікі' ) ) {
+                       }
+                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                               word = word.substr(0, word.length - 1 ) + 'я';
+                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                               word = word.substr(0, word.length - 2 ) + 'ії';
+                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                               word = word.substr(0, word.length - 2 ) + 'ки';
+                       else if ( word.substr( word.length - 2 )  == 'ти' )
+                               word = word.substr(0, word.length - 2 ) + 'тей';
+                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                               word = word.substr(0, word.length - 2 ) + 'дов';
+                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                               word = word.substr(0, word.length - 3 ) + 'ника';
+                       break;
+               case 'accusative': // знахідний відмінок
+                       if ( (  word.substr( word.length - 4 ) == 'вікі' ) || (  word.substr( word.length - 4 ) == 'Вікі' ) ) {
+                       }
+                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                               word = word.substr(0, word.length - 2 ) + 'ію';
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js
new file mode 100644 (file)
index 0000000..b49823c
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+ * Base language object with methods for storing and getting
+ * language data.
+ */
+( function( $, mw ) {
+
+       var language = {
+               /**
+                * @var data {Object} Language related data (keyed by language,
+                * contains instances of mw.Map).
+                * @example Set data
+                * <code>
+                *     // Override, extend or create the language data object of 'nl'
+                *     mw.language.setData( 'nl', 'myKey', 'My value' );
+                *
+                *     // Set multiple values at once
+                *     mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
+                * </code>
+                * @example Get GrammarForms data for language 'nl':
+                * <code>
+                *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
+                * </code>
+                */
+               data: {},
+
+               /**
+                * Convenience method for retreiving language data by language code and data key,
+                * covering for the potential inexistance of a data object for this langiage.
+                * @param langCode {String}
+                * @param dataKey {String}
+                * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
+                  the specified langCode).
+                */
+               getData: function ( langCode, dataKey ) {
+                       var langData = language.data;
+                       if ( langData[langCode] instanceof mw.Map ) {
+                               return langData[langCode].get( dataKey );
+                       }
+                       return undefined;
+               },
+
+               /**
+                * Convenience method for setting language data by language code and data key.
+                * Creates the data mw.Map if there isn't one for the specified language already.
+                *
+                * @param langCode {String}
+                * @param dataKey {String|Object} Key or object of key/values.
+                * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
+                */
+               setData: function ( langCode, dataKey, value ) {
+                       var langData = language.data;
+                       if ( !( langData[langCode] instanceof mw.Map ) ) {
+                               langData[langCode] = new mw.Map();
+                       }
+                       langData[langCode].set( dataKey, value );
+               }
+       };
+
+       mw.language = language;
+
+} )( jQuery, mediaWiki );
index 67b605c..78a6309 100644 (file)
@@ -1,58 +1,12 @@
 /**
- * Base language object
- *
  * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki. This object contains methods for loading and
- * transforming message text.
+ * Language.php in MediaWiki.
+ * This adds methods for transforming message text.
  */
 ( function( $, mw ) {
 
 var language = {
-       /**
-        * @var data {Object} Language related data (keyed by language,
-        * contains instances of mw.Map).
-        * @example Set data
-        * <code>
-        *     // Override, extend or create the language data object of 'nl'
-        *     mw.language.setData( 'nl', 'myKey', 'My value' );
-        * </code>
-        * @example Get GrammarForms data for language 'nl':
-        * <code>
-        *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
-        * </code>
-        */
-       data: {},
-
-       /**
-        * Convenience method for retreiving language data by language code and data key,
-        * covering for the potential inexistance of a data object for this langiage.
-        * @param langCode {String}
-        * @param dataKey {String}
-        * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
-          the specified langCode).
-        */
-       getData: function ( langCode, dataKey ) {
-               var langData = language.data;
-               if ( langData[langCode] instanceof mw.Map ) {
-                       return langData[langCode].get( dataKey );
-               }
-               return undefined;
-       },
 
-       /**
-        * Convenience method for setting language data by language code and data key.
-        * Creates a data object if there isn't one for the specified language already.
-        * @param langCode {String}
-        * @param dataKey {String}
-        * @param value {mixed}
-        */
-       setData: function ( langCode, dataKey, value ) {
-               var langData = language.data;
-               if ( !( langData[langCode] instanceof mw.Map ) ) {
-                       langData[langCode] = new mw.Map();
-               }
-               langData[langCode].set( dataKey, value );
-       },
        /**
         * Process the PLURAL template substitution
         *
@@ -72,7 +26,7 @@ var language = {
                        }
                        // Restore the count into a Number ( if it got converted earlier )
                        var count = mw.language.convertNumber( template.title, true );
-                       // Do convertPlural call 
+                       // Do convertPlural call
                        return mw.language.convertPlural( parseInt( count, 10 ), template.parameters );
                }
                // Could not process plural return first form or nothing
@@ -145,7 +99,7 @@ var language = {
         * Provides an alternative text depending on specified gender.
         * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
         * If second or third parameter are not specified, masculine is used.
-        * 
+        *
         * These details may be overriden per language.
         *
         * @param gender string male, female, or anything else for neutral.
@@ -178,7 +132,7 @@ var language = {
         * @return {String}
         */
        convertGrammar: function ( word, form ) {
-               var grammarForms = language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
+               var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
                if ( grammarForms && grammarForms[form] ) {
                        return grammarForms[form][word] || word;
                }
@@ -186,9 +140,9 @@ var language = {
        },
 
        // Digit Transform Table, populated by language classes where applicable
-       'digitTransformTable': null
+       'digitTransformTable': mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' )
 };
 
-mw.language = language;
+$.extend( mw.language, language );
 
 } )( jQuery, mediaWiki );
diff --git a/resources/mediawiki.page/mediawiki.page.watch.ajax.js b/resources/mediawiki.page/mediawiki.page.watch.ajax.js
new file mode 100644 (file)
index 0000000..d3f8433
--- /dev/null
@@ -0,0 +1,174 @@
+/**
+ * Animate watch/unwatch links to use asynchronous API requests to
+ * watch pages, rather than navigating to a different URI.
+ */
+( function ( $, mw, undefined ) {
+       /**
+        * The name of the page to watch or unwatch.
+        */
+       var title = mw.config.get( 'wgRelevantPageName', mw.config.get( 'wgPageName' ) );
+
+       // Expose local methods
+       mw.page.watch = {
+               'updateWatchLink': updateWatchLink
+       };
+       /**
+        * Update the link text, link href attribute and (if applicable)
+        * "loading" class.
+        *
+        * @param $link {jQuery} Anchor tag of (un)watch link.
+        * @param action {String} One of 'watch', 'unwatch'.
+        * @param state {String} [optional] 'idle' or 'loading'. Default is 'idle'.
+        */
+       function updateWatchLink( $link, action, state ) {
+               var accesskeyTip, msgKey, $li, otherAction;
+
+               // message keys 'watch', 'watching', 'unwatch' or 'unwatching'.
+               msgKey = state === 'loading' ? action + 'ing' : action;
+               otherAction = action === 'watch' ? 'unwatch' : 'watch';
+               accesskeyTip = $link.attr( 'title' ).match( mw.util.tooltipAccessKeyRegexp );
+               $li = $link.closest( 'li' );
+               /**
+                * Trigger a 'watchpage' event for this List item.
+                * Announce the otherAction value as the first param.
+                * Used to monitor the state of watch link.
+                * TODO: Revise when system wide hooks are implemented
+                */
+               if( state === undefined ) {
+                       $li.trigger( 'watchpage.mw', otherAction );
+               }
+
+               $link
+                       .text( mw.msg( msgKey ) )
+                       .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
+                               ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
+                       )
+                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
+                                       title: title,
+                                       action: action
+                               })
+                       );
+
+               // Most common ID style
+               if ( $li.prop( 'id' ) === 'ca-' + otherAction ) {
+                       $li.prop( 'id', 'ca-' + action );
+               }
+
+               // Special case for vector icon
+               if ( $li.hasClass( 'icon' ) ) {
+                       if ( state === 'loading' ) {
+                               $link.addClass( 'loading' );
+                       } else {
+                               $link.removeClass( 'loading' );
+                       }
+               }
+       }
+
+       /**
+        * @todo This should be moved somewhere more accessible.
+        * @param url {String}
+        * @return {String} The extracted action, defaults to 'view'.
+        */
+       function mwUriGetAction( url ) {
+               var action, actionPaths, key, i, m, parts;
+
+               actionPaths = mw.config.get( 'wgActionPaths' );
+
+               // @todo: Does MediaWiki give action path or query param
+               // precedence ? If the former, move this to the bottom
+               action = mw.util.getParamValue( 'action', url );
+               if ( action !== null ) {
+                       return action;
+               }
+
+               for ( key in actionPaths ) {
+                       if ( actionPaths.hasOwnProperty( key ) ) {
+                               parts = actionPaths[key].split( '$1' );
+                               for ( i = 0; i < parts.length; i += 1 ) {
+                                       parts[i] = $.escapeRE( parts[i] );
+                               }
+                               m = new RegExp( parts.join( '(.+)' ) ).exec( url );
+                               if ( m && m[1] ) {
+                                       return key;
+                               }
+
+                       }
+               }
+
+               return 'view';
+       }
+
+       $( document ).ready( function () {
+               var $links = $( '.mw-watchlink a, a.mw-watchlink, ' +
+                       '#ca-watch a, #ca-unwatch a, #mw-unwatch-link1, ' +
+                       '#mw-unwatch-link2, #mw-watch-link2, #mw-watch-link1' );
+
+               // Allowing people to add inline animated links is a little scary
+               $links = $links.filter( ':not( #bodyContent *, #content * )' );
+
+               $links.click( function ( e ) {
+                       var action, api, $link;
+
+                       action = mwUriGetAction( this.href );
+
+                       if ( action !== 'watch' && action !== 'unwatch' ) {
+                               // Could not extract target action from link url,
+                               // let native browsing handle it further
+                               return true;
+                       }
+                       e.preventDefault();
+                       e.stopPropagation();
+
+                       $link = $( this );
+
+                       updateWatchLink( $link, action, 'loading' );
+
+                       api = new mw.Api();
+                       api[action](
+                               title,
+                               // Success
+                               function ( watchResponse ) {
+                                       var $li, otherAction;
+
+                                       otherAction = action === 'watch' ? 'unwatch' : 'watch';
+                                       $li = $link.closest( 'li' );
+
+                                       mw.util.jsMessage( watchResponse.message, 'ajaxwatch' );
+
+                                       // Set link to opposite
+                                       updateWatchLink( $link, otherAction );
+
+                                       // Bug 12395 - update the watch checkbox on edit pages when the
+                                       // page is watched or unwatched via the tab.
+                                       if ( watchResponse.watched !== undefined ) {
+                                               $( '#wpWatchthis' ).prop( 'checked', true );
+                                       } else {
+                                               $( '#wpWatchthis' ).removeProp( 'checked' );
+                                       }
+                               },
+                               // Error
+                               function () {
+                                       var cleanTitle, html, link;
+
+                                       // Reset link to non-loading mode
+                                       updateWatchLink( $link, action );
+
+                                       // Format error message
+                                       cleanTitle = title.replace( /_/g, ' ' );
+                                       link = mw.html.element(
+                                               'a', {
+                                                       href: mw.util.wikiGetlink( title ),
+                                                       title: cleanTitle
+                                               }, cleanTitle
+                                       );
+                                       html = mw.msg( 'watcherrortext', link );
+
+                                       // Report to user about the error
+                                       mw.util.jsMessage( html, 'ajaxwatch' );
+
+                               }
+                       );
+               });
+       });
+
+}( jQuery, mediaWiki ) );
index 8865d04..04954e8 100644 (file)
@@ -1,21 +1,33 @@
 /*
  * JavaScript for Special:Search
  */
-jQuery( function( $ ) {
+( function( $, mw ) { $( function() {
 
 // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
 if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
        $( 'input[autofocus]:first' ).focus();
 }
 
-// Bind check all/none button
+// Create check all/none button
 var $checkboxes = $('#powersearch input[id^=mw-search-ns]');
-$('#mw-search-toggleall').click( function() {
-       $checkboxes.prop("checked", true);
-} );
-$('#mw-search-togglenone').click( function() {
-       $checkboxes.prop("checked", false);
-} );
+$('#mw-search-togglebox').append(
+       $('<label />')
+               .text(mw.msg('powersearch-togglelabel'))
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-toggleall')
+               .attr('value', mw.msg('powersearch-toggleall'))
+               .click( function() {
+                       $checkboxes.prop('checked', true);
+               } )
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-togglenone')
+               .attr('value', mw.msg('powersearch-togglenone'))
+               .click( function() {
+                       $checkboxes.prop('checked', false);
+               } )
+);
 
 // Change the header search links to what user entered
 var headerLinks = $('.search-types a');
@@ -34,4 +46,4 @@ $('#searchText, #powerSearchText').change(function() {
        });
 }).trigger('change');
 
-} );
+} ); } )( jQuery, mediaWiki );
index 2957674..b871ac7 100644 (file)
@@ -56,7 +56,7 @@
  *
  */
 
-( function( $, mw ) {
+( function ( mw, $ ) {
 
        /**
         * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
@@ -70,9 +70,8 @@
        function cat( pre, val, post, raw ) {
                if ( val === undefined || val === null || val === '' ) {
                        return '';
-               } else {
-                       return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
                }
+               return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
        }
 
        // Regular expressions to parse many common URIs.
@@ -98,7 +97,8 @@
         * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
         * so the library is still testable & purely functional.
         */
-       mw.UriRelative = function( documentLocation ) {
+       mw.UriRelative = function ( documentLocation ) {
+               var defaultUri;
 
                /**
                 * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
 
                        if ( uri !== undefined && uri !== null || uri !== '' ) {
                                if ( typeof uri === 'string' ) {
-                                       this._parse( uri, options );
+                                       this.parse( uri, options );
                                } else if ( typeof uri === 'object' ) {
-                                       var _this = this;
-                                       $.each( properties, function( i, property ) {
-                                               _this[property] = uri[property];
-                                       } );
-                                       if ( this.query === undefined ) {
+                                       // Copy data over from existing URI object
+                                       for ( var prop in uri ) {
+                                               // Only copy direct properties, not inherited ones
+                                               if ( uri.hasOwnProperty( prop ) ) {
+                                                       // Deep copy object properties
+                                                       if ( $.isArray( uri[prop] ) || $.isPlainObject( uri[prop] ) ) {
+                                                               this[prop] = $.extend( true, {}, uri[prop] );
+                                                       } else {
+                                                               this[prop] = uri[prop];
+                                                       }
+                                               }
+                                       }
+                                       if ( !this.query ) {
                                                this.query = {};
                                        }
                                }
                 * @param {String} string
                 * @return {String} encoded for URI
                 */
-               Uri.encode = function( s ) {
+               Uri.encode = function ( s ) {
                        return encodeURIComponent( s )
                                .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
                                .replace( /\)/g, '%29').replace( /\*/g, '%2A')
                 * @param {String} string encoded for URI
                 * @return {String} decoded string
                 */
-               Uri.decode = function( s ) {
+               Uri.decode = function ( s ) {
                        return decodeURIComponent( s.replace( /\+/g, '%20' ) );
                };
 
                         * @param {Object} options
                         * @return {Boolean} success
                         */
-                       _parse: function( str, options ) {
-                               var matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
-                               var uri = this;
-                               $.each( properties, function( i, property ) {
+                       parse: function ( str, options ) {
+                               var q,
+                                       uri = this,
+                                       matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+                               $.each( properties, function ( i, property ) {
                                        uri[ property ] = matches[ i+1 ];
                                } );
 
                                // uri.query starts out as the query string; we will parse it into key-val pairs then make
                                // that object the "query" property.
                                // we overwrite query in uri way to make cloning easier, it can use the same list of properties.
-                               var q = {};
+                               q = {};
                                // using replace to iterate over a string
                                if ( uri.query ) {
                                        uri.query.replace( /(?:^|&)([^&=]*)(?:(=)([^&]*))?/g, function ($0, $1, $2, $3) {
+                                               var k, v;
                                                if ( $1 ) {
-                                                       var k = Uri.decode( $1 );
-                                                       var v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
+                                                       k = Uri.decode( $1 );
+                                                       v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
 
                                                        // If overrideKeys, always (re)set top level value.
                                                        // If not overrideKeys but this key wasn't set before, then we set it as well.
                         * Returns user and password portion of a URI.
                         * @return {String}
                         */
-                       getUserInfo: function() {
+                       getUserInfo: function () {
                                return cat( '', this.user, cat( ':', this.password, '' ) );
                        },
 
                         * Gets host and port portion of a URI.
                         * @return {String}
                         */
-                       getHostPort: function() {
+                       getHostPort: function () {
                                return this.host + cat( ':', this.port, '' );
                        },
 
                         * In most real-world URLs, this is simply the hostname, but it is more general.
                         * @return {String}
                         */
-                       getAuthority: function() {
+                       getAuthority: function () {
                                return cat( '', this.getUserInfo(), '@' ) + this.getHostPort();
                        },
 
                         * Does not preserve the order of arguments passed into the URI. Does handle escaping.
                         * @return {String}
                         */
-                       getQueryString: function() {
+                       getQueryString: function () {
                                var args = [];
-                               $.each( this.query, function( key, val ) {
-                                       var k = Uri.encode( key );
-                                       var vals = val === null ? [ null ] : $.makeArray( val );
-                                       $.each( vals, function( i, v ) {
+                               $.each( this.query, function ( key, val ) {
+                                       var k = Uri.encode( key ),
+                                               vals = val === null ? [ null ] : $.makeArray( val );
+                                       $.each( vals, function ( i, v ) {
                                                args.push( k + ( v === null ? '' : '=' + Uri.encode( v ) ) );
                                        } );
                                } );
                         * Returns everything after the authority section of the URI
                         * @return {String}
                         */
-                       getRelativePath: function() {
+                       getRelativePath: function () {
                                return this.path + cat( '?', this.getQueryString(), '', true ) + cat( '#', this.fragment, '' );
                        },
 
                         * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
                         * @return {String} the URI string
                         */
-                       toString: function() {
+                       toString: function () {
                                return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
                        },
 
                         * Clone this URI
                         * @return {Object} new URI object with same properties
                         */
-                       clone: function() {
+                       clone: function () {
                                return new Uri( this );
                        },
 
                         * @param {Object} query parameters in key-val form to override or add
                         * @return {Object} this URI object
                         */
-                       extend: function( parameters ) {
+                       extend: function ( parameters ) {
                                $.extend( this.query, parameters );
                                return this;
                        }
                };
 
-               var defaultUri = new Uri( documentLocation );
+               defaultUri = new Uri( documentLocation );
 
                return Uri;     
        };
                mw.Uri = mw.UriRelative( document.location.href );
        }
 
-} )( jQuery, mediaWiki );
+}( mediaWiki, jQuery ) );
index 66309bb..793cf22 100644 (file)
@@ -626,17 +626,21 @@ var mw = ( function ( $, undefined ) {
 
                        /**
                         * Log a message to window.console, if possible. Useful to force logging of some
-                        * errors that are otherwise hard to detect, even if mw.log is not available. (I.e.,
-                        * this logs also if not in debug mode.)
+                        * errors that are otherwise hard to detect (I.e., this logs also in production mode).
+                        * Gets console references in each invocation, so that delayed debugging tools work
+                        * fine. No need for optimization here, which would only result in losing logs.
                         *
-                        * @param msg String text for the log entry
-                        * @param e   Error [optional] to also log.
+                        * @param msg String text for the log entry.
+                        * @param e Error [optional] to also log.
                         */
                        function log( msg, e ) {
-                               if ( window.console && typeof window.console.log === 'function' ) {
+                               var console = window.console;
+                               if ( console && console.log ) {
                                        console.log( msg );
+                                       // console.error triggers the proper handling of exception objects in
+                                       // consoles that support it. Fallback to passing as plain object to log().
                                        if ( e ) {
-                                               console.log( e );
+                                               (console.error || console.log).call( console, e );
                                        }
                                }
                        }
index 4c20fad..9202d2e 100644 (file)
                        // Get last match, stop at hash
                        var     re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
                                m = re.exec( url );
-                       if ( m && m.length > 1 ) {
+                       if ( m ) {
                                // Beware that decodeURIComponent is not required to understand '+'
                                // by spec, as encodeURIComponent does not produce it.
                                return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
diff --git a/skins/Chick.deps.php b/skins/Chick.deps.php
deleted file mode 100644 (file)
index a7cb084..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Chick.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
index 2362263..54dada3 100644 (file)
@@ -3,6 +3,21 @@
  * Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
  * given at the bottom of the page instead, as in the unstyled MySkin.
  *
+ * 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 Skins
  */
@@ -10,9 +25,6 @@
 if( !defined( 'MEDIAWIKI' ) )
        die( -1 );
 
-/** */
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
 /**
  * Inherit main code from SkinTemplate, set the CSS and template filter.
  * @ingroup Skins
index c5b3b11..214d9bc 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Cologne Blue: A nicer-looking alternative to Standard.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
diff --git a/skins/Modern.deps.php b/skins/Modern.deps.php
deleted file mode 100644 (file)
index e76ab99..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Modern.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php' );
-
index ebd574f..1656524 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Modern skin, derived from monobook template.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
@@ -10,8 +25,6 @@
 if( !defined( 'MEDIAWIKI' ) )
        die( -1 );
 
-require( dirname(__FILE__) . '/MonoBook.php' );
-
 /**
  * Inherit main code from SkinTemplate, set the CSS and template filter.
  * @todo document
diff --git a/skins/MonoBook.deps.php b/skins/MonoBook.deps.php
deleted file mode 100644 (file)
index dda24e0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MonoBook.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-
index 857db0f..8282fb3 100644 (file)
@@ -1,10 +1,25 @@
 <?php
 /**
- * MonoBook nouveau
+ * MonoBook nouveau.
  *
  * Translated from gwicke's previous TAL template version to remove
  * dependency on PHPTAL.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
diff --git a/skins/MySkin.deps.php b/skins/MySkin.deps.php
deleted file mode 100644 (file)
index b589cc5..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MySkin.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
index 8859a71..fb49b88 100644 (file)
@@ -1,7 +1,22 @@
 <?php
 /**
  * MySkin: Monobook without the CSS. The idea is that you
- * customise it using user or site CSS
+ * customise it using user or site CSS.
+ *
+ * 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 Skins
index 21d3578..98437e2 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
  *
+ * 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 Skins
  */
diff --git a/skins/Simple.deps.php b/skins/Simple.deps.php
deleted file mode 100644 (file)
index 99fadc6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Simple.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
index 0e1668b..d06bdfd 100644 (file)
@@ -3,6 +3,21 @@
  * Simple: A lightweight skin with a simple white-background sidebar and no
  * top bar.
  *
+ * 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 Skins
  */
diff --git a/skins/Vector.deps.php b/skins/Vector.deps.php
deleted file mode 100644 (file)
index 7a8c288..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MonoBook.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
-       die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
index 04413b5..6ac3f08 100644 (file)
@@ -3,6 +3,21 @@
  * Vector - Modern version of MonoBook with fresh look and many usability
  * improvements.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
index 2ea4924..3125284 100644 (file)
@@ -28,6 +28,7 @@ $wgAutoloadClasses += array(
 
        //maintenance
        'DumpTestCase' => "$testFolder/phpunit/maintenance/DumpTestCase.php",
+       'BackupDumper' => "$testFolder/../maintenance/backup.inc",
 
        //Generic providers
        'MediaWikiProvide' => "$testFolder/phpunit/includes/Providers.php",
index 3a8a778..651858c 100644 (file)
@@ -134,6 +134,285 @@ Italics and bold
 
 !! end
 
+###
+### 2-quote opening sequence tests
+###
+!! test
+Italics and bold: 2-quote opening sequence: (2,2)
+!! input
+''foo''
+!! result
+<p><i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,3)
+!! input
+''foo'''
+!! result
+<p><i>foo'</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,4)
+!! input
+''foo''''
+!! result
+<p><i>foo''</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 2-quote opening sequence: (2,5)
+!! input
+''foo'''''
+!! result
+<p><i>foo</i>
+</p>
+!!end
+
+
+###
+### 3-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,2)
+!! input
+'''foo''
+!! result
+<p>'<i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,3)
+!! input
+'''foo'''
+!! result
+<p><b>foo</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,4)
+!! input
+'''foo''''
+!! result
+<p><b>foo'</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 3-quote opening sequence: (3,5)
+!! input
+'''foo'''''
+!! result
+<p><b>foo</b>
+</p>
+!!end
+
+
+###
+### 4-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,2)
+!! input
+''''foo''
+!! result
+<p>''<i>foo</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,3)
+!! input
+''''foo'''
+!! result
+<p>'<b>foo</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,4)
+!! input
+''''foo''''
+!! result
+<p>'<b>foo'</b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 4-quote opening sequence: (4,5)
+!! input
+''''foo'''''
+!! result
+<p>'<b>foo</b>
+</p>
+!!end
+
+
+###
+### 5-quote opening sequence tests
+###
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,2)
+!! input
+'''''foo''
+!! result
+<p><b><i>foo</i></b>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,3)
+!! input
+'''''foo'''
+!! result
+<p><i><b>foo</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,4)
+!! input
+'''''foo''''
+!! result
+<p><i><b>foo'</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: 5-quote opening sequence: (5,5)
+!! input
+'''''foo'''''
+!! result
+<p><i><b>foo</b></i>
+</p>
+!!end
+
+###
+### multiple quote sequences in a line
+###
+!! test
+Italics and bold: multiple quote sequences: (2,4,2)
+!! input
+''foo''''bar''
+!! result
+<p><i>foo'<b>bar</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (2,4,3)
+!! input
+''foo''''bar'''
+!! result
+<p><i>foo'<b>bar</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (2,4,4)
+!! input
+''foo''''bar''''
+!! result
+<p><i>foo'<b>bar'</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (3,4,2)
+!! input
+'''foo''''bar''
+!! result
+<p><b>foo'</b>bar
+</p>
+!!end
+
+
+!! test
+Italics and bold: multiple quote sequences: (3,4,3)
+!! input
+'''foo''''bar'''
+!! result
+<p><b>foo'</b>bar
+</p>
+!!end
+
+###
+### other quote tests
+###
+!! test
+Italics and bold: other quote tests: (2,3,5)
+!! input
+''this is about '''foo's family'''''
+!! result
+<p><i>this is about <b>foo's family</b></i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (2,(3,3),2)
+!! input
+''this is about '''foo's''' family''
+!! result
+<p><i>this is about <b>foo's</b> family</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (3,2,3,2)
+!! input
+'''this is about ''foo'''s family''
+!! result
+<p><b>this is about <i>foo</i></b><i>s family</i>
+</p>
+!!end
+
+
+!! test
+Italics and bold: other quote tests: (3,2,3,3)
+!! input
+'''this is about ''foo'''s family'''
+!! result
+<p>'<i>this is about </i>foo<b>s family</b>
+</p>
+!!end
+
+
+
+!! test
+Italics and bold: other quote tests: (3,(2,2),3)
+!! input
+'''this is about ''foo's'' family'''
+!! result
+<p><b>this is about <i>foo's</i> family</b>
+</p>
+!!end
+
 ###
 ### <nowiki> test cases
 ###
@@ -455,192 +734,574 @@ Bug 6200: Preformatted in <blockquote>
 !! end
 
 !! test
-<nowiki> and <pre> preference (first one wins)
+<nowiki> and <pre> preference (first one wins)
+!! input
+<pre>
+<nowiki>
+</pre>
+</nowiki>
+</pre>
+
+<nowiki>
+<pre>
+<nowiki>
+</pre>
+</nowiki>
+</pre>
+
+!! result
+<pre>
+&lt;nowiki&gt;
+</pre>
+<p>&lt;/nowiki&gt;
+&lt;/pre&gt;
+</p><p>
+&lt;pre&gt;
+&lt;nowiki&gt;
+&lt;/pre&gt;
+
+&lt;/pre&gt;
+</p>
+!! end
+
+
+###
+### Definition lists
+###
+!! test
+Simple definition
+!! input
+; name : Definition
+!! result
+<dl><dt> name&#160;</dt><dd> Definition
+</dd></dl>
+
+!! end
+
+!! test
+Definition list for indentation only
+!! input
+: Indented text
+!! result
+<dl><dd> Indented text
+</dd></dl>
+
+!! end
+
+!! test
+Definition list with no space
+!! input
+;name:Definition
+!! result
+<dl><dt>name</dt><dd>Definition
+</dd></dl>
+
+!!end
+
+!! test
+Definition list with URL link
+!! input
+; http://example.com/ : definition
+!! result
+<dl><dt> <a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&#160;</dt><dd> definition
+</dd></dl>
+
+!! end
+
+!! test
+Definition list with bracketed URL link
+!! input
+;[http://www.example.com/ Example]:Something about it
+!! result
+<dl><dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt><dd>Something about it
+</dd></dl>
+
+!! end
+
+!! test
+Definition list with wikilink containing colon
+!! input
+; [[Help:FAQ]]: The least-read page on Wikipedia
+!! result
+<dl><dt> <a href="/index.php?title=Help:FAQ&amp;action=edit&amp;redlink=1" class="new" title="Help:FAQ (page does not exist)">Help:FAQ</a></dt><dd> The least-read page on Wikipedia
+</dd></dl>
+
+!! end
+
+# At Brion's and JeLuF's insistence... :)
+!! test
+Definition list with news link containing colon
+!! input
+;  news:alt.wikipedia.rox: This isn't even a real newsgroup!
+!! result
+<dl><dt>  <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
+</dd></dl>
+
+!! end
+
+!! test
+Malformed definition list with colon
+!! input
+;  news:alt.wikipedia.rox -- don't crash or enter an infinite loop
+!! result
+<dl><dt>  <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
+</dt></dl>
+
+!! end
+
+!! test
+Definition lists: colon in external link text
+!! input
+; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
+!! result
+<dl><dt> <a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia&#160;: The Next Generation</a></dt><dd> OK, I made that up
+</dd></dl>
+
+!! end
+
+!! test
+Definition lists: colon in HTML attribute
+!! input
+;<b style="display: inline">bold</b>
+!! result
+<dl><dt><b style="display: inline">bold</b>
+</dt></dl>
+
+!! end
+
+
+!! test
+Definition lists: self-closed tag
+!! input
+;one<br/>two : two-line fun
+!! result
+<dl><dt>one<br />two&#160;</dt><dd> two-line fun
+</dd></dl>
+
+!! end
+
+!! test
+Bug 11748: Literal closing tags
+!! options
+disabled
+!! input
+<dl>
+<dt>test 1</dt>
+<dd>test test test test test</dd>
+<dt>test 2</dt>
+<dd>test test test test test</dd>
+</dl>
+!! result
+<dl>
+<dt>test 1</dt>
+<dd>test test test test test</dd>
+<dt>test 2</dt>
+<dd>test test test test test</dd>
+</dl>
+!! end
+
+!! test
+Definition and unordered list using wiki syntax nested in unordered list using html tags.
+!! input
+<ul><li>
+; term : description 
+* unordered
+</li>
+</ul>
+!! result
+<ul><li>
+<dl><dt> term&#160;</dt><dd> description 
+</dd></dl>
+<ul><li> unordered
+</li></ul>
+</li>
+</ul>
+
+!! end
+
+!! test
+Definition list with empty definition and following paragraph
+!! input
+; term:
+Paragraph text
+!! result
+<dl><dt> term</dt><dd>
+</dd></dl>
+<p>Paragraph text
+</p>
+!! end
+
+!! test
+Definition Lists: No nesting: Multiple dd's
+!! input
+;x
+:a
+:b
+!! result
+<dl><dt>x
+</dt><dd>a
+</dd><dd>b
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Regular
+!! input
+:i1
+::i2
+:::i3
+!! result
+<dl><dd>i1
+<dl><dd>i2
+<dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Missing 1st level
+!! input
+::i2
+:::i3
+!! result
+<dl><dd><dl><dd>i2
+<dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+!! test
+Definition Lists: Indentation: Multi-level indent
+!! input
+:::i3
+!! result
+<dl><dd><dl><dd><dl><dd>i3
+</dd></dl>
+</dd></dl>
+</dd></dl>
+
+!! end
+
+## The PHP parser treats : items (dd) without a corresponding ; item (dt)
+## as an empty dt item.  It also ignores all but the last ";" when followed
+## by ":" later on.  So, ";" are not ignored in ";;;t3" but are ignored  in
+## ";;;t3 :d1".  So, PHP parser behavior is a little inconsistent wrt multiple
+## ";"s.
+##
+## Ex: ";;t2 ::d2" is transformed into:
+##
+## <dl>
+##   <dt>t2 </dt>
+##   <dd>
+##     <dl>
+##       <dt></dt>
+##       <dd>d2</dd>
+##     </dl>
+##   </dd>
+## </dl>
+##
+## But, Parsoid treats "; :" as a tight atomic unit and excess ":" as plain text
+## So, the same wikitext above (;;t2 ::d2) is transformed into:
+##
+## <dl>
+##   <dt>
+##     <dl>
+##       <dt>t2 </dt>
+##       <dd>:d2</dd>
+##     </dl>
+##    </dt>
+## </dl>
+##
+## All Parsoid only definition list tests have this difference.
+##
+## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569 
+## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
+
+!! test
+Definition Lists: Nesting: Multi-level (Parsoid only)
+!! options
+disabled
+!! input
+;t1 :d1
+;;t2 ::d2
+;;;t3 :::d3
+!! result
+<dl>
+  <dt>t1 </dt>
+  <dd>d1</dd>
+  <dt>
+    <dl>
+      <dt>t2 </dt>
+      <dd>:d2</dd>
+      <dt>
+        <dl>
+          <dt>t3 </dt>
+          <dd>::d3</dd>
+        </dl>
+      </dt>
+    </dl>
+  </dt>
+</dl>
+
+
+!! end
+
+
+!! test
+Definition Lists: Nesting: Test 2 (Parsoid only)
+!! options
+disabled
+!! input
+;t1
+::d2
+!! result
+<dl>
+  <dt>t1</dt>
+  <dd>
+    <dl>
+      <dd>d2</dd>
+    </dl>
+  </dd>
+</dl>
+
+!! end
+
+
+!! test
+Definition Lists: Nesting: Test 3 (Parsoid only)
+!! options
+disabled
 !! input
-<pre>
-<nowiki>
-</pre>
-</nowiki>
-</pre>
-
-<nowiki>
-<pre>
-<nowiki>
-</pre>
-</nowiki>
-</pre>
-
+:;t1
+::::d2
 !! result
-<pre>
-&lt;nowiki&gt;
-</pre>
-<p>&lt;/nowiki&gt;
-&lt;/pre&gt;
-</p><p>
-&lt;pre&gt;
-&lt;nowiki&gt;
-&lt;/pre&gt;
+<dl>
+  <dd>
+    <dl>
+      <dt>t1</dt>
+      <dd>
+        <dl>
+          <dd>
+            <dl>
+              <dd>d2</dd>
+            </dl>
+          </dd>
+        </dl>
+      </dd>
+    </dl>
+  </dd>
+</dl>
 
-&lt;/pre&gt;
-</p>
 !! end
 
 
-###
-### Definition lists
-###
 !! test
-Simple definition
+Definition Lists: Nesting: Test 4
 !! input
-; name : Definition
+::;t3
+:::d3
 !! result
-<dl><dt> name&#160;</dt><dd> Definition
+<dl><dd><dl><dd><dl><dt>t3
+</dt><dd>d3
+</dd></dl>
+</dd></dl>
 </dd></dl>
 
 !! end
 
+
 !! test
-Definition list for indentation only
+Definition Lists: Mixed Lists: Test 1
 !! input
-: Indented text
+:;* foo
+::* bar
+:; baz
 !! result
-<dl><dd> Indented text
+<dl><dd><dl><dt><ul><li> foo
+</li><li> bar
+</li></ul>
+</dt></dl>
+<dl><dt> baz
+</dt></dl>
 </dd></dl>
 
 !! end
 
+
 !! test
-Definition list with no space
+Definition Lists: Mixed Lists: Test 2
 !! input
-;name:Definition
+*: d1
+*: d2
 !! result
-<dl><dt>name</dt><dd>Definition
+<ul><li><dl><dd> d1
+</dd><dd> d2
 </dd></dl>
+</li></ul>
+
+!! end
 
-!!end
 
 !! test
-Definition list with URL link
+Definition Lists: Mixed Lists: Test 3
 !! input
-; http://example.com/ : definition
+*::: d1
+*::: d2
 !! result
-<dl><dt> <a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&#160;</dt><dd> definition
+<ul><li><dl><dd><dl><dd><dl><dd> d1
+</dd><dd> d2
 </dd></dl>
+</dd></dl>
+</dd></dl>
+</li></ul>
 
 !! end
 
+
 !! test
-Definition list with bracketed URL link
+Definition Lists: Mixed Lists: Test 4
 !! input
-;[http://www.example.com/ Example]:Something about it
+*;d1 :d2
+*;d3 :d4
 !! result
-<dl><dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt><dd>Something about it
+<ul><li><dl><dt>d1&#160;</dt><dd>d2
+</dd><dt>d3&#160;</dt><dd>d4
 </dd></dl>
+</li></ul>
 
 !! end
 
+
 !! test
-Definition list with wikilink containing colon
+Definition Lists: Mixed Lists: Test 5
 !! input
-; [[Help:FAQ]]: The least-read page on Wikipedia
+*:d1
+*:: d2
 !! result
-<dl><dt> <a href="/index.php?title=Help:FAQ&amp;action=edit&amp;redlink=1" class="new" title="Help:FAQ (page does not exist)">Help:FAQ</a></dt><dd> The least-read page on Wikipedia
+<ul><li><dl><dd>d1
+<dl><dd> d2
 </dd></dl>
+</dd></dl>
+</li></ul>
 
 !! end
 
-# At Brion's and JeLuF's insistence... :)
+
 !! test
-Definition list with news link containing colon
+Definition Lists: Mixed Lists: Test 6
 !! input
-;  news:alt.wikipedia.rox: This isn't even a real newsgroup!
+#*:d1
+#*::: d3
 !! result
-<dl><dt>  <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
+<ol><li><ul><li><dl><dd>d1
+<dl><dd><dl><dd> d3
+</dd></dl>
 </dd></dl>
+</dd></dl>
+</li></ul>
+</li></ol>
 
 !! end
 
+
 !! test
-Malformed definition list with colon
+Definition Lists: Mixed Lists: Test 7
 !! input
-;  news:alt.wikipedia.rox -- don't crash or enter an infinite loop
+:* d1
+:* d2
 !! result
-<dl><dt>  <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
-</dt></dl>
+<dl><dd><ul><li> d1
+</li><li> d2
+</li></ul>
+</dd></dl>
 
 !! end
 
+
 !! test
-Definition lists: colon in external link text
+Definition Lists: Mixed Lists: Test 8
 !! input
-; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
+:* d1
+::* d2
 !! result
-<dl><dt> <a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia&#160;: The Next Generation</a></dt><dd> OK, I made that up
+<dl><dd><ul><li> d1
+</li></ul>
+<dl><dd><ul><li> d2
+</li></ul>
+</dd></dl>
 </dd></dl>
 
 !! end
 
+
 !! test
-Definition lists: colon in HTML attribute
+Definition Lists: Mixed Lists: Test 9
 !! input
-;<b style="display: inline">bold</b>
+*;foo :bar
 !! result
-<dl><dt><b style="display: inline">bold</b>
-</dt></dl>
+<ul><li><dl><dt>foo&#160;</dt><dd>bar
+</dd></dl>
+</li></ul>
 
 !! end
 
 
 !! test
-Definition lists: self-closed tag
+Definition Lists: Mixed Lists: Test 10
 !! input
-;one<br/>two : two-line fun
+*#;foo :bar
 !! result
-<dl><dt>one<br />two&#160;</dt><dd> two-line fun
+<ul><li><ol><li><dl><dt>foo&#160;</dt><dd>bar
 </dd></dl>
+</li></ol>
+</li></ul>
 
 !! end
 
+
 !! test
-Bug 11748: Literal closing tags
-!! options
-disabled
+Definition Lists: Mixed Lists: Test 11
 !! input
-<dl>
-<dt>test 1</dt>
-<dd>test test test test test</dd>
-<dt>test 2</dt>
-<dd>test test test test test</dd>
-</dl>
+*#*#;*;;foo :bar
+*#*#;boo :baz
 !! result
-<dl>
-<dt>test 1</dt>
-<dd>test test test test test</dd>
-<dt>test 2</dt>
-<dd>test test test test test</dd>
-</dl>
+<ul><li><ol><li><ul><li><ol><li><dl><dt>foo&#160;</dt><dd><ul><li><dl><dt><dl><dt>bar
+</dt></dl>
+</dd></dl>
+</li></ul>
+</dd></dl>
+<dl><dt>boo&#160;</dt><dd>baz
+</dd></dl>
+</li></ol>
+</li></ul>
+</li></ol>
+</li></ul>
+
 !! end
 
+
 !! test
-Definition and unordered list using wiki syntax nested in unordered list using html tags.
+Definition Lists: Weird Ones: Test 1
 !! input
-<ul><li>
-; term : description 
-* unordered
-</li>
-</ul>
+*#;*::;; foo : bar (who uses this?)
 !! result
-<ul><li>
-<dl><dt> term&#160;</dt><dd> description 
+<ul><li><ol><li><dl><dt> foo&#160;</dt><dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)
+</dt></dl>
+</dd></dl>
+</dd></dl>
 </dd></dl>
-<ul><li> unordered
 </li></ul>
-</li>
-</ul>
+</dd></dl>
+</li></ol>
+</li></ul>
 
 !! end
 
-
 ###
 ### External links
 ###
@@ -1258,6 +1919,8 @@ Normal text.
 '''This year''''s election ''should'' beat '''last year''''s.
 
 ''Tom'''s car is bigger than ''Susan'''s.
+
+Plain ''italic'''s plain
 !! result
 <p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
 </p><p><b><i>Bold italic text </i>with italic deactivated<i> in between.</i></b>
@@ -1268,6 +1931,7 @@ Normal text.
 </p><p>Normal text.
 </p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
 </p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
+</p><p>Plain <i>italic'</i>s plain
 </p>
 !! end
 
@@ -2113,6 +2777,8 @@ Mixed list
 **#Number on level 3
 *#number level 2
 *Level 1
+*** Level 3
+#** Level 3, but ordered
 !! result
 <ul><li>Mixed list
 <ol><li> with numbers
@@ -2135,10 +2801,126 @@ Mixed list
 <ol><li>number level 2
 </li></ol>
 </li><li>Level 1
+<ul><li><ul><li> Level 3
+</li></ul>
+</li></ul>
+</li></ul>
+<ol><li><ul><li><ul><li> Level 3, but ordered
+</li></ul>
+</li></ul>
+</li></ol>
+
+!! end
+
+!! test
+Nested lists 1
+!! input
+*foo
+**bar
+!! result
+<ul><li>foo
+<ul><li>bar
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 2
+!! input
+**foo
+*bar
+!! result
+<ul><li><ul><li>foo
+</li></ul>
+</li><li>bar
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 3 (first element empty)
+!! input
+*
+**bar
+!! result
+<ul><li>
+<ul><li>bar
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 4 (first element empty)
+!! input
+**
+*bar
+!! result
+<ul><li><ul><li>
+</li></ul>
+</li><li>bar
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 5 (both elements empty)
+!! input
+**
+*
+!! result
+<ul><li><ul><li>
+</li></ul>
+</li><li>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 6 (both elements empty)
+!! input
+*
+**
+!! result
+<ul><li>
+<ul><li>
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 7 (skip initial nesting levels)
+!! input
+*** foo
+!! result
+<ul><li><ul><li><ul><li> foo
+</li></ul>
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 8 (multiple nesting transitions)
+!! input
+* foo
+*** bar
+** baz
+* boo
+!! result
+<ul><li> foo
+<ul><li><ul><li> bar
+</li></ul>
+</li><li> baz
+</li></ul>
+</li><li> boo
 </li></ul>
 
 !! end
 
+
 !! test
 List items are not parsed correctly following a <pre> block (bug 785)
 !! input
@@ -2183,6 +2965,27 @@ List items from template
 
 !! end
 
+!! test
+List interrupted by empty line or heading
+!! input
+* foo
+
+** bar
+== A heading ==
+* Another list item
+!! result
+<ul><li> foo
+</li></ul>
+<ul><li><ul><li> bar
+</li></ul>
+</li></ul>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: A heading">edit</a>]</span> <span class="mw-headline" id="A_heading"> A heading </span></h2>
+<ul><li> Another list item
+</li></ul>
+
+!!end
+
+
 ###
 ### Magic Words
 ###
@@ -3514,15 +4317,15 @@ pst
 [[Bar:Article(context)|]]
 [[:Bar:Article(context)|]]
 [[|Article(context)]]
-[[Bar:X (Y) Z|]]
-[[:Bar:X (Y) Z|]]
+[[Bar:X(Y)Z|]]
+[[:Bar:X(Y)Z|]]
 !! result
 [[Article(context)|Article]]
 [[Bar:Article(context)|Article]]
 [[:Bar:Article(context)|Article]]
 [[Article(context)]]
-[[Bar:X (Y) Z|X (Y) Z]]
-[[:Bar:X (Y) Z|X (Y) Z]]
+[[Bar:X(Y)Z|X(Y)Z]]
+[[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
 !! test
@@ -3565,6 +4368,26 @@ pst
 [[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
+!! test
+pre-save transform: context links ("pipe trick") with commas (bug 21660)
+!! options
+pst
+!! input
+[[Article (context), context|]]
+[[Article (context),context|]]
+[[Bar:Article (context), context|]]
+[[Bar:Article (context),context|]]
+[[:Bar:Article (context), context|]]
+[[:Bar:Article (context),context|]]
+!! result
+[[Article (context), context|Article]]
+[[Article (context),context|Article]]
+[[Bar:Article (context), context|Article]]
+[[Bar:Article (context),context|Article]]
+[[:Bar:Article (context), context|Article]]
+[[:Bar:Article (context),context|Article]]
+!! end
+
 !! test
 pre-save transform: trim trailing empty lines
 !! options
@@ -9350,6 +10173,18 @@ Language parser function
 </p>
 !! end
 
+!!test
+Padleft and padright as substr
+!! input
+{{padleft:|3|abcde}}
+{{padright:|3|abcde}}
+!! result
+<p>abc
+abc
+</p>
+!! end
+
+
 TODO:
 more images
 more tables
index 8c6a411..3729796 100644 (file)
@@ -366,7 +366,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
 
                $db = wfGetDB( DB_SLAVE );
 
-               $res = $db->select( $table, $fields, $condition, array( 'ORDER BY' => $fields ) );
+               $res = $db->select( $table, $fields, $condition, wfGetCaller(), array( 'ORDER BY' => $fields ) );
                $this->assertNotEmpty( $res, "query failed: " . $db->lastError() );
 
                $i = 0;
diff --git a/tests/phpunit/includes/DeviceDetectionTest.php b/tests/phpunit/includes/DeviceDetectionTest.php
deleted file mode 100644 (file)
index 0e15653..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * @group Mobile
- */
- class DeviceDetectionTest extends MediaWikiTestCase {
-
-       /**
-        * @dataProvider provideTestFormatName
-        */
-       public function testFormatName( $format, $userAgent ) {
-               $detector = new DeviceDetection();
-               $this->assertEquals( $format, $detector->detectFormatName( $userAgent ) );
-       }
-
-       public function provideTestFormatName() {
-               return array(
-                       array( 'android',   'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' ),
-                       array( 'iphone2',   'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
-                       array( 'iphone',    'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
-                       array( 'nokia',     'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413' ),
-                       array( 'palm_pre',  'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0' ),
-                       array( 'wii',       'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)' ),
-                       array( 'operamini', 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)' ),
-                       array( 'operamobile',    'Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)' ),
-                       array( 'kindle',    'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)' ),
-                       array( 'kindle2',   'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)' ),
-                       array( 'capable',   'Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' ),
-                       array( 'netfront',  'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2' ),
-                       array( 'wap2',      'SonyEricssonK608i/R2L/SN356841000828910 Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-                       array( 'wap2',      'NokiaN73-2/3.0-630.0.2 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-                       array( 'psp',       'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)' ),
-                       array( 'ps3',       'Mozilla/5.0 (PLAYSTATION 3; 1.00)' ),
-                       array( 'ie', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' ),
-                       array( 'ie', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)' ),
-                       array( 'blackberry', 'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133' ),
-                       array( 'blackberry-lt5', 'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-               );
-       }
-}
diff --git a/tests/phpunit/includes/GlobalFunctions/wfGetCallerTest.php b/tests/phpunit/includes/GlobalFunctions/wfGetCallerTest.php
new file mode 100644 (file)
index 0000000..4c4c4c0
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+class wfGetCaller extends MediaWikiTestCase {
+
+       function testZero() {
+               $this->assertEquals( __METHOD__, wfGetCaller( 1 ) );
+       }
+
+       function callerOne() {
+               return wfGetCaller();
+       }
+
+       function testOne() {
+               $this->assertEquals( "wfGetCaller::testOne", self::callerOne() );
+       }
+
+       function intermediateFunction( $level = 2, $n = 0 ) {
+               if ( $n > 0 )
+                       return self::intermediateFunction( $level, $n - 1 );
+               return wfGetCaller( $level );
+       }
+
+       function testTwo() {
+               $this->assertEquals( "wfGetCaller::testTwo", self::intermediateFunction() );
+       }
+
+       function testN() {
+               $this->assertEquals( "wfGetCaller::testN", self::intermediateFunction( 2, 0 ) );
+               $this->assertEquals( "wfGetCaller::intermediateFunction", self::intermediateFunction( 1, 0 ) );
+
+               for ($i=0; $i < 10; $i++)
+                       $this->assertEquals( "wfGetCaller::intermediateFunction", self::intermediateFunction( $i + 1, $i ) );
+       }
+}
+
index 77a371d..59ba0a0 100644 (file)
@@ -47,7 +47,7 @@ class TestSample extends MediaWikiLangTestCase {
                        array( 'Text', null, 'Text' ),
                        array( 'text', null, 'Text' ),
                        array( 'Text', NS_USER, 'User:Text' ),
-                       array( 'Photo.jpg', NS_IMAGE, 'File:Photo.jpg' )
+                       array( 'Photo.jpg', NS_FILE, 'File:Photo.jpg' )
                );
        }
 
index e72408f..1fc0b4b 100644 (file)
@@ -1,14 +1,22 @@
 <?php
 
 class WebRequestTest extends MediaWikiTestCase {
+       static $oldServer;
+
+       function setUp() {
+               self::$oldServer = $_SERVER;
+       }
+
+       function tearDown() {
+               $_SERVER = self::$oldServer;
+       }
+
        /**
         * @dataProvider provideDetectServer
         */
        function testDetectServer( $expected, $input, $description ) {
-               $oldServer = $_SERVER;
                $_SERVER = $input;
                $result = WebRequest::detectServer();
-               $_SERVER = $oldServer;
                $this->assertEquals( $expected, $result, $description );
        }
 
@@ -91,13 +99,11 @@ class WebRequestTest extends MediaWikiTestCase {
         */
        function testGetIP( $expected, $input, $squid, $private, $description ) {
                global $wgSquidServersNoPurge, $wgUsePrivateIPs;
-               $oldServer = $_SERVER;
                $_SERVER = $input;
                $wgSquidServersNoPurge = $squid;
                $wgUsePrivateIPs = $private;
                $request = new WebRequest();
                $result = $request->getIP();
-               $_SERVER = $oldServer;
                $this->assertEquals( $expected, $result, $description );
        }
 
@@ -182,4 +188,29 @@ class WebRequestTest extends MediaWikiTestCase {
                # Next call throw an exception about lacking an IP
                $request->getIP();
        }
+
+       function languageProvider() {
+               return array(
+                       array( '', array(), 'Empty Accept-Language header' ),
+                       array( 'en', array( 'en' => 1 ), 'One language' ),
+                       array( 'en, ar', array( 'en' => 1, 'ar' => 1 ), 'Two languages listed in appearance order.' ),
+                       array( 'zh-cn,zh-tw', array( 'zh-cn' => 1, 'zh-tw' => 1 ), 'Two equally prefered languages, listed in appearance order per rfc3282. Checks c9119' ),
+                       array( 'es, en; q=0.5', array( 'es' => 1, 'en' => '0.5' ), 'Spanish as first language and English and second' ),
+                       array( 'en; q=0.5, es', array( 'es' => 1, 'en' => '0.5' ), 'Less prefered language first' ),
+                       array( 'fr, en; q=0.5, es', array( 'fr' => 1, 'es' => 1, 'en' => '0.5' ), 'Three languages' ),
+                       array( 'en; q=0.5, es', array( 'es' => 1, 'en' => '0.5' ), 'Two languages' ),
+                       array( 'en, zh;q=0', array( 'en' => 1 ), "It's Chinese to me" ),
+                       array( 'es; q=1, pt;q=0.7, it; q=0.6, de; q=0.1, ru;q=0', array( 'es' => '1', 'pt' => '0.7', 'it' => '0.6', 'de' => '0.1' ), 'Preference for romance languages' ),
+                       array( 'en-gb, en-us; q=1', array( 'en-gb' => 1, 'en-us' => '1' ), 'Two equally prefered English variants' ),
+               );
+       }
+
+       /**
+        * @dataProvider languageProvider
+        */
+       function testAcceptLang($acceptLanguageHeader, $expectedLanguages, $description) {
+               $_SERVER = array( 'HTTP_ACCEPT_LANGUAGE' => $acceptLanguageHeader );
+               $request = new WebRequest();
+               $this->assertSame( $request->getAcceptLang(), $expectedLanguages, $description);
+       }
 }
index 65abdab..b72a5cd 100644 (file)
@@ -4,7 +4,7 @@
 * ^--- important, causes temporary tables to be used instead of the real database
 **/
 
-class WikiPageTest extends MediaWikiTestCase {
+class WikiPageTest extends MediaWikiLangTestCase {
 
        var $pages_to_delete;
 
@@ -30,6 +30,7 @@ class WikiPageTest extends MediaWikiTestCase {
        }
 
        public function setUp() {
+               parent::setUp();
                $this->pages_to_delete = array();
        }
 
@@ -45,6 +46,7 @@ class WikiPageTest extends MediaWikiTestCase {
                                // fail silently
                        }
                }
+               parent::tearDown();
        }
 
        protected function newPage( $title ) {
@@ -767,6 +769,7 @@ more stuff
         * @dataProvider dataPreSaveTransform
         */
        public function testPreSaveTransform( $text, $expected ) {
+               $this->hideDeprecated( 'WikiPage::preSaveTransform' );
                $user = new User();
                $user->setName("127.0.0.1");
 
index 1f40b5a..5dfceee 100644 (file)
@@ -56,7 +56,7 @@ class ApiBlockTest extends ApiTestCase {
                        'action' => 'block',
                        'user' => 'UTApiBlockee',
                        'reason' => 'Some reason',
-                       'token' => $pageinfo['blocktoken'] ), $data, false, self::$users['sysop']->user );
+                       'token' => $pageinfo['blocktoken'] ), null, false, self::$users['sysop']->user );
 
                $block = Block::newFromTarget('UTApiBlockee');
 
index 8801391..f81bb6d 100644 (file)
@@ -43,15 +43,31 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
 
        }
 
-       protected function doApiRequest( $params, $session = null, $appendModule = false, $user = null ) {
+       protected function doApiRequest( Array $params, Array $session = null, $appendModule = false, User $user = null ) {
+               global $wgRequest, $wgUser;
+
                if ( is_null( $session ) ) {
-                       $session = array();
+                       # re-use existing global session by default
+                       $session = $wgRequest->getSessionArray();
+               }
+
+               # set up global environment
+               if ( $user ) {
+                       $wgUser = $user;
                }
 
-               $context = $this->apiContext->newTestContext( $params, $session, $user );
+               $wgRequest = new FauxRequest( $params, true, $session );
+               RequestContext::getMain()->setRequest( $wgRequest );
+
+               # set up local environment
+               $context = $this->apiContext->newTestContext( $wgRequest, $wgUser );
+
                $module = new ApiMain( $context, true );
+
+               # run it!
                $module->execute();
 
+               # construct result
                $results = array(
                        $module->getResultData(),
                        $context->getRequest(),
@@ -68,11 +84,11 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         * Add an edit token to the API request
         * This is cheating a bit -- we grab a token in the correct format and then add it to the pseudo-session and to the
         * request, without actually requesting a "real" edit token
-        * @param $params: key-value API params
-        * @param $session: session array
-        * @param $user String|null A User object for the context 
+        * @param $params Array: key-value API params
+        * @param $session Array: session array
+        * @param $user User|null A User object for the context
         */
-       protected function doApiRequestWithToken( $params, $session, $user = null ) {
+       protected function doApiRequestWithToken( Array $params, Array $session, User $user = null ) {
                if ( $session['wsToken'] ) {
                        // add edit token to fake session
                        $session['wsEditToken'] = $session['wsToken'];
@@ -97,17 +113,17 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
                        'lgtoken' => $token,
                        'lgname' => self::$users['sysop']->username,
                        'lgpassword' => self::$users['sysop']->password
-                       ), $data );
+                       ), $data[2] );
 
                return $data;
        }
 
-       protected function getTokenList( $user ) {
+       protected function getTokenList( $user, $session = null ) {
                $data = $this->doApiRequest( array(
                        'action' => 'query',
                        'titles' => 'Main Page',
                        'intoken' => 'edit|delete|protect|move|block|unblock',
-                       'prop' => 'info' ), false, $user->user );
+                       'prop' => 'info' ), $session, false, $user->user );
                return $data;
        }
 }
@@ -154,14 +170,13 @@ class ApiTestContext extends RequestContext {
        /**
         * Returns a DerivativeContext with the request variables in place
         *
-        * @param $params Array key-value API params
-        * @param $session Array session data
+        * @param $request WebRequest request object including parameters and session
         * @param $user User or null
         * @return DerivativeContext
         */
-       public function newTestContext( $params, $session, $user = null ) {
+       public function newTestContext( WebRequest $request, User $user = null ) {
                $context = new DerivativeContext( $this );
-               $context->setRequest( new FauxRequest( $params, true, $session ) );
+               $context->setRequest( $request );
                if ( $user !== null ) {
                        $context->setUser( $user );
                }
diff --git a/tests/phpunit/includes/db/ORMRowTest.php b/tests/phpunit/includes/db/ORMRowTest.php
new file mode 100644 (file)
index 0000000..9dcaf2b
--- /dev/null
@@ -0,0 +1,234 @@
+<?php
+
+/**
+ * Abstract class to construct tests for ORMRow deriving classes.
+ *
+ * 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
+ * @since 1.20
+ *
+ * @ingroup Test
+ *
+ * @group ORM
+ *
+ * The database group has as a side effect that temporal database tables are created. This makes
+ * it possible to test without poisoning a production database.
+ * @group Database
+ *
+ * Some of the tests takes more time, and needs therefor longer time before they can be aborted
+ * as non-functional. The reason why tests are aborted is assumed to be set up of temporal databases
+ * that hold the first tests in a pending state awaiting access to the database.
+ * @group medium
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+abstract class ORMRowTest extends \MediaWikiTestCase {
+
+       /**
+        * @since 1.20
+        * @return string
+        */
+       protected abstract function getRowClass();
+
+       /**
+        * @since 1.20
+        * @return IORMTable
+        */
+       protected abstract function getTableInstance();
+
+       /**
+        * @since 1.20
+        * @return array
+        */
+       public abstract function constructorTestProvider();
+
+       /**
+        * @since 1.20
+        * @param IORMRow $row
+        * @param array $data
+        */
+       protected function verifyFields( IORMRow $row, array $data ) {
+               foreach ( array_keys( $data ) as $fieldName ) {
+                       $this->assertEquals( $data[$fieldName], $row->getField( $fieldName ) );
+               }
+       }
+
+       /**
+        * @since 1.20
+        * @param array $data
+        * @param boolean $loadDefaults
+        * @return IORMRow
+        */
+       protected function getRowInstance( array $data, $loadDefaults ) {
+               $class = $this->getRowClass();
+               return new $class( $this->getTableInstance(), $data, $loadDefaults );
+       }
+
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockValues() {
+               return array(
+                       'id' => 1,
+                       'str' => 'foobar4645645',
+                       'int' => 42,
+                       'float' => 4.2,
+                       'bool' => true,
+                       'array' => array( 42, 'foobar' ),
+                       'blob' => new stdClass()
+               );
+       }
+
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockFields() {
+               $mockValues = $this->getMockValues();
+               $mockFields = array();
+
+               foreach ( $this->getTableInstance()->getFields() as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $mockFields[$name] = $mockValues[$type];
+                       }
+               }
+
+               return $mockFields;
+       }
+
+       /**
+        * @since 1.20
+        * @return array of IORMRow
+        */
+       public function instanceProvider() {
+               $instances = array();
+
+               foreach ( $this->constructorTestProvider() as $arguments ) {
+                       $instances[] = array( call_user_func_array( array( $this, 'getRowInstance' ), $arguments ) );
+               }
+
+               return $instances;
+       }
+
+       /**
+        * @dataProvider constructorTestProvider
+        */
+       public function testConstructor( array $data, $loadDefaults ) {
+               $this->verifyFields( $this->getRowInstance( $data, $loadDefaults ), $data );
+       }
+
+       /**
+        * @dataProvider constructorTestProvider
+        */
+       public function testSave( array $data, $loadDefaults ) {
+               $item = $this->getRowInstance( $data, $loadDefaults );
+
+               $this->assertTrue( $item->save() );
+
+               $this->assertTrue( $item->hasIdField() );
+               $this->assertTrue( is_integer( $item->getId() ) );
+
+               $id = $item->getId();
+
+               $this->assertTrue( $item->save() );
+
+               $this->assertEquals( $id, $item->getId() );
+
+               $this->verifyFields( $item, $data );
+       }
+
+       /**
+        * @dataProvider constructorTestProvider
+        */
+       public function testRemove( array $data, $loadDefaults ) {
+               $item = $this->getRowInstance( $data, $loadDefaults );
+
+               $this->assertTrue( $item->save() );
+
+               $this->assertTrue( $item->remove() );
+
+               $this->assertFalse( $item->hasIdField() );
+
+               $this->assertTrue( $item->save() );
+
+               $this->verifyFields( $item, $data );
+
+               $this->assertTrue( $item->remove() );
+
+               $this->assertFalse( $item->hasIdField() );
+
+               $this->verifyFields( $item, $data );
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetField( IORMRow $item ) {
+               foreach ( $this->getMockFields() as $name => $value ) {
+                       $item->setField( $name, $value );
+                       $this->assertEquals( $value, $item->getField( $name ) );
+               }
+       }
+
+       /**
+        * @since 1.20
+        * @param array $expected
+        * @param IORMRow $item
+        */
+       protected function assertFieldValues( array $expected, IORMRow $item ) {
+               foreach ( $expected as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $this->assertEquals( $expected[$name], $item->getField( $name ) );
+                       }
+               }
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetFields( IORMRow $item ) {
+               $originalValues = $item->getFields();
+
+               $item->setFields( array(), false );
+
+               foreach ( $item->getTable()->getFields() as $name => $type ) {
+                       $originalHas = array_key_exists( $name, $originalValues );
+                       $newHas = $item->hasField( $name );
+
+                       $this->assertEquals( $originalHas, $newHas );
+
+                       if ( $originalHas && $newHas ) {
+                               $this->assertEquals( $originalValues[$name], $item->getField( $name ) );
+                       }
+               }
+
+               $mockFields = $this->getMockFields();
+
+               $item->setFields( $mockFields, false );
+
+               $this->assertFieldValues( $originalValues, $item );
+
+               $item->setFields( $mockFields, true );
+
+               $this->assertFieldValues( $mockFields, $item );
+       }
+
+       // TODO: test all of the methods!
+
+}
\ No newline at end of file
diff --git a/tests/phpunit/includes/db/TestORMRowTest.php b/tests/phpunit/includes/db/TestORMRowTest.php
new file mode 100644 (file)
index 0000000..ca3e9e6
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+
+/**
+ * Tests for the TestORMRow class.
+ * TestORMRow is a dummy class to be able to test the abstract ORMRow class.
+ *
+ * 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
+ * @since 1.20
+ *
+ * @ingroup Test
+ *
+ * @group ORM
+ *
+ * The database group has as a side effect that temporal database tables are created. This makes
+ * it possible to test without poisoning a production database.
+ * @group Database
+ *
+ * Some of the tests takes more time, and needs therefor longer time before they can be aborted
+ * as non-functional. The reason why tests are aborted is assumed to be set up of temporal databases
+ * that hold the first tests in a pending state awaiting access to the database.
+ * @group medium
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+require_once dirname( __FILE__ ) . "/ORMRowTest.php";
+
+class TestORMRowTest extends ORMRowTest {
+
+       /**
+        * @since 1.20
+        * @return string
+        */
+       protected function getRowClass() {
+               return 'TestORMRow';
+       }
+
+       /**
+        * @since 1.20
+        * @return IORMTable
+        */
+       protected function getTableInstance() {
+               return TestORMTable::singleton();
+       }
+
+       public function setUp() {
+               parent::setUp();
+
+               $dbw = wfGetDB( DB_MASTER );
+
+               $isSqlite = $GLOBALS['wgDBtype'] === 'sqlite';
+
+               $idField = $isSqlite ? 'INTEGER' : 'INT unsigned';
+               $primaryKey = $isSqlite ? 'PRIMARY KEY AUTOINCREMENT' : 'auto_increment PRIMARY KEY';
+
+               $dbw->safeQuery(
+                       'CREATE TABLE IF NOT EXISTS ' . $dbw->tableName( 'orm_test' ) . '(
+                               test_id                    ' . $idField . '        NOT NULL ' . $primaryKey . ',
+                               test_name                  VARCHAR(255)        NOT NULL,
+                               test_age                   TINYINT unsigned    NOT NULL,
+                               test_height                FLOAT               NOT NULL,
+                               test_awesome               TINYINT unsigned    NOT NULL,
+                               test_stuff                 BLOB                NOT NULL,
+                               test_moarstuff             BLOB                NOT NULL,
+                               test_time                  varbinary(14)       NOT NULL
+                       );'
+               );
+       }
+
+       public function constructorTestProvider() {
+               return array(
+                       array(
+                               array(
+                                       'name' => 'Foobar',
+                                       'age' => 42,
+                                       'height' => 9000.1,
+                                       'awesome' => true,
+                                       'stuff' => array( 13, 11, 7, 5, 3, 2 ),
+                                       'moarstuff' => (object)array( 'foo' => 'bar', 'bar' => array( 4, 2 ), 'baz' => true )
+                               ),
+                               true
+                       ),
+               );
+       }
+
+}
+
+class TestORMRow extends ORMRow {}
+
+class TestORMTable extends ORMTable {
+
+       /**
+        * Returns the name of the database table objects of this type are stored in.
+        *
+        * @since 1.20
+        *
+        * @return string
+        */
+       public function getName() {
+               return 'orm_test';
+       }
+
+       /**
+        * Returns the name of a IORMRow implementing class that
+        * represents single rows in this table.
+        *
+        * @since 1.20
+        *
+        * @return string
+        */
+       public function getRowClass() {
+               return 'TestORMRow';
+       }
+
+       /**
+        * Returns an array with the fields and their types this object contains.
+        * This corresponds directly to the fields in the database, without prefix.
+        *
+        * field name => type
+        *
+        * Allowed types:
+        * * id
+        * * str
+        * * int
+        * * float
+        * * bool
+        * * array
+        * * blob
+        *
+        * @since 1.20
+        *
+        * @return array
+        */
+       public function getFields() {
+               return array(
+                       'id' => 'id',
+                       'name' => 'str',
+                       'age' => 'int',
+                       'height' => 'float',
+                       'awesome' => 'bool',
+                       'stuff' => 'array',
+                       'moarstuff' => 'blob',
+                       'time' => 'int', // TS_MW
+               );
+       }
+
+       /**
+        * Gets the db field prefix.
+        *
+        * @since 1.20
+        *
+        * @return string
+        */
+       protected function getFieldPrefix() {
+               return 'test_';
+       }
+
+
+}
index 5a4e66d..1627c47 100644 (file)
@@ -30,7 +30,7 @@ class MWDebugTest extends MediaWikiTestCase {
                $this->assertEquals( array( array(
                        'msg' => 'Warning message',
                        'type' => 'warn',
-                       'caller' => 'MWDebug::warning',
+                       'caller' => 'MWDebugTest::testAddWarning',
                        ) ),
                        MWDebug::getLog()
                );
index 2b94778..710ad83 100644 (file)
@@ -1392,8 +1392,11 @@ class FileBackendTest extends MediaWikiTestCase {
 
        private function doTestGetFileList() {
                $backendName = $this->backendClass();
-
                $base = $this->baseStorePath();
+
+               // Should have no errors
+               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont-notexists" ) );
+
                $files = array(
                        "$base/unittest-cont1/test1.txt",
                        "$base/unittest-cont1/test2.txt",
diff --git a/tests/phpunit/includes/libs/CSSMinTest.php b/tests/phpunit/includes/libs/CSSMinTest.php
new file mode 100644 (file)
index 0000000..a382775
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+/**
+ * This file test the CSSMin library shipped with Mediawiki.
+ *
+ * @author Timo Tijhof
+ */
+
+class CSSMinTest extends MediaWikiTestCase {
+       protected $oldServer = null, $oldCanServer = null;
+
+       function setUp() {
+               parent::setUp();
+
+               // Fake $wgServer and $wgCanonicalServer
+               global $wgServer, $wgCanonicalServer;
+               $this->oldServer = $wgServer;
+               $this->oldCanServer = $wgCanonicalServer;
+               $wgServer = $wgCanonicalServer = 'http://wiki.example.org';
+       }
+
+       function tearDown() {
+               // Restore $wgServer and $wgCanonicalServer
+               global $wgServer, $wgCanonicalServer;
+               $wgServer = $this->oldServer;
+               $wgCanonicalServer = $this->oldCanServer;
+
+               parent::tearDown();
+       }
+
+       /**
+        * @dataProvider provideMinifyCases
+        */
+       function testMinify( $code, $expectedOutput ) {
+               $minified = CSSMin::minify( $code );
+
+               $this->assertEquals( $expectedOutput, $minified, 'Minified output should be in the form expected.' );
+       }
+
+       function provideMinifyCases() {
+               return array(
+                       // Whitespace
+                       array( "\r\t\f \v\n\r", "" ),
+                       array( "foo, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+
+                       // Loose comments
+                       array( "/* foo */", "" ),
+                       array( "/*******\n foo\n *******/", "" ),
+                       array( "/*!\n foo\n */", "" ),
+
+                       // Inline comments in various different places
+                       array( "/* comment */foo, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo/* comment */, bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo,/* comment */ bar {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar/* comment */ {\n\tprop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\t/* comment */prop: value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\tprop: /* comment */value;\n}", "foo,bar{prop:value}" ),
+                       array( "foo, bar {\n\tprop: value /* comment */;\n}", "foo,bar{prop:value }" ),
+                       array( "foo, bar {\n\tprop: value; /* comment */\n}", "foo,bar{prop:value; }" ),
+
+                       // Keep track of things that aren't as minified as much as they
+                       // could be (bug 35493)
+                       array( 'foo { prop: value ;}', 'foo{prop:value }' ),
+                       array( 'foo { prop : value; }', 'foo{prop :value}' ),
+                       array( 'foo { prop: value ; }', 'foo{prop:value }' ),
+                       array( 'foo { font-family: "foo" , "bar"; }', 'foo{font-family:"foo" ,"bar"}' ),
+                       array( "foo { src:\n\turl('foo') ,\n\turl('bar') ; }", "foo{src:url('foo') ,url('bar') }" ),
+
+                       // Interesting cases with string values
+                       // - Double quotes, single quotes
+                       array( 'foo { content: ""; }', 'foo{content:""}' ),
+                       array( "foo { content: ''; }", "foo{content:''}" ),
+                       array( 'foo { content: "\'"; }', 'foo{content:"\'"}' ),
+                       array( "foo { content: '\"'; }", "foo{content:'\"'}" ),
+                       // - Whitespace in string values
+                       array( 'foo { content: " "; }', 'foo{content:" "}' ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRemapCases
+        */
+       function testRemap( $message, $params, $expectedOutput ) {
+               $remapped = call_user_func_array( 'CSSMin::remap', $params );
+
+               $messageAdd = " Case: $message";
+               $this->assertEquals( $expectedOutput, $remapped, 'CSSMin::remap should return the expected url form.' . $messageAdd );
+       }
+
+       function provideRemapCases() {
+               // Parameter signature:
+               // CSSMin::remap( $code, $local, $remote, $embedData = true )
+               return array(
+                       array(
+                               'Simple case',
+                               array( 'foo { prop: url(bar.png); }', false, 'http://example.org', false ),
+                               'foo { prop: url(http://example.org/bar.png); }',
+                       ),
+                       array(
+                               'Without trailing slash',
+                               array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux', false ),
+                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                       ),
+                       array(
+                               'With trailing slash on remote (bug 27052)',
+                               array( 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux/', false ),
+                               'foo { prop: url(http://example.org/quux/../bar.png); }',
+                       ),
+                       array(
+                               'Guard against stripping double slashes from query',
+                               array( 'foo { prop: url(bar.png?corge=//grault); }', false, 'http://example.org/quux/', false ),
+                               'foo { prop: url(http://example.org/quux/bar.png?corge=//grault); }',
+                       ),
+                       array(
+                               'Expand absolute paths',
+                               array( 'foo { prop: url(/w/skin/images/bar.png); }', false, 'http://example.org/quux', false ),
+                               'foo { prop: url(http://wiki.example.org/w/skin/images/bar.png); }',
+                       ),
+               );
+       }
+
+       /**
+        * Seperated because they are currently broken (bug 35492)
+        *
+        * @group Broken
+        * @dataProvider provideStringCases
+        */
+       function testMinifyWithCSSStringValues( $code, $expectedOutput ) {
+               $this->testMinifyOutput( $code, $expectedOutput );
+       }
+
+       function provideStringCases() {
+               return array(
+                       // String values should be respected
+                       // - More than one space in a string value
+                       array( 'foo { content: "  "; }', 'foo{content:"  "}' ),
+                       // - Using a tab in a string value (turns into a space)
+                       array( "foo { content: '\t'; }", "foo{content:'\t'}" ),
+                       // - Using css-like syntax in string values
+                       array( 'foo::after { content: "{;}"; position: absolute; }', 'foo::after{content:"{;}";position:absolute}' ),
+               );
+       }
+}
index d2bfeed..f121b01 100644 (file)
@@ -4,9 +4,18 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
 
        function provideCases() {
                return array(
-                       // Basic tokens
+
+                       // Basic whitespace and comments that should be stripped entirely
                        array( "\r\t\f \v\n\r", "" ),
                        array( "/* Foo *\n*bar\n*/", "" ),
+
+                       /**
+                        * Slashes used inside block comments (bug 26931).
+                        * At some point there was a bug that caused this comment to be ended at '* /',
+                        * causing /M... to be left as the beginning of a regex.
+                        */
+                       array( "/**\n * Foo\n * {\n * 'bar' : {\n * //Multiple rules with configurable operators\n * 'baz' : false\n * }\n */", ""),
+
                        /**
                         * '  Foo \' bar \
                         *  baz \' quox '  .
@@ -15,11 +24,13 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "\"  Foo  \\\"  bar  \\\n  baz  \\\"  quox  \"  .length", "\"  Foo  \\\"  bar  \\\n  baz  \\\"  quox  \".length" ),
                        array( "// Foo b/ar baz", "" ),
                        array( "/  Foo  \\/  bar  [  /  \\]  /  ]  baz  /  .length", "/  Foo  \\/  bar  [  /  \\]  /  ]  baz  /.length" ),
+
                        // HTML comments
                        array( "<!-- Foo bar", "" ),
                        array( "<!-- Foo --> bar", "" ),
                        array( "--> Foo", "" ),
                        array( "x --> y", "x-->y" ),
+
                        // Semicolon insertion
                        array( "(function(){return\nx;})", "(function(){return\nx;})" ),
                        array( "throw\nx;", "throw\nx;" ),
@@ -35,12 +46,19 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "5.\nx;", "5.\nx;" ),
                        array( "0xFF.\nx;", "0xFF.x;" ),
                        array( "5.3.\nx;", "5.3.x;" ),
+
+                       // Semicolon insertion between an expression having an inline
+                       // comment after it, and a statement on the next line (bug 27046).
+                       array( "var a = this //foo bar \n for ( b = 0; c < d; b++ ) {}", "var a=this\nfor(b=0;c<d;b++){}" ),
+
                        // Token separation
                        array( "x  in  y", "x in y" ),
                        array( "/x/g  in  y", "/x/g in y" ),
                        array( "x  in  30", "x in 30" ),
                        array( "x  +  ++  y", "x+ ++y" ),
+                       array( "x ++  +  y", "x++ +y" ),
                        array( "x  /  /y/.exec(z)", "x/ /y/.exec(z)" ),
+
                        // State machine
                        array( "/  x/g", "/  x/g" ),
                        array( "(function(){return/  x/g})", "(function(){return/  x/g})" ),
@@ -63,15 +81,18 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        array( "function x(){}/  x/g", "function x(){}/  x/g" ),
                        array( "+function x(){}/  x/g", "+function x(){}/x/g" ),
                        
-                       // Tests for things that broke in the past
                        // Multiline quoted string
                        array( "var foo=\"\\\nblah\\\n\";", "var foo=\"\\\nblah\\\n\";" ),
+
                        // Multiline quoted string followed by string with spaces
                        array( "var foo=\"\\\nblah\\\n\";\nvar baz = \" foo \";\n", "var foo=\"\\\nblah\\\n\";var baz=\" foo \";" ),
+
                        // URL in quoted string ( // is not a comment)
                        array( "aNode.setAttribute('href','http://foo.bar.org/baz');", "aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+
                        // URL in quoted string after multiline quoted string
                        array( "var foo=\"\\\nblah\\\n\";\naNode.setAttribute('href','http://foo.bar.org/baz');", "var foo=\"\\\nblah\\\n\";aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+
                        // Division vs. regex nastiness
                        array( "alert( (10+10) / '/'.charCodeAt( 0 ) + '//' );", "alert((10+10)/'/'.charCodeAt(0)+'//');" ),
                        array( "if(1)/a /g.exec('Pa ss');", "if(1)/a /g.exec('Pa ss');" ),
@@ -81,11 +102,12 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
 
                        // Unicode letter characters should pass through ok in identifiers (bug 31187)
                        array( "var KaŝSkatolVal = {}", 'var KaŝSkatolVal={}'),
-                       // And also per spec unicode char escape values should work in identifiers,
+
+                       // Per spec unicode char escape values should work in identifiers,
                        // as long as it's a valid char. In future it might get normalized.
                        array( "var Ka\\u015dSkatolVal = {}", 'var Ka\\u015dSkatolVal={}'),
 
-                       /* Some structures that might look invalid at first sight */
+                       // Some structures that might look invalid at first sight
                        array( "var a = 5.;", "var a=5.;" ),
                        array( "5.0.toString();", "5.0.toString();" ),
                        array( "5..toString();", "5..toString();" ),
@@ -110,24 +132,6 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedOutput, $minified, "Minified output should be in the form expected." );
        }
 
-       /**
-        * @dataProvider provideBug32548
-        */
-       function testBug32548Exponent($num) {
-               // Long line breaking was being incorrectly done between the base and
-               // exponent part of a number, causing a syntax error. The line should
-               // instead break at the start of the number.
-               $prefix = 'var longVarName' . str_repeat('_', 973) . '=';
-               $suffix = ',shortVarName=0;';
-
-               $input = $prefix . $num . $suffix;
-               $expected = $prefix . "\n" . $num . $suffix;
-
-               $minified = JavaScriptMinifier::minify( $input );
-
-               $this->assertEquals( $expected, $minified, "Line breaks must not occur in middle of exponent");
-       }
-
        function provideBug32548() {
                return array(
                        array(
@@ -145,4 +149,22 @@ class JavaScriptMinifierTest extends MediaWikiTestCase {
                        ),
                );
        }
+
+       /**
+        * @dataProvider provideBug32548
+        */
+       function testBug32548Exponent( $num ) {
+               // Long line breaking was being incorrectly done between the base and
+               // exponent part of a number, causing a syntax error. The line should
+               // instead break at the start of the number.
+               $prefix = 'var longVarName' . str_repeat( '_', 973 ) . '=';
+               $suffix = ',shortVarName=0;';
+
+               $input = $prefix . $num . $suffix;
+               $expected = $prefix . "\n" . $num . $suffix;
+
+               $minified = JavaScriptMinifier::minify( $input );
+
+               $this->assertEquals( $expected, $minified, "Line breaks must not occur in middle of exponent");
+       }
 }
diff --git a/tests/phpunit/includes/mobile/DeviceDetectionTest.php b/tests/phpunit/includes/mobile/DeviceDetectionTest.php
new file mode 100644 (file)
index 0000000..0e15653
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * @group Mobile
+ */
+ class DeviceDetectionTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideTestFormatName
+        */
+       public function testFormatName( $format, $userAgent ) {
+               $detector = new DeviceDetection();
+               $this->assertEquals( $format, $detector->detectFormatName( $userAgent ) );
+       }
+
+       public function provideTestFormatName() {
+               return array(
+                       array( 'android',   'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' ),
+                       array( 'iphone2',   'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
+                       array( 'iphone',    'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
+                       array( 'nokia',     'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413' ),
+                       array( 'palm_pre',  'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0' ),
+                       array( 'wii',       'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)' ),
+                       array( 'operamini', 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)' ),
+                       array( 'operamobile',    'Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)' ),
+                       array( 'kindle',    'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)' ),
+                       array( 'kindle2',   'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)' ),
+                       array( 'capable',   'Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' ),
+                       array( 'netfront',  'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2' ),
+                       array( 'wap2',      'SonyEricssonK608i/R2L/SN356841000828910 Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
+                       array( 'wap2',      'NokiaN73-2/3.0-630.0.2 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
+                       array( 'psp',       'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)' ),
+                       array( 'ps3',       'Mozilla/5.0 (PLAYSTATION 3; 1.00)' ),
+                       array( 'ie', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' ),
+                       array( 'ie', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)' ),
+                       array( 'blackberry', 'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133' ),
+                       array( 'blackberry-lt5', 'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
+               );
+       }
+}
diff --git a/tests/phpunit/includes/parser/ParserMethodsTest.php b/tests/phpunit/includes/parser/ParserMethodsTest.php
new file mode 100644 (file)
index 0000000..10b57eb
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+class ParserLesserFunctionsTest extends MediaWikiLangTestCase {
+
+       public function dataPreSaveTransform() {
+               return array(
+                       array( 'hello this is ~~~',
+                              "hello this is [[Special:Contributions/127.0.0.1|127.0.0.1]]",
+                       ),
+                       array( 'hello \'\'this\'\' is <nowiki>~~~</nowiki>',
+                              'hello \'\'this\'\' is <nowiki>~~~</nowiki>',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider dataPreSaveTransform
+        */
+       public function testPreSaveTransform( $text, $expected ) {
+               global $wgParser;
+
+               $title = Title::newFromText( str_replace( '::', '__', __METHOD__ ) );
+               $user = new User();
+               $user->setName( "127.0.0.1" );
+               $popts = ParserOptions::newFromUser( $user );
+               $text = $wgParser->preSaveTransform( $text, $title, $user, $popts );
+
+               $this->assertEquals( $expected, $text );
+       }
+
+       // TODO: Add tests for cleanSig() / cleanSigInSig(), getSection(), replaceSection(), getPreloadText()
+}
+
index c6498fa..f66c387 100644 (file)
@@ -20,7 +20,7 @@ class UploadFromUrlTest extends ApiTestCase {
                }
        }
 
-       protected function doApiRequest( $params, $unused = null, $appendModule = false, $user = null ) {
+       protected function doApiRequest( Array $params, Array $unused = null, $appendModule = false, User $user = null ) {
                $sessionId = session_id();
                session_write_close();
 
index 4239670..a1a6d59 100644 (file)
@@ -791,4 +791,68 @@ class LanguageTest extends MediaWikiTestCase {
                        ),
                );
        }
+
+       /**\r
+        * @dataProvider provideCheckTitleEncodingData\r
+        */\r
+       function testCheckTitleEncoding( $s ) {\r
+               $this->assertEquals(\r
+                       $s,\r
+                       $this->lang->checkTitleEncoding($s),\r
+                       "checkTitleEncoding('$s')"\r
+               );\r
+       }\r
+
+       function provideCheckTitleEncodingData() {
+               return array (
+                       array( "" ),
+                       array( "United States of America" ), // 7bit ASCII
+                       array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ),
+                       array(
+                               rawurldecode(
+                                       "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn"
+                               )
+                       ),
+                       // The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for
+                       // valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding
+                   // uses mb_check_encoding for its test.
+                       array(
+                               rawurldecode(
+                                       "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
+                                       . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
+                                       . "Internet%20Movie%20Database%7CJim%20Brass%7CLady%20Heather%7C"
+                                       . "Les%20Experts%20(s%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e)%7CLes%20Experts%20:%20Manhattan%7C"
+                                       . "Les%20Experts%20:%20Miami%7CListe%20des%20personnages%20des%20Experts%7C"
+                                       . "Liste%20des%20%C3%A9pisodes%20des%20Experts%7CMod%C3%A8le%20discussion:Palette%20Les%20Experts%7C"
+                                       . "Nick%20Stokes%7CPersonnage%20de%20fiction%7CPersonnage%20fictif%7CPersonnage%20de%20fiction%7C"
+                                       . "Personnages%20r%C3%A9currents%20dans%20Les%20Experts%7CRaymond%20Langston%7CRiley%20Adams%7C"
+                                       . "Saison%201%20des%20Experts%7CSaison%2010%20des%20Experts%7CSaison%2011%20des%20Experts%7C"
+                                       . "Saison%2012%20des%20Experts%7CSaison%202%20des%20Experts%7CSaison%203%20des%20Experts%7C"
+                                       . "Saison%204%20des%20Experts%7CSaison%205%20des%20Experts%7CSaison%206%20des%20Experts%7C"
+                                       . "Saison%207%20des%20Experts%7CSaison%208%20des%20Experts%7CSaison%209%20des%20Experts%7C"
+                                       . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
+                                       . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
+                               ),
+                       ),
+                       array(
+                               rawurldecode(
+                                       "Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C"
+                                       . "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C"
+                                       . "Mod%C3%A8le%3ACommunes%20fran%C3%A7aises%20homonymes%7CMod%C3%A8le%3AFilms%20homonymes%7C"
+                                       . "Mod%C3%A8le%3AGouvernements%20homonymes%7CMod%C3%A8le%3AGuerres%20homonymes%7CMod%C3%A8le%3AHomonymie%7C"
+                                       . "Mod%C3%A8le%3AHomonymie%20bateau%7CMod%C3%A8le%3AHomonymie%20d'%C3%A9tablissements%20scolaires%20ou"
+                                       . "%20universitaires%7CMod%C3%A8le%3AHomonymie%20d'%C3%AEles%7CMod%C3%A8le%3AHomonymie%20de%20clubs%20sportifs%7C"
+                                       . "Mod%C3%A8le%3AHomonymie%20de%20comt%C3%A9s%7CMod%C3%A8le%3AHomonymie%20de%20monument%7C"
+                                       . "Mod%C3%A8le%3AHomonymie%20de%20nom%20romain%7CMod%C3%A8le%3AHomonymie%20de%20parti%20politique%7C"
+                                       . "Mod%C3%A8le%3AHomonymie%20de%20route%7CMod%C3%A8le%3AHomonymie%20dynastique%7C"
+                                       . "Mod%C3%A8le%3AHomonymie%20vid%C3%A9oludique%7CMod%C3%A8le%3AHomonymie%20%C3%A9difice%20religieux%7C"
+                                       . "Mod%C3%A8le%3AInternationalisation%7CMod%C3%A8le%3AIsom%C3%A9rie%7CMod%C3%A8le%3AParonymie%7C"
+                                       . "Mod%C3%A8le%3APatronyme%7CMod%C3%A8le%3APatronyme%20basque%7CMod%C3%A8le%3APatronyme%20italien%7C"
+                                       . "Mod%C3%A8le%3APatronymie%7CMod%C3%A8le%3APersonnes%20homonymes%7CMod%C3%A8le%3ASaints%20homonymes%7C"
+                                       . "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C"
+                                       . "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes"
+                               )
+                       )
+               );
+       }
 }
index fd39c45..b5eb573 100644 (file)
@@ -1,11 +1,9 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/backup.inc" );
 
 /**
  * Base TestCase for dumps
  */
-abstract class DumpTestCase extends MediaWikiTestCase {
+abstract class DumpTestCase extends MediaWikiLangTestCase {
 
        /**
         * exception to be rethrown once in sound PHPUnit surrounding
@@ -74,7 +72,7 @@ abstract class DumpTestCase extends MediaWikiTestCase {
         *
         * Clears $wgUser, and reports errors from addDBData to PHPUnit
         */
-       protected function setUp() {
+       public function setUp() {
                global $wgUser;
 
                parent::setUp();
@@ -297,13 +295,17 @@ abstract class DumpTestCase extends MediaWikiTestCase {
         * @param $text_sha1 string: the base36 SHA-1 of the revision's text
         * @param $text string|false: (optional) The revision's string, or false to check for a
         *            revision stub
+        * @param $parentid int|false: (optional) id of the parent revision
         */
-       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false ) {
+       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false, $parentid = false ) {
 
                $this->assertNodeStart( "revision" );
                $this->skipWhitespace();
 
                $this->assertTextNode( "id", $id );
+               if ( $parentid !== false ) {
+                       $this->assertTextNode( "parentid", $parentid );
+               }
                $this->assertTextNode( "timestamp", false );
 
                $this->assertNodeStart( "contributor" );
@@ -314,13 +316,14 @@ abstract class DumpTestCase extends MediaWikiTestCase {
 
                $this->assertTextNode( "comment", $summary );
 
+               $this->assertTextNode( "sha1", $text_sha1 );
+
                $this->assertNodeStart( "text", false );
                if ( $text_bytes !== false ) {
                        $this->assertEquals( $this->xml->getAttribute( "bytes" ), $text_bytes,
                                "Attribute 'bytes' of revision " . $id );
                }
 
-
                if ( $text === false ) {
                        // Testing for a stub
                        $this->assertEquals( $this->xml->getAttribute( "id" ), $text_id,
@@ -342,8 +345,6 @@ abstract class DumpTestCase extends MediaWikiTestCase {
                        $this->skipWhitespace();
                }
 
-               $this->assertTextNode( "sha1", $text_sha1 );
-
                $this->assertNodeEnd( "revision" );
                $this->skipWhitespace();
        }
index 9273233..6ec802c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/backupPrefetch.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupPrefetch.inc";
 
 /**
  * Tests for BaseDump
@@ -17,11 +17,13 @@ class BaseDumpTest extends MediaWikiTestCase {
        private $dump = null;
 
        protected function tearDown() {
-               parent::tearDown();
-
                if ( $this->dump !== null ) {
                        $this->dump->close();
                }
+
+               // Bug 37458, parent teardown need to be done after closing the
+               // dump or it might cause some permissions errors.
+               parent::tearDown();
        }
 
        /**
@@ -150,7 +152,7 @@ class BaseDumpTest extends MediaWikiTestCase {
                $fname = $this->getNewTempFile();
 
                // The header of every prefetch file
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -195,8 +197,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP1Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP1Text1</text>
       <sha1>0bolhl6ol7i6x0e7yq91gxgaan39j87</sha1>
+      <text xml:space="preserve">BackupDumperTestP1Text1</text>
     </revision>
   </page>
 ';
@@ -207,13 +209,14 @@ class BaseDumpTest extends MediaWikiTestCase {
     <id>2</id>
     <revision>
       <id>2</id>
+      <parentid>5</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text1</text>
       <sha1>jprywrymfhysqllua29tj3sc7z39dl2</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text1</text>
     </revision>
     <revision>
       <id>5</id>
@@ -222,8 +225,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary4 extra</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
       <sha1>6o1ciaxa6pybnqprmungwofc4lv00wv</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
     </revision>
   </page>
 ';
@@ -239,8 +242,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>Talk BackupDumperTestP1 Summary1</comment>
-      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
       <sha1>nktofwzd0tl192k3zfepmlzxoax1lpe</sha1>
+      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
     </revision>
   </page>
 ';
index 0dade60..8b5928d 100644 (file)
@@ -1,7 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/backup.inc" );
-require_once( "$IP/maintenance/backupTextPass.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupTextPass.inc";
 
 /**
  * Tests for page dumps of BackupDumper
@@ -13,12 +12,14 @@ class TextPassDumperTest extends DumpTestCase {
 
        // We'll add several pages, revision and texts. The following variables hold the
        // corresponding ids.
-       private $pageId1, $pageId2, $pageId3, $pageId4, $pageId5;
+       private $pageId1, $pageId2, $pageId3, $pageId4;
+       private static $numOfPages = 4;
        private $revId1_1, $textId1_1;
        private $revId2_1, $textId2_1, $revId2_2, $textId2_2;
        private $revId2_3, $textId2_3, $revId2_4, $textId2_4;
        private $revId3_1, $textId3_1, $revId3_2, $textId3_2;
        private $revId4_1, $textId4_1;
+       private static $numOfRevs = 8;
 
        function addDBData() {
                $this->tablesUsed[] = 'page';
@@ -73,7 +74,7 @@ class TextPassDumperTest extends DumpTestCase {
 
        }
 
-       protected function setUp() {
+       public function setUp() {
                parent::setUp();
 
                // Since we will restrict dumping by page ranges (to allow
@@ -113,13 +114,13 @@ class TextPassDumperTest extends DumpTestCase {
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                       "BackupDumperTestP2Text1" );
+                       "BackupDumperTestP2Text1", $this->revId2_2 );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_3 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_4 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
                        "BackupDumperTestP2Text4 some additional Text" );
@@ -179,15 +180,15 @@ class TextPassDumperTest extends DumpTestCase {
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                       "BackupDumperTestP2Text1" );
+                       "BackupDumperTestP2Text1", $this->revId2_2 );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_3 );
                // Prefetch kicks in. This is still the SHA-1 of the original text,
                // But the actual text (with different SHA-1) comes from prefetch.
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "Prefetch_________2Text3" );
+                       "Prefetch_________2Text3", $this->revId2_4 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
                        "BackupDumperTestP2Text4 some additional Text" );
@@ -315,9 +316,9 @@ class TextPassDumperTest extends DumpTestCase {
                        switch ( $lookingForPage ) {
                        case 1:
                                // Page 1
-                               $this->assertPageStart( $this->pageId1 + $i * 4, NS_MAIN,
+                               $this->assertPageStart( $this->pageId1 + $i * self::$numOfPages, NS_MAIN,
                                        "BackupDumperTestP1" );
-                               $this->assertRevision( $this->revId1_1, "BackupDumperTestP1Summary1",
+                               $this->assertRevision( $this->revId1_1 + $i * self::$numOfRevs, "BackupDumperTestP1Summary1",
                                        $this->textId1_1, false, "0bolhl6ol7i6x0e7yq91gxgaan39j87",
                                        "BackupDumperTestP1Text1" );
                                $this->assertPageEnd();
@@ -327,18 +328,18 @@ class TextPassDumperTest extends DumpTestCase {
 
                        case 2:
                                // Page 2
-                               $this->assertPageStart( $this->pageId2 + $i * 4, NS_MAIN,
+                               $this->assertPageStart( $this->pageId2 + $i * self::$numOfPages, NS_MAIN,
                                        "BackupDumperTestP2" );
-                               $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
+                               $this->assertRevision( $this->revId2_1 + $i * self::$numOfRevs, "BackupDumperTestP2Summary1",
                                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                                       "BackupDumperTestP2Text1" );
-                               $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
+                                       "BackupDumperTestP2Text1", $this->revId2_2 + $i * self::$numOfRevs );
+                               $this->assertRevision( $this->revId2_2 + $i * self::$numOfRevs, "BackupDumperTestP2Summary2",
                                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                                       "BackupDumperTestP2Text2" );
-                               $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
+                                       "BackupDumperTestP2Text2", $this->revId2_3 + $i * self::$numOfRevs );
+                               $this->assertRevision( $this->revId2_3 + $i * self::$numOfRevs, "BackupDumperTestP2Summary3",
                                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                                       "BackupDumperTestP2Text3" );
-                               $this->assertRevision( $this->revId2_4,
+                                       "BackupDumperTestP2Text3", $this->revId2_4 + $i * self::$numOfRevs );
+                               $this->assertRevision( $this->revId2_4 + $i * self::$numOfRevs,
                                        "BackupDumperTestP2Summary4 extra",
                                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
                                        "BackupDumperTestP2Text4 some additional Text" );
@@ -349,9 +350,9 @@ class TextPassDumperTest extends DumpTestCase {
 
                        case 4:
                                // Page 4
-                               $this->assertPageStart( $this->pageId4 + $i * 4, NS_TALK,
+                               $this->assertPageStart( $this->pageId4 + $i * self::$numOfPages, NS_TALK,
                                        "Talk:BackupDumperTestP1" );
-                               $this->assertRevision( $this->revId4_1,
+                               $this->assertRevision( $this->revId4_1 + $i * self::$numOfRevs,
                                        "Talk BackupDumperTestP1 Summary1",
                                        $this->textId4_1, false, "nktofwzd0tl192k3zfepmlzxoax1lpe",
                                        "Talk about BackupDumperTestP1 Text1" );
@@ -429,10 +430,10 @@ class TextPassDumperTest extends DumpTestCase {
                if ( $fname === null ) {
                        $fname = $this->getNewTempFile();
                }
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" '
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" '
                        . 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
-                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ '
-                       . 'http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ '
+                       . 'http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -470,62 +471,65 @@ class TextPassDumperTest extends DumpTestCase {
                        $page1 = '  <page>
     <title>BackupDumperTestP1</title>
     <ns>0</ns>
-    <id>' . ( $this->pageId1 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId1 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId1_1 . '</id>
+      <id>' . ( $this->revId1_1 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP1Summary1</comment>
-      <text id="' . $this->textId1_1 . '" bytes="23" />
       <sha1>0bolhl6ol7i6x0e7yq91gxgaan39j87</sha1>
+      <text id="' . $this->textId1_1 . '" bytes="23" />
     </revision>
   </page>
 ';
                        $page2 = '  <page>
     <title>BackupDumperTestP2</title>
     <ns>0</ns>
-    <id>' . ( $this->pageId2 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId2 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId2_1 . '</id>
+      <id>' . ( $this->revId2_1 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_2 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary1</comment>
-      <text id="' . $this->textId2_1 . '" bytes="23" />
       <sha1>jprywrymfhysqllua29tj3sc7z39dl2</sha1>
+      <text id="' . $this->textId2_1 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_2 . '</id>
+      <id>' . ( $this->revId2_2 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_3 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary2</comment>
-      <text id="' . $this->textId2_2 . '" bytes="23" />
       <sha1>b7vj5ks32po5m1z1t1br4o7scdwwy95</sha1>
+      <text id="' . $this->textId2_2 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_3 . '</id>
+      <id>' . ( $this->revId2_3 + $i * self::$numOfRevs ) . '</id>
+      <parentid>' . ( $this->revId2_4 + $i * self::$numOfRevs ) . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary3</comment>
-      <text id="' . $this->textId2_3 . '" bytes="23" />
       <sha1>jfunqmh1ssfb8rs43r19w98k28gg56r</sha1>
+      <text id="' . $this->textId2_3 . '" bytes="23" />
     </revision>
     <revision>
-      <id>' . $this->revId2_4 . '</id>
+      <id>' . ( $this->revId2_4 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary4 extra</comment>
-      <text id="' . $this->textId2_4 . '" bytes="44" />
       <sha1>6o1ciaxa6pybnqprmungwofc4lv00wv</sha1>
+      <text id="' . $this->textId2_4 . '" bytes="44" />
     </revision>
   </page>
 ';
@@ -534,16 +538,16 @@ class TextPassDumperTest extends DumpTestCase {
                        $page4 = '  <page>
     <title>Talk:BackupDumperTestP1</title>
     <ns>1</ns>
-    <id>' . ( $this->pageId4 + $i * 4 ) . '</id>
+    <id>' . ( $this->pageId4 + $i * self::$numOfPages ) . '</id>
     <revision>
-      <id>' . $this->revId4_1 . '</id>
+      <id>' . ( $this->revId4_1 + $i * self::$numOfRevs ) . '</id>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>Talk BackupDumperTestP1 Summary1</comment>
-      <text id="' . $this->textId4_1 . '" bytes="35" />
       <sha1>nktofwzd0tl192k3zfepmlzxoax1lpe</sha1>
+      <text id="' . $this->textId4_1 . '" bytes="35" />
     </revision>
   </page>
 ';
index 205700e..925e277 100644 (file)
@@ -65,7 +65,7 @@ class BackupDumperPageTest extends DumpTestCase {
 
        }
 
-       protected function setUp() {
+       public function setUp() {
                parent::setUp();
 
                // Since we will restrict dumping by page ranges (to allow
@@ -108,13 +108,13 @@ class BackupDumperPageTest extends DumpTestCase {
                        "BackupDumperTestP2Text1" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                       "BackupDumperTestP2Text4 some additional Text" );
+                       "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -156,11 +156,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -199,7 +199,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -239,7 +239,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -310,11 +310,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -342,7 +342,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -370,7 +370,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
index 42a247c..f0689b6 100644 (file)
@@ -1,7 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/fetchText.php" );
 
+require_once dirname( __FILE__ ) . "/../../../maintenance/fetchText.php";
 
 /**
  * Mock for the input/output of FetchText
index 29e7fe6..8635614 100644 (file)
@@ -1,6 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/getSlaveServer.php" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/getSlaveServer.php";
 
 /**
  * Tests for getSlaveServer
index 9e1e9b2..adfd111 100644 (file)
@@ -27,6 +27,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                ),
                'dependencies' => array(
                        'jquery.autoEllipsis',
@@ -49,6 +50,7 @@ return array(
                        'mediawiki.util',
                        'mediawiki.special.recentchanges',
                        'mediawiki.jqueryMsg',
+                       'mediawiki.language'
                ),
                'position' => 'top',
        )
index b834aeb..9913fb9 100644 (file)
@@ -229,19 +229,27 @@ test( 'All-dressed URI with everything', function () {
 
 test( 'Cloning', function () {
        var original, clone;
-       expect( 5 );
+       expect( 6 );
 
-       original = new mw.Uri( 'http://en.wiki.local/w/api.php?action=query&foo=bar' );
+       original = new mw.Uri( 'http://foo.example.org/index.php?one=1&two=2' );
        clone = original.clone();
 
        deepEqual( clone, original, 'clone has equivalent properties' );
        equal( original.toString(), clone.toString(), 'toString matches original' );
 
-       notStrictEqual( clone, original, 'clone is not the same when compared by reference' );
+       notStrictEqual( clone, original, 'clone is a different object when compared by reference' );
 
-       clone.host = 'fr.wiki.local';
+       clone.host = 'bar.example.org';
        notEqual( original.host, clone.host, 'manipulating clone did not effect original' );
-       notEqual( original.toString(), clone.toString(), 'toString no longer matches original' );
+       notEqual( original.toString(), clone.toString(), 'Stringified url no longer matches original' );
+
+       clone.query.three = 3;
+
+       deepEqual(
+               original.query,
+               { 'one': '1', 'two': '2' },
+               'Properties is deep cloned (bug 37708)'
+       );
 } );
 
 test( 'Constructing mw.Uri from plain object', function () {
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js
new file mode 100644 (file)
index 0000000..5d67a6e
--- /dev/null
@@ -0,0 +1,395 @@
+var liveLangData = mw.language.data.values;
+QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment({
+       setup: function () {
+               // New independent copy for this test
+               mw.language.data = $.extend( {}, liveLangData, true );
+       },
+       teardown: function () {
+               // Restore original
+               mw.language.data = liveLangData;
+       }
+}) );
+
+QUnit.test( 'mw.language getData and setData', function ( assert ) {
+       QUnit.expect( 2 );
+
+       mw.language.setData( 'en', 'testkey', 'testvalue' );
+       assert.equal(  mw.language.getData( 'en', 'testkey' ), 'testvalue', 'Getter setter test for mw.language' );
+       assert.equal(  mw.language.getData( 'en', 'invalidkey' ), undefined, 'Getter setter test for mw.language with invalid key' );
+} );
+
+function grammarTest( langCode, test ) {
+       // The test works only if the content language is opt.language
+       // because it requires [lang].js to be loaded.
+       QUnit.test( 'Grammar test for lang=' + langCode, function ( assert ) {
+               QUnit.expect( test.length );
+
+               for ( var i = 0 ; i < test.length; i++ ) {
+                       assert.equal(
+                               mw.language.convertGrammar( test[i].word, test[i].grammarForm ),
+                               test[i].expected,
+                               test[i].description
+                       );
+               }
+       });
+}
+
+var grammarTests = {
+       bs: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 's word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokativ',
+                       expected: 'o word',
+                       description: 'Grammar test for lokativ case'
+               }
+       ],
+
+       he: [
+               {
+                       word: "ויקיפדיה",
+                       grammarForm: 'prefixed',
+                       expected: "וויקיפדיה",
+                       description: 'Duplicate the "Waw" if prefixed'
+               },
+               {
+                       word: "וולפגנג",
+                       grammarForm: 'prefixed',
+                       expected: "וולפגנג",
+                       description: 'Duplicate the "Waw" if prefixed, but not if it is already duplicated.'
+               },
+               {
+                       word: "הקובץ",
+                       grammarForm: 'prefixed',
+                       expected: "קובץ",
+                       description: 'Remove the "He" if prefixed'
+               },
+               {
+                       word: 'Wikipedia',
+                       grammarForm: 'תחילית',
+                       expected: '־Wikipedia',
+                       description: 'GAdd a hyphen (maqaf) before non-Hebrew letters'
+               },
+               {
+                       word: '1995',
+                       grammarForm: 'תחילית',
+                       expected: '־1995',
+                       description: 'Add a hyphen (maqaf) before numbers'
+               }
+       ],
+
+       hsb: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 'z word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokatiw',
+                       expected: 'wo word',
+                       description: 'Grammar test for lokatiw case'
+               }
+       ],
+
+       dsb: [
+               {
+                       word: 'word',
+                       grammarForm: 'instrumental',
+                       expected: 'z word',
+                       description: 'Grammar test for instrumental case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'lokatiw',
+                       expected: 'wo word',
+                       description: 'Grammar test for lokatiw case'
+               }
+       ],
+
+       hy: [
+               {
+                       word: 'Մաունա',
+                       grammarForm: 'genitive',
+                       expected: 'Մաունայի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'հետո',
+                       grammarForm: 'genitive',
+                       expected: 'հետոյի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'գիրք',
+                       grammarForm: 'genitive',
+                       expected: 'գրքի',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'ժամանակի',
+                       grammarForm: 'genitive',
+                       expected: 'ժամանակիի',
+                       description: 'Grammar test for genitive case'
+               }
+       ],
+
+       fi: [
+               {
+                       word: 'talo',
+                       grammarForm: 'genitive',
+                       expected: 'talon',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'linux',
+                       grammarForm: 'genitive',
+                       expected: 'linuxin',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'elative',
+                       expected: 'talosta',
+                       description: 'Grammar test for elative case'
+               },
+               {
+                       word: 'pastöroitu',
+                       grammarForm: 'partitive',
+                       expected: 'pastöroitua',
+                       description: 'Grammar test for partitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'partitive',
+                       expected: 'taloa',
+                       description: 'Grammar test for partitive case'
+               },
+               {
+                       word: 'talo',
+                       grammarForm: 'illative',
+                       expected: 'taloon',
+                       description: 'Grammar test for illative case'
+               },
+               {
+                       word: 'linux',
+                       grammarForm: 'inessive',
+                       expected: 'linuxissa',
+                       description: 'Grammar test for inessive case'
+               }
+       ],
+
+       ru: [
+               {
+                       word: 'тесть',
+                       grammarForm: 'genitive',
+                       expected: 'тестя',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'привилегия',
+                       grammarForm: 'genitive',
+                       expected: 'привилегии',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'установка',
+                       grammarForm: 'genitive',
+                       expected: 'установки',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'похоти',
+                       grammarForm: 'genitive',
+                       expected: 'похотей',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'доводы',
+                       grammarForm: 'genitive',
+                       expected: 'доводов',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'песчаник',
+                       grammarForm: 'genitive',
+                       expected: 'песчаника',
+                       description: 'Grammar test for genitive case'
+               }
+       ],
+
+
+       hu: [
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'rol',
+                       expected: 'Wikipédiáról',
+                       description: 'Grammar test for rol case'
+               },
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'ba',
+                       expected: 'Wikipédiába',
+                       description: 'Grammar test for ba case'
+               },
+               {
+                       word: 'Wikipédiá',
+                       grammarForm: 'k',
+                       expected: 'Wikipédiák',
+                       description: 'Grammar test for k case'
+               }
+       ],
+
+       ga: [
+               {
+                       word: 'an Domhnach',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Domhnaigh',
+                       description: 'Grammar test for ainmlae case'
+               },
+               {
+                       word: 'an Luan',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Luain',
+                       description: 'Grammar test for ainmlae case'
+               },
+               {
+                       word: 'an Satharn',
+                       grammarForm: 'ainmlae',
+                       expected: 'Dé Sathairn',
+                       description: 'Grammar test for ainmlae case'
+               }
+       ],
+
+       uk: [
+               {
+                       word: 'тесть',
+                       grammarForm: 'genitive',
+                       expected: 'тестя',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Вікіпедія',
+                       grammarForm: 'genitive',
+                       expected: 'Вікіпедії',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'установка',
+                       grammarForm: 'genitive',
+                       expected: 'установки',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'похоти',
+                       grammarForm: 'genitive',
+                       expected: 'похотей',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'доводы',
+                       grammarForm: 'genitive',
+                       expected: 'доводов',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'песчаник',
+                       grammarForm: 'genitive',
+                       expected: 'песчаника',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Вікіпедія',
+                       grammarForm: 'accusative',
+                       expected: 'Вікіпедію',
+                       description: 'Grammar test for accusative case'
+               }
+       ],
+
+       sl: [
+               {
+                       word: 'word',
+                       grammarForm: 'orodnik',
+                       expected: 'z word',
+                       description: 'Grammar test for orodnik case'
+               },
+               {
+                       word: 'word',
+                       grammarForm: 'mestnik',
+                       expected: 'o word',
+                       description: 'Grammar test for mestnik case'
+               }
+       ],
+
+       os: [
+               {
+                       word: 'бæстæ',
+                       grammarForm: 'genitive',
+                       expected: 'бæсты',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'бæстæ',
+                       grammarForm: 'allative',
+                       expected: 'бæстæм',
+                       description: 'Grammar test for allative case'
+               },
+               {
+                       word: 'Тигр',
+                       grammarForm: 'dative',
+                       expected: 'Тигрæн',
+                       description: 'Grammar test for dative case'
+               },
+               {
+                       word: 'цъити',
+                       grammarForm: 'dative',
+                       expected: 'цъитийæн',
+                       description: 'Grammar test for dative case'
+               },
+               {
+                       word: 'лæппу',
+                       grammarForm: 'genitive',
+                       expected: 'лæппуйы',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: '2011',
+                       grammarForm: 'equative',
+                       expected: '2011-ау',
+                       description: 'Grammar test for equative case'
+               }
+       ],
+
+       la: [
+               {
+                       word: 'Translatio',
+                       grammarForm: 'genitive',
+                       expected: 'Translationis',
+                       description: 'Grammar test for genitive case'
+               },
+               {
+                       word: 'Translatio',
+                       grammarForm: 'accusative',
+                       expected: 'Translationem',
+                       description: 'Grammar test for accusative case'
+               },
+               {
+                       word: 'Translatio',
+                       grammarForm: 'ablative',
+                       expected: 'Translatione',
+                       description: 'Grammar test for ablative case'
+               }
+       ]
+};
+
+$.each( grammarTests, function ( langCode, test ) {
+       if ( langCode === mw.config.get( 'wgUserLanguage' ) ) {
+               grammarTest( langCode, test );
+       }
+});
index 6855581..50d3754 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -1,11 +1,26 @@
 <?php
-
 /**
  * PHP script to stream out an image thumbnail.
  *
+ * 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 Media
  */
+
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
 if ( isset( $_SERVER['MW_COMPILED'] ) ) {
        require( 'core/includes/WebStart.php' );
index d96ad70..0c9b702 100644 (file)
@@ -1 +1,25 @@
-<?php require './thumb.php'; 
\ No newline at end of file
+<?php
+/**
+ * Version of thumb.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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 Media
+ */
+
+require './thumb.php'; 
index 35a855f..abc71dd 100644 (file)
@@ -1,6 +1,27 @@
 <?php
+/**
+ * PHP script to be used as 404 handler to create and stream out a
+ * not yet existing image thumbnail.
+ *
+ * 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 Media
+ */
 
-# Valid web server entry point
 define( 'THUMB_HANDLER', true );
 
 # Execute thumb.php, having set THUMB_HANDLER so that
index 9090b01..20d681b 100644 (file)
@@ -1 +1,25 @@
-<?php require './thumb_handler.php';
+<?php
+/**
+ * Version of thumb_handler.php to used in web server requiring .php5 extension
+ * to execute scripts with PHP5 egine.
+ *
+ * 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 Media
+ */
+
+require './thumb_handler.php';