Merge "Make it easier to subclass Content and ContentHandler subclasses"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 29 Aug 2014 17:58:04 +0000 (17:58 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 29 Aug 2014 17:58:04 +0000 (17:58 +0000)
684 files changed:
RELEASE-NOTES-1.24
docs/hooks.txt
includes/AjaxDispatcher.php
includes/AjaxResponse.php
includes/AutoLoader.php
includes/Block.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Feed.php
includes/GlobalFunctions.php
includes/Html.php
includes/Import.php
includes/Linker.php
includes/MWTimestamp.php
includes/MagicWord.php
includes/MediaWiki.php
includes/MessageBlobStore.php
includes/OutputPage.php
includes/Pager.php [deleted file]
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/Title.php
includes/User.php
includes/WatchedItem.php
includes/Xml.php
includes/actions/Action.php
includes/actions/DeleteAction.php
includes/actions/EditAction.php
includes/actions/HistoryAction.php
includes/actions/ProtectAction.php
includes/actions/WatchAction.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiEmailUser.php
includes/api/ApiFileRevert.php
includes/api/ApiFormatBase.php
includes/api/ApiFormatDbg.php
includes/api/ApiFormatDump.php
includes/api/ApiFormatFeedWrapper.php [new file with mode: 0644]
includes/api/ApiFormatTxt.php
includes/api/ApiFormatWddx.php
includes/api/ApiFormatYaml.php
includes/api/ApiImageRotate.php
includes/api/ApiImport.php
includes/api/ApiMain.php
includes/api/ApiMove.php
includes/api/ApiOptions.php
includes/api/ApiParamInfo.php
includes/api/ApiParse.php
includes/api/ApiPatrol.php
includes/api/ApiProtect.php
includes/api/ApiQuery.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryTokens.php [new file with mode: 0644]
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiRevisionDelete.php
includes/api/ApiRollback.php
includes/api/ApiSetNotificationTimestamp.php
includes/api/ApiTokens.php
includes/api/ApiUnblock.php
includes/api/ApiUndelete.php
includes/api/ApiUpload.php
includes/api/ApiUserrights.php
includes/api/ApiWatch.php
includes/cache/LinkBatch.php
includes/cache/LinkCache.php
includes/cache/LocalisationCache.php
includes/cache/MapCacheLRU.php
includes/cache/MessageCache.php
includes/changes/ChangesFeed.php
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/config/ConfigFactory.php
includes/content/AbstractContent.php
includes/content/ContentHandler.php
includes/content/MessageContent.php
includes/content/TextContentHandler.php
includes/context/RequestContext.php
includes/db/Database.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabaseMysqli.php
includes/db/DatabasePostgres.php
includes/db/DatabaseUtility.php
includes/db/IORMTable.php
includes/db/LoadMonitor.php
includes/db/ORMTable.php
includes/debug/MWDebug.php
includes/deferred/DeferredUpdates.php
includes/deferred/SearchUpdate.php
includes/filerepo/FileRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/ArchivedFile.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/gallery/ImageGalleryBase.php
includes/gallery/PackedImageGallery.php
includes/htmlform/HTMLAutoCompleteSelectField.php [new file with mode: 0644]
includes/htmlform/HTMLCheckField.php
includes/htmlform/HTMLCheckMatrix.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/installer/DatabaseInstaller.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/MssqlUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerOutput.php
includes/installer/WebInstallerPage.php
includes/installer/i18n/av.json [new file with mode: 0644]
includes/installer/i18n/bg.json
includes/installer/i18n/bn.json
includes/installer/i18n/cs.json
includes/installer/i18n/de.json
includes/installer/i18n/en.json
includes/installer/i18n/et.json
includes/installer/i18n/fa.json
includes/installer/i18n/fr.json
includes/installer/i18n/gl.json
includes/installer/i18n/he.json
includes/installer/i18n/ko.json
includes/installer/i18n/lb.json
includes/installer/i18n/lzh.json
includes/installer/i18n/mk.json
includes/installer/i18n/ms.json
includes/installer/i18n/nl.json
includes/installer/i18n/no.json [deleted file]
includes/installer/i18n/pa.json
includes/installer/i18n/pt.json
includes/installer/i18n/qqq.json
includes/installer/i18n/ru.json
includes/installer/i18n/sc.json
includes/installer/i18n/sv.json
includes/installer/i18n/uk.json
includes/installer/i18n/zh-hans.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/DoubleRedirectJob.php
includes/logging/LogPage.php
includes/media/Exif.php
includes/media/XMP.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/MemcachedClient.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/pager/AlphabeticPager.php [new file with mode: 0644]
includes/pager/IndexPager.php [new file with mode: 0644]
includes/pager/Pager.php [new file with mode: 0644]
includes/pager/ReverseChronologicalPager.php [new file with mode: 0644]
includes/pager/TablePager.php [new file with mode: 0644]
includes/parser/CoreParserFunctions.php
includes/parser/LinkHolderArray.php
includes/parser/MWTidy.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderLESSFunctions.php
includes/resourceloader/ResourceLoaderLanguageDataModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
includes/revisiondelete/RevDelItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelList.php [new file with mode: 0644]
includes/revisiondelete/RevisionDeleteAbstracts.php [deleted file]
includes/search/SearchHighlighter.php
includes/search/SearchResult.php
includes/skins/Skin.php
includes/skins/SkinFactory.php
includes/skins/SkinFallback.php
includes/skins/SkinTemplate.php
includes/specialpage/ImageQueryPage.php
includes/specials/SpecialAllMessages.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialImport.php
includes/specials/SpecialListDuplicatedFiles.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageLanguage.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialResetTokens.php
includes/specials/SpecialRunJobs.php
includes/specials/SpecialSearch.php
includes/specials/SpecialTrackingCategories.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/templates/Userlogin.php
includes/upload/UploadFromChunks.php
includes/utils/Cdb.php
includes/utils/MWCryptHKDF.php
includes/utils/MWCryptRand.php
includes/utils/UIDGenerator.php
includes/utils/ZipDirectoryReader.php
languages/Language.php
languages/LanguageConverter.php
languages/Names.php
languages/i18n/ace.json
languages/i18n/aeb.json
languages/i18n/af.json
languages/i18n/aln.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ang.json
languages/i18n/anp.json
languages/i18n/ar.json
languages/i18n/arc.json
languages/i18n/arn.json
languages/i18n/ary.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/avk.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bar.json
languages/i18n/bbc-latn.json
languages/i18n/bcc.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bho.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/bo.json
languages/i18n/bpy.json
languages/i18n/bqi.json
languages/i18n/br.json
languages/i18n/brh.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/ce.json
languages/i18n/ceb.json
languages/i18n/ch.json
languages/i18n/ckb.json
languages/i18n/co.json
languages/i18n/cps.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/csb.json
languages/i18n/cu.json
languages/i18n/cv.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/dtp.json
languages/i18n/dv.json
languages/i18n/egl.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/ext.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fit.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fur.json
languages/i18n/fy.json
languages/i18n/ga.json
languages/i18n/gag.json
languages/i18n/gan-hans.json
languages/i18n/gan-hant.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gom-latn.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gv.json
languages/i18n/ha.json
languages/i18n/hak.json
languages/i18n/haw.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hil.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/ht.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ie.json
languages/i18n/ig.json
languages/i18n/inh.json
languages/i18n/io.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jam.json
languages/i18n/jut.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kaa.json
languages/i18n/kab.json
languages/i18n/kbd-cyrl.json
languages/i18n/khw.json
languages/i18n/kiu.json
languages/i18n/kk-arab.json
languages/i18n/kk-cyrl.json
languages/i18n/kk-latn.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/koi.json
languages/i18n/krc.json
languages/i18n/kri.json
languages/i18n/ku-latn.json
languages/i18n/kw.json
languages/i18n/ky.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/lez.json
languages/i18n/lfn.json
languages/i18n/lg.json
languages/i18n/li.json
languages/i18n/lij.json
languages/i18n/liv.json
languages/i18n/lmo.json
languages/i18n/ln.json
languages/i18n/lo.json
languages/i18n/loz.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/ltg.json
languages/i18n/lus.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/lzz.json
languages/i18n/mai.json
languages/i18n/map-bms.json
languages/i18n/mg.json
languages/i18n/mhr.json
languages/i18n/min.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mn.json
languages/i18n/mr.json
languages/i18n/mrj.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/mwl.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/nah.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds.json
languages/i18n/nl.json
languages/i18n/nso.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/os.json
languages/i18n/pa.json
languages/i18n/pam.json
languages/i18n/pcd.json
languages/i18n/pdc.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/pnt.json
languages/i18n/prg.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/qug.json
languages/i18n/rgn.json
languages/i18n/rif.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/rup.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sat.json
languages/i18n/sc.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/sd.json
languages/i18n/sdc.json
languages/i18n/se.json
languages/i18n/sei.json
languages/i18n/sgs.json
languages/i18n/shi.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sli.json
languages/i18n/so.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/srn.json
languages/i18n/stq.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/tcy.json
languages/i18n/te.json
languages/i18n/tet.json
languages/i18n/tg-cyrl.json
languages/i18n/tg-latn.json
languages/i18n/th.json
languages/i18n/tk.json
languages/i18n/tl.json
languages/i18n/tly.json
languages/i18n/to.json
languages/i18n/tpi.json
languages/i18n/tr.json
languages/i18n/tru.json
languages/i18n/ts.json
languages/i18n/tt-cyrl.json
languages/i18n/tt-latn.json
languages/i18n/tyv.json
languages/i18n/tzm.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/uz.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vmf.json
languages/i18n/vo.json
languages/i18n/vot.json
languages/i18n/vro.json
languages/i18n/wa.json
languages/i18n/war.json
languages/i18n/wo.json
languages/i18n/wuu.json
languages/i18n/xal.json
languages/i18n/xmf.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zea.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesBar.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLb.php
languages/messages/MessagesNds.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPfl.php
languages/messages/MessagesVmf.php
maintenance/archives/patch-fa_major_mime-chemical.sql [new file with mode: 0644]
maintenance/archives/patch-img_major_mime-chemical.sql [new file with mode: 0644]
maintenance/archives/patch-oi_major_mime-chemical.sql [new file with mode: 0644]
maintenance/archives/upgradeLogging.php
maintenance/backupTextPass.inc
maintenance/checkSyntax.php
maintenance/commandLine.inc
maintenance/deleteEqualMessages.php
maintenance/dictionary/mediawiki.dic
maintenance/findHooks.php
maintenance/findMissingFiles.php
maintenance/getConfiguration.php
maintenance/mssql/archives/patch-fa_major_mime-chemical.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-img_major_mime-chemical.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-oi_major_mime-chemical.sql [new file with mode: 0644]
maintenance/mssql/tables.sql
maintenance/mssql/update-keys.sql [new file with mode: 0644]
maintenance/preprocessorFuzzTest.php
maintenance/purgeChangedPages.php
maintenance/purgeOldText.inc
maintenance/showJobs.php
maintenance/sql.php
maintenance/sqlite.inc
maintenance/storage/compressOld.php
maintenance/storage/recompressTracked.php
maintenance/storage/resolveStubs.php
maintenance/syncFileBackend.php
maintenance/tables.sql
maintenance/update-keys.sql [new file with mode: 0644]
maintenance/updateCollation.php
maintenance/userOptions.inc
mw-config/config-cc.css [new file with mode: 0644]
mw-config/config.css [new file with mode: 0644]
mw-config/config.js [new file with mode: 0644]
mw-config/images/ajax-loader.gif [new file with mode: 0644]
mw-config/images/bullet.gif [new file with mode: 0644]
mw-config/images/critical-32.png [new file with mode: 0644]
mw-config/images/download-32.png [new file with mode: 0644]
mw-config/images/info-32.png [new file with mode: 0644]
mw-config/images/installer-logo.png [new file with mode: 0644]
mw-config/images/tick-32.png [new file with mode: 0644]
mw-config/images/warning-32.png [new file with mode: 0644]
resources/Resources.php
resources/lib/oojs-ui/i18n/ar.json
resources/lib/oojs-ui/i18n/arq.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/br.json
resources/lib/oojs-ui/i18n/el.json
resources/lib/oojs-ui/i18n/gu.json
resources/lib/oojs-ui/i18n/hr.json
resources/lib/oojs-ui/i18n/hu.json
resources/lib/oojs-ui/i18n/ja.json
resources/lib/oojs-ui/i18n/kn.json
resources/lib/oojs-ui/i18n/ko.json
resources/lib/oojs-ui/i18n/nb.json
resources/lib/oojs-ui/i18n/nl.json
resources/lib/oojs-ui/i18n/sw.json
resources/lib/oojs-ui/i18n/uk.json
resources/lib/oojs-ui/i18n/yue.json [new file with mode: 0644]
resources/lib/oojs-ui/images/textures/transparency.svg [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui-agora.css [deleted file]
resources/lib/oojs-ui/oojs-ui-agora.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui-apex.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui-minerva.css [new file with mode: 0644]
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.rtl.css [deleted file]
resources/lib/oojs-ui/oojs-ui.svg.css
resources/lib/oojs-ui/oojs-ui.svg.rtl.css [deleted file]
resources/lib/oojs-ui/themes/agora/images/icons/check.svg [deleted file]
resources/lib/oojs-ui/themes/minerva/images/icons/check.svg [new file with mode: 0644]
resources/lib/oojs/oojs.jquery.js
resources/src/jquery/jquery.suggestions.js
resources/src/mediawiki.action/mediawiki.action.edit.js
resources/src/mediawiki.action/mediawiki.action.view.metadata.js
resources/src/mediawiki.action/mediawiki.action.view.redirect.js [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.view.redirectToFragment.js [deleted file]
resources/src/mediawiki.language/mediawiki.language.fallback.js [new file with mode: 0644]
resources/src/mediawiki.language/mediawiki.language.init.js
resources/src/mediawiki.less/mediawiki.ui/variables.less
resources/src/mediawiki.skinning/content.externallinks.css [new file with mode: 0755]
resources/src/mediawiki.skinning/images/audio-ltr.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/audio-ltr.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/audio-rtl.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/audio-rtl.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/chat-ltr.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/chat-ltr.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/chat-rtl.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/chat-rtl.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/document-ltr.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/document-ltr.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/document-rtl.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/document-rtl.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/external link icons.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/external-ltr.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/external-ltr.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/external-rtl.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/external-rtl.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/ftp-ltr.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/ftp-ltr.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/ftp-rtl.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/ftp-rtl.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/mail.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/mail.svg [new file with mode: 0644]
resources/src/mediawiki.skinning/images/video.png [new file with mode: 0644]
resources/src/mediawiki.skinning/images/video.svg [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.import.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.preferences.css
resources/src/mediawiki.special/mediawiki.special.search.js
resources/src/mediawiki.special/mediawiki.special.userlogin.login.css
resources/src/mediawiki.ui/components/buttons.less
resources/src/mediawiki.ui/components/forms.less
resources/src/mediawiki.ui/components/inputs.less
resources/src/mediawiki/mediawiki.debug.js
resources/src/mediawiki/mediawiki.debug.profile.js
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.jqueryMsg.js
resources/src/polyfill-object-create.js [new file with mode: 0644]
resources/src/startup.js
skins/common/commonContent.css
skins/common/config-cc.css [deleted file]
skins/common/config.css [deleted file]
skins/common/config.js [deleted file]
skins/common/feed.css [deleted file]
skins/common/images/Arr_.png [deleted file]
skins/common/images/Arr_l.png [deleted file]
skins/common/images/Arr_r.png [deleted file]
skins/common/images/Zoom_sans.gif [deleted file]
skins/common/images/add.png [deleted file]
skins/common/images/button_template.png [deleted file]
skins/common/images/closewindow.png [deleted file]
skins/common/images/critical-32.png [deleted file]
skins/common/images/diffunderline.gif [deleted file]
skins/common/images/download-32.png [deleted file]
skins/common/images/info-32.png [deleted file]
skins/common/images/link_icon.gif [deleted file]
skins/common/images/magnify-clip-ltr.png [new file with mode: 0644]
skins/common/images/remove.png [deleted file]
skins/common/images/tick-32.png [deleted file]
skins/common/images/tooltip_icon.png [deleted file]
skins/common/images/warning-32.png [deleted file]
skins/common/oldshared.css
skins/common/shared.css
tests/browser/Gemfile.lock
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/ResourceLoaderTestCase.php
tests/phpunit/data/css/expected.css [new file with mode: 0644]
tests/phpunit/data/css/simple-ltr.gif [new file with mode: 0644]
tests/phpunit/data/css/simple-rtl.gif [new file with mode: 0644]
tests/phpunit/data/css/test.css [new file with mode: 0644]
tests/phpunit/includes/EditPageTest.php
tests/phpunit/includes/ImportTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/api/ApiModuleManagerTest.php
tests/phpunit/includes/api/ApiRevisionDeleteTest.php
tests/phpunit/includes/api/ApiTestCase.php
tests/phpunit/includes/api/RandomImageGenerator.php
tests/phpunit/includes/api/format/ApiFormatNoneTest.php [new file with mode: 0644]
tests/phpunit/includes/api/query/ApiQueryContinueTestBase.php
tests/phpunit/includes/api/query/ApiQueryTestBase.php
tests/phpunit/includes/changes/OldChangesListTest.php
tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php
tests/phpunit/includes/changes/TestRecentChangesHelper.php
tests/phpunit/includes/config/GlobalVarConfigTest.php
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/db/DatabaseTestHelper.php
tests/phpunit/includes/db/ORMRowTest.php
tests/phpunit/includes/debug/MWDebugTest.php
tests/phpunit/includes/deferred/DeferredUpdatesTest.php [new file with mode: 0644]
tests/phpunit/includes/diff/DifferenceEngineTest.php
tests/phpunit/includes/htmlform/HTMLAutoCompleteSelectFieldTest.php [new file with mode: 0644]
tests/phpunit/includes/media/MediaWikiMediaTestCase.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/parser/TidyTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
tests/phpunit/includes/skins/SkinFactoryTest.php
tests/phpunit/includes/specials/ImageListPagerTest.php [new file with mode: 0644]
tests/phpunit/includes/specials/SpecialListFilesTest.php [deleted file]
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/includes/upload/UploadFromUrlTest.php
tests/phpunit/includes/utils/StringUtilsTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/fetchTextTest.php
tests/phpunit/mocks/media/MockImageHandler.php
tests/phpunit/structure/ResourcesTest.php
tests/phpunit/structure/StructureTest.php
tests/phpunit/suites/UploadFromUrlTestSuite.php
tests/qunit/data/generateJqueryMsgData.php
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/startup.test.js
tests/testHelpers.inc

index 30d59ba..1205ceb 100644 (file)
@@ -42,12 +42,11 @@ production.
   configurations are $wgDeletedDirectory and $wgHashedUploadDirectory.
 * The deprecated $wgUseCommaCount variable has been removed.
 * $wgEnableSorbs and $wgSorbsUrl have been removed.
-* The UserCryptPassword and UserComparePassword hooks are no longer called. Any extensions
-  using them must be updated to use the Password Hashing API.
+* The UserCryptPassword and UserComparePassword hooks are no longer called.
+  Any extensions using them must be updated to use the Password Hashing API.
 * $wgCompiledFiles has been removed.
 * $wgSortSpecialPages was removed, the listing on Special:SpecialPages is
   now always sorted.
-* Users must be able to edit a page to be able to delete it.
 * $wgHTCPMulticastAddress, $wgHTCPMulticastRouting and $wgHTCPPort were removed.
 * $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort
   and $wgRC2UDPPrefix have been removed.
@@ -57,6 +56,18 @@ production.
   there is a maintenance script wrapOldPassword.php that can wrap all passwords in
   PBKDF2 (or the hashing algorithm of your choice) if you don't want to wait for your
   users to log in.
+* $wgImportSources can now either be a regular array, or an associative map
+  specifying subprojects on the interwiki map of the target wiki, or a mix of
+  the two. Existing configurations will still work.
+* Users must be able to edit through a page's protection to be able to delete it.
+* The default thumb size ($wgDefaultUserOptions['thumbsize']) is now 300px, up from
+  180px. If you have altered the number of entries in $wgThumbLimits for your wiki, you
+  may need to adjust your default user settings to compensate for the index change.
+* $wgDeferredUpdateList is now deprecated, you should use DeferredUpdates::addUpdate()
+  instead.
+* $wgCanonicalLanguageLinks has been removed. Per Google recommendations, we
+  will not send a rel=canonical pointing to a variant-neutral page, however
+  we will send rel=alternate.
 
 === New features in 1.24 ===
 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
@@ -160,6 +171,12 @@ production.
   log in, rather than being shown a page asking them to log in and having to click
   another link to actually get to the login page.
 * A JSONContent and JSONContentHandler were added for extensions to extend.
+* (bug 35045) Redirects to sections will now update the URL in browser's address
+  bar using the HTML5 History API. When [[Dog]] redirects to [[Animals#Dog]],
+  the user will now see "Animals#Dog" in their browser instead of "Dog#Dog".
+* API token handling has been rewritten. Any API module using tokens will need
+  to be updated. See the entry below under "Action API internal changes".
+* Added HTMLAutoCompleteSelectField.
 
 === Bug fixes in 1.24 ===
 * (bug 50572) MediaWiki:Blockip should support gender
@@ -190,21 +207,23 @@ production.
 * (bug 67870) wfShellExec() cuts off stdout at multiples of 8192 bytes.
 * $wgRunJobsAsync now works with private wikis (e.g. read requires login).
 * (bugs 57238, 65206) Blank pages can now be directly created.
+* (bug 69789) Title::getContentModel() now loads from the database when
+  necessary instead of incorrectly returning the default content model.
 
-=== Web API changes in 1.24 ===
+=== Action API changes in 1.24 ===
 * action=parse API now supports prop=modules, which provides the list of
   ResourceLoader modules that should be used to enhance the parsed content.
 * action=query&meta=siteinfo&siprop=interwikimap returns a new "protorel"
-  field which is true iff protocol-relative urls can be used to access
+  field which is true if protocol-relative urls can be used to access
   a particular interwiki map entry.
-* ApiQueryLogEvents now provides logpage, which is the page ID from the
+* list=logevents now provides logpage, which is the page ID from the
   logging table, if ids are requested and the user has the permissions.
 * action=edit now requires that appendtext, prependtext, or section=new be used
   when using the 'redirect' parameter, to prevent clients accidentally
   overwriting the target page with the content of the redirect.
-* action=logevents will now return an error if both letitle and leprefix are
+* list=logevents will now return an error if both letitle and leprefix are
   specified.
-* action=logevents has a new parameter, lenamespace, to allow filtering by
+* list=logevents has a new parameter, lenamespace, to allow filtering by
   namespace.
 * action=expandtemplates has a new parameter, prop, and a new output format.
   The old format is still used if prop isn't provided, but this is deprecated.
@@ -216,6 +235,21 @@ production.
 * (bug 60734) Actions that use ApiPageSet (e.g. purge, watch,
   setnotificationtimestamp) will now include continuation information when
   using a generator.
+* Removed 'props' and 'errors' from action=paraminfo, as they have extremely
+  limited use and are generally inaccurate, unmaintained, and impossible to
+  properly maintain.
+* Formats dbg, dump, txt, wddx, and yaml are now deprecated.
+* action=paraminfo now indicates when a parameter is specifying a submodule.
+* The iwurl parameter to prop=iwlinks is deprecated in favor of iwprop=url, for
+  parallelism with prop=langlinks.
+* All tokens should be fetched from action=query&meta=tokens; all other methods
+  of fetching tokens are deprecated. The value needed for meta=tokens's 'type'
+  parameter for each module is documented in the action=help output and is
+  returned from action=paraminfo.
+
+=== Action API internal changes in 1.24 ===
+* Methods for handling continuation are added to ApiResult, so actions other
+  than query that use generators can easily support continuation.
 * $wgAPIModules (and the related $wgAPIFormatModules, $wgAPIMetaModules,
   $wgAPIPropModules, and $wgAPIListModules settings) now allow API modules
   to be specified using a "module spec" array instead of a plain class name.
@@ -224,11 +258,66 @@ production.
   to use for the module. This is intended for extensions that want control over
   the instantiation of their API modules, to allow for proper dependency
   injection.
-* Removed 'props' and 'errors' from action=paraminfo, as they have extremely
-  limited use and are generally inaccurate, unmaintained, and impossible to
-  properly maintain. Also removed the corresponding methods from ApiBase and
-  the 'APIGetPossibleErrors' and 'APIGetResultProperties' hooks.
-* Formats dbg, dump, txt, wddx, and yaml are now deprecated.
+* A new param type 'submodule' is available. Parameters of this type will take
+  the list of valid values from the module's ApiModuleManager for the group
+  corresponding to the parameter name.
+* The 'APIGetPossibleErrors' and 'APIGetResultProperties' hooks are no longer used.
+* API token handling has been rewritten. Any API module using tokens will need
+  to be updated:
+  * ApiBase::needsToken now returns a token type instead of boolean true when a
+    token is needed. Returning true will throw an exception. See documentation
+    of that method for details.
+  * Information for the 'token' parameter is automatically set by ApiBase
+    getFinalParams and getFinalParamDescription.
+  * ApiBase::getTokenSalt has been removed.
+  * The hooks APIQueryInfoTokens, APIQueryRevisionsTokens,
+    APIQueryRecentChangesTokens, APIQueryUsersTokens, and
+    ApiTokensGetTokenTypes are deprecated, but are still called to support
+    backwards-compatible token access.
+* ApiBase::validateLimit and ApiBase::validateTimestamp are now protected.
+* The following methods have been deprecated and may be removed in a future
+  release:
+  * ApiBase::getResultProperties
+  * ApiBase::getFinalResultProperties
+  * ApiBase::addTokenProperties
+  * ApiBase::getRequireOnlyOneParameterErrorMessages
+  * ApiBase::getRequireMaxOneParameterErrorMessages
+  * ApiBase::getRequireAtLeastOneParameterErrorMessages
+  * ApiBase::getTitleOrPageIdErrorMessage
+  * ApiBase::getPossibleErrors
+  * ApiBase::getFinalPossibleErrors
+  * ApiBase::parseErrors
+  * ApiQuery::setGeneratorContinue
+  * ApiQueryBase::checkRowCount
+  * ApiQueryBase::titleToKey
+  * ApiQueryBase::keyToTitle
+  * ApiQueryBase::keyPartToTitle
+  * ApiQueryInfo::getTokenFunctions
+  * ApiQueryInfo::resetTokenCache
+  * ApiQueryInfo::getEditToken
+  * ApiQueryInfo::getDeleteToken
+  * ApiQueryInfo::getProtectToken
+  * ApiQueryInfo::getMoveToken
+  * ApiQueryInfo::getBlockToken
+  * ApiQueryInfo::getUnblockToken
+  * ApiQueryInfo::getEmailToken
+  * ApiQueryInfo::getImportToken
+  * ApiQueryInfo::getWatchToken
+  * ApiQueryInfo::getOptionsToken
+  * ApiQueryRecentChanges::getTokenFunctions
+  * ApiQueryRecentChanges::getPatrolToken
+  * ApiQueryRevisions::getTokenFunctions
+  * ApiQueryRevisions::getRollbackToken
+  * ApiQueryUsers::getTokenFunctions
+  * ApiQueryUsers::getUserrightsToken
+* The following classes have been deprecated and may be removed in a future
+  release:
+  * ApiFormatDbg
+  * ApiFormatDump
+  * ApiFormatTxt
+  * ApiFormatWddx
+  * ApiFormatYaml
+  * ApiTokens
 
 === Languages updated in 1.24 ===
 
@@ -288,7 +377,7 @@ changes to languages because of Bugzilla reports.
   set of hooks has been removed and replaced by a single new hook
   SpecialPageBeforeFormDisplay.
 * (bug 65781) Removed block warning on included {{Special:Contributions}}
-* Removed Skin::makeGlobalVariablesScript. (deprecated since 1.19)
+* Removed Skin::makeGlobalVariablesScript(). (deprecated since 1.19)
 * Removed MWNamespace::isMain(). (deprecated since 1.19)
 * Removed Preferences::loadOldSearchNs(). (deprecated since 1.19)
 * Removed OutputPage::getStatusMessage(). (deprecated since 1.18)
@@ -326,13 +415,23 @@ changes to languages because of Bugzilla reports.
   setPreloadedText() from EditPage.php. (deprecated since 1.21)
 * Removed global functions wfArrayLookup(), wfArrayMerge(), wfDebugDieBacktrace()
   and wfTime(). (deprecated since 1.22)
-* Microsoft Internet Explorer 6 is now a "grade C" browser, meaning that
-  JavaScript is no longer executed in this browser. The IEFixes script, which
-  existed purely to provide support for MSIE versions below 7 and which was
-  conditionally loaded for those browsers, was also removed.
+* Browser support for Internet Explorer 6 lowered from Grade A to Grade C,
+  meaning that JavaScript is no longer executed in this browser.
+* Browser support for Opera 11 lowered from Grade A to Grade C.
+* Removed IEFixes module which existed purely to provide support for MSIE versions
+  below 7 (conditionally loaded only for those browsers).
 * Action::checkCanExecute() no longer has a return value.
 * Removed cleanupForIRC(), loadFromCurRow(), newFromCurRow(), notifyRC2UDP()
   and sendToUDP() from RecentChange.php. (deprecated since 1.22)
+* Removed EnhancedChangesList::arrow(), sideArrow(), downArrow(), spacerArrow().
+* Removed Xml::namespaceSelector(). (deprecated since 1.19)
+* Removed WikiPage::estimateRevisionCount(). (deprecated since 1.19)
+* MYSQL: Enum item added to "major MIME type" columns.
+  Running update.php on MySQL < v5.1 may result in heavy processing.
+* RSS and Atom feeds generated by MediaWiki no longer include a fallback
+  stylesheet. It was ignored by most browsers these days anyway.
+* SpecialSearchNoResults hook has been removed. SpecialSearchResults is now
+  called unconditionally.
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
index fc29858..ad5377e 100644 (file)
@@ -402,36 +402,39 @@ an action=query submodule. Use this to extend core API modules.
 &$module: Module object
 &$resultPageSet: ApiPageSet object
 
-'APIQueryInfoTokens': Use this hook to add custom tokens to prop=info. Every
-token has an action, which will be used in the intoken parameter and in the
-output (actiontoken="..."), and a callback function which should return the
-token, or false if the user isn't allowed to obtain it. The prototype of the
-callback function is func($pageid, $title), where $pageid is the page ID of the
-page the token is requested for and $title is the associated Title object. In
-the hook, just add your callback to the $tokenFunctions array and return true
-(returning false makes no sense).
+'APIQueryInfoTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
+Use this hook to add custom tokens to prop=info. Every token has an action,
+which will be used in the intoken parameter and in the output
+(actiontoken="..."), and a callback function which should return the token, or
+false if the user isn't allowed to obtain it. The prototype of the callback
+function is func($pageid, $title), where $pageid is the page ID of the page the
+token is requested for and $title is the associated Title object. In the hook,
+just add your callback to the $tokenFunctions array and return true (returning
+false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'APIQueryRevisionsTokens': Use this hook to add custom tokens to prop=revisions.
-Every token has an action, which will be used in the rvtoken parameter and in
-the output (actiontoken="..."), and a callback function which should return the
-token, or false if the user isn't allowed to obtain it. The prototype of the
-callback function is func($pageid, $title, $rev), where $pageid is the page ID
-of the page associated to the revision the token is requested for, $title the
+'APIQueryRevisionsTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
+Use this hook to add custom tokens to prop=revisions. Every token has an
+action, which will be used in the rvtoken parameter and in the output
+(actiontoken="..."), and a callback function which should return the token, or
+false if the user isn't allowed to obtain it. The prototype of the callback
+function is func($pageid, $title, $rev), where $pageid is the page ID of the
+page associated to the revision the token is requested for, $title the
 associated Title object and $rev the associated Revision object. In the hook,
 just add your callback to the $tokenFunctions array and return true (returning
 false makes no sense).
 $tokenFunctions: array(action => callback)
 
-'APIQueryRecentChangesTokens': Use this hook to add custom tokens to
-list=recentchanges. Every token has an action, which will be used in the rctoken
-parameter and in the output (actiontoken="..."), and a callback function which
-should return the token, or false if the user isn't allowed to obtain it. The
-prototype of the callback function is func($pageid, $title, $rc), where $pageid
-is the page ID of the page associated to the revision the token is requested
-for, $title the associated Title object and $rc the associated RecentChange
-object. In the hook, just add your callback to the $tokenFunctions array and
-return true (returning false makes no sense).
+'APIQueryRecentChangesTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
+Use this hook to add custom tokens to list=recentchanges. Every token has an
+action, which will be used in the rctoken parameter and in the output
+(actiontoken="..."), and a callback function which should return the token, or
+false if the user isn't allowed to obtain it. The prototype of the callback
+function is func($pageid, $title, $rc), where $pageid is the page ID of the
+page associated to the revision the token is requested for, $title the
+associated Title object and $rc the associated RecentChange object. In the
+hook, just add your callback to the $tokenFunctions array and return true
+(returning false makes no sense).
 $tokenFunctions: array(action => callback)
 
 'APIQuerySiteInfoGeneralInfo': Use this hook to add extra information to the
@@ -443,13 +446,19 @@ $module: the current ApiQuerySiteInfo module
 sites statistics information.
 &$results: array of results, add things here
 
-'APIQueryUsersTokens': Use this hook to add custom token to list=users. Every
-token has an action, which will be used in the ustoken parameter and in the
-output (actiontoken="..."), and a callback function which should return the
-token, or false if the user isn't allowed to obtain it. The prototype of the
-callback function is func($user) where $user is the User object. In the hook,
-just add your callback to the $tokenFunctions array and return true (returning
-false makes no sense).
+'ApiQueryTokensRegisterTypes': Use this hook to add additional token types to
+action=query&meta=tokens. Note that most modules will probably be able to use
+the 'csrf' token instead of creating their own token types.
+&$salts: array( type => salt to pass to User::getEditToken() )
+
+'APIQueryUsersTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
+Use this hook to add custom token to list=users. Every token has an action,
+which will be used in the ustoken parameter and in the output
+(actiontoken="..."), and a callback function which should return the token, or
+false if the user isn't allowed to obtain it. The prototype of the callback
+function is func($user) where $user is the User object. In the hook, just add
+your callback to the $tokenFunctions array and return true (returning false
+makes no sense).
 $tokenFunctions: array(action => callback)
 
 'ApiMain::onException': Called by ApiMain::executeActionWithErrorHandling() when
@@ -463,8 +472,8 @@ key for the array that represents the service data. In this data array, the
 key-value-pair identified by the apiLink key is required.
 &$apis: array of services
 
-'ApiTokensGetTokenTypes': Use this hook to extend action=tokens with new token
-types.
+'ApiTokensGetTokenTypes': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
+Use this hook to extend action=tokens with new token types.
 &$tokenTypes: supported token types in format 'type' => callback function
 used to retrieve this type of tokens.
 
@@ -1773,13 +1782,6 @@ $db: The database object to be queried.
 &$opts: Options for the query.
 &$join_conds: Join conditions for the query.
 
-'MonoBookTemplateToolboxEnd': DEPRECATED. Called by Monobook skin after toolbox
-links have been rendered (useful for adding more). Note: this is only run for
-the Monobook skin. To add items to the toolbox you should use the
-SkinTemplateToolboxEnd hook instead, which works for all "SkinTemplate"-type
-skins.
-$tools: array of tools
-
 'BaseTemplateToolbox': Called by BaseTemplate when building the $toolbox array
 and returning it for the skin to output. You can add items to the toolbox while
 still letting the skin make final decisions on skin-specific markup conventions
@@ -2511,16 +2513,11 @@ $specialSearch: SpecialSearch object ($this)
 $output: $wgOut
 $term: Search term specified by the user
 
-'SpecialSearchResults': Called before search result display when there are
-matches.
+'SpecialSearchResults': Called before search result display
 $term: string of search term
 &$titleMatches: empty or SearchResultSet object
 &$textMatches: empty or SearchResultSet object
 
-'SpecialSearchNoResults': Called before search result display when there are no
-matches.
-$term: string of search term
-
 'SpecialStatsAddExtra': Add extra statistic at the end of Special:Statistics.
 &$extraStats: Array to save the new stats
   ( $extraStats['<name of statistic>'] => <value>; )
index dde8467..9bc92be 100644 (file)
@@ -47,12 +47,19 @@ class AjaxDispatcher {
         */
        private $args;
 
+       /**
+        * @var Config
+        */
+       private $config;
+
        /**
         * Load up our object with user supplied data
         */
-       function __construct() {
+       function __construct( Config $config ) {
                wfProfileIn( __METHOD__ );
 
+               $this->config = $config;
+
                $this->mode = "";
 
                if ( !empty( $_GET["rs"] ) ) {
@@ -95,17 +102,17 @@ class AjaxDispatcher {
         * BEWARE! Data are passed as they have been supplied by the user,
         * they should be carefully handled in the function processing the
         * request.
+        *
+        * @param User $user
         */
-       function performAction() {
-               global $wgAjaxExportList, $wgUser;
-
+       function performAction( User $user ) {
                if ( empty( $this->mode ) ) {
                        return;
                }
 
                wfProfileIn( __METHOD__ );
 
-               if ( !in_array( $this->func_name, $wgAjaxExportList ) ) {
+               if ( !in_array( $this->func_name, $this->config->get( 'AjaxExportList' ) ) ) {
                        wfDebug( __METHOD__ . ' Bad Request for unknown function ' . $this->func_name . "\n" );
 
                        wfHttpError(
@@ -113,7 +120,7 @@ class AjaxDispatcher {
                                'Bad Request',
                                "unknown function " . $this->func_name
                        );
-               } elseif ( !User::isEveryoneAllowed( 'read' ) && !$wgUser->isAllowed( 'read' ) ) {
+               } elseif ( !User::isEveryoneAllowed( 'read' ) && !$user->isAllowed( 'read' ) ) {
                        wfHttpError(
                                403,
                                'Forbidden',
index 41cbd24..8e9f490 100644 (file)
@@ -70,12 +70,19 @@ class AjaxResponse {
         */
        private $mText;
 
+       /**
+        * @var Config
+        */
+       private $mConfig;
+
        /**
         * @param string|null $text
+        * @param Config|null $config
         */
-       function __construct( $text = null ) {
+       function __construct( $text = null, Config $config = null ) {
                $this->mCacheDuration = null;
                $this->mVary = null;
+               $this->mConfig = $config ?: ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
 
                $this->mDisabled = false;
                $this->mText = '';
@@ -150,8 +157,6 @@ class AjaxResponse {
         * Construct the header and output it
         */
        function sendHeaders() {
-               global $wgUseSquid, $wgUseESI;
-
                if ( $this->mResponseCode ) {
                        $n = preg_replace( '/^ *(\d+)/', '\1', $this->mResponseCode );
                        header( "Status: " . $this->mResponseCode, true, (int)$n );
@@ -170,12 +175,12 @@ class AjaxResponse {
                        # and tell the client to always check with the squid. Otherwise,
                        # tell the client to use a cached copy, without a way to purge it.
 
-                       if ( $wgUseSquid ) {
+                       if ( $this->mConfig->get( 'UseSquid' ) ) {
                                # Expect explicit purge of the proxy cache, but require end user agents
                                # to revalidate against the proxy on each visit.
                                # Surrogate-Control controls our Squid, Cache-Control downstream caches
 
-                               if ( $wgUseESI ) {
+                               if ( $this->mConfig->get( 'UseESI' ) ) {
                                        header( 'Surrogate-Control: max-age=' . $this->mCacheDuration . ', content="ESI/1.0"' );
                                        header( 'Cache-Control: s-maxage=0, must-revalidate, max-age=0' );
                                } else {
index f7f4c59..04802f9 100644 (file)
@@ -31,7 +31,6 @@ $wgAutoloadLocalClasses = array(
        # Includes
        'AjaxDispatcher' => 'includes/AjaxDispatcher.php',
        'AjaxResponse' => 'includes/AjaxResponse.php',
-       'AlphabeticPager' => 'includes/Pager.php',
        'AtomFeed' => 'includes/Feed.php',
        'AuthPlugin' => 'includes/AuthPlugin.php',
        'AuthPluginUser' => 'includes/AuthPlugin.php',
@@ -82,6 +81,7 @@ $wgAutoloadLocalClasses = array(
        'Html' => 'includes/Html.php',
        'HtmlFormatter' => 'includes/HtmlFormatter.php',
        'HTMLApiField' => 'includes/htmlform/HTMLApiField.php',
+       'HTMLAutoCompleteSelectField' => 'includes/htmlform/HTMLAutoCompleteSelectField.php',
        'HTMLButtonField' => 'includes/htmlform/HTMLButtonField.php',
        'HTMLCheckField' => 'includes/htmlform/HTMLCheckField.php',
        'HTMLCheckMatrix' => 'includes/htmlform/HTMLCheckMatrix.php',
@@ -110,7 +110,6 @@ $wgAutoloadLocalClasses = array(
        'IdentityCollation' => 'includes/Collation.php',
        'ImportStreamSource' => 'includes/Import.php',
        'ImportStringSource' => 'includes/Import.php',
-       'IndexPager' => 'includes/Pager.php',
        'Interwiki' => 'includes/interwiki/Interwiki.php',
        'License' => 'includes/Licenses.php',
        'Licenses' => 'includes/Licenses.php',
@@ -128,7 +127,6 @@ $wgAutoloadLocalClasses = array(
        'MWHttpRequest' => 'includes/HttpFunctions.php',
        'MWNamespace' => 'includes/MWNamespace.php',
        'OutputPage' => 'includes/OutputPage.php',
-       'Pager' => 'includes/Pager.php',
        'PathRouter' => 'includes/PathRouter.php',
        'PathRouterPatternReplacer' => 'includes/PathRouter.php',
        'PhpHttpRequest' => 'includes/HttpFunctions.php',
@@ -143,7 +141,6 @@ $wgAutoloadLocalClasses = array(
        'PrefixSearch' => 'includes/PrefixSearch.php',
        'ProtectionForm' => 'includes/ProtectionForm.php',
        'RawMessage' => 'includes/Message.php',
-       'ReverseChronologicalPager' => 'includes/Pager.php',
        'RevisionItem' => 'includes/RevisionList.php',
        'RevisionItemBase' => 'includes/RevisionList.php',
        'RevisionListBase' => 'includes/RevisionList.php',
@@ -162,7 +159,6 @@ $wgAutoloadLocalClasses = array(
        'StringPrefixSearch' => 'includes/PrefixSearch.php',
        'StubObject' => 'includes/StubObject.php',
        'StubUserLang' => 'includes/StubObject.php',
-       'TablePager' => 'includes/Pager.php',
        'MWTimestamp' => 'includes/MWTimestamp.php',
        'TimestampException' => 'includes/TimestampException.php',
        'Title' => 'includes/Title.php',
@@ -232,7 +228,7 @@ $wgAutoloadLocalClasses = array(
        'ApiFormatBase' => 'includes/api/ApiFormatBase.php',
        'ApiFormatDbg' => 'includes/api/ApiFormatDbg.php',
        'ApiFormatDump' => 'includes/api/ApiFormatDump.php',
-       'ApiFormatFeedWrapper' => 'includes/api/ApiFormatBase.php',
+       'ApiFormatFeedWrapper' => 'includes/api/ApiFormatFeedWrapper.php',
        'ApiFormatJson' => 'includes/api/ApiFormatJson.php',
        'ApiFormatNone' => 'includes/api/ApiFormatNone.php',
        'ApiFormatPhp' => 'includes/api/ApiFormatPhp.php',
@@ -306,6 +302,7 @@ $wgAutoloadLocalClasses = array(
        'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php',
        'ApiQueryStashImageInfo' => 'includes/api/ApiQueryStashImageInfo.php',
        'ApiQueryTags' => 'includes/api/ApiQueryTags.php',
+       'ApiQueryTokens' => 'includes/api/ApiQueryTokens.php',
        'ApiQueryUserInfo' => 'includes/api/ApiQueryUserInfo.php',
        'ApiQueryUsers' => 'includes/api/ApiQueryUsers.php',
        'ApiQueryWatchlist' => 'includes/api/ApiQueryWatchlist.php',
@@ -787,6 +784,13 @@ $wgAutoloadLocalClasses = array(
        'WikiFilePage' => 'includes/page/WikiFilePage.php',
        'WikiPage' => 'includes/page/WikiPage.php',
 
+       # includes/pager
+       'AlphabeticPager' => 'includes/pager/AlphabeticPager.php',
+       'IndexPager' => 'includes/pager/IndexPager.php',
+       'Pager' => 'includes/pager/Pager.php',
+       'ReverseChronologicalPager' => 'includes/pager/ReverseChronologicalPager.php',
+       'TablePager' => 'includes/pager/TablePager.php',
+
        # includes/parser
        'CacheTime' => 'includes/parser/CacheTime.php',
        'CoreParserFunctions' => 'includes/parser/CoreParserFunctions.php',
@@ -893,8 +897,8 @@ $wgAutoloadLocalClasses = array(
        'RevDelArchiveList' => 'includes/revisiondelete/RevDelArchiveList.php',
        'RevDelFileItem' => 'includes/revisiondelete/RevDelFileItem.php',
        'RevDelFileList' => 'includes/revisiondelete/RevDelFileList.php',
-       'RevDelItem' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
-       'RevDelList' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
+       'RevDelItem' => 'includes/revisiondelete/RevDelItem.php',
+       'RevDelList' => 'includes/revisiondelete/RevDelList.php',
        'RevDelLogItem' => 'includes/revisiondelete/RevDelLogItem.php',
        'RevDelLogList' => 'includes/revisiondelete/RevDelLogList.php',
        'RevDelRevisionItem' => 'includes/revisiondelete/RevDelRevisionItem.php',
index 5881353..6a29a05 100644 (file)
@@ -80,6 +80,20 @@ class Block {
        /**
         * @todo FIXME: Don't know what the best format to have for this constructor
         *   is, but fourteen optional parameters certainly isn't it.
+        * @param string $address
+        * @param int $user
+        * @param int $by
+        * @param string $reason
+        * @param mixed $timestamp
+        * @param int $auto
+        * @param string $expiry
+        * @param int $anonOnly
+        * @param int $createAccount
+        * @param int $enableAutoblock
+        * @param int $hideName
+        * @param int $blockEmail
+        * @param int $allowUsertalk
+        * @param string $byText
         */
        function __construct( $address = '', $user = 0, $by = 0, $reason = '',
                $timestamp = 0, $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
@@ -582,7 +596,6 @@ class Block {
         *
         * @param Block $block
         * @param array &$blockIds
-        * @return array Block IDs of retroactive autoblocks made
         */
        protected static function defaultRetroactiveAutoblock( Block $block, array &$blockIds ) {
                global $wgPutIPinRC;
index 22eb3d1..60694c9 100644 (file)
@@ -87,12 +87,11 @@ class CategoryViewer extends ContextSource {
        function __construct( $title, IContextSource $context, $from = array(),
                $until = array(), $query = array()
        ) {
-               global $wgCategoryPagingLimit;
                $this->title = $title;
                $this->setContext( $context );
                $this->from = $from;
                $this->until = $until;
-               $this->limit = $wgCategoryPagingLimit;
+               $this->limit = $context->getConfig()->get( 'CategoryPagingLimit' );
                $this->cat = Category::newFromTitle( $title );
                $this->query = $query;
                $this->collation = Collation::singleton();
@@ -105,10 +104,10 @@ class CategoryViewer extends ContextSource {
         * @return string HTML output
         */
        public function getHTML() {
-               global $wgCategoryMagicGallery;
                wfProfileIn( __METHOD__ );
 
-               $this->showGallery = $wgCategoryMagicGallery && !$this->getOutput()->mNoGallery;
+               $this->showGallery = $this->getConfig()->get( 'CategoryMagicGallery' )
+                       && !$this->getOutput()->mNoGallery;
 
                $this->clearCategoryState();
                $this->doCategoryQuery();
@@ -154,14 +153,13 @@ class CategoryViewer extends ContextSource {
                        // Note that null for mode is taken to mean use default.
                        $mode = $this->getRequest()->getVal( 'gallerymode', null );
                        try {
-                               $this->gallery = ImageGalleryBase::factory( $mode );
+                               $this->gallery = ImageGalleryBase::factory( $mode, $this->getContext() );
                        } catch ( MWException $e ) {
                                // User specified something invalid, fallback to default.
-                               $this->gallery = ImageGalleryBase::factory();
+                               $this->gallery = ImageGalleryBase::factory( false, $this->getContext() );
                        }
 
                        $this->gallery->setHideBadImages();
-                       $this->gallery->setContext( $this->getContext() );
                } else {
                        $this->imgsNoGallery = array();
                        $this->imgsNoGallery_start_char = array();
index cf00701..5fc7377 100644 (file)
@@ -2699,11 +2699,6 @@ $wgDisableLangConversion = false;
  */
 $wgDisableTitleConversion = false;
 
-/**
- * Whether to enable canonical language links in meta data.
- */
-$wgCanonicalLanguageLinks = true;
-
 /**
  * Default variant code, if false, the default will be the language code
  */
@@ -3446,12 +3441,14 @@ $wgResourceLoaderValidateStaticJS = false;
 $wgResourceLoaderExperimentalAsyncLoading = false;
 
 /**
- * Global LESS variables. An associative array binding variable names to CSS
- * string values.
+ * Global LESS variables. An associative array binding variable names to
+ * LESS code snippets representing their values.
+ *
+ * Adding an item here is equivalent to writing `@variable: value;`
+ * at the beginning of all your .less files, with all the consequences.
+ * In particular, string values must be escaped and quoted.
  *
- * Because the hashed contents of this array are used to construct the cache key
- * that ResourceLoader uses to look up LESS compilation results, updating this
- * array can be used to deliberately invalidate the set of cached results.
+ * Changes to LESS variables do not trigger cache invalidation.
  *
  * @par Example:
  * @code
@@ -3469,10 +3466,7 @@ $wgResourceLoaderLESSVars = array();
  * Custom LESS functions. An associative array mapping function name to PHP
  * callable.
  *
- * Changes to LESS functions do not trigger cache invalidation. If you update
- * the behavior of a LESS function and need to invalidate stale compilation
- * results, you can touch one of values in $wgResourceLoaderLESSVars, as
- * documented above.
+ * Changes to LESS functions do not trigger cache invalidation.
  *
  * @since 1.22
  */
@@ -4248,7 +4242,7 @@ $wgDefaultUserOptions = array(
        'showtoolbar' => 1,
        'skin' => false,
        'stubthreshold' => 0,
-       'thumbsize' => 2,
+       'thumbsize' => 5,
        'underline' => 2,
        'uselivepreview' => 0,
        'usenewrc' => 0,
@@ -5658,9 +5652,9 @@ $wgGitBin = '/usr/bin/git';
  */
 $wgGitRepositoryViewers = array(
        'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
-               'https://git.wikimedia.org/commit/%r/%H',
+               'https://git.wikimedia.org/tree/%r/%H',
        'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
-               'https://git.wikimedia.org/commit/%r/%H',
+               'https://git.wikimedia.org/tree/%r/%H',
 );
 
 /** @} */ # End of maintenance }
@@ -5995,6 +5989,17 @@ $wgShowCreditsIfMax = true;
  * Special:Import (for sysops). Since complete page history can be imported,
  * these should be 'trusted'.
  *
+ * This can either be a regular array, or an associative map specifying
+ * subprojects on the interwiki map of the target wiki, or a mix of the two,
+ * e.g.
+ * @code
+ *     $wgImportSources = array(
+ *         'wikipedia' => array( 'cs', 'en', 'fr', 'zh' ),
+ *         'wikispecies',
+ *         'wikia' => array( 'animanga', 'brickipedia', 'desserts' ),
+ *     );
+ * @endcode
+ *
  * If a user has the 'import' permission but not the 'importupload' permission,
  * they will only be able to run imports through this transwiki interface.
  */
index 145eae2..c3b0dad 100644 (file)
@@ -217,8 +217,13 @@ class EditPage {
        /** @var bool|stdClass */
        protected $lastDelete;
 
-       /** @var bool */
-       protected $mTokenOk = false;
+       /** @var bool
+        * This is public because SemanticForms uses it (bug 67522).
+        * However, please consider using this property publicly
+        * to be deprecated.
+        * @protected
+        */
+       public $mTokenOk = false;
 
        /** @var bool */
        protected $mTokenOkExceptSuffix = false;
@@ -2758,7 +2763,6 @@ class EditPage {
         *   up top, or false if this is the comment summary
         *   down below the textarea
         * @param string $summary The text of the summary to display
-        * @return string
         */
        protected function showSummaryInput( $isSubjectPreview, $summary = "" ) {
                global $wgOut, $wgContLang;
@@ -3100,6 +3104,7 @@ HTML
         * Get the copyright warning
         *
         * Renamed to getCopyrightWarning(), old name kept around for backwards compatibility
+        * @return string
         */
        protected function getCopywarn() {
                return self::getCopyrightWarning( $this->mTitle );
@@ -3553,11 +3558,6 @@ HTML
                 * inserted between the two when no selection is highlighted
                 * and.  The tip text is shown when the user moves the mouse
                 * over the button.
-                *
-                * Also here: accesskeys (key), which are not used yet until
-                * someone can figure out a way to make them work in
-                * IE. However, we should make sure these keys are not defined
-                * on the edit page.
                 */
                $toolarray = array(
                        array(
@@ -3567,7 +3567,6 @@ HTML
                                'close'  => '\'\'\'',
                                'sample' => wfMessage( 'bold_sample' )->text(),
                                'tip'    => wfMessage( 'bold_tip' )->text(),
-                               'key'    => 'B'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-italic' ),
@@ -3576,7 +3575,6 @@ HTML
                                'close'  => '\'\'',
                                'sample' => wfMessage( 'italic_sample' )->text(),
                                'tip'    => wfMessage( 'italic_tip' )->text(),
-                               'key'    => 'I'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-link' ),
@@ -3585,7 +3583,6 @@ HTML
                                'close'  => ']]',
                                'sample' => wfMessage( 'link_sample' )->text(),
                                'tip'    => wfMessage( 'link_tip' )->text(),
-                               'key'    => 'L'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-extlink' ),
@@ -3594,7 +3591,6 @@ HTML
                                'close'  => ']',
                                'sample' => wfMessage( 'extlink_sample' )->text(),
                                'tip'    => wfMessage( 'extlink_tip' )->text(),
-                               'key'    => 'X'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-headline' ),
@@ -3603,7 +3599,6 @@ HTML
                                'close'  => " ==\n",
                                'sample' => wfMessage( 'headline_sample' )->text(),
                                'tip'    => wfMessage( 'headline_tip' )->text(),
-                               'key'    => 'H'
                        ),
                        $imagesAvailable ? array(
                                'image'  => $wgLang->getImageFile( 'button-image' ),
@@ -3612,7 +3607,6 @@ HTML
                                'close'  => ']]',
                                'sample' => wfMessage( 'image_sample' )->text(),
                                'tip'    => wfMessage( 'image_tip' )->text(),
-                               'key'    => 'D',
                        ) : false,
                        $imagesAvailable ? array(
                                'image'  => $wgLang->getImageFile( 'button-media' ),
@@ -3621,7 +3615,6 @@ HTML
                                'close'  => ']]',
                                'sample' => wfMessage( 'media_sample' )->text(),
                                'tip'    => wfMessage( 'media_tip' )->text(),
-                               'key'    => 'M'
                        ) : false,
                        array(
                                'image'  => $wgLang->getImageFile( 'button-nowiki' ),
@@ -3630,7 +3623,6 @@ HTML
                                'close'  => "</nowiki>",
                                'sample' => wfMessage( 'nowiki_sample' )->text(),
                                'tip'    => wfMessage( 'nowiki_tip' )->text(),
-                               'key'    => 'N'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-sig' ),
@@ -3639,7 +3631,6 @@ HTML
                                'close'  => '',
                                'sample' => '',
                                'tip'    => wfMessage( 'sig_tip' )->text(),
-                               'key'    => 'Y'
                        ),
                        array(
                                'image'  => $wgLang->getImageFile( 'button-hr' ),
@@ -3648,7 +3639,6 @@ HTML
                                'close'  => '',
                                'sample' => '',
                                'tip'    => wfMessage( 'hr_tip' )->text(),
-                               'key'    => 'R'
                        )
                );
 
index 60e623b..03dd7f5 100644 (file)
@@ -258,20 +258,11 @@ abstract class ChannelFeed extends FeedItem {
        }
 
        /**
-        * Output the initial XML headers with a stylesheet for legibility
-        * if someone finds it in a browser.
+        * Output the initial XML headers.
         */
        protected function outXmlHeader() {
-               global $wgStylePath, $wgStyleVersion;
-
                $this->httpHeaders();
                echo '<?xml version="1.0"?>' . "\n";
-               echo '<?xml-stylesheet type="text/css" href="' .
-                       htmlspecialchars( wfExpandUrl(
-                               "$wgStylePath/common/feed.css?$wgStyleVersion",
-                               PROTO_CURRENT
-                       ) ) .
-                       '"?' . ">\n";
        }
 }
 
index 4c2b772..ddea620 100644 (file)
@@ -38,6 +38,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 if ( !function_exists( 'mb_substr' ) ) {
        /**
         * @codeCoverageIgnore
+        * @see Fallback::mb_substr
         * @return string
         */
        function mb_substr( $str, $start, $count = 'end' ) {
@@ -46,6 +47,7 @@ if ( !function_exists( 'mb_substr' ) ) {
 
        /**
         * @codeCoverageIgnore
+        * @see Fallback::mb_substr_split_unicode
         * @return int
         */
        function mb_substr_split_unicode( $str, $splitPos ) {
@@ -56,6 +58,7 @@ if ( !function_exists( 'mb_substr' ) ) {
 if ( !function_exists( 'mb_strlen' ) ) {
        /**
         * @codeCoverageIgnore
+        * @see Fallback::mb_strlen
         * @return int
         */
        function mb_strlen( $str, $enc = '' ) {
@@ -66,6 +69,7 @@ if ( !function_exists( 'mb_strlen' ) ) {
 if ( !function_exists( 'mb_strpos' ) ) {
        /**
         * @codeCoverageIgnore
+        * @see Fallback::mb_strpos
         * @return int
         */
        function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
@@ -76,6 +80,7 @@ if ( !function_exists( 'mb_strpos' ) ) {
 if ( !function_exists( 'mb_strrpos' ) ) {
        /**
         * @codeCoverageIgnore
+        * @see Fallback::mb_strrpos
         * @return int
         */
        function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
@@ -88,6 +93,7 @@ if ( !function_exists( 'mb_strrpos' ) ) {
 if ( !function_exists( 'gzdecode' ) ) {
        /**
         * @codeCoverageIgnore
+        * @param string $data
         * @return string
         */
        function gzdecode( $data ) {
index 9e7f5c4..48dbdba 100644 (file)
@@ -673,6 +673,7 @@ class Html {
         * @param string $name Name attribute
         * @param bool $checked Whether the checkbox is checked or not
         * @param array $attribs Array of additional attributes
+        * @return string
         */
        public static function check( $name, $checked = false, array $attribs = array() ) {
                if ( isset( $attribs['value'] ) ) {
@@ -695,6 +696,7 @@ class Html {
         * @param string $name Name attribute
         * @param bool $checked Whether the checkbox is checked or not
         * @param array $attribs Array of additional attributes
+        * @return string
         */
        public static function radio( $name, $checked = false, array $attribs = array() ) {
                if ( isset( $attribs['value'] ) ) {
@@ -717,6 +719,7 @@ class Html {
         * @param string $label Contents of the label
         * @param string $id ID of the element being labeled
         * @param array $attribs Additional attributes
+        * @return string
         */
        public static function label( $label, $id, array $attribs = array() ) {
                $attribs += array(
index e6b5dc2..b3ca041 100644 (file)
@@ -429,53 +429,12 @@ class WikiImporter {
                return '';
        }
 
-       # --------------
-
-       /** Left in for debugging */
-       private function dumpElement() {
-               static $lookup = null;
-               if ( !$lookup ) {
-                       $xmlReaderConstants = array(
-                               "NONE",
-                               "ELEMENT",
-                               "ATTRIBUTE",
-                               "TEXT",
-                               "CDATA",
-                               "ENTITY_REF",
-                               "ENTITY",
-                               "PI",
-                               "COMMENT",
-                               "DOC",
-                               "DOC_TYPE",
-                               "DOC_FRAGMENT",
-                               "NOTATION",
-                               "WHITESPACE",
-                               "SIGNIFICANT_WHITESPACE",
-                               "END_ELEMENT",
-                               "END_ENTITY",
-                               "XML_DECLARATION",
-                       );
-                       $lookup = array();
-
-                       foreach ( $xmlReaderConstants as $name ) {
-                               $lookup[constant( "XmlReader::$name" )] = $name;
-                       }
-               }
-
-               print var_dump(
-                       $lookup[$this->reader->nodeType],
-                       $this->reader->name,
-                       $this->reader->value
-               ) . "\n\n";
-       }
-
        /**
         * Primary entry point
         * @throws MWException
         * @return bool
         */
        public function doImport() {
-
                // Calls to reader->read need to be wrapped in calls to
                // libxml_disable_entity_loader() to avoid local file
                // inclusion attacks (bug 46932).
@@ -1535,9 +1494,6 @@ class WikiRevision {
                return true;
        }
 
-       /**
-        * @return mixed
-        */
        function importLogItem() {
                $dbw = wfGetDB( DB_MASTER );
                # @todo FIXME: This will not record autoblocks
index abc9404..f0b16ab 100644 (file)
@@ -259,6 +259,7 @@ class Linker {
 
        /**
         * Identical to link(), except $options defaults to 'known'.
+        * @see Linker::link
         * @return string
         */
        public static function linkKnown(
@@ -771,7 +772,6 @@ class Linker {
        public static function makeThumbLink2( Title $title, $file, $frameParams = array(),
                $handlerParams = array(), $time = false, $query = ""
        ) {
-               global $wgStylePath, $wgContLang;
                $exists = $file && $file->exists();
 
                # Shortcuts
@@ -880,12 +880,7 @@ class Linker {
                                                'href' => $url,
                                                'class' => 'internal',
                                                'title' => wfMessage( 'thumbnail-more' )->text() ),
-                                               Html::element( 'img', array(
-                                                       'src' => $wgStylePath . '/common/images/magnify-clip'
-                                                               . ( $wgContLang->isRTL() ? '-rtl' : '' ) . '.png',
-                                                       'width' => 15,
-                                                       'height' => 11,
-                                                       'alt' => "" ) ) ) );
+                                               "" ) );
                        }
                }
                $s .= '  <div class="thumbcaption">' . $zoomIcon . $fp['caption'] . "</div></div></div>";
@@ -914,10 +909,10 @@ class Linker {
 
                        $thumb15 = $file->transform( $hp15 );
                        $thumb20 = $file->transform( $hp20 );
-                       if ( $thumb15 && $thumb15->getUrl() !== $thumb->getUrl() ) {
+                       if ( $thumb15 && !$thumb15->isError() && $thumb15->getUrl() !== $thumb->getUrl() ) {
                                $thumb->responsiveUrls['1.5'] = $thumb15->getUrl();
                        }
-                       if ( $thumb20 && $thumb20->getUrl() !== $thumb->getUrl() ) {
+                       if ( $thumb20 && !$thumb20->isError() && $thumb20->getUrl() !== $thumb->getUrl() ) {
                                $thumb->responsiveUrls['2'] = $thumb20->getUrl();
                        }
                }
@@ -2203,7 +2198,7 @@ class Linker {
         *
         * @param User $user
         * @param Revision $rev
-        * @param Revision $title
+        * @param Title $title
         * @return string HTML fragment
         */
        public static function getRevDeleteLink( User $user, Revision $rev, Title $title ) {
index bc59588..26f5e54 100644 (file)
@@ -238,7 +238,6 @@ class MWTimestamp {
         * @since 1.22
         *
         * @param User $user User to take preferences from
-        * @param[out] MWTimestamp $ts Timestamp to adjust
         * @return DateInterval Offset that was applied to the timestamp
         */
        public function offsetForUser( User $user ) {
index 7decbee..4d17298 100644 (file)
@@ -754,6 +754,7 @@ class MagicWordArray {
 
        /**
         * Get a 2-d hashtable for this array
+        * @return array
         */
        function getHash() {
                if ( is_null( $this->hash ) ) {
@@ -775,6 +776,7 @@ class MagicWordArray {
 
        /**
         * Get the base regex
+        * @return array
         */
        function getBaseRegex() {
                if ( is_null( $this->baseRegex ) ) {
@@ -799,6 +801,7 @@ class MagicWordArray {
 
        /**
         * Get an unanchored regex that does not match parameters
+        * @return array
         */
        function getRegex() {
                if ( is_null( $this->regex ) ) {
index 281080c..0424633 100644 (file)
@@ -521,8 +521,8 @@ class MediaWiki {
                        $this->context->setTitle( $title );
                        $wgTitle = $title;
 
-                       $dispatcher = new AjaxDispatcher();
-                       $dispatcher->performAction();
+                       $dispatcher = new AjaxDispatcher( $this->config );
+                       $dispatcher->performAction( $this->context->getUser() );
                        wfProfileOut( __METHOD__ );
                        return;
                }
@@ -682,7 +682,8 @@ class MediaWiki {
 
                $query = array( 'title' => 'Special:RunJobs',
                        'tasks' => 'jobs', 'maxjobs' => $n, 'sigexpiry' => time() + 5 );
-               $query['signature'] = SpecialRunJobs::getQuerySignature( $query );
+               $query['signature'] = SpecialRunJobs::getQuerySignature(
+                       $query, $this->config->get( 'SecretKey' ) );
 
                $errno = $errstr = null;
                $info = wfParseUrl( $this->config->get( 'Server' ) );
index 5725898..e3b4dbe 100644 (file)
  * constituent messages or the resource itself is changed.
  */
 class MessageBlobStore {
+       /**
+        * Get the singleton instance
+        *
+        * @since 1.24
+        * @return MessageBlobStore
+        */
+       public static function getInstance() {
+               static $instance = null;
+               if ( $instance === null ) {
+                       $instance = new self;
+               }
+
+               return $instance;
+       }
+
        /**
         * Get the message blobs for a set of modules
         *
@@ -40,19 +55,19 @@ class MessageBlobStore {
         * @param string $lang Language code
         * @return array An array mapping module names to message blobs
         */
-       public static function get( ResourceLoader $resourceLoader, $modules, $lang ) {
+       public function get( ResourceLoader $resourceLoader, $modules, $lang ) {
                wfProfileIn( __METHOD__ );
                if ( !count( $modules ) ) {
                        wfProfileOut( __METHOD__ );
                        return array();
                }
                // Try getting from the DB first
-               $blobs = self::getFromDB( $resourceLoader, array_keys( $modules ), $lang );
+               $blobs = $this->getFromDB( $resourceLoader, array_keys( $modules ), $lang );
 
                // Generate blobs for any missing modules and store them in the DB
                $missing = array_diff( array_keys( $modules ), array_keys( $blobs ) );
                foreach ( $missing as $name ) {
-                       $blob = self::insertMessageBlob( $name, $modules[$name], $lang );
+                       $blob = $this->insertMessageBlob( $name, $modules[$name], $lang );
                        if ( $blob ) {
                                $blobs[$name] = $blob;
                        }
@@ -72,8 +87,8 @@ class MessageBlobStore {
         * @param string $lang Language code
         * @return mixed Message blob or false if the module has no messages
         */
-       public static function insertMessageBlob( $name, ResourceLoaderModule $module, $lang ) {
-               $blob = self::generateMessageBlob( $module, $lang );
+       public function insertMessageBlob( $name, ResourceLoaderModule $module, $lang ) {
+               $blob = $this->generateMessageBlob( $module, $lang );
 
                if ( !$blob ) {
                        return false;
@@ -130,7 +145,7 @@ class MessageBlobStore {
         * @return string Regenerated message blob, or null if there was no blob for
         *   the given module/language pair.
         */
-       public static function updateModule( $name, ResourceLoaderModule $module, $lang ) {
+       public function updateModule( $name, ResourceLoaderModule $module, $lang ) {
                $dbw = wfGetDB( DB_MASTER );
                $row = $dbw->selectRow( 'msg_resource', 'mr_blob',
                        array( 'mr_resource' => $name, 'mr_lang' => $lang ),
@@ -142,7 +157,7 @@ class MessageBlobStore {
 
                // Save the old and new blobs for later
                $oldBlob = $row->mr_blob;
-               $newBlob = self::generateMessageBlob( $module, $lang );
+               $newBlob = $this->generateMessageBlob( $module, $lang );
 
                try {
                        $newRow = array(
@@ -197,7 +212,7 @@ class MessageBlobStore {
         *
         * @param string $key Message key
         */
-       public static function updateMessage( $key ) {
+       public function updateMessage( $key ) {
                try {
                        $dbw = wfGetDB( DB_MASTER );
 
@@ -206,7 +221,7 @@ class MessageBlobStore {
                        // in one iteration.
                        $updates = null;
                        do {
-                               $updates = self::getUpdatesForMessage( $key, $updates );
+                               $updates = $this->getUpdatesForMessage( $key, $updates );
 
                                foreach ( $updates as $k => $update ) {
                                        // Update the row on the condition that it
@@ -240,7 +255,7 @@ class MessageBlobStore {
                }
        }
 
-       public static function clear() {
+       public function clear() {
                // TODO: Give this some more thought
                try {
                        // Not using TRUNCATE, because that needs extra permissions,
@@ -260,7 +275,7 @@ class MessageBlobStore {
         * @param array $prevUpdates Updates queue to refresh or null to build a fresh update queue
         * @return array Updates queue
         */
-       private static function getUpdatesForMessage( $key, $prevUpdates = null ) {
+       private function getUpdatesForMessage( $key, $prevUpdates = null ) {
                $dbw = wfGetDB( DB_MASTER );
 
                if ( is_null( $prevUpdates ) ) {
@@ -297,7 +312,7 @@ class MessageBlobStore {
                                'resource' => $row->mr_resource,
                                'lang' => $row->mr_lang,
                                'timestamp' => $row->mr_timestamp,
-                               'newBlob' => self::reencodeBlob( $row->mr_blob, $key, $row->mr_lang )
+                               'newBlob' => $this->reencodeBlob( $row->mr_blob, $key, $row->mr_lang )
                        );
                }
 
@@ -312,7 +327,7 @@ class MessageBlobStore {
         * @param string $lang Language code
         * @return string Message blob with $key replaced with its new value
         */
-       private static function reencodeBlob( $blob, $key, $lang ) {
+       private function reencodeBlob( $blob, $key, $lang ) {
                $decoded = FormatJson::decode( $blob, true );
                $decoded[$key] = wfMessage( $key )->inLanguage( $lang )->plain();
 
@@ -329,9 +344,8 @@ class MessageBlobStore {
         * @throws MWException
         * @return array Array mapping module names to blobs
         */
-       private static function getFromDB( ResourceLoader $resourceLoader, $modules, $lang ) {
-               global $wgCacheEpoch;
-
+       private function getFromDB( ResourceLoader $resourceLoader, $modules, $lang ) {
+               $config = $resourceLoader->getConfig();
                $retval = array();
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( 'msg_resource',
@@ -348,13 +362,13 @@ class MessageBlobStore {
                        }
 
                        // Update the module's blobs if the set of messages changed or if the blob is
-                       // older than $wgCacheEpoch
+                       // older than the CacheEpoch setting
                        $keys = array_keys( FormatJson::decode( $row->mr_blob, true ) );
                        $values = array_values( array_unique( $module->getMessages() ) );
                        if ( $keys !== $values
-                               || wfTimestamp( TS_MW, $row->mr_timestamp ) <= $wgCacheEpoch
+                               || wfTimestamp( TS_MW, $row->mr_timestamp ) <= $config->get( 'CacheEpoch' )
                        ) {
-                               $retval[$row->mr_resource] = self::updateModule( $row->mr_resource, $module, $lang );
+                               $retval[$row->mr_resource] = $this->updateModule( $row->mr_resource, $module, $lang );
                        } else {
                                $retval[$row->mr_resource] = $row->mr_blob;
                        }
@@ -370,7 +384,7 @@ class MessageBlobStore {
         * @param string $lang Language code
         * @return string JSON object
         */
-       private static function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
+       private function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
                $messages = array();
 
                foreach ( $module->getMessages() as $key ) {
index 6ea4953..fbd80c9 100644 (file)
@@ -449,15 +449,14 @@ class OutputPage extends ContextSource {
         * @param string $version Style version of the file. Defaults to $wgStyleVersion
         */
        public function addScriptFile( $file, $version = null ) {
-               global $wgStylePath, $wgStyleVersion;
                // See if $file parameter is an absolute URL or begins with a slash
                if ( substr( $file, 0, 1 ) == '/' || preg_match( '#^[a-z]*://#i', $file ) ) {
                        $path = $file;
                } else {
-                       $path = "{$wgStylePath}/common/{$file}";
+                       $path = $this->getConfig()->get( 'StylePath' ) . "/common/{$file}";
                }
                if ( is_null( $version ) ) {
-                       $version = $wgStyleVersion;
+                       $version = $this->getConfig()->get( 'StyleVersion' );
                }
                $this->addScript( Html::linkedScript( wfAppendQuery( $path, $version ) ) );
        }
@@ -733,13 +732,12 @@ class OutputPage extends ContextSource {
         * @return bool True if cache-ok headers was sent.
         */
        public function checkLastModified( $timestamp ) {
-               global $wgCachePages, $wgCacheEpoch, $wgUseSquid, $wgSquidMaxage;
-
                if ( !$timestamp || $timestamp == '19700101000000' ) {
                        wfDebug( __METHOD__ . ": CACHE DISABLED, NO TIMESTAMP\n" );
                        return false;
                }
-               if ( !$wgCachePages ) {
+               $config = $this->getConfig();
+               if ( !$config->get( 'CachePages' ) ) {
                        wfDebug( __METHOD__ . ": CACHE DISABLED\n" );
                        return false;
                }
@@ -748,11 +746,11 @@ class OutputPage extends ContextSource {
                $modifiedTimes = array(
                        'page' => $timestamp,
                        'user' => $this->getUser()->getTouched(),
-                       'epoch' => $wgCacheEpoch
+                       'epoch' => $config->get( 'CacheEpoch' )
                );
-               if ( $wgUseSquid ) {
+               if ( $config->get( 'UseSquid' ) ) {
                        // bug 44570: the core page itself may not change, but resources might
-                       $modifiedTimes['sepoch'] = wfTimestamp( TS_MW, time() - $wgSquidMaxage );
+                       $modifiedTimes['sepoch'] = wfTimestamp( TS_MW, time() - $config->get( 'SquidMaxage' ) );
                }
                wfRunHooks( 'OutputPageCheckLastModified', array( &$modifiedTimes ) );
 
@@ -1107,11 +1105,9 @@ class OutputPage extends ContextSource {
         *        default links
         */
        public function setFeedAppendQuery( $val ) {
-               global $wgAdvertisedFeedTypes;
-
                $this->mFeedLinks = array();
 
-               foreach ( $wgAdvertisedFeedTypes as $type ) {
+               foreach ( $this->getConfig()->get( 'AdvertisedFeedTypes' ) as $type ) {
                        $query = "feed=$type";
                        if ( is_string( $val ) ) {
                                $query .= '&' . $val;
@@ -1127,9 +1123,7 @@ class OutputPage extends ContextSource {
         * @param string $href URL
         */
        public function addFeedLink( $format, $href ) {
-               global $wgAdvertisedFeedTypes;
-
-               if ( in_array( $format, $wgAdvertisedFeedTypes ) ) {
+               if ( in_array( $format, $this->getConfig()->get( 'AdvertisedFeedTypes' ) ) ) {
                        $this->mFeedLinks[$format] = $href;
                }
        }
@@ -1253,9 +1247,15 @@ class OutputPage extends ContextSource {
 
                # Fetch existence plus the hiddencat property
                $dbr = wfGetDB( DB_SLAVE );
+               $fields = array( 'page_id', 'page_namespace', 'page_title', 'page_len',
+                       'page_is_redirect', 'page_latest', 'pp_value' );
+
+               if ( $this->getConfig()->get( 'ContentHandlerUseDB' ) ) {
+                       $fields[] = 'page_content_model';
+               }
+
                $res = $dbr->select( array( 'page', 'page_props' ),
-                       array( 'page_id', 'page_namespace', 'page_title', 'page_len',
-                               'page_is_redirect', 'page_latest', 'pp_value' ),
+                       $fields,
                        $lb->constructSet( 'page', $dbr ),
                        __METHOD__,
                        array(),
@@ -1611,7 +1611,7 @@ class OutputPage extends ContextSource {
         * @deprecated since 1.24, use addParserOutputMetadata() instead.
         * @param ParserOutput $parserOutput
         */
-       public function addParserOutputNoText( &$parserOutput ) {
+       public function addParserOutputNoText( $parserOutput ) {
                $this->addParserOutputMetadata( $parserOutput );
        }
 
@@ -1623,7 +1623,7 @@ class OutputPage extends ContextSource {
         * @since 1.24
         * @param ParserOutput $parserOutput
         */
-       public function addParserOutputMetadata( &$parserOutput ) {
+       public function addParserOutputMetadata( $parserOutput ) {
                $this->mLanguageLinks += $parserOutput->getLanguageLinks();
                $this->addCategoryLinks( $parserOutput->getCategories() );
                $this->mNewSectionLink = $parserOutput->getNewSection();
@@ -1657,11 +1657,11 @@ class OutputPage extends ContextSource {
                }
 
                // Hooks registered in the object
-               global $wgParserOutputHooks;
+               $parserOutputHooks = $this->getConfig()->get( 'ParserOutputHooks' );
                foreach ( $parserOutput->getOutputHooks() as $hookInfo ) {
                        list( $hookName, $data ) = $hookInfo;
-                       if ( isset( $wgParserOutputHooks[$hookName] ) ) {
-                               call_user_func( $wgParserOutputHooks[$hookName], $this, $parserOutput, $data );
+                       if ( isset( $parserOutputHooks[$hookName] ) ) {
+                               call_user_func( $parserOutputHooks[$hookName], $this, $parserOutput, $data );
                        }
                }
 
@@ -1679,7 +1679,7 @@ class OutputPage extends ContextSource {
         * @since 1.24
         * @param ParserOutput $parserOutput
         */
-       public function addParserOutputContent( &$parserOutput ) {
+       public function addParserOutputContent( $parserOutput ) {
                $this->addParserOutputText( $parserOutput );
 
                $this->addModules( $parserOutput->getModules() );
@@ -1696,7 +1696,7 @@ class OutputPage extends ContextSource {
         * @since 1.24
         * @param ParserOutput $parserOutput
         */
-       public function addParserOutputText( &$parserOutput ) {
+       public function addParserOutputText( $parserOutput ) {
                $text = $parserOutput->getText();
                wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) );
                $this->addHTML( $text );
@@ -1707,7 +1707,7 @@ class OutputPage extends ContextSource {
         *
         * @param ParserOutput $parserOutput
         */
-       function addParserOutput( &$parserOutput ) {
+       function addParserOutput( $parserOutput ) {
                $this->addParserOutputMetadata( $parserOutput );
                $parserOutput->setTOCEnabled( $this->mEnableTOC );
 
@@ -1811,17 +1811,17 @@ class OutputPage extends ContextSource {
         * @return array
         */
        function getCacheVaryCookies() {
-               global $wgCookiePrefix, $wgCacheVaryCookies;
                static $cookies;
                if ( $cookies === null ) {
+                       $config = $this->getConfig();
                        $cookies = array_merge(
                                array(
-                                       "{$wgCookiePrefix}Token",
-                                       "{$wgCookiePrefix}LoggedOut",
+                                       $config->get( 'CookiePrefix' ) . 'Token',
+                                       $config->get( 'CookiePrefix' ) . 'LoggedOut',
                                        "forceHTTPS",
                                        session_name()
                                ),
-                               $wgCacheVaryCookies
+                               $config->get( 'CacheVaryCookies' )
                        );
                        wfRunHooks( 'GetCacheVaryCookies', array( $this, &$cookies ) );
                }
@@ -1987,11 +1987,11 @@ class OutputPage extends ContextSource {
         * @return string
         */
        public function getFrameOptions() {
-               global $wgBreakFrames, $wgEditPageFrameOptions;
-               if ( $wgBreakFrames ) {
+               $config = $this->getConfig();
+               if ( $config->get( 'BreakFrames' ) ) {
                        return 'DENY';
-               } elseif ( $this->mPreventClickjacking && $wgEditPageFrameOptions ) {
-                       return $wgEditPageFrameOptions;
+               } elseif ( $this->mPreventClickjacking && $config->get( 'EditPageFrameOptions' ) ) {
+                       return $config->get( 'EditPageFrameOptions' );
                }
                return false;
        }
@@ -2000,10 +2000,9 @@ class OutputPage extends ContextSource {
         * Send cache control HTTP headers
         */
        public function sendCacheControl() {
-               global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgUseXVO;
-
                $response = $this->getRequest()->response();
-               if ( $wgUseETag && $this->mETag ) {
+               $config = $this->getConfig();
+               if ( $config->get( 'UseETag' ) && $this->mETag ) {
                        $response->header( "ETag: $this->mETag" );
                }
 
@@ -2014,24 +2013,24 @@ class OutputPage extends ContextSource {
                # maintain different caches for logged-in users and non-logged in ones
                $response->header( $this->getVaryHeader() );
 
-               if ( $wgUseXVO ) {
+               if ( $config->get( 'UseXVO' ) ) {
                        # Add an X-Vary-Options header for Squid with Wikimedia patches
                        $response->header( $this->getXVO() );
                }
 
                if ( $this->mEnableClientCache ) {
                        if (
-                               $wgUseSquid && session_id() == '' && !$this->isPrintable() &&
+                               $config->get( 'UseSquid' ) && session_id() == '' && !$this->isPrintable() &&
                                $this->mSquidMaxage != 0 && !$this->haveCacheVaryCookies()
                        ) {
-                               if ( $wgUseESI ) {
+                               if ( $config->get( 'UseESI' ) ) {
                                        # We'll purge the proxy cache explicitly, but require end user agents
                                        # to revalidate against the proxy on each visit.
                                        # Surrogate-Control controls our Squid, Cache-Control downstream caches
                                        wfDebug( __METHOD__ . ": proxy caching with ESI; {$this->mLastModified} **\n", 'log' );
                                        # start with a shorter timeout for initial testing
                                        # header( 'Surrogate-Control: max-age=2678400+2678400, content="ESI/1.0"');
-                                       $response->header( 'Surrogate-Control: max-age=' . $wgSquidMaxage
+                                       $response->header( 'Surrogate-Control: max-age=' . $config->get( 'SquidMaxage' )
                                                . '+' . $this->mSquidMaxage . ', content="ESI/1.0"' );
                                        $response->header( 'Cache-Control: s-maxage=0, must-revalidate, max-age=0' );
                                } else {
@@ -2071,8 +2070,7 @@ class OutputPage extends ContextSource {
         * the object, let's actually output it:
         */
        public function output() {
-               global $wgLanguageCode, $wgDebugRedirects, $wgMimeType, $wgVaryOnXFP,
-                       $wgResponsiveImages;
+               global $wgLanguageCode;
 
                if ( $this->mDoNothing ) {
                        return;
@@ -2081,6 +2079,7 @@ class OutputPage extends ContextSource {
                wfProfileIn( __METHOD__ );
 
                $response = $this->getRequest()->response();
+               $config = $this->getConfig();
 
                if ( $this->mRedirect != '' ) {
                        # Standards require redirect URLs to be absolute
@@ -2091,19 +2090,19 @@ class OutputPage extends ContextSource {
 
                        if ( wfRunHooks( "BeforePageRedirect", array( $this, &$redirect, &$code ) ) ) {
                                if ( $code == '301' || $code == '303' ) {
-                                       if ( !$wgDebugRedirects ) {
+                                       if ( !$config->get( 'DebugRedirects' ) ) {
                                                $message = HttpStatus::getMessage( $code );
                                                $response->header( "HTTP/1.1 $code $message" );
                                        }
                                        $this->mLastModified = wfTimestamp( TS_RFC2822 );
                                }
-                               if ( $wgVaryOnXFP ) {
+                               if ( $config->get( 'VaryOnXFP' ) ) {
                                        $this->addVaryHeader( 'X-Forwarded-Proto' );
                                }
                                $this->sendCacheControl();
 
                                $response->header( "Content-Type: text/html; charset=utf-8" );
-                               if ( $wgDebugRedirects ) {
+                               if ( $config->get( 'DebugRedirects' ) ) {
                                        $url = htmlspecialchars( $redirect );
                                        print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
                                        print "<p>Location: <a href=\"$url\">$url</a></p>\n";
@@ -2125,7 +2124,7 @@ class OutputPage extends ContextSource {
                # Buffer output; final headers may depend on later processing
                ob_start();
 
-               $response->header( "Content-type: $wgMimeType; charset=UTF-8" );
+               $response->header( 'Content-type: ' . $config->get( 'MimeType' ) . '; charset=UTF-8' );
                $response->header( 'Content-language: ' . $wgLanguageCode );
 
                // Avoid Internet Explorer "compatibility view" in IE 8-10, so that
@@ -2154,7 +2153,7 @@ class OutputPage extends ContextSource {
                        );
 
                        // Support for high-density display images if enabled
-                       if ( $wgResponsiveImages ) {
+                       if ( $config->get( 'ResponsiveImages' ) ) {
                                $coreModules[] = 'mediawiki.hidpi';
                        }
 
@@ -2497,9 +2496,9 @@ $templates
         * @param int $lag Slave lag
         */
        public function showLagWarning( $lag ) {
-               global $wgSlaveLagWarning, $wgSlaveLagCritical;
-               if ( $lag >= $wgSlaveLagWarning ) {
-                       $message = $lag < $wgSlaveLagCritical
+               $config = $this->getConfig();
+               if ( $lag >= $config->get( 'SlaveLagWarning' ) ) {
+                       $message = $lag < $config->get( 'SlaveLagCritical' )
                                ? 'lag-warn-normal'
                                : 'lag-warn-high';
                        $wrap = Html::rawElement( 'div', array( 'class' => "mw-{$message}" ), "\n$1\n" );
@@ -2586,7 +2585,7 @@ $templates
         * @return string The doctype, opening "<html>", and head element.
         */
        public function headElement( Skin $sk, $includeStyle = true ) {
-               global $wgContLang, $wgMimeType;
+               global $wgContLang;
 
                $userdir = $this->getLanguage()->getDir();
                $sitedir = $wgContLang->getDir();
@@ -2603,7 +2602,7 @@ $templates
                        $ret .= "$openHead\n";
                }
 
-               if ( !Html::isXmlMimeType( $wgMimeType ) ) {
+               if ( !Html::isXmlMimeType( $this->getConfig()->get( 'MimeType' ) ) ) {
                        // Add <meta charset="UTF-8">
                        // This should be before <title> since it defines the charset used by
                        // text including the text inside <title>.
@@ -2673,7 +2672,7 @@ $templates
         */
        public function getResourceLoader() {
                if ( is_null( $this->mResourceLoader ) ) {
-                       $this->mResourceLoader = new ResourceLoader();
+                       $this->mResourceLoader = new ResourceLoader( $this->getConfig() );
                }
                return $this->mResourceLoader;
        }
@@ -2692,8 +2691,6 @@ $templates
        protected function makeResourceLoaderLink( $modules, $only, $useESI = false,
                array $extraQuery = array(), $loadCall = false
        ) {
-               global $wgResourceLoaderUseESI;
-
                $modules = (array)$modules;
 
                $links = array(
@@ -2729,6 +2726,7 @@ $templates
                // Create keyed-by-source and then keyed-by-group list of module objects from modules list
                $sortedModules = array();
                $resourceLoader = $this->getResourceLoader();
+               $resourceLoaderUseESI = $this->getConfig()->get( 'ResourceLoaderUseESI' );
                foreach ( $modules as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        # Check that we're allowed to include this module on this page
@@ -2826,7 +2824,7 @@ $templates
                                $moduleContext = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
                                $url = $resourceLoader->createLoaderURL( $source, $moduleContext, $extraQuery );
 
-                               if ( $useESI && $wgResourceLoaderUseESI ) {
+                               if ( $useESI && $resourceLoaderUseESI ) {
                                        $esi = Xml::element( 'esi:include', array( 'src' => $url ) );
                                        if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
                                                $link = Html::inlineStyle( $esi );
@@ -2903,8 +2901,6 @@ $templates
         * @return string HTML fragment
         */
        function getHeadScripts() {
-               global $wgResourceLoaderExperimentalAsyncLoading;
-
                // Startup - this will immediately load jquery and mediawiki modules
                $links = array();
                $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
@@ -2944,7 +2940,7 @@ $templates
                        );
                }
 
-               if ( $wgResourceLoaderExperimentalAsyncLoading ) {
+               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
                        $links[] = $this->getScriptsForBottomQueue( true );
                }
 
@@ -2963,8 +2959,6 @@ $templates
         * @return string
         */
        function getScriptsForBottomQueue( $inHead ) {
-               global $wgAllowUserJs;
-
                // Scripts and messages "only" requests marked for bottom inclusion
                // If we're in the <head>, use load() calls rather than <script src="..."> tags
                // Messages should go first
@@ -2998,7 +2992,7 @@ $templates
                );
 
                // Add user JS if enabled
-               if ( $wgAllowUserJs
+               if ( $this->getConfig()->get( 'AllowUserJs' )
                        && $this->getUser()->isLoggedIn()
                        && $this->getTitle()
                        && $this->getTitle()->isJsSubpage()
@@ -3037,15 +3031,13 @@ $templates
         * @return string
         */
        function getBottomScripts() {
-               global $wgResourceLoaderExperimentalAsyncLoading;
-
                // Optimise jQuery ready event cross-browser.
                // This also enforces $.isReady to be true at </body> which fixes the
                // mw.loader bug in Firefox with using document.write between </body>
                // and the DOMContentReady event (bug 47457).
                $html = Html::inlineScript( 'window.jQuery && jQuery.ready();' );
 
-               if ( !$wgResourceLoaderExperimentalAsyncLoading ) {
+               if ( !$this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
                        $html .= $this->getScriptsForBottomQueue( false );
                }
 
@@ -3232,13 +3224,10 @@ $templates
         * @return array Array in format "link name or number => 'link html'".
         */
        public function getHeadLinksArray() {
-               global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI,
-                       $wgSitename, $wgVersion,
-                       $wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes,
-                       $wgDisableLangConversion, $wgCanonicalLanguageLinks,
-                       $wgRightsPage, $wgRightsUrl;
+               global $wgVersion;
 
                $tags = array();
+               $config = $this->getConfig();
 
                $canonicalUrl = $this->mCanonicalUrl;
 
@@ -3281,7 +3270,7 @@ $templates
                }
 
                # Universal edit button
-               if ( $wgUniversalEditButton && $this->isArticleRelated() ) {
+               if ( $config->get( 'UniversalEditButton' ) && $this->isArticleRelated() ) {
                        $user = $this->getUser();
                        if ( $this->getTitle()->quickUserCan( 'edit', $user )
                                && ( $this->getTitle()->exists() || $this->getTitle()->quickUserCan( 'create', $user ) ) ) {
@@ -3306,17 +3295,17 @@ $templates
                # should not matter, but Konqueror (3.5.9 at least) incorrectly
                # uses whichever one appears later in the HTML source. Make sure
                # apple-touch-icon is specified first to avoid this.
-               if ( $wgAppleTouchIcon !== false ) {
+               if ( $config->get( 'AppleTouchIcon' ) !== false ) {
                        $tags['apple-touch-icon'] = Html::element( 'link', array(
                                'rel' => 'apple-touch-icon',
-                               'href' => $wgAppleTouchIcon
+                               'href' => $config->get( 'AppleTouchIcon' )
                        ) );
                }
 
-               if ( $wgFavicon !== false ) {
+               if ( $config->get( 'Favicon' ) !== false ) {
                        $tags['favicon'] = Html::element( 'link', array(
                                'rel' => 'shortcut icon',
-                               'href' => $wgFavicon
+                               'href' => $config->get( 'Favicon' )
                        ) );
                }
 
@@ -3328,7 +3317,7 @@ $templates
                        'title' => $this->msg( 'opensearch-desc' )->inContentLanguage()->text(),
                ) );
 
-               if ( $wgEnableAPI ) {
+               if ( $config->get( 'EnableAPI' ) ) {
                        # Real Simple Discovery link, provides auto-discovery information
                        # for the MediaWiki API (and potentially additional custom API
                        # support such as WordPress or Twitter-compatible APIs for a
@@ -3347,39 +3336,37 @@ $templates
                }
 
                # Language variants
-               if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks ) {
+               if ( !$config->get( 'DisableLangConversion' ) ) {
                        $lang = $this->getTitle()->getPageLanguage();
                        if ( $lang->hasVariants() ) {
-
-                               $urlvar = $lang->getURLVariant();
-
-                               if ( !$urlvar ) {
-                                       $variants = $lang->getVariants();
-                                       foreach ( $variants as $_v ) {
-                                               $tags["variant-$_v"] = Html::element( 'link', array(
-                                                       'rel' => 'alternate',
-                                                       'hreflang' => wfBCP47( $_v ),
-                                                       'href' => $this->getTitle()->getLocalURL( array( 'variant' => $_v ) ) )
-                                               );
-                                       }
-                               } else {
-                                       $canonicalUrl = $this->getTitle()->getLocalURL();
+                               $variants = $lang->getVariants();
+                               foreach ( $variants as $_v ) {
+                                       $tags["variant-$_v"] = Html::element( 'link', array(
+                                               'rel' => 'alternate',
+                                               'hreflang' => wfBCP47( $_v ),
+                                               'href' => $this->getTitle()->getLocalURL( array( 'variant' => $_v ) ) )
+                                       );
                                }
                        }
+                       # x-default link per https://support.google.com/webmasters/answer/189077?hl=en
+                       $tags["variant-x-default"] = Html::element( 'link', array(
+                               'rel' => 'alternate',
+                               'hreflang' => 'x-default',
+                               'href' => $this->getTitle()->getLocalURL() ) );
                }
 
                # Copyright
                $copyright = '';
-               if ( $wgRightsPage ) {
-                       $copy = Title::newFromText( $wgRightsPage );
+               if ( $config->get( 'RightsPage' ) ) {
+                       $copy = Title::newFromText( $config->get( 'RightsPage' ) );
 
                        if ( $copy ) {
                                $copyright = $copy->getLocalURL();
                        }
                }
 
-               if ( !$copyright && $wgRightsUrl ) {
-                       $copyright = $wgRightsUrl;
+               if ( !$copyright && $config->get( 'RightsUrl' ) ) {
+                       $copyright = $config->get( 'RightsUrl' );
                }
 
                if ( $copyright ) {
@@ -3390,7 +3377,7 @@ $templates
                }
 
                # Feeds
-               if ( $wgFeed ) {
+               if ( $config->get( 'Feed' ) ) {
                        foreach ( $this->getSyndicationLinks() as $format => $link ) {
                                # Use the page name for the title.  In principle, this could
                                # lead to issues with having the same name for different feeds
@@ -3412,31 +3399,31 @@ $templates
                        # like to promote instead of the RC feed (maybe like a "Recent New Articles"
                        # or "Breaking news" one). For this, we see if $wgOverrideSiteFeed is defined.
                        # If so, use it instead.
-                       if ( $wgOverrideSiteFeed ) {
-                               foreach ( $wgOverrideSiteFeed as $type => $feedUrl ) {
+                       $sitename = $config->get( 'Sitename' );
+                       if ( $config->get( 'OverrideSiteFeed' ) ) {
+                               foreach ( $config->get( 'OverrideSiteFeed' ) as $type => $feedUrl ) {
                                        // Note, this->feedLink escapes the url.
                                        $tags[] = $this->feedLink(
                                                $type,
                                                $feedUrl,
-                                               $this->msg( "site-{$type}-feed", $wgSitename )->text()
+                                               $this->msg( "site-{$type}-feed", $sitename )->text()
                                        );
                                }
                        } elseif ( !$this->getTitle()->isSpecial( 'Recentchanges' ) ) {
                                $rctitle = SpecialPage::getTitleFor( 'Recentchanges' );
-                               foreach ( $wgAdvertisedFeedTypes as $format ) {
+                               foreach ( $config->get( 'AdvertisedFeedTypes' ) as $format ) {
                                        $tags[] = $this->feedLink(
                                                $format,
                                                $rctitle->getLocalURL( array( 'feed' => $format ) ),
                                                # For grep: 'site-rss-feed', 'site-atom-feed'
-                                               $this->msg( "site-{$format}-feed", $wgSitename )->text()
+                                               $this->msg( "site-{$format}-feed", $sitename )->text()
                                        );
                                }
                        }
                }
 
                # Canonical URL
-               global $wgEnableCanonicalServerLink;
-               if ( $wgEnableCanonicalServerLink ) {
+               if ( $config->get( 'EnableCanonicalServerLink' ) ) {
                        if ( $canonicalUrl !== false ) {
                                $canonicalUrl = wfExpandUrl( $canonicalUrl, PROTO_CANONICAL );
                        } else {
@@ -3526,7 +3513,7 @@ $templates
         * @return string
         */
        public function buildCssLinks() {
-               global $wgAllowUserCss, $wgContLang;
+               global $wgContLang;
 
                $this->getSkin()->setupSkinUserCss( $this );
 
@@ -3551,7 +3538,7 @@ $templates
                $moduleStyles[] = 'user.groups';
 
                // Per-user custom styles
-               if ( $wgAllowUserCss && $this->getTitle()->isCssSubpage() && $this->userCanPreview() ) {
+               if ( $this->getConfig()->get( 'AllowUserCss' ) && $this->getTitle()->isCssSubpage() && $this->userCanPreview() ) {
                        // We're on a preview of a CSS subpage
                        // Exclude this page from the user module in case it's in there (bug 26283)
                        $link = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_STYLES, false,
@@ -3663,8 +3650,8 @@ $templates
                        substr( $style, 0, 6 ) == 'https:' ) {
                        $url = $style;
                } else {
-                       global $wgStylePath, $wgStyleVersion;
-                       $url = $wgStylePath . '/' . $style . '?' . $wgStyleVersion;
+                       $config = $this->getConfig();
+                       $url = $config->get( 'StylePath' ) . '/' . $style . '?' . $config->get( 'StyleVersion' );
                }
 
                $link = Html::linkedStyle( $url, $media );
diff --git a/includes/Pager.php b/includes/Pager.php
deleted file mode 100644 (file)
index c7de8c1..0000000
+++ /dev/null
@@ -1,1331 +0,0 @@
-<?php
-/**
- * Efficient paging for SQL queries.
- *
- * 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 Pager
- */
-
-/**
- * @defgroup Pager Pager
- */
-
-/**
- * Basic pager interface.
- * @ingroup Pager
- */
-interface Pager {
-       function getNavigationBar();
-       function getBody();
-}
-
-/**
- * IndexPager is an efficient pager which uses a (roughly unique) index in the
- * data set to implement paging, rather than a "LIMIT offset,limit" clause.
- * In MySQL, such a limit/offset clause requires counting through the
- * specified number of offset rows to find the desired data, which can be
- * expensive for large offsets.
- *
- * ReverseChronologicalPager is a child class of the abstract IndexPager, and
- * contains  some formatting and display code which is specific to the use of
- * timestamps as  indexes. Here is a synopsis of its operation:
- *
- *    * The query is specified by the offset, limit and direction (dir)
- *      parameters, in addition to any subclass-specific parameters.
- *    * The offset is the non-inclusive start of the DB query. A row with an
- *      index value equal to the offset will never be shown.
- *    * The query may either be done backwards, where the rows are returned by
- *      the database in the opposite order to which they are displayed to the
- *      user, or forwards. This is specified by the "dir" parameter, dir=prev
- *      means backwards, anything else means forwards. The offset value
- *      specifies the start of the database result set, which may be either
- *      the start or end of the displayed data set. This allows "previous"
- *      links to be implemented without knowledge of the index value at the
- *      start of the previous page.
- *    * An additional row beyond the user-specified limit is always requested.
- *      This allows us to tell whether we should display a "next" link in the
- *      case of forwards mode, or a "previous" link in the case of backwards
- *      mode. Determining whether to display the other link (the one for the
- *      page before the start of the database result set) can be done
- *      heuristically by examining the offset.
- *
- *    * An empty offset indicates that the offset condition should be omitted
- *      from the query. This naturally produces either the first page or the
- *      last page depending on the dir parameter.
- *
- *  Subclassing the pager to implement concrete functionality should be fairly
- *  simple, please see the examples in HistoryAction.php and
- *  SpecialBlockList.php. You just need to override formatRow(),
- *  getQueryInfo() and getIndexField(). Don't forget to call the parent
- *  constructor if you override it.
- *
- * @ingroup Pager
- */
-abstract class IndexPager extends ContextSource implements Pager {
-       public $mRequest;
-       public $mLimitsShown = array( 20, 50, 100, 250, 500 );
-       public $mDefaultLimit = 50;
-       public $mOffset, $mLimit;
-       public $mQueryDone = false;
-       public $mDb;
-       public $mPastTheEndRow;
-
-       /**
-        * The index to actually be used for ordering. This is a single column,
-        * for one ordering, even if multiple orderings are supported.
-        */
-       protected $mIndexField;
-       /**
-        * An array of secondary columns to order by. These fields are not part of the offset.
-        * This is a column list for one ordering, even if multiple orderings are supported.
-        */
-       protected $mExtraSortFields;
-       /** For pages that support multiple types of ordering, which one to use.
-        */
-       protected $mOrderType;
-       /**
-        * $mDefaultDirection gives the direction to use when sorting results:
-        * false for ascending, true for descending.  If $mIsBackwards is set, we
-        * start from the opposite end, but we still sort the page itself according
-        * to $mDefaultDirection.  E.g., if $mDefaultDirection is false but we're
-        * going backwards, we'll display the last page of results, but the last
-        * result will be at the bottom, not the top.
-        *
-        * Like $mIndexField, $mDefaultDirection will be a single value even if the
-        * class supports multiple default directions for different order types.
-        */
-       public $mDefaultDirection;
-       public $mIsBackwards;
-
-       /** True if the current result set is the first one */
-       public $mIsFirst;
-       public $mIsLast;
-
-       protected $mLastShown, $mFirstShown, $mPastTheEndIndex, $mDefaultQuery, $mNavigationBar;
-
-       /**
-        * Whether to include the offset in the query
-        */
-       protected $mIncludeOffset = false;
-
-       /**
-        * Result object for the query. Warning: seek before use.
-        *
-        * @var ResultWrapper
-        */
-       public $mResult;
-
-       public function __construct( IContextSource $context = null ) {
-               if ( $context ) {
-                       $this->setContext( $context );
-               }
-
-               $this->mRequest = $this->getRequest();
-
-               # NB: the offset is quoted, not validated. It is treated as an
-               # arbitrary string to support the widest variety of index types. Be
-               # careful outputting it into HTML!
-               $this->mOffset = $this->mRequest->getText( 'offset' );
-
-               # Use consistent behavior for the limit options
-               $this->mDefaultLimit = $this->getUser()->getIntOption( 'rclimit' );
-               if ( !$this->mLimit ) {
-                       // Don't override if a subclass calls $this->setLimit() in its constructor.
-                       list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset();
-               }
-
-               $this->mIsBackwards = ( $this->mRequest->getVal( 'dir' ) == 'prev' );
-               # Let the subclass set the DB here; otherwise use a slave DB for the current wiki
-               $this->mDb = $this->mDb ?: wfGetDB( DB_SLAVE );
-
-               $index = $this->getIndexField(); // column to sort on
-               $extraSort = $this->getExtraSortFields(); // extra columns to sort on for query planning
-               $order = $this->mRequest->getVal( 'order' );
-               if ( is_array( $index ) && isset( $index[$order] ) ) {
-                       $this->mOrderType = $order;
-                       $this->mIndexField = $index[$order];
-                       $this->mExtraSortFields = isset( $extraSort[$order] )
-                               ? (array)$extraSort[$order]
-                               : array();
-               } elseif ( is_array( $index ) ) {
-                       # First element is the default
-                       reset( $index );
-                       list( $this->mOrderType, $this->mIndexField ) = each( $index );
-                       $this->mExtraSortFields = isset( $extraSort[$this->mOrderType] )
-                               ? (array)$extraSort[$this->mOrderType]
-                               : array();
-               } else {
-                       # $index is not an array
-                       $this->mOrderType = null;
-                       $this->mIndexField = $index;
-                       $this->mExtraSortFields = (array)$extraSort;
-               }
-
-               if ( !isset( $this->mDefaultDirection ) ) {
-                       $dir = $this->getDefaultDirections();
-                       $this->mDefaultDirection = is_array( $dir )
-                               ? $dir[$this->mOrderType]
-                               : $dir;
-               }
-       }
-
-       /**
-        * Get the Database object in use
-        *
-        * @return DatabaseBase
-        */
-       public function getDatabase() {
-               return $this->mDb;
-       }
-
-       /**
-        * Do the query, using information from the object context. This function
-        * has been kept minimal to make it overridable if necessary, to allow for
-        * result sets formed from multiple DB queries.
-        */
-       public function doQuery() {
-               # Use the child class name for profiling
-               $fname = __METHOD__ . ' (' . get_class( $this ) . ')';
-               wfProfileIn( $fname );
-
-               $descending = ( $this->mIsBackwards == $this->mDefaultDirection );
-               # Plus an extra row so that we can tell the "next" link should be shown
-               $queryLimit = $this->mLimit + 1;
-
-               if ( $this->mOffset == '' ) {
-                       $isFirst = true;
-               } else {
-                       // If there's an offset, we may or may not be at the first entry.
-                       // The only way to tell is to run the query in the opposite
-                       // direction see if we get a row.
-                       $oldIncludeOffset = $this->mIncludeOffset;
-                       $this->mIncludeOffset = !$this->mIncludeOffset;
-                       $isFirst = !$this->reallyDoQuery( $this->mOffset, 1, !$descending )->numRows();
-                       $this->mIncludeOffset = $oldIncludeOffset;
-               }
-
-               $this->mResult = $this->reallyDoQuery(
-                       $this->mOffset,
-                       $queryLimit,
-                       $descending
-               );
-
-               $this->extractResultInfo( $isFirst, $queryLimit, $this->mResult );
-               $this->mQueryDone = true;
-
-               $this->preprocessResults( $this->mResult );
-               $this->mResult->rewind(); // Paranoia
-
-               wfProfileOut( $fname );
-       }
-
-       /**
-        * @return ResultWrapper The result wrapper.
-        */
-       function getResult() {
-               return $this->mResult;
-       }
-
-       /**
-        * Set the offset from an other source than the request
-        *
-        * @param int|string $offset
-        */
-       function setOffset( $offset ) {
-               $this->mOffset = $offset;
-       }
-
-       /**
-        * Set the limit from an other source than the request
-        *
-        * Verifies limit is between 1 and 5000
-        *
-        * @param int|string $limit
-        */
-       function setLimit( $limit ) {
-               $limit = (int)$limit;
-               // WebRequest::getLimitOffset() puts a cap of 5000, so do same here.
-               if ( $limit > 5000 ) {
-                       $limit = 5000;
-               }
-               if ( $limit > 0 ) {
-                       $this->mLimit = $limit;
-               }
-       }
-
-       /**
-        * Get the current limit
-        *
-        * @return int
-        */
-       function getLimit() {
-               return $this->mLimit;
-       }
-
-       /**
-        * Set whether a row matching exactly the offset should be also included
-        * in the result or not. By default this is not the case, but when the
-        * offset is user-supplied this might be wanted.
-        *
-        * @param bool $include
-        */
-       public function setIncludeOffset( $include ) {
-               $this->mIncludeOffset = $include;
-       }
-
-       /**
-        * Extract some useful data from the result object for use by
-        * the navigation bar, put it into $this
-        *
-        * @param bool $isFirst False if there are rows before those fetched (i.e.
-        *     if a "previous" link would make sense)
-        * @param int $limit Exact query limit
-        * @param ResultWrapper $res
-        */
-       function extractResultInfo( $isFirst, $limit, ResultWrapper $res ) {
-               $numRows = $res->numRows();
-               if ( $numRows ) {
-                       # Remove any table prefix from index field
-                       $parts = explode( '.', $this->mIndexField );
-                       $indexColumn = end( $parts );
-
-                       $row = $res->fetchRow();
-                       $firstIndex = $row[$indexColumn];
-
-                       # Discard the extra result row if there is one
-                       if ( $numRows > $this->mLimit && $numRows > 1 ) {
-                               $res->seek( $numRows - 1 );
-                               $this->mPastTheEndRow = $res->fetchObject();
-                               $this->mPastTheEndIndex = $this->mPastTheEndRow->$indexColumn;
-                               $res->seek( $numRows - 2 );
-                               $row = $res->fetchRow();
-                               $lastIndex = $row[$indexColumn];
-                       } else {
-                               $this->mPastTheEndRow = null;
-                               # Setting indexes to an empty string means that they will be
-                               # omitted if they would otherwise appear in URLs. It just so
-                               # happens that this  is the right thing to do in the standard
-                               # UI, in all the relevant cases.
-                               $this->mPastTheEndIndex = '';
-                               $res->seek( $numRows - 1 );
-                               $row = $res->fetchRow();
-                               $lastIndex = $row[$indexColumn];
-                       }
-               } else {
-                       $firstIndex = '';
-                       $lastIndex = '';
-                       $this->mPastTheEndRow = null;
-                       $this->mPastTheEndIndex = '';
-               }
-
-               if ( $this->mIsBackwards ) {
-                       $this->mIsFirst = ( $numRows < $limit );
-                       $this->mIsLast = $isFirst;
-                       $this->mLastShown = $firstIndex;
-                       $this->mFirstShown = $lastIndex;
-               } else {
-                       $this->mIsFirst = $isFirst;
-                       $this->mIsLast = ( $numRows < $limit );
-                       $this->mLastShown = $lastIndex;
-                       $this->mFirstShown = $firstIndex;
-               }
-       }
-
-       /**
-        * Get some text to go in brackets in the "function name" part of the SQL comment
-        *
-        * @return string
-        */
-       function getSqlComment() {
-               return get_class( $this );
-       }
-
-       /**
-        * Do a query with specified parameters, rather than using the object
-        * context
-        *
-        * @param string $offset Index offset, inclusive
-        * @param int $limit Exact query limit
-        * @param bool $descending Query direction, false for ascending, true for descending
-        * @return ResultWrapper
-        */
-       public function reallyDoQuery( $offset, $limit, $descending ) {
-               list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
-                       $this->buildQueryInfo( $offset, $limit, $descending );
-
-               return $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
-       }
-
-       /**
-        * Build variables to use by the database wrapper.
-        *
-        * @param string $offset Index offset, inclusive
-        * @param int $limit Exact query limit
-        * @param bool $descending Query direction, false for ascending, true for descending
-        * @return array
-        */
-       protected function buildQueryInfo( $offset, $limit, $descending ) {
-               $fname = __METHOD__ . ' (' . $this->getSqlComment() . ')';
-               $info = $this->getQueryInfo();
-               $tables = $info['tables'];
-               $fields = $info['fields'];
-               $conds = isset( $info['conds'] ) ? $info['conds'] : array();
-               $options = isset( $info['options'] ) ? $info['options'] : array();
-               $join_conds = isset( $info['join_conds'] ) ? $info['join_conds'] : array();
-               $sortColumns = array_merge( array( $this->mIndexField ), $this->mExtraSortFields );
-               if ( $descending ) {
-                       $options['ORDER BY'] = $sortColumns;
-                       $operator = $this->mIncludeOffset ? '>=' : '>';
-               } else {
-                       $orderBy = array();
-                       foreach ( $sortColumns as $col ) {
-                               $orderBy[] = $col . ' DESC';
-                       }
-                       $options['ORDER BY'] = $orderBy;
-                       $operator = $this->mIncludeOffset ? '<=' : '<';
-               }
-               if ( $offset != '' ) {
-                       $conds[] = $this->mIndexField . $operator . $this->mDb->addQuotes( $offset );
-               }
-               $options['LIMIT'] = intval( $limit );
-               return array( $tables, $fields, $conds, $fname, $options, $join_conds );
-       }
-
-       /**
-        * Pre-process results; useful for performing batch existence checks, etc.
-        *
-        * @param ResultWrapper $result
-        */
-       protected function preprocessResults( $result ) {
-       }
-
-       /**
-        * Get the formatted result list. Calls getStartBody(), formatRow() and
-        * getEndBody(), concatenates the results and returns them.
-        *
-        * @return string
-        */
-       public function getBody() {
-               if ( !$this->mQueryDone ) {
-                       $this->doQuery();
-               }
-
-               if ( $this->mResult->numRows() ) {
-                       # Do any special query batches before display
-                       $this->doBatchLookups();
-               }
-
-               # Don't use any extra rows returned by the query
-               $numRows = min( $this->mResult->numRows(), $this->mLimit );
-
-               $s = $this->getStartBody();
-               if ( $numRows ) {
-                       if ( $this->mIsBackwards ) {
-                               for ( $i = $numRows - 1; $i >= 0; $i-- ) {
-                                       $this->mResult->seek( $i );
-                                       $row = $this->mResult->fetchObject();
-                                       $s .= $this->formatRow( $row );
-                               }
-                       } else {
-                               $this->mResult->seek( 0 );
-                               for ( $i = 0; $i < $numRows; $i++ ) {
-                                       $row = $this->mResult->fetchObject();
-                                       $s .= $this->formatRow( $row );
-                               }
-                       }
-               } else {
-                       $s .= $this->getEmptyBody();
-               }
-               $s .= $this->getEndBody();
-               return $s;
-       }
-
-       /**
-        * Make a self-link
-        *
-        * @param string $text Text displayed on the link
-        * @param array $query Associative array of parameter to be in the query string
-        * @param string $type Value of the "rel" attribute
-        *
-        * @return string HTML fragment
-        */
-       function makeLink( $text, array $query = null, $type = null ) {
-               if ( $query === null ) {
-                       return $text;
-               }
-
-               $attrs = array();
-               if ( in_array( $type, array( 'first', 'prev', 'next', 'last' ) ) ) {
-                       # HTML5 rel attributes
-                       $attrs['rel'] = $type;
-               }
-
-               if ( $type ) {
-                       $attrs['class'] = "mw-{$type}link";
-               }
-
-               return Linker::linkKnown(
-                       $this->getTitle(),
-                       $text,
-                       $attrs,
-                       $query + $this->getDefaultQuery()
-               );
-       }
-
-       /**
-        * Called from getBody(), before getStartBody() is called and
-        * after doQuery() was called. This will be called only if there
-        * are rows in the result set.
-        *
-        * @return void
-        */
-       protected function doBatchLookups() {
-       }
-
-       /**
-        * Hook into getBody(), allows text to be inserted at the start. This
-        * will be called even if there are no rows in the result set.
-        *
-        * @return string
-        */
-       protected function getStartBody() {
-               return '';
-       }
-
-       /**
-        * Hook into getBody() for the end of the list
-        *
-        * @return string
-        */
-       protected function getEndBody() {
-               return '';
-       }
-
-       /**
-        * Hook into getBody(), for the bit between the start and the
-        * end when there are no rows
-        *
-        * @return string
-        */
-       protected function getEmptyBody() {
-               return '';
-       }
-
-       /**
-        * Get an array of query parameters that should be put into self-links.
-        * By default, all parameters passed in the URL are used, except for a
-        * short blacklist.
-        *
-        * @return array Associative array
-        */
-       function getDefaultQuery() {
-               if ( !isset( $this->mDefaultQuery ) ) {
-                       $this->mDefaultQuery = $this->getRequest()->getQueryValues();
-                       unset( $this->mDefaultQuery['title'] );
-                       unset( $this->mDefaultQuery['dir'] );
-                       unset( $this->mDefaultQuery['offset'] );
-                       unset( $this->mDefaultQuery['limit'] );
-                       unset( $this->mDefaultQuery['order'] );
-                       unset( $this->mDefaultQuery['month'] );
-                       unset( $this->mDefaultQuery['year'] );
-               }
-               return $this->mDefaultQuery;
-       }
-
-       /**
-        * Get the number of rows in the result set
-        *
-        * @return int
-        */
-       function getNumRows() {
-               if ( !$this->mQueryDone ) {
-                       $this->doQuery();
-               }
-               return $this->mResult->numRows();
-       }
-
-       /**
-        * Get a URL query array for the prev, next, first and last links.
-        *
-        * @return array
-        */
-       function getPagingQueries() {
-               if ( !$this->mQueryDone ) {
-                       $this->doQuery();
-               }
-
-               # Don't announce the limit everywhere if it's the default
-               $urlLimit = $this->mLimit == $this->mDefaultLimit ? null : $this->mLimit;
-
-               if ( $this->mIsFirst ) {
-                       $prev = false;
-                       $first = false;
-               } else {
-                       $prev = array(
-                               'dir' => 'prev',
-                               'offset' => $this->mFirstShown,
-                               'limit' => $urlLimit
-                       );
-                       $first = array( 'limit' => $urlLimit );
-               }
-               if ( $this->mIsLast ) {
-                       $next = false;
-                       $last = false;
-               } else {
-                       $next = array( 'offset' => $this->mLastShown, 'limit' => $urlLimit );
-                       $last = array( 'dir' => 'prev', 'limit' => $urlLimit );
-               }
-               return array(
-                       'prev' => $prev,
-                       'next' => $next,
-                       'first' => $first,
-                       'last' => $last
-               );
-       }
-
-       /**
-        * Returns whether to show the "navigation bar"
-        *
-        * @return bool
-        */
-       function isNavigationBarShown() {
-               if ( !$this->mQueryDone ) {
-                       $this->doQuery();
-               }
-               // Hide navigation by default if there is nothing to page
-               return !( $this->mIsFirst && $this->mIsLast );
-       }
-
-       /**
-        * Get paging links. If a link is disabled, the item from $disabledTexts
-        * will be used. If there is no such item, the unlinked text from
-        * $linkTexts will be used. Both $linkTexts and $disabledTexts are arrays
-        * of HTML.
-        *
-        * @param array $linkTexts
-        * @param array $disabledTexts
-        * @return array
-        */
-       function getPagingLinks( $linkTexts, $disabledTexts = array() ) {
-               $queries = $this->getPagingQueries();
-               $links = array();
-
-               foreach ( $queries as $type => $query ) {
-                       if ( $query !== false ) {
-                               $links[$type] = $this->makeLink(
-                                       $linkTexts[$type],
-                                       $queries[$type],
-                                       $type
-                               );
-                       } elseif ( isset( $disabledTexts[$type] ) ) {
-                               $links[$type] = $disabledTexts[$type];
-                       } else {
-                               $links[$type] = $linkTexts[$type];
-                       }
-               }
-
-               return $links;
-       }
-
-       function getLimitLinks() {
-               $links = array();
-               if ( $this->mIsBackwards ) {
-                       $offset = $this->mPastTheEndIndex;
-               } else {
-                       $offset = $this->mOffset;
-               }
-               foreach ( $this->mLimitsShown as $limit ) {
-                       $links[] = $this->makeLink(
-                               $this->getLanguage()->formatNum( $limit ),
-                               array( 'offset' => $offset, 'limit' => $limit ),
-                               'num'
-                       );
-               }
-               return $links;
-       }
-
-       /**
-        * Abstract formatting function. This should return an HTML string
-        * representing the result row $row. Rows will be concatenated and
-        * returned by getBody()
-        *
-        * @param array|stdClass $row Database row
-        * @return string
-        */
-       abstract function formatRow( $row );
-
-       /**
-        * This function should be overridden to provide all parameters
-        * needed for the main paged query. It returns an associative
-        * array with the following elements:
-        *    tables => Table(s) for passing to Database::select()
-        *    fields => Field(s) for passing to Database::select(), may be *
-        *    conds => WHERE conditions
-        *    options => option array
-        *    join_conds => JOIN conditions
-        *
-        * @return array
-        */
-       abstract function getQueryInfo();
-
-       /**
-        * This function should be overridden to return the name of the index fi-
-        * eld.  If the pager supports multiple orders, it may return an array of
-        * 'querykey' => 'indexfield' pairs, so that a request with &count=querykey
-        * will use indexfield to sort.  In this case, the first returned key is
-        * the default.
-        *
-        * Needless to say, it's really not a good idea to use a non-unique index
-        * for this!  That won't page right.
-        *
-        * @return string|array
-        */
-       abstract function getIndexField();
-
-       /**
-        * This function should be overridden to return the names of secondary columns
-        * to order by in addition to the column in getIndexField(). These fields will
-        * not be used in the pager offset or in any links for users.
-        *
-        * If getIndexField() returns an array of 'querykey' => 'indexfield' pairs then
-        * this must return a corresponding array of 'querykey' => array( fields...) pairs
-        * in order for a request with &count=querykey to use array( fields...) to sort.
-        *
-        * This is useful for pagers that GROUP BY a unique column (say page_id)
-        * and ORDER BY another (say page_len). Using GROUP BY and ORDER BY both on
-        * page_len,page_id avoids temp tables (given a page_len index). This would
-        * also work if page_id was non-unique but we had a page_len,page_id index.
-        *
-        * @return array
-        */
-       protected function getExtraSortFields() {
-               return array();
-       }
-
-       /**
-        * Return the default sorting direction: false for ascending, true for
-        * descending.  You can also have an associative array of ordertype => dir,
-        * if multiple order types are supported.  In this case getIndexField()
-        * must return an array, and the keys of that must exactly match the keys
-        * of this.
-        *
-        * For backward compatibility, this method's return value will be ignored
-        * if $this->mDefaultDirection is already set when the constructor is
-        * called, for instance if it's statically initialized.  In that case the
-        * value of that variable (which must be a boolean) will be used.
-        *
-        * Note that despite its name, this does not return the value of the
-        * $this->mDefaultDirection member variable.  That's the default for this
-        * particular instantiation, which is a single value.  This is the set of
-        * all defaults for the class.
-        *
-        * @return bool
-        */
-       protected function getDefaultDirections() {
-               return false;
-       }
-}
-
-/**
- * IndexPager with an alphabetic list and a formatted navigation bar
- * @ingroup Pager
- */
-abstract class AlphabeticPager extends IndexPager {
-
-       /**
-        * Shamelessly stolen bits from ReverseChronologicalPager,
-        * didn't want to do class magic as may be still revamped
-        *
-        * @return string HTML
-        */
-       function getNavigationBar() {
-               if ( !$this->isNavigationBarShown() ) {
-                       return '';
-               }
-
-               if ( isset( $this->mNavigationBar ) ) {
-                       return $this->mNavigationBar;
-               }
-
-               $linkTexts = array(
-                       '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 = $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
-                       return $this->mNavigationBar;
-               }
-
-               $extra = '';
-               $first = true;
-               $msgs = $this->getOrderTypeMessages();
-               foreach ( array_keys( $msgs ) as $order ) {
-                       if ( $first ) {
-                               $first = false;
-                       } else {
-                               $extra .= $this->msg( 'pipe-separator' )->escaped();
-                       }
-
-                       if ( $order == $this->mOrderType ) {
-                               $extra .= $this->msg( $msgs[$order] )->escaped();
-                       } else {
-                               $extra .= $this->makeLink(
-                                       $this->msg( $msgs[$order] )->escaped(),
-                                       array( 'order' => $order )
-                               );
-                       }
-               }
-
-               if ( $extra !== '' ) {
-                       $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
-                       $this->mNavigationBar .= $extra;
-               }
-
-               return $this->mNavigationBar;
-       }
-
-       /**
-        * If this supports multiple order type messages, give the message key for
-        * enabling each one in getNavigationBar.  The return type is an associative
-        * array whose keys must exactly match the keys of the array returned
-        * by getIndexField(), and whose values are message keys.
-        *
-        * @return array
-        */
-       protected function getOrderTypeMessages() {
-               return null;
-       }
-}
-
-/**
- * IndexPager with a formatted navigation bar
- * @ingroup Pager
- */
-abstract class ReverseChronologicalPager extends IndexPager {
-       public $mDefaultDirection = true;
-       public $mYear;
-       public $mMonth;
-
-       function getNavigationBar() {
-               if ( !$this->isNavigationBarShown() ) {
-                       return '';
-               }
-
-               if ( isset( $this->mNavigationBar ) ) {
-                       return $this->mNavigationBar;
-               }
-
-               $linkTexts = array(
-                       '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 = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
-                       $this->msg( 'pipe-separator' )->escaped() .
-                       "{$pagingLinks['last']}" )->escaped();
-
-               $this->mNavigationBar = $firstLastLinks . ' ' .
-                       $this->msg( 'viewprevnext' )->rawParams(
-                               $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
-
-               return $this->mNavigationBar;
-       }
-
-       function getDateCond( $year, $month ) {
-               $year = intval( $year );
-               $month = intval( $month );
-
-               // Basic validity checks
-               $this->mYear = $year > 0 ? $year : false;
-               $this->mMonth = ( $month > 0 && $month < 13 ) ? $month : false;
-
-               // Given an optional year and month, we need to generate a timestamp
-               // to use as "WHERE rev_timestamp <= result"
-               // Examples: year = 2006 equals < 20070101 (+000000)
-               // year=2005, month=1    equals < 20050201
-               // year=2005, month=12   equals < 20060101
-               if ( !$this->mYear && !$this->mMonth ) {
-                       return;
-               }
-
-               if ( $this->mYear ) {
-                       $year = $this->mYear;
-               } else {
-                       // If no year given, assume the current one
-                       $timestamp = MWTimestamp::getInstance();
-                       $year = $timestamp->format( 'Y' );
-                       // If this month hasn't happened yet this year, go back to last year's month
-                       if ( $this->mMonth > $timestamp->format( 'n' ) ) {
-                               $year--;
-                       }
-               }
-
-               if ( $this->mMonth ) {
-                       $month = $this->mMonth + 1;
-                       // For December, we want January 1 of the next year
-                       if ( $month > 12 ) {
-                               $month = 1;
-                               $year++;
-                       }
-               } else {
-                       // No month implies we want up to the end of the year in question
-                       $month = 1;
-                       $year++;
-               }
-
-               // Y2K38 bug
-               if ( $year > 2032 ) {
-                       $year = 2032;
-               }
-
-               $ymd = (int)sprintf( "%04d%02d01", $year, $month );
-
-               if ( $ymd > 20320101 ) {
-                       $ymd = 20320101;
-               }
-
-               $this->mOffset = $this->mDb->timestamp( "${ymd}000000" );
-       }
-}
-
-/**
- * Table-based display with a user-selectable sort order
- * @ingroup Pager
- */
-abstract class TablePager extends IndexPager {
-       protected $mSort;
-
-       protected $mCurrentRow;
-
-       public function __construct( IContextSource $context = null ) {
-               if ( $context ) {
-                       $this->setContext( $context );
-               }
-
-               $this->mSort = $this->getRequest()->getText( 'sort' );
-               if ( !array_key_exists( $this->mSort, $this->getFieldNames() )
-                       || !$this->isFieldSortable( $this->mSort )
-               ) {
-                       $this->mSort = $this->getDefaultSort();
-               }
-               if ( $this->getRequest()->getBool( 'asc' ) ) {
-                       $this->mDefaultDirection = false;
-               } elseif ( $this->getRequest()->getBool( 'desc' ) ) {
-                       $this->mDefaultDirection = true;
-               } /* Else leave it at whatever the class default is */
-
-               parent::__construct();
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getStartBody() {
-               global $wgStylePath;
-               $sortClass = $this->getSortHeaderClass();
-
-               $s = '';
-               $fields = $this->getFieldNames();
-
-               # Make table header
-               foreach ( $fields as $field => $name ) {
-                       if ( strval( $name ) == '' ) {
-                               $s .= Html::rawElement( 'th', array(), '&#160;' ) . "\n";
-                       } elseif ( $this->isFieldSortable( $field ) ) {
-                               $query = array( 'sort' => $field, 'limit' => $this->mLimit );
-                               if ( $field == $this->mSort ) {
-                                       # This is the sorted column
-                                       # Prepare a link that goes in the other sort order
-                                       if ( $this->mDefaultDirection ) {
-                                               # Descending
-                                               $image = 'Arr_d.png';
-                                               $query['asc'] = '1';
-                                               $query['desc'] = '';
-                                               $alt = $this->msg( 'descending_abbrev' )->escaped();
-                                       } else {
-                                               # Ascending
-                                               $image = 'Arr_u.png';
-                                               $query['asc'] = '';
-                                               $query['desc'] = '1';
-                                               $alt = $this->msg( 'ascending_abbrev' )->escaped();
-                                       }
-                                       $image = "$wgStylePath/common/images/$image";
-                                       $link = $this->makeLink(
-                                               Html::element( 'img', array( 'width' => 12, 'height' => 12,
-                                                       'alt' => $alt, 'src' => $image ) ) . htmlspecialchars( $name ), $query );
-                                       $s .= Html::rawElement( 'th', array( 'class' => $sortClass ), $link ) . "\n";
-                               } else {
-                                       $s .= Html::rawElement( 'th', array(),
-                                               $this->makeLink( htmlspecialchars( $name ), $query ) ) . "\n";
-                               }
-                       } else {
-                               $s .= Html::element( 'th', array(), $name ) . "\n";
-                       }
-               }
-
-               $tableClass = $this->getTableClass();
-               $ret = Html::openElement( 'table', array(
-                       'style' => 'border:1px;',
-                       'class' => "mw-datatable $tableClass" )
-               );
-               $ret .= Html::rawElement( 'thead', array(), Html::rawElement( 'tr', array(), "\n" . $s . "\n" ) );
-               $ret .= Html::openElement( 'tbody' ) . "\n";
-
-               return $ret;
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getEndBody() {
-               return "</tbody></table>\n";
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getEmptyBody() {
-               $colspan = count( $this->getFieldNames() );
-               $msgEmpty = $this->msg( 'table_pager_empty' )->text();
-               return Html::rawElement( 'tr', array(),
-                       Html::element( 'td', array( 'colspan' => $colspan ), $msgEmpty ) );
-       }
-
-       /**
-        * @protected
-        * @param stdClass $row
-        * @return string HTML
-        */
-       function formatRow( $row ) {
-               $this->mCurrentRow = $row; // In case formatValue etc need to know
-               $s = Html::openElement( 'tr', $this->getRowAttrs( $row ) ) . "\n";
-               $fieldNames = $this->getFieldNames();
-
-               foreach ( $fieldNames as $field => $name ) {
-                       $value = isset( $row->$field ) ? $row->$field : null;
-                       $formatted = strval( $this->formatValue( $field, $value ) );
-
-                       if ( $formatted == '' ) {
-                               $formatted = '&#160;';
-                       }
-
-                       $s .= Html::rawElement( 'td', $this->getCellAttrs( $field, $value ), $formatted ) . "\n";
-               }
-
-               $s .= Html::closeElement( 'tr' ) . "\n";
-
-               return $s;
-       }
-
-       /**
-        * Get a class name to be applied to the given row.
-        *
-        * @protected
-        *
-        * @param object $row The database result row
-        * @return string
-        */
-       function getRowClass( $row ) {
-               return '';
-       }
-
-       /**
-        * Get attributes to be applied to the given row.
-        *
-        * @protected
-        *
-        * @param object $row The database result row
-        * @return array Array of attribute => value
-        */
-       function getRowAttrs( $row ) {
-               $class = $this->getRowClass( $row );
-               if ( $class === '' ) {
-                       // Return an empty array to avoid clutter in HTML like class=""
-                       return array();
-               } else {
-                       return array( 'class' => $this->getRowClass( $row ) );
-               }
-       }
-
-       /**
-        * Get any extra attributes to be applied to the given cell. Don't
-        * take this as an excuse to hardcode styles; use classes and
-        * CSS instead.  Row context is available in $this->mCurrentRow
-        *
-        * @protected
-        *
-        * @param string $field The column
-        * @param string $value The cell contents
-        * @return array Array of attr => value
-        */
-       function getCellAttrs( $field, $value ) {
-               return array( 'class' => 'TablePager_col_' . $field );
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getIndexField() {
-               return $this->mSort;
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getTableClass() {
-               return 'TablePager';
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getNavClass() {
-               return 'TablePager_nav';
-       }
-
-       /**
-        * @protected
-        * @return string
-        */
-       function getSortHeaderClass() {
-               return 'TablePager_sort';
-       }
-
-       /**
-        * A navigation bar with images
-        * @return string HTML
-        */
-       public function getNavigationBar() {
-               global $wgStylePath;
-
-               if ( !$this->isNavigationBarShown() ) {
-                       return '';
-               }
-
-               $path = "$wgStylePath/common/images";
-               $labels = array(
-                       'first' => 'table_pager_first',
-                       'prev' => 'table_pager_prev',
-                       'next' => 'table_pager_next',
-                       'last' => 'table_pager_last',
-               );
-               $images = array(
-                       'first' => 'arrow_first_25.png',
-                       'prev' => 'arrow_left_25.png',
-                       'next' => 'arrow_right_25.png',
-                       'last' => 'arrow_last_25.png',
-               );
-               $disabledImages = array(
-                       'first' => 'arrow_disabled_first_25.png',
-                       'prev' => 'arrow_disabled_left_25.png',
-                       'next' => 'arrow_disabled_right_25.png',
-                       'last' => 'arrow_disabled_last_25.png',
-               );
-               if ( $this->getLanguage()->isRTL() ) {
-                       $keys = array_keys( $labels );
-                       $images = array_combine( $keys, array_reverse( $images ) );
-                       $disabledImages = array_combine( $keys, array_reverse( $disabledImages ) );
-               }
-
-               $linkTexts = array();
-               $disabledTexts = array();
-               foreach ( $labels as $type => $label ) {
-                       $msgLabel = $this->msg( $label )->escaped();
-                       $linkTexts[$type] = Html::element( 'img', array( 'src' => "$path/{$images[$type]}",
-                               'alt' => $msgLabel ) ) . "<br />$msgLabel";
-                       $disabledTexts[$type] = Html::element( 'img', array( 'src' => "$path/{$disabledImages[$type]}",
-                               'alt' => $msgLabel ) ) . "<br />$msgLabel";
-               }
-               $links = $this->getPagingLinks( $linkTexts, $disabledTexts );
-
-               $s = Html::openElement( 'table', array( 'class' => $this->getNavClass() ) );
-               $s .= Html::openElement( 'tr' ) . "\n";
-               $width = 100 / count( $links ) . '%';
-               foreach ( $labels as $type => $label ) {
-                       $s .= Html::rawElement( 'td', array( 'style' => "width:$width;" ), $links[$type] ) . "\n";
-               }
-               $s .= Html::closeElement( 'tr' ) . Html::closeElement( 'table' ) . "\n";
-               return $s;
-       }
-
-       /**
-        * Get a "<select>" element which has options for each of the allowed limits
-        *
-        * @param string $attribs Extra attributes to set
-        * @return string HTML fragment
-        */
-       public function getLimitSelect( $attribs = array() ) {
-               $select = new XmlSelect( 'limit', false, $this->mLimit );
-               $select->addOptions( $this->getLimitSelectList() );
-               foreach ( $attribs as $name => $value ) {
-                       $select->setAttribute( $name, $value );
-               }
-               return $select->getHTML();
-       }
-
-       /**
-        * Get a list of items to show in a "<select>" element of limits.
-        * This can be passed directly to XmlSelect::addOptions().
-        *
-        * @since 1.22
-        * @return array
-        */
-       public function getLimitSelectList() {
-               # Add the current limit from the query string
-               # to avoid that the limit is lost after clicking Go next time
-               if ( !in_array( $this->mLimit, $this->mLimitsShown ) ) {
-                       $this->mLimitsShown[] = $this->mLimit;
-                       sort( $this->mLimitsShown );
-               }
-               $ret = array();
-               foreach ( $this->mLimitsShown as $key => $value ) {
-                       # The pair is either $index => $limit, in which case the $value
-                       # will be numeric, or $limit => $text, in which case the $value
-                       # will be a string.
-                       if ( is_int( $value ) ) {
-                               $limit = $value;
-                               $text = $this->getLanguage()->formatNum( $limit );
-                       } else {
-                               $limit = $key;
-                               $text = $value;
-                       }
-                       $ret[$text] = $limit;
-               }
-               return $ret;
-       }
-
-       /**
-        * Get \<input type="hidden"\> elements for use in a method="get" form.
-        * Resubmits all defined elements of the query string, except for a
-        * blacklist, passed in the $blacklist parameter.
-        *
-        * @param array $blacklist Parameters from the request query which should not be resubmitted
-        * @return string HTML fragment
-        */
-       function getHiddenFields( $blacklist = array() ) {
-               $blacklist = (array)$blacklist;
-               $query = $this->getRequest()->getQueryValues();
-               foreach ( $blacklist as $name ) {
-                       unset( $query[$name] );
-               }
-               $s = '';
-               foreach ( $query as $name => $value ) {
-                       $s .= Html::hidden( $name, $value ) . "\n";
-               }
-               return $s;
-       }
-
-       /**
-        * Get a form containing a limit selection dropdown
-        *
-        * @return string HTML fragment
-        */
-       function getLimitForm() {
-               global $wgScript;
-
-               return Html::rawElement(
-                       'form',
-                       array(
-                               'method' => 'get',
-                               'action' => $wgScript
-                       ),
-                       "\n" . $this->getLimitDropdown()
-               ) . "\n";
-       }
-
-       /**
-        * Gets a limit selection dropdown
-        *
-        * @return string
-        */
-       function getLimitDropdown() {
-               # Make the select with some explanatory text
-               $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
-
-               return $this->msg( 'table_pager_limit' )
-                       ->rawParams( $this->getLimitSelect() )->escaped() .
-                       "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
-                       $this->getHiddenFields( array( 'limit' ) );
-       }
-
-       /**
-        * Return true if the named field should be sortable by the UI, false
-        * otherwise
-        *
-        * @param string $field
-        */
-       abstract function isFieldSortable( $field );
-
-       /**
-        * Format a table cell. The return value should be HTML, but use an empty
-        * string not &#160; for empty cells. Do not include the <td> and </td>.
-        *
-        * The current result row is available as $this->mCurrentRow, in case you
-        * need more context.
-        *
-        * @protected
-        *
-        * @param string $name The database field name
-        * @param string $value The value retrieved from the database
-        */
-       abstract function formatValue( $name, $value );
-
-       /**
-        * The database field name used as a default sort order.
-        *
-        * @protected
-        *
-        * @return string
-        */
-       abstract function getDefaultSort();
-
-       /**
-        * An array mapping database field names to a textual description of the
-        * field name, for use in the table header. The description should be plain
-        * text, it will be HTML-escaped later.
-        *
-        * @return array
-        */
-       abstract function getFieldNames();
-}
index a6148c7..28a825d 100644 (file)
@@ -1654,9 +1654,13 @@ class Revision implements IDBAccessObject {
         *                               self::DELETED_COMMENT = File::DELETED_COMMENT,
         *                               self::DELETED_USER = File::DELETED_USER
         * @param User|null $user User object to check, or null to use $wgUser
+        * @param Title|null $title A Title object to check for per-page restrictions on,
+        *                          instead of just plain userrights
         * @return bool
         */
-       public static function userCanBitfield( $bitfield, $field, User $user = null ) {
+       public static function userCanBitfield( $bitfield, $field, User $user = null,
+               Title $title = null
+       ) {
                if ( $bitfield & $field ) { // aspect is deleted
                        if ( $user === null ) {
                                global $wgUser;
@@ -1670,8 +1674,19 @@ class Revision implements IDBAccessObject {
                                $permissions = array( 'deletedhistory' );
                        }
                        $permissionlist = implode( ', ', $permissions );
-                       wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
-                       return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
+                       if ( $title === null ) {
+                               wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
+                               return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
+                       } else {
+                               $text = $title->getPrefixedText();
+                               wfDebug( "Checking for $permissionlist on $text due to $field match on $bitfield\n" );
+                               foreach ( $permissions as $perm ) {
+                                       if ( $title->userCan( $perm, $user ) ) {
+                                               return true;
+                                       }
+                               }
+                               return false;
+                       }
                } else {
                        return true;
                }
index b173ae9..2cdbe15 100644 (file)
@@ -328,6 +328,7 @@ class Sanitizer {
         * Regular expression to match HTML/XML attribute pairs within a tag.
         * Allows some... latitude.
         * Used in Sanitizer::fixTagAttributes and Sanitizer::decodeTagAttributes
+        * @return string
         */
        static function getAttribsRegex() {
                if ( self::$attribsRegex === null ) {
index 8574105..cddb30b 100644 (file)
@@ -265,16 +265,16 @@ if ( $wgSkipSkin ) {
 
 // Register skins
 // Use a closure to avoid leaking into global state
-call_user_func( function() use ( $wgValidSkinNames ) {
+call_user_func( function () use ( $wgValidSkinNames ) {
        $factory = SkinFactory::getDefaultInstance();
        foreach ( $wgValidSkinNames as $name => $skin ) {
-               $factory->register( $name, $skin, function() use ( $name, $skin ) {
+               $factory->register( $name, $skin, function () use ( $name, $skin ) {
                        $class = "Skin$skin";
                        return new $class( $name );
                } );
        }
        // Register a hidden "fallback" skin
-       $factory->register( 'fallback', 'Fallback', function() {
+       $factory->register( 'fallback', 'Fallback', function () {
                return new SkinFallback;
        } );
 } );
@@ -405,6 +405,16 @@ if ( $wgCookieSecure === 'detect' ) {
        $wgCookieSecure = ( WebRequest::detectProtocol() === 'https' );
 }
 
+// Back compatibility for $wgRateLimitLog deprecated with 1.23
+if ( $wgRateLimitLog && !array_key_exists( 'ratelimit', $wgDebugLogGroups ) ) {
+       $wgDebugLogGroups['ratelimit'] = $wgRateLimitLog;
+}
+
+if ( $wgProfileOnly ) {
+       $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
+       $wgDebugLogFile = '';
+}
+
 wfProfileOut( $fname . '-defaults' );
 
 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
@@ -469,16 +479,6 @@ if ( $wgTmpDirectory === false ) {
        wfProfileOut( $fname . '-tempDir' );
 }
 
-// Back compatibility for $wgRateLimitLog deprecated with 1.23
-if ( $wgRateLimitLog && !array_key_exists( 'ratelimit', $wgDebugLogGroups ) ) {
-       $wgDebugLogGroups['ratelimit'] = $wgRateLimitLog;
-}
-
-if ( $wgProfileOnly ) {
-       $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
-       $wgDebugLogFile = '';
-}
-
 wfProfileOut( $fname . '-defaults2' );
 wfProfileIn( $fname . '-misc1' );
 
@@ -595,6 +595,10 @@ if ( !is_object( $wgAuth ) ) {
  */
 $wgTitle = null;
 
+/**
+ * @deprecated since 1.24 Use DeferredUpdates::addUpdate instead
+ * @var array
+ */
 $wgDeferredUpdateList = array();
 
 // Disable all other email settings automatically if $wgEnableEmail
index a1b2352..7fdeb05 100644 (file)
@@ -158,6 +158,9 @@ class Title {
 
        /** @var TitleValue A corresponding TitleValue object */
        private $mTitleValue = null;
+
+       /** @var bool Would deleting this page be a big deletion? */
+       private $mIsBigDeletion = null;
        // @}
 
        /**
@@ -941,10 +944,12 @@ class Title {
         * Get the page's content model id, see the CONTENT_MODEL_XXX constants.
         *
         * @throws MWException
+        * @param int $flags A bit field; may be Title::GAID_FOR_UPDATE to select for update
         * @return string Content model id
         */
-       public function getContentModel() {
-               if ( !$this->mContentModel ) {
+       public function getContentModel( $flags = 0 ) {
+               # Calling getArticleID() loads the field from cache as needed
+               if ( !$this->mContentModel && $this->getArticleID( $flags ) ) {
                        $linkCache = LinkCache::singleton();
                        $this->mContentModel = $linkCache->getGoodLinkFieldObj( $this, 'model' );
                }
@@ -2075,7 +2080,7 @@ class Title {
                        $ns = $this->mNamespace == NS_MAIN ?
                                wfMessage( 'nstab-main' )->text() : $this->getNsText();
                        $errors[] = $this->mNamespace == NS_MEDIAWIKI ?
-                               array( 'protectedinterface' ) : array( 'namespaceprotected', $ns );
+                               array( 'protectedinterface', $action ) : array( 'namespaceprotected', $ns, $action );
                }
 
                return $errors;
@@ -2099,15 +2104,15 @@ class Title {
                if ( $action != 'patrol' && !$user->isAllowed( 'editusercssjs' ) ) {
                        if ( preg_match( '/^' . preg_quote( $user->getName(), '/' ) . '\//', $this->mTextform ) ) {
                                if ( $this->isCssSubpage() && !$user->isAllowedAny( 'editmyusercss', 'editusercss' ) ) {
-                                       $errors[] = array( 'mycustomcssprotected' );
+                                       $errors[] = array( 'mycustomcssprotected', $action );
                                } elseif ( $this->isJsSubpage() && !$user->isAllowedAny( 'editmyuserjs', 'edituserjs' ) ) {
-                                       $errors[] = array( 'mycustomjsprotected' );
+                                       $errors[] = array( 'mycustomjsprotected', $action );
                                }
                        } else {
                                if ( $this->isCssSubpage() && !$user->isAllowed( 'editusercss' ) ) {
-                                       $errors[] = array( 'customcssprotected' );
+                                       $errors[] = array( 'customcssprotected', $action );
                                } elseif ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
-                                       $errors[] = array( 'customjsprotected' );
+                                       $errors[] = array( 'customjsprotected', $action );
                                }
                        }
                }
@@ -2142,9 +2147,9 @@ class Title {
                                continue;
                        }
                        if ( !$user->isAllowed( $right ) ) {
-                               $errors[] = array( 'protectedpagetext', $right );
+                               $errors[] = array( 'protectedpagetext', $right, $action );
                        } elseif ( $this->mCascadeRestriction && !$user->isAllowed( 'protect' ) ) {
-                               $errors[] = array( 'protectedpagetext', 'protect' );
+                               $errors[] = array( 'protectedpagetext', 'protect', $action );
                        }
                }
 
@@ -2191,7 +2196,7 @@ class Title {
                                                foreach ( $cascadingSources as $page ) {
                                                        $pages .= '* [[:' . $page->getPrefixedText() . "]]\n";
                                                }
-                                               $errors[] = array( 'cascadeprotected', count( $cascadingSources ), $pages );
+                                               $errors[] = array( 'cascadeprotected', count( $cascadingSources ), $pages, $action );
                                        }
                                }
                        }
@@ -2258,11 +2263,15 @@ class Title {
                                $errors[] = array( 'immobile-target-page' );
                        }
                } elseif ( $action == 'delete' ) {
-                       if ( count( $this->getUserPermissionsErrorsInternal( 'edit',
-                               $user, $doExpensiveQueries, true ) )
-                       ) {
-                               // If they can't edit, they shouldn't delete.
-                               $errors[] = array( 'delete-cantedit' );
+                       $tempErrors = $this->checkPageRestrictions( 'edit',
+                               $user, array(), $doExpensiveQueries, true );
+                       if ( !$tempErrors ) {
+                               $tempErrors = $this->checkCascadingSourcesRestrictions( 'edit',
+                                       $user, $tempErrors, $doExpensiveQueries, true );
+                       }
+                       if ( $tempErrors ) {
+                               // If protection keeps them from editing, they shouldn't be able to delete.
+                               $errors[] = array( 'deleteprotected' );
                        }
                        if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
                                && !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
@@ -2437,6 +2446,19 @@ class Title {
                                'checkPermissionHooks',
                                'checkReadPermissions',
                        );
+               # Don't call checkSpecialsAndNSPermissions or checkCSSandJSPermissions
+               # here as it will lead to duplicate error messages. This is okay to do
+               # since anywhere that checks for create will also check for edit, and
+               # those checks are called for edit.
+               } elseif ( $action == 'create' ) {
+                       $checks = array(
+                               'checkQuickPermissions',
+                               'checkPermissionHooks',
+                               'checkPageRestrictions',
+                               'checkCascadingSourcesRestrictions',
+                               'checkActionPermissions',
+                               'checkUserBlock'
+                       );
                } else {
                        $checks = array(
                                'checkQuickPermissions',
@@ -3258,6 +3280,7 @@ class Title {
                $this->mEstimateRevisions = null;
                $this->mPageLanguage = false;
                $this->mDbPageLanguage = null;
+               $this->mIsBigDeletion = null;
        }
 
        /**
@@ -3300,8 +3323,8 @@ class Title {
                        // @note: splitTitleString() is a temporary hack to allow MediaWikiTitleCodec to share
                        //        the parsing code with Title, while avoiding massive refactoring.
                        // @todo: get rid of secureAndSplit, refactor parsing code.
-                       $parser = self::getTitleParser();
-                       $parts = $parser->splitTitleString( $dbkey, $this->getDefaultNamespace() );
+                       $titleParser = self::getTitleParser();
+                       $parts = $titleParser->splitTitleString( $dbkey, $this->getDefaultNamespace() );
                } catch ( MalformedTitleException $ex ) {
                        return false;
                }
@@ -4364,12 +4387,32 @@ class Title {
                        return false;
                }
 
-               $revCount = $this->estimateRevisionCount();
-               return $revCount > $wgDeleteRevisionsLimit;
+               if ( $this->mIsBigDeletion === null ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+
+                       $innerQuery = $dbr->selectSQLText(
+                               'revision',
+                               '1',
+                               array( 'rev_page' => $this->getArticleID() ),
+                               __METHOD__,
+                               array( 'LIMIT' => $wgDeleteRevisionsLimit + 1 )
+                       );
+
+                       $revCount = $dbr->query(
+                               'SELECT COUNT(*) FROM (' . $innerQuery . ') AS innerQuery',
+                               __METHOD__
+                       );
+                       $revCount = $revCount->fetchRow();
+                       $revCount = $revCount['COUNT(*)'];
+
+                       $this->mIsBigDeletion = $revCount > $wgDeleteRevisionsLimit;
+               }
+
+               return $this->mIsBigDeletion;
        }
 
        /**
-        * Get the  approximate revision count of this page.
+        * Get the approximate revision count of this page.
         *
         * @return int
         */
index 7e846ad..6b42994 100644 (file)
@@ -829,7 +829,7 @@ class User implements IDBAccessObject {
         * @param int $ts Optional timestamp to convert, default 0 for the current time
         */
        public function expirePassword( $ts = 0 ) {
-               $this->load();
+               $this->loadPasswords();
                $timestamp = wfTimestamp( TS_MW, $ts );
                $this->mPasswordExpires = $timestamp;
                $this->saveSettings();
@@ -3086,10 +3086,8 @@ class User implements IDBAccessObject {
        /**
         * Check if user is allowed to access a feature / make an action
         *
-        * @internal param \String $varargs permissions to test
+        * @param string $permissions,... Permissions to test
         * @return bool True if user is allowed to perform *any* of the given actions
-        *
-        * @return bool
         */
        public function isAllowedAny( /*...*/ ) {
                $permissions = func_get_args();
@@ -3103,7 +3101,7 @@ class User implements IDBAccessObject {
 
        /**
         *
-        * @internal param $varargs string
+        * @param string $permissions,... Permissions to test
         * @return bool True if the user is allowed to perform *all* of the given actions
         */
        public function isAllowedAll( /*...*/ ) {
index f69fe63..ab136b8 100644 (file)
@@ -164,6 +164,7 @@ class WatchedItem {
        /**
         * Check permissions
         * @param string $what 'viewmywatchlist' or 'editmywatchlist'
+        * @return bool
         */
        private function isAllowed( $what ) {
                return !$this->mCheckRights || $this->mUser->isAllowed( $what );
@@ -270,45 +271,61 @@ class WatchedItem {
        }
 
        /**
-        * Given a title and user (assumes the object is setup), add the watch to the database.
+        * @param WatchedItem[] $items
         * @return bool
         */
-       public function addWatch() {
-               wfProfileIn( __METHOD__ );
+       public static function batchAddWatch( array $items ) {
+               $section = new ProfileSection( __METHOD__ );
 
-               // Only loggedin user can have a watchlist
-               if ( wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed( 'editmywatchlist' ) ) {
-                       wfProfileOut( __METHOD__ );
+               if ( wfReadOnly() ) {
                        return false;
                }
 
-               // Use INSERT IGNORE to avoid overwriting the notification timestamp
-               // if there's already an entry for this page
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->insert( 'watchlist',
-                       array(
-                               'wl_user' => $this->getUserId(),
-                               'wl_namespace' => MWNamespace::getSubject( $this->getTitleNs() ),
-                               'wl_title' => $this->getTitleDBkey(),
+               $rows = array();
+               foreach ( $items as $item ) {
+                       // Only loggedin user can have a watchlist
+                       if ( $item->mUser->isAnon() || !$item->isAllowed( 'editmywatchlist' ) ) {
+                               continue;
+                       }
+                       $rows[] = array(
+                               'wl_user' => $item->getUserId(),
+                               'wl_namespace' => MWNamespace::getSubject( $item->getTitleNs() ),
+                               'wl_title' => $item->getTitleDBkey(),
+                               'wl_notificationtimestamp' => null,
+                       );
+                       // Every single watched page needs now to be listed in watchlist;
+                       // namespace:page and namespace_talk:page need separate entries:
+                       $rows[] = array(
+                               'wl_user' => $item->getUserId(),
+                               'wl_namespace' => MWNamespace::getTalk( $item->getTitleNs() ),
+                               'wl_title' => $item->getTitleDBkey(),
                                'wl_notificationtimestamp' => null
-                       ), __METHOD__, 'IGNORE' );
+                       );
+                       $item->watched = true;
+               }
 
-               // Every single watched page needs now to be listed in watchlist;
-               // namespace:page and namespace_talk:page need separate entries:
-               $dbw->insert( 'watchlist',
-                       array(
-                               'wl_user' => $this->getUserId(),
-                               'wl_namespace' => MWNamespace::getTalk( $this->getTitleNs() ),
-                               'wl_title' => $this->getTitleDBkey(),
-                               'wl_notificationtimestamp' => null
-                       ), __METHOD__, 'IGNORE' );
+               if ( !$rows ) {
+                       return false;
+               }
 
-               $this->watched = true;
+               $dbw = wfGetDB( DB_MASTER );
+               foreach ( array_chunk( $rows, 100 ) as $toInsert ) {
+                       // Use INSERT IGNORE to avoid overwriting the notification timestamp
+                       // if there's already an entry for this page
+                       $dbw->insert( 'watchlist', $toInsert, __METHOD__, 'IGNORE' );
+               }
 
-               wfProfileOut( __METHOD__ );
                return true;
        }
 
+       /**
+        * Given a title and user (assumes the object is setup), add the watch to the database.
+        * @return bool
+        */
+       public function addWatch() {
+               return self::batchAddWatch( array( $this ) );
+       }
+
        /**
         * Same as addWatch, only the opposite.
         * @return bool
index 6df6258..159f711 100644 (file)
@@ -134,31 +134,6 @@ class Xml {
                return self::openElement( $element, $attribs ) . $contents . "</$element>";
        }
 
-       /**
-        * Build a drop-down box for selecting a namespace
-        *
-        * @param string $selected Namespace which should be pre-selected
-        * @param string|null $all Value of an item denoting all namespaces, or null to omit
-        * @param string $element_name Value of the "name" attribute of the select tag
-        * @param string $label Optional label to add to the field
-        * @return string
-        * @deprecated since 1.19
-        */
-       public static function namespaceSelector( $selected = '', $all = null,
-               $element_name = 'namespace', $label = null
-       ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return Html::namespaceSelector( array(
-                       'selected' => $selected,
-                       'all' => $all,
-                       'label' => $label,
-               ), array(
-                       'name' => $element_name,
-                       'id' => 'namespace',
-                       'class' => 'namespaceselector',
-               ) );
-       }
-
        /**
         * Create a date selector
         *
index 7dd4616..ffdf516 100644 (file)
@@ -38,18 +38,21 @@ abstract class Action {
 
        /**
         * Page on which we're performing the action
+        * @since 1.17
         * @var WikiPage|Article|ImagePage|CategoryPage|Page $page
         */
        protected $page;
 
        /**
         * IContextSource if specified; otherwise we'll use the Context from the Page
+        * @since 1.17
         * @var IContextSource $context
         */
        protected $context;
 
        /**
         * The fields used to create the HTMLForm
+        * @since 1.17
         * @var array $fields
         */
        protected $fields;
@@ -82,6 +85,7 @@ abstract class Action {
 
        /**
         * Get an appropriate Action subclass for the given action
+        * @since 1.17
         * @param string $action
         * @param Page $page
         * @param IContextSource $context
@@ -152,6 +156,7 @@ abstract class Action {
 
        /**
         * Check if a given action is recognised, even if it's disabled
+        * @since 1.17
         *
         * @param string $name Name of an action
         * @return bool
@@ -162,6 +167,7 @@ abstract class Action {
 
        /**
         * Get the IContextSource in use here
+        * @since 1.17
         * @return IContextSource
         */
        final public function getContext() {
@@ -179,6 +185,7 @@ abstract class Action {
 
        /**
         * Get the WebRequest being used for this instance
+        * @since 1.17
         *
         * @return WebRequest
         */
@@ -188,6 +195,7 @@ abstract class Action {
 
        /**
         * Get the OutputPage being used for this instance
+        * @since 1.17
         *
         * @return OutputPage
         */
@@ -197,6 +205,7 @@ abstract class Action {
 
        /**
         * Shortcut to get the User being used for this instance
+        * @since 1.17
         *
         * @return User
         */
@@ -206,6 +215,7 @@ abstract class Action {
 
        /**
         * Shortcut to get the Skin being used for this instance
+        * @since 1.17
         *
         * @return Skin
         */
@@ -224,6 +234,8 @@ abstract class Action {
 
        /**
         * Shortcut to get the Title object from the page
+        * @since 1.17
+        *
         * @return Title
         */
        final public function getTitle() {
@@ -262,6 +274,8 @@ abstract class Action {
 
        /**
         * Return the name of the action this object responds to
+        * @since 1.17
+        *
         * @return string Lowercase name
         */
        abstract public function getName();
@@ -269,6 +283,8 @@ abstract class Action {
        /**
         * Get the permission required to perform this action.  Often, but not always,
         * the same as the action name
+        * @since 1.17
+        *
         * @return string|null
         */
        public function getRestriction() {
@@ -279,6 +295,7 @@ abstract class Action {
         * Checks if the given user (identified by an object) can perform this action.  Can be
         * overridden by sub-classes with more complicated permissions schemes.  Failures here
         * must throw subclasses of ErrorPageError
+        * @since 1.17
         *
         * @param User $user The user to check, or null to use the context user
         * @throws UserBlockedError|ReadOnlyError|PermissionsError
@@ -307,6 +324,8 @@ abstract class Action {
 
        /**
         * Whether this action requires the wiki not to be locked
+        * @since 1.17
+        *
         * @return bool
         */
        public function requiresWrite() {
@@ -315,6 +334,8 @@ abstract class Action {
 
        /**
         * Whether this action can still be executed by a blocked user
+        * @since 1.17
+        *
         * @return bool
         */
        public function requiresUnblock() {
@@ -324,6 +345,7 @@ abstract class Action {
        /**
         * Set output headers for noindexing etc.  This function will not be called through
         * the execute() entry point, so only put UI-related stuff in here.
+        * @since 1.17
         */
        protected function setHeaders() {
                $out = $this->getOutput();
@@ -344,6 +366,7 @@ abstract class Action {
 
        /**
         * Returns the description that goes below the \<h1\> tag
+        * @since 1.17
         *
         * @return string
         */
@@ -355,6 +378,8 @@ abstract class Action {
         * The main action entry point.  Do all output for display and send it to the context
         * output.  Do not use globals $wgOut, $wgRequest, etc, in implementations; use
         * $this->getOutput(), etc.
+        * @since 1.17
+        *
         * @throws ErrorPageError
         */
        abstract public function show();
index 9dc1049..12f0dff 100644 (file)
@@ -41,8 +41,7 @@ class DeleteAction extends FormlessAction {
        }
 
        public function show() {
-               global $wgUseMediaWikiUIEverywhere;
-               if ( $wgUseMediaWikiUIEverywhere ) {
+               if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $out = $this->getOutput();
                        $out->addModuleStyles( array(
                                'mediawiki.ui.input',
index aaf4526..8876724 100644 (file)
@@ -41,8 +41,7 @@ class EditAction extends FormlessAction {
        }
 
        public function show() {
-               global $wgUseMediaWikiUIEverywhere;
-               if ( $wgUseMediaWikiUIEverywhere ) {
+               if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $out = $this->getOutput();
                        $out->addModuleStyles( array(
                                'mediawiki.ui.input',
index 66ea245..523da68 100644 (file)
@@ -472,7 +472,6 @@ class HistoryPager extends ReverseChronologicalPager {
         * @return string HTML output
         */
        function getStartBody() {
-               global $wgUseMediaWikiUIEverywhere;
                $this->lastRow = false;
                $this->counter = 1;
                $this->oldIdChecked = 0;
@@ -486,7 +485,7 @@ class HistoryPager extends ReverseChronologicalPager {
                // Button container stored in $this->buttons for re-use in getEndBody()
                $this->buttons = '<div>';
                $className = 'historysubmit mw-history-compareselectedversions-button';
-               if ( $wgUseMediaWikiUIEverywhere ) {
+               if ( $this->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $className .= ' mw-ui-button mw-ui-constructive';
                }
                $this->buttons .= $this->submitButton( $this->msg( 'compareselectedversions' )->text(),
index 443660b..a7f1ac3 100644 (file)
@@ -41,8 +41,7 @@ class ProtectAction extends FormlessAction {
        }
 
        public function show() {
-               global $wgUseMediaWikiUIEverywhere;
-               if ( $wgUseMediaWikiUIEverywhere ) {
+               if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $out = $this->getOutput();
                        $out->addModuleStyles( array(
                                'mediawiki.ui.input',
index 8d94bb3..8c9a46a 100644 (file)
@@ -178,7 +178,7 @@ class WatchAction extends FormAction {
                if ( $action != 'unwatch' ) {
                        $action = 'watch';
                }
-               $salt = array( $action, $title->getDBkey() );
+               $salt = array( $action, $title->getPrefixedDBkey() );
 
                // This token stronger salted and not compatible with ApiWatch
                // It's title/action specific because index.php is GET and API is POST
index db62be0..6914b02 100644 (file)
@@ -109,9 +109,11 @@ abstract class ApiBase extends ContextSource {
                }
        }
 
-       /*****************************************************************************
-        * ABSTRACT METHODS                                                          *
-        *****************************************************************************/
+
+       /************************************************************************//**
+        * @name   Methods to implement
+        * @{
+        */
 
        /**
         * Evaluates the parameters, performs the requested query, and sets up
@@ -132,436 +134,232 @@ abstract class ApiBase extends ContextSource {
        abstract public function execute();
 
        /**
-        * Returns a string that identifies the version of the extending class.
-        * Typically includes the class name, the svn revision, timestamp, and
-        * last author. Usually done with SVN's Id keyword
-        * @return string
-        * @deprecated since 1.21, version string is no longer supported
+        * Get the module manager, or null if this module has no sub-modules
+        * @since 1.21
+        * @return ApiModuleManager
         */
-       public function getVersion() {
-               wfDeprecated( __METHOD__, '1.21' );
+       public function getModuleManager() {
+               return null;
+       }
 
-               return '';
+       /**
+        * If the module may only be used with a certain format module,
+        * it should override this method to return an instance of that formatter.
+        * A value of null means the default format will be used.
+        * @return mixed Instance of a derived class of ApiFormatBase, or null
+        */
+       public function getCustomPrinter() {
+               return null;
        }
 
        /**
-        * Get the name of the module being executed by this instance
-        * @return string
+        * Returns the description string for this module
+        * @return string|array
         */
-       public function getModuleName() {
-               return $this->mModuleName;
+       protected function getDescription() {
+               return false;
        }
 
        /**
-        * Get the module manager, or null if this module has no sub-modules
-        * @since 1.21
-        * @return ApiModuleManager
+        * Returns usage examples for this module. Return false if no examples are available.
+        * @return bool|string|array
         */
-       public function getModuleManager() {
-               return null;
+       protected function getExamples() {
+               return false;
        }
 
        /**
-        * Get parameter prefix (usually two letters or an empty string).
-        * @return string
+        * @return bool|string|array Returns a false if the module has no help URL,
+        *   else returns a (array of) string
         */
-       public function getModulePrefix() {
-               return $this->mModulePrefix;
+       public function getHelpUrls() {
+               return false;
        }
 
        /**
-        * Get the name of the module as shown in the profiler log
+        * Returns an array of allowed parameters (parameter name) => (default
+        * value) or (parameter name) => (array with PARAM_* constants as keys)
+        * Don't call this function directly: use getFinalParams() to allow
+        * hooks to modify parameters as needed.
         *
-        * @param DatabaseBase|bool $db
+        * Some derived classes may choose to handle an integer $flags parameter
+        * in the overriding methods. Callers of this method can pass zero or
+        * more OR-ed flags like GET_VALUES_FOR_HELP.
         *
-        * @return string
+        * @return array|bool
         */
-       public function getModuleProfileName( $db = false ) {
-               if ( $db ) {
-                       return 'API:' . $this->mModuleName . '-DB';
-               }
-
-               return 'API:' . $this->mModuleName;
+       protected function getAllowedParams( /* $flags = 0 */ ) {
+               // int $flags is not declared because it causes "Strict standards"
+               // warning. Most derived classes do not implement it.
+               return false;
        }
 
        /**
-        * Get the main module
-        * @return ApiMain
+        * Returns an array of parameter descriptions.
+        * Don't call this function directly: use getFinalParamDescription() to
+        * allow hooks to modify descriptions as needed.
+        * @return array|bool False on no parameter descriptions
         */
-       public function getMain() {
-               return $this->mMainModule;
+       protected function getParamDescription() {
+               return false;
        }
 
        /**
-        * Returns true if this module is the main module ($this === $this->mMainModule),
-        * false otherwise.
+        * Indicates if this module needs maxlag to be checked
         * @return bool
         */
-       public function isMain() {
-               return $this === $this->mMainModule;
+       public function shouldCheckMaxlag() {
+               return true;
        }
 
        /**
-        * Get the result object
-        * @return ApiResult
+        * Indicates whether this module requires read rights
+        * @return bool
         */
-       public function getResult() {
-               // Main module has getResult() method overridden
-               // Safety - avoid infinite loop:
-               if ( $this->isMain() ) {
-                       ApiBase::dieDebug( __METHOD__, 'base method was called on main module. ' );
-               }
-
-               return $this->getMain()->getResult();
+       public function isReadMode() {
+               return true;
        }
 
        /**
-        * Get the result data array (read-only)
-        * @return array
+        * Indicates whether this module requires write mode
+        * @return bool
         */
-       public function getResultData() {
-               return $this->getResult()->getData();
+       public function isWriteMode() {
+               return false;
        }
 
        /**
-        * Set warning section for this module. Users should monitor this
-        * section to notice any changes in API. Multiple calls to this
-        * function will result in the warning messages being separated by
-        * newlines
-        * @param string $warning Warning message
+        * Indicates whether this module must be called with a POST request
+        * @return bool
         */
-       public function setWarning( $warning ) {
-               $result = $this->getResult();
-               $data = $result->getData();
-               $moduleName = $this->getModuleName();
-               if ( isset( $data['warnings'][$moduleName] ) ) {
-                       // Don't add duplicate warnings
-                       $oldWarning = $data['warnings'][$moduleName]['*'];
-                       $warnPos = strpos( $oldWarning, $warning );
-                       // If $warning was found in $oldWarning, check if it starts at 0 or after "\n"
-                       if ( $warnPos !== false && ( $warnPos === 0 || $oldWarning[$warnPos - 1] === "\n" ) ) {
-                               // Check if $warning is followed by "\n" or the end of the $oldWarning
-                               $warnPos += strlen( $warning );
-                               if ( strlen( $oldWarning ) <= $warnPos || $oldWarning[$warnPos] === "\n" ) {
-                                       return;
-                               }
-                       }
-                       // If there is a warning already, append it to the existing one
-                       $warning = "$oldWarning\n$warning";
-               }
-               $msg = array();
-               ApiResult::setContent( $msg, $warning );
-               $result->addValue( 'warnings', $moduleName,
-                       $msg, ApiResult::OVERRIDE | ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
+       public function mustBePosted() {
+               return $this->needsToken() !== false;
        }
 
        /**
-        * If the module may only be used with a certain format module,
-        * it should override this method to return an instance of that formatter.
-        * A value of null means the default format will be used.
-        * @return mixed Instance of a derived class of ApiFormatBase, or null
+        * Returns the token type this module requires in order to execute.
+        *
+        * Modules are strongly encouraged to use the core 'csrf' type unless they
+        * have specialized security needs. If the token type is not one of the
+        * core types, you must use the ApiQueryTokensRegisterTypes hook to
+        * register it.
+        *
+        * Returning a non-falsey value here will cause self::getFinalParams() to
+        * return a required string 'token' parameter and
+        * self::getFinalParamDescription() to ensure there is standardized
+        * documentation for it. Also, self::mustBePosted() must return true when
+        * tokens are used.
+        *
+        * In previous versions of MediaWiki, true was a valid return value.
+        * Returning true will generate errors indicating that the API module needs
+        * updating.
+        *
+        * @return string|false
         */
-       public function getCustomPrinter() {
-               return null;
+       public function needsToken() {
+               return false;
        }
 
        /**
-        * Generates help message for this module, or false if there is no description
-        * @return string|bool
+        * Fetch the salt used in the Web UI corresponding to this module.
+        *
+        * Only override this if the Web UI uses a token with a non-constant salt.
+        *
+        * @since 1.24
+        * @param array $params All supplied parameters for the module
+        * @return string|array|null
         */
-       public function makeHelpMsg() {
-               static $lnPrfx = "\n  ";
-
-               $msg = $this->getFinalDescription();
-
-               if ( $msg !== false ) {
-
-                       if ( !is_array( $msg ) ) {
-                               $msg = array(
-                                       $msg
-                               );
-                       }
-                       $msg = $lnPrfx . implode( $lnPrfx, $msg ) . "\n";
-
-                       $msg .= $this->makeHelpArrayToString( $lnPrfx, false, $this->getHelpUrls() );
-
-                       if ( $this->isReadMode() ) {
-                               $msg .= "\nThis module requires read rights";
-                       }
-                       if ( $this->isWriteMode() ) {
-                               $msg .= "\nThis module requires write rights";
-                       }
-                       if ( $this->mustBePosted() ) {
-                               $msg .= "\nThis module only accepts POST requests";
-                       }
-                       if ( $this->isReadMode() || $this->isWriteMode() ||
-                               $this->mustBePosted()
-                       ) {
-                               $msg .= "\n";
-                       }
+       protected function getWebUITokenSalt( array $params ) {
+               return null;
+       }
 
-                       // Parameters
-                       $paramsMsg = $this->makeHelpMsgParameters();
-                       if ( $paramsMsg !== false ) {
-                               $msg .= "Parameters:\n$paramsMsg";
-                       }
+       /**@}*/
 
-                       $examples = $this->getExamples();
-                       if ( $examples ) {
-                               if ( !is_array( $examples ) ) {
-                                       $examples = array(
-                                               $examples
-                                       );
-                               }
-                               $msg .= "Example" . ( count( $examples ) > 1 ? 's' : '' ) . ":\n";
-                               foreach ( $examples as $k => $v ) {
-                                       if ( is_numeric( $k ) ) {
-                                               $msg .= "  $v\n";
-                                       } else {
-                                               if ( is_array( $v ) ) {
-                                                       $msgExample = implode( "\n", array_map( array( $this, 'indentExampleText' ), $v ) );
-                                               } else {
-                                                       $msgExample = "  $v";
-                                               }
-                                               $msgExample .= ":";
-                                               $msg .= wordwrap( $msgExample, 100, "\n" ) . "\n    $k\n";
-                                       }
-                               }
-                       }
-               }
-
-               return $msg;
-       }
+       /************************************************************************//**
+        * @name   Data access methods
+        * @{
+        */
 
        /**
-        * @param string $item
+        * Get the name of the module being executed by this instance
         * @return string
         */
-       private function indentExampleText( $item ) {
-               return "  " . $item;
+       public function getModuleName() {
+               return $this->mModuleName;
        }
 
        /**
-        * @param string $prefix Text to split output items
-        * @param string $title What is being output
-        * @param string|array $input
+        * Get parameter prefix (usually two letters or an empty string).
         * @return string
         */
-       protected function makeHelpArrayToString( $prefix, $title, $input ) {
-               if ( $input === false ) {
-                       return '';
-               }
-               if ( !is_array( $input ) ) {
-                       $input = array( $input );
-               }
-
-               if ( count( $input ) > 0 ) {
-                       if ( $title ) {
-                               $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
-                       } else {
-                               $msg = '  ';
-                       }
-                       $msg .= implode( $prefix, $input ) . "\n";
-
-                       return $msg;
-               }
-
-               return '';
+       public function getModulePrefix() {
+               return $this->mModulePrefix;
        }
 
        /**
-        * Generates the parameter descriptions for this module, to be displayed in the
-        * module's help.
-        * @return string|bool
+        * Get the main module
+        * @return ApiMain
         */
-       public function makeHelpMsgParameters() {
-               $params = $this->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
-               if ( $params ) {
-
-                       $paramsDescription = $this->getFinalParamDescription();
-                       $msg = '';
-                       $paramPrefix = "\n" . str_repeat( ' ', 24 );
-                       $descWordwrap = "\n" . str_repeat( ' ', 28 );
-                       foreach ( $params as $paramName => $paramSettings ) {
-                               $desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
-                               if ( is_array( $desc ) ) {
-                                       $desc = implode( $paramPrefix, $desc );
-                               }
-
-                               //handle shorthand
-                               if ( !is_array( $paramSettings ) ) {
-                                       $paramSettings = array(
-                                               self::PARAM_DFLT => $paramSettings,
-                                       );
-                               }
-
-                               //handle missing type
-                               if ( !isset( $paramSettings[ApiBase::PARAM_TYPE] ) ) {
-                                       $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] )
-                                               ? $paramSettings[ApiBase::PARAM_DFLT]
-                                               : null;
-                                       if ( is_bool( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'boolean';
-                                       } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'string';
-                                       } elseif ( is_int( $dflt ) ) {
-                                               $paramSettings[ApiBase::PARAM_TYPE] = 'integer';
-                                       }
-                               }
-
-                               if ( isset( $paramSettings[self::PARAM_DEPRECATED] )
-                                       && $paramSettings[self::PARAM_DEPRECATED]
-                               ) {
-                                       $desc = "DEPRECATED! $desc";
-                               }
-
-                               if ( isset( $paramSettings[self::PARAM_REQUIRED] )
-                                       && $paramSettings[self::PARAM_REQUIRED]
-                               ) {
-                                       $desc .= $paramPrefix . "This parameter is required";
-                               }
-
-                               $type = isset( $paramSettings[self::PARAM_TYPE] )
-                                       ? $paramSettings[self::PARAM_TYPE]
-                                       : null;
-                               if ( isset( $type ) ) {
-                                       $hintPipeSeparated = true;
-                                       $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
-                                               ? $paramSettings[self::PARAM_ISMULTI]
-                                               : false;
-                                       if ( $multi ) {
-                                               $prompt = 'Values (separate with \'|\'): ';
-                                       } else {
-                                               $prompt = 'One value: ';
-                                       }
-
-                                       if ( is_array( $type ) ) {
-                                               $choices = array();
-                                               $nothingPrompt = '';
-                                               foreach ( $type as $t ) {
-                                                       if ( $t === '' ) {
-                                                               $nothingPrompt = 'Can be empty, or ';
-                                                       } else {
-                                                               $choices[] = $t;
-                                                       }
-                                               }
-                                               $desc .= $paramPrefix . $nothingPrompt . $prompt;
-                                               $choicesstring = implode( ', ', $choices );
-                                               $desc .= wordwrap( $choicesstring, 100, $descWordwrap );
-                                               $hintPipeSeparated = false;
-                                       } else {
-                                               switch ( $type ) {
-                                                       case 'namespace':
-                                                               // Special handling because namespaces are
-                                                               // type-limited, yet they are not given
-                                                               $desc .= $paramPrefix . $prompt;
-                                                               $desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
-                                                                       100, $descWordwrap );
-                                                               $hintPipeSeparated = false;
-                                                               break;
-                                                       case 'limit':
-                                                               $desc .= $paramPrefix . "No more than {$paramSettings[self::PARAM_MAX]}";
-                                                               if ( isset( $paramSettings[self::PARAM_MAX2] ) ) {
-                                                                       $desc .= " ({$paramSettings[self::PARAM_MAX2]} for bots)";
-                                                               }
-                                                               $desc .= ' allowed';
-                                                               break;
-                                                       case 'integer':
-                                                               $s = $multi ? 's' : '';
-                                                               $hasMin = isset( $paramSettings[self::PARAM_MIN] );
-                                                               $hasMax = isset( $paramSettings[self::PARAM_MAX] );
-                                                               if ( $hasMin || $hasMax ) {
-                                                                       if ( !$hasMax ) {
-                                                                               $intRangeStr = "The value$s must be no less than " .
-                                                                                       "{$paramSettings[self::PARAM_MIN]}";
-                                                                       } elseif ( !$hasMin ) {
-                                                                               $intRangeStr = "The value$s must be no more than " .
-                                                                                       "{$paramSettings[self::PARAM_MAX]}";
-                                                                       } else {
-                                                                               $intRangeStr = "The value$s must be between " .
-                                                                                       "{$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
-                                                                       }
-
-                                                                       $desc .= $paramPrefix . $intRangeStr;
-                                                               }
-                                                               break;
-                                                       case 'upload':
-                                                               $desc .= $paramPrefix . "Must be posted as a file upload using multipart/form-data";
-                                                               break;
-                                               }
-                                       }
-
-                                       if ( $multi ) {
-                                               if ( $hintPipeSeparated ) {
-                                                       $desc .= $paramPrefix . "Separate values with '|'";
-                                               }
-
-                                               $isArray = is_array( $type );
-                                               if ( !$isArray
-                                                       || $isArray && count( $type ) > self::LIMIT_SML1
-                                               ) {
-                                                       $desc .= $paramPrefix . "Maximum number of values " .
-                                                               self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)";
-                                               }
-                                       }
-                               }
-
-                               $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
-                               if ( !is_null( $default ) && $default !== false ) {
-                                       $desc .= $paramPrefix . "Default: $default";
-                               }
-
-                               $msg .= sprintf( "  %-19s - %s\n", $this->encodeParamName( $paramName ), $desc );
-                       }
-
-                       return $msg;
-               }
+       public function getMain() {
+               return $this->mMainModule;
+       }
 
-               return false;
+       /**
+        * Returns true if this module is the main module ($this === $this->mMainModule),
+        * false otherwise.
+        * @return bool
+        */
+       public function isMain() {
+               return $this === $this->mMainModule;
        }
 
        /**
-        * Returns the description string for this module
-        * @return string|array
+        * Get the result object
+        * @return ApiResult
         */
-       protected function getDescription() {
-               return false;
+       public function getResult() {
+               // Main module has getResult() method overridden
+               // Safety - avoid infinite loop:
+               if ( $this->isMain() ) {
+                       ApiBase::dieDebug( __METHOD__, 'base method was called on main module. ' );
+               }
+
+               return $this->getMain()->getResult();
        }
 
        /**
-        * Returns usage examples for this module. Return false if no examples are available.
-        * @return bool|string|array
+        * Get the result data array (read-only)
+        * @return array
         */
-       protected function getExamples() {
-               return false;
+       public function getResultData() {
+               return $this->getResult()->getData();
        }
 
        /**
-        * Returns an array of allowed parameters (parameter name) => (default
-        * value) or (parameter name) => (array with PARAM_* constants as keys)
-        * Don't call this function directly: use getFinalParams() to allow
-        * hooks to modify parameters as needed.
-        *
-        * Some derived classes may choose to handle an integer $flags parameter
-        * in the overriding methods. Callers of this method can pass zero or
-        * more OR-ed flags like GET_VALUES_FOR_HELP.
-        *
-        * @return array|bool
+        * Gets a default slave database connection object
+        * @return DatabaseBase
         */
-       protected function getAllowedParams( /* $flags = 0 */ ) {
-               // int $flags is not declared because it causes "Strict standards"
-               // warning. Most derived classes do not implement it.
-               return false;
+       protected function getDB() {
+               if ( !isset( $this->mSlaveDB ) ) {
+                       $this->profileDBIn();
+                       $this->mSlaveDB = wfGetDB( DB_SLAVE, 'api' );
+                       $this->profileDBOut();
+               }
+
+               return $this->mSlaveDB;
        }
 
        /**
-        * Returns an array of parameter descriptions.
-        * Don't call this function directly: use getFinalParamDescription() to
-        * allow hooks to modify descriptions as needed.
-        * @return array|bool False on no parameter descriptions
+        * Get final module description, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @return array|bool False on no parameters
         */
-       protected function getParamDescription() {
-               return false;
+       public function getFinalDescription() {
+               $desc = $this->getDescription();
+               wfRunHooks( 'APIGetDescription', array( &$this, &$desc ) );
+
+               return $desc;
        }
 
        /**
@@ -574,6 +372,14 @@ abstract class ApiBase extends ContextSource {
         */
        public function getFinalParams( $flags = 0 ) {
                $params = $this->getAllowedParams( $flags );
+
+               if ( $this->needsToken() ) {
+                       $params['token'] = array(
+                               ApiBase::PARAM_TYPE => 'string',
+                               ApiBase::PARAM_REQUIRED => true,
+                       );
+               }
+
                wfRunHooks( 'APIGetAllowedParams', array( &$this, &$params, $flags ) );
 
                return $params;
@@ -587,56 +393,32 @@ abstract class ApiBase extends ContextSource {
         */
        public function getFinalParamDescription() {
                $desc = $this->getParamDescription();
-               wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) );
 
-               return $desc;
-       }
+               $tokenType = $this->needsToken();
+               if ( $tokenType ) {
+                       if ( !isset( $desc['token'] ) ) {
+                               $desc['token'] = array();
+                       } elseif ( !is_array( $desc['token'] ) ) {
+                               // We ignore a plain-string token, because it's probably an
+                               // extension that is supplying the string for BC.
+                               $desc['token'] = array();
+                       }
+                       array_unshift( $desc['token'],
+                               "A '$tokenType' token retrieved from action=query&meta=tokens"
+                       );
+               }
 
-       /**
-        * Formerly used to fetch a list of possible properites in the result,
-        * somehow organized with respect to the prop parameter that causes them to
-        * be returned. The specific semantics of the return value was never
-        * specified. Since this was never possible to be accurately updated, it
-        * has been removed.
-        *
-        * @deprecated since 1.24
-        * @return array|bool
-        */
-       protected function getResultProperties() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return false;
-       }
+               wfRunHooks( 'APIGetParamDescription', array( &$this, &$desc ) );
 
-       /**
-        * @see self::getResultProperties()
-        * @deprecated since 1.24
-        * @return array|bool
-        */
-       public function getFinalResultProperties() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
+               return $desc;
        }
 
-       /**
-        * @see self::getResultProperties()
-        * @deprecated since 1.24
-        */
-       protected static function addTokenProperties( &$props, $tokenFunctions ) {
-               wfDeprecated( __METHOD__, '1.24' );
-       }
+       /**@}*/
 
-       /**
-        * Get final module description, after hooks have had a chance to tweak it as
-        * needed.
-        *
-        * @return array|bool False on no parameters
+       /************************************************************************//**
+        * @name   Parameter handling
+        * @{
         */
-       public function getFinalDescription() {
-               $desc = $this->getDescription();
-               wfRunHooks( 'APIGetDescription', array( &$this, &$desc ) );
-
-               return $desc;
-       }
 
        /**
         * This method mangles parameter name based on the prefix supplied to the constructor.
@@ -714,16 +496,6 @@ abstract class ApiBase extends ContextSource {
                }
        }
 
-       /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
-        */
-       public function getRequireOnlyOneParameterErrorMessages( $params ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
-
        /**
         * Die if more than one of a certain set of parameters is set and not false.
         *
@@ -746,16 +518,6 @@ abstract class ApiBase extends ContextSource {
                }
        }
 
-       /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
-        */
-       public function getRequireMaxOneParameterErrorMessages( $params ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
-
        /**
         * Die if none of a certain set of parameters is set and not false.
         *
@@ -780,13 +542,13 @@ abstract class ApiBase extends ContextSource {
        }
 
        /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
+        * Callback function used in requireOnlyOneParameter to check whether required parameters are set
+        *
+        * @param object $x Parameter to check is not null/false
+        * @return bool
         */
-       public function getRequireAtLeastOneParameterErrorMessages( $params ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
+       private function parameterNotEmpty( $x ) {
+               return !is_null( $x ) && $x !== false;
        }
 
        /**
@@ -829,26 +591,6 @@ abstract class ApiBase extends ContextSource {
                return $pageObj;
        }
 
-       /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
-        */
-       public function getTitleOrPageIdErrorMessage() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
-
-       /**
-        * Callback function used in requireOnlyOneParameter to check whether required parameters are set
-        *
-        * @param object $x Parameter to check is not null/false
-        * @return bool
-        */
-       private function parameterNotEmpty( $x ) {
-               return !is_null( $x ) && $x !== false;
-       }
-
        /**
         * Return true if we're to watch the page, false if not, null if no change.
         * @param string $watchlist Valid values: 'watch', 'unwatch', 'preferences', 'nochange'
@@ -890,21 +632,6 @@ abstract class ApiBase extends ContextSource {
                }
        }
 
-       /**
-        * Set a watch (or unwatch) based the based on a watchlist parameter.
-        * @param string $watch Valid values: 'watch', 'unwatch', 'preferences', 'nochange'
-        * @param Title $titleObj The article's title to change
-        * @param string $userOption The user option to consider when $watch=preferences
-        */
-       protected function setWatch( $watch, $titleObj, $userOption = null ) {
-               $value = $this->getWatchlistValue( $watch, $titleObj, $userOption );
-               if ( $value === null ) {
-                       return;
-               }
-
-               WatchAction::doWatchOrUnwatch( $value, $titleObj, $this->getUser() );
-       }
-
        /**
         * Using the settings determine the value for the given parameter
         *
@@ -998,6 +725,9 @@ abstract class ApiBase extends ContextSource {
                        if ( isset( $value ) && $type == 'namespace' ) {
                                $type = MWNamespace::getValidNamespaces();
                        }
+                       if ( isset( $value ) && $type == 'submodule' ) {
+                               $type = $this->getModuleManager()->getNames( $paramName );
+                       }
                }
 
                if ( isset( $value ) && ( $multi || is_array( $type ) ) ) {
@@ -1197,7 +927,7 @@ abstract class ApiBase extends ContextSource {
         * @param int $botMax Maximum value for sysops/bots
         * @param bool $enforceLimits Whether to enforce (die) if value is outside limits
         */
-       function validateLimit( $paramName, &$value, $min, $max, $botMax = null, $enforceLimits = false ) {
+       protected function validateLimit( $paramName, &$value, $min, $max, $botMax = null, $enforceLimits = false ) {
                if ( !is_null( $min ) && $value < $min ) {
 
                        $msg = $this->encodeParamName( $paramName ) . " may not be less than $min (set to $value)";
@@ -1235,7 +965,7 @@ abstract class ApiBase extends ContextSource {
         * @param string $encParamName Parameter name
         * @return string Validated and normalized parameter
         */
-       function validateTimestamp( $value, $encParamName ) {
+       protected function validateTimestamp( $value, $encParamName ) {
                $unixTimestamp = wfTimestamp( TS_UNIX, $value );
                if ( $unixTimestamp === false ) {
                        $this->dieUsage(
@@ -1247,6 +977,44 @@ abstract class ApiBase extends ContextSource {
                return wfTimestamp( TS_MW, $unixTimestamp );
        }
 
+       /**
+        * Validate the supplied token.
+        *
+        * @since 1.24
+        * @param string $token Supplied token
+        * @param array $params All supplied parameters for the module
+        * @return bool
+        */
+       public final function validateToken( $token, array $params ) {
+               $tokenType = $this->needsToken();
+               $salts = ApiQueryTokens::getTokenTypeSalts();
+               if ( !isset( $salts[$tokenType] ) ) {
+                       throw new MWException(
+                               "Module '{$this->getModuleName()}' tried to use token type '$tokenType' " .
+                                       'without registering it'
+                       );
+               }
+
+               if ( $this->getUser()->matchEditToken(
+                       $token,
+                       $salts[$tokenType],
+                       $this->getRequest()
+               ) ) {
+                       return true;
+               }
+
+               $webUiSalt = $this->getWebUITokenSalt( $params );
+               if ( $webUiSalt !== null && $this->getUser()->matchEditToken(
+                       $token,
+                       $webUiSalt,
+                       $this->getRequest()
+               ) ) {
+                       return true;
+               }
+
+               return false;
+       }
+
        /**
         * Validate and normalize of parameters of type 'user'
         * @param string $value Parameter value
@@ -1261,8 +1029,117 @@ abstract class ApiBase extends ContextSource {
                                "baduser_{$encParamName}"
                        );
                }
-
-               return $title->getText();
+
+               return $title->getText();
+       }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Utility methods
+        * @{
+        */
+
+       /**
+        * Set a watch (or unwatch) based the based on a watchlist parameter.
+        * @param string $watch Valid values: 'watch', 'unwatch', 'preferences', 'nochange'
+        * @param Title $titleObj The article's title to change
+        * @param string $userOption The user option to consider when $watch=preferences
+        */
+       protected function setWatch( $watch, $titleObj, $userOption = null ) {
+               $value = $this->getWatchlistValue( $watch, $titleObj, $userOption );
+               if ( $value === null ) {
+                       return;
+               }
+
+               WatchAction::doWatchOrUnwatch( $value, $titleObj, $this->getUser() );
+       }
+
+       /**
+        * Truncate an array to a certain length.
+        * @param array $arr Array to truncate
+        * @param int $limit Maximum length
+        * @return bool True if the array was truncated, false otherwise
+        */
+       public static function truncateArray( &$arr, $limit ) {
+               $modified = false;
+               while ( count( $arr ) > $limit ) {
+                       array_pop( $arr );
+                       $modified = true;
+               }
+
+               return $modified;
+       }
+
+       /**
+        * Gets the user for whom to get the watchlist
+        *
+        * @param array $params
+        * @return User
+        */
+       public function getWatchlistUser( $params ) {
+               if ( !is_null( $params['owner'] ) && !is_null( $params['token'] ) ) {
+                       $user = User::newFromName( $params['owner'], false );
+                       if ( !( $user && $user->getId() ) ) {
+                               $this->dieUsage( 'Specified user does not exist', 'bad_wlowner' );
+                       }
+                       $token = $user->getOption( 'watchlisttoken' );
+                       if ( $token == '' || $token != $params['token'] ) {
+                               $this->dieUsage(
+                                       'Incorrect watchlist token provided -- please set a correct token in Special:Preferences',
+                                       'bad_wltoken'
+                               );
+                       }
+               } else {
+                       if ( !$this->getUser()->isLoggedIn() ) {
+                               $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' );
+                       }
+                       if ( !$this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
+                               $this->dieUsage( 'You don\'t have permission to view your watchlist', 'permissiondenied' );
+                       }
+                       $user = $this->getUser();
+               }
+
+               return $user;
+       }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Warning and error reporting
+        * @{
+        */
+
+       /**
+        * Set warning section for this module. Users should monitor this
+        * section to notice any changes in API. Multiple calls to this
+        * function will result in the warning messages being separated by
+        * newlines
+        * @param string $warning Warning message
+        */
+       public function setWarning( $warning ) {
+               $result = $this->getResult();
+               $data = $result->getData();
+               $moduleName = $this->getModuleName();
+               if ( isset( $data['warnings'][$moduleName] ) ) {
+                       // Don't add duplicate warnings
+                       $oldWarning = $data['warnings'][$moduleName]['*'];
+                       $warnPos = strpos( $oldWarning, $warning );
+                       // If $warning was found in $oldWarning, check if it starts at 0 or after "\n"
+                       if ( $warnPos !== false && ( $warnPos === 0 || $oldWarning[$warnPos - 1] === "\n" ) ) {
+                               // Check if $warning is followed by "\n" or the end of the $oldWarning
+                               $warnPos += strlen( $warning );
+                               if ( strlen( $oldWarning ) <= $warnPos || $oldWarning[$warnPos] === "\n" ) {
+                                       return;
+                               }
+                       }
+                       // If there is a warning already, append it to the existing one
+                       $warning = "$oldWarning\n$warning";
+               }
+               $msg = array();
+               ApiResult::setContent( $msg, $warning );
+               $result->addValue( 'warnings', $moduleName,
+                       $msg, ApiResult::OVERRIDE | ApiResult::ADD_ON_TOP | ApiResult::NO_SIZE_CHECK );
        }
 
        /**
@@ -1279,22 +1156,6 @@ abstract class ApiBase extends ContextSource {
                $this->setWarning( $msg );
        }
 
-       /**
-        * Truncate an array to a certain length.
-        * @param array $arr Array to truncate
-        * @param int $limit Maximum length
-        * @return bool True if the array was truncated, false otherwise
-        */
-       public static function truncateArray( &$arr, $limit ) {
-               $modified = false;
-               while ( count( $arr ) > $limit ) {
-                       array_pop( $arr );
-                       $modified = true;
-               }
-
-               return $modified;
-       }
-
        /**
         * Throw a UsageException, which will (if uncaught) call the main module's
         * error handler and die with an error message.
@@ -1411,9 +1272,9 @@ abstract class ApiBase extends ContextSource {
                        'code' => 'cantedit',
                        'info' => "You can't protect this page because you can't edit it"
                ),
-               'delete-cantedit' => array(
+               'deleteprotected' => array(
                        'code' => 'cantedit',
-                       'info' => "You can't delete this page because you can't edit it"
+                       'info' => "You can't delete this page because it has been protected"
                ),
                'badaccess-group0' => array(
                        'code' => 'permissiondenied',
@@ -1956,139 +1817,298 @@ abstract class ApiBase extends ContextSource {
                throw new MWException( "Internal error in $method: $message" );
        }
 
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Help message generation
+        * @{
+        */
+
        /**
-        * Indicates if this module needs maxlag to be checked
-        * @return bool
+        * Generates help message for this module, or false if there is no description
+        * @return string|bool
         */
-       public function shouldCheckMaxlag() {
-               return true;
+       public function makeHelpMsg() {
+               static $lnPrfx = "\n  ";
+
+               $msg = $this->getFinalDescription();
+
+               if ( $msg !== false ) {
+
+                       if ( !is_array( $msg ) ) {
+                               $msg = array(
+                                       $msg
+                               );
+                       }
+                       $msg = $lnPrfx . implode( $lnPrfx, $msg ) . "\n";
+
+                       $msg .= $this->makeHelpArrayToString( $lnPrfx, false, $this->getHelpUrls() );
+
+                       if ( $this->isReadMode() ) {
+                               $msg .= "\nThis module requires read rights";
+                       }
+                       if ( $this->isWriteMode() ) {
+                               $msg .= "\nThis module requires write rights";
+                       }
+                       if ( $this->mustBePosted() ) {
+                               $msg .= "\nThis module only accepts POST requests";
+                       }
+                       if ( $this->isReadMode() || $this->isWriteMode() ||
+                               $this->mustBePosted()
+                       ) {
+                               $msg .= "\n";
+                       }
+
+                       // Parameters
+                       $paramsMsg = $this->makeHelpMsgParameters();
+                       if ( $paramsMsg !== false ) {
+                               $msg .= "Parameters:\n$paramsMsg";
+                       }
+
+                       $examples = $this->getExamples();
+                       if ( $examples ) {
+                               if ( !is_array( $examples ) ) {
+                                       $examples = array(
+                                               $examples
+                                       );
+                               }
+                               $msg .= "Example" . ( count( $examples ) > 1 ? 's' : '' ) . ":\n";
+                               foreach ( $examples as $k => $v ) {
+                                       if ( is_numeric( $k ) ) {
+                                               $msg .= "  $v\n";
+                                       } else {
+                                               if ( is_array( $v ) ) {
+                                                       $msgExample = implode( "\n", array_map( array( $this, 'indentExampleText' ), $v ) );
+                                               } else {
+                                                       $msgExample = "  $v";
+                                               }
+                                               $msgExample .= ":";
+                                               $msg .= wordwrap( $msgExample, 100, "\n" ) . "\n    $k\n";
+                                       }
+                               }
+                       }
+               }
+
+               return $msg;
        }
 
        /**
-        * Indicates whether this module requires read rights
-        * @return bool
+        * @param string $item
+        * @return string
         */
-       public function isReadMode() {
-               return true;
+       private function indentExampleText( $item ) {
+               return "  " . $item;
        }
 
        /**
-        * Indicates whether this module requires write mode
-        * @return bool
+        * @param string $prefix Text to split output items
+        * @param string $title What is being output
+        * @param string|array $input
+        * @return string
         */
-       public function isWriteMode() {
-               return false;
+       protected function makeHelpArrayToString( $prefix, $title, $input ) {
+               if ( $input === false ) {
+                       return '';
+               }
+               if ( !is_array( $input ) ) {
+                       $input = array( $input );
+               }
+
+               if ( count( $input ) > 0 ) {
+                       if ( $title ) {
+                               $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n  ";
+                       } else {
+                               $msg = '  ';
+                       }
+                       $msg .= implode( $prefix, $input ) . "\n";
+
+                       return $msg;
+               }
+
+               return '';
        }
 
-       /**
-        * Indicates whether this module must be called with a POST request
-        * @return bool
-        */
-       public function mustBePosted() {
-               return false;
-       }
+       /**
+        * Generates the parameter descriptions for this module, to be displayed in the
+        * module's help.
+        * @return string|bool
+        */
+       public function makeHelpMsgParameters() {
+               $params = $this->getFinalParams( ApiBase::GET_VALUES_FOR_HELP );
+               if ( $params ) {
+
+                       $paramsDescription = $this->getFinalParamDescription();
+                       $msg = '';
+                       $paramPrefix = "\n" . str_repeat( ' ', 24 );
+                       $descWordwrap = "\n" . str_repeat( ' ', 28 );
+                       foreach ( $params as $paramName => $paramSettings ) {
+                               $desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
+                               if ( is_array( $desc ) ) {
+                                       $desc = implode( $paramPrefix, $desc );
+                               }
+
+                               //handle shorthand
+                               if ( !is_array( $paramSettings ) ) {
+                                       $paramSettings = array(
+                                               self::PARAM_DFLT => $paramSettings,
+                                       );
+                               }
+
+                               //handle missing type
+                               if ( !isset( $paramSettings[ApiBase::PARAM_TYPE] ) ) {
+                                       $dflt = isset( $paramSettings[ApiBase::PARAM_DFLT] )
+                                               ? $paramSettings[ApiBase::PARAM_DFLT]
+                                               : null;
+                                       if ( is_bool( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'boolean';
+                                       } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'string';
+                                       } elseif ( is_int( $dflt ) ) {
+                                               $paramSettings[ApiBase::PARAM_TYPE] = 'integer';
+                                       }
+                               }
+
+                               if ( isset( $paramSettings[self::PARAM_DEPRECATED] )
+                                       && $paramSettings[self::PARAM_DEPRECATED]
+                               ) {
+                                       $desc = "DEPRECATED! $desc";
+                               }
+
+                               if ( isset( $paramSettings[self::PARAM_REQUIRED] )
+                                       && $paramSettings[self::PARAM_REQUIRED]
+                               ) {
+                                       $desc .= $paramPrefix . "This parameter is required";
+                               }
+
+                               $type = isset( $paramSettings[self::PARAM_TYPE] )
+                                       ? $paramSettings[self::PARAM_TYPE]
+                                       : null;
+                               if ( isset( $type ) ) {
+                                       $hintPipeSeparated = true;
+                                       $multi = isset( $paramSettings[self::PARAM_ISMULTI] )
+                                               ? $paramSettings[self::PARAM_ISMULTI]
+                                               : false;
+                                       if ( $multi ) {
+                                               $prompt = 'Values (separate with \'|\'): ';
+                                       } else {
+                                               $prompt = 'One value: ';
+                                       }
+
+                                       if ( $type === 'submodule' ) {
+                                               $type = $this->getModuleManager()->getNames( $paramName );
+                                               sort( $type );
+                                       }
+                                       if ( is_array( $type ) ) {
+                                               $choices = array();
+                                               $nothingPrompt = '';
+                                               foreach ( $type as $t ) {
+                                                       if ( $t === '' ) {
+                                                               $nothingPrompt = 'Can be empty, or ';
+                                                       } else {
+                                                               $choices[] = $t;
+                                                       }
+                                               }
+                                               $desc .= $paramPrefix . $nothingPrompt . $prompt;
+                                               $choicesstring = implode( ', ', $choices );
+                                               $desc .= wordwrap( $choicesstring, 100, $descWordwrap );
+                                               $hintPipeSeparated = false;
+                                       } else {
+                                               switch ( $type ) {
+                                                       case 'namespace':
+                                                               // Special handling because namespaces are
+                                                               // type-limited, yet they are not given
+                                                               $desc .= $paramPrefix . $prompt;
+                                                               $desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
+                                                                       100, $descWordwrap );
+                                                               $hintPipeSeparated = false;
+                                                               break;
+                                                       case 'limit':
+                                                               $desc .= $paramPrefix . "No more than {$paramSettings[self::PARAM_MAX]}";
+                                                               if ( isset( $paramSettings[self::PARAM_MAX2] ) ) {
+                                                                       $desc .= " ({$paramSettings[self::PARAM_MAX2]} for bots)";
+                                                               }
+                                                               $desc .= ' allowed';
+                                                               break;
+                                                       case 'integer':
+                                                               $s = $multi ? 's' : '';
+                                                               $hasMin = isset( $paramSettings[self::PARAM_MIN] );
+                                                               $hasMax = isset( $paramSettings[self::PARAM_MAX] );
+                                                               if ( $hasMin || $hasMax ) {
+                                                                       if ( !$hasMax ) {
+                                                                               $intRangeStr = "The value$s must be no less than " .
+                                                                                       "{$paramSettings[self::PARAM_MIN]}";
+                                                                       } elseif ( !$hasMin ) {
+                                                                               $intRangeStr = "The value$s must be no more than " .
+                                                                                       "{$paramSettings[self::PARAM_MAX]}";
+                                                                       } else {
+                                                                               $intRangeStr = "The value$s must be between " .
+                                                                                       "{$paramSettings[self::PARAM_MIN]} and {$paramSettings[self::PARAM_MAX]}";
+                                                                       }
+
+                                                                       $desc .= $paramPrefix . $intRangeStr;
+                                                               }
+                                                               break;
+                                                       case 'upload':
+                                                               $desc .= $paramPrefix . "Must be posted as a file upload using multipart/form-data";
+                                                               break;
+                                               }
+                                       }
+
+                                       if ( $multi ) {
+                                               if ( $hintPipeSeparated ) {
+                                                       $desc .= $paramPrefix . "Separate values with '|'";
+                                               }
 
-       /**
-        * Returns whether this module requires a token to execute
-        * It is used to show possible errors in action=paraminfo
-        * see bug 25248
-        * @return bool
-        */
-       public function needsToken() {
-               return false;
-       }
+                                               $isArray = is_array( $type );
+                                               if ( !$isArray
+                                                       || $isArray && count( $type ) > self::LIMIT_SML1
+                                               ) {
+                                                       $desc .= $paramPrefix . "Maximum number of values " .
+                                                               self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)";
+                                               }
+                                       }
+                               }
 
-       /**
-        * Returns the token salt if there is one,
-        * '' if the module doesn't require a salt,
-        * else false if the module doesn't need a token
-        * You have also to override needsToken()
-        * Value is passed to User::getEditToken
-        * @return bool|string|array
-        */
-       public function getTokenSalt() {
-               return false;
-       }
+                               $default = isset( $paramSettings[self::PARAM_DFLT] ) ? $paramSettings[self::PARAM_DFLT] : null;
+                               if ( !is_null( $default ) && $default !== false ) {
+                                       $desc .= $paramPrefix . "Default: $default";
+                               }
 
-       /**
-        * Gets the user for whom to get the watchlist
-        *
-        * @param array $params
-        * @return User
-        */
-       public function getWatchlistUser( $params ) {
-               if ( !is_null( $params['owner'] ) && !is_null( $params['token'] ) ) {
-                       $user = User::newFromName( $params['owner'], false );
-                       if ( !( $user && $user->getId() ) ) {
-                               $this->dieUsage( 'Specified user does not exist', 'bad_wlowner' );
-                       }
-                       $token = $user->getOption( 'watchlisttoken' );
-                       if ( $token == '' || $token != $params['token'] ) {
-                               $this->dieUsage(
-                                       'Incorrect watchlist token provided -- please set a correct token in Special:Preferences',
-                                       'bad_wltoken'
-                               );
-                       }
-               } else {
-                       if ( !$this->getUser()->isLoggedIn() ) {
-                               $this->dieUsage( 'You must be logged-in to have a watchlist', 'notloggedin' );
-                       }
-                       if ( !$this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
-                               $this->dieUsage( 'You don\'t have permission to view your watchlist', 'permissiondenied' );
+                               $msg .= sprintf( "  %-19s - %s\n", $this->encodeParamName( $paramName ), $desc );
                        }
-                       $user = $this->getUser();
-               }
 
-               return $user;
-       }
+                       return $msg;
+               }
 
-       /**
-        * @return bool|string|array Returns a false if the module has no help URL,
-        *   else returns a (array of) string
-        */
-       public function getHelpUrls() {
                return false;
        }
 
-       /**
-        * This formerly attempted to return a list of all possible errors returned
-        * by the module. However, this was impossible to maintain in many cases
-        * since errors could come from other areas of MediaWiki and in some cases
-        * from arbitrary extension hooks. Since a partial list claiming to be
-        * comprehensive is unlikely to be useful, it was removed.
-        *
-        * @deprecated since 1.24
-        * @return array
-        */
-       public function getPossibleErrors() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
+       /**@}*/
 
-       /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
+       /************************************************************************//**
+        * @name   Profiling
+        * @{
         */
-       public function getFinalPossibleErrors() {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
 
        /**
-        * @see self::getPossibleErrors()
-        * @deprecated since 1.24
-        * @return array
+        * Profiling: total module execution time
         */
-       public function parseErrors( $errors ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               return array();
-       }
+       private $mTimeIn = 0, $mModuleTime = 0;
 
        /**
-        * Profiling: total module execution time
+        * Get the name of the module as shown in the profiler log
+        *
+        * @param DatabaseBase|bool $db
+        *
+        * @return string
         */
-       private $mTimeIn = 0, $mModuleTime = 0;
+       public function getModuleProfileName( $db = false ) {
+               if ( $db ) {
+                       return 'API:' . $this->mModuleName . '-DB';
+               }
+
+               return 'API:' . $this->mModuleName;
+       }
 
        /**
         * Start module profiling
@@ -2200,46 +2220,152 @@ abstract class ApiBase extends ContextSource {
        }
 
        /**
-        * Gets a default slave database connection object
-        * @return DatabaseBase
+        * Write logging information for API features to a debug log, for usage
+        * analysis.
+        * @param string $feature Feature being used.
         */
-       protected function getDB() {
-               if ( !isset( $this->mSlaveDB ) ) {
-                       $this->profileDBIn();
-                       $this->mSlaveDB = wfGetDB( DB_SLAVE, 'api' );
-                       $this->profileDBOut();
-               }
+       protected function logFeatureUsage( $feature ) {
+               $request = $this->getRequest();
+               $s = '"' . addslashes( $feature ) . '"' .
+                       ' "' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) . '"' .
+                       ' "' . $request->getIP() . '"' .
+                       ' "' . addslashes( $request->getHeader( 'Referer' ) ) . '"' .
+                       ' "' . addslashes( $request->getHeader( 'User-agent' ) ) . '"';
+               wfDebugLog( 'api-feature-usage', $s, 'private' );
+       }
 
-               return $this->mSlaveDB;
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Deprecated
+        * @{
+        */
+
+       /**
+        * Formerly returned a string that identifies the version of the extending
+        * class. Typically included the class name, the svn revision, timestamp,
+        * and last author. Usually done with SVN's Id keyword
+        *
+        * @deprecated since 1.21, version string is no longer supported
+        * @return string
+        */
+       public function getVersion() {
+               wfDeprecated( __METHOD__, '1.21' );
+               return '';
        }
 
        /**
-        * Debugging function that prints a value and an optional backtrace
-        * @param mixed $value Value to print
-        * @param string $name Description of the printed value
-        * @param bool $backtrace If true, print a backtrace
+        * Formerly used to fetch a list of possible properites in the result,
+        * somehow organized with respect to the prop parameter that causes them to
+        * be returned. The specific semantics of the return value was never
+        * specified. Since this was never possible to be accurately updated, it
+        * has been removed.
+        *
+        * @deprecated since 1.24
+        * @return array|bool
         */
-       public static function debugPrint( $value, $name = 'unknown', $backtrace = false ) {
-               print "\n\n<pre><b>Debugging value '$name':</b>\n\n";
-               var_export( $value );
-               if ( $backtrace ) {
-                       print "\n" . wfBacktrace();
-               }
-               print "\n</pre>\n";
+       protected function getResultProperties() {
+               wfDeprecated( __METHOD__, '1.24' );
+               return false;
        }
 
        /**
-        * Write logging information for API features to a debug log, for usage
-        * analysis.
-        * @param string $feature Feature being used.
+        * @see self::getResultProperties()
+        * @deprecated since 1.24
+        * @return array|bool
         */
-       protected function logFeatureUsage( $feature ) {
-               $request = $this->getRequest();
-               $s = $feature .
-                       ' ' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) .
-                       ' ' . $request->getIP() .
-                       ' "' . $request->getHeader( 'Referer' ) . '"' .
-                       ' "' . $request->getHeader( 'User-agent' ) . '"';
-               wfDebugLog( 'api-feature-usage', $s, 'private' );
+       public function getFinalResultProperties() {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getResultProperties()
+        * @deprecated since 1.24
+        */
+       protected static function addTokenProperties( &$props, $tokenFunctions ) {
+               wfDeprecated( __METHOD__, '1.24' );
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getRequireOnlyOneParameterErrorMessages( $params ) {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getRequireMaxOneParameterErrorMessages( $params ) {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getRequireAtLeastOneParameterErrorMessages( $params ) {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getTitleOrPageIdErrorMessage() {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * This formerly attempted to return a list of all possible errors returned
+        * by the module. However, this was impossible to maintain in many cases
+        * since errors could come from other areas of MediaWiki and in some cases
+        * from arbitrary extension hooks. Since a partial list claiming to be
+        * comprehensive is unlikely to be useful, it was removed.
+        *
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getPossibleErrors() {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function getFinalPossibleErrors() {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
+       }
+
+       /**
+        * @see self::getPossibleErrors()
+        * @deprecated since 1.24
+        * @return array
+        */
+       public function parseErrors( $errors ) {
+               wfDeprecated( __METHOD__, '1.24' );
+               return array();
        }
+
+       /**@}*/
 }
+
+/**
+ * For really cool vim folding this needs to be at the end:
+ * vim: foldmarker=@{,@} foldmethod=marker
+ */
index 4fa50a4..07f62c6 100644 (file)
@@ -152,7 +152,6 @@ class ApiBlock extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => null,
                        'expiry' => 'never',
                        'reason' => '',
                        'anononly' => false,
@@ -169,7 +168,6 @@ class ApiBlock extends ApiBase {
        public function getParamDescription() {
                return array(
                        'user' => 'Username, IP address or IP range you want to block',
-                       'token' => 'A block token previously obtained through prop=info',
                        'expiry' => 'Relative expiry time, e.g. \'5 months\' or \'2 weeks\'. ' .
                                'If set to \'infinite\', \'indefinite\' or \'never\', the block will never expire.',
                        'reason' => 'Reason for block',
@@ -192,17 +190,13 @@ class ApiBlock extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
                return array(
-                       'api.php?action=block&user=123.5.5.12&expiry=3%20days&reason=First%20strike',
-                       'api.php?action=block&user=Vandal&expiry=never&reason=Vandalism&nocreate=&autoblock=&noemail='
+                       'api.php?action=block&user=123.5.5.12&expiry=3%20days&reason=First%20strike&token=123ABC',
+                       'api.php?action=block&user=Vandal&expiry=never&reason=Vandalism&nocreate=&autoblock=&noemail=&token=123ABC'
                );
        }
 
index aab0303..abca824 100644 (file)
@@ -188,10 +188,6 @@ class ApiDelete extends ApiBase {
                        'pageid' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reason' => null,
                        'watch' => array(
                                ApiBase::PARAM_DFLT => false,
@@ -220,7 +216,6 @@ class ApiDelete extends ApiBase {
                return array(
                        'title' => "Title of the page you want to delete. Cannot be used together with {$p}pageid",
                        'pageid' => "Page ID of the page you want to delete. Cannot be used together with {$p}title",
-                       'token' => 'A delete token previously retrieved through prop=info',
                        'reason'
                                => 'Reason for the deletion. If not set, an automatically generated reason will be used',
                        'watch' => 'Add the page to your watchlist',
@@ -236,11 +231,7 @@ class ApiDelete extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 9126ad3..8a76271 100644 (file)
@@ -513,10 +513,6 @@ class ApiEditPage extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                        ),
                        'text' => null,
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'summary' => null,
                        'minor' => false,
                        'notminor' => false,
@@ -575,8 +571,8 @@ class ApiEditPage extends ApiBase {
                        'sectiontitle' => 'The title for a new section',
                        'text' => 'Page content',
                        'token' => array(
-                               'Edit token. You can get one of these through prop=info.',
-                               "The token should always be sent as the last parameter, or at " .
+                               /* Standard description is automatically prepended */
+                               'The token should always be sent as the last parameter, or at ' .
                                        "least, after the {$p}text parameter"
                        ),
                        'summary'
@@ -589,7 +585,8 @@ class ApiEditPage extends ApiBase {
                                'Used to detect edit conflicts; leave unset to ignore conflicts'
                        ),
                        'starttimestamp' => array(
-                               'Timestamp when you obtained the edit token.',
+                               'Timestamp when you began the editing process, e.g. when the current page content ' .
+                                       'was loaded for editing.',
                                'Used to detect edit conflicts; leave unset to ignore conflicts'
                        ),
                        'recreate' => 'Override any errors about the article having been deleted in the meantime',
@@ -616,11 +613,7 @@ class ApiEditPage extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 1a4d67d..d35b848 100644 (file)
@@ -94,10 +94,6 @@ class ApiEmailUser extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'ccme' => false,
                );
        }
@@ -107,7 +103,6 @@ class ApiEmailUser extends ApiBase {
                        'target' => 'User to send email to',
                        'subject' => 'Subject header',
                        'text' => 'Mail body',
-                       'token' => 'A token previously acquired via prop=info',
                        'ccme' => 'Send a copy of this mail to me',
                );
        }
@@ -117,16 +112,12 @@ class ApiEmailUser extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
                return array(
-                       'api.php?action=emailuser&target=WikiSysop&text=Content'
+                       'api.php?action=emailuser&target=WikiSysop&text=Content&token=123ABC'
                                => 'Send an email to the User "WikiSysop" with the text "Content"',
                );
        }
index 58e4ff9..f518e17 100644 (file)
@@ -132,17 +132,12 @@ class ApiFileRevert extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true,
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                );
        }
 
        public function getParamDescription() {
                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',
                );
@@ -155,11 +150,7 @@ class ApiFileRevert extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 2e3fc11..9165ce8 100644 (file)
@@ -247,6 +247,7 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
 
        /**
         * Get the contents of the buffer.
+        * @return string
         */
        public function getBuffer() {
                return $this->mBuffer;
@@ -351,79 +352,3 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
                $this->setWarning( "format=$name has been deprecated. Please use format=json$fm instead." );
        }
 }
-
-/**
- * This printer is used to wrap an instance of the Feed class
- * @ingroup API
- */
-class ApiFormatFeedWrapper extends ApiFormatBase {
-
-       public function __construct( ApiMain $main ) {
-               parent::__construct( $main, 'feed' );
-       }
-
-       /**
-        * Call this method to initialize output data. See execute()
-        * @param ApiResult $result
-        * @param object $feed An instance of one of the $wgFeedClasses classes
-        * @param array $feedItems Array of FeedItem objects
-        */
-       public static function setResult( $result, $feed, $feedItems ) {
-               // Store output in the Result data.
-               // This way we can check during execution if any error has occurred
-               // Disable size checking for this because we can't continue
-               // cleanly; size checking would cause more problems than it'd
-               // solve
-               $result->addValue( null, '_feed', $feed, ApiResult::NO_SIZE_CHECK );
-               $result->addValue( null, '_feeditems', $feedItems, ApiResult::NO_SIZE_CHECK );
-       }
-
-       /**
-        * Feed does its own headers
-        *
-        * @return null
-        */
-       public function getMimeType() {
-               return null;
-       }
-
-       /**
-        * Optimization - no need to sanitize data that will not be needed
-        *
-        * @return bool
-        */
-       public function getNeedsRawData() {
-               return true;
-       }
-
-       /**
-        * ChannelFeed doesn't give us a method to print errors in a friendly
-        * manner, so just punt errors to the default printer.
-        * @return bool
-        */
-       public function canPrintErrors() {
-               return false;
-       }
-
-       /**
-        * This class expects the result data to be in a custom format set by self::setResult()
-        * $result['_feed'] - an instance of one of the $wgFeedClasses classes
-        * $result['_feeditems'] - an array of FeedItem instances
-        */
-       public function execute() {
-               $data = $this->getResultData();
-               if ( isset( $data['_feed'] ) && isset( $data['_feeditems'] ) ) {
-                       $feed = $data['_feed'];
-                       $items = $data['_feeditems'];
-
-                       $feed->outHeader();
-                       foreach ( $items as & $item ) {
-                               $feed->outItem( $item );
-                       }
-                       $feed->outFooter();
-               } else {
-                       // Error has occurred, print something useful
-                       ApiBase::dieDebug( __METHOD__, 'Invalid feed class/item' );
-               }
-       }
-}
index 61ed18f..5ec518b 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * API PHP's var_export() output formatter
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiFormatDbg extends ApiFormatBase {
index 7d32246..d4c7cab 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * API PHP's var_dump() output formatter
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiFormatDump extends ApiFormatBase {
diff --git a/includes/api/ApiFormatFeedWrapper.php b/includes/api/ApiFormatFeedWrapper.php
new file mode 100644 (file)
index 0000000..9260006
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+/**
+ *
+ *
+ * Created on Sep 19, 2006
+ *
+ * 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
+ * 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
+ */
+
+/**
+ * This printer is used to wrap an instance of the Feed class
+ * @ingroup API
+ */
+class ApiFormatFeedWrapper extends ApiFormatBase {
+
+       public function __construct( ApiMain $main ) {
+               parent::__construct( $main, 'feed' );
+       }
+
+       /**
+        * Call this method to initialize output data. See execute()
+        * @param ApiResult $result
+        * @param object $feed An instance of one of the $wgFeedClasses classes
+        * @param array $feedItems Array of FeedItem objects
+        */
+       public static function setResult( $result, $feed, $feedItems ) {
+               // Store output in the Result data.
+               // This way we can check during execution if any error has occurred
+               // Disable size checking for this because we can't continue
+               // cleanly; size checking would cause more problems than it'd
+               // solve
+               $result->addValue( null, '_feed', $feed, ApiResult::NO_SIZE_CHECK );
+               $result->addValue( null, '_feeditems', $feedItems, ApiResult::NO_SIZE_CHECK );
+       }
+
+       /**
+        * Feed does its own headers
+        *
+        * @return null
+        */
+       public function getMimeType() {
+               return null;
+       }
+
+       /**
+        * Optimization - no need to sanitize data that will not be needed
+        *
+        * @return bool
+        */
+       public function getNeedsRawData() {
+               return true;
+       }
+
+       /**
+        * ChannelFeed doesn't give us a method to print errors in a friendly
+        * manner, so just punt errors to the default printer.
+        * @return bool
+        */
+       public function canPrintErrors() {
+               return false;
+       }
+
+       /**
+        * This class expects the result data to be in a custom format set by self::setResult()
+        * $result['_feed'] - an instance of one of the $wgFeedClasses classes
+        * $result['_feeditems'] - an array of FeedItem instances
+        */
+       public function execute() {
+               $data = $this->getResultData();
+               if ( isset( $data['_feed'] ) && isset( $data['_feeditems'] ) ) {
+                       $feed = $data['_feed'];
+                       $items = $data['_feeditems'];
+
+                       $feed->outHeader();
+                       foreach ( $items as & $item ) {
+                               $feed->outItem( $item );
+                       }
+                       $feed->outFooter();
+               } else {
+                       // Error has occurred, print something useful
+                       ApiBase::dieDebug( __METHOD__, 'Invalid feed class/item' );
+               }
+       }
+}
index 3de2943..c451ed7 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * API Text output formatter
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiFormatTxt extends ApiFormatBase {
index a08c3ab..ba90c26 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * API WDDX output formatter
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiFormatWddx extends ApiFormatBase {
index 9f9b057..3798f89 100644 (file)
@@ -26,6 +26,7 @@
 
 /**
  * API YAML output formatter
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiFormatYaml extends ApiFormatJson {
index 26def44..20396dd 100644 (file)
@@ -184,10 +184,6 @@ class ApiImageRotate extends ApiBase {
                                ApiBase::PARAM_TYPE => array( '90', '180', '270' ),
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'continue' => '',
                );
                if ( $flags ) {
@@ -202,7 +198,6 @@ class ApiImageRotate extends ApiBase {
 
                return $pageSet->getFinalParamDescription() + array(
                        'rotation' => 'Degrees to rotate image clockwise',
-                       'token' => 'Edit token. You can get one of these through action=tokens',
                        'continue' => 'When more results are available, use this to continue',
                );
        }
@@ -212,11 +207,7 @@ class ApiImageRotate extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 25ce89b..b11348e 100644 (file)
@@ -99,10 +99,6 @@ class ApiImport extends ApiBase {
 
        public function getAllowedParams() {
                return array(
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'summary' => null,
                        'xml' => array(
                                ApiBase::PARAM_TYPE => 'upload',
@@ -122,7 +118,6 @@ class ApiImport extends ApiBase {
 
        public function getParamDescription() {
                return array(
-                       'token' => 'Import token obtained through prop=info',
                        'summary' => 'Import summary',
                        'xml' => 'Uploaded XML file',
                        'interwikisource' => 'For interwiki imports: wiki to import from',
@@ -143,11 +138,7 @@ class ApiImport extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 115c7b0..7f711b7 100644 (file)
@@ -736,6 +736,11 @@ class ApiMain extends ApiBase {
                        }
                }
 
+               if ( $this->getParameter( 'curtimestamp' ) ) {
+                       $result->addValue( null, 'curtimestamp', wfTimestamp( TS_ISO_8601, time() ),
+                               ApiResult::NO_SIZE_CHECK );
+               }
+
                $params = $this->extractRequestParams();
 
                $this->mAction = $params['action'];
@@ -759,18 +764,35 @@ class ApiMain extends ApiBase {
                }
                $moduleParams = $module->extractRequestParams();
 
-               // Die if token required, but not provided
-               $salt = $module->getTokenSalt();
-               if ( $salt !== false ) {
+               // Check token, if necessary
+               if ( $module->needsToken() === true ) {
+                       throw new MWException(
+                               "Module '{$module->getModuleName()}' must be updated for the new token handling. " .
+                               "See documentation for ApiBase::needsToken for details."
+                       );
+               }
+               if ( $module->needsToken() ) {
+                       if ( !$module->mustBePosted() ) {
+                               throw new MWException(
+                                       "Module '{$module->getModuleName()}' must require POST to use tokens."
+                               );
+                       }
+
                        if ( !isset( $moduleParams['token'] ) ) {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        }
 
-                       if ( !$this->getUser()->matchEditToken(
-                               $moduleParams['token'],
-                               $salt,
-                               $this->getContext()->getRequest() )
-                       ) {
+                       if ( array_key_exists(
+                               $module->encodeParamName( 'token' ),
+                               $this->getRequest()->getQueryValues()
+                       ) ) {
+                               $this->dieUsage(
+                                       "The '{$module->encodeParamName( 'token' )}' parameter must be POSTed",
+                                       'mustposttoken'
+                               );
+                       }
+
+                       if ( !$module->validateToken( $moduleParams['token'], $moduleParams ) ) {
                                $this->dieUsageMsg( 'sessionfailure' );
                        }
                }
@@ -1090,11 +1112,11 @@ class ApiMain extends ApiBase {
                return array(
                        'format' => array(
                                ApiBase::PARAM_DFLT => ApiMain::API_DEFAULT_FORMAT,
-                               ApiBase::PARAM_TYPE => $this->mModuleMgr->getNames( 'format' )
+                               ApiBase::PARAM_TYPE => 'submodule',
                        ),
                        'action' => array(
                                ApiBase::PARAM_DFLT => 'help',
-                               ApiBase::PARAM_TYPE => $this->mModuleMgr->getNames( 'action' )
+                               ApiBase::PARAM_TYPE => 'submodule',
                        ),
                        'maxlag' => array(
                                ApiBase::PARAM_TYPE => 'integer'
@@ -1112,6 +1134,7 @@ class ApiMain extends ApiBase {
                        ),
                        'requestid' => null,
                        'servedby' => false,
+                       'curtimestamp' => false,
                        'origin' => null,
                );
        }
@@ -1139,6 +1162,7 @@ class ApiMain extends ApiBase {
                        'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
                        'servedby' => 'Include the hostname that served the request in the ' .
                                'results. Unconditionally shown on error',
+                       'curtimestamp' => 'Include the current timestamp in the result.',
                        'origin' => array(
                                'When accessing the API using a cross-domain AJAX request (CORS), set this to the',
                                'originating domain. This must be included in any pre-flight request, and',
index 602a905..04e931d 100644 (file)
@@ -195,10 +195,6 @@ class ApiMove extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reason' => '',
                        'movetalk' => false,
                        'movesubpages' => false,
@@ -231,7 +227,6 @@ class ApiMove extends ApiBase {
                        'from' => "Title of the page you want to move. Cannot be used together with {$p}fromid",
                        'fromid' => "Page ID of the page you want to move. Cannot be used together with {$p}from",
                        'to' => 'Title you want to rename the page to',
-                       'token' => 'A move token previously retrieved through prop=info',
                        'reason' => 'Reason for the move',
                        'movetalk' => 'Move the talk page, if it exists',
                        'movesubpages' => 'Move subpages, if applicable',
@@ -249,11 +244,7 @@ class ApiMove extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 8ac9b9a..b01dc3e 100644 (file)
@@ -135,10 +135,6 @@ class ApiOptions extends ApiBase {
                $optionKinds[] = 'all';
 
                return array(
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reset' => false,
                        'resetkinds' => array(
                                ApiBase::PARAM_TYPE => $optionKinds,
@@ -159,7 +155,6 @@ class ApiOptions extends ApiBase {
 
        public function getParamDescription() {
                return array(
-                       'token' => 'An options token previously obtained through the action=tokens',
                        'reset' => 'Resets preferences to the site defaults',
                        'resetkinds' => 'List of types of options to reset when the "reset" option is set',
                        'change' => array( 'List of changes, formatted name=value (e.g. skin=vector), ' .
@@ -183,11 +178,7 @@ class ApiOptions extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getHelpUrls() {
index 935d5ae..067b2f5 100644 (file)
@@ -198,6 +198,10 @@ class ApiParamInfo extends ApiBase {
                                $a['required'] = '';
                        }
 
+                       if ( $n === 'token' && $obj->needsToken() ) {
+                               $a['tokentype'] = $obj->needsToken();
+                       }
+
                        if ( isset( $p[ApiBase::PARAM_DFLT] ) ) {
                                $type = $p[ApiBase::PARAM_TYPE];
                                if ( $type === 'boolean' ) {
@@ -224,7 +228,13 @@ class ApiParamInfo extends ApiBase {
                        }
 
                        if ( isset( $p[ApiBase::PARAM_TYPE] ) ) {
-                               $a['type'] = $p[ApiBase::PARAM_TYPE];
+                               if ( $p[ApiBase::PARAM_TYPE] === 'submodule' ) {
+                                       $a['type'] = $obj->getModuleManager()->getNames( $n );
+                                       sort( $a['type'] );
+                                       $a['submodules'] = '';
+                               } else {
+                                       $a['type'] = $p[ApiBase::PARAM_TYPE];
+                               }
                                if ( is_array( $a['type'] ) ) {
                                        // To prevent sparse arrays from being serialized to JSON as objects
                                        $a['type'] = array_values( $a['type'] );
index d09470b..06fdf85 100644 (file)
@@ -473,6 +473,7 @@ class ApiParse extends ApiBase {
        /**
         * @param Content $content
         * @param string $what Identifies the content in error messages, e.g. page title.
+        * @return Content|bool
         */
        private function getSectionContent( Content $content, $what ) {
                // Not cached (save or load)
index 9690952..8b66781 100644 (file)
@@ -77,10 +77,6 @@ class ApiPatrol extends ApiBase {
 
        public function getAllowedParams() {
                return array(
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'rcid' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
@@ -92,7 +88,6 @@ class ApiPatrol extends ApiBase {
 
        public function getParamDescription() {
                return array(
-                       'token' => 'Patrol token obtained from list=recentchanges',
                        'rcid' => 'Recentchanges ID to patrol',
                        'revid' => 'Revision ID to patrol',
                );
@@ -103,17 +98,13 @@ class ApiPatrol extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
                return 'patrol';
        }
 
        public function getExamples() {
                return array(
-                       'api.php?action=patrol&token=123abc&rcid=230672766',
-                       'api.php?action=patrol&token=123abc&revid=230672766'
+                       'api.php?action=patrol&token=123ABC&rcid=230672766',
+                       'api.php?action=patrol&token=123ABC&revid=230672766'
                );
        }
 
index 844d1cc..a3d12b7 100644 (file)
@@ -148,10 +148,6 @@ class ApiProtect extends ApiBase {
                        'pageid' => array(
                                ApiBase::PARAM_TYPE => 'integer',
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'protections' => array(
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_REQUIRED => true,
@@ -185,7 +181,6 @@ class ApiProtect extends ApiBase {
                return array(
                        'title' => "Title of the page you want to (un)protect. Cannot be used together with {$p}pageid",
                        'pageid' => "ID of the page you want to (un)protect. Cannot be used together with {$p}title",
-                       'token' => 'A protect token previously retrieved through prop=info',
                        'protections' => 'List of protection levels, formatted action=group (e.g. edit=sysop)',
                        'expiry' => array(
                                'Expiry timestamps. If only one timestamp is ' .
@@ -208,11 +203,7 @@ class ApiProtect extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 4359201..3d6372c 100644 (file)
@@ -108,6 +108,7 @@ class ApiQuery extends ApiBase {
                'siteinfo' => 'ApiQuerySiteinfo',
                'userinfo' => 'ApiQueryUserInfo',
                'filerepoinfo' => 'ApiQueryFileRepoInfo',
+               'tokens' => 'ApiQueryTokens',
        );
 
        /**
@@ -510,15 +511,15 @@ class ApiQuery extends ApiBase {
                $result = array(
                        'prop' => array(
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => $this->mModuleMgr->getNames( 'prop' )
+                               ApiBase::PARAM_TYPE => 'submodule',
                        ),
                        'list' => array(
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => $this->mModuleMgr->getNames( 'list' )
+                               ApiBase::PARAM_TYPE => 'submodule',
                        ),
                        'meta' => array(
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => $this->mModuleMgr->getNames( 'meta' )
+                               ApiBase::PARAM_TYPE => 'submodule',
                        ),
                        'indexpageids' => false,
                        'export' => false,
index 6680316..afb939b 100644 (file)
@@ -47,6 +47,11 @@ abstract class ApiQueryBase extends ApiBase {
                $this->resetQueryParams();
        }
 
+       /************************************************************************//**
+        * @name   Methods to implement
+        * @{
+        */
+
        /**
         * Get the cache mode for the data generated by this module. Override
         * this in the module subclass. For possible return values and other
@@ -62,6 +67,68 @@ abstract class ApiQueryBase extends ApiBase {
                return 'private';
        }
 
+       /**
+        * Override this method to request extra fields from the pageSet
+        * using $pageSet->requestField('fieldName')
+        * @param ApiPageSet $pageSet
+        */
+       public function requestExtraData( $pageSet ) {
+       }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Data access
+        * @{
+        */
+
+       /**
+        * Get the main Query module
+        * @return ApiQuery
+        */
+       public function getQuery() {
+               return $this->mQueryModule;
+       }
+
+       /**
+        * Get the Query database connection (read-only)
+        * @return DatabaseBase
+        */
+       protected function getDB() {
+               if ( is_null( $this->mDb ) ) {
+                       $this->mDb = $this->getQuery()->getDB();
+               }
+
+               return $this->mDb;
+       }
+
+       /**
+        * Selects the query database connection with the given name.
+        * See ApiQuery::getNamedDB() for more information
+        * @param string $name Name to assign to the database connection
+        * @param int $db One of the DB_* constants
+        * @param array $groups Query groups
+        * @return DatabaseBase
+        */
+       public function selectNamedDB( $name, $db, $groups ) {
+               $this->mDb = $this->getQuery()->getNamedDB( $name, $db, $groups );
+       }
+
+       /**
+        * Get the PageSet object to work on
+        * @return ApiPageSet
+        */
+       protected function getPageSet() {
+               return $this->getQuery()->getPageSet();
+       }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Querying
+        * @{
+        */
+
        /**
         * Blank the internal arrays with query parameters
         */
@@ -305,29 +372,64 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * Estimate the row count for the SELECT query that would be run if we
-        * called select() right now, and check if it's acceptable.
-        * @return bool True if acceptable, false otherwise
+        * @param string $query
+        * @param string $protocol
+        * @return null|string
         */
-       protected function checkRowCount() {
-               $db = $this->getDB();
-               $this->profileDBIn();
-               $rowcount = $db->estimateRowCount(
-                       $this->tables,
-                       $this->fields,
-                       $this->where,
-                       __METHOD__,
-                       $this->options
-               );
-               $this->profileDBOut();
+       public function prepareUrlQuerySearchString( $query = null, $protocol = null ) {
+               $db = $this->getDb();
+               if ( !is_null( $query ) || $query != '' ) {
+                       if ( is_null( $protocol ) ) {
+                               $protocol = 'http://';
+                       }
 
-               if ( $rowcount > $this->getConfig()->get( 'APIMaxDBRows' ) ) {
-                       return false;
+                       $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
+                       if ( !$likeQuery ) {
+                               $this->dieUsage( 'Invalid query', 'bad_query' );
+                       }
+
+                       $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
+
+                       return 'el_index ' . $db->buildLike( $likeQuery );
+               } elseif ( !is_null( $protocol ) ) {
+                       return 'el_index ' . $db->buildLike( "$protocol", $db->anyString() );
                }
 
-               return true;
+               return null;
        }
 
+       /**
+        * Filters hidden users (where the user doesn't have the right to view them)
+        * Also adds relevant block information
+        *
+        * @param bool $showBlockInfo
+        * @return void
+        */
+       public function showHiddenUsersAddBlockInfo( $showBlockInfo ) {
+               $this->addTables( 'ipblocks' );
+               $this->addJoinConds( array(
+                       'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
+               ) );
+
+               $this->addFields( 'ipb_deleted' );
+
+               if ( $showBlockInfo ) {
+                       $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
+               }
+
+               // Don't show hidden names
+               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
+                       $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
+               }
+       }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Utility methods
+        * @{
+        */
+
        /**
         * Add information (title and namespace) about a Title object to a
         * result array
@@ -340,22 +442,6 @@ abstract class ApiQueryBase extends ApiBase {
                $arr[$prefix . 'title'] = $title->getPrefixedText();
        }
 
-       /**
-        * Override this method to request extra fields from the pageSet
-        * using $pageSet->requestField('fieldName')
-        * @param ApiPageSet $pageSet
-        */
-       public function requestExtraData( $pageSet ) {
-       }
-
-       /**
-        * Get the main Query module
-        * @return ApiQuery
-        */
-       public function getQuery() {
-               return $this->mQueryModule;
-       }
-
        /**
         * Add a sub-element under the page element with the given page ID
         * @param int $pageId Page ID
@@ -405,89 +491,21 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * Get the Query database connection (read-only)
-        * @return DatabaseBase
-        */
-       protected function getDB() {
-               if ( is_null( $this->mDb ) ) {
-                       $this->mDb = $this->getQuery()->getDB();
-               }
-
-               return $this->mDb;
-       }
-
-       /**
-        * Selects the query database connection with the given name.
-        * See ApiQuery::getNamedDB() for more information
-        * @param string $name Name to assign to the database connection
-        * @param int $db One of the DB_* constants
-        * @param array $groups Query groups
-        * @return DatabaseBase
-        */
-       public function selectNamedDB( $name, $db, $groups ) {
-               $this->mDb = $this->getQuery()->getNamedDB( $name, $db, $groups );
-       }
-
-       /**
-        * Get the PageSet object to work on
-        * @return ApiPageSet
-        */
-       protected function getPageSet() {
-               return $this->getQuery()->getPageSet();
-       }
-
-       /**
-        * Convert a title to a DB key
-        * @param string $title Page title with spaces
-        * @return string Page title with underscores
-        */
-       public function titleToKey( $title ) {
-               // Don't throw an error if we got an empty string
-               if ( trim( $title ) == '' ) {
-                       return '';
-               }
-               $t = Title::newFromText( $title );
-               if ( !$t ) {
-                       $this->dieUsageMsg( array( 'invalidtitle', $title ) );
-               }
-
-               return $t->getPrefixedDBkey();
-       }
-
-       /**
-        * The inverse of titleToKey()
-        * @param string $key Page title with underscores
-        * @return string Page title with spaces
-        */
-       public function keyToTitle( $key ) {
-               // Don't throw an error if we got an empty string
-               if ( trim( $key ) == '' ) {
-                       return '';
-               }
-               $t = Title::newFromDBkey( $key );
-               // This really shouldn't happen but we gotta check anyway
-               if ( !$t ) {
-                       $this->dieUsageMsg( array( 'invalidtitle', $key ) );
-               }
-
-               return $t->getPrefixedText();
-       }
-
-       /**
-        * An alternative to titleToKey() that doesn't trim trailing spaces, and
-        * does not mangle the input if starts with something that looks like a
-        * namespace. It is advisable to pass the namespace parameter in order to
-        * handle per-namespace capitalization settings.
-        * @param string $titlePart Title part with spaces
-        * @param int $defaultNamespace Namespace to assume
-        * @return string Title part with underscores
+        * Convert an input title or title prefix into a dbkey.
+        *
+        * $namespace should always be specified in order to handle per-namespace
+        * capitalization settings.
+        *
+        * @param string $titlePart Title part
+        * @param int $defaultNamespace Namespace of the title
+        * @return string DBkey (no namespace prefix)
         */
-       public function titlePartToKey( $titlePart, $defaultNamespace = NS_MAIN ) {
-               $t = Title::makeTitleSafe( $defaultNamespace, $titlePart . 'x' );
+       public function titlePartToKey( $titlePart, $namespace = NS_MAIN ) {
+               $t = Title::makeTitleSafe( $namespace, $titlePart . 'x' );
                if ( !$t ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
                }
-               if ( $defaultNamespace != $t->getNamespace() || $t->isExternal() ) {
+               if ( $namespace != $t->getNamespace() || $t->isExternal() ) {
                        // This can happen in two cases. First, if you call titlePartToKey with a title part
                        // that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
                        // difficult to handle such a case. Such cases cannot exist and are therefore treated
@@ -499,15 +517,6 @@ abstract class ApiQueryBase extends ApiBase {
                return substr( $t->getDbKey(), 0, -1 );
        }
 
-       /**
-        * An alternative to keyToTitle() that doesn't trim trailing spaces
-        * @param string $keyPart Key part with spaces
-        * @return string Key part with underscores
-        */
-       public function keyPartToTitle( $keyPart ) {
-               return substr( $this->keyToTitle( $keyPart . 'x' ), 0, -1 );
-       }
-
        /**
         * Gets the personalised direction parameter description
         *
@@ -523,58 +532,6 @@ abstract class ApiQueryBase extends ApiBase {
                );
        }
 
-       /**
-        * @param string $query
-        * @param string $protocol
-        * @return null|string
-        */
-       public function prepareUrlQuerySearchString( $query = null, $protocol = null ) {
-               $db = $this->getDb();
-               if ( !is_null( $query ) || $query != '' ) {
-                       if ( is_null( $protocol ) ) {
-                               $protocol = 'http://';
-                       }
-
-                       $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
-                       if ( !$likeQuery ) {
-                               $this->dieUsage( 'Invalid query', 'bad_query' );
-                       }
-
-                       $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
-
-                       return 'el_index ' . $db->buildLike( $likeQuery );
-               } elseif ( !is_null( $protocol ) ) {
-                       return 'el_index ' . $db->buildLike( "$protocol", $db->anyString() );
-               }
-
-               return null;
-       }
-
-       /**
-        * Filters hidden users (where the user doesn't have the right to view them)
-        * Also adds relevant block information
-        *
-        * @param bool $showBlockInfo
-        * @return void
-        */
-       public function showHiddenUsersAddBlockInfo( $showBlockInfo ) {
-               $this->addTables( 'ipblocks' );
-               $this->addJoinConds( array(
-                       'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
-               ) );
-
-               $this->addFields( 'ipb_deleted' );
-
-               if ( $showBlockInfo ) {
-                       $this->addFields( array( 'ipb_id', 'ipb_by', 'ipb_by_text', 'ipb_reason', 'ipb_expiry' ) );
-               }
-
-               // Don't show hidden names
-               if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
-                       $this->addWhere( 'ipb_deleted = 0 OR ipb_deleted IS NULL' );
-               }
-       }
-
        /**
         * @param string $hash
         * @return bool
@@ -604,6 +561,94 @@ abstract class ApiQueryBase extends ApiBase {
                        'viewsuppressed'
                );
        }
+
+       /**@}*/
+
+       /************************************************************************//**
+        * @name   Deprecated
+        * @{
+        */
+
+       /**
+        * Estimate the row count for the SELECT query that would be run if we
+        * called select() right now, and check if it's acceptable.
+        * @deprecated since 1.24
+        * @return bool True if acceptable, false otherwise
+        */
+       protected function checkRowCount() {
+               wfDeprecated( __METHOD__, 1.24 );
+               $db = $this->getDB();
+               $this->profileDBIn();
+               $rowcount = $db->estimateRowCount(
+                       $this->tables,
+                       $this->fields,
+                       $this->where,
+                       __METHOD__,
+                       $this->options
+               );
+               $this->profileDBOut();
+
+               if ( $rowcount > $this->getConfig()->get( 'APIMaxDBRows' ) ) {
+                       return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * Convert a title to a DB key
+        * @deprecated since 1.24, past uses of this were always incorrect and should
+        *   have used self::titlePartToKey() instead
+        * @param string $title Page title with spaces
+        * @return string Page title with underscores
+        */
+       public function titleToKey( $title ) {
+               wfDeprecated( __METHOD__, 1.24 );
+               // Don't throw an error if we got an empty string
+               if ( trim( $title ) == '' ) {
+                       return '';
+               }
+               $t = Title::newFromText( $title );
+               if ( !$t ) {
+                       $this->dieUsageMsg( array( 'invalidtitle', $title ) );
+               }
+
+               return $t->getPrefixedDBkey();
+       }
+
+       /**
+        * The inverse of titleToKey()
+        * @deprecated since 1.24, unused and probably never needed
+        * @param string $key Page title with underscores
+        * @return string Page title with spaces
+        */
+       public function keyToTitle( $key ) {
+               wfDeprecated( __METHOD__, 1.24 );
+               // Don't throw an error if we got an empty string
+               if ( trim( $key ) == '' ) {
+                       return '';
+               }
+               $t = Title::newFromDBkey( $key );
+               // This really shouldn't happen but we gotta check anyway
+               if ( !$t ) {
+                       $this->dieUsageMsg( array( 'invalidtitle', $key ) );
+               }
+
+               return $t->getPrefixedText();
+       }
+
+       /**
+        * Inverse of titlePartToKey()
+        * @deprecated since 1.24, unused and probably never needed
+        * @param string $keyPart DBkey, with prefix
+        * @return string Key part with underscores
+        */
+       public function keyPartToTitle( $keyPart ) {
+               wfDeprecated( __METHOD__, 1.24 );
+               return substr( $this->keyToTitle( $keyPart . 'x' ), 0, -1 );
+       }
+
+       /**@}*/
 }
 
 /**
@@ -641,7 +686,7 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase {
        }
 
        /**
-        * Overrides base class to prepend 'g' to every generator parameter
+        * Overrides ApiBase to prepend 'g' to every generator parameter
         * @param string $paramName Parameter name
         * @return string Prefixed parameter name
         */
index 6b1185b..9042696 100644 (file)
@@ -61,6 +61,13 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                $fld_token = isset( $prop['token'] );
                $fld_tags = isset( $prop['tags'] );
 
+               if ( isset( $prop['token'] ) ) {
+                       $p = $this->getModulePrefix();
+                       $this->setWarning(
+                               "{$p}prop=token has been deprecated. Please use action=query&meta=tokens instead."
+                       );
+               }
+
                // If we're in JSON callback mode, no tokens can be obtained
                if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) ) {
                        $fld_token = false;
@@ -493,7 +500,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                ' len            - Adds the length (bytes) of the revision',
                                ' sha1           - Adds the SHA-1 (base 16) of the revision',
                                ' content        - Adds the content of the revision',
-                               ' token          - Gives the edit token',
+                               ' token          - DEPRECATED! Gives the edit token',
                                ' tags           - Tags for the revision',
                        ),
                        'namespace' => 'Only list pages in this namespace (3)',
index bb388cd..a185ee2 100644 (file)
@@ -42,11 +42,19 @@ class ApiQueryIWLinks extends ApiQueryBase {
                }
 
                $params = $this->extractRequestParams();
+               $prop = array_flip( (array)$params['prop'] );
 
                if ( isset( $params['title'] ) && !isset( $params['prefix'] ) ) {
                        $this->dieUsageMsg( array( 'missingparam', 'prefix' ) );
                }
 
+               // Handle deprecated param
+               $this->requireMaxOneParameter( $params, 'url', 'prop' );
+               if ( $params['url'] ) {
+                       $this->logFeatureUsage( 'prop=iwlinks&iwurl' );
+                       $prop = array( 'url' => 1 );
+               }
+
                $this->addFields( array(
                        'iwl_from',
                        'iwl_prefix',
@@ -114,7 +122,7 @@ class ApiQueryIWLinks extends ApiQueryBase {
                        }
                        $entry = array( 'prefix' => $row->iwl_prefix );
 
-                       if ( $params['url'] ) {
+                       if ( isset( $prop['url'] ) ) {
                                $title = Title::newFromText( "{$row->iwl_prefix}:{$row->iwl_title}" );
                                if ( $title ) {
                                        $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
@@ -139,7 +147,16 @@ class ApiQueryIWLinks extends ApiQueryBase {
 
        public function getAllowedParams() {
                return array(
-                       'url' => false,
+                       'url' => array(
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ),
+                       'prop' => array(
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_TYPE => array(
+                                       'url',
+                               )
+                       ),
                        'limit' => array(
                                ApiBase::PARAM_DFLT => 10,
                                ApiBase::PARAM_TYPE => 'limit',
@@ -162,7 +179,11 @@ class ApiQueryIWLinks extends ApiQueryBase {
 
        public function getParamDescription() {
                return array(
-                       'url' => 'Whether to get the full URL',
+                       'prop' => array(
+                               'Which additional properties to get for each interlanguage link',
+                               ' url      - Adds the full URL',
+                       ),
+                       'url' => "Whether to get the full URL (Cannot be used with {$this->getModulePrefix()}prop)",
                        'limit' => 'How many interwiki links to return',
                        'continue' => 'When more results are available, use this to continue',
                        'prefix' => 'Prefix for the interwiki',
index be1de93..3ac9c8a 100644 (file)
@@ -79,6 +79,7 @@ class ApiQueryInfo extends ApiQueryBase {
         * Get an array mapping token names to their handler functions.
         * The prototype for a token function is func($pageid, $title)
         * it should return a token or false (permission denied)
+        * @deprecated since 1.24
         * @return array Array(tokenname => function)
         */
        protected function getTokenFunctions() {
@@ -110,10 +111,16 @@ class ApiQueryInfo extends ApiQueryBase {
 
        static protected $cachedTokens = array();
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function resetTokenCache() {
                ApiQueryInfo::$cachedTokens = array();
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getEditToken( $pageid, $title ) {
                // We could check for $title->userCan('edit') here,
                // but that's too expensive for this purpose
@@ -131,6 +138,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['edit'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getDeleteToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isAllowed( 'delete' ) ) {
@@ -145,6 +155,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['delete'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getProtectToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isAllowed( 'protect' ) ) {
@@ -159,6 +172,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['protect'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getMoveToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isAllowed( 'move' ) ) {
@@ -173,6 +189,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['move'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getBlockToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isAllowed( 'block' ) ) {
@@ -187,11 +206,17 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['block'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getUnblockToken( $pageid, $title ) {
                // Currently, this is exactly the same as the block token
                return self::getBlockToken( $pageid, $title );
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getEmailToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->canSendEmail() || $wgUser->isBlockedFromEmailUser() ) {
@@ -206,6 +231,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['email'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getImportToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isAllowedAny( 'import', 'importupload' ) ) {
@@ -220,6 +248,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['import'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getWatchToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isLoggedIn() ) {
@@ -234,6 +265,9 @@ class ApiQueryInfo extends ApiQueryBase {
                return ApiQueryInfo::$cachedTokens['watch'];
        }
 
+       /**
+        * @deprecated since 1.24
+        */
        public static function getOptionsToken( $pageid, $title ) {
                global $wgUser;
                if ( !$wgUser->isLoggedIn() ) {
@@ -784,6 +818,7 @@ class ApiQueryInfo extends ApiQueryBase {
                                        // need to be added to getCacheMode()
                                ) ),
                        'token' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_DFLT => null,
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array_keys( $this->getTokenFunctions() )
index 8ce6b55..6f0c5d3 100644 (file)
@@ -47,6 +47,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
         * Get an array mapping token names to their handler functions.
         * The prototype for a token function is func($pageid, $title, $rc)
         * it should return a token or false (permission denied)
+        * @deprecated since 1.24
         * @return array Array(tokenname => function)
         */
        protected function getTokenFunctions() {
@@ -69,6 +70,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
        }
 
        /**
+        * @deprecated since 1.24
         * @param int $pageid
         * @param Title $title
         * @param RecentChange|null $rc
@@ -657,6 +659,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                )
                        ),
                        'token' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
                                ApiBase::PARAM_ISMULTI => true
                        ),
index 627de55..da4ec19 100644 (file)
@@ -48,6 +48,7 @@ class ApiQueryRevisions extends ApiQueryBase {
 
        private $tokenFunctions;
 
+       /** @deprecated since 1.24 */
        protected function getTokenFunctions() {
                // tokenname => function
                // function prototype is func($pageid, $title, $rev)
@@ -72,6 +73,7 @@ class ApiQueryRevisions extends ApiQueryBase {
        }
 
        /**
+        * @deprecated since 1.24
         * @param int $pageid
         * @param Title $title
         * @param Revision $rev
@@ -748,6 +750,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                        'parse' => false,
                        'section' => null,
                        'token' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
                                ApiBase::PARAM_ISMULTI => true
                        ),
index 90683a9..04892a1 100644 (file)
@@ -138,6 +138,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
 
                $data['phpversion'] = PHP_VERSION;
                $data['phpsapi'] = PHP_SAPI;
+               if ( defined( 'HHVM_VERSION' ) ) {
+                       $data['hhvmversion'] = HHVM_VERSION;
+               }
                $data['dbtype'] = $config->get( 'DBtype' );
                $data['dbversion'] = $this->getDB()->getServerVersion();
 
@@ -393,7 +396,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        $prefix = $row['iw_prefix'];
                        $val = array();
                        $val['prefix'] = $prefix;
-                       if ( $row['iw_local'] == '1' ) {
+                       if ( isset( $row['iw_local'] ) && $row['iw_local'] == '1' ) {
                                $val['local'] = '';
                        }
                        if ( $row['iw_trans'] == '1' ) {
diff --git a/includes/api/ApiQueryTokens.php b/includes/api/ApiQueryTokens.php
new file mode 100644 (file)
index 0000000..ba9c937
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Module to fetch tokens via action=query&meta=tokens
+ *
+ * Created on August 8, 2014
+ *
+ * Copyright © 2014 Brad Jorsch bjorsch@wikimedia.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
+ * @since 1.24
+ */
+
+/**
+ * Module to fetch tokens via action=query&meta=tokens
+ *
+ * @ingroup API
+ * @since 1.24
+ */
+class ApiQueryTokens extends ApiQueryBase {
+
+       public function execute() {
+               $params = $this->extractRequestParams();
+               $res = array();
+
+               if ( $this->getMain()->getRequest()->getVal( 'callback' ) !== null ) {
+                       $this->setWarning( 'Tokens may not be obtained when using a callback' );
+                       return;
+               }
+
+               $salts = self::getTokenTypeSalts();
+               foreach ( $params['type'] as $type ) {
+                       $salt = $salts[$type];
+                       $val = $this->getUser()->getEditToken( $salt, $this->getRequest() );
+                       $res[$type . 'token'] = $val;
+               }
+
+               $this->getResult()->addValue( 'query', $this->getModuleName(), $res );
+       }
+
+       public static function getTokenTypeSalts() {
+               static $salts = null;
+               if ( !$salts ) {
+                       wfProfileIn( __METHOD__ );
+                       $salts = array(
+                               'csrf' => '',
+                               'watch' => 'watch',
+                               'patrol' => 'patrol',
+                               'rollback' => 'rollback',
+                               'userrights' => 'userrights',
+                       );
+                       wfRunHooks( 'ApiQueryTokensRegisterTypes', array( &$salts ) );
+                       ksort( $salts );
+                       wfProfileOut( __METHOD__ );
+               }
+
+               return $salts;
+       }
+
+       public function getAllowedParams() {
+               return array(
+                       'type' => array(
+                               ApiBase::PARAM_DFLT => 'csrf',
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_TYPE => array_keys( self::getTokenTypeSalts() ),
+                       ),
+               );
+       }
+
+       public function getParamDescription() {
+               return array(
+                       'type' => 'Type of token(s) to request'
+               );
+       }
+
+       public function getDescription() {
+               return 'Gets tokens for data-modifying actions.';
+       }
+
+       protected function getExamples() {
+               return array(
+                       'api.php?action=query&meta=tokens' => 'Retrieve a csrf token (the default)',
+                       'api.php?action=query&meta=tokens&type=watch|patrol' => 'Retrieve a watch token and a patrol token'
+               );
+       }
+
+       public function getCacheMode( $params ) {
+               return 'private';
+       }
+}
index 6d70241..8b7831c 100644 (file)
@@ -104,6 +104,12 @@ class ApiQueryUserInfo extends ApiQueryBase {
                        $vals['options'] = $user->getOptions();
                }
 
+               if ( isset( $this->prop['preferencestoken'] ) ) {
+                       $p = $this->getModulePrefix();
+                       $this->setWarning(
+                               "{$p}prop=preferencestoken has been deprecated. Please use action=query&meta=tokens instead."
+                       );
+               }
                if ( isset( $this->prop['preferencestoken'] ) &&
                        is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) &&
                        $user->isAllowed( 'editmyoptions' )
@@ -252,7 +258,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
                                '  rights           - Lists all the rights the current user has',
                                '  changeablegroups - Lists the groups the current user can add to and remove from',
                                '  options          - Lists all preferences the current user has set',
-                               '  preferencestoken - Get a token to change current user\'s preferences',
+                               '  preferencestoken - DEPRECATED! Get a token to change current user\'s preferences',
                                '  editcount        - Adds the current user\'s edit count',
                                '  ratelimits       - Lists all rate limits applying to the current user',
                                '  realname         - Adds the user\'s real name',
index 84326a2..b62d6a8 100644 (file)
@@ -58,6 +58,7 @@ class ApiQueryUsers extends ApiQueryBase {
         * Get an array mapping token names to their handler functions.
         * The prototype for a token function is func($user)
         * it should return a token or false (permission denied)
+        * @deprecated since 1.24
         * @return array Array of tokenname => function
         */
        protected function getTokenFunctions() {
@@ -80,6 +81,7 @@ class ApiQueryUsers extends ApiQueryBase {
        }
 
        /**
+        * @deprecated since 1.24
         * @param User $user
         * @return string
         */
@@ -317,6 +319,7 @@ class ApiQueryUsers extends ApiQueryBase {
                                ApiBase::PARAM_ISMULTI => true
                        ),
                        'token' => array(
+                               ApiBase::PARAM_DEPRECATED => true,
                                ApiBase::PARAM_TYPE => array_keys( $this->getTokenFunctions() ),
                                ApiBase::PARAM_ISMULTI => true
                        ),
index 07a1a45..cbc3070 100644 (file)
@@ -195,10 +195,6 @@ class ApiRevisionDelete extends ApiBase {
                                ApiBase::PARAM_TYPE => array( 'yes', 'no', 'nochange' ),
                                ApiBase::PARAM_DFLT => 'nochange',
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reason' => null,
                );
        }
@@ -211,7 +207,6 @@ class ApiRevisionDelete extends ApiBase {
                        'hide' => 'What to hide for each revision',
                        'show' => 'What to unhide for each revision',
                        'suppress' => 'Whether to suppress data from administrators as well as others',
-                       'token' => 'A delete token previously retrieved through action=tokens',
                        'reason' => 'Reason for the deletion/undeletion',
                );
        }
@@ -221,11 +216,7 @@ class ApiRevisionDelete extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index af6f9ff..f4d3c54 100644 (file)
@@ -40,9 +40,19 @@ class ApiRollback extends ApiBase {
        private $mUser = null;
 
        public function execute() {
+               $user = $this->getUser();
                $params = $this->extractRequestParams();
 
-               // User and title already validated in call to getTokenSalt from Main
+               // WikiPage::doRollback needs a Web UI token, so get one of those if we
+               // validated based on an API rollback token.
+               $token = $params['token'];
+               if ( $user->matchEditToken( $token, 'rollback', $this->getRequest() ) ) {
+                       $token = $this->getUser()->getEditToken(
+                               $this->getWebUITokenSalt( $params ),
+                               $this->getRequest()
+                       );
+               }
+
                $titleObj = $this->getRbTitle( $params );
                $pageObj = WikiPage::factory( $titleObj );
                $summary = $params['summary'];
@@ -50,10 +60,10 @@ class ApiRollback extends ApiBase {
                $retval = $pageObj->doRollback(
                        $this->getRbUser( $params ),
                        $summary,
-                       $params['token'],
+                       $token,
                        $params['markbot'],
                        $details,
-                       $this->getUser()
+                       $user
                );
 
                if ( $retval ) {
@@ -99,10 +109,6 @@ class ApiRollback extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'summary' => '',
                        'markbot' => false,
                        'watchlist' => array(
@@ -123,10 +129,11 @@ class ApiRollback extends ApiBase {
                return array(
                        'title' => "Title of the page you want to roll back. Cannot be used together with {$p}pageid",
                        'pageid' => "Page ID of the page you want to roll back. Cannot be used together with {$p}title",
-                       'user' => 'Name of the user whose edits are to be rolled back. If ' .
-                               'set incorrectly, you\'ll get a badtoken error.',
-                       'token' => 'A rollback token previously retrieved through ' .
-                               "{$this->getModulePrefix()}prop=revisions",
+                       'user' => 'Name of the user whose edits are to be rolled back.',
+                       'token' => array(
+                               /* Standard description automatically prepended */
+                               'For compatibility, the token used in the web UI is also accepted.'
+                       ),
                        'summary' => 'Custom edit summary. If empty, default summary will be used',
                        'markbot' => 'Mark the reverted edits and the revert as bot edits',
                        'watchlist' => 'Unconditionally add or remove the page from your watchlist, ' .
@@ -142,12 +149,10 @@ class ApiRollback extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
+               return 'rollback';
        }
 
-       public function getTokenSalt() {
-               $params = $this->extractRequestParams();
-
+       protected function getWebUITokenSalt( array $params ) {
                return array(
                        $this->getRbTitle( $params )->getPrefixedText(),
                        $this->getRbUser( $params )
index 0433bc9..5d527fc 100644 (file)
@@ -202,11 +202,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getAllowedParams( $flags = 0 ) {
@@ -214,7 +210,6 @@ class ApiSetNotificationTimestamp extends ApiBase {
                        'entirewatchlist' => array(
                                ApiBase::PARAM_TYPE => 'boolean'
                        ),
-                       'token' => null,
                        'timestamp' => array(
                                ApiBase::PARAM_TYPE => 'timestamp'
                        ),
@@ -239,7 +234,6 @@ class ApiSetNotificationTimestamp extends ApiBase {
                        'timestamp' => 'Timestamp to which to set the notification timestamp',
                        'torevid' => 'Revision to set the notification timestamp to (one page only)',
                        'newerthanrevid' => 'Revision to set the notification timestamp newer than (one page only)',
-                       'token' => 'A token previously acquired via prop=info',
                        'continue' => 'When more results are available, use this to continue',
                );
        }
index 8e2ecfb..9287fe6 100644 (file)
  */
 
 /**
+ * @deprecated since 1.24
  * @ingroup API
  */
 class ApiTokens extends ApiBase {
 
        public function execute() {
+               $this->setWarning(
+                       "action=tokens has been deprecated. Please use action=query&meta=tokens instead."
+               );
+
                $params = $this->extractRequestParams();
                $res = array();
 
@@ -88,7 +93,10 @@ class ApiTokens extends ApiBase {
        }
 
        public function getDescription() {
-               return 'Gets tokens for data-modifying actions.';
+               return array(
+                       'This module is deprecated in favor of action=query&meta=tokens.',
+                       'Gets tokens for data-modifying actions.'
+               );
        }
 
        protected function getExamples() {
index acb7ed2..2854a82 100644 (file)
@@ -89,7 +89,6 @@ class ApiUnblock extends ApiBase {
                                ApiBase::PARAM_TYPE => 'integer',
                        ),
                        'user' => null,
-                       'token' => null,
                        'reason' => '',
                );
        }
@@ -102,7 +101,6 @@ class ApiUnblock extends ApiBase {
                                "Cannot be used together with {$p}user",
                        'user' => "Username, IP address or IP range you want to unblock. " .
                                "Cannot be used together with {$p}id",
-                       'token' => "An unblock token previously obtained through prop=info",
                        'reason' => 'Reason for unblock',
                );
        }
@@ -112,11 +110,7 @@ class ApiUnblock extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index df245cd..07aad9f 100644 (file)
@@ -96,10 +96,6 @@ class ApiUndelete extends ApiBase {
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reason' => '',
                        'timestamps' => array(
                                ApiBase::PARAM_TYPE => 'timestamp',
@@ -124,10 +120,6 @@ class ApiUndelete extends ApiBase {
        public function getParamDescription() {
                return array(
                        'title' => 'Title of the page you want to restore',
-                       'token' => array(
-                               'An undelete token previously retrieved through list=deletedrevs, or ',
-                               'a delete token retrieved through action=tokens.'
-                       ),
                        'reason' => 'Reason for restoring',
                        'timestamps' => array(
                                'Timestamps of the revisions to restore.',
@@ -151,11 +143,7 @@ class ApiUndelete extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
index 368e7ce..aa8fe21 100644 (file)
@@ -688,10 +688,6 @@ class ApiUpload extends ApiBase {
                                ApiBase::PARAM_DFLT => ''
                        ),
                        'text' => null,
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'watch' => array(
                                ApiBase::PARAM_DFLT => false,
                                ApiBase::PARAM_DEPRECATED => true,
@@ -735,7 +731,6 @@ class ApiUpload extends ApiBase {
        public function getParamDescription() {
                $params = array(
                        'filename' => 'Target filename',
-                       'token' => 'Edit token. You can get one of these through prop=info',
                        'comment' => 'Upload comment. Also used as the initial page text for new ' .
                                'files if "text" is not specified',
                        'text' => 'Initial page text for new files',
@@ -771,24 +766,20 @@ class ApiUpload extends ApiBase {
                        ' * Have the MediaWiki server fetch a file from a URL, using the "url" parameter',
                        ' * Complete an earlier upload that failed due to warnings, using the "filekey" parameter',
                        'Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when',
-                       'sending the "file". Also you must get and send an edit token before doing any upload stuff.'
+                       'sending the "file".',
                );
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
-               return '';
+               return 'csrf';
        }
 
        public function getExamples() {
                return array(
                        'api.php?action=upload&filename=Wiki.png' .
-                       '&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png'
+                       '&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png&token=123ABC'
                                => 'Upload from a URL',
-                       'api.php?action=upload&filename=Wiki.png&filekey=filekey&ignorewarnings=1'
+                       'api.php?action=upload&filename=Wiki.png&filekey=filekey&ignorewarnings=1&token=123ABC'
                                => 'Complete an upload that failed due to warnings',
                );
        }
index 0bed859..c3ceb34 100644 (file)
@@ -35,7 +35,7 @@ class ApiUserrights extends ApiBase {
        public function execute() {
                $params = $this->extractRequestParams();
 
-               $user = $this->getUrUser();
+               $user = $this->getUrUser( $params );
 
                $form = new UserrightsPage;
                $form->setContext( $this->getContext() );
@@ -53,14 +53,14 @@ class ApiUserrights extends ApiBase {
        }
 
        /**
+        * @param array $params
         * @return User
         */
-       private function getUrUser() {
+       private function getUrUser( array $params ) {
                if ( $this->mUser !== null ) {
                        return $this->mUser;
                }
 
-               $params = $this->extractRequestParams();
                $this->requireOnlyOneParameter( $params, 'user', 'userid' );
 
                $user = isset( $params['user'] ) ? $params['user'] : '#' . $params['userid'];
@@ -101,10 +101,6 @@ class ApiUserrights extends ApiBase {
                                ApiBase::PARAM_TYPE => User::getAllGroups(),
                                ApiBase::PARAM_ISMULTI => true
                        ),
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'reason' => array(
                                ApiBase::PARAM_DFLT => ''
                        )
@@ -117,7 +113,10 @@ class ApiUserrights extends ApiBase {
                        'userid' => 'User id',
                        'add' => 'Add the user to these groups',
                        'remove' => 'Remove the user from these groups',
-                       'token' => 'A userrights token previously retrieved through list=users',
+                       'token' => array(
+                               /* Standard description automatically prepended */
+                               'For compatibility, the token used in the web UI is also accepted.'
+                       ),
                        'reason' => 'Reason for the change',
                );
        }
@@ -127,11 +126,11 @@ class ApiUserrights extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
+               return 'userrights';
        }
 
-       public function getTokenSalt() {
-               return $this->getUrUser()->getName();
+       protected function getWebUITokenSalt( array $params ) {
+               return $this->getUrUser( $params )->getName();
        }
 
        public function getExamples() {
index 8060260..e6a660b 100644 (file)
@@ -166,10 +166,6 @@ class ApiWatch extends ApiBase {
        }
 
        public function needsToken() {
-               return true;
-       }
-
-       public function getTokenSalt() {
                return 'watch';
        }
 
@@ -181,10 +177,6 @@ class ApiWatch extends ApiBase {
                        ),
                        'unwatch' => false,
                        'uselang' => null,
-                       'token' => array(
-                               ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
-                       ),
                        'continue' => '',
                );
                if ( $flags ) {
@@ -201,7 +193,6 @@ class ApiWatch extends ApiBase {
                        'title' => 'The page to (un)watch. use titles instead',
                        'unwatch' => 'If set the page will be unwatched rather than watched',
                        'uselang' => 'Language to show the message in',
-                       'token' => 'A token previously acquired via prop=info',
                        'continue' => 'When more results are available, use this to continue',
                );
        }
index 76cc583..48c063f 100644 (file)
@@ -180,6 +180,8 @@ class LinkBatch {
         * @return bool|ResultWrapper
         */
        public function doQuery() {
+               global $wgContentHandlerUseDB;
+
                if ( $this->isEmpty() ) {
                        return false;
                }
@@ -190,6 +192,11 @@ class LinkBatch {
                $table = 'page';
                $fields = array( 'page_id', 'page_namespace', 'page_title', 'page_len',
                        'page_is_redirect', 'page_latest' );
+
+               if ( $wgContentHandlerUseDB ) {
+                       $fields[] = 'page_content_model';
+               }
+
                $conds = $this->constructSet( 'page', $dbr );
 
                // Do query
index e80dfb3..6925df9 100644 (file)
@@ -129,10 +129,10 @@ class LinkCache {
         * @param int $len Text's length
         * @param int $redir Whether the page is a redirect
         * @param int $revision Latest revision's ID
-        * @param int $model Latest revision's content model ID
+        * @param string|null $model Latest revision's content model ID
         */
        public function addGoodLinkObj( $id, $title, $len = -1, $redir = null,
-               $revision = 0, $model = 0
+               $revision = 0, $model = null
        ) {
                $dbkey = $title->getPrefixedDBkey();
                $this->mGoodLinks[$dbkey] = (int)$id;
@@ -140,7 +140,7 @@ class LinkCache {
                        'length' => (int)$len,
                        'redirect' => (int)$redir,
                        'revision' => (int)$revision,
-                       'model' => (int)$model
+                       'model' => $model ? (string)$model : null,
                );
        }
 
index e2e304a..bdfe510 100644 (file)
@@ -686,6 +686,7 @@ class LocalisationCache {
         *
         * @param string $code
         * @param array $deps
+        * @return array
         */
        protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
                global $IP;
@@ -983,7 +984,7 @@ class LocalisationCache {
                # HACK: If using a null (i.e. disabled) storage backend, we
                # can't write to the MessageBlobStore either
                if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
-                       MessageBlobStore::clear();
+                       MessageBlobStore::getInstance()->clear();
                }
 
                wfProfileOut( __METHOD__ );
index a22d802..95e3af7 100644 (file)
@@ -57,7 +57,7 @@ class MapCacheLRU {
         * @return void
         */
        public function set( $key, $value ) {
-               if ( isset( $this->cache[$key] ) ) {
+               if ( array_key_exists( $key, $this->cache ) ) {
                        $this->ping( $key ); // push to top
                } elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
                        reset( $this->cache );
@@ -74,7 +74,7 @@ class MapCacheLRU {
         * @return bool
         */
        public function has( $key ) {
-               return isset( $this->cache[$key] );
+               return array_key_exists( $key, $this->cache );
        }
 
        /**
@@ -86,7 +86,7 @@ class MapCacheLRU {
         * @return mixed
         */
        public function get( $key ) {
-               if ( isset( $this->cache[$key] ) ) {
+               if ( array_key_exists( $key, $this->cache ) ) {
                        $this->ping( $key ); // push to top
                        return $this->cache[$key];
                } else {
index e34961c..1ef7cc5 100644 (file)
@@ -573,7 +573,7 @@ class MessageCache {
 
                // Update the message in the message blob store
                global $wgContLang;
-               MessageBlobStore::updateMessage( $wgContLang->lcfirst( $msg ) );
+               MessageBlobStore::getInstance()->updateMessage( $wgContLang->lcfirst( $msg ) );
 
                wfRunHooks( 'MessageCacheReplace', array( $title, $text ) );
 
index fb491e5..2d3b919 100644 (file)
@@ -180,6 +180,7 @@ class ChangesFeed {
        /**
         * Generate the feed items given a row from the database.
         * @param object $rows DatabaseBase resource with recentchanges rows
+        * @return array
         */
        public static function buildItems( $rows ) {
                wfProfileIn( __METHOD__ );
index 9b9c102..d3c44af 100644 (file)
@@ -110,9 +110,8 @@ class ChangesList extends ContextSource {
         * @return string
         */
        public function recentChangesFlags( $flags, $nothing = '&#160;' ) {
-               global $wgRecentChangesFlags;
                $f = '';
-               foreach ( array_keys( $wgRecentChangesFlags ) as $flag ) {
+               foreach ( array_keys( $this->getConfig()->get( 'RecentChangesFlags' ) ) as $flag ) {
                        $f .= isset( $flags[$flag] ) && $flags[$flag]
                                ? self::flag( $flag )
                                : $nothing;
@@ -188,8 +187,6 @@ class ChangesList extends ContextSource {
         * @return string
         */
        public static function showCharacterDifference( $old, $new, IContextSource $context = null ) {
-               global $wgRCChangedSizeThreshold, $wgMiserMode;
-
                if ( !$context ) {
                        $context = RequestContext::getMain();
                }
@@ -199,10 +196,11 @@ class ChangesList extends ContextSource {
                $szdiff = $new - $old;
 
                $lang = $context->getLanguage();
+               $config = $context->getConfig();
                $code = $lang->getCode();
                static $fastCharDiff = array();
                if ( !isset( $fastCharDiff[$code] ) ) {
-                       $fastCharDiff[$code] = $wgMiserMode || $context->msg( 'rc-change-size' )->plain() === '$1';
+                       $fastCharDiff[$code] = $config->get( 'MiserMode' ) || $context->msg( 'rc-change-size' )->plain() === '$1';
                }
 
                $formattedSize = $lang->formatNum( $szdiff );
@@ -211,7 +209,7 @@ class ChangesList extends ContextSource {
                        $formattedSize = $context->msg( 'rc-change-size', $formattedSize )->text();
                }
 
-               if ( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) {
+               if ( abs( $szdiff ) > abs( $config->get( 'RCChangedSizeThreshold' ) ) ) {
                        $tag = 'strong';
                } else {
                        $tag = 'span';
index b471ea5..4ab7729 100644 (file)
@@ -160,8 +160,6 @@ class EnhancedChangesList extends ChangesList {
         * @return string
         */
        protected function recentChangesBlockGroup( $block ) {
-               global $wgRCShowChangedSize;
-
                wfProfileIn( __METHOD__ );
 
                # Add the namespace and title of the block as part of the class
@@ -191,6 +189,7 @@ class EnhancedChangesList extends ChangesList {
                $namehidden = true;
                $allLogs = true;
                $oldid = '';
+               $RCShowChangedSize = $this->getConfig()->get( 'RCShowChangedSize' );
                foreach ( $block as $rcObj ) {
                        $oldid = $rcObj->mAttribs['rc_last_oldid'];
                        if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
@@ -364,7 +363,7 @@ class EnhancedChangesList extends ChangesList {
                $r .= ' <span class="mw-changeslist-separator">. .</span> ';
 
                # Character difference (does not apply if only log items)
-               if ( $wgRCShowChangedSize && !$allLogs ) {
+               if ( $RCShowChangedSize && !$allLogs ) {
                        $last = 0;
                        $first = count( $block ) - 1;
                        # Some events (like logs) have an "empty" size, so we need to skip those...
@@ -442,7 +441,7 @@ class EnhancedChangesList extends ChangesList {
                        $r .= ' <span class="mw-changeslist-separator">. .</span> ';
 
                        # Character diff
-                       if ( $wgRCShowChangedSize ) {
+                       if ( $RCShowChangedSize ) {
                                $cd = $this->formatCharacterDifference( $rcObj );
                                if ( $cd !== '' ) {
                                        $r .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
@@ -474,50 +473,6 @@ class EnhancedChangesList extends ChangesList {
                return $r;
        }
 
-       /**
-        * Generate HTML for an arrow or placeholder graphic
-        * @param string $dir One of '', 'd', 'l', 'r'
-        * @param string $alt
-        * @param string $title
-        * @return string HTML "<img>" tag
-        */
-       protected function arrow( $dir, $alt = '', $title = '' ) {
-               global $wgStylePath;
-               $encUrl = htmlspecialchars( $wgStylePath . '/common/images/Arr_' . $dir . '.png' );
-               $encAlt = htmlspecialchars( $alt );
-               $encTitle = htmlspecialchars( $title );
-
-               return "<img src=\"$encUrl\" width=\"12\" height=\"12\" alt=\"$encAlt\" title=\"$encTitle\" />";
-       }
-
-       /**
-        * Generate HTML for a right- or left-facing arrow,
-        * depending on language direction.
-        * @return string HTML "<img>" tag
-        */
-       protected function sideArrow() {
-               $dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
-
-               return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() );
-       }
-
-       /**
-        * Generate HTML for a down-facing arrow
-        * depending on language direction.
-        * @return string HTML "<img>" tag
-        */
-       protected function downArrow() {
-               return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() );
-       }
-
-       /**
-        * Generate HTML for a spacer image
-        * @return string HTML "<img>" tag
-        */
-       protected function spacerArrow() {
-               return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space
-       }
-
        /**
         * Enhanced RC ungrouped line.
         *
@@ -525,8 +480,6 @@ class EnhancedChangesList extends ChangesList {
         * @return string A HTML formatted line (generated using $r)
         */
        protected function recentChangesBlockLine( $rcObj ) {
-               global $wgRCShowChangedSize;
-
                wfProfileIn( __METHOD__ );
                $query['curid'] = $rcObj->mAttribs['rc_cur_id'];
 
@@ -577,7 +530,7 @@ class EnhancedChangesList extends ChangesList {
                }
                $r .= ' <span class="mw-changeslist-separator">. .</span> ';
                # Character diff
-               if ( $wgRCShowChangedSize ) {
+               if ( $this->getConfig()->get( 'RCShowChangedSize' ) ) {
                        $cd = $this->formatCharacterDifference( $rcObj );
                        if ( $cd !== '' ) {
                                $r .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
index d590ff6..17c5b6e 100644 (file)
@@ -31,7 +31,6 @@ class OldChangesList extends ChangesList {
         * @return string|bool
         */
        public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
-               global $wgRCShowChangedSize;
                wfProfileIn( __METHOD__ );
 
                # Should patrol-related stuff be shown?
@@ -80,7 +79,7 @@ class OldChangesList extends ChangesList {
                # Edit/log timestamp
                $this->insertTimestamp( $s, $rc );
                # Bytes added or removed
-               if ( $wgRCShowChangedSize ) {
+               if ( $this->getConfig()->get( 'RCShowChangedSize' ) ) {
                        $cd = $this->formatCharacterDifference( $rc );
                        if ( $cd !== '' ) {
                                $s .= $cd . '  <span class="mw-changeslist-separator">. .</span> ';
index 312d461..12b0c39 100644 (file)
@@ -61,6 +61,7 @@ class ConfigFactory {
         * Destroy the default instance
         * Should only be called inside unit tests
         * @throws MWException
+        * @codeCoverageIgnore
         */
        public static function destroyDefaultInstance() {
                if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
index e09be56..683c959 100644 (file)
@@ -503,7 +503,7 @@ abstract class AbstractContent implements Content {
         *
         * @param Title $title Context title for parsing
         * @param int|null $revId Revision ID (for {{REVISIONID}})
-        * @param ParserOptions|null $options Parser options
+        * @param ParserOptions $options Parser options
         * @param bool $generateHtml Whether or not to generate HTML
         * @param ParserOutput &$output The output object to fill (reference).
         *
index c8a9f1e..ac41722 100644 (file)
@@ -743,9 +743,9 @@ abstract class ContentHandler {
         *
         * @since 1.21
         *
-        * @param Content|string $oldContent The page's previous content.
-        * @param Content|string $myContent One of the page's conflicting contents.
-        * @param Content|string $yourContent One of the page's conflicting contents.
+        * @param Content $oldContent The page's previous content.
+        * @param Content $myContent One of the page's conflicting contents.
+        * @param Content $yourContent One of the page's conflicting contents.
         *
         * @return Content|bool Always false.
         */
index abaac53..edbd075 100644 (file)
@@ -106,7 +106,7 @@ class MessageContent extends AbstractContent {
        }
 
        /**
-        * @param int $maxLength Maximum length of the summary text, defaults to 250.
+        * @param int $maxlength Maximum length of the summary text, defaults to 250.
         *
         * @return string The summary text.
         *
index ddbc476..ffe1acb 100644 (file)
@@ -60,9 +60,9 @@ class TextContentHandler extends ContentHandler {
         *
         * This text-based implementation uses wfMerge().
         *
-        * @param Content|string $oldContent The page's previous content.
-        * @param Content|string $myContent One of the page's conflicting contents.
-        * @param Content|string $yourContent One of the page's conflicting contents.
+        * @param Content $oldContent The page's previous content.
+        * @param Content $myContent One of the page's conflicting contents.
+        * @param Content $yourContent One of the page's conflicting contents.
         *
         * @return Content|bool
         */
index 00733d8..ede10fe 100644 (file)
@@ -123,10 +123,10 @@ class RequestContext implements IContextSource {
        /**
         * Set the Title object
         *
-        * @param Title $t
+        * @param Title $title
         */
-       public function setTitle( Title $t ) {
-               $this->title = $t;
+       public function setTitle( Title $title ) {
+               $this->title = $title;
                // Erase the WikiPage so a new one with the new title gets created.
                $this->wikipage = null;
        }
@@ -297,7 +297,7 @@ class RequestContext implements IContextSource {
                        $e = new Exception;
                        wfDebugLog( 'recursion-guard', "Recursion detected:\n" . $e->getTraceAsString() );
 
-                       $code = $this->getConfig()->get( 'LanguageCode' ) ? : 'en';
+                       $code = $this->getConfig()->get( 'LanguageCode' ) ?: 'en';
                        $this->lang = Language::factory( $code );
                } elseif ( $this->lang === null ) {
                        $this->recursion = true;
@@ -421,6 +421,21 @@ class RequestContext implements IContextSource {
                return self::$instance;
        }
 
+       /**
+        * Get the RequestContext object associated with the main request
+        * and gives a warning to the log, to find places, where a context maybe is missing.
+        *
+        * @param string $func
+        * @return RequestContext
+        * @since 1.24
+        */
+       public static function getMainAndWarn( $func = __METHOD__ ) {
+               wfDebug( $func . ' called without context. ' .
+                       "Using RequestContext::getMain() for sanity\n" );
+
+               return self::getMain();
+       }
+
        /**
         * Resets singleton returned by getMain(). Should be called only from unit tests.
         */
index 62d64eb..a46ee1c 100644 (file)
@@ -710,19 +710,42 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * Return a path to the DBMS-specific schema file, otherwise default to tables.sql
+        * Return a path to the DBMS-specific SQL file if it exists,
+        * otherwise default SQL file
         *
+        * @param string $filename
         * @return string
         */
-       public function getSchemaPath() {
+       private function getSqlFilePath( $filename ) {
                global $IP;
-               if ( file_exists( "$IP/maintenance/" . $this->getType() . "/tables.sql" ) ) {
-                       return "$IP/maintenance/" . $this->getType() . "/tables.sql";
+               $dbmsSpecificFilePath = "$IP/maintenance/" . $this->getType() . "/$filename";
+               if ( file_exists( $dbmsSpecificFilePath ) ) {
+                       return $dbmsSpecificFilePath;
                } else {
-                       return "$IP/maintenance/tables.sql";
+                       return "$IP/maintenance/$filename";
                }
        }
 
+       /**
+        * Return a path to the DBMS-specific schema file,
+        * otherwise default to tables.sql
+        *
+        * @return string
+        */
+       public function getSchemaPath() {
+               return $this->getSqlFilePath( 'tables.sql' );
+       }
+
+       /**
+        * Return a path to the DBMS-specific update key file,
+        * otherwise default to update-keys.sql
+        *
+        * @return string
+        */
+       public function getUpdateKeysPath() {
+               return $this->getSqlFilePath( 'update-keys.sql' );
+       }
+
 # ------------------------------------------------------------------------------
 # Other functions
 # ------------------------------------------------------------------------------
@@ -1130,7 +1153,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $this->mTrxIdleCallbacks = array(); // bug 65263
                        $this->mTrxPreCommitCallbacks = array(); // bug 65263
                        wfDebug( "Connection lost, reconnecting...\n" );
-
+                       # Stash the last error values since ping() might clear them
+                       $lastError = $this->lastError();
+                       $lastErrno = $this->lastErrno();
                        if ( $this->ping() ) {
                                global $wgRequestTime;
                                wfDebug( "Reconnected\n" );
@@ -1145,6 +1170,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                if ( $hadTrx ) {
                                        # Leave $ret as false and let an error be reported.
                                        # Callers may catch the exception and continue to use the DB.
+                                       $this->reportQueryError( $lastError, $lastErrno, $sql, $fname, $tempIgnore );
                                } else {
                                        # Should be safe to silently retry (no trx and thus no callbacks)
                                        $ret = $this->doQuery( $commentedSql );
@@ -4198,6 +4224,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * @since 1.19
+        * @return string
         */
        public function __toString() {
                return (string)$this->mConn;
index 5ad7c78..ba0f39f 100644 (file)
@@ -901,7 +901,6 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
        /**
         * @param bool $value
-        * @return null|bool|ResultWrapper
         */
        public function setBigSelects( $value = true ) {
                if ( $value === 'default' ) {
index b8d5d79..2ce6307 100644 (file)
@@ -292,6 +292,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
         * Give an id for the connection
         *
         * mysql driver used resource id, but mysqli objects cannot be cast to string.
+        * @return string
         */
        public function __toString() {
                if ( $this->mConn instanceof Mysqli ) {
index 45fb3f6..ce14d7a 100644 (file)
@@ -117,6 +117,7 @@ SQL;
 
        /**
         * @since 1.19
+        * @return bool|mixed
         */
        function defaultValue() {
                if ( $this->has_default ) {
@@ -829,6 +830,7 @@ __INDEXATTR__;
         * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
         *
         * MySQL uses "ORDER BY NULL" as an optimization hint, but that syntax is illegal in PostgreSQL.
+        * @see DatabaseBase::selectSQLText
         */
        function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = array(), $join_conds = array()
index 7ec3b4a..c1e80d3 100644 (file)
@@ -192,7 +192,7 @@ class ResultWrapper implements Iterator {
        }
 
        /**
-        * @return stdClass|array|false
+        * @return stdClass|array|bool
         */
        function current() {
                if ( is_null( $this->currentRow ) ) {
@@ -281,7 +281,7 @@ class FakeResultWrapper extends ResultWrapper {
 
        /**
         * Callers want to be able to access fields with $this->fieldName
-        * @return false|stdClass
+        * @return bool|stdClass
         */
        function fetchObject() {
                $this->fetchRow();
@@ -298,7 +298,7 @@ class FakeResultWrapper extends ResultWrapper {
        }
 
        /**
-        * @return false|stdClass
+        * @return bool|stdClass
         */
        function next() {
                return $this->fetchObject();
index bf49bbb..4dc693a 100644 (file)
@@ -421,7 +421,7 @@ interface IORMTable {
         *
         * @since 1.20
         *
-        * @param array|string $fields
+        * @param array $fields
         *
         * @return array
         */
index fa2dd99..7281485 100644 (file)
@@ -74,9 +74,14 @@ class LoadMonitorNull implements LoadMonitor {
 class LoadMonitorMySQL implements LoadMonitor {
        /** @var LoadBalancer */
        public $parent;
+       /** @var BagOStuff */
+       protected $cache;
 
        public function __construct( $parent ) {
+               global $wgMemc;
+
                $this->parent = $parent;
+               $this->cache = $wgMemc ?: wfGetMainCache();
        }
 
        public function scaleLoads( &$loads, $group = false, $wiki = false ) {
@@ -93,14 +98,10 @@ class LoadMonitorMySQL implements LoadMonitor {
                $expiry = 5;
                $requestRate = 10;
 
-               global $wgMemc;
-               if ( empty( $wgMemc ) ) {
-                       $wgMemc = wfGetMainCache();
-               }
-
+               $cache = $this->cache;
                $masterName = $this->parent->getServerName( 0 );
                $memcKey = wfMemcKey( 'lag_times', $masterName );
-               $times = $wgMemc->get( $memcKey );
+               $times = $cache->get( $memcKey );
                if ( is_array( $times ) ) {
                        # Randomly recache with probability rising over $expiry
                        $elapsed = time() - $times['timestamp'];
@@ -116,10 +117,10 @@ class LoadMonitorMySQL implements LoadMonitor {
                }
 
                # Cache key missing or expired
-               if ( $wgMemc->add( "$memcKey:lock", 1, 10 ) ) {
+               if ( $cache->add( "$memcKey:lock", 1, 10 ) ) {
                        # Let this process alone update the cache value
-                       $unlocker = new ScopedCallback( function () use ( $wgMemc, $memcKey ) {
-                               $wgMemc->delete( $memcKey );
+                       $unlocker = new ScopedCallback( function () use ( $cache, $memcKey ) {
+                               $cache->delete( $memcKey );
                        } );
                } elseif ( is_array( $times ) ) {
                        # Could not acquire lock but an old cache exists, so use it
@@ -136,12 +137,17 @@ class LoadMonitorMySQL implements LoadMonitor {
                                $times[$i] = $conn->getLag();
                        } elseif ( false !== ( $conn = $this->parent->openConnection( $i, $wiki ) ) ) {
                                $times[$i] = $conn->getLag();
+                               // Close the connection to avoid sleeper connections piling up.
+                               // Note that the caller will pick one of these DBs and reconnect,
+                               // which is slightly inefficient, but this only matters for the lag
+                               // time cache miss cache, which is far less common that cache hits.
+                               $this->parent->closeConnection( $conn );
                        }
                }
 
                # Add a timestamp key so we know when it was cached
                $times['timestamp'] = time();
-               $wgMemc->set( $memcKey, $times, $expiry + 10 );
+               $cache->set( $memcKey, $times, $expiry + 10 );
                unset( $times['timestamp'] ); // hide from caller
 
                return $times;
index 24fa68c..2f898b7 100644 (file)
@@ -748,7 +748,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         *
         * @since 1.20
         *
-        * @param array|string $fields
+        * @param array $fields
         *
         * @return array
         */
index 0cea658..fb11f36 100644 (file)
@@ -182,7 +182,6 @@ class MWDebug {
         * @param int $callerOffset How far up the callstack is the original
         *    caller. 2 = function that called the function that called
         *    MWDebug::deprecated() (Added in 1.20).
-        * @return mixed
         */
        public static function deprecated( $function, $version = false,
                $component = false, $callerOffset = 2
@@ -539,7 +538,8 @@ class MWDebug {
 
                return array(
                        'mwVersion' => $wgVersion,
-                       'phpVersion' => PHP_VERSION,
+                       'phpEngine' => wfIsHHVM() ? 'HHVM' : 'PHP',
+                       'phpVersion' => wfIsHHVM() ? HHVM_VERSION : PHP_VERSION,
                        'gitRevision' => GitInfo::headSHA1(),
                        'gitBranch' => GitInfo::currentBranch(),
                        'gitViewUrl' => GitInfo::headViewUrl(),
index 2178281..b0c1899 100644 (file)
@@ -99,25 +99,29 @@ class DeferredUpdates {
                        $dbw = wfGetDB( DB_MASTER );
                }
 
-               /** @var DeferrableUpdate $update */
-               foreach ( $updates as $update ) {
-                       try {
-                               $update->doUpdate();
+               while ( $updates ) {
+                       self::clearPendingUpdates();
 
-                               if ( $doCommit && $dbw->trxLevel() ) {
-                                       $dbw->commit( __METHOD__, 'flush' );
-                               }
-                       } catch ( MWException $e ) {
-                               // We don't want exceptions thrown during deferred updates to
-                               // be reported to the user since the output is already sent.
-                               // Instead we just log them.
-                               if ( !$e instanceof ErrorPageError ) {
-                                       MWExceptionHandler::logException( $e );
+                       /** @var DeferrableUpdate $update */
+                       foreach ( $updates as $update ) {
+                               try {
+                                       $update->doUpdate();
+
+                                       if ( $doCommit && $dbw->trxLevel() ) {
+                                               $dbw->commit( __METHOD__, 'flush' );
+                                       }
+                               } catch ( MWException $e ) {
+                                       // We don't want exceptions thrown during deferred updates to
+                                       // be reported to the user since the output is already sent.
+                                       // Instead we just log them.
+                                       if ( !$e instanceof ErrorPageError ) {
+                                               MWExceptionHandler::logException( $e );
+                                       }
                                }
                        }
+                       $updates = array_merge( $wgDeferredUpdateList, self::$updates );
                }
 
-               self::clearPendingUpdates();
                wfProfileOut( __METHOD__ );
        }
 
index 1466605..5d084af 100644 (file)
@@ -116,6 +116,7 @@ class SearchUpdate implements DeferrableUpdate {
         * If you're using a real search engine, you'll probably want to override
         * this behavior and do something nicer with the original wikitext.
         * @param string $text
+        * @return string
         */
        public static function updateText( $text ) {
                global $wgContLang;
index 25a06d2..5929525 100644 (file)
@@ -1346,13 +1346,16 @@ class FileRepo {
         * Checks existence of an array of files.
         *
         * @param array $files Virtual URLs (or storage paths) of files to check
-        * @return array|bool Either array of files and existence flags, or false
+        * @return array Map of files and existence flags, or false
         */
        public function fileExistsBatch( array $files ) {
+               $paths = array_map( array( $this, 'resolveToStoragePath' ), $files );
+               $this->backend->preloadFileStat( array( 'srcs' => $paths ) );
+
                $result = array();
                foreach ( $files as $key => $file ) {
-                       $file = $this->resolveToStoragePath( $file );
-                       $result[$key] = $this->backend->fileExists( array( 'src' => $file ) );
+                       $path = $this->resolveToStoragePath( $file );
+                       $result[$key] = $this->backend->fileExists( array( 'src' => $path ) );
                }
 
                return $result;
index 0f80e16..fab4216 100644 (file)
@@ -170,7 +170,7 @@ class RepoGroup {
        /**
         * Search repositories for many files at once.
         *
-        * @param array $items An array of titles, or an array of findFile() options with
+        * @param array $inputItems An array of titles, or an array of findFile() options with
         *    the "title" option giving the title. Example:
         *
         *     $findItem = array( 'title' => $title, 'private' => true );
@@ -183,10 +183,6 @@ class RepoGroup {
         *       The search title uses the input titles; the other is the final post-redirect title.
         *       All titles are returned as string DB keys and the inner array is associative.
         * @return array Map of (file name => File objects) for matches
-        *
-        * @param array $inputItems
-        * @param int $flags
-        * @return array
         */
        function findFiles( array $inputItems, $flags = 0 ) {
                if ( !$this->reposInitialised ) {
@@ -410,6 +406,7 @@ class RepoGroup {
        /**
         * Create a repo class based on an info structure
         * @param array $info
+        * @return FileRepo
         */
        protected function newRepo( $info ) {
                $class = $info['class'];
index a71acde..8bf9040 100644 (file)
@@ -407,6 +407,7 @@ class ArchivedFile {
        /**
         * Returns the number of pages of a multipage document, or false for
         * documents which aren't multipage documents
+        * @return bool|int
         */
        function pageCount() {
                if ( !isset( $this->pageCount ) ) {
index 0c4e42e..ba2d4ac 100644 (file)
@@ -714,7 +714,7 @@ abstract class File {
         */
        function canRender() {
                if ( !isset( $this->canRender ) ) {
-                       $this->canRender = $this->getHandler() && $this->handler->canRender( $this );
+                       $this->canRender = $this->getHandler() && $this->handler->canRender( $this ) && $this->exists();
                }
 
                return $this->canRender;
@@ -1261,7 +1261,7 @@ abstract class File {
        /**
         * Creates a temp FS file with the same extension and the thumbnail
         * @param string $thumbPath Thumbnail path
-        * @returns TempFSFile
+        * @return TempFSFile
         */
        protected function makeTransformTmpFile( $thumbPath ) {
                $thumbExt = FileBackend::extensionFromPath( $thumbPath );
@@ -1331,6 +1331,7 @@ abstract class File {
        /**
         * Get last thumbnailing error.
         * Largely obsolete.
+        * @return string
         */
        function getLastError() {
                return $this->lastError;
index 07f1f09..8824b66 100644 (file)
@@ -2284,7 +2284,12 @@ class LocalFileDeleteBatch {
                $this->doDBInserts();
 
                // Removes non-existent file from the batch, so we don't get errors.
-               $this->deletionBatch = $this->removeNonexistentFiles( $this->deletionBatch );
+               $checkStatus = $this->removeNonexistentFiles( $this->deletionBatch );
+               if ( !$checkStatus->isGood() ) {
+                       $this->status->merge( $checkStatus );
+                       return $this->status;
+               }
+               $this->deletionBatch = $checkStatus->value;
 
                // Execute the file deletion batch
                $status = $this->file->repo->deleteBatch( $this->deletionBatch );
@@ -2316,7 +2321,7 @@ class LocalFileDeleteBatch {
        /**
         * Removes non-existent files from a deletion batch.
         * @param array $batch
-        * @return array
+        * @return Status
         */
        function removeNonexistentFiles( $batch ) {
                $files = $newBatch = array();
@@ -2327,6 +2332,10 @@ class LocalFileDeleteBatch {
                }
 
                $result = $this->file->repo->fileExistsBatch( $files );
+               if ( in_array( null, $result, true ) ) {
+                       return Status::newFatal( 'backend-fail-internal',
+                               $this->file->repo->getBackend()->getName() );
+               }
 
                foreach ( $batch as $batchItem ) {
                        if ( $result[$batchItem[0]] ) {
@@ -2334,7 +2343,7 @@ class LocalFileDeleteBatch {
                        }
                }
 
-               return $newBatch;
+               return Status::newGood( $newBatch );
        }
 }
 
@@ -2575,7 +2584,12 @@ class LocalFileRestoreBatch {
                }
 
                // Remove missing files from batch, so we don't get errors when undeleting them
-               $storeBatch = $this->removeNonexistentFiles( $storeBatch );
+               $checkStatus = $this->removeNonexistentFiles( $storeBatch );
+               if ( !$checkStatus->isGood() ) {
+                       $status->merge( $checkStatus );
+                       return $status;
+               }
+               $storeBatch = $checkStatus->value;
 
                // Run the store batch
                // Use the OVERWRITE_SAME flag to smooth over a common error
@@ -2635,7 +2649,7 @@ class LocalFileRestoreBatch {
        /**
         * Removes non-existent files from a store batch.
         * @param array $triplets
-        * @return array
+        * @return Status
         */
        function removeNonexistentFiles( $triplets ) {
                $files = $filteredTriplets = array();
@@ -2644,6 +2658,10 @@ class LocalFileRestoreBatch {
                }
 
                $result = $this->file->repo->fileExistsBatch( $files );
+               if ( in_array( null, $result, true ) ) {
+                       return Status::newFatal( 'backend-fail-internal',
+                               $this->file->repo->getBackend()->getName() );
+               }
 
                foreach ( $triplets as $file ) {
                        if ( $result[$file[0]] ) {
@@ -2651,7 +2669,7 @@ class LocalFileRestoreBatch {
                        }
                }
 
-               return $filteredTriplets;
+               return Status::newGood( $filteredTriplets );
        }
 
        /**
@@ -2824,7 +2842,12 @@ class LocalFileMoveBatch {
                $status = $repo->newGood();
 
                $triplets = $this->getMoveTriplets();
-               $triplets = $this->removeNonexistentFiles( $triplets );
+               $checkStatus = $this->removeNonexistentFiles( $triplets );
+               if ( !$checkStatus->isGood() ) {
+                       $status->merge( $checkStatus );
+                       return $status;
+               }
+               $triplets = $checkStatus->value;
                $destFile = wfLocalFile( $this->target );
 
                $this->file->lock(); // begin
@@ -2951,7 +2974,7 @@ class LocalFileMoveBatch {
        /**
         * Removes non-existent files from move batch.
         * @param array $triplets
-        * @return array
+        * @return Status
         */
        function removeNonexistentFiles( $triplets ) {
                $files = array();
@@ -2961,8 +2984,12 @@ class LocalFileMoveBatch {
                }
 
                $result = $this->file->repo->fileExistsBatch( $files );
-               $filteredTriplets = array();
+               if ( in_array( null, $result, true ) ) {
+                       return Status::newFatal( 'backend-fail-internal',
+                               $this->file->repo->getBackend()->getName() );
+               }
 
+               $filteredTriplets = array();
                foreach ( $triplets as $file ) {
                        if ( $result[$file[0]] ) {
                                $filteredTriplets[] = $file;
@@ -2971,7 +2998,7 @@ class LocalFileMoveBatch {
                        }
                }
 
-               return $filteredTriplets;
+               return Status::newGood( $filteredTriplets );
        }
 
        /**
index 0adcc73..710058f 100644 (file)
@@ -404,4 +404,18 @@ class OldLocalFile extends LocalFile {
 
                return true;
        }
+
+       /**
+        * If archive name is an empty string, then file does not "exist"
+        *
+        * This is the case for a couple files on Wikimedia servers where
+        * the old version is "lost".
+        */
+       public function exists() {
+               $archiveName = $this->getArchiveName();
+               if ( $archiveName === '' || !is_string( $archiveName ) ) {
+                       return false;
+               }
+               return parent::exists();
+       }
 }
index 2d3ea5a..b0a593d 100644 (file)
@@ -86,19 +86,25 @@ abstract class ImageGalleryBase extends ContextSource {
         * should use to get a gallery.
         *
         * @param string|bool $mode Mode to use. False to use the default
+        * @param IContextSource|null $context
+        * @return ImageGalleryBase
         * @throws MWException
         */
-       static function factory( $mode = false ) {
-               global $wgGalleryOptions, $wgContLang;
+       static function factory( $mode = false, IContextSource $context = null ) {
+               global $wgContLang;
                self::loadModes();
+               if ( !$context ) {
+                       $context = RequestContext::getMainAndWarn( __METHOD__ );
+               }
                if ( !$mode ) {
-                       $mode = $wgGalleryOptions['mode'];
+                       $galleryOpions = $context->getConfig()->get( 'GalleryOptions' );
+                       $mode = $galleryOpions['mode'];
                }
 
                $mode = $wgContLang->lc( $mode );
 
                if ( isset( self::$modeMapping[$mode] ) ) {
-                       return new self::$modeMapping[$mode]( $mode );
+                       return new self::$modeMapping[$mode]( $mode, $context );
                } else {
                        throw new MWException( "No gallery class registered for mode $mode" );
                }
@@ -124,18 +130,23 @@ abstract class ImageGalleryBase extends ContextSource {
         * You should not call this directly, but instead use
         * ImageGalleryBase::factory().
         * @param string $mode
+        * @param IContextSource|null $context
         */
-       function __construct( $mode = 'traditional' ) {
-               global $wgGalleryOptions;
+       function __construct( $mode = 'traditional', IContextSource $context = null ) {
+               if ( $context ) {
+                       $this->setContext( $context );
+               }
+
+               $galleryOptions = $this->getConfig()->get( 'GalleryOptions' );
                $this->mImages = array();
-               $this->mShowBytes = $wgGalleryOptions['showBytes'];
+               $this->mShowBytes = $galleryOptions['showBytes'];
                $this->mShowFilename = true;
                $this->mParser = false;
                $this->mHideBadImages = false;
-               $this->mPerRow = $wgGalleryOptions['imagesPerRow'];
-               $this->mWidths = $wgGalleryOptions['imageWidth'];
-               $this->mHeights = $wgGalleryOptions['imageHeight'];
-               $this->mCaptionLength = $wgGalleryOptions['captionLength'];
+               $this->mPerRow = $galleryOptions['imagesPerRow'];
+               $this->mWidths = $galleryOptions['imageWidth'];
+               $this->mHeights = $galleryOptions['imageHeight'];
+               $this->mCaptionLength = $galleryOptions['captionLength'];
                $this->mMode = $mode;
        }
 
index 207efa8..52a49dd 100644 (file)
@@ -95,6 +95,7 @@ class PackedImageGallery extends TraditionalImageGallery {
        /**
         * Add javascript which auto-justifies the rows by manipulating the image sizes.
         * Also ensures that the hover version of this degrades gracefully.
+        * @return array
         */
        protected function getModules() {
                return array( 'mediawiki.page.gallery' );
diff --git a/includes/htmlform/HTMLAutoCompleteSelectField.php b/includes/htmlform/HTMLAutoCompleteSelectField.php
new file mode 100644 (file)
index 0000000..4905362
--- /dev/null
@@ -0,0 +1,165 @@
+<?php
+
+/**
+ * Text field for selecting a value from a large list of possible values, with
+ * auto-completion and optionally with a select dropdown for selecting common
+ * options.
+ *
+ * If one of 'options-messages', 'options', or 'options-message' is provided
+ * and non-empty, the select dropdown will be shown. An 'other' key will be
+ * appended using message 'htmlform-selectorother-other' if not already
+ * present.
+ *
+ * Besides the parameters recognized by HTMLTextField, the following are
+ * recognized:
+ *   options-messages - As for HTMLSelectField
+ *   options - As for HTMLSelectField
+ *   options-message - As for HTMLSelectField
+ *   autocomplete - Associative array mapping display text to values.
+ *   autocomplete-messages - Like autocomplete, but keys are message names.
+ *   require-match - Boolean, if true the value must be in the options or the
+ *     autocomplete.
+ *   other-message - Message to use instead of htmlform-selectorother-other for
+ *      the 'other' message.
+ *   other - Raw text to use for the 'other' message
+ *
+ */
+class HTMLAutoCompleteSelectField extends HTMLTextField {
+       protected $autocomplete = array();
+
+       function __construct( $params ) {
+               $params += array(
+                       'require-match' => false,
+               );
+
+               parent::__construct( $params );
+
+               if ( array_key_exists( 'autocomplete-messages', $this->mParams ) ) {
+                       foreach ( $this->mParams['autocomplete-messages'] as $key => $value ) {
+                               $key = $this->msg( $key )->plain();
+                               $this->autocomplete[$key] = strval( $value );
+                       }
+               } elseif ( array_key_exists( 'autocomplete', $this->mParams ) ) {
+                       foreach ( $this->mParams['autocomplete'] as $key => $value ) {
+                               $this->autocomplete[$key] = strval( $value );
+                       }
+               }
+               if ( !is_array( $this->autocomplete ) || !$this->autocomplete ) {
+                       throw new MWException( 'HTMLAutoCompleteSelectField called without any autocompletions' );
+               }
+
+               $this->getOptions();
+               if ( $this->mOptions && !in_array( 'other', $this->mOptions, true ) ) {
+                       if ( isset( $params['other-message'] ) ) {
+                               $msg = wfMessage( $params['other-message'] )->text();
+                       } elseif ( isset( $params['other'] ) ) {
+                               $msg = $params['other'];
+                       } else {
+                               $msg = wfMessage( 'htmlform-selectorother-other' )->text();
+                       }
+                       $this->mOptions[$msg] = 'other';
+               }
+       }
+
+       function loadDataFromRequest( $request ) {
+               if ( $request->getCheck( $this->mName ) ) {
+                       $val = $request->getText( $this->mName . '-select', 'other' );
+
+                       if ( $val === 'other' ) {
+                               $val = $request->getText( $this->mName );
+                               if ( isset( $this->autocomplete[$val] ) ) {
+                                       $val = $this->autocomplete[$val];
+                               }
+                       }
+
+                       return $val;
+               } else {
+                       return $this->getDefault();
+               }
+       }
+
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               $validOptions = HTMLFormField::flattenOptions( $this->getOptions() );
+
+               if ( in_array( strval( $value ), $validOptions, true ) ) {
+                       return true;
+               } elseif ( in_array( strval( $value ), $this->autocomplete, true ) ) {
+                       return true;
+               } elseif ( $this->mParams['require-match'] ) {
+                       return $this->msg( 'htmlform-select-badoption' )->parse();
+               }
+
+               return true;
+       }
+
+       function getAttributes( array $list ) {
+               $attribs = array(
+                       'type' => 'text',
+                       'data-autocomplete' => FormatJson::encode( array_keys( $this->autocomplete ) ),
+               ) + parent::getAttributes( $list );
+
+               if ( $this->getOptions() ) {
+                       $attribs['data-hide-if'] = FormatJson::encode(
+                               array( '!==', $this->mName . '-select', 'other' )
+                       );
+               }
+
+               return $attribs;
+       }
+
+       function getInputHTML( $value ) {
+               $oldClass = $this->mClass;
+               $this->mClass = (array)$this->mClass;
+
+               $valInSelect = false;
+               $ret = '';
+
+               if ( $this->getOptions() ) {
+                       if ( $value !== false ) {
+                               $value = strval( $value );
+                               $valInSelect = in_array(
+                                       $value, HTMLFormField::flattenOptions( $this->getOptions() ), true
+                               );
+                       }
+
+                       $selected = $valInSelect ? $value : 'other';
+                       $select = new XmlSelect( $this->mName . '-select', $this->mID . '-select', $selected );
+                       $select->addOptions( $this->getOptions() );
+                       $select->setAttribute( 'class', 'mw-htmlform-select-or-other' );
+
+                       if ( !empty( $this->mParams['disabled'] ) ) {
+                               $select->setAttribute( 'disabled', 'disabled' );
+                       }
+
+                       if ( isset( $this->mParams['tabindex'] ) ) {
+                               $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+                       }
+
+                       $ret = $select->getHTML() . "<br />\n";
+
+                       $this->mClass[] = 'mw-htmlform-hide-if';
+               }
+
+               if ( $valInSelect ) {
+                       $value = '';
+               } else {
+                       $key = array_search( strval( $value ), $this->autocomplete, true );
+                       if ( $key !== false ) {
+                               $value = $key;
+                       }
+               }
+
+               $this->mClass[] = 'mw-htmlform-autocomplete';
+               $ret .= parent::getInputHTML( $valInSelect ? '' : $value );
+               $this->mClass = $oldClass;
+
+               return $ret;
+       }
+
+}
index 4eb7e6e..5f70362 100644 (file)
@@ -5,6 +5,8 @@
  */
 class HTMLCheckField extends HTMLFormField {
        function getInputHTML( $value ) {
+               global $wgUseMediaWikiUIEverywhere;
+
                if ( !empty( $this->mParams['invert'] ) ) {
                        $value = !$value;
                }
@@ -26,7 +28,19 @@ class HTMLCheckField extends HTMLFormField {
                                ),
                                Xml::check( $this->mName, $value, $attr ) . $this->mLabel );
                } else {
-                       return Xml::checkLabel( $this->mLabel, $this->mName, $this->mID, $value, $attr );
+                       $chkLabel = Xml::check( $this->mName, $value, $attr )
+                       . '&#160;'
+                       . Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
+
+                       if ( $wgUseMediaWikiUIEverywhere ) {
+                               $chkLabel = Html::rawElement(
+                                       'div',
+                                       array( 'class' => 'mw-ui-checkbox' ),
+                                       $chkLabel
+                               );
+                       }
+
+                       return $chkLabel;
                }
        }
 
index 8255526..6c538fd 100644 (file)
@@ -80,8 +80,6 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         * @return string
         */
        function getInputHTML( $value ) {
-               global $wgUseMediaWikiUIEverywhere;
-
                $html = '';
                $tableContents = '';
                $rows = $this->mParams['rows'];
@@ -129,7 +127,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                                        $thisAttribs['disabled'] = 1;
                                }
                                $chkBox = Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs );
-                               if ( $wgUseMediaWikiUIEverywhere ) {
+                               if ( $this->mParent->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                                        $chkBox = Html::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
                                                $chkBox .
                                                Html::element( 'label', array( 'for' => $thisId ) ) .
index 6501890..fc2222a 100644 (file)
@@ -120,6 +120,7 @@ class HTMLForm extends ContextSource {
                'edittools' => 'HTMLEditTools',
                'checkmatrix' => 'HTMLCheckMatrix',
                'cloner' => 'HTMLFormFieldCloner',
+               'autocompleteselect' => 'HTMLAutoCompleteSelectField',
                // HTMLTextField will output the correct type="" attribute automagically.
                // There are about four zillion other HTML5 input types, like range, but
                // we don't use those at the moment, so no point in adding all of them.
@@ -300,9 +301,8 @@ class HTMLForm extends ContextSource {
         * @return string
         */
        public function getDisplayFormat() {
-               global $wgHTMLFormAllowTableFormat;
                $format = $this->displayFormat;
-               if ( !$wgHTMLFormAllowTableFormat && $format === 'table' ) {
+               if ( !$this->getConfig()->get( 'HTMLFormAllowTableFormat' ) && $format === 'table' ) {
                        $format = 'div';
                }
                return $format;
@@ -845,8 +845,6 @@ class HTMLForm extends ContextSource {
         * @return string HTML.
         */
        function getHiddenFields() {
-               global $wgArticlePath;
-
                $html = '';
                if ( $this->getMethod() == 'post' ) {
                        $html .= Html::hidden(
@@ -857,7 +855,8 @@ class HTMLForm extends ContextSource {
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
 
-               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
+               $articlePath = $this->getConfig()->get( 'ArticlePath' );
+               if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
 
@@ -874,8 +873,8 @@ class HTMLForm extends ContextSource {
         * @return string HTML.
         */
        function getButtons() {
-               global $wgUseMediaWikiUIEverywhere;
                $buttons = '';
+               $useMediaWikiUIEverywhere = $this->getConfig()->get( 'UseMediaWikiUIEverywhere' );
 
                if ( $this->mShowSubmit ) {
                        $attribs = array();
@@ -894,7 +893,7 @@ class HTMLForm extends ContextSource {
 
                        $attribs['class'] = array( 'mw-htmlform-submit' );
 
-                       if ( $this->isVForm() || $wgUseMediaWikiUIEverywhere ) {
+                       if ( $this->isVForm() || $useMediaWikiUIEverywhere ) {
                                array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-constructive' );
                        }
 
@@ -937,8 +936,8 @@ class HTMLForm extends ContextSource {
                                $attrs['id'] = $button['id'];
                        }
 
-                       if ( $wgUseMediaWikiUIEverywhere ) {
-                               if ( isset( $attrs['class' ] ) ) {
+                       if ( $useMediaWikiUIEverywhere ) {
+                               if ( isset( $attrs['class'] ) ) {
                                        $attrs['class'] .= ' mw-ui-button';
                                } else {
                                        $attrs['class'] = 'mw-ui-button';
@@ -1438,20 +1437,19 @@ class HTMLForm extends ContextSource {
         * @return string
         */
        public function getAction() {
-               global $wgScript, $wgArticlePath;
-
                // If an action is alredy provided, return it
                if ( $this->mAction !== false ) {
                        return $this->mAction;
                }
 
-               // Check whether we are in GET mode and $wgArticlePath contains a "?"
+               $articlePath = $this->getConfig()->get( 'ArticlePath' );
+               // Check whether we are in GET mode and the ArticlePath contains a "?"
                // meaning that getLocalURL() would return something like "index.php?title=...".
                // As browser remove the query string before submitting GET forms,
-               // it means that the title would be lost. In such case use $wgScript instead
+               // it means that the title would be lost. In such case use wfScript() instead
                // and put title in an hidden field (see getHiddenFields()).
-               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
-                       return $wgScript;
+               if ( strpos( $articlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
+                       return wfScript();
                }
 
                return $this->getTitle()->getLocalURL();
index 7e4b15b..70b1535 100644 (file)
@@ -593,6 +593,9 @@ abstract class HTMLFormField {
                $wrapperAttributes = array(
                        'class' => 'htmlform-tip',
                );
+               if ( $this->mHelpClass !== false ) {
+                       $wrapperAttributes['class'] .= " {$this->mHelpClass}";
+               }
                if ( $this->mHideIf ) {
                        $wrapperAttributes['data-hide-if'] = FormatJson::encode( $this->mHideIf );
                        $wrapperAttributes['class'] .= ' mw-htmlform-hide-if';
index 8a01b32..31b93c8 100644 (file)
@@ -163,19 +163,26 @@ abstract class DatabaseInstaller {
        }
 
        /**
-        * Create database tables from scratch.
+        * Apply a SQL source file to the database as part of running an installation step.
         *
+        * @param string $sourceFileMethod
+        * @param string $stepName
+        * @param string $archiveTableMustNotExist
         * @return Status
         */
-       public function createTables() {
+       private function stepApplySourceFile(
+               $sourceFileMethod,
+               $stepName,
+               $archiveTableMustNotExist = false
+       ) {
                $status = $this->getConnection();
                if ( !$status->isOK() ) {
                        return $status;
                }
                $this->db->selectDB( $this->getVar( 'wgDBname' ) );
 
-               if ( $this->db->tableExists( 'archive', __METHOD__ ) ) {
-                       $status->warning( 'config-install-tables-exist' );
+               if ( $archiveTableMustNotExist && $this->db->tableExists( 'archive', __METHOD__ ) ) {
+                       $status->warning( "config-$stepName-tables-exist" );
                        $this->enableLB();
 
                        return $status;
@@ -184,11 +191,13 @@ abstract class DatabaseInstaller {
                $this->db->setFlag( DBO_DDLMODE ); // For Oracle's handling of schema files
                $this->db->begin( __METHOD__ );
 
-               $error = $this->db->sourceFile( $this->db->getSchemaPath() );
+               $error = $this->db->sourceFile(
+                       call_user_func( array( $this->db, $sourceFileMethod ) )
+               );
                if ( $error !== true ) {
                        $this->db->reportQueryError( $error, 0, '', __METHOD__ );
                        $this->db->rollback( __METHOD__ );
-                       $status->fatal( 'config-install-tables-failed', $error );
+                       $status->fatal( "config-$stepName-tables-failed", $error );
                } else {
                        $this->db->commit( __METHOD__ );
                }
@@ -200,6 +209,24 @@ abstract class DatabaseInstaller {
                return $status;
        }
 
+       /**
+        * Create database tables from scratch.
+        *
+        * @return Status
+        */
+       public function createTables() {
+               return $this->stepApplySourceFile( 'getSchemaPath', 'install', true );
+       }
+
+       /**
+        * Insert update keys into table to prevent running unneded updates.
+        *
+        * @return Status
+        */
+       public function insertUpdateKeys() {
+               return $this->stepApplySourceFile( 'getUpdateKeysPath', 'updates', false );
+       }
+
        /**
         * Create the tables for each extension the user enabled
         * @return Status
index 427ded4..193d592 100644 (file)
@@ -907,7 +907,7 @@ abstract class DatabaseUpdater {
                if ( $wgLocalisationCacheConf['manualRecache'] ) {
                        $this->rebuildLocalisationCache();
                }
-               MessageBlobStore::clear();
+               MessageBlobStore::getInstance()->clear();
                $this->output( "done.\n" );
        }
 
@@ -984,6 +984,7 @@ abstract class DatabaseUpdater {
 
        /**
         * Updates the timestamps in the transcache table
+        * @return bool
         */
        protected function doUpdateTranscacheField() {
                if ( $this->updateRowExists( 'convert transcache field' ) ) {
index 57fdab3..987925c 100644 (file)
@@ -434,7 +434,11 @@ abstract class Installer {
        public function doEnvironmentChecks() {
                // Php version has already been checked by entry scripts
                // Show message here for information purposes
-               $this->showMessage( 'config-env-php', PHP_VERSION );
+               if ( wfIsHHVM() ) {
+                       $this->showMessage( 'config-env-hhvm', HHVM_VERSION );
+               } else {
+                       $this->showMessage( 'config-env-php', PHP_VERSION );
+               }
 
                $good = true;
                // Must go here because an old version of PCRE can prevent other checks from completing
@@ -736,6 +740,7 @@ abstract class Installer {
        /**
         * Environment check for register_globals.
         * Prevent installation if enabled
+        * @return bool
         */
        protected function envCheckRegisterGlobals() {
                if ( wfIniGetBool( 'register_globals' ) ) {
@@ -1519,6 +1524,7 @@ abstract class Installer {
                        array( 'name' => 'interwiki', 'callback' => array( $installer, 'populateInterwikiTable' ) ),
                        array( 'name' => 'stats', 'callback' => array( $this, 'populateSiteStats' ) ),
                        array( 'name' => 'keys', 'callback' => array( $this, 'generateKeys' ) ),
+                       array( 'name' => 'updates', 'callback' => array( $installer, 'insertUpdateKeys' ) ),
                        array( 'name' => 'sysop', 'callback' => array( $this, 'createSysop' ) ),
                        array( 'name' => 'mainpage', 'callback' => array( $this, 'createMainpage' ) ),
                );
index 4d86d11..ed11f8b 100644 (file)
@@ -52,6 +52,13 @@ class MssqlUpdater extends DatabaseUpdater {
                        array( 'updateConstraints', 'media_type', 'image', 'img_media_type' ),
                        array( 'updateConstraints', 'media_type', 'uploadstash', 'us_media_type' ),
                        // END: Constraint updates
+
+                       array( 'modifyField', 'image', 'img_major_mime',
+                               'patch-img_major_mime-chemical.sql' ),
+                       array( 'modifyField', 'oldimage', 'oi_major_mime',
+                               'patch-oi_major_mime-chemical.sql' ),
+                       array( 'modifyField', 'filearchive', 'fa_major_mime',
+                               'patch-fa_major_mime-chemical.sql' ),
                );
        }
 
index dcf37b6..990b5b0 100644 (file)
@@ -254,11 +254,18 @@ class MysqlUpdater extends DatabaseUpdater {
                        // 1.24
                        array( 'addField', 'page_props', 'pp_sortkey', 'patch-pp_sortkey.sql' ),
                        array( 'dropField', 'recentchanges', 'rc_cur_time', 'patch-drop-rc_cur_time.sql' ),
-                       array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp', 'patch-watchlist-user-notificationtimestamp-index.sql' ),
+                       array( 'addIndex', 'watchlist', 'wl_user_notificationtimestamp',
+                               'patch-watchlist-user-notificationtimestamp-index.sql' ),
                        array( 'addField', 'page', 'page_lang', 'patch-page_lang.sql' ),
                        array( 'addField', 'pagelinks', 'pl_from_namespace', 'patch-pl_from_namespace.sql' ),
                        array( 'addField', 'templatelinks', 'tl_from_namespace', 'patch-tl_from_namespace.sql' ),
                        array( 'addField', 'imagelinks', 'il_from_namespace', 'patch-il_from_namespace.sql' ),
+                       array( 'modifyField', 'image', 'img_major_mime',
+                               'patch-img_major_mime-chemical.sql' ),
+                       array( 'modifyField', 'oldimage', 'oi_major_mime',
+                               'patch-oi_major_mime-chemical.sql' ),
+                       array( 'modifyField', 'filearchive', 'fa_major_mime',
+                               'patch-fa_major_mime-chemical.sql' ),
                );
        }
 
index 4caf902..6dcce23 100644 (file)
@@ -158,7 +158,7 @@ class PostgresInstaller extends DatabaseInstaller {
        protected function openConnectionWithParams( $user, $password, $dbName, $schema ) {
                $status = Status::newGood();
                try {
-                       $db = Database::factory( 'postgres', array(
+                       $db = DatabaseBase::factory( 'postgres', array(
                                'host' => $this->getVar( 'wgDBserver' ),
                                'user' => $user,
                                'password' => $password,
index 68c2ebe..3a3e809 100644 (file)
@@ -667,7 +667,7 @@ class WebInstaller extends Installer {
         * Get HTML for an info box with an icon.
         *
         * @param string $text Wikitext, get this with wfMessage()->plain()
-        * @param string|bool $icon Icon name, file in skins/common/images. Default: false
+        * @param string|bool $icon Icon name, file in mw-config/images. Default: false
         * @param string|bool $class Additional class name to add to the wrapper div. Default: false.
         *
         * @return string
@@ -675,8 +675,8 @@ class WebInstaller extends Installer {
        public function getInfoBox( $text, $icon = false, $class = false ) {
                $text = $this->parse( $text, true );
                $icon = ( $icon == false ) ?
-                       '../skins/common/images/info-32.png' :
-                       '../skins/common/images/' . $icon;
+                       'images/info-32.png' :
+                       'images/' . $icon;
                $alt = wfMessage( 'config-information' )->text();
 
                return Html::infoBox( $text, $icon, $alt, $class, false );
index 174120f..f797ef9 100644 (file)
@@ -126,6 +126,11 @@ class WebInstallerOutput {
        public function getCSS() {
                // Horrible, horrible hack: the installer is currently hardcoded to use the Vector skin, so load
                // it here. Include instead of require, as this will work without it, it will just look bad.
+               // We need the 'global' statement for $wgResourceModules because the Vector skin adds the
+               // definitions for its RL modules there that we use implicitly below.
+               // @codingStandardsIgnoreStart
+               global $wgResourceModules; // This is NOT UNUSED!
+               // @codingStandardsIgnoreEnd
                global $wgStyleDirectory;
                include_once "$wgStyleDirectory/Vector/Vector.php";
 
@@ -260,7 +265,7 @@ class WebInstallerOutput {
        <title><?php $this->outputTitle(); ?></title>
        <?php echo $this->getCssUrl() . "\n"; ?>
        <?php echo $this->getJQuery() . "\n"; ?>
-       <?php echo Html::linkedScript( '../skins/common/config.js' ) . "\n"; ?>
+       <?php echo Html::linkedScript( 'config.js' ) . "\n"; ?>
 </head>
 
 <?php echo Html::openElement( 'body', array( 'class' => $this->getDir() ) ) . "\n"; ?>
@@ -285,7 +290,7 @@ class WebInstallerOutput {
 
 <div id="mw-panel">
        <div class="portal" id="p-logo">
-         <a style="background-image: url(../skins/common/images/mediawiki.png);"
+         <a style="background-image: url(images/installer-logo.png);"
                href="https://www.mediawiki.org/"
                title="Main Page"></a>
        </div>
@@ -309,7 +314,7 @@ class WebInstallerOutput {
        <title><?php $this->outputTitle(); ?></title>
        <?php echo $this->getCssUrl() . "\n"; ?>
        <?php echo $this->getJQuery(); ?>
-       <?php echo Html::linkedScript( '../skins/common/config.js' ); ?>
+       <?php echo Html::linkedScript( 'config.js' ); ?>
 </head>
 
 <body style="background-image: none">
index 9fdee76..2a9c54c 100644 (file)
@@ -187,7 +187,7 @@ abstract class WebInstallerPage {
        protected function startLiveBox() {
                $this->addHTML(
                        '<div id="config-spinner" style="display:none;">' .
-                       '<img src="../skins/common/images/ajax-loader.gif" /></div>' .
+                       '<img src="images/ajax-loader.gif" /></div>' .
                        '<script>jQuery( "#config-spinner" ).show();</script>' .
                        '<div id="config-live-log">' .
                        '<textarea name="LiveLog" rows="10" cols="30" readonly="readonly">'
@@ -1176,7 +1176,7 @@ class WebInstallerOptions extends WebInstallerPage {
                        'config_wgRightsIcon' => '[license_button]',
                ) );
                $styleUrl = $server . dirname( dirname( $this->parent->getUrl() ) ) .
-                       '/skins/common/config-cc.css';
+                       '/mw-config/config-cc.css';
                $iframeUrl = 'http://creativecommons.org/license/?' .
                        wfArrayToCgi( array(
                                'partner' => 'MediaWiki',
diff --git a/includes/installer/i18n/av.json b/includes/installer/i18n/av.json
new file mode 100644 (file)
index 0000000..0ce76fa
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Gazimagomedov"
+               ]
+       },
+       "config-page-options": "Рекъезаби"
+}
index b59a628..32e4c39 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "DCLXVI",
-                       "아라"
+                       "아라",
+                       "StanProg"
                ]
        },
        "config-desc": "Инсталатор на МедияУики",
@@ -47,7 +48,6 @@
        "config-env-good": "Средата беше проверена.\nИнсталирането на МедияУики е възможно.",
        "config-env-bad": "Средата беше проверена.\nНе е възможна инсталация на МедияУики.",
        "config-env-php": "Инсталирана е версия на PHP $1.",
-       "config-env-php-toolow": "Инсталирана е версия на PHP $1.\nМедияУики изисква версия PHP $2 или по-нова.",
        "config-unicode-using-utf8": "Използване на utf8_normalize.so от Brion Vibber за нормализация на Уникод.",
        "config-unicode-using-intl": "Използване на разширението [http://pecl.php.net/intl intl PECL] за нормализация на Уникод.",
        "config-unicode-pure-php-warning": "'''Предупреждение''': [http://pecl.php.net/intl Разширението intl PECL] не е налично за справяне с нормализацията на Уникод, превключване към по-бавното изпълнение на чист PHP.\nАко сайтът е с голям трафик, препоръчително е запознаването с [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормализацията на Уникод].",
@@ -55,7 +55,6 @@
        "config-no-db": "Не може да бъде открит подходящ драйвер за база от данни! Необходимо е да се инсталира драйвер за база от данни за PHP.\nПоддържат се следните типове базни от данни: $1.\n\nАко използвате споделен хостинг, помолете доставчика на услугата да инсталира подходящ драйвер за база от данни.\nАко сами сте компилирали PHP, преконфигурирайте го с включен клиент за база от данни, например чрез използване на <code>./configure --with-mysql</code>.\nАко сте инсталирали PHP от пакет за Debian или Убунту, необходимо е, също така, да инсталирате и модула php5-mysql.",
        "config-outdated-sqlite": "<strong>Предупреждение:</strong> имате инсталиран SQLite  $1, а минималната допустима версия е $2. SQLite ще бъде недостъпна за ползване.",
        "config-no-fts3": "'''Предупреждение''': SQLite е компилирана без [//sqlite.org/fts3.html модула FTS3], затова възможностите за търсене няма да са достъпни.",
-       "config-register-globals": "'''Предупреждение: Настройката на PHP <code>[http://php.net/register_globals register_globals]</code> е включена.'''\n'''При възможност е препоръчително тя да бъде изключена.'''\nМедияУики ще работи, но сървърът е изложен на евентуални пропуски в сигурността.",
        "config-magic-quotes-runtime": "'''Фатално: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] е активирана!'''\nТова може да повреди непредвидимо въвеждането на данните.\nИнсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.",
        "config-magic-quotes-sybase": "'''Фатално: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] е активирана!'''\nТова може да повреди непредвидимо въвеждането на данните.\nИнсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.",
        "config-mbstring": "'''Фатално: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] е активирана!'''\nТова може да повреди непредвидимо въвеждането на данните.\nИнсталацията на МедияУики е невъзможна докато тази настройка не бъде изключена.",
        "config-memcache-badport": "Портовете за Memcached трябва да бъдат между $1 и $2.",
        "config-extensions": "Разширения",
        "config-extensions-help": "Разширенията от списъка по-горе бяха открити в директорията <code>./extensions</code>.\n\nВъзможно е те да изискват допълнително конфигуриране, но сега могат да бъдат включени.",
+       "config-skins": "Облици",
        "config-install-alreadydone": "'''Предупреждение:''' Изглежда вече сте инсталирали МедияУики и се опитвате да го инсталирате отново.\nПродължете към следващата страница.",
        "config-install-begin": "Инсталацията на МедияУики ще започне след натискане на бутона „{{int:config-continue}}“.\nВ случай, че е необходимо да се направят промени, използва се бутона „{{int:config-back}}“.",
        "config-install-step-done": "готово",
index 880e974..1465a96 100644 (file)
@@ -44,6 +44,8 @@
        "config-db-install-account": "ইন্সটলের জন্য ব্যবহারকারী অ্যাকাউন্ট",
        "config-db-username": "ডেটাবেজের ব্যবহারকারী নাম:",
        "config-db-password": "ডেটাবেজের শব্দচাবি:",
+       "config-db-wiki-account": "সাধারণ অভিযানের জন্য ব্যবহারকারী একাউন্ট",
+       "config-db-prefix": "উপাত্তশালা ছক প্রিফিক্স:",
        "config-db-charset": "ডেটাবেজের অক্ষর সেট",
        "config-db-port": "ডেটাবেজ পোর্ট:",
        "config-db-schema": "মিডিয়াউইকির স্কিমা",
@@ -51,6 +53,7 @@
        "config-sqlite-dir": "এসকিউলাইট ডেটা ডিরেক্টরি:",
        "config-oracle-def-ts": "পূর্বনির্ধারিত টেবিলস্পেস",
        "config-oracle-temp-ts": "সাময়কি টেবিলস্পেস:",
+       "config-type-mssql": "মাইক্রোসফট এসকিউএল সার্ভার",
        "config-header-mysql": "মাইএসকিউএল সেটিংস",
        "config-header-postgres": "পোস্টগ্রেএসকিউএল সেটিংস",
        "config-header-sqlite": "এসকিউলাইট সেটিংস",
index 0510bfc..eb98e32 100644 (file)
        "config-install-stats": "Inicializují se statistiky",
        "config-install-keys": "Vytvářejí se tajné klíče",
        "config-insecure-keys": "'''Upozornění:''' {{PLURAL:$2|Tajný klíč|Tajné klíče}} ($1) vytvořené v průběhu instalace {{PLURAL:$2|není|nejsou}} zcela {{PLURAL:$2|bezpečný|bezpečné}}. Zvažte {{PLURAL:$2|jeho|jejich}} ruční změnu.",
+       "config-install-updates": "Ruší se spuštění nepotřebných aktualizací",
+       "config-install-updates-failed": "<strong>Chyba:</strong> Vložení aktualizačních klíčů do tabulek selhalo s následující chybou: $1",
        "config-install-sysop": "Zakládá se uživatelský účet správce",
        "config-install-subscribe-fail": "Nelze se přihlásit k odběru mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "Není nainstalován cURL a není dostupné <code>allow_url_fopen</code>.",
index 532d7c1..284a356 100644 (file)
@@ -58,6 +58,7 @@
        "config-env-good": "Die Installationsumgebung wurde geprüft.\nMediaWiki kann installiert werden.",
        "config-env-bad": "Die Installationsumgebung wurde geprüft.\nMediaWiki kann nicht installiert werden.",
        "config-env-php": "Die Skriptsprache „PHP“ ($1) ist installiert.",
+       "config-env-hhvm": "HHVM $1 ist installiert.",
        "config-unicode-using-utf8": "Zur Unicode-Normalisierung wird Brion Vibbers <code>utf8_normalize.so</code> eingesetzt.",
        "config-unicode-using-intl": "Zur  Unicode-Normalisierung wird die [http://pecl.php.net/intl PECL-Erweiterung intl] eingesetzt.",
        "config-unicode-pure-php-warning": "'''Warnung:''' Die [http://pecl.php.net/intl PECL-Erweiterung intl] ist für die Unicode-Normalisierung nicht verfügbar, so dass stattdessen die langsame pure-PHP-Implementierung genutzt wird.\nSofern eine Website mit großer Benutzeranzahl betrieben wird, sollten weitere Informationen auf der Webseite [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode-Normalisierung (en)] gelesen werden.",
        "config-install-stats": "Statistiken werden initialisiert",
        "config-install-keys": "Geheimschlüssel werden erstellt",
        "config-insecure-keys": "'''Warnung:''' {{PLURAL:$2|Der Geheimschlüssel|Die Geheimschlüssel}} $1, {{PLURAL:$2|der|die}} während des Installationsvorgangs generiert {{PLURAL:$2|wurde, ist|wurden, sind}} nicht sehr sicher. {{PLURAL:$2|Er sollte|Sie sollten}} manuell geändert werden.",
+       "config-install-updates": "Unnötige Aktualisierungen nicht ausführen",
+       "config-install-updates-failed": "<strong>Fehler:</strong> Das Einfügen von Aktualisierungsschlüssel in die Tabellen ist mit dem folgenden Fehler fehlgeschlagen: $1",
        "config-install-sysop": "Administratorkonto wird erstellt",
        "config-install-subscribe-fail": "Abonnieren von „mediawiki-announce“ ist gescheitert: $1",
        "config-install-subscribe-notpossible": "cURL ist nicht installiert und <code>allow_url_fopen</code> ist nicht verfügbar.",
index bd76ada..1e1c2da 100644 (file)
@@ -44,6 +44,7 @@
        "config-env-good": "The environment has been checked.\nYou can install MediaWiki.",
        "config-env-bad": "The environment has been checked.\nYou cannot install MediaWiki.",
        "config-env-php": "PHP $1 is installed.",
+       "config-env-hhvm": "HHVM $1 is installed.",
        "config-unicode-using-utf8": "Using Brion Vibber's utf8_normalize.so for Unicode normalization.",
        "config-unicode-using-intl": "Using the [http://pecl.php.net/intl intl PECL extension] for Unicode normalization.",
        "config-unicode-pure-php-warning": "<strong>Warning:</strong> The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.\nIf you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization].",
        "config-install-stats": "Initializing statistics",
        "config-install-keys": "Generating secret keys",
        "config-insecure-keys": "<strong>Warning:</strong> {{PLURAL:$2|A secure key|Secure keys}} ($1) generated during installation {{PLURAL:$2|is|are}} not completely safe. Consider changing {{PLURAL:$2|it|them}} manually.",
+       "config-install-updates": "Prevent running unneeded updates",
+       "config-install-updates-failed": "<strong>Error:</strong> Inserting update keys into tables failed with the following error: $1",
        "config-install-sysop": "Creating administrator user account",
        "config-install-subscribe-fail": "Unable to subscribe to mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL is not installed and <code>allow_url_fopen</code> is not available.",
index 13b61ed..8fae026 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Avjoska",
-                       "Pikne"
+                       "Pikne",
+                       "Boxmein"
                ]
        },
        "config-information": "Teave",
@@ -26,6 +27,7 @@
        "config-page-upgradedoc": "Uuendamine",
        "config-page-existingwiki": "Olemasolev viki",
        "config-restart": "Jah, tee taaskäivitus",
+       "config-env-hhvm": "HHVM $1 on installitud.",
        "config-db-name": "Andmebaasi nimi:",
        "config-db-username": "Andmebaasi kasutajanimi:",
        "config-db-password": "Andmebaasi parool:",
index d619cff..d4fa13b 100644 (file)
@@ -6,7 +6,8 @@
                        "Ebraminio",
                        "Omidh",
                        "Pouyana",
-                       "Reza1615"
+                       "Reza1615",
+                       "Alirezaaa"
                ]
        },
        "config-desc": "نصب کنندهٔ ویکی‌مدیا",
@@ -51,6 +52,7 @@
        "config-env-good": "محیط بررسی شده‌است.\nشما می‌توانید مدیاویکی را نصب کنید.",
        "config-env-bad": "محیط بررسی شده‌است.\nشما نمی‌توانید مدیاویکی را نصب کنید.",
        "config-env-php": "پی‌اچ‌پی $1 نصب شده‌است.",
+       "config-env-hhvm": "HHVM $1 نصب شده‌است.",
        "config-unicode-using-utf8": "برای یونیکد عادی از Brion Vibber's utf8_normalize.so استفاده کنید.",
        "config-unicode-using-intl": "برای یونیکد عادی از [http://pecl.php.net/intl intl PECL extension] استفاده کنید.",
        "config-unicode-pure-php-warning": "'''هشدار:''' [http://pecl.php.net/intl intl PECL extension] برای کنترل یونیکد عادی در دسترس نیست،اجرای کاملاً آهسته به تعویق می‌افتد.\nاگر شما یک سایت پر‌ ترافیک را اجرا می‌کنید، باید کمی [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization] را بخوانید.",
        "config-install-stats": "شروع آمار",
        "config-install-keys": "تولید کلیدهای مخفی",
        "config-insecure-keys": "'''هشدار:''' {{PLURAL:$2|کلید امن|کلیدهای امن}} ($1) در طی نصب  کاملاً ایمن {{PLURAL:$2|نیست|نیستند}}. تغییر دستی {{PLURAL:$2|آن|آنها}} را در نظر بگیرید.",
+       "config-install-updates": "جلوگیری از به روز رسانی‌های غیر ضروری در حال اجرا",
+       "config-install-updates-failed": "<strong>خطا:</strong> قراردادن کلیدهای به روز رسانی به داخل جداول با خطای روبرو مواجه شد: $1",
        "config-install-sysop": "ایجاد حساب کاربری مدیر",
        "config-install-subscribe-fail": "قادر تصدیق اعلام مدیاویکی نیست:$1",
        "config-install-subscribe-notpossible": "سی‌یوآر‌ال نصب نشده‌است و <code>allow_url_fopen</code> در دسترس نیست.",
index 57d7444..9fd6726 100644 (file)
@@ -66,6 +66,7 @@
        "config-env-good": "L’environnement a été vérifié.\nVous pouvez installer MediaWiki.",
        "config-env-bad": "L’environnement a été vérifié.\nVous ne pouvez pas installer MediaWiki.",
        "config-env-php": "PHP $1 est installé.",
+       "config-env-hhvm": "HHVM $1 est installé.",
        "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": "<strong>Attention</strong> : 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.\nSi votre site web sera très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
        "config-install-stats": "Initialisation des statistiques",
        "config-install-keys": "Génération de la clé secrète",
        "config-insecure-keys": "'''Avertissement''' : {{PLURAL:$2|Une clé de sécurité générée ($1) pendant l'installation n'est pas complètement sécuritaire. Envisagez de la modifier manuellement.|Des clés de sécurité générées ($1) pendant l'installation ne sont pas complètement sécuritaires. Envisagez de les modifier manuellement.}}",
+       "config-install-updates": "Empêcher l’exécution des mises à jour inutiles",
+       "config-install-updates-failed": "<strong>Erreur :</strong> L’insertion de clés modifiées dans les tables a échoué avec l’erreur suivante : $1",
        "config-install-sysop": "Création du compte administrateur",
        "config-install-subscribe-fail": "Impossible de s'abonner à mediawiki-announce : $1",
        "config-install-subscribe-notpossible": "cURL n’est pas installé et <code>allow_url_fopen</code> n’est pas disponible.",
index b809a4c..cd209c5 100644 (file)
        "config-help-restart": "Quere eliminar todos os datos gardados e reiniciar o proceso de instalación?",
        "config-restart": "Si, reiniciala",
        "config-welcome": "=== Comprobación da contorna ===\nCómpre realizar agora unhas comprobacións básicas para ver se a contorna é axeitada para a instalación de MediaWiki.\nLembre incluír esta información se necesita axuda para completar a instalación.",
-       "config-copyright": "=== Dereitos de autor e termos de uso ===\n\n$1\n\nEste programa é software libre; pode redistribuílo e/ou modificalo segundo os termos da licenza pública xeral GNU publicada pola Free Software Foundation; versión 2 ou (na súa escolla) calquera outra posterior.\n\nEste programa distribúese coa esperanza de que poida ser útil, pero '''sen garantía ningunha'''; nin sequera a garantía implícita de '''comercialización''' ou '''adecuación a unha finalidade específica'''.\nOlle a licenza pública xeral GNU para obter máis detalles.\n\nDebería recibir <doclink href=Copying>unha copia da licenza pública xeral GNU</doclink> xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., rúa Franklin, número 51, quinto andar, Boston, Massachusetts, 02110-1301, Estados Unidos de América ou [http://www.gnu.org/copyleft/gpl.html lea a licenza en liña].",
+       "config-copyright": "=== Dereitos de autor e termos de uso ===\n\n$1\n\nEste programa é software libre; pode redistribuílo e/ou modificalo segundo os termos da licenza pública xeral GNU publicada pola Free Software Foundation; versión 2 ou (na súa escolla) calquera outra posterior.\n\nEste programa distribúese coa esperanza de que poida ser útil, pero <strong>sen garantía ningunha</strong>; nin sequera a garantía implícita de <strong>comercialización</strong> ou <strong>adecuación a unha finalidade específica</strong>.\nOlle a licenza pública xeral GNU para obter máis detalles.\n\nDebería recibir <doclink href=Copying>unha copia da licenza pública xeral GNU</doclink> xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., rúa Franklin, número 51, quinto andar, Boston, Massachusetts, 02110-1301, Estados Unidos de América ou [http://www.gnu.org/copyleft/gpl.html lea a licenza en liña].",
        "config-sidebar": "* [//www.mediawiki.org/wiki/MediaWiki/gl Páxina principal de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guía de usuario]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guía de administrador]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas máis frecuentes]\n----\n* <doclink href=Readme>Léame</doclink>\n* <doclink href=ReleaseNotes>Notas de lanzamento</doclink>\n* <doclink href=Copying>Copia</doclink>\n* <doclink href=UpgradeDoc>Actualizacións</doclink>",
        "config-env-good": "Rematou a comprobación da contorna.\nPode instalar MediaWiki.",
        "config-env-bad": "Rematou a comprobación da contorna.\nNon pode instalar MediaWiki.",
        "config-env-php": "Está instalado o PHP $1.",
        "config-unicode-using-utf8": "Usando utf8_normalize.so de Brion Vibber para a normalización Unicode.",
        "config-unicode-using-intl": "Usando a [http://pecl.php.net/intl extensión intl PECL] para a normalización Unicode.",
-       "config-unicode-pure-php-warning": "'''Atención:''' A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á implementación lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
-       "config-unicode-update-warning": "'''Atención:''' A versión instalada da envoltura de normalización Unicode emprega unha versión vella da biblioteca [http://site.icu-project.org/ do proxecto ICU].\nDebería [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
+       "config-unicode-pure-php-warning": "<strong>Atención:</strong> A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á implementación lenta de PHP puro.\nSe o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalización Unicode].",
+       "config-unicode-update-warning": "<strong>Atención:</strong> A versión instalada da envoltura de normalización Unicode emprega unha versión vella da biblioteca [http://site.icu-project.org/ do proxecto ICU].\nDebería [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
        "config-no-db": "Non se puido atopar un controlador axeitado para a base de datos! Necesita instalar un controlador de base de datos para PHP.\nOs tipos de base de datos admitidos son os seguintes: $1.\n\nSe compilou o PHP vostede mesmo, reconfigúreo activando un cliente de base de datos, por exemplo, usando <code>./configure --with-mysql</code>.\nSe instalou o PHP desde un paquete Debian ou Ubuntu, entón tamén necesita instalar, por exemplo, o módulo <code>php5-mysql</code>.",
-       "config-outdated-sqlite": "'''Atención:''' Ten o SQLite $1, que é inferior á versión mínima necesaria: $2. O SQLite non estará dispoñible.",
-       "config-no-fts3": "'''Atención:''' O SQLite está compilado sen o [//sqlite.org/fts3.html módulo FTS3]; as características de procura non estarán dispoñibles nesta instalación.",
+       "config-outdated-sqlite": "<strong>Atención:</strong> Ten o SQLite $1, que é inferior á versión mínima necesaria: $2. O SQLite non estará dispoñible.",
+       "config-no-fts3": "<strong>Atención:</strong> O SQLite está compilado sen o [//sqlite.org/fts3.html módulo FTS3]; as características de procura non estarán dispoñibles nesta instalación.",
        "config-register-globals-error": "<strong>Erro: A opción <code>[http://php.net/register_globals register_globals]</code> do PHP está activada.\nCómpre desactivala para continuar a instalación.</strong>\nConsulte o enderezo [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] para obter axuda sobre como facelo.",
-       "config-magic-quotes-runtime": "'''Erro fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está activado!'''\nEsta opción corrompe os datos de entrada de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
-       "config-magic-quotes-sybase": "'''Erro fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está activado!'''\nEsta opción corrompe os datos de entrada de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
-       "config-mbstring": "'''Erro fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está activado!'''\nEsta opción causa erros e pode corromper os datos de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
-       "config-safe-mode": "'''Atención:''' O [http://www.php.net/features.safe-mode safe mode] do PHP está activado.\nIsto pode causar problemas, particularmente se emprega cargas de ficheiros e soporte de <code>math</code>.",
+       "config-magic-quotes-gpc": "<strong>Erro fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] está activado!</strong>\nEsta opción corrompe os datos de entrada de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
+       "config-magic-quotes-runtime": "<strong>Erro fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] está activado!</strong>\nEsta opción corrompe os datos de entrada de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
+       "config-magic-quotes-sybase": "<strong>Erro fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está activado!</strong>\nEsta opción corrompe os datos de entrada de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
+       "config-mbstring": "<strong>Erro fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está activado!</strong>\nEsta opción causa erros e pode corromper os datos de xeito imprevisible.\nNon pode instalar ou empregar MediaWiki a menos que esta opción estea desactivada.",
+       "config-safe-mode": "<strong>Atención:</strong> O [http://www.php.net/features.safe-mode safe mode] do PHP está activado.\nIsto pode causar problemas, particularmente se emprega cargas de ficheiros e soporte de <code>math</code>.",
        "config-xml-bad": "Falta o módulo XML do PHP.\nMediaWiki necesita funcións neste módulo e non funcionará con esta configuración.\nSe está executando o Mandrake, instale o paquete php-xml.",
        "config-pcre-old": "<strong>Erro fatal:</strong> Necesítase PCRE $1 ou posterior.\nO seu PHP binario está ligado con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Máis información].",
-       "config-pcre-no-utf8": "'''Erro fatal:''' Semella que o módulo PCRE do PHP foi compilado sen o soporte PCRE_UTF8.\nMediaWiki necesita soporte UTF-8 para funcionar correctamente.",
+       "config-pcre-no-utf8": "<strong>Erro fatal:</strong> Semella que o módulo PCRE do PHP foi compilado sen o soporte PCRE_UTF8.\nMediaWiki necesita soporte UTF-8 para funcionar correctamente.",
        "config-memory-raised": "O parámetro <code>memory_limit</code> do PHP é $1. Aumentado a $2.",
-       "config-memory-bad": "'''Atención:''' O parámetro <code>memory_limit</code> do PHP é $1.\nProbablemente é un valor baixo de máis.\nA instalación pode fallar!",
-       "config-ctype": "'''Erro fatal:''' O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
-       "config-json": "'''Erro fatal:''' O PHP compilouse sen o soporte de JSON.\nDebe instalar ben a extensión JSON do PHP ou a extensión [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar MediaWiki.\n* A extensión do PHP está incluída en Red Hat Enterprise Linux (CentOS) 5 e 6, mais debe activarse <code>/etc/php.ini</code> ou <code>/etc/php.d/json.ini</code>.\n* Algunhas distribucións do Linux lanzadas despois de maio de 2013 omiten a extensión do PHP, pero inclúen a extensión PECL como <code>php5-json</code> ou <code>php-pecl-jsonc</code>.",
+       "config-memory-bad": "<strong>Atención:<strong> O parámetro <code>memory_limit</code> do PHP é $1.\nProbablemente é un valor baixo de máis.\nA instalación pode fallar!",
+       "config-ctype": "<strong>Erro fatal:</strong> O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/ctype.installation.php extensión Ctype].",
+       "config-iconv": "<strong>Erro fatal:</strong> O PHP debe compilarse co soporte para a [http://www.php.net/manual/en/iconv.installation.php extensión iconv].",
+       "config-json": "<strong>Erro fatal:</strong> O PHP compilouse sen o soporte de JSON.\nDebe instalar ben a extensión JSON do PHP ou a extensión [http://pecl.php.net/package/jsonc PECL jsonc] antes de instalar MediaWiki.\n* A extensión do PHP está incluída en Red Hat Enterprise Linux (CentOS) 5 e 6, mais debe activarse <code>/etc/php.ini</code> ou <code>/etc/php.d/json.ini</code>.\n* Algunhas distribucións do Linux lanzadas despois de maio de 2013 omiten a extensión do PHP, pero inclúen a extensión PECL como <code>php5-json</code> ou <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] está instalado",
        "config-apc": "[http://www.php.net/apc APC] está instalado",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado",
-       "config-no-cache": "'''Atención:''' Non se puido atopar [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nA caché de obxectos está desactivada.",
-       "config-mod-security": "'''Atención:''' O seu servidor web ten o [http://modsecurity.org/ mod_security] activado. Se estivese mal configurado, pode causar problemas a MediaWiki ou calquera outro software que permita aos usuarios publicar contidos arbitrarios.\nOlle a [http://modsecurity.org/documentation/ documentación do mod_security] ou póñase en contacto co soporte do seu servidor se atopa erros aleatorios.",
+       "config-no-cache": "<strong>Atención:</strong> Non se puido atopar [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nA caché de obxectos está desactivada.",
+       "config-mod-security": "<strong>Atención:</strong> O seu servidor web ten o [http://modsecurity.org/ mod_security] activado. Se estivese mal configurado, pode causar problemas a MediaWiki ou calquera outro software que permita aos usuarios publicar contidos arbitrarios.\nOlle a [http://modsecurity.org/documentation/ documentación do mod_security] ou póñase en contacto co soporte do seu servidor se atopa erros aleatorios.",
        "config-diff3-bad": "GNU diff3 non se atopou.",
        "config-git": "Atopouse o software de control da versión de Git: <code>$1</code>.",
        "config-git-bad": "Non se atopou o software de control da versión de Git.",
        "config-imagemagick": "ImageMagick atopado: <code>$1</code>.\nAs miniaturas de imaxes estarán dispoñibles se activa as cargas.",
        "config-gd": "Atopouse a biblioteca gráfica GD integrada.\nAs miniaturas de imaxes estarán dispoñibles se activa as cargas.",
        "config-no-scaling": "Non se puido atopar a biblioteca GD ou ImageMagick.\nAs miniaturas de imaxes estarán desactivadas.",
-       "config-no-uri": "'''Erro:''' Non se puido determinar o URI actual.\nInstalación abortada.",
-       "config-no-cli-uri": "'''Aviso:''' Non se especificou ningún <code>--scriptpath</code>; por defecto, usarase: <code>$1</code>.",
+       "config-no-uri": "<strong>Erro:</strong> Non se puido determinar o URI actual.\nInstalación abortada.",
+       "config-no-cli-uri": "<strong>Atención:</strong> Non se especificou ningún <code>--scriptpath</code>; por defecto, usarase: <code>$1</code>.",
        "config-using-server": "Usando o nome do servidor \"<nowiki>$1</nowiki>\".",
        "config-using-uri": "Usando o URL do servidor \"<nowiki>$1$2</nowiki>\".",
-       "config-uploads-not-safe": "'''Atención:''' O seu directorio por defecto para as cargas, <code>$1</code>, é vulnerable a execucións arbitrarias de escrituras.\nAínda que MediaWiki comproba todos os ficheiros cargados por se houbese ameazas de seguridade, é amplamente recomendable [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security pechar esta vulnerabilidade de seguridade] antes de activar as cargas.",
-       "config-no-cli-uploads-check": "'''Atención:''' Durante a instalación CLI, o seu directorio por defecto para as cargas, <code>$1</code>, non se comproba fronte a posibles vulnerabilidades de execucións arbitrarias de escrituras.",
+       "config-uploads-not-safe": "<strong>Atención:</strong> O seu directorio por defecto para as cargas, <code>$1</code>, é vulnerable a execucións arbitrarias de escrituras.\nAínda que MediaWiki comproba todos os ficheiros cargados por se houbese ameazas de seguridade, é amplamente recomendable [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security pechar esta vulnerabilidade de seguridade] antes de activar as cargas.",
+       "config-no-cli-uploads-check": "<strong>Atención:</strong> Durante a instalación CLI, o seu directorio por defecto para as cargas, <code>$1</code>, non se comproba fronte a posibles vulnerabilidades de execucións arbitrarias de escrituras.",
        "config-brokenlibxml": "O seu sistema ten unha combinación de versións de PHP e libxml2 que pode ser problemático e causar corrupción de datos en MediaWiki e outras aplicacións web.\nActualice o sistema á versión 2.7.3 ou posterior de libxml2 ([https://bugs.php.net/bug.php?id=45996 erro presentado co PHP]).\nInstalación abortada.",
        "config-suhosin-max-value-length": "Suhosin está instalado e limita o parámetro GET <code>length</code> a $1 bytes.\nO compoñente ResourceLoader (xestor de recursos) de MediaWiki traballa neste límite, pero este prexudica o rendemento.\nSe é posible, debería establecer <code>suhosin.get.max_value_length</code> no valor 1024 ou superior en <code>php.ini</code> e establecer <code>$wgResourceLoaderMaxQueryLength</code> no mesmo valor en <code>LocalSettings.php</code>.",
        "config-db-type": "Tipo de base de datos:",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 binario",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-charset-mysql4": "MySQL 4.0 retrocompatible UTF-8",
-       "config-charset-help": "'''Atención:''' Se emprega '''backwards-compatible UTF-8''' no MySQL 4.1+ e posteriormente realiza unha copia de seguridade da base de datos con <code>mysqldump</code>, pode destruír todos os caracteres que non sexan ASCII, corrompendo de xeito irreversible as súas copias!\n\nNo '''modo binario''', MediaWiki almacena texto UTF-8 na base de datos en campos binarios.\nIsto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.\nNo '''modo UTF-8''', MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,\npero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
+       "config-charset-help": "<strong>Atención:</strong> Se emprega <strong>backwards-compatible UTF-8</strong> no MySQL 4.1+ e posteriormente realiza unha copia de seguridade da base de datos con <code>mysqldump</code>, pode destruír todos os caracteres que non sexan ASCII, corrompendo de xeito irreversible as súas copias!\n\nNo <strong>modo binario</strong>, MediaWiki almacena texto UTF-8 na base de datos en campos binarios.\nIsto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.\nNo <strong>modo UTF-8</strong>, MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,\npero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
        "config-mysql-old": "Necesítase MySQL $1 ou posterior. Vostede ten a versión $2.",
        "config-db-port": "Porto da base de datos:",
        "config-db-schema": "Esquema para MediaWiki",
        "config-db-schema-help": "O normal é que este esquema sexa correcto.\nCámbieo soamente se sabe que é necesario.",
-       "config-pg-test-error": "Non se pode conectar coa base de datos '''$1''': $2",
+       "config-pg-test-error": "Non se pode conectar coa base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Directorio de datos SQLite:",
-       "config-sqlite-dir-help": "SQLite recolle todos os datos nun ficheiro único.\n\nO servidor web debe ter permisos sobre o directorio para que poida escribir nel durante a instalación.\n\nAdemais, o servidor '''non''' debe ser accesible a través da web, motivo polo que non está no mesmo lugar ca os ficheiros PHP.\n\nAsemade, o programa de instalación escribirá un ficheiro <code>.htaccess</code>, pero se erra alguén pode obter acceso á súa base de datos.\nIsto inclúe datos de usuario (enderezos de correo electrónico, contrasinais codificados), así como revisións borradas e outros datos restrinxidos no wiki.\n\nConsidere poñer a base de datos nun só lugar, por exemplo en <code>/var/lib/mediawiki/oseuwiki</code>.",
+       "config-sqlite-dir-help": "SQLite recolle todos os datos nun ficheiro único.\n\nO servidor web debe ter permisos sobre o directorio para que poida escribir nel durante a instalación.\n\nAdemais, o servidor <strong>non</strong> debe ser accesible a través da web, motivo polo que non está no mesmo lugar ca os ficheiros PHP.\n\nAsemade, o programa de instalación escribirá un ficheiro <code>.htaccess</code>, pero se erra alguén pode obter acceso á súa base de datos.\nIsto inclúe datos de usuario (enderezos de correo electrónico, contrasinais codificados), así como revisións borradas e outros datos restrinxidos no wiki.\n\nConsidere poñer a base de datos nun só lugar, por exemplo en <code>/var/lib/mediawiki/oseuwiki</code>.",
        "config-oracle-def-ts": "Espazo de táboas por defecto:",
        "config-oracle-temp-ts": "Espazo de táboas temporal:",
        "config-type-mysql": "MySQL (ou compatible)",
        "config-sqlite-readonly": "Non se pode escribir no ficheiro <code>$1</code>.",
        "config-sqlite-cant-create-db": "Non se puido crear o ficheiro da base de datos <code>$1</code>.",
        "config-sqlite-fts3-downgrade": "Falta o soporte FTS3 para o PHP; diminuíndo as táboas",
-       "config-can-upgrade": "Existen táboas MediaWiki nesta base de datos.\nPara actualizalas a MediaWiki $1, prema sobre \"'''Continuar'''\".",
-       "config-upgrade-done": "Actualización completada.\n\nAgora pode [$1 comezar a utilizar o seu wiki].\n\nSe quere rexenerar o seu ficheiro <code>LocalSettings.php</code>, prema no botón que aparece a continuación.\nIsto '''non é recomendable''' a menos que estea a ter problemas co seu wiki.",
+       "config-can-upgrade": "Existen táboas MediaWiki nesta base de datos.\nPara actualizalas a MediaWiki $1, prema sobre \"<strong>Continuar</strong>\".",
+       "config-upgrade-done": "Actualización completada.\n\nAgora pode [$1 comezar a utilizar o seu wiki].\n\nSe quere rexenerar o seu ficheiro <code>LocalSettings.php</code>, prema no botón que aparece a continuación.\nIsto <strong>non é recomendable</strong> a menos que estea a ter problemas co seu wiki.",
        "config-upgrade-done-no-regenerate": "Actualización completada.\n\nXa pode [$1 comezar a usar o seu wiki].",
        "config-regenerate": "Rexenerar LocalSettings.php →",
        "config-show-table-status": "A pescuda <code>SHOW TABLE STATUS</code> fallou!",
-       "config-unknown-collation": "'''Atención:''' A base de datos está a empregar unha clasificación alfabética irrecoñecible.",
+       "config-unknown-collation": "<strong>Atención:</strong> A base de datos está a empregar unha clasificación alfabética irrecoñecible.",
        "config-db-web-account": "Conta na base de datos para o acceso á internet",
        "config-db-web-help": "Seleccione o nome de usuario e contrasinal que o servidor web empregará para se conectar ao servidor da base de datos durante o funcionamento normal do wiki.",
        "config-db-web-account-same": "Empregar a mesma conta que para a instalación",
        "config-mysql-engine": "Motor de almacenamento:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''Atención:''' Seleccionou MyISAM como o motor de almacenamento para MySQL, unha combinación non recomendada para MediaWiki, porque:\n* practicamente non soporta os accesos simultáneos debido ao bloqueo de táboas\n* é máis propenso a corromperse ca outros motores\n* o código base de MediaWiki non sempre manexa o MyISAM como debera\n\nSe a súa instalación MySQL soporta InnoDB, recoméndase elixilo no canto de MyISAM.\nSe a súa instalación MySQL non soporta InnoDB, quizais sexa boa idea realizar unha actualización.",
-       "config-mysql-only-myisam-dep": "'''Atención:''' MyISAM é o único motor de almacenamento para MySQL nesta máquina, unha combinación non recomendada para MediaWiki, porque:\n* practicamente non soporta os accesos simultáneos debido ao bloqueo de táboas\n* é máis propenso a corromperse ca outros motores\n* o código base de MediaWiki non sempre manexa o MyISAM como debera\n\nA súa instalación MySQL non soporta InnoDB, quizais sexa boa idea realizar unha actualización.",
-       "config-mysql-engine-help": "'''InnoDB''' é case sempre a mellor opción, dado que soporta ben os accesos simultáneos.\n\n'''MyISAM''' é máis rápido en instalacións de usuario único e de só lectura.\nAs bases de datos MyISAM tenden a se corromper máis a miúdo ca as bases de datos InnoDB.",
+       "config-mysql-myisam-dep": "<strong>Atención:</strong> Seleccionou MyISAM como o motor de almacenamento para MySQL, unha combinación non recomendada para MediaWiki, porque:\n* practicamente non soporta os accesos simultáneos debido ao bloqueo de táboas\n* é máis propenso a corromperse ca outros motores\n* o código base de MediaWiki non sempre manexa o MyISAM como debera\n\nSe a súa instalación MySQL soporta InnoDB, recoméndase elixilo no canto de MyISAM.\nSe a súa instalación MySQL non soporta InnoDB, quizais sexa boa idea realizar unha actualización.",
+       "config-mysql-only-myisam-dep": "<strong>Atención:</strong> MyISAM é o único motor de almacenamento para MySQL nesta máquina, unha combinación non recomendada para MediaWiki, porque:\n* practicamente non soporta os accesos simultáneos debido ao bloqueo de táboas\n* é máis propenso a corromperse ca outros motores\n* o código base de MediaWiki non sempre manexa o MyISAM como debera\n\nA súa instalación MySQL non soporta InnoDB, quizais sexa boa idea realizar unha actualización.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> é case sempre a mellor opción, dado que soporta ben os accesos simultáneos.\n\n<strong>MyISAM</strong> é máis rápido en instalacións de usuario único e de só lectura.\nAs bases de datos MyISAM tenden a se corromper máis a miúdo ca as bases de datos InnoDB.",
        "config-mysql-charset": "Conxunto de caracteres da base de datos:",
        "config-mysql-binary": "Binario",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "No '''modo binario''', MediaWiki almacena texto UTF-8 na base de datos en campos binarios.\nIsto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.\n\nNo '''modo UTF-8''', MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,\npero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
+       "config-mysql-charset-help": "No <strong>modo binario</strong>, MediaWiki almacena texto UTF-8 na base de datos en campos binarios.\nIsto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.\n\nNo <strong>modo UTF-8</strong>, MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,\npero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
        "config-mssql-auth": "Tipo de autenticación:",
        "config-mssql-install-auth": "Seleccione o tipo de autenticación que se utilizará para conectarse á base de datos durante o proceso de instalación.\nSe selecciona \"{{int:config-mssql-windowsauth}}\", usaranse as credenciais do usuario co que se está a executar o servidor web.",
        "config-mssql-web-auth": "Seleccione o tipo de autenticación que utilizará o servidor web para conectarse ao servidor da base de datos durante o funcionamiento normal do wiki.\nSe selecciona \"{{int:config-mssql-windowsauth}}\", usaranse as credenciais do usuario co que se está a executar o servidor web.",
        "config-ns-site-name": "O mesmo nome que o wiki: $1",
        "config-ns-other": "Outro (especificar)",
        "config-ns-other-default": "OMeuWiki",
-       "config-project-namespace-help": "Seguindo o exemplo da Wikipedia, moitos wikis manteñen as súas páxinas de políticas separadas das súas páxinas de contido, nun \"'''espazo de nomes do proxecto'''\".\nTodos os títulos presentes neste espazo de nomes comezan cun prefixo determinado, que pode especificar aquí.\nTradicionalmente, este prefixo deriva do nome do wiki, pero non pode conter caracteres de puntuación como \"#\" ou \":\".",
+       "config-project-namespace-help": "Seguindo o exemplo da Wikipedia, moitos wikis manteñen as súas páxinas de políticas separadas das súas páxinas de contido, nun \"'''espazo de nomes do proxecto'''\".\nTodos os títulos presentes neste espazo de nomes comezan cun prefixo determinado, que pode especificar aquí.\nNormalmente, este prefixo deriva do nome do wiki, pero non pode conter caracteres de puntuación como \"#\" ou \":\".",
        "config-ns-invalid": "O espazo de nomes especificado, \"<nowiki>$1</nowiki>\", é incorrecto.\nEspecifique un espazo de nomes do proxecto diferente.",
        "config-ns-conflict": "O espazo de nomes especificado, \"<nowiki>$1</nowiki>\", entra en conflito co espazo de nomes MediaWiki por defecto.\nEspecifique un espazo de nomes do proxecto diferente.",
        "config-admin-box": "Conta de administrador",
        "config-profile-no-anon": "Necesítase a creación dunha conta",
        "config-profile-fishbowl": "Só os editores autorizados",
        "config-profile-private": "Wiki privado",
-       "config-profile-help": "Os wikis funcionan mellor canta máis xente os edite.\nEn MediaWiki, é doado revisar os cambios recentes e reverter calquera dano feito por usuarios novatos ou con malas intencións.\nPorén, moita xente atopa MediaWiki útil nunha ampla variedade de papeis, e ás veces non é fácil convencer a todos dos beneficios que leva consigo o estilo wiki.\nVostede decide.\n\nO modelo '''{{int:config-profile-wiki}}''' permite a edición por parte de calquera, mesmo sen rexistro.\nA opción '''{{int:config-profile-no-anon}}''' proporciona un control maior, pero pode desalentar os colaboradores casuais.\n\nO escenario '''{{int:config-profile-fishbowl}}''' restrinxe a edición aos usuarios aprobados, pero o público pode ollar as páxinas, incluíndo os historiais.\nO tipo '''{{int:config-profile-private}}''' só deixa que os usuarios aprobados vexan e editen as páxinas.\n\nHai dispoñibles configuracións de dereitos de usuario máis complexas despois da instalación; bótelle un ollo a [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights esta entrada no manual].",
+       "config-profile-help": "Os wikis funcionan mellor canta máis xente os edite.\nEn MediaWiki, é doado revisar os cambios recentes e reverter calquera dano feito por usuarios novatos ou con malas intencións.\nPorén, moita xente atopa MediaWiki útil nunha ampla variedade de papeis, e ás veces non é fácil convencer a todos dos beneficios que leva consigo o estilo wiki.\nVostede decide.\n\nO modelo <strong>{{int:config-profile-wiki}}</strong> permite a edición por parte de calquera, mesmo sen rexistro.\nA opción <strong>{{int:config-profile-no-anon}}</strong> proporciona un control maior, pero pode desalentar os colaboradores casuais.\n\nO escenario <strong>{{int:config-profile-fishbowl}}</strong> restrinxe a edición aos usuarios aprobados, pero o público pode ollar as páxinas, incluíndo os historiais.\nO tipo <strong>{{int:config-profile-private}}</strong> só deixa que os usuarios aprobados vexan e editen as páxinas.\n\nHai dispoñibles configuracións de dereitos de usuario máis complexas despois da instalación; bótelle un ollo a [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights esta entrada no manual].",
        "config-license": "Dereitos de autoría e licenza:",
        "config-license-none": "Sen licenza ao pé",
        "config-license-cc-by-sa": "Creative Commons recoñecemento compartir igual",
        "config-license-gfdl": "Licenza de documentación libre de GNU 1.3 ou posterior",
        "config-license-pd": "Dominio público",
        "config-license-cc-choose": "Seleccione unha licenza Creative Commons personalizada",
-       "config-license-help": "Moitos wikis públicos liberan todas as súas contribucións baixo unha [http://freedomdefined.org/Definition/Gl licenza libre].\nIsto axuda a crear un sentido de propiedade comunitaria e anima a seguir contribuíndo durante moito tempo.\nXeralmente, non é necesario nos wikis privados ou de empresas.\n\nSe quere poder empregar textos da Wikipedia, así como que a Wikipedia poida aceptar textos copiados do seu wiki, escolla a licenza '''Creative Commons recoñecemento compartir igual'''.\n\nA licenza de documentación libre de GNU era a licenza anterior da Wikipedia.\nMalia aínda ser unha licenza válida, é difícil de entender.\nTamén é difícil reusar contidos baixo esta licenza.",
+       "config-license-help": "Moitos wikis públicos liberan todas as súas contribucións baixo unha [http://freedomdefined.org/Definition/Gl licenza libre].\nIsto axuda a crear un sentido de propiedade comunitaria e anima a seguir contribuíndo durante moito tempo.\nXeralmente, non é necesario nos wikis privados ou de empresas.\n\nSe quere poder empregar textos da Wikipedia, así como que a Wikipedia poida aceptar textos copiados do seu wiki, escolla a licenza <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nA licenza de documentación libre de GNU era a licenza anterior da Wikipedia.\nMalia aínda ser unha licenza válida, é difícil de entender.\nTamén é difícil reusar contidos baixo esta licenza.",
        "config-email-settings": "Configuración do correo electrónico",
        "config-enable-email": "Activar os correos electrónicos de saída",
        "config-enable-email-help": "Se quere que o correo electrónico funcione, cómpre configurar os [http://www.php.net/manual/en/mail.configuration.php parámetros PHP] correctamente.\nSe non quere ningunha característica no correo, pode desactivalas aquí.",
        "config-email-watchlist": "Activar a notificación da lista de vixilancia",
        "config-email-watchlist-help": "Permitir que os usuarios reciban notificacións sobre modificacións nas páxinas que vixían, se o teñen activado nas súas preferencias.",
        "config-email-auth": "Activar a autenticación do correo electrónico",
-       "config-email-auth-help": "Se esta opción está activada, os usuarios teñen que confirmar o seu correo electrónico mediante unha ligazón enviada ao enderezo cando o definan ou o cambien.\nSó os enderezos autenticados poden recibir correos doutros usuarios ou de notificación.\nÉ '''recomendable''' establecer esta opción nos wikis públicos para evitar abusos potenciais das características do correo.",
+       "config-email-auth-help": "Se esta opción está activada, os usuarios teñen que confirmar o seu correo electrónico mediante unha ligazón enviada ao enderezo cando o definan ou o cambien.\nSó os enderezos autenticados poden recibir correos doutros usuarios ou de notificación.\nÉ <strong>recomendable</strong> establecer esta opción nos wikis públicos para evitar abusos potenciais das características do correo.",
        "config-email-sender": "Enderezo de correo electrónico de retorno:",
        "config-email-sender-help": "Introduza o enderezo de correo electrónico a usar como enderezo de retorno dos correos de saída.\nAquí é onde irán parar os correos rexeitados.\nMoitos servidores de correo electrónico esixen que polo menos a parte do nome de dominio sexa válido.",
        "config-upload-settings": "Imaxes e carga de ficheiros",
        "config-memcache-badport": "Os números de porto Memcached deben estar entre $1 e $2.",
        "config-extensions": "Extensións",
        "config-extensions-help": "As extensións anteriores detectáronse no seu directorio <code>./extensions</code>.\n\nQuizais necesite algunha configuración adicional, pero pode activalas agora",
-       "config-install-alreadydone": "'''Atención:''' Semella que xa instalou MediaWiki e que o está a instalar de novo.\nVaia ata a seguinte páxina.",
+       "config-skins": "Aparencias",
+       "config-skins-help": "As aparencias listadas enriba detectáronse no seu directorio <code>./skins</code>. Debe activar, polo menos, unha e elixir a predeterminada.",
+       "config-skins-use-as-default": "Utilizar esta aparencia por defecto",
+       "config-skins-missing": "Non se atopou aparencia ningunha. MediaWiki ha utilizar unha aparencia de respaldo ata que vostede instale algunha aparencia axeitada.",
+       "config-skins-must-enable-some": "Debe elixir, polo menos, unha aparencia para activala.",
+       "config-skins-must-enable-default": "A aparencia elixida como predeterminada debe estar activada.",
+       "config-install-alreadydone": "<strong>Atención:</strong> Semella que xa instalou MediaWiki e que o está a instalar de novo.\nVaia ata a seguinte páxina.",
        "config-install-begin": "Ao premer en \"{{int:config-continue}}\", comezará a instalación de MediaWiki.\nSe aínda quere facer algún cambio, prema en \"{{int:config-back}}\".",
        "config-install-step-done": "feito",
        "config-install-step-failed": "erro",
        "config-install-user-missing": "O usuario especificado, \"$1\", non existe.",
        "config-install-user-missing-create": "O usuario especificado, \"$1\", non existe.\nPrema na caixa de verificación \"crear unha conta\" que hai a continuación se quere crear unha.",
        "config-install-tables": "Creando as táboas",
-       "config-install-tables-exist": "'''Atención:''' Semella que as táboas de MediaWiki xa existen.\nSaltando a creación.",
-       "config-install-tables-failed": "'''Erro:''' Fallou a creación da táboa. Descrición do erro: $1",
+       "config-install-tables-exist": "<strong>Atención:</strong> Semella que as táboas de MediaWiki xa existen.\nSaltando a creación.",
+       "config-install-tables-failed": "<strong>Erro:</strong> Fallou a creación da táboa. Descrición do erro: $1",
        "config-install-interwiki": "Enchendo a táboa de interwiki por defecto",
        "config-install-interwiki-list": "Non se puido atopar o ficheiro <code>interwiki.list</code>.",
-       "config-install-interwiki-exists": "'''Atención:''' Semella que a táboa de interwiki xa contén entradas.\nSaltando a lista por defecto.",
+       "config-install-interwiki-exists": "<strong>Atención:</strong> Semella que a táboa de interwiki xa contén entradas.\nSaltando a lista por defecto.",
        "config-install-stats": "Iniciando as estatísticas",
        "config-install-keys": "Xerando as claves secretas",
-       "config-insecure-keys": "'''Atención:''' {{PLURAL:$2|A clave de seguridade|As claves de seguridade}} ($1) {{PLURAL:$2|xerada|xeradas}} durante a instalación non {{PLURAL:$2|é|son}} completamente {{PLURAL:$2|segura|seguras}}. Considere a posibilidade de {{PLURAL:$2|cambiala|cambialas}} manualmente.",
+       "config-insecure-keys": "<strong>Atención:</strong> {{PLURAL:$2|A clave de seguridade|As claves de seguridade}} ($1) {{PLURAL:$2|xerada|xeradas}} durante a instalación non {{PLURAL:$2|é|son}} completamente {{PLURAL:$2|segura|seguras}}. Considere a posibilidade de {{PLURAL:$2|cambiala|cambialas}} manualmente.",
        "config-install-sysop": "Creando a conta de usuario de administrador",
        "config-install-subscribe-fail": "Non se puido subscribir á lista mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL non está instalado e <code>allow_url_fopen</code> non está dispoñible.",
        "config-install-mainpage": "Creando a páxina principal co contido por defecto",
        "config-install-extension-tables": "Creando as táboas para as extensións activadas",
        "config-install-mainpage-failed": "Non se puido inserir a páxina principal: $1",
-       "config-install-done": "'''Parabéns!'''\nInstalou correctamente MediaWiki.\n\nO programa de instalación xerou un ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contén toda a súa configuración.\n\nTerá que descargalo e poñelo na base da instalación do seu wiki (no mesmo directorio ca index.php). A descarga debería comezar automaticamente.\n\nSe non comezou a descarga ou se a cancelou, pode facer que comece de novo premendo na ligazón que aparece a continuación:\n\n$3\n\n'''Nota:''' Se non fai iso agora, este ficheiro de configuración xerado non estará dispoñible máis adiante se sae da instalación sen descargalo.\n\nCando faga todo isto, xa poderá '''[$2 entrar no seu wiki]'''.",
+       "config-install-done": "<strong>Parabéns!</strong>\nInstalou correctamente MediaWiki.\n\nO programa de instalación xerou un ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contén toda a súa configuración.\n\nTerá que descargalo e poñelo na base da instalación do seu wiki (no mesmo directorio ca index.php). A descarga debería comezar automaticamente.\n\nSe non comezou a descarga ou se a cancelou, pode facer que comece de novo premendo na ligazón que aparece a continuación:\n\n$3\n\n<strong>Nota:</strong> Se non fai iso agora, este ficheiro de configuración xerado non estará dispoñible máis adiante se sae da instalación sen descargalo.\n\nCando faga todo isto, xa poderá <strong>[$2 entrar no seu wiki]</strong>.",
        "config-download-localsettings": "Descargar o <code>LocalSettings.php</code>",
        "config-help": "axuda",
        "config-help-tooltip": "prema para expandir",
        "config-nofile": "Non se puido atopar o ficheiro \"$1\". Se cadra, foi borrado.",
        "config-extension-link": "Sabía que o seu wiki soporta [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensións]?\n\nPode explorar as [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensións por categoría] ou a [//www.mediawiki.org/wiki/Extension_Matrix matriz de extensións] para ollar a lista completa de extensións.",
-       "mainpagetext": "'''MediaWiki instalouse correctamente.'''",
+       "mainpagetext": "<strong>MediaWiki instalouse correctamente.</strong>",
        "mainpagedocfooter": "Consulte a [//meta.wikimedia.org/wiki/Help:Contents guía de usuario] para obter máis información sobre como usar o software wiki.\n\n== Primeiros pasos ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista das opcións de configuración]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas máis frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo dos lanzamentos de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localice MediaWiki á súa lingua]"
 }
index 57e3c94..dd14e63 100644 (file)
@@ -51,6 +51,7 @@
        "config-env-good": "הסביבה שלכם נבדקה.\nאפשר להתקין מדיה־ויקי.",
        "config-env-bad": "הסביבה שלכם נבדקה.\nאי־אפשר להתקין מדיה־ויקי.",
        "config-env-php": "מותקנת <span dir=\"ltr\">PHP $1</span>.",
+       "config-env-hhvm": "מותקנת <span dir=\"ltr\">HHVM $1</span>.",
        "config-unicode-using-utf8": "משתמש ב־utf8_normalize.so של בריון ויבר לנרמול יוניקוד.",
        "config-unicode-using-intl": "משתמש ב[http://pecl.php.net/intl הרחבת intl PECL] לנרמול יוניקוד.",
        "config-unicode-pure-php-warning": "'''אזהרה''': [http://pecl.php.net/intl הרחבת intl PECL] אינה זמינה לטיפול בנרמול יוניקוד. משתמש ביישום PHP טהור ואטי יותר.\nאם זהו אתר בעל תעבורה גבוהה, כדאי לקרוא את המסמך הבא: [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode normalization].",
        "config-install-stats": "אתחול סטטיסטיקות",
        "config-install-keys": "יצירת מפתחות סודיים",
        "config-insecure-keys": "'''אזהרה''': {{PLURAL:$2|מפתח|מפתחות}} אבטחה ($1) {{PLURAL:$2|שנוצר|שנוצרו}} במהלך ההתקנה {{PLURAL:$2|אינו בטוח|אינם בטוחים}} מספיק. מומלץ לשקול לשנות {{PLURAL:$2|אותו|אותם}} ידנית.",
+       "config-install-updates": "למנוע הרצת עדכונים מיותרים",
+       "config-install-updates-failed": "<strong>שגיאה:</strong> הוספת מפתחות עדכון לטבלאות נכשל עם השגיאה הבאה: $1",
        "config-install-sysop": "יצירת חשבון מפעיל",
        "config-install-subscribe-fail": "הרישום ל־mediawiki-announce לא הצליח: $1",
        "config-install-subscribe-notpossible": "cURL אינה מותקנת ו־<code>allow_url_fopen</code> אינה זמינה.",
index b2221a5..bc828a5 100644 (file)
        "config-extensions-help": "위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.\n\n추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.",
        "config-skins": "스킨",
        "config-skins-use-as-default": "이 스킨을 기본값으로 사용",
+       "config-skins-must-enable-some": "적어도 활성화활 스킨 하나를 선택해야 합니다.",
+       "config-skins-must-enable-default": "기본값으로 설정한 스킨은 반드시 활성화해야 합니다.",
        "config-install-alreadydone": "'''경고:''' 이미 미디어위키를 설치했고 다시 설치하려고 합니다.\n다음 페이지로 진행하세요.",
        "config-install-begin": "\"{{int:config-continue}}\"을 누르면 미디어위키의 설치를 시작합니다.\n그래도 바꾸는 것을 원한다면 \"{{int:config-back}}\"를 누르세요.",
        "config-install-step-done": "완료",
index 9941442..030e0c1 100644 (file)
        "config-missing-db-name": "Dir musst e Wäert fir \"{{int:config-db-name}}\" aginn",
        "config-missing-db-host": "Dir musst e Wäert fir \"{{int:config-db-host}}\" aginn.",
        "config-missing-db-server-oracle": "Dir musst e Wäert fir \"{{int:config-db-host-oracle}}\" aginn",
+       "config-connection-error": "$1.\n\nKuckt den Numm vum Server, de Benotzernumm an d'Passwuert no a probéiert et nach eng Kéier.",
        "config-db-sys-user-exists-oracle": "De Benotzerkont \"$1\" gëtt et schonn. SYSDBA kann nëmme benotzt gi fir en neie Benotzerkont opzemaachen.",
        "config-postgres-old": "PostgreSQL $1 oder eng méi nei Versioun gëtt gebraucht, Dir hutt $2.",
        "config-mssql-old": "Microsoft SQL Server $1 oder eng méi rezent Versioun gëtt gebraucht. Dir hutt d'Versioun $2.",
index 4b0c692..190ee04 100644 (file)
@@ -1,5 +1,10 @@
 {
-       "@metadata": [],
+       "@metadata": {
+               "authors": [
+                       "Jason924tw"
+               ]
+       },
+       "config-information": "文訊",
        "mainpagetext": "'''共筆臺已立'''",
        "mainpagedocfooter": "欲識維基,見[//meta.wikimedia.org/wiki/Help:Contents User's Guide]\n\n== 始 ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]"
 }
index 74359b2..8784521 100644 (file)
@@ -47,6 +47,7 @@
        "config-env-good": "Околината е проверена.\nМожете да го воспоставите МедијаВики.",
        "config-env-bad": "Околината е проверена.\nНе можете да го воспоставите МедијаВики.",
        "config-env-php": "PHP $1 е воспоставен.",
+       "config-env-hhvm": "HHVM $1 е воспоставен.",
        "config-unicode-using-utf8": "Со utf8_normalize.so за уникодна нормализација од Брајон Вибер (Brion Vibber).",
        "config-unicode-using-intl": "Со додатокот [http://pecl.php.net/intl intl PECL] за уникодна нормализација.",
        "config-unicode-pure-php-warning": "'''Предупредување''': Додатокот [http://pecl.php.net/intl intl PECL] не е достапен за врши уникодна нормализација, враќајќи се на бавна примена на чист PHP.\n\nАко имате високопрометно мрежно место, тогаш ќе треба да прочитате повеќе за [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations уникодната нормализација].",
        "config-install-stats": "Ги подготвувам статистиките",
        "config-install-keys": "Создавање на тајни клучеви",
        "config-insecure-keys": "'''Предупредување:''' {{PLURAL:$2|Безбедносниот клуч $1 создаден во текот на воспоставката не е сосем безбеден|Безбедносните клучеви $1 создадени во текот на воспоставката не се сосем безбедни}}. Ви препорачуваме да {{PLURAL:$2|го|ги}} смените рачно.",
+       "config-install-updates": "Спречи вршење на непотребни поднови",
+       "config-install-updates-failed": "<strong>Грешка:</strong> Вметнувањето на подновни клучеви во табелите не успеа, со следнава грешка: $1",
        "config-install-sysop": "Создавање на администраторска корисничка сметка",
        "config-install-subscribe-fail": "Не можам да ве претплатам на известувањето mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL не е воспоставен, а <code>allow_url_fopen</code> не е достапно.",
index 2f2825d..f9bcb91 100644 (file)
@@ -4,11 +4,12 @@
                        "Anakmalaysia",
                        "Pizza1016",
                        "SNN95",
-                       "MaxSem"
+                       "MaxSem",
+                       "Aviator"
                ]
        },
        "config-desc": "Pemasang MediaWiki",
-       "config-title": "Pasangan MediaWiki $1",
+       "config-title": "Pemasangan MediaWiki $1",
        "config-information": "Maklumat",
        "config-localsettings-upgrade": "Fail <code>LocalSettings.php</code> telah dikesan.\nUntuk menaik taraf pemasangan, sila masukkan nilai <code>$wgUpgradeKey</code> dalam kotak di bawah.\nAnda akan menjumpainya di <code>LocalSettings.php</code> .",
        "config-localsettings-cli-upgrade": "Fail <code>LocalSettings.php</code> telah dikesan.\nUntuk menaik taraf pemasangan, sila jalankan <code>update.php</code> sebaliknya",
@@ -45,7 +46,7 @@
        "config-restart": "Ya, mula semula",
        "config-welcome": "=== Pemeriksaan persekitaran ===\nPemeriksaan asas kini boleh dilakukan untuk melihat jika persekitaran ini adalah sesuai untuk pemasangan MediaWiki.\nIngat untuk memasukkan maklumat ini jika anda mahukan sokongan tentang bagaimana untuk menyelesaikan pemasangan.",
        "config-copyright": "=== Hakcipta dan Syarat-Syarat ===\n\n$1\n\nProgram ini merupakan perisian bebas; anda boleh mengedarkannya semula dan/atau mengubahsuainya di bawah syarat-syarat Lesen Awam GNU seperti yang diterbitkan oleh Yayasan Perisian Bebas; sama ada versi 2 Lesen ini atau (mengikut pilihan anda) mana-mana versi selepas ini.\n\nProgram ini diedarkan dengan harapan bahawa ia akan menjadi berguna, tetapi '''tanpa sebarang waranti'''; tanpa jaminan yang tersirat '''kebolehdagangan''' atau '''kesesuaian untuk tujuan tertentu'''.\nLihat Lesen Awam GNU untuk maklumat lanjut.\n\nAnda sepatutnya telah menerima <doclink href=Copying> satu salinan Lesen Awam GNU </doclink> bersama-sama dengan program ini, jika tidak, menulis surat kepada Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, atau [http://www.gnu.org/copyleft/gpl.html membacanya dalam talian].",
-       "config-sidebar": "* [//www.mediawiki.org Laman utama MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Panduan Pengguna]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Panduan Pentadbir]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Soalan lazim]\n----\n* <doclink href=Readme>Baca saya</doclink>\n* <doclink href=ReleaseNotes>Nota keluaran</doclink>\n* <doclink href=Copying>Menyalin</doclink>\n* <doclink href=UpgradeDoc>Menaik taraf</doclink>",
+       "config-sidebar": "* [//www.mediawiki.org Laman utama MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Panduan Pengguna]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Panduan Penyelia]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Soalan lazim]\n----\n* <doclink href=Readme>Baca saya</doclink>\n* <doclink href=ReleaseNotes>Nota keluaran</doclink>\n* <doclink href=Copying>Menyalin</doclink>\n* <doclink href=UpgradeDoc>Menaik taraf</doclink>",
        "config-env-good": "Persekitaran telah diperiksa.\nAnda boleh memasang MediaWiki.",
        "config-env-bad": "Persekitaran telah diperiksa. \nAnda tidak boleh memasang MediaWiki.",
        "config-env-php": "PHP $1 dipasang.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] dipasang",
        "config-apc": "[http://www.php.net/apc APC] dipasang",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] dipasang",
+       "config-diff3-bad": "GNU diff3 tidak dijumpai.",
+       "config-git": "Perisian kawalan versi Git dijumpai: <code>$1</code>.",
+       "config-git-bad": "Perisian kawalan versi Git tidak dijumpai.",
        "config-no-cli-uri": "<strong>Amaran:</strong> Tiada <code>--scriptpath</code> dinyatakan, maka digunakannya yang asali: <code>$1</code>.",
        "config-using-server": "Sedang menggunakan nama pelayan \"<nowiki>$1</nowiki>\".",
        "config-using-uri": "Sedang menggunakan URL pelayan \"<nowiki>$1$2</nowiki>\".",
        "config-no-cli-uploads-check": "<strong>Amaran:</strong> Direktori asali anda untuk muat naikan (<code>$1</code>) belum diperiksa untuk kerentanan\nkepada pelaksanaan skrip yang menyeleweng sewaktu pemasangan CLI.",
+       "config-db-type": "Jenis pangkalan data:",
+       "config-db-host": "Hos pangkalan data:",
+       "config-db-host-oracle": "TNS pangkalan data:",
+       "config-db-name": "Nama pangkalan data:",
+       "config-db-name-oracle": "Skema pangkalan data:",
+       "config-db-username": "Nama pengguna pangkalan data:",
+       "config-db-password": "Kata laluan pangkalan data:",
+       "config-db-prefix": "Awalan jadual pangkalan data:",
        "config-db-charset": "Peranggu aksara pangkalan data",
+       "config-charset-mysql5-binary": "MySQL 4.1/5.0 dedua",
+       "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-db-port": "Port pangkalan data:",
+       "config-db-schema": "Skema untuk MediaWiki:",
        "config-pg-test-error": "Tidak boleh bersambung dengan pangkalan data <strong>$1</strong>: $2",
+       "config-sqlite-dir": "Direktori data SQLite:",
+       "config-oracle-def-ts": "Ruang jadual lalai:",
+       "config-oracle-temp-ts": "Ruang jadual sementara:",
+       "config-type-mysql": "MySQL (atau yang serasi)",
        "config-header-mysql": "Keutamaan MySQL",
        "config-header-postgres": "Keutamaan PostgreSQL",
        "config-header-sqlite": "Keutamaan SQLite",
        "config-header-oracle": "Keutamaan Oracle",
+       "config-header-mssql": "Tetapan Microsoft SQL Server",
        "config-invalid-db-type": "Jenis pangkalan data tidak sah",
        "config-can-upgrade": "Terdapat jadual MediaWiki dalam pangkalan data ini. Untuk menaik tarafnya kepada MediaWiki $1, klik <strong>Teruskan</strong>.",
        "config-unknown-collation": "<strong>Amaran:</strong> Pangkalan data sedang menggunakan kolasi yang tidak dikenali.",
        "config-ns-other": "Lain-lain (nyatakan)",
        "config-ns-other-default": "MyWiki",
        "config-admin-box": "Akaun penyelia",
-       "config-admin-name": "Nama kamu:",
+       "config-admin-name": "Nama pengguna anda:",
        "config-admin-password": "Kata laluan:",
        "config-admin-password-confirm": "Kata laluan lagi:",
+       "config-admin-name-blank": "Masukkan nama pengguna pentadbir.",
        "config-admin-password-mismatch": "Kata-kata laluan yang kamu berikan tidak sepadan.",
        "config-admin-email": "Alamat e-mel:",
        "config-admin-error-bademail": "Kamu telah memberikan alamat e-mel yang tidak betul.",
        "config-optional-skip": "Saya sudah bosan, pasangkanlah wiki sahaja.",
+       "config-profile-wiki": "Wiki terbuka",
+       "config-profile-no-anon": "Pembukaan akaun diwajibkan",
+       "config-profile-private": "Wiki tertutup",
        "config-license": "Hak cipta dan lesen:",
        "config-license-none": "Tiada pengaki lesen",
        "config-license-cc-by-sa": "Creative Commons Attribution Share Alike",
        "config-install-step-done": "siap",
        "config-install-step-failed": "gagal",
        "config-install-user-alreadyexists": "Pengguna \"$1\" sudah wujud",
+       "config-install-tables": "Mencipta jadual",
        "config-install-tables-exist": "<strong>Amaran:</strong> Nampaknya sudah terdapat jadual MediaWiki. Penciptaan dilangkau.",
+       "config-install-interwiki": "Mengisi jadual antara wiki lalai",
+       "config-install-interwiki-list": "Fail <code>interwiki.list</code> tidak dapat dibaca.",
        "config-install-interwiki-exists": "<strong>Amaran:</strong> Jadual antara wiki nampaknya sudah ada entri. Senarai asali dilangkau.",
+       "config-install-keys": "Menjana kunci-kunci rahsia",
        "config-insecure-keys": "<strong>Amaran:</strong> {{PLURAL:$2|Kunci keselamatan|Kunci-kunci keselamatan}} ($1) yang dihasilkan sewaktu pemasangan itu {{PLURAL:$2|adalah}} tidak selamat sepenuhnya. Oleh itu, {{PLURAL:$2|ia}} wajar ditukar secara manual.",
+       "config-install-sysop": "Membuka akaun pengguna pentadbir",
+       "config-install-mainpage": "Mewujudkan laman utama dengan kandungan lalai",
        "config-help": "bantuan",
        "mainpagetext": "'''MediaWiki telah berjaya dipasang.'''",
        "mainpagedocfooter": "Sila rujuk [//meta.wikimedia.org/wiki/Help:Contents Panduan Penggunaan] untuk maklumat mengenai penggunaan perisian wiki ini.\n\n== Permulaan ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Senarai tetapan konfigurasi]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Soalan Lazim MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai surat keluaran MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Terjemahkan MediaWiki ke dalam bahasa anda]"
index 14321ff..5bf1645 100644 (file)
@@ -12,7 +12,8 @@
                        "JurgenNL",
                        "Southparkfan",
                        "Seb35",
-                       "Mar(c)"
+                       "Mar(c)",
+                       "Sjoerddebruin"
                ]
        },
        "config-desc": "Het installatieprogramma voor MediaWiki",
@@ -57,7 +58,6 @@
        "config-env-good": "De omgeving is gecontroleerd.\nU kunt MediaWiki installeren.",
        "config-env-bad": "De omgeving is gecontroleerd.\nU kunt MediaWiki niet installeren.",
        "config-env-php": "PHP $1 is op dit moment geïnstalleerd.",
-       "config-env-php-toolow": "PHP $1 is geïnstalleerd.\nMediaWiki heeft PHP $2 of hoger nodig om correct te kunnen werken.",
        "config-unicode-using-utf8": "Voor Unicode-normalisatie wordt utf8_normalize.so van Brion Vibber gebruikt.",
        "config-unicode-using-intl": "Voor Unicode-normalisatie wordt de [http://pecl.php.net/intl PECL-extensie intl] gebruikt.",
        "config-unicode-pure-php-warning": "'''Waarschuwing''': de [http://pecl.php.net/intl PECL-extensie intl] is niet beschikbaar om de Unicodenormalisatie af te handelen en daarom wordt de langzame PHP-implementatie gebruikt.\nAls u MediaWiki voor een website met veel verkeer installeert, lees u dan in over [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicodenormalisatie].",
@@ -65,7 +65,6 @@
        "config-no-db": "Het was niet mogelijk een geschikte databasedriver te vinden voor PHP. U moet een databasedriver installeren voor PHP.\nDe volgende databases worden ondersteund: $1.\n\nAls u een gedeelde omgeving gebruikt, vraag dan aan uw hostingprovider een geschikte databasedriver te installeren.\nAls u PHP zelf hebt gecompileerd, wijzig dan uw instellingen zodat een databasedriver wordt geactiveerd, bijvoorbeeld via <code>./configure --with-mysql</code>.\nAls u PHP hebt geïnstalleerd via een Debian- of Ubuntu-package, installeer dan ook de module php5-mysql.",
        "config-outdated-sqlite": "''' Waarschuwing:''' u gebruikt SQLite $1. SQLite is niet beschikbaar omdat de minimaal vereiste versie $2 is.",
        "config-no-fts3": "'''Waarschuwing''': SQLite is gecompileerd zonder de module [//sqlite.org/fts3.html FTS3]; zoekfuncties zijn niet beschikbaar.",
-       "config-register-globals": "'''Waarschuwing: de PHP-optie <code>[http://php.net/register_globals register_globals]</code> is ingeschakeld.'''\n'''Schakel deze uit als dat mogelijk is.'''\nMediaWiki kan ermee werken, maar uw server is dan  kwetsbaarder voor eventuele beveiligingslekken.",
        "config-magic-quotes-runtime": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is actief!'''\nDeze instelling zorgt voor onvoorspelbare gegevenscorruptie.\nU kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
        "config-magic-quotes-sybase": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase] is actief!'''\nDeze instelling zorgt voor onvoorspelbare gegevenscorruptie.\nU kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
        "config-mbstring": "'''Onherstelbare fout: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is actief!'''\nDeze instelling zorgt voor onvoorspelbare gegevenscorruptie.\nU kunt MediaWiki niet installeren tenzij deze instelling is uitgeschakeld.",
        "config-memcache-badport": "Poortnummers voor Memcached moeten tussen $1 en $2 liggen.",
        "config-extensions": "Uitbreidingen",
        "config-extensions-help": "De bovenstaande uitbreidingen zijn aangetroffen in de map <code>./extensions</code>.\n\nMogelijk moet u aanvullende instellingen maken, maar u kunt deze uitbreidingen nu inschakelen.",
+       "config-skins": "Vormgevingen",
+       "config-skins-use-as-default": "Als standaard vormgeving instellen",
        "config-install-alreadydone": "'''Waarschuwing:''' het lijkt alsof u MediaWiki al hebt geïnstalleerd en probeert het programma opnieuw te installeren.\nGa door naar de volgende pagina.",
        "config-install-begin": "Als u nu op \"{{int:config-continue}}\" klikt, begint de installatie van MediaWiki.\nAls u nog wijzigingen wilt maken, klik dan op \"{{int:config-back}}\".",
        "config-install-step-done": "afgerond",
diff --git a/includes/installer/i18n/no.json b/includes/installer/i18n/no.json
deleted file mode 100644 (file)
index a8c9833..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "@metadata": [],
-    "mainpagetext": "'''MediaWiki-programvaren er nå installert.'''"
-}
index fb88379..c129ab9 100644 (file)
@@ -1,4 +1,13 @@
 {
-       "@metadata": [],
+       "@metadata": {
+               "authors": [
+                       "Aalam"
+               ]
+       },
+       "config-information": "ਜਾਣਕਾਰੀ",
+       "config-your-language": "ਤੁਹਾਡੀ ਭਾਸ਼ਾ:",
+       "config-back": "← ਪਿੱਛੇ",
+       "config-continue": "ਜਾਰੀ ਰੱਖੋ →",
+       "config-page-language": "ਭਾਸ਼ਾ",
        "mainpagetext": "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰ੍ਹਾਂ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''"
 }
index a827fac..835cf9b 100644 (file)
@@ -59,6 +59,7 @@
        "config-env-good": "O ambiente foi verificado.\nPode instalar o MediaWiki.",
        "config-env-bad": "O ambiente foi verificado.\nNão pode instalar o MediaWiki.",
        "config-env-php": "O PHP $1 está instalado.",
+       "config-env-hhvm": "HHVM $1 está instalado.",
        "config-unicode-using-utf8": "A usar o utf8_normalize.so, por Brion Vibber, para a normalização Unicode.",
        "config-unicode-using-intl": "A usar a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.",
        "config-unicode-pure-php-warning": "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.\nSe o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/pt normalização Unicode].",
index 8d9aac2..c879843 100644 (file)
@@ -62,6 +62,7 @@
        "config-env-good": "See also:\n* {{msg-mw|Config-env-bad}}",
        "config-env-bad": "See also:\n* {{msg-mw|Config-env-good}}",
        "config-env-php": "Parameters:\n* $1 - the version of PHP that has been installed\nSee also:\n* {{msg-mw|config-env-php-toolow}}",
+       "config-env-hhvm": "Parameters:\n* $1 - the version of HHVM that has been installed",
        "config-unicode-using-utf8": "Status message in the MediaWiki installer environment checks.",
        "config-unicode-using-intl": "Status message in the MediaWiki installer environment checks.",
        "config-unicode-pure-php-warning": "PECL is the name of a group producing standard pieces of software for PHP, and intl is the name of their library handling some aspects of internationalization.",
        "config-install-step-done": "{{Identical|Done}}",
        "config-install-step-failed": "{{Identical|Failed}}",
        "config-install-extensions": "Notice shown to the user during the install about progress when extensions are being installed.",
-       "config-install-database": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
+       "config-install-database": "Message indicates the database is being set up\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-updates}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-schema": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-pg-schema-not-exist": "Error message shown to users picking PostgreSQL.",
        "config-install-pg-schema-failed": "Parameters:\n* $1 = database user name (usernames in the database are unrelated to wiki user names)\n* $2 =",
        "config-install-user-grant-failed": "Parameters:\n* $1 is the database username for which granting rights failed\n* $2 is the error message",
        "config-install-user-missing": "Used as PostgreSQL error message. Parameters:\n* $1 - database username\nSee also:\n* {{msg-mw|Config-install-user-missing-create}}",
        "config-install-user-missing-create": "Used as PostgreSQL error message. Parameters:\n* $1 - database username\nSee also:\n* {{msg-mw|Config-install-user-missing}}",
-       "config-install-tables": "Message indicates that the tables are being created\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
+       "config-install-tables": "Message indicates that the tables are being created\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-updates}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-tables-exist": "Error notice during the installation saying that the database already seems set up for MediaWiki, so it's continuing without taking that step.",
        "config-install-tables-failed": "Used as PostgreSQL error message. Parameters:\n* $1 - detailed error message",
        "config-install-interwiki": "Message indicates that the interwikitables are being populated\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-stats": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-keys": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-insecure-keys": "Parameters:\n* $1 - A list of names of the secret keys that were generated.\n* $2 - the number of items in the list $1, to be used with PLURAL.",
+       "config-install-updates": "Message indicating that the updatelog table is filled with keys of updates that won't be run when running database updates.\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-updates}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
+       "config-install-updates-failed": "Used as error message. Parameters:\n* $1 - detailed error message",
        "config-install-sysop": "Message indicates that the administrator user account is being created\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
        "config-install-subscribe-fail": "{{doc-important|\"[[m:mail:mediawiki-announce|mediawiki-announce]]\" is the name of a mailing list and should not be translated.}}\nA message displayed if the MediaWiki installer encounters an error making a request to lists.wikimedia.org which hosts the mailing list.\n* $1 - the HTTP error encountered, reproduced as is (English string)",
        "config-install-subscribe-notpossible": "Error shown when automatically subscribing to the MediaWiki announcements mailing list fails.",
index b5441c1..ccd88e8 100644 (file)
        "config-install-stats": "Статистика инициализации",
        "config-install-keys": "Создание секретных ключей",
        "config-insecure-keys": "'''Предупреждение.''' {{PLURAL:$2|1=Ключ безопасности $1, созданный во время установки, недостаточно надёжен|Ключи безопасности $1, созданные во время установки, недостаточно надёжны}}. Рассмотрите возможность {{PLURAL:$2|1=его|их}} изменения вручную.",
+       "config-install-updates": "Предотвращение запуска ненужных обновлений",
+       "config-install-updates-failed": "<strong>Ошибка:</strong> Вставка ключей обновления в таблицы завершилась со следующей ошибкой: $1",
        "config-install-sysop": "Создание учётной записи администратора",
        "config-install-subscribe-fail": "Не удаётся подписаться на mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL не установлен и не доступна опция <code>allow_url_fopen</code>.",
index 40f0902..100f316 100644 (file)
@@ -3,11 +3,12 @@
                "authors": [
                        "Andria",
                        "L2212",
-                       "Uharteko"
+                       "Uharteko",
+                       "Taxandru"
                ]
        },
        "config-page-language": "Limba",
        "config-page-name": "Nùmene",
        "config-page-options": "Preferèntzias",
-       "mainpagetext": "'''MediaWiki est istadu installadu bene.'''"
+       "mainpagetext": "'''MediaWiki est stadu installadu in modu currèggidu.'''"
 }
index b46902c..2bdfb10 100644 (file)
@@ -51,6 +51,7 @@
        "config-env-good": "Miljön har kontrollerats.\nDu kan installera MediaWiki.",
        "config-env-bad": "Miljön har kontrollerats.\nDu kan inte installera MediaWiki.",
        "config-env-php": "PHP $1 är installerat.",
+       "config-env-hhvm": "HHVM $1 är installerat.",
        "config-unicode-using-utf8": "Använder Brion Vibbers utf8_normalize.so för Unicode-normalisering.",
        "config-unicode-using-intl": "Använder [http://pecl.php.net/intl intl PECL-tillägget] för Unicode-normalisering.",
        "config-unicode-pure-php-warning": "'''Varning:''' [http://pecl.php.net/intl intl PECL-tillägget] är inte tillgängligt för att hantera Unicode-normalisering, faller tillbaka till en långsamt implementering i ren PHP.\nOm du driver en högtrafikerad webbplats bör du läsa lite om [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations Unicode-normalisering].",
        "config-install-stats": "Initierar statistik",
        "config-install-keys": "Genererar hemliga nycklar",
        "config-insecure-keys": "'''Varning:''' {{PLURAL:$2|En säkerhetsnyckel|Säkerhetsnycklar}} ($1) som generades under installationen är inte helt {{PLURAL:$2|säker|säkra}} . Överväg att ändra {{PLURAL:$2|den|dem}} manuellt.",
+       "config-install-updates": "Förhindra att onödiga uppdateringar körs",
+       "config-install-updates-failed": "<strong>Fel:</strong> Infogning av uppdateringsnycklar i tabeller misslyckades med följande fel:$1",
        "config-install-sysop": "Skapar administratörskonto",
        "config-install-subscribe-fail": "Det gick inte att prenumerera på mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL är inte installerad och <code>allow_url_fopen</code> är inte tillgänglig.",
index 001a0f8..9eee1a7 100644 (file)
        "config-install-stats": "Ініціалізація статистики",
        "config-install-keys": "Генерація секретних ключів",
        "config-insecure-keys": "'''Увага:''' {{PLURAL:$2|1=Секретний ключ|Секретні ключі}} ($1), {{PLURAL:$2|1=згенерований в процесі встановлення, недостатньо надійний|згенеровані в процесі встановлення, недостатньо надійні}}. Розгляньте можливість {{PLURAL:$2|1=його|їх}} заміни вручну.",
+       "config-install-updates-failed": "<strong>Помилка:</strong> Вставка оновленних ключів в таблиці не вдалося через таку помилку:$1",
        "config-install-sysop": "Створення облікового запису адміністратора",
        "config-install-subscribe-fail": "Не можливо підписатись на mediawiki-announce: $1",
        "config-install-subscribe-notpossible": "cURL не встановлено і опція <code>allow_url_fopen</code> не доступна.",
index 82dd202..a4b64bc 100644 (file)
        "config-db-username": "数据库用户名:",
        "config-db-password": "数据库密码:",
        "config-db-password-empty": "请为新数据库用户$1输入密码。尽管您可以创建不使用密码的用户,但这样做并不安全。",
-       "config-db-username-empty": "您必须输入用于“{{int:config-db-username}}”的值",
+       "config-db-username-empty": "您必须输入用于“{{int:config-db-username}}”的值",
        "config-db-install-username": "请输入在安装过程中用于连接数据库的用户名。请勿输入MediaWiki帐号的用户名,请输入您数据库的用户名。",
        "config-db-install-password": "请输入在安装过程中用于连接数据库的密码。请勿输入MediaWiki帐号的密码,请输入您数据库的密码。",
        "config-db-install-help": "请输入在安装过程中用于连接数据库的用户名和密码。",
        "config-install-stats": "初始化统计",
        "config-install-keys": "生成密钥中",
        "config-insecure-keys": "'''警告''':在安装过程中生成的{{PLURAL:$2|安全密钥|安全密钥}}($1){{PLURAL:$2|并|并}}不一定安全。请考虑手动更改{{PLURAL:$2|它|它们}}。",
+       "config-install-updates": "防止运行不需要的更新",
+       "config-install-updates-failed": "<strong>错误:</strong>表格中插入更新关键字失败并出现如下错误:$1",
        "config-install-sysop": "正在创建管理员用户帐号",
        "config-install-subscribe-fail": "无法订阅mediawiki-announce:$1",
        "config-install-subscribe-notpossible": "没有安装cURL,<code>allow_url_fopen</code>也不可用。",
index 2d58010..cb6cefb 100644 (file)
        "config-db-name-oracle": "資料庫 Schema:",
        "config-db-account-oracle-warn": "目前有三種支援 Oracle 做為後端資料庫的方案:\n\n如果您希望在安裝的過程中自動建立新的資料庫,請提供具有 SYSDBA 權限的帳號並且提供未來要給網頁存取使用的資料庫帳號及密碼。或者您可以手動建立給網頁存取使用的資料庫帳號 (請確保該帳號有建立 Schema Object 的權限),再不然您可以提供兩組不同的帳號,一組用來建立權限,而另一組用來做為網頁存取使用。\n\n本次安裝建立的帳號以及權限所需要的 Script,可以在 \"maintenance/oracle/\" 中找到。\n請注意,若您使用有限制的帳號將會預設關閉所有維護性功能。",
        "config-db-install-account": "安裝程式使用的使用者帳號",
-       "config-db-username": "資料庫用戶名:",
+       "config-db-username": "資料庫使用者名稱:",
        "config-db-password": "資料庫密碼:",
        "config-db-password-empty": "請輸入新增資料庫使用者 $1 的密碼。\n雖然您可以不設定任何密碼,但這樣做並不安全。",
        "config-db-username-empty": "您必須輸入 \"{{int:config-db-username}}\" 欄位的內容。",
index 9a4073f..617a3a3 100644 (file)
@@ -54,7 +54,11 @@ class JobRunner {
         * This method outputs status information only if a debug handler was set.
         * Any exceptions are caught and logged, but are not reported as output.
         *
-        * @param array $options
+        * @param array $options Map of parameters:
+        *    - type     : the job type (or false for the default types)
+        *    - maxJobs  : maximum number of jobs to run
+        *    - maxTime  : maximum time in seconds before stopping
+        *    - throttle : whether to respect job backoff configuration
         * @return array Summary response that can easily be JSON serialized
         */
        public function run( array $options ) {
@@ -231,7 +235,7 @@ class JobRunner {
                        $content = stream_get_contents( $handle );
                        flock( $handle, LOCK_UN );
                        fclose( $handle );
-                       $backoffs = json_decode( $content, true ) ? : array();
+                       $backoffs = json_decode( $content, true ) ?: array();
                }
 
                return $backoffs;
@@ -249,7 +253,7 @@ class JobRunner {
                $handle = fopen( $file, 'wb+' );
                flock( $handle, LOCK_EX );
                $content = stream_get_contents( $handle );
-               $cBackoffs = json_decode( $content, true ) ? : array();
+               $cBackoffs = json_decode( $content, true ) ?: array();
                foreach ( $backoffs as $type => $timestamp ) {
                        $cBackoffs[$type] = isset( $cBackoffs[$type] ) ? $cBackoffs[$type] : 0;
                        $cBackoffs[$type] = max( $cBackoffs[$type], $backoffs[$type] );
index 34c302e..2561f2f 100644 (file)
@@ -84,7 +84,6 @@ class DoubleRedirectJob extends Job {
        /**
         * @param Title $title
         * @param array|bool $params
-        * @param int $id
         */
        function __construct( $title, $params = false ) {
                parent::__construct( 'fixDoubleRedirect', $title, $params );
index be7931d..ce5b972 100644 (file)
@@ -184,6 +184,7 @@ class LogPage {
 
        /**
         * Get the comment from the last addEntry() call
+        * @return string
         */
        public function getComment() {
                return $this->comment;
index 818bb25..018b58c 100644 (file)
@@ -563,6 +563,7 @@ class Exif {
 
        /**
         * Get $this->mFilteredExifData
+        * @return array
         */
        function getFilteredData() {
                return $this->mFilteredExifData;
index 154c85d..cdbd5ab 100644 (file)
@@ -1122,7 +1122,6 @@ class XMPReader {
                }
        }
 
-       // @codingStandardsIgnoreStart Long line that cannot be broken
        /**
         * Process attributes.
         * Simple values can be stored as either a tag or attribute
@@ -1130,15 +1129,16 @@ class XMPReader {
         * Often the initial "<rdf:Description>" tag just has all the simple
         * properties as attributes.
         *
+        * @codingStandardsIgnoreStart Long line that cannot be broken
         * @par Example:
         * @code
         * <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/" exif:DigitalZoomRatio="0/10">
         * @endcode
+        * @codingStandardsIgnoreEnd
         *
         * @param array $attribs Array attribute=>value
         * @throws MWException
         */
-       // @codingStandardsIgnoreEnd
        private function doAttribs( $attribs ) {
                // first check for rdf:parseType attribute, as that can change
                // how the attributes are interperted.
index 59191d7..53edcdd 100644 (file)
@@ -154,7 +154,7 @@ class MemcachedBagOStuff extends BagOStuff {
                if ( $expiry > 2592000 && $expiry < 1000000000 ) {
                        $expiry = 2592000;
                }
-               return $expiry;
+               return (int)$expiry;
        }
 
        /**
index 7990053..41eebfb 100644 (file)
@@ -106,7 +106,7 @@ class MWMemcached {
         * @var array
         * @access public
         */
-       var $stats;
+       public $stats;
 
        // }}}
        // {{{ private
@@ -117,7 +117,7 @@ class MWMemcached {
         * @var array
         * @access private
         */
-       var $_cache_sock;
+       public $_cache_sock;
 
        /**
         * Current debug status; 0 - none to 9 - profiling
@@ -125,7 +125,7 @@ class MWMemcached {
         * @var bool
         * @access private
         */
-       var $_debug;
+       public $_debug;
 
        /**
         * Dead hosts, assoc array, 'host'=>'unixtime when ok to check again'
@@ -133,7 +133,7 @@ class MWMemcached {
         * @var array
         * @access private
         */
-       var $_host_dead;
+       public $_host_dead;
 
        /**
         * Is compression available?
@@ -141,7 +141,7 @@ class MWMemcached {
         * @var bool
         * @access private
         */
-       var $_have_zlib;
+       public $_have_zlib;
 
        /**
         * Do we want to use compression?
@@ -149,7 +149,7 @@ class MWMemcached {
         * @var bool
         * @access private
         */
-       var $_compress_enable;
+       public $_compress_enable;
 
        /**
         * At how many bytes should we compress?
@@ -157,7 +157,7 @@ class MWMemcached {
         * @var int
         * @access private
         */
-       var $_compress_threshold;
+       public $_compress_threshold;
 
        /**
         * Are we using persistent links?
@@ -165,7 +165,7 @@ class MWMemcached {
         * @var bool
         * @access private
         */
-       var $_persistent;
+       public $_persistent;
 
        /**
         * If only using one server; contains ip:port to connect to
@@ -173,7 +173,7 @@ class MWMemcached {
         * @var string
         * @access private
         */
-       var $_single_sock;
+       public $_single_sock;
 
        /**
         * Array containing ip:port or array(ip:port, weight)
@@ -181,7 +181,7 @@ class MWMemcached {
         * @var array
         * @access private
         */
-       var $_servers;
+       public $_servers;
 
        /**
         * Our bit buckets
@@ -189,7 +189,7 @@ class MWMemcached {
         * @var array
         * @access private
         */
-       var $_buckets;
+       public $_buckets;
 
        /**
         * Total # of bit buckets we have
@@ -197,7 +197,7 @@ class MWMemcached {
         * @var int
         * @access private
         */
-       var $_bucketcount;
+       public $_bucketcount;
 
        /**
         * # of total servers we have
@@ -205,7 +205,7 @@ class MWMemcached {
         * @var int
         * @access private
         */
-       var $_active;
+       public $_active;
 
        /**
         * Stream timeout in seconds. Applies for example to fread()
@@ -213,7 +213,7 @@ class MWMemcached {
         * @var int
         * @access private
         */
-       var $_timeout_seconds;
+       public $_timeout_seconds;
 
        /**
         * Stream timeout in microseconds
@@ -221,17 +221,17 @@ class MWMemcached {
         * @var int
         * @access private
         */
-       var $_timeout_microseconds;
+       public $_timeout_microseconds;
 
        /**
         * Connect timeout in seconds
         */
-       var $_connect_timeout;
+       public $_connect_timeout;
 
        /**
         * Number of connection attempts for each server
         */
-       var $_connect_attempts;
+       public $_connect_attempts;
 
        // }}}
        // }}}
index c54c692..8970539 100644 (file)
@@ -975,7 +975,14 @@ class Article implements Page {
                global $wgRedirectSources;
                $outputPage = $this->getContext()->getOutput();
 
-               $rdfrom = $this->getContext()->getRequest()->getVal( 'rdfrom' );
+               $request = $this->getContext()->getRequest();
+               $rdfrom = $request->getVal( 'rdfrom' );
+
+               // Construct a URL for the current page view, but with the target title
+               $query = $request->getValues();
+               unset( $query['rdfrom'] );
+               unset( $query['title'] );
+               $redirectTargetUrl = $this->getTitle()->getLinkURL( $query );
 
                if ( isset( $this->mRedirectedFrom ) ) {
                        // This is an internally redirected page view.
@@ -990,11 +997,12 @@ class Article implements Page {
 
                                $outputPage->addSubtitle( wfMessage( 'redirectedfrom' )->rawParams( $redir ) );
 
-                               // Set the fragment if one was specified in the redirect
-                               if ( $this->getTitle()->hasFragment() ) {
-                                       $outputPage->addJsConfigVars( 'wgRedirectToFragment', $this->getTitle()->getFragmentForURL() );
-                                       $outputPage->addModules( 'mediawiki.action.view.redirectToFragment' );
-                               }
+                               // Add the script to update the displayed URL and
+                               // set the fragment if one was specified in the redirect
+                               $outputPage->addJsConfigVars( array(
+                                       'wgInternalRedirectTargetUrl' => $redirectTargetUrl,
+                               ) );
+                               $outputPage->addModules( 'mediawiki.action.view.redirect' );
 
                                // Add a <link rel="canonical"> tag
                                $outputPage->setCanonicalUrl( $this->getTitle()->getLocalURL() );
@@ -1011,6 +1019,12 @@ class Article implements Page {
                                $redir = Linker::makeExternalLink( $rdfrom, $rdfrom );
                                $outputPage->addSubtitle( wfMessage( 'redirectedfrom' )->rawParams( $redir ) );
 
+                               // Add the script to update the displayed URL
+                               $outputPage->addJsConfigVars( array(
+                                       'wgInternalRedirectTargetUrl' => $redirectTargetUrl,
+                               ) );
+                               $outputPage->addModules( 'mediawiki.action.view.redirect' );
+
                                return true;
                        }
                }
@@ -1624,7 +1638,20 @@ class Article implements Page {
 
                // If the page has a history, insert a warning
                if ( $hasHistory ) {
-                       $revisions = $this->mTitle->estimateRevisionCount();
+                       $title = $this->getTitle();
+
+                       // The following can use the real revision count as this is only being shown for users that can delete
+                       // this page.
+                       // This, as a side-effect, also makes sure that the following query isn't being run for pages with a
+                       // larger history, unless the user has the 'bigdelete' right (and is about to delete this page).
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $revisions = $edits = (int)$dbr->selectField(
+                               'revision',
+                               'COUNT(rev_page)',
+                               array( 'rev_page' => $title->getArticleID() ),
+                               __METHOD__
+                       );
+
                        // @todo FIXME: i18n issue/patchwork message
                        $this->getContext()->getOutput()->addHTML( '<strong class="mw-delete-warning-revisions">' .
                                wfMessage( 'historywarning' )->numParams( $revisions )->parse() .
@@ -1635,7 +1662,7 @@ class Article implements Page {
                                '</strong>'
                        );
 
-                       if ( $this->mTitle->isBigDeletion() ) {
+                       if ( $title->isBigDeletion() ) {
                                global $wgDeleteRevisionsLimit;
                                $this->getContext()->getOutput()->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n",
                                        array(
@@ -1949,6 +1976,7 @@ class Article implements Page {
         * raw WikiPage fields for backwards compatibility.
         *
         * @param string $fname Field name
+        * @return mixed
         */
        public function __get( $fname ) {
                if ( property_exists( $this->mPage, $fname ) ) {
index 380252f..80e5371 100644 (file)
@@ -267,8 +267,7 @@ class ImagePage extends Article {
                                # @todo FIXME: Why is this using escapeId for a class?!
                                $class = Sanitizer::escapeId( $v['id'] );
                                if ( $type == 'collapsed' ) {
-                                       // Handled by mediawiki.action.view.metadata module
-                                       // and skins/common/shared.css.
+                                       // Handled by mediawiki.action.view.metadata module and shared.css.
                                        $class .= ' collapsable';
                                }
                                $r .= "<tr class=\"$class\">\n";
@@ -1329,6 +1328,9 @@ class ImageHistoryList extends ContextSource {
                                $url = $lang->userTimeAndDate( $timestamp, $user );
                        }
                        $row .= '<span class="history-deleted">' . $url . '</span>';
+               } elseif ( !$file->exists() ) {
+                       $row .= '<span class="mw-file-missing">'
+                               . $lang->userTimeAndDate( $timestamp, $user ) . '</span>';
                } else {
                        $url = $iscur ? $this->current->getUrl() : $this->current->getArchiveUrl( $img );
                        $row .= Xml::element(
index 47f64a2..b62f40d 100644 (file)
@@ -3505,17 +3505,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $wgParser->preSaveTransform( $text, $this->mTitle, $user, $popts );
        }
 
-       /**
-        * Get the  approximate revision count of this page.
-        *
-        * @deprecated since 1.19; use Title::estimateRevisionCount() instead.
-        * @return int
-        */
-       public function estimateRevisionCount() {
-               wfDeprecated( __METHOD__, '1.19' );
-               return $this->mTitle->estimateRevisionCount();
-       }
-
        /**
         * Update the article's restriction field, and leave a log entry.
         *
diff --git a/includes/pager/AlphabeticPager.php b/includes/pager/AlphabeticPager.php
new file mode 100644 (file)
index 0000000..34c7897
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Efficient paging for SQL queries.
+ *
+ * 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 Pager
+ */
+
+/**
+ * IndexPager with an alphabetic list and a formatted navigation bar
+ * @ingroup Pager
+ */
+abstract class AlphabeticPager extends IndexPager {
+
+       /**
+        * Shamelessly stolen bits from ReverseChronologicalPager,
+        * didn't want to do class magic as may be still revamped
+        *
+        * @return string HTML
+        */
+       function getNavigationBar() {
+               if ( !$this->isNavigationBarShown() ) {
+                       return '';
+               }
+
+               if ( isset( $this->mNavigationBar ) ) {
+                       return $this->mNavigationBar;
+               }
+
+               $linkTexts = array(
+                       '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 = $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
+                       return $this->mNavigationBar;
+               }
+
+               $extra = '';
+               $first = true;
+               $msgs = $this->getOrderTypeMessages();
+               foreach ( array_keys( $msgs ) as $order ) {
+                       if ( $first ) {
+                               $first = false;
+                       } else {
+                               $extra .= $this->msg( 'pipe-separator' )->escaped();
+                       }
+
+                       if ( $order == $this->mOrderType ) {
+                               $extra .= $this->msg( $msgs[$order] )->escaped();
+                       } else {
+                               $extra .= $this->makeLink(
+                                       $this->msg( $msgs[$order] )->escaped(),
+                                       array( 'order' => $order )
+                               );
+                       }
+               }
+
+               if ( $extra !== '' ) {
+                       $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
+                       $this->mNavigationBar .= $extra;
+               }
+
+               return $this->mNavigationBar;
+       }
+
+       /**
+        * If this supports multiple order type messages, give the message key for
+        * enabling each one in getNavigationBar.  The return type is an associative
+        * array whose keys must exactly match the keys of the array returned
+        * by getIndexField(), and whose values are message keys.
+        *
+        * @return array
+        */
+       protected function getOrderTypeMessages() {
+               return null;
+       }
+}
diff --git a/includes/pager/IndexPager.php b/includes/pager/IndexPager.php
new file mode 100644 (file)
index 0000000..1d93c27
--- /dev/null
@@ -0,0 +1,729 @@
+<?php
+/**
+ * Efficient paging for SQL queries.
+ *
+ * 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 Pager
+ */
+
+/**
+ * IndexPager is an efficient pager which uses a (roughly unique) index in the
+ * data set to implement paging, rather than a "LIMIT offset,limit" clause.
+ * In MySQL, such a limit/offset clause requires counting through the
+ * specified number of offset rows to find the desired data, which can be
+ * expensive for large offsets.
+ *
+ * ReverseChronologicalPager is a child class of the abstract IndexPager, and
+ * contains  some formatting and display code which is specific to the use of
+ * timestamps as  indexes. Here is a synopsis of its operation:
+ *
+ *    * The query is specified by the offset, limit and direction (dir)
+ *      parameters, in addition to any subclass-specific parameters.
+ *    * The offset is the non-inclusive start of the DB query. A row with an
+ *      index value equal to the offset will never be shown.
+ *    * The query may either be done backwards, where the rows are returned by
+ *      the database in the opposite order to which they are displayed to the
+ *      user, or forwards. This is specified by the "dir" parameter, dir=prev
+ *      means backwards, anything else means forwards. The offset value
+ *      specifies the start of the database result set, which may be either
+ *      the start or end of the displayed data set. This allows "previous"
+ *      links to be implemented without knowledge of the index value at the
+ *      start of the previous page.
+ *    * An additional row beyond the user-specified limit is always requested.
+ *      This allows us to tell whether we should display a "next" link in the
+ *      case of forwards mode, or a "previous" link in the case of backwards
+ *      mode. Determining whether to display the other link (the one for the
+ *      page before the start of the database result set) can be done
+ *      heuristically by examining the offset.
+ *
+ *    * An empty offset indicates that the offset condition should be omitted
+ *      from the query. This naturally produces either the first page or the
+ *      last page depending on the dir parameter.
+ *
+ *  Subclassing the pager to implement concrete functionality should be fairly
+ *  simple, please see the examples in HistoryAction.php and
+ *  SpecialBlockList.php. You just need to override formatRow(),
+ *  getQueryInfo() and getIndexField(). Don't forget to call the parent
+ *  constructor if you override it.
+ *
+ * @ingroup Pager
+ */
+abstract class IndexPager extends ContextSource implements Pager {
+       public $mRequest;
+       public $mLimitsShown = array( 20, 50, 100, 250, 500 );
+       public $mDefaultLimit = 50;
+       public $mOffset, $mLimit;
+       public $mQueryDone = false;
+       public $mDb;
+       public $mPastTheEndRow;
+
+       /**
+        * The index to actually be used for ordering. This is a single column,
+        * for one ordering, even if multiple orderings are supported.
+        */
+       protected $mIndexField;
+       /**
+        * An array of secondary columns to order by. These fields are not part of the offset.
+        * This is a column list for one ordering, even if multiple orderings are supported.
+        */
+       protected $mExtraSortFields;
+       /** For pages that support multiple types of ordering, which one to use.
+        */
+       protected $mOrderType;
+       /**
+        * $mDefaultDirection gives the direction to use when sorting results:
+        * false for ascending, true for descending.  If $mIsBackwards is set, we
+        * start from the opposite end, but we still sort the page itself according
+        * to $mDefaultDirection.  E.g., if $mDefaultDirection is false but we're
+        * going backwards, we'll display the last page of results, but the last
+        * result will be at the bottom, not the top.
+        *
+        * Like $mIndexField, $mDefaultDirection will be a single value even if the
+        * class supports multiple default directions for different order types.
+        */
+       public $mDefaultDirection;
+       public $mIsBackwards;
+
+       /** True if the current result set is the first one */
+       public $mIsFirst;
+       public $mIsLast;
+
+       protected $mLastShown, $mFirstShown, $mPastTheEndIndex, $mDefaultQuery, $mNavigationBar;
+
+       /**
+        * Whether to include the offset in the query
+        */
+       protected $mIncludeOffset = false;
+
+       /**
+        * Result object for the query. Warning: seek before use.
+        *
+        * @var ResultWrapper
+        */
+       public $mResult;
+
+       public function __construct( IContextSource $context = null ) {
+               if ( $context ) {
+                       $this->setContext( $context );
+               }
+
+               $this->mRequest = $this->getRequest();
+
+               # NB: the offset is quoted, not validated. It is treated as an
+               # arbitrary string to support the widest variety of index types. Be
+               # careful outputting it into HTML!
+               $this->mOffset = $this->mRequest->getText( 'offset' );
+
+               # Use consistent behavior for the limit options
+               $this->mDefaultLimit = $this->getUser()->getIntOption( 'rclimit' );
+               if ( !$this->mLimit ) {
+                       // Don't override if a subclass calls $this->setLimit() in its constructor.
+                       list( $this->mLimit, /* $offset */ ) = $this->mRequest->getLimitOffset();
+               }
+
+               $this->mIsBackwards = ( $this->mRequest->getVal( 'dir' ) == 'prev' );
+               # Let the subclass set the DB here; otherwise use a slave DB for the current wiki
+               $this->mDb = $this->mDb ?: wfGetDB( DB_SLAVE );
+
+               $index = $this->getIndexField(); // column to sort on
+               $extraSort = $this->getExtraSortFields(); // extra columns to sort on for query planning
+               $order = $this->mRequest->getVal( 'order' );
+               if ( is_array( $index ) && isset( $index[$order] ) ) {
+                       $this->mOrderType = $order;
+                       $this->mIndexField = $index[$order];
+                       $this->mExtraSortFields = isset( $extraSort[$order] )
+                               ? (array)$extraSort[$order]
+                               : array();
+               } elseif ( is_array( $index ) ) {
+                       # First element is the default
+                       reset( $index );
+                       list( $this->mOrderType, $this->mIndexField ) = each( $index );
+                       $this->mExtraSortFields = isset( $extraSort[$this->mOrderType] )
+                               ? (array)$extraSort[$this->mOrderType]
+                               : array();
+               } else {
+                       # $index is not an array
+                       $this->mOrderType = null;
+                       $this->mIndexField = $index;
+                       $this->mExtraSortFields = (array)$extraSort;
+               }
+
+               if ( !isset( $this->mDefaultDirection ) ) {
+                       $dir = $this->getDefaultDirections();
+                       $this->mDefaultDirection = is_array( $dir )
+                               ? $dir[$this->mOrderType]
+                               : $dir;
+               }
+       }
+
+       /**
+        * Get the Database object in use
+        *
+        * @return DatabaseBase
+        */
+       public function getDatabase() {
+               return $this->mDb;
+       }
+
+       /**
+        * Do the query, using information from the object context. This function
+        * has been kept minimal to make it overridable if necessary, to allow for
+        * result sets formed from multiple DB queries.
+        */
+       public function doQuery() {
+               # Use the child class name for profiling
+               $fname = __METHOD__ . ' (' . get_class( $this ) . ')';
+               wfProfileIn( $fname );
+
+               $descending = ( $this->mIsBackwards == $this->mDefaultDirection );
+               # Plus an extra row so that we can tell the "next" link should be shown
+               $queryLimit = $this->mLimit + 1;
+
+               if ( $this->mOffset == '' ) {
+                       $isFirst = true;
+               } else {
+                       // If there's an offset, we may or may not be at the first entry.
+                       // The only way to tell is to run the query in the opposite
+                       // direction see if we get a row.
+                       $oldIncludeOffset = $this->mIncludeOffset;
+                       $this->mIncludeOffset = !$this->mIncludeOffset;
+                       $isFirst = !$this->reallyDoQuery( $this->mOffset, 1, !$descending )->numRows();
+                       $this->mIncludeOffset = $oldIncludeOffset;
+               }
+
+               $this->mResult = $this->reallyDoQuery(
+                       $this->mOffset,
+                       $queryLimit,
+                       $descending
+               );
+
+               $this->extractResultInfo( $isFirst, $queryLimit, $this->mResult );
+               $this->mQueryDone = true;
+
+               $this->preprocessResults( $this->mResult );
+               $this->mResult->rewind(); // Paranoia
+
+               wfProfileOut( $fname );
+       }
+
+       /**
+        * @return ResultWrapper The result wrapper.
+        */
+       function getResult() {
+               return $this->mResult;
+       }
+
+       /**
+        * Set the offset from an other source than the request
+        *
+        * @param int|string $offset
+        */
+       function setOffset( $offset ) {
+               $this->mOffset = $offset;
+       }
+
+       /**
+        * Set the limit from an other source than the request
+        *
+        * Verifies limit is between 1 and 5000
+        *
+        * @param int|string $limit
+        */
+       function setLimit( $limit ) {
+               $limit = (int)$limit;
+               // WebRequest::getLimitOffset() puts a cap of 5000, so do same here.
+               if ( $limit > 5000 ) {
+                       $limit = 5000;
+               }
+               if ( $limit > 0 ) {
+                       $this->mLimit = $limit;
+               }
+       }
+
+       /**
+        * Get the current limit
+        *
+        * @return int
+        */
+       function getLimit() {
+               return $this->mLimit;
+       }
+
+       /**
+        * Set whether a row matching exactly the offset should be also included
+        * in the result or not. By default this is not the case, but when the
+        * offset is user-supplied this might be wanted.
+        *
+        * @param bool $include
+        */
+       public function setIncludeOffset( $include ) {
+               $this->mIncludeOffset = $include;
+       }
+
+       /**
+        * Extract some useful data from the result object for use by
+        * the navigation bar, put it into $this
+        *
+        * @param bool $isFirst False if there are rows before those fetched (i.e.
+        *     if a "previous" link would make sense)
+        * @param int $limit Exact query limit
+        * @param ResultWrapper $res
+        */
+       function extractResultInfo( $isFirst, $limit, ResultWrapper $res ) {
+               $numRows = $res->numRows();
+               if ( $numRows ) {
+                       # Remove any table prefix from index field
+                       $parts = explode( '.', $this->mIndexField );
+                       $indexColumn = end( $parts );
+
+                       $row = $res->fetchRow();
+                       $firstIndex = $row[$indexColumn];
+
+                       # Discard the extra result row if there is one
+                       if ( $numRows > $this->mLimit && $numRows > 1 ) {
+                               $res->seek( $numRows - 1 );
+                               $this->mPastTheEndRow = $res->fetchObject();
+                               $this->mPastTheEndIndex = $this->mPastTheEndRow->$indexColumn;
+                               $res->seek( $numRows - 2 );
+                               $row = $res->fetchRow();
+                               $lastIndex = $row[$indexColumn];
+                       } else {
+                               $this->mPastTheEndRow = null;
+                               # Setting indexes to an empty string means that they will be
+                               # omitted if they would otherwise appear in URLs. It just so
+                               # happens that this  is the right thing to do in the standard
+                               # UI, in all the relevant cases.
+                               $this->mPastTheEndIndex = '';
+                               $res->seek( $numRows - 1 );
+                               $row = $res->fetchRow();
+                               $lastIndex = $row[$indexColumn];
+                       }
+               } else {
+                       $firstIndex = '';
+                       $lastIndex = '';
+                       $this->mPastTheEndRow = null;
+                       $this->mPastTheEndIndex = '';
+               }
+
+               if ( $this->mIsBackwards ) {
+                       $this->mIsFirst = ( $numRows < $limit );
+                       $this->mIsLast = $isFirst;
+                       $this->mLastShown = $firstIndex;
+                       $this->mFirstShown = $lastIndex;
+               } else {
+                       $this->mIsFirst = $isFirst;
+                       $this->mIsLast = ( $numRows < $limit );
+                       $this->mLastShown = $lastIndex;
+                       $this->mFirstShown = $firstIndex;
+               }
+       }
+
+       /**
+        * Get some text to go in brackets in the "function name" part of the SQL comment
+        *
+        * @return string
+        */
+       function getSqlComment() {
+               return get_class( $this );
+       }
+
+       /**
+        * Do a query with specified parameters, rather than using the object
+        * context
+        *
+        * @param string $offset Index offset, inclusive
+        * @param int $limit Exact query limit
+        * @param bool $descending Query direction, false for ascending, true for descending
+        * @return ResultWrapper
+        */
+       public function reallyDoQuery( $offset, $limit, $descending ) {
+               list( $tables, $fields, $conds, $fname, $options, $join_conds ) =
+                       $this->buildQueryInfo( $offset, $limit, $descending );
+
+               return $this->mDb->select( $tables, $fields, $conds, $fname, $options, $join_conds );
+       }
+
+       /**
+        * Build variables to use by the database wrapper.
+        *
+        * @param string $offset Index offset, inclusive
+        * @param int $limit Exact query limit
+        * @param bool $descending Query direction, false for ascending, true for descending
+        * @return array
+        */
+       protected function buildQueryInfo( $offset, $limit, $descending ) {
+               $fname = __METHOD__ . ' (' . $this->getSqlComment() . ')';
+               $info = $this->getQueryInfo();
+               $tables = $info['tables'];
+               $fields = $info['fields'];
+               $conds = isset( $info['conds'] ) ? $info['conds'] : array();
+               $options = isset( $info['options'] ) ? $info['options'] : array();
+               $join_conds = isset( $info['join_conds'] ) ? $info['join_conds'] : array();
+               $sortColumns = array_merge( array( $this->mIndexField ), $this->mExtraSortFields );
+               if ( $descending ) {
+                       $options['ORDER BY'] = $sortColumns;
+                       $operator = $this->mIncludeOffset ? '>=' : '>';
+               } else {
+                       $orderBy = array();
+                       foreach ( $sortColumns as $col ) {
+                               $orderBy[] = $col . ' DESC';
+                       }
+                       $options['ORDER BY'] = $orderBy;
+                       $operator = $this->mIncludeOffset ? '<=' : '<';
+               }
+               if ( $offset != '' ) {
+                       $conds[] = $this->mIndexField . $operator . $this->mDb->addQuotes( $offset );
+               }
+               $options['LIMIT'] = intval( $limit );
+               return array( $tables, $fields, $conds, $fname, $options, $join_conds );
+       }
+
+       /**
+        * Pre-process results; useful for performing batch existence checks, etc.
+        *
+        * @param ResultWrapper $result
+        */
+       protected function preprocessResults( $result ) {
+       }
+
+       /**
+        * Get the formatted result list. Calls getStartBody(), formatRow() and
+        * getEndBody(), concatenates the results and returns them.
+        *
+        * @return string
+        */
+       public function getBody() {
+               if ( !$this->mQueryDone ) {
+                       $this->doQuery();
+               }
+
+               if ( $this->mResult->numRows() ) {
+                       # Do any special query batches before display
+                       $this->doBatchLookups();
+               }
+
+               # Don't use any extra rows returned by the query
+               $numRows = min( $this->mResult->numRows(), $this->mLimit );
+
+               $s = $this->getStartBody();
+               if ( $numRows ) {
+                       if ( $this->mIsBackwards ) {
+                               for ( $i = $numRows - 1; $i >= 0; $i-- ) {
+                                       $this->mResult->seek( $i );
+                                       $row = $this->mResult->fetchObject();
+                                       $s .= $this->formatRow( $row );
+                               }
+                       } else {
+                               $this->mResult->seek( 0 );
+                               for ( $i = 0; $i < $numRows; $i++ ) {
+                                       $row = $this->mResult->fetchObject();
+                                       $s .= $this->formatRow( $row );
+                               }
+                       }
+               } else {
+                       $s .= $this->getEmptyBody();
+               }
+               $s .= $this->getEndBody();
+               return $s;
+       }
+
+       /**
+        * Make a self-link
+        *
+        * @param string $text Text displayed on the link
+        * @param array $query Associative array of parameter to be in the query string
+        * @param string $type Value of the "rel" attribute
+        *
+        * @return string HTML fragment
+        */
+       function makeLink( $text, array $query = null, $type = null ) {
+               if ( $query === null ) {
+                       return $text;
+               }
+
+               $attrs = array();
+               if ( in_array( $type, array( 'first', 'prev', 'next', 'last' ) ) ) {
+                       # HTML5 rel attributes
+                       $attrs['rel'] = $type;
+               }
+
+               if ( $type ) {
+                       $attrs['class'] = "mw-{$type}link";
+               }
+
+               return Linker::linkKnown(
+                       $this->getTitle(),
+                       $text,
+                       $attrs,
+                       $query + $this->getDefaultQuery()
+               );
+       }
+
+       /**
+        * Called from getBody(), before getStartBody() is called and
+        * after doQuery() was called. This will be called only if there
+        * are rows in the result set.
+        *
+        * @return void
+        */
+       protected function doBatchLookups() {
+       }
+
+       /**
+        * Hook into getBody(), allows text to be inserted at the start. This
+        * will be called even if there are no rows in the result set.
+        *
+        * @return string
+        */
+       protected function getStartBody() {
+               return '';
+       }
+
+       /**
+        * Hook into getBody() for the end of the list
+        *
+        * @return string
+        */
+       protected function getEndBody() {
+               return '';
+       }
+
+       /**
+        * Hook into getBody(), for the bit between the start and the
+        * end when there are no rows
+        *
+        * @return string
+        */
+       protected function getEmptyBody() {
+               return '';
+       }
+
+       /**
+        * Get an array of query parameters that should be put into self-links.
+        * By default, all parameters passed in the URL are used, except for a
+        * short blacklist.
+        *
+        * @return array Associative array
+        */
+       function getDefaultQuery() {
+               if ( !isset( $this->mDefaultQuery ) ) {
+                       $this->mDefaultQuery = $this->getRequest()->getQueryValues();
+                       unset( $this->mDefaultQuery['title'] );
+                       unset( $this->mDefaultQuery['dir'] );
+                       unset( $this->mDefaultQuery['offset'] );
+                       unset( $this->mDefaultQuery['limit'] );
+                       unset( $this->mDefaultQuery['order'] );
+                       unset( $this->mDefaultQuery['month'] );
+                       unset( $this->mDefaultQuery['year'] );
+               }
+               return $this->mDefaultQuery;
+       }
+
+       /**
+        * Get the number of rows in the result set
+        *
+        * @return int
+        */
+       function getNumRows() {
+               if ( !$this->mQueryDone ) {
+                       $this->doQuery();
+               }
+               return $this->mResult->numRows();
+       }
+
+       /**
+        * Get a URL query array for the prev, next, first and last links.
+        *
+        * @return array
+        */
+       function getPagingQueries() {
+               if ( !$this->mQueryDone ) {
+                       $this->doQuery();
+               }
+
+               # Don't announce the limit everywhere if it's the default
+               $urlLimit = $this->mLimit == $this->mDefaultLimit ? null : $this->mLimit;
+
+               if ( $this->mIsFirst ) {
+                       $prev = false;
+                       $first = false;
+               } else {
+                       $prev = array(
+                               'dir' => 'prev',
+                               'offset' => $this->mFirstShown,
+                               'limit' => $urlLimit
+                       );
+                       $first = array( 'limit' => $urlLimit );
+               }
+               if ( $this->mIsLast ) {
+                       $next = false;
+                       $last = false;
+               } else {
+                       $next = array( 'offset' => $this->mLastShown, 'limit' => $urlLimit );
+                       $last = array( 'dir' => 'prev', 'limit' => $urlLimit );
+               }
+               return array(
+                       'prev' => $prev,
+                       'next' => $next,
+                       'first' => $first,
+                       'last' => $last
+               );
+       }
+
+       /**
+        * Returns whether to show the "navigation bar"
+        *
+        * @return bool
+        */
+       function isNavigationBarShown() {
+               if ( !$this->mQueryDone ) {
+                       $this->doQuery();
+               }
+               // Hide navigation by default if there is nothing to page
+               return !( $this->mIsFirst && $this->mIsLast );
+       }
+
+       /**
+        * Get paging links. If a link is disabled, the item from $disabledTexts
+        * will be used. If there is no such item, the unlinked text from
+        * $linkTexts will be used. Both $linkTexts and $disabledTexts are arrays
+        * of HTML.
+        *
+        * @param array $linkTexts
+        * @param array $disabledTexts
+        * @return array
+        */
+       function getPagingLinks( $linkTexts, $disabledTexts = array() ) {
+               $queries = $this->getPagingQueries();
+               $links = array();
+
+               foreach ( $queries as $type => $query ) {
+                       if ( $query !== false ) {
+                               $links[$type] = $this->makeLink(
+                                       $linkTexts[$type],
+                                       $queries[$type],
+                                       $type
+                               );
+                       } elseif ( isset( $disabledTexts[$type] ) ) {
+                               $links[$type] = $disabledTexts[$type];
+                       } else {
+                               $links[$type] = $linkTexts[$type];
+                       }
+               }
+
+               return $links;
+       }
+
+       function getLimitLinks() {
+               $links = array();
+               if ( $this->mIsBackwards ) {
+                       $offset = $this->mPastTheEndIndex;
+               } else {
+                       $offset = $this->mOffset;
+               }
+               foreach ( $this->mLimitsShown as $limit ) {
+                       $links[] = $this->makeLink(
+                               $this->getLanguage()->formatNum( $limit ),
+                               array( 'offset' => $offset, 'limit' => $limit ),
+                               'num'
+                       );
+               }
+               return $links;
+       }
+
+       /**
+        * Abstract formatting function. This should return an HTML string
+        * representing the result row $row. Rows will be concatenated and
+        * returned by getBody()
+        *
+        * @param array|stdClass $row Database row
+        * @return string
+        */
+       abstract function formatRow( $row );
+
+       /**
+        * This function should be overridden to provide all parameters
+        * needed for the main paged query. It returns an associative
+        * array with the following elements:
+        *    tables => Table(s) for passing to Database::select()
+        *    fields => Field(s) for passing to Database::select(), may be *
+        *    conds => WHERE conditions
+        *    options => option array
+        *    join_conds => JOIN conditions
+        *
+        * @return array
+        */
+       abstract function getQueryInfo();
+
+       /**
+        * This function should be overridden to return the name of the index fi-
+        * eld.  If the pager supports multiple orders, it may return an array of
+        * 'querykey' => 'indexfield' pairs, so that a request with &count=querykey
+        * will use indexfield to sort.  In this case, the first returned key is
+        * the default.
+        *
+        * Needless to say, it's really not a good idea to use a non-unique index
+        * for this!  That won't page right.
+        *
+        * @return string|array
+        */
+       abstract function getIndexField();
+
+       /**
+        * This function should be overridden to return the names of secondary columns
+        * to order by in addition to the column in getIndexField(). These fields will
+        * not be used in the pager offset or in any links for users.
+        *
+        * If getIndexField() returns an array of 'querykey' => 'indexfield' pairs then
+        * this must return a corresponding array of 'querykey' => array( fields...) pairs
+        * in order for a request with &count=querykey to use array( fields...) to sort.
+        *
+        * This is useful for pagers that GROUP BY a unique column (say page_id)
+        * and ORDER BY another (say page_len). Using GROUP BY and ORDER BY both on
+        * page_len,page_id avoids temp tables (given a page_len index). This would
+        * also work if page_id was non-unique but we had a page_len,page_id index.
+        *
+        * @return array
+        */
+       protected function getExtraSortFields() {
+               return array();
+       }
+
+       /**
+        * Return the default sorting direction: false for ascending, true for
+        * descending.  You can also have an associative array of ordertype => dir,
+        * if multiple order types are supported.  In this case getIndexField()
+        * must return an array, and the keys of that must exactly match the keys
+        * of this.
+        *
+        * For backward compatibility, this method's return value will be ignored
+        * if $this->mDefaultDirection is already set when the constructor is
+        * called, for instance if it's statically initialized.  In that case the
+        * value of that variable (which must be a boolean) will be used.
+        *
+        * Note that despite its name, this does not return the value of the
+        * $this->mDefaultDirection member variable.  That's the default for this
+        * particular instantiation, which is a single value.  This is the set of
+        * all defaults for the class.
+        *
+        * @return bool
+        */
+       protected function getDefaultDirections() {
+               return false;
+       }
+}
diff --git a/includes/pager/Pager.php b/includes/pager/Pager.php
new file mode 100644 (file)
index 0000000..edec490
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Efficient paging for SQL queries.
+ *
+ * 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 Pager
+ */
+
+/**
+ * @defgroup Pager Pager
+ */
+
+/**
+ * Basic pager interface.
+ * @ingroup Pager
+ */
+interface Pager {
+       function getNavigationBar();
+       function getBody();
+}
diff --git a/includes/pager/ReverseChronologicalPager.php b/includes/pager/ReverseChronologicalPager.php
new file mode 100644 (file)
index 0000000..3f96382
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Efficient paging for SQL queries.
+ *
+ * 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 Pager
+ */
+
+/**
+ * IndexPager with a formatted navigation bar
+ * @ingroup Pager
+ */
+abstract class ReverseChronologicalPager extends IndexPager {
+       public $mDefaultDirection = true;
+       public $mYear;
+       public $mMonth;
+
+       function getNavigationBar() {
+               if ( !$this->isNavigationBarShown() ) {
+                       return '';
+               }
+
+               if ( isset( $this->mNavigationBar ) ) {
+                       return $this->mNavigationBar;
+               }
+
+               $linkTexts = array(
+                       '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 = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
+                       $this->msg( 'pipe-separator' )->escaped() .
+                       "{$pagingLinks['last']}" )->escaped();
+
+               $this->mNavigationBar = $firstLastLinks . ' ' .
+                       $this->msg( 'viewprevnext' )->rawParams(
+                               $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
+
+               return $this->mNavigationBar;
+       }
+
+       function getDateCond( $year, $month ) {
+               $year = intval( $year );
+               $month = intval( $month );
+
+               // Basic validity checks
+               $this->mYear = $year > 0 ? $year : false;
+               $this->mMonth = ( $month > 0 && $month < 13 ) ? $month : false;
+
+               // Given an optional year and month, we need to generate a timestamp
+               // to use as "WHERE rev_timestamp <= result"
+               // Examples: year = 2006 equals < 20070101 (+000000)
+               // year=2005, month=1    equals < 20050201
+               // year=2005, month=12   equals < 20060101
+               if ( !$this->mYear && !$this->mMonth ) {
+                       return;
+               }
+
+               if ( $this->mYear ) {
+                       $year = $this->mYear;
+               } else {
+                       // If no year given, assume the current one
+                       $timestamp = MWTimestamp::getInstance();
+                       $year = $timestamp->format( 'Y' );
+                       // If this month hasn't happened yet this year, go back to last year's month
+                       if ( $this->mMonth > $timestamp->format( 'n' ) ) {
+                               $year--;
+                       }
+               }
+
+               if ( $this->mMonth ) {
+                       $month = $this->mMonth + 1;
+                       // For December, we want January 1 of the next year
+                       if ( $month > 12 ) {
+                               $month = 1;
+                               $year++;
+                       }
+               } else {
+                       // No month implies we want up to the end of the year in question
+                       $month = 1;
+                       $year++;
+               }
+
+               // Y2K38 bug
+               if ( $year > 2032 ) {
+                       $year = 2032;
+               }
+
+               $ymd = (int)sprintf( "%04d%02d01", $year, $month );
+
+               if ( $ymd > 20320101 ) {
+                       $ymd = 20320101;
+               }
+
+               $this->mOffset = $this->mDb->timestamp( "${ymd}000000" );
+       }
+}
diff --git a/includes/pager/TablePager.php b/includes/pager/TablePager.php
new file mode 100644 (file)
index 0000000..19538c6
--- /dev/null
@@ -0,0 +1,429 @@
+<?php
+/**
+ * Efficient paging for SQL queries.
+ *
+ * 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 Pager
+ */
+
+/**
+ * Table-based display with a user-selectable sort order
+ * @ingroup Pager
+ */
+abstract class TablePager extends IndexPager {
+       protected $mSort;
+
+       protected $mCurrentRow;
+
+       public function __construct( IContextSource $context = null ) {
+               if ( $context ) {
+                       $this->setContext( $context );
+               }
+
+               $this->mSort = $this->getRequest()->getText( 'sort' );
+               if ( !array_key_exists( $this->mSort, $this->getFieldNames() )
+                       || !$this->isFieldSortable( $this->mSort )
+               ) {
+                       $this->mSort = $this->getDefaultSort();
+               }
+               if ( $this->getRequest()->getBool( 'asc' ) ) {
+                       $this->mDefaultDirection = false;
+               } elseif ( $this->getRequest()->getBool( 'desc' ) ) {
+                       $this->mDefaultDirection = true;
+               } /* Else leave it at whatever the class default is */
+
+               parent::__construct();
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getStartBody() {
+               global $wgStylePath;
+               $sortClass = $this->getSortHeaderClass();
+
+               $s = '';
+               $fields = $this->getFieldNames();
+
+               # Make table header
+               foreach ( $fields as $field => $name ) {
+                       if ( strval( $name ) == '' ) {
+                               $s .= Html::rawElement( 'th', array(), '&#160;' ) . "\n";
+                       } elseif ( $this->isFieldSortable( $field ) ) {
+                               $query = array( 'sort' => $field, 'limit' => $this->mLimit );
+                               if ( $field == $this->mSort ) {
+                                       # This is the sorted column
+                                       # Prepare a link that goes in the other sort order
+                                       if ( $this->mDefaultDirection ) {
+                                               # Descending
+                                               $image = 'Arr_d.png';
+                                               $query['asc'] = '1';
+                                               $query['desc'] = '';
+                                               $alt = $this->msg( 'descending_abbrev' )->escaped();
+                                       } else {
+                                               # Ascending
+                                               $image = 'Arr_u.png';
+                                               $query['asc'] = '';
+                                               $query['desc'] = '1';
+                                               $alt = $this->msg( 'ascending_abbrev' )->escaped();
+                                       }
+                                       $image = "$wgStylePath/common/images/$image";
+                                       $link = $this->makeLink(
+                                               Html::element( 'img', array( 'width' => 12, 'height' => 12,
+                                                       'alt' => $alt, 'src' => $image ) ) . htmlspecialchars( $name ), $query );
+                                       $s .= Html::rawElement( 'th', array( 'class' => $sortClass ), $link ) . "\n";
+                               } else {
+                                       $s .= Html::rawElement( 'th', array(),
+                                               $this->makeLink( htmlspecialchars( $name ), $query ) ) . "\n";
+                               }
+                       } else {
+                               $s .= Html::element( 'th', array(), $name ) . "\n";
+                       }
+               }
+
+               $tableClass = $this->getTableClass();
+               $ret = Html::openElement( 'table', array(
+                       'style' => 'border:1px;',
+                       'class' => "mw-datatable $tableClass" )
+               );
+               $ret .= Html::rawElement( 'thead', array(), Html::rawElement( 'tr', array(), "\n" . $s . "\n" ) );
+               $ret .= Html::openElement( 'tbody' ) . "\n";
+
+               return $ret;
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getEndBody() {
+               return "</tbody></table>\n";
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getEmptyBody() {
+               $colspan = count( $this->getFieldNames() );
+               $msgEmpty = $this->msg( 'table_pager_empty' )->text();
+               return Html::rawElement( 'tr', array(),
+                       Html::element( 'td', array( 'colspan' => $colspan ), $msgEmpty ) );
+       }
+
+       /**
+        * @protected
+        * @param stdClass $row
+        * @return string HTML
+        */
+       function formatRow( $row ) {
+               $this->mCurrentRow = $row; // In case formatValue etc need to know
+               $s = Html::openElement( 'tr', $this->getRowAttrs( $row ) ) . "\n";
+               $fieldNames = $this->getFieldNames();
+
+               foreach ( $fieldNames as $field => $name ) {
+                       $value = isset( $row->$field ) ? $row->$field : null;
+                       $formatted = strval( $this->formatValue( $field, $value ) );
+
+                       if ( $formatted == '' ) {
+                               $formatted = '&#160;';
+                       }
+
+                       $s .= Html::rawElement( 'td', $this->getCellAttrs( $field, $value ), $formatted ) . "\n";
+               }
+
+               $s .= Html::closeElement( 'tr' ) . "\n";
+
+               return $s;
+       }
+
+       /**
+        * Get a class name to be applied to the given row.
+        *
+        * @protected
+        *
+        * @param object $row The database result row
+        * @return string
+        */
+       function getRowClass( $row ) {
+               return '';
+       }
+
+       /**
+        * Get attributes to be applied to the given row.
+        *
+        * @protected
+        *
+        * @param object $row The database result row
+        * @return array Array of attribute => value
+        */
+       function getRowAttrs( $row ) {
+               $class = $this->getRowClass( $row );
+               if ( $class === '' ) {
+                       // Return an empty array to avoid clutter in HTML like class=""
+                       return array();
+               } else {
+                       return array( 'class' => $this->getRowClass( $row ) );
+               }
+       }
+
+       /**
+        * Get any extra attributes to be applied to the given cell. Don't
+        * take this as an excuse to hardcode styles; use classes and
+        * CSS instead.  Row context is available in $this->mCurrentRow
+        *
+        * @protected
+        *
+        * @param string $field The column
+        * @param string $value The cell contents
+        * @return array Array of attr => value
+        */
+       function getCellAttrs( $field, $value ) {
+               return array( 'class' => 'TablePager_col_' . $field );
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getIndexField() {
+               return $this->mSort;
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getTableClass() {
+               return 'TablePager';
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getNavClass() {
+               return 'TablePager_nav';
+       }
+
+       /**
+        * @protected
+        * @return string
+        */
+       function getSortHeaderClass() {
+               return 'TablePager_sort';
+       }
+
+       /**
+        * A navigation bar with images
+        * @return string HTML
+        */
+       public function getNavigationBar() {
+               global $wgStylePath;
+
+               if ( !$this->isNavigationBarShown() ) {
+                       return '';
+               }
+
+               $path = "$wgStylePath/common/images";
+               $labels = array(
+                       'first' => 'table_pager_first',
+                       'prev' => 'table_pager_prev',
+                       'next' => 'table_pager_next',
+                       'last' => 'table_pager_last',
+               );
+               $images = array(
+                       'first' => 'arrow_first_25.png',
+                       'prev' => 'arrow_left_25.png',
+                       'next' => 'arrow_right_25.png',
+                       'last' => 'arrow_last_25.png',
+               );
+               $disabledImages = array(
+                       'first' => 'arrow_disabled_first_25.png',
+                       'prev' => 'arrow_disabled_left_25.png',
+                       'next' => 'arrow_disabled_right_25.png',
+                       'last' => 'arrow_disabled_last_25.png',
+               );
+               if ( $this->getLanguage()->isRTL() ) {
+                       $keys = array_keys( $labels );
+                       $images = array_combine( $keys, array_reverse( $images ) );
+                       $disabledImages = array_combine( $keys, array_reverse( $disabledImages ) );
+               }
+
+               $linkTexts = array();
+               $disabledTexts = array();
+               foreach ( $labels as $type => $label ) {
+                       $msgLabel = $this->msg( $label )->escaped();
+                       $linkTexts[$type] = Html::element( 'img', array( 'src' => "$path/{$images[$type]}",
+                               'alt' => $msgLabel ) ) . "<br />$msgLabel";
+                       $disabledTexts[$type] = Html::element( 'img', array( 'src' => "$path/{$disabledImages[$type]}",
+                               'alt' => $msgLabel ) ) . "<br />$msgLabel";
+               }
+               $links = $this->getPagingLinks( $linkTexts, $disabledTexts );
+
+               $s = Html::openElement( 'table', array( 'class' => $this->getNavClass() ) );
+               $s .= Html::openElement( 'tr' ) . "\n";
+               $width = 100 / count( $links ) . '%';
+               foreach ( $labels as $type => $label ) {
+                       $s .= Html::rawElement( 'td', array( 'style' => "width:$width;" ), $links[$type] ) . "\n";
+               }
+               $s .= Html::closeElement( 'tr' ) . Html::closeElement( 'table' ) . "\n";
+               return $s;
+       }
+
+       /**
+        * Get a "<select>" element which has options for each of the allowed limits
+        *
+        * @param string $attribs Extra attributes to set
+        * @return string HTML fragment
+        */
+       public function getLimitSelect( $attribs = array() ) {
+               $select = new XmlSelect( 'limit', false, $this->mLimit );
+               $select->addOptions( $this->getLimitSelectList() );
+               foreach ( $attribs as $name => $value ) {
+                       $select->setAttribute( $name, $value );
+               }
+               return $select->getHTML();
+       }
+
+       /**
+        * Get a list of items to show in a "<select>" element of limits.
+        * This can be passed directly to XmlSelect::addOptions().
+        *
+        * @since 1.22
+        * @return array
+        */
+       public function getLimitSelectList() {
+               # Add the current limit from the query string
+               # to avoid that the limit is lost after clicking Go next time
+               if ( !in_array( $this->mLimit, $this->mLimitsShown ) ) {
+                       $this->mLimitsShown[] = $this->mLimit;
+                       sort( $this->mLimitsShown );
+               }
+               $ret = array();
+               foreach ( $this->mLimitsShown as $key => $value ) {
+                       # The pair is either $index => $limit, in which case the $value
+                       # will be numeric, or $limit => $text, in which case the $value
+                       # will be a string.
+                       if ( is_int( $value ) ) {
+                               $limit = $value;
+                               $text = $this->getLanguage()->formatNum( $limit );
+                       } else {
+                               $limit = $key;
+                               $text = $value;
+                       }
+                       $ret[$text] = $limit;
+               }
+               return $ret;
+       }
+
+       /**
+        * Get \<input type="hidden"\> elements for use in a method="get" form.
+        * Resubmits all defined elements of the query string, except for a
+        * blacklist, passed in the $blacklist parameter.
+        *
+        * @param array $blacklist Parameters from the request query which should not be resubmitted
+        * @return string HTML fragment
+        */
+       function getHiddenFields( $blacklist = array() ) {
+               $blacklist = (array)$blacklist;
+               $query = $this->getRequest()->getQueryValues();
+               foreach ( $blacklist as $name ) {
+                       unset( $query[$name] );
+               }
+               $s = '';
+               foreach ( $query as $name => $value ) {
+                       $s .= Html::hidden( $name, $value ) . "\n";
+               }
+               return $s;
+       }
+
+       /**
+        * Get a form containing a limit selection dropdown
+        *
+        * @return string HTML fragment
+        */
+       function getLimitForm() {
+               global $wgScript;
+
+               return Html::rawElement(
+                       'form',
+                       array(
+                               'method' => 'get',
+                               'action' => $wgScript
+                       ),
+                       "\n" . $this->getLimitDropdown()
+               ) . "\n";
+       }
+
+       /**
+        * Gets a limit selection dropdown
+        *
+        * @return string
+        */
+       function getLimitDropdown() {
+               # Make the select with some explanatory text
+               $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
+
+               return $this->msg( 'table_pager_limit' )
+                       ->rawParams( $this->getLimitSelect() )->escaped() .
+                       "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
+                       $this->getHiddenFields( array( 'limit' ) );
+       }
+
+       /**
+        * Return true if the named field should be sortable by the UI, false
+        * otherwise
+        *
+        * @param string $field
+        */
+       abstract function isFieldSortable( $field );
+
+       /**
+        * Format a table cell. The return value should be HTML, but use an empty
+        * string not &#160; for empty cells. Do not include the <td> and </td>.
+        *
+        * The current result row is available as $this->mCurrentRow, in case you
+        * need more context.
+        *
+        * @protected
+        *
+        * @param string $name The database field name
+        * @param string $value The value retrieved from the database
+        */
+       abstract function formatValue( $name, $value );
+
+       /**
+        * The database field name used as a default sort order.
+        *
+        * @protected
+        *
+        * @return string
+        */
+       abstract function getDefaultSort();
+
+       /**
+        * An array mapping database field names to a textual description of the
+        * field name, for use in the table header. The description should be plain
+        * text, it will be HTML-escaped later.
+        *
+        * @return array
+        */
+       abstract function getFieldNames();
+}
index cd1f32d..983fc14 100644 (file)
@@ -1000,7 +1000,10 @@ class CoreParserFunctions {
         * @since 1.23
         */
        private static function getCachedRevisionObject( $parser, $title = null ) {
-               static $cache = array();
+               static $cache = null;
+               if ( !isset( $cache ) ) {
+                       $cache = new MapCacheLRU( 100 );
+               }
 
                if ( is_null( $title ) ) {
                        return null;
@@ -1021,21 +1024,21 @@ class CoreParserFunctions {
                // Normalize name for cache
                $page = $title->getPrefixedDBkey();
 
-               if ( array_key_exists( $page, $cache ) ) { // cache contains null values
-                       return $cache[$page];
+               if ( $cache->has( $page ) ) { // cache contains null values
+                       return $cache->get( $page );
                }
                if ( $parser->incrementExpensiveFunctionCount() ) {
                        $rev = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
                        $pageID = $rev ? $rev->getPage() : 0;
                        $revID = $rev ? $rev->getId() : 0;
-                       $cache[$page] = $rev; // maybe null
+                       $cache->set( $page, $rev ); // maybe null
 
                        // Register dependency in templatelinks
                        $parser->getOutput()->addTemplate( $title, $pageID, $revID );
 
                        return $rev;
                }
-               $cache[$page] = null;
+               $cache->set( $page, null );
                return null;
        }
 
index c3925b3..7794fae 100644 (file)
@@ -290,7 +290,7 @@ class LinkHolderArray {
                }
 
                wfProfileIn( __METHOD__ );
-               global $wgContLang;
+               global $wgContLang, $wgContentHandlerUseDB;
 
                $colours = array();
                $linkCache = LinkCache::singleton();
@@ -348,10 +348,16 @@ class LinkHolderArray {
                                );
                        }
 
+                       $fields = array( 'page_id', 'page_namespace', 'page_title',
+                               'page_is_redirect', 'page_len', 'page_latest' );
+
+                       if ( $wgContentHandlerUseDB ) {
+                               $fields[] = 'page_content_model';
+                       }
+
                        $res = $dbr->select(
                                'page',
-                               array( 'page_id', 'page_namespace', 'page_title',
-                                       'page_is_redirect', 'page_len', 'page_latest' ),
+                               $fields,
                                $dbr->makeList( $where, LIST_OR ),
                                __METHOD__
                        );
@@ -465,7 +471,7 @@ class LinkHolderArray {
         * @param array $colours
         */
        protected function doVariants( &$colours ) {
-               global $wgContLang;
+               global $wgContLang, $wgContentHandlerUseDB;
                $linkBatch = new LinkBatch();
                $variantMap = array(); // maps $pdbkey_Variant => $keys (of link holders)
                $output = $this->parent->getOutput();
@@ -554,9 +560,15 @@ class LinkHolderArray {
                if ( !$linkBatch->isEmpty() ) {
                        // construct query
                        $dbr = wfGetDB( DB_SLAVE );
+                       $fields = array( 'page_id', 'page_namespace', 'page_title',
+                               'page_is_redirect', 'page_len', 'page_latest' );
+
+                       if ( $wgContentHandlerUseDB ) {
+                               $fields[] = 'page_content_model';
+                       }
+
                        $varRes = $dbr->select( 'page',
-                               array( 'page_id', 'page_namespace', 'page_title',
-                                       'page_is_redirect', 'page_len', 'page_latest' ),
+                               $fields,
                                $linkBatch->constructSet( 'page', $dbr ),
                                __METHOD__
                        );
index a108d2b..b310862 100644 (file)
@@ -65,7 +65,9 @@ class MWTidyWrapper {
                // ...and <mw:toc> markers
                $wrappedtext = preg_replace_callback( '/\<\\/?mw:toc\>/',
                        array( &$this, 'replaceCallback' ), $wrappedtext );
-
+               // ... and <math> tags
+               $wrappedtext = preg_replace_callback( '/\<math(.*?)\<\\/math\>/s',
+                       array( &$this, 'replaceCallback' ), $wrappedtext );
                // Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
                // we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
                $wrappedtext = preg_replace( '!<(link|meta)([^>]*?)(/{0,1}>)!', '<html-$1$2$3', $wrappedtext );
index c5c472a..61fffc5 100644 (file)
@@ -5527,7 +5527,7 @@ class Parser {
                                                                $paramName = 'no-link';
                                                                $value = true;
                                                                $validated = true;
-                                                       } elseif ( preg_match( "/^(?i)$prots/", $value ) ) {
+                                                       } elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
                                                                if ( preg_match( "/^((?i)$prots)$chars+$/u", $value, $m ) ) {
                                                                        $paramName = 'link-url';
                                                                        $this->mOutput->addExternalLink( $value );
index 75fc01f..7fa4436 100644 (file)
@@ -809,6 +809,7 @@ class ParserOutput extends CacheTime {
 
        /**
         * Save space for for serialization by removing useless values
+        * @return array
         */
        public function __sleep() {
                return array_diff(
index 77ffe9d..b32593c 100644 (file)
@@ -97,32 +97,54 @@ interface PPFrame {
 
        /**
         * Expand a document tree node, caching the result on its parent with the given key
+        * @param string|int $key
+        * @param string|PPNode $root
+        * @param int $flags
+        * @return string
         */
        public function cachedExpand( $key, $root, $flags = 0 );
 
        /**
         * Expand a document tree node
+        * @param string|PPNode $root
+        * @param int $flags
+        * @return string
         */
        public function expand( $root, $flags = 0 );
 
        /**
         * Implode with flags for expand()
+        * @param string $sep
+        * @param int $flags
+        * @param string|PPNode $args,...
+        * @return string
         */
        public function implodeWithFlags( $sep, $flags /*, ... */ );
 
        /**
         * Implode with no flags specified
+        * @param string $sep
+        * @param string|PPNode $args,...
+        * @return string
         */
        public function implode( $sep /*, ... */ );
 
        /**
         * Makes an object that, when expand()ed, will be the same as one obtained
         * with implode()
+        * @param string $sep
+        * @param string|PPNode $args,...
+        * @return PPNode
         */
        public function virtualImplode( $sep /*, ... */ );
 
        /**
         * Virtual implode with brackets
+        * @param string $start
+        * @param string $sep
+        * @param string $end
+        * @param string|PPNode $args,...
+        * @return PPNode
         */
        public function virtualBracketedImplode( $start, $sep, $end /*, ... */ );
 
@@ -135,21 +157,26 @@ interface PPFrame {
 
        /**
         * Returns all arguments of this frame
+        * @return array
         */
        public function getArguments();
 
        /**
         * Returns all numbered arguments of this frame
+        * @return array
         */
        public function getNumberedArguments();
 
        /**
         * Returns all named arguments of this frame
+        * @return array
         */
        public function getNamedArguments();
 
        /**
         * Get an argument to this frame by name
+        * @param string $name
+        * @return bool
         */
        public function getArgument( $name );
 
@@ -163,6 +190,7 @@ interface PPFrame {
 
        /**
         * Return true if the frame is a template frame
+        * @return bool
         */
        public function isTemplate();
 
@@ -240,6 +268,7 @@ interface PPNode {
        /**
         * Get an array-type node containing the children of this node.
         * Returns false if this is not a tree node.
+        * @return PPNode
         */
        public function getChildren();
 
@@ -252,12 +281,15 @@ interface PPNode {
 
        /**
         * Get the next sibling of any node. False if there isn't one
+        * @return PPNode
         */
        public function getNextSibling();
 
        /**
         * Get all children of this tree node which have a given name.
         * Returns an array-type node, or false if this is not a tree node.
+        * @param string $type
+        * @return bool|PPNode
         */
        public function getChildrenOfType( $type );
 
@@ -268,6 +300,8 @@ interface PPNode {
 
        /**
         * Returns an item of an array-type node
+        * @param int $i
+        * @return bool|PPNode
         */
        public function item( $i );
 
@@ -282,6 +316,7 @@ interface PPNode {
         *    #nodelist     An array-type node
         *
         * The subclass may define various other names for tree and leaf nodes.
+        * @return string
         */
        public function getName();
 
@@ -290,17 +325,20 @@ interface PPNode {
         *    name          PPNode name
         *    index         String index
         *    value         PPNode value
+        * @return array
         */
        public function splitArg();
 
        /**
         * Split an "<ext>" node into an associative array containing name, attr, inner and close
         * All values in the resulting array are PPNodes. Inner and close are optional.
+        * @return array
         */
        public function splitExt();
 
        /**
         * Split an "<h>" node
+        * @return array
         */
        public function splitHeading();
 }
index 6136555..2edb79a 100644 (file)
@@ -1033,7 +1033,7 @@ class PPFrame_DOM implements PPFrame {
                                if ( $arg instanceof PPNode ) {
                                        $arg = $arg->node;
                                }
-                               if ( !$xpath ) {
+                               if ( !$xpath || $xpath->document !== $arg->ownerDocument ) {
                                        $xpath = new DOMXPath( $arg->ownerDocument );
                                }
 
@@ -1315,6 +1315,7 @@ class PPFrame_DOM implements PPFrame {
        /**
         * @param string $sep
         * @param int $flags
+        * @param string|PPNode_DOM|DOMDocument $args,...
         * @return string
         */
        public function implodeWithFlags( $sep, $flags /*, ... */ ) {
@@ -1346,6 +1347,7 @@ class PPFrame_DOM implements PPFrame {
         * This previously called implodeWithFlags but has now been inlined to reduce stack depth
         *
         * @param string $sep
+        * @param string|PPNode_DOM|DOMDocument $args,...
         * @return string
         */
        public function implode( $sep /*, ... */ ) {
@@ -1377,6 +1379,7 @@ class PPFrame_DOM implements PPFrame {
         * with implode()
         *
         * @param string $sep
+        * @param string|PPNode_DOM|DOMDocument $args,...
         * @return array
         */
        public function virtualImplode( $sep /*, ... */ ) {
@@ -1408,6 +1411,7 @@ class PPFrame_DOM implements PPFrame {
         * @param string $start
         * @param string $sep
         * @param string $end
+        * @param string|PPNode_DOM|DOMDocument $args,...
         * @return array
         */
        public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
index f751832..6376396 100644 (file)
@@ -1001,7 +1001,7 @@ class PPFrame_Hash implements PPFrame {
        /**
         * @throws MWException
         * @param string|int $key
-        * @param string|PPNode_Hash|DOMDocument $root
+        * @param string|PPNode $root
         * @param int $flags
         * @return string
         */
@@ -1224,6 +1224,7 @@ class PPFrame_Hash implements PPFrame {
        /**
         * @param string $sep
         * @param int $flags
+        * @param string|PPNode $args,...
         * @return string
         */
        public function implodeWithFlags( $sep, $flags /*, ... */ ) {
@@ -1254,6 +1255,7 @@ class PPFrame_Hash implements PPFrame {
         * Implode with no flags specified
         * This previously called implodeWithFlags but has now been inlined to reduce stack depth
         * @param string $sep
+        * @param string|PPNode $args,...
         * @return string
         */
        public function implode( $sep /*, ... */ ) {
@@ -1285,6 +1287,7 @@ class PPFrame_Hash implements PPFrame {
         * with implode()
         *
         * @param string $sep
+        * @param string|PPNode $args,...
         * @return PPNode_Hash_Array
         */
        public function virtualImplode( $sep /*, ... */ ) {
@@ -1317,6 +1320,7 @@ class PPFrame_Hash implements PPFrame {
         * @param string $start
         * @param string $sep
         * @param string $end
+        * @param string|PPNode $args,...
         * @return PPNode_Hash_Array
         */
        public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
@@ -1524,7 +1528,7 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
        /**
         * @throws MWException
         * @param string|int $key
-        * @param string|PPNode_Hash|DOMDocument $root
+        * @param string|PPNode $root
         * @param int $flags
         * @return string
         */
index 198420c..60fd783 100644 (file)
@@ -855,7 +855,7 @@ class ResourceLoader {
                // Pre-fetch blobs
                if ( $context->shouldIncludeMessages() ) {
                        try {
-                               $blobs = MessageBlobStore::get( $this, $modules, $context->getLanguage() );
+                               $blobs = MessageBlobStore::getInstance()->get( $this, $modules, $context->getLanguage() );
                        } catch ( Exception $e ) {
                                MWExceptionHandler::logException( $e );
                                wfDebugLog(
@@ -1007,12 +1007,14 @@ class ResourceLoader {
                                $out .= self::makeLoaderStateScript( $states );
                        }
 
-                       // In only=script requests for modules that are not raw (e.g. not the startup module)
-                       // ensure the execution is conditional to avoid situations where browsers with an
-                       // unsupported environment do unconditionally execute a module's scripts. Otherwise users
-                       // will get things like "ReferenceError: mw is undefined" or "jQuery is undefined" from
-                       // legacy scripts loaded with only=scripts (such as the 'site' module).
-                       $out = self::makeLoaderConditionalScript( $out );
+                       if ( $context->getOnly() === 'scripts' ) {
+                               // In only=script requests for modules that are not raw (e.g. not the startup module)
+                               // ensure the execution is conditional to avoid situations where browsers with an
+                               // unsupported environment do unconditionally execute a module's scripts. Otherwise users
+                               // will get things like "ReferenceError: mw is undefined" or "jQuery is undefined" from
+                               // legacy scripts loaded with only=scripts (such as the 'site' module).
+                               $out = self::makeLoaderConditionalScript( $out );
+                       }
                } else {
                        if ( count( $states ) ) {
                                $exceptions .= self::makeComment(
@@ -1179,11 +1181,13 @@ class ResourceLoader {
         * Returns JS code which calls mw.loader.register with the given
         * parameters. Has three calling conventions:
         *
-        *   - ResourceLoader::makeLoaderRegisterScript( $name, $version, $dependencies, $group, $source, $skip ):
-        *       Register a single module.
+        *   - ResourceLoader::makeLoaderRegisterScript( $name, $version,
+        *        $dependencies, $group, $source, $skip
+        *     ):
+        *        Register a single module.
         *
         *   - ResourceLoader::makeLoaderRegisterScript( array( $name1, $name2 ) ):
-        *       Register modules with the given names.
+        *        Register modules with the given names.
         *
         *   - ResourceLoader::makeLoaderRegisterScript( array(
         *        array( $name1, $version1, $dependencies1, $group1, $source1, $skip1 ),
@@ -1481,7 +1485,7 @@ class ResourceLoader {
 
                $less = new lessc();
                $less->setPreserveComments( true );
-               $less->setVariables( self::getLESSVars( $config ) );
+               $less->setVariables( self::getLessVars( $config ) );
                $less->setImportDir( $config->get( 'ResourceLoaderLESSImportPaths' ) );
                foreach ( $config->get( 'ResourceLoaderLESSFunctions' ) as $name => $func ) {
                        $less->registerFunction( $name, $func );
@@ -1496,7 +1500,7 @@ class ResourceLoader {
         * @since 1.22
         * @return array Map of variable names to string CSS values.
         */
-       public static function getLESSVars( Config $config ) {
+       public static function getLessVars( Config $config ) {
                $lessVars = $config->get( 'ResourceLoaderLESSVars' );
                // Sort by key to ensure consistent hashing for cache lookups.
                ksort( $lessVars );
index 8a223b0..0c84700 100644 (file)
@@ -859,7 +859,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                }
 
                if ( $this->getStyleSheetLang( $localPath ) === 'less' ) {
-                       $style = $this->compileLESSFile( $localPath );
+                       $style = $this->compileLessFile( $localPath );
                        $this->hasGeneratedStyles = true;
                } else {
                        $style = file_get_contents( $localPath );
@@ -898,61 +898,20 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                return $this->targets;
        }
 
-       /**
-        * Generate a cache key for a LESS file.
-        *
-        * The cache key varies on the file name and the names and values of global
-        * LESS variables.
-        *
-        * @since 1.22
-        * @param string $fileName File name of root LESS file.
-        * @return string Cache key
-        */
-       protected function getLESSCacheKey( $fileName ) {
-               $vars = json_encode( ResourceLoader::getLESSVars( $this->getConfig() ) );
-               $hash = md5( $fileName . $vars );
-               return wfMemcKey( 'resourceloader', 'less', $hash );
-       }
-
        /**
         * Compile a LESS file into CSS.
         *
-        * If invalid, returns replacement CSS source consisting of the compilation
-        * error message encoded as a comment. To save work, we cache a result object
-        * which comprises the compiled CSS and the names & mtimes of the files
-        * that were processed. lessphp compares the cached & current mtimes and
-        * recompiles as necessary.
+        * Keeps track of all used files and adds them to localFileRefs.
         *
         * @since 1.22
-        * @throws Exception If Less encounters a parse error
-        * @throws MWException If Less compilation returns unexpection result
+        * @throws Exception If lessc encounters a parse error
         * @param string $fileName File path of LESS source
         * @return string CSS source
         */
-       protected function compileLESSFile( $fileName ) {
-               $key = $this->getLESSCacheKey( $fileName );
-               $cache = wfGetCache( CACHE_ANYTHING );
-
-               // The input to lessc. Either an associative array representing the
-               // cached results of a previous compilation, or the string file name if
-               // no cache result exists.
-               $source = $cache->get( $key );
-               if ( !is_array( $source ) || !isset( $source['root'] ) ) {
-                       $source = $fileName;
-               }
-
+       protected function compileLessFile( $fileName ) {
                $compiler = ResourceLoader::getLessCompiler( $this->getConfig() );
-               $result = null;
-
-               $result = $compiler->cachedCompile( $source );
-
-               if ( !is_array( $result ) ) {
-                       throw new MWException( 'LESS compiler result has type '
-                               . gettype( $result ) . '; array expected.' );
-               }
-
-               $this->localFileRefs += array_keys( $result['files'] );
-               $cache->set( $key, $result );
-               return $result['compiled'];
+               $result = $compiler->compileFile( $fileName );
+               $this->localFileRefs += array_keys( $compiler->allParsedFiles() );
+               return $result;
        }
 }
index eb1461f..987b902 100644 (file)
@@ -34,6 +34,8 @@ class ResourceLoaderLESSFunctions {
         *       background-image: url(@url) !ie;
         *   }
         * @endcode
+        * @param array $frame
+        * @param lessc $less
         */
        public static function embeddable( $frame, $less ) {
                $base = pathinfo( $less->parser->sourceName, PATHINFO_DIRNAME );
@@ -54,6 +56,9 @@ class ResourceLoaderLESSFunctions {
         *       background-image: embed('../images/button-bg.png');
         *   }
         * @endcode
+        * @param array $frame
+        * @param lessc $less
+        * @return string
         */
        public static function embed( $frame, $less ) {
                $base = pathinfo( $less->parser->sourceName, PATHINFO_DIRNAME );
index a1c8ac9..09d90d6 100644 (file)
@@ -43,6 +43,7 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
                        'grammarForms' => $language->getGrammarForms(),
                        'pluralRules' => $language->getPluralRules(),
                        'digitGroupingPattern' => $language->digitGroupingPattern(),
+                       'fallbackLanguages' => $language->getFallbackLanguages(),
                );
        }
 
index 78fe45c..e455ef1 100644 (file)
@@ -207,6 +207,13 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                continue;
                        }
 
+                       if ( $module->isRaw() ) {
+                               // Don't register "raw" modules (like 'jquery' and 'mediawiki') client-side because
+                               // depending on them is illegal anyway and would only lead to them being reloaded
+                               // causing any state to be lost (like jQuery plugins, mw.config etc.)
+                               continue;
+                       }
+
                        // getModifiedTime() is supposed to return a UNIX timestamp, but it doesn't always
                        // seem to do that, and custom implementations might forget. Coerce it to TS_UNIX
                        $moduleMtime = wfTimestamp( TS_UNIX, $module->getModifiedTime( $context ) );
index e652422..668467c 100644 (file)
@@ -44,8 +44,8 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
 
                return array(
                        'editToken' => $wgUser->getEditToken(),
-                       'patrolToken' => ApiQueryRecentChanges::getPatrolToken( null, null ),
-                       'watchToken' => ApiQueryInfo::getWatchToken( null, null ),
+                       'patrolToken' => $wgUser->getEditToken( 'patrol' ),
+                       'watchToken' => $wgUser->getEditToken( 'watch' ),
                );
        }
 
diff --git a/includes/revisiondelete/RevDelItem.php b/includes/revisiondelete/RevDelItem.php
new file mode 100644 (file)
index 0000000..ebdbf3a
--- /dev/null
@@ -0,0 +1,62 @@
+<?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 RevisionDelete
+ */
+
+/**
+ * Abstract base class for deletable items
+ */
+abstract class RevDelItem extends RevisionItemBase {
+       /**
+        * Returns true if the item is "current", and the operation to set the given
+        * bits can't be executed for that reason
+        * STUB
+        * @param int $newBits
+        * @return bool
+        */
+       public function isHideCurrentOp( $newBits ) {
+               return false;
+       }
+
+       /**
+        * Get the current deletion bitfield value
+        */
+       abstract public function getBits();
+
+       /**
+        * Set the visibility of the item. This should do any necessary DB queries.
+        *
+        * The DB update query should have a condition which forces it to only update
+        * if the value in the DB matches the value fetched earlier with the SELECT.
+        * If the update fails because it did not match, the function should return
+        * false. This prevents concurrency problems.
+        *
+        * @param int $newBits
+        * @return bool Success
+        */
+       abstract public function setBits( $newBits );
+
+       /**
+        * Get the return information about the revision for the API
+        * @since 1.23
+        * @param ApiResult $result API result object
+        * @return array Data for the API result
+        */
+       abstract public function getApiData( ApiResult $result );
+}
diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php
new file mode 100644 (file)
index 0000000..a0ff667
--- /dev/null
@@ -0,0 +1,313 @@
+<?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 RevisionDelete
+ */
+
+/**
+ * Abstract base class for a list of deletable items. The list class
+ * needs to be able to make a query from a set of identifiers to pull
+ * relevant rows, to return RevDelItem subclasses wrapping them, and
+ * to wrap bulk update operations.
+ */
+abstract class RevDelList extends RevisionListBase {
+       function __construct( IContextSource $context, Title $title, array $ids ) {
+               parent::__construct( $context, $title );
+               $this->ids = $ids;
+       }
+
+       /**
+        * Get the DB field name associated with the ID list.
+        * This used to populate the log_search table for finding log entries.
+        * Override this function.
+        * @return string|null
+        */
+       public static function getRelationType() {
+               return null;
+       }
+
+       /**
+        * Get the user right required for this list type
+        * Override this function.
+        * @since 1.22
+        * @return string|null
+        */
+       public static function getRestriction() {
+               return null;
+       }
+
+       /**
+        * Get the revision deletion constant for this list type
+        * Override this function.
+        * @since 1.22
+        * @return int|null
+        */
+       public static function getRevdelConstant() {
+               return null;
+       }
+
+       /**
+        * Suggest a target for the revision deletion
+        * Optionally override this function.
+        * @since 1.22
+        * @param Title|null $target User-supplied target
+        * @param array $ids
+        * @return Title|null
+        */
+       public static function suggestTarget( $target, array $ids ) {
+               return $target;
+       }
+
+       /**
+        * Set the visibility for the revisions in this list. Logging and
+        * transactions are done here.
+        *
+        * @param array $params Associative array of parameters. Members are:
+        *     value:         The integer value to set the visibility to
+        *     comment:       The log comment.
+        *     perItemStatus: Set if you want per-item status reports
+        * @return Status
+        * @since 1.23 Added 'perItemStatus' param
+        */
+       public function setVisibility( $params ) {
+               $bitPars = $params['value'];
+               $comment = $params['comment'];
+               $perItemStatus = isset( $params['perItemStatus'] ) ? $params['perItemStatus'] : false;
+
+               $this->res = false;
+               $dbw = wfGetDB( DB_MASTER );
+               $this->doQuery( $dbw );
+               $dbw->begin( __METHOD__ );
+               $status = Status::newGood();
+               $missing = array_flip( $this->ids );
+               $this->clearFileOps();
+               $idsForLog = array();
+               $authorIds = $authorIPs = array();
+
+               if ( $perItemStatus ) {
+                       $status->itemStatuses = array();
+               }
+
+               // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
+               for ( $this->reset(); $this->current(); $this->next() ) {
+                       // @codingStandardsIgnoreEnd
+                       $item = $this->current();
+                       unset( $missing[$item->getId()] );
+
+                       if ( $perItemStatus ) {
+                               $itemStatus = Status::newGood();
+                               $status->itemStatuses[$item->getId()] = $itemStatus;
+                       } else {
+                               $itemStatus = $status;
+                       }
+
+                       $oldBits = $item->getBits();
+                       // Build the actual new rev_deleted bitfield
+                       $newBits = RevisionDeleter::extractBitfield( $bitPars, $oldBits );
+
+                       if ( $oldBits == $newBits ) {
+                               $itemStatus->warning( 'revdelete-no-change', $item->formatDate(), $item->formatTime() );
+                               $status->failCount++;
+                               continue;
+                       } elseif ( $oldBits == 0 && $newBits != 0 ) {
+                               $opType = 'hide';
+                       } elseif ( $oldBits != 0 && $newBits == 0 ) {
+                               $opType = 'show';
+                       } else {
+                               $opType = 'modify';
+                       }
+
+                       if ( $item->isHideCurrentOp( $newBits ) ) {
+                               // Cannot hide current version text
+                               $itemStatus->error( 'revdelete-hide-current', $item->formatDate(), $item->formatTime() );
+                               $status->failCount++;
+                               continue;
+                       }
+                       if ( !$item->canView() ) {
+                               // Cannot access this revision
+                               $msg = ( $opType == 'show' ) ?
+                                       'revdelete-show-no-access' : 'revdelete-modify-no-access';
+                               $itemStatus->error( $msg, $item->formatDate(), $item->formatTime() );
+                               $status->failCount++;
+                               continue;
+                       }
+                       // Cannot just "hide from Sysops" without hiding any fields
+                       if ( $newBits == Revision::DELETED_RESTRICTED ) {
+                               $itemStatus->warning( 'revdelete-only-restricted', $item->formatDate(), $item->formatTime() );
+                               $status->failCount++;
+                               continue;
+                       }
+
+                       // Update the revision
+                       $ok = $item->setBits( $newBits );
+
+                       if ( $ok ) {
+                               $idsForLog[] = $item->getId();
+                               $status->successCount++;
+                               if ( $item->getAuthorId() > 0 ) {
+                                       $authorIds[] = $item->getAuthorId();
+                               } elseif ( IP::isIPAddress( $item->getAuthorName() ) ) {
+                                       $authorIPs[] = $item->getAuthorName();
+                               }
+                       } else {
+                               $itemStatus->error( 'revdelete-concurrent-change', $item->formatDate(), $item->formatTime() );
+                               $status->failCount++;
+                       }
+               }
+
+               // Handle missing revisions
+               foreach ( $missing as $id => $unused ) {
+                       if ( $perItemStatus ) {
+                               $status->itemStatuses[$id] = Status::newFatal( 'revdelete-modify-missing', $id );
+                       } else {
+                               $status->error( 'revdelete-modify-missing', $id );
+                       }
+                       $status->failCount++;
+               }
+
+               if ( $status->successCount == 0 ) {
+                       $dbw->rollback( __METHOD__ );
+                       return $status;
+               }
+
+               // Save success count
+               $successCount = $status->successCount;
+
+               // Move files, if there are any
+               $status->merge( $this->doPreCommitUpdates() );
+               if ( !$status->isOK() ) {
+                       // Fatal error, such as no configured archive directory
+                       $dbw->rollback( __METHOD__ );
+                       return $status;
+               }
+
+               // Log it
+               $this->updateLog( array(
+                       'title' => $this->title,
+                       'count' => $successCount,
+                       'newBits' => $newBits,
+                       'oldBits' => $oldBits,
+                       'comment' => $comment,
+                       'ids' => $idsForLog,
+                       'authorIds' => $authorIds,
+                       'authorIPs' => $authorIPs
+               ) );
+               $dbw->commit( __METHOD__ );
+
+               // Clear caches
+               $status->merge( $this->doPostCommitUpdates() );
+               return $status;
+       }
+
+       /**
+        * Reload the list data from the master DB. This can be done after setVisibility()
+        * to allow $item->getHTML() to show the new data.
+        */
+       function reloadFromMaster() {
+               $dbw = wfGetDB( DB_MASTER );
+               $this->res = $this->doQuery( $dbw );
+       }
+
+       /**
+        * Record a log entry on the action
+        * @param array $params Associative array of parameters:
+        *     newBits:         The new value of the *_deleted bitfield
+        *     oldBits:         The old value of the *_deleted bitfield.
+        *     title:           The target title
+        *     ids:             The ID list
+        *     comment:         The log comment
+        *     authorsIds:      The array of the user IDs of the offenders
+        *     authorsIPs:      The array of the IP/anon user offenders
+        * @throws MWException
+        */
+       protected function updateLog( $params ) {
+               // Get the URL param's corresponding DB field
+               $field = RevisionDeleter::getRelationType( $this->getType() );
+               if ( !$field ) {
+                       throw new MWException( "Bad log URL param type!" );
+               }
+               // Put things hidden from sysops in the oversight log
+               if ( ( $params['newBits'] | $params['oldBits'] ) & $this->getSuppressBit() ) {
+                       $logType = 'suppress';
+               } else {
+                       $logType = 'delete';
+               }
+               // Add params for effected page and ids
+               $logParams = $this->getLogParams( $params );
+               // Actually add the deletion log entry
+               $log = new LogPage( $logType );
+               $logid = $log->addEntry( $this->getLogAction(), $params['title'],
+                       $params['comment'], $logParams, $this->getUser() );
+               // Allow for easy searching of deletion log items for revision/log items
+               $log->addRelations( $field, $params['ids'], $logid );
+               $log->addRelations( 'target_author_id', $params['authorIds'], $logid );
+               $log->addRelations( 'target_author_ip', $params['authorIPs'], $logid );
+       }
+
+       /**
+        * Get the log action for this list type
+        * @return string
+        */
+       public function getLogAction() {
+               return 'revision';
+       }
+
+       /**
+        * Get log parameter array.
+        * @param array $params Associative array of log parameters, same as updateLog()
+        * @return array
+        */
+       public function getLogParams( $params ) {
+               return array(
+                       $this->getType(),
+                       implode( ',', $params['ids'] ),
+                       "ofield={$params['oldBits']}",
+                       "nfield={$params['newBits']}"
+               );
+       }
+
+       /**
+        * Clear any data structures needed for doPreCommitUpdates() and doPostCommitUpdates()
+        * STUB
+        */
+       public function clearFileOps() {
+       }
+
+       /**
+        * A hook for setVisibility(): do batch updates pre-commit.
+        * STUB
+        * @return Status
+        */
+       public function doPreCommitUpdates() {
+               return Status::newGood();
+       }
+
+       /**
+        * A hook for setVisibility(): do any necessary updates post-commit.
+        * STUB
+        * @return Status
+        */
+       public function doPostCommitUpdates() {
+               return Status::newGood();
+       }
+
+       /**
+        * Get the integer value of the flag used for suppression
+        */
+       abstract public function getSuppressBit();
+}
diff --git a/includes/revisiondelete/RevisionDeleteAbstracts.php b/includes/revisiondelete/RevisionDeleteAbstracts.php
deleted file mode 100644 (file)
index e92a533..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-<?php
-/**
- * Interface definition for deletable items.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup RevisionDelete
- */
-
-/**
- * Abstract base class for a list of deletable items. The list class
- * needs to be able to make a query from a set of identifiers to pull
- * relevant rows, to return RevDelItem subclasses wrapping them, and
- * to wrap bulk update operations.
- */
-abstract class RevDelList extends RevisionListBase {
-       function __construct( IContextSource $context, Title $title, array $ids ) {
-               parent::__construct( $context, $title );
-               $this->ids = $ids;
-       }
-
-       /**
-        * Get the DB field name associated with the ID list.
-        * This used to populate the log_search table for finding log entries.
-        * Override this function.
-        * @return string|null
-        */
-       public static function getRelationType() {
-               return null;
-       }
-
-       /**
-        * Get the user right required for this list type
-        * Override this function.
-        * @since 1.22
-        * @return string|null
-        */
-       public static function getRestriction() {
-               return null;
-       }
-
-       /**
-        * Get the revision deletion constant for this list type
-        * Override this function.
-        * @since 1.22
-        * @return int|null
-        */
-       public static function getRevdelConstant() {
-               return null;
-       }
-
-       /**
-        * Suggest a target for the revision deletion
-        * Optionally override this function.
-        * @since 1.22
-        * @param Title|null $target User-supplied target
-        * @param array $ids
-        * @return Title|null
-        */
-       public static function suggestTarget( $target, array $ids ) {
-               return $target;
-       }
-
-       /**
-        * Set the visibility for the revisions in this list. Logging and
-        * transactions are done here.
-        *
-        * @param array $params Associative array of parameters. Members are:
-        *     value:         The integer value to set the visibility to
-        *     comment:       The log comment.
-        *     perItemStatus: Set if you want per-item status reports
-        * @return Status
-        * @since 1.23 Added 'perItemStatus' param
-        */
-       public function setVisibility( $params ) {
-               $bitPars = $params['value'];
-               $comment = $params['comment'];
-               $perItemStatus = isset( $params['perItemStatus'] ) ? $params['perItemStatus'] : false;
-
-               $this->res = false;
-               $dbw = wfGetDB( DB_MASTER );
-               $this->doQuery( $dbw );
-               $dbw->begin( __METHOD__ );
-               $status = Status::newGood();
-               $missing = array_flip( $this->ids );
-               $this->clearFileOps();
-               $idsForLog = array();
-               $authorIds = $authorIPs = array();
-
-               if ( $perItemStatus ) {
-                       $status->itemStatuses = array();
-               }
-
-               // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
-               for ( $this->reset(); $this->current(); $this->next() ) {
-                       // @codingStandardsIgnoreEnd
-                       $item = $this->current();
-                       unset( $missing[$item->getId()] );
-
-                       if ( $perItemStatus ) {
-                               $itemStatus = Status::newGood();
-                               $status->itemStatuses[$item->getId()] = $itemStatus;
-                       } else {
-                               $itemStatus = $status;
-                       }
-
-                       $oldBits = $item->getBits();
-                       // Build the actual new rev_deleted bitfield
-                       $newBits = RevisionDeleter::extractBitfield( $bitPars, $oldBits );
-
-                       if ( $oldBits == $newBits ) {
-                               $itemStatus->warning( 'revdelete-no-change', $item->formatDate(), $item->formatTime() );
-                               $status->failCount++;
-                               continue;
-                       } elseif ( $oldBits == 0 && $newBits != 0 ) {
-                               $opType = 'hide';
-                       } elseif ( $oldBits != 0 && $newBits == 0 ) {
-                               $opType = 'show';
-                       } else {
-                               $opType = 'modify';
-                       }
-
-                       if ( $item->isHideCurrentOp( $newBits ) ) {
-                               // Cannot hide current version text
-                               $itemStatus->error( 'revdelete-hide-current', $item->formatDate(), $item->formatTime() );
-                               $status->failCount++;
-                               continue;
-                       }
-                       if ( !$item->canView() ) {
-                               // Cannot access this revision
-                               $msg = ( $opType == 'show' ) ?
-                                       'revdelete-show-no-access' : 'revdelete-modify-no-access';
-                               $itemStatus->error( $msg, $item->formatDate(), $item->formatTime() );
-                               $status->failCount++;
-                               continue;
-                       }
-                       // Cannot just "hide from Sysops" without hiding any fields
-                       if ( $newBits == Revision::DELETED_RESTRICTED ) {
-                               $itemStatus->warning( 'revdelete-only-restricted', $item->formatDate(), $item->formatTime() );
-                               $status->failCount++;
-                               continue;
-                       }
-
-                       // Update the revision
-                       $ok = $item->setBits( $newBits );
-
-                       if ( $ok ) {
-                               $idsForLog[] = $item->getId();
-                               $status->successCount++;
-                               if ( $item->getAuthorId() > 0 ) {
-                                       $authorIds[] = $item->getAuthorId();
-                               } elseif ( IP::isIPAddress( $item->getAuthorName() ) ) {
-                                       $authorIPs[] = $item->getAuthorName();
-                               }
-                       } else {
-                               $itemStatus->error( 'revdelete-concurrent-change', $item->formatDate(), $item->formatTime() );
-                               $status->failCount++;
-                       }
-               }
-
-               // Handle missing revisions
-               foreach ( $missing as $id => $unused ) {
-                       if ( $perItemStatus ) {
-                               $status->itemStatuses[$id] = Status::newFatal( 'revdelete-modify-missing', $id );
-                       } else {
-                               $status->error( 'revdelete-modify-missing', $id );
-                       }
-                       $status->failCount++;
-               }
-
-               if ( $status->successCount == 0 ) {
-                       $dbw->rollback( __METHOD__ );
-                       return $status;
-               }
-
-               // Save success count
-               $successCount = $status->successCount;
-
-               // Move files, if there are any
-               $status->merge( $this->doPreCommitUpdates() );
-               if ( !$status->isOK() ) {
-                       // Fatal error, such as no configured archive directory
-                       $dbw->rollback( __METHOD__ );
-                       return $status;
-               }
-
-               // Log it
-               $this->updateLog( array(
-                       'title' => $this->title,
-                       'count' => $successCount,
-                       'newBits' => $newBits,
-                       'oldBits' => $oldBits,
-                       'comment' => $comment,
-                       'ids' => $idsForLog,
-                       'authorIds' => $authorIds,
-                       'authorIPs' => $authorIPs
-               ) );
-               $dbw->commit( __METHOD__ );
-
-               // Clear caches
-               $status->merge( $this->doPostCommitUpdates() );
-               return $status;
-       }
-
-       /**
-        * Reload the list data from the master DB. This can be done after setVisibility()
-        * to allow $item->getHTML() to show the new data.
-        */
-       function reloadFromMaster() {
-               $dbw = wfGetDB( DB_MASTER );
-               $this->res = $this->doQuery( $dbw );
-       }
-
-       /**
-        * Record a log entry on the action
-        * @param array $params Associative array of parameters:
-        *     newBits:         The new value of the *_deleted bitfield
-        *     oldBits:         The old value of the *_deleted bitfield.
-        *     title:           The target title
-        *     ids:             The ID list
-        *     comment:         The log comment
-        *     authorsIds:      The array of the user IDs of the offenders
-        *     authorsIPs:      The array of the IP/anon user offenders
-        * @throws MWException
-        */
-       protected function updateLog( $params ) {
-               // Get the URL param's corresponding DB field
-               $field = RevisionDeleter::getRelationType( $this->getType() );
-               if ( !$field ) {
-                       throw new MWException( "Bad log URL param type!" );
-               }
-               // Put things hidden from sysops in the oversight log
-               if ( ( $params['newBits'] | $params['oldBits'] ) & $this->getSuppressBit() ) {
-                       $logType = 'suppress';
-               } else {
-                       $logType = 'delete';
-               }
-               // Add params for effected page and ids
-               $logParams = $this->getLogParams( $params );
-               // Actually add the deletion log entry
-               $log = new LogPage( $logType );
-               $logid = $log->addEntry( $this->getLogAction(), $params['title'],
-                       $params['comment'], $logParams, $this->getUser() );
-               // Allow for easy searching of deletion log items for revision/log items
-               $log->addRelations( $field, $params['ids'], $logid );
-               $log->addRelations( 'target_author_id', $params['authorIds'], $logid );
-               $log->addRelations( 'target_author_ip', $params['authorIPs'], $logid );
-       }
-
-       /**
-        * Get the log action for this list type
-        * @return string
-        */
-       public function getLogAction() {
-               return 'revision';
-       }
-
-       /**
-        * Get log parameter array.
-        * @param array $params Associative array of log parameters, same as updateLog()
-        * @return array
-        */
-       public function getLogParams( $params ) {
-               return array(
-                       $this->getType(),
-                       implode( ',', $params['ids'] ),
-                       "ofield={$params['oldBits']}",
-                       "nfield={$params['newBits']}"
-               );
-       }
-
-       /**
-        * Clear any data structures needed for doPreCommitUpdates() and doPostCommitUpdates()
-        * STUB
-        */
-       public function clearFileOps() {
-       }
-
-       /**
-        * A hook for setVisibility(): do batch updates pre-commit.
-        * STUB
-        * @return Status
-        */
-       public function doPreCommitUpdates() {
-               return Status::newGood();
-       }
-
-       /**
-        * A hook for setVisibility(): do any necessary updates post-commit.
-        * STUB
-        * @return Status
-        */
-       public function doPostCommitUpdates() {
-               return Status::newGood();
-       }
-
-       /**
-        * Get the integer value of the flag used for suppression
-        */
-       abstract public function getSuppressBit();
-}
-
-/**
- * Abstract base class for deletable items
- */
-abstract class RevDelItem extends RevisionItemBase {
-       /**
-        * Returns true if the item is "current", and the operation to set the given
-        * bits can't be executed for that reason
-        * STUB
-        * @param int $newBits
-        * @return bool
-        */
-       public function isHideCurrentOp( $newBits ) {
-               return false;
-       }
-
-       /**
-        * Get the current deletion bitfield value
-        */
-       abstract public function getBits();
-
-       /**
-        * Set the visibility of the item. This should do any necessary DB queries.
-        *
-        * The DB update query should have a condition which forces it to only update
-        * if the value in the DB matches the value fetched earlier with the SELECT.
-        * If the update fails because it did not match, the function should return
-        * false. This prevents concurrency problems.
-        *
-        * @param int $newBits
-        * @return bool Success
-        */
-       abstract public function setBits( $newBits );
-
-       /**
-        * Get the return information about the revision for the API
-        * @since 1.23
-        * @param ApiResult $result API result object
-        * @return array Data for the API result
-        */
-       abstract public function getApiData( ApiResult $result );
-}
index 6953462..c3c3a8f 100644 (file)
@@ -483,6 +483,7 @@ class SearchHighlighter {
         * the target is category or image, leave it
         *
         * @param array $matches
+        * @return string
         */
        function linkReplace( $matches ) {
                $colon = strpos( $matches[1], ':' );
@@ -554,4 +555,21 @@ class SearchHighlighter {
 
                return $extract;
        }
+
+       /**
+        * Returns the first few lines of the text
+        *
+        * @param string $text
+        * @param int $contextlines Max number of returned lines
+        * @param int $contextchars Average number of characters per line
+        * @return string
+        */
+       public function highlightNone( $text, $contextlines, $contextchars ) {
+               $match = array();
+               $text = ltrim( $text ) . "\n"; // make sure the preg_match may find the last line
+               $text = str_replace( "\n\n", "\n", $text ); // remove empty lines
+               preg_match( "/^(.*\n){0,$contextlines}/", $text, $match );
+               $text = htmlspecialchars( substr( trim( $match[0] ), 0, $contextlines * $contextchars ) ); // trim and limit to max number of chars
+               return str_replace( "\n", '<br>', $text );
+       }
 }
index d51bff7..1d28691 100644 (file)
@@ -166,11 +166,16 @@ class SearchResult {
 
                // TODO: make highliter take a content object. Make ContentHandler a factory for SearchHighliter.
                list( $contextlines, $contextchars ) = SearchEngine::userHighlightPrefs();
+
                $h = new SearchHighlighter();
-               if ( $wgAdvancedSearchHighlighting ) {
-                       return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
+               if ( count( $terms ) > 0 ) {
+                       if ( $wgAdvancedSearchHighlighting ) {
+                               return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
+                       } else {
+                               return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
+                       }
                } else {
-                       return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
+                       return $h->highlightNone( $this->mText, $contextlines, $contextchars );
                }
        }
 
index 3750bad..dc06eba 100644 (file)
@@ -417,7 +417,7 @@ abstract class Skin extends ContextSource {
 
        /**
         * Return values for <html> element
-        * @return array of associative name-to-value elements for <html> element
+        * @return array Array of associative name-to-value elements for <html> element
         */
        public function getHtmlElementAttributes() {
                $lang = $this->getLanguage();
index 0935e33..fb40857 100644 (file)
@@ -70,7 +70,7 @@ class SkinFactory {
         *     to be, but doing so would change the case of i18n message keys).
         * @param string $displayName For backwards-compatibility with old skin loading system. This is
         *     the text used as skin's human-readable name when the 'skinname-<skin>' message is not
-   *     available. It should be the same as the skin name provided in $wgExtensionCredits.
+        *     available. It should be the same as the skin name provided in $wgExtensionCredits.
         * @param callable $callback Callback that takes the skin name as an argument
         * @throws InvalidArgumentException If an invalid callback is provided
         */
@@ -159,7 +159,7 @@ class SkinFactory {
         * Get a legacy skin which uses the autodiscovery mechanism.
         *
         * @param string $name
-        * @return Skin|bool false if the skin couldn't be constructed
+        * @return Skin|bool False if the skin couldn't be constructed
         */
        private function getLegacySkin( $name ) {
                $skinNames = $this->getLegacySkinNames();
index b63f7a1..96ff228 100644 (file)
@@ -25,4 +25,12 @@ class SkinFallback extends SkinTemplate {
                parent::setupSkinUserCss( $out );
                $out->addModuleStyles( 'mediawiki.skinning.interface' );
        }
+
+       /**
+        * @param OutputPage $out
+        */
+       public function initPage( OutputPage $out ) {
+               parent::initPage( $out );
+               $out->enableClientCache( false );
+       }
 }
index b6077b3..93845aa 100644 (file)
@@ -271,7 +271,7 @@ class SkinTemplate extends Skin {
                wfProfileIn( __METHOD__ . '-init' );
                $this->initPage( $out );
                wfProfileOut( __METHOD__ . '-init' );
-               $tpl = $this->prepareQuickTemplate();
+               $tpl = $this->prepareQuickTemplate( $out );
                // execute template
                wfProfileIn( __METHOD__ . '-execute' );
                $res = $tpl->execute();
index 3ff281f..272d533 100644 (file)
@@ -42,8 +42,7 @@ abstract class ImageQueryPage extends QueryPage {
         */
        protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
                if ( $num > 0 ) {
-                       $gallery = ImageGalleryBase::factory();
-                       $gallery->setContext( $this->getContext() );
+                       $gallery = ImageGalleryBase::factory( false, $this->getContext() );
 
                        # $res might contain the whole 1,000 rows, so we read up to
                        # $num [should update this to use a Pager]
index 1e4e18b..7096fde 100644 (file)
@@ -336,8 +336,9 @@ class AllMessagesTablePager extends TablePager {
        }
 
        function getStartBody() {
+               $tableClass = $this->getTableClass();
                return Xml::openElement( 'table', array(
-                               'class' => 'mw-datatable TablePager',
+                               'class' => "mw-datatable $tableClass",
                                'id' => 'mw-allmessagestable'
                        ) ) .
                        "\n" .
index 62fadb5..e2ebdbe 100644 (file)
@@ -409,7 +409,7 @@ class BlockListPager extends TablePager {
        }
 
        public function getTableClass() {
-               return 'TablePager mw-blocklist';
+               return parent::getTableClass() . ' mw-blocklist';
        }
 
        function getIndexField() {
index 2a3ab64..eab4784 100644 (file)
@@ -31,6 +31,8 @@
  */
 class SpecialImport extends SpecialPage {
        private $interwiki = false;
+       private $subproject;
+       private $fullInterwikiPrefix;
        private $namespace;
        private $rootpage = '';
        private $frompage = '';
@@ -55,6 +57,8 @@ class SpecialImport extends SpecialPage {
                $this->setHeaders();
                $this->outputHeader();
 
+               $this->getOutput()->addModules( 'mediawiki.special.import' );
+
                $user = $this->getUser();
                if ( !$user->isAllowedAny( 'import', 'importupload' ) ) {
                        throw new PermissionsError( 'import' );
@@ -116,19 +120,30 @@ class SpecialImport extends SpecialPage {
                        if ( !$user->isAllowed( 'import' ) ) {
                                throw new PermissionsError( 'import' );
                        }
-                       $this->interwiki = $request->getVal( 'interwiki' );
-                       if ( !in_array( $this->interwiki, $this->getConfig()->get( 'ImportSources' ) ) ) {
+                       $this->interwiki = $this->fullInterwikiPrefix = $request->getVal( 'interwiki' );
+                       // does this interwiki have subprojects?
+                       $importSources = $this->getConfig()->get( 'ImportSources' );
+                       $hasSubprojects = array_key_exists( $this->interwiki, $importSources );
+                       if ( !$hasSubprojects && !in_array( $this->interwiki, $importSources ) ) {
                                $source = Status::newFatal( "import-invalid-interwiki" );
                        } else {
-                               $this->history = $request->getCheck( 'interwikiHistory' );
-                               $this->frompage = $request->getText( "frompage" );
-                               $this->includeTemplates = $request->getCheck( 'interwikiTemplates' );
-                               $source = ImportStreamSource::newFromInterwiki(
-                                       $this->interwiki,
-                                       $this->frompage,
-                                       $this->history,
-                                       $this->includeTemplates,
-                                       $this->pageLinkDepth );
+                               if ( $hasSubprojects ) {
+                                       $this->subproject = $request->getVal( 'subproject' );
+                                       $this->fullInterwikiPrefix .= ':' . $request->getVal( 'subproject' );
+                               }
+                               if ( $hasSubprojects && !in_array( $this->subproject, $importSources[$this->interwiki] ) ) {
+                                       $source = Status::newFatal( "import-invalid-interwiki" );
+                               } else {
+                                       $this->history = $request->getCheck( 'interwikiHistory' );
+                                       $this->frompage = $request->getText( "frompage" );
+                                       $this->includeTemplates = $request->getCheck( 'interwikiTemplates' );
+                                       $source = ImportStreamSource::newFromInterwiki(
+                                               $this->fullInterwikiPrefix,
+                                               $this->frompage,
+                                               $this->history,
+                                               $this->includeTemplates,
+                                               $this->pageLinkDepth );
+                               }
                        }
                } else {
                        $source = Status::newFatal( "importunknownsource" );
@@ -166,7 +181,7 @@ class SpecialImport extends SpecialPage {
                        $reporter = new ImportReporter(
                                $importer,
                                $isUpload,
-                               $this->interwiki,
+                               $this->fullInterwikiPrefix,
                                $this->logcomment
                        );
                        $reporter->setContext( $this->getContext() );
@@ -299,7 +314,7 @@ class SpecialImport extends SpecialPage {
                                        Xml::openElement( 'table', array( 'id' => 'mw-import-table-interwiki' ) ) .
                                        "<tr>
                                        <td class='mw-label'>" .
-                                       Xml::label( $this->msg( 'import-interwiki-source' )->text(), 'interwiki' ) .
+                                       Xml::label( $this->msg( 'import-interwiki-sourcewiki' )->text(), 'interwiki' ) .
                                        "</td>
                                        <td class='mw-input'>" .
                                        Xml::openElement(
@@ -308,13 +323,63 @@ class SpecialImport extends SpecialPage {
                                        )
                        );
 
-                       foreach ( $importSources as $prefix ) {
-                               $selected = ( $this->interwiki === $prefix ) ? ' selected="selected"' : '';
-                               $out->addHTML( Xml::option( $prefix, $prefix, $selected ) );
+                       $needSubprojectField = false;
+                       foreach ( $importSources as $key => $value ) {
+                               if ( is_int( $key ) ) {
+                                       $key = $value;
+                               } elseif ( $value !== $key ) {
+                                       $needSubprojectField = true;
+                               }
+
+                               $attribs = array(
+                                       'value' => $key,
+                               );
+                               if ( is_array( $value ) ) {
+                                       $attribs['data-subprojects'] = implode( ' ', $value );
+                               }
+                               if ( $this->interwiki === $key ) {
+                                       $attribs['selected'] = 'selected';
+                               }
+                               $out->addHTML( Html::element( 'option', $attribs, $key ) );
+                       }
+
+                       $out->addHTML(
+                               Xml::closeElement( 'select' )
+                       );
+
+                       if ( $needSubprojectField ) {
+                               $out->addHTML(
+                                       Xml::openElement(
+                                               'select',
+                                               array( 'name' => 'subproject', 'id' => 'subproject' )
+                                       )
+                               );
+
+                               $subprojectsToAdd = array();
+                               foreach ( $importSources as $key => $value ) {
+                                       if ( is_array( $value ) ) {
+                                               $subprojectsToAdd = array_merge( $subprojectsToAdd, $value );
+                                       }
+                               }
+                               $subprojectsToAdd = array_unique( $subprojectsToAdd );
+                               sort( $subprojectsToAdd );
+                               foreach ( $subprojectsToAdd as $subproject ) {
+                                       $out->addHTML( Xml::option( $subproject, $subproject, $this->subproject === $subproject ) );
+                               }
+
+                               $out->addHTML(
+                                       Xml::closeElement( 'select' )
+                               );
                        }
 
                        $out->addHTML(
-                               Xml::closeElement( 'select' ) .
+                                       "</td>
+                               </tr>
+                               <tr>
+                                       <td class='mw-label'>" .
+                                       Xml::label( $this->msg( 'import-interwiki-sourcepage' )->text(), 'frompage' ) .
+                                       "</td>
+                                       <td class='mw-input'>" .
                                        Xml::input( 'frompage', 50, $this->frompage, array( 'id' => 'frompage' ) ) .
                                        "</td>
                                </tr>
index c1dc158..2667270 100644 (file)
@@ -51,6 +51,7 @@ class ListDuplicatedFilesPage extends QueryPage {
         * However this version should be no more expensive then
         * Special:MostLinked, which seems to get handled fine
         * with however we are doing cached special pages.
+        * @return array
         */
        function getQueryInfo() {
                return array(
index c62c1de..cea6ff8 100644 (file)
@@ -301,6 +301,7 @@ class ImageListPager extends TablePager {
         * @param int $offset
         * @param int $limit
         * @param bool $asc
+        * @return array
         */
        function reallyDoQuery( $offset, $limit, $asc ) {
                $prevTableName = $this->mTableName;
@@ -499,54 +500,73 @@ class ImageListPager extends TablePager {
        }
 
        function getForm() {
-               $inputForm = array();
-               $inputForm['table_pager_limit_label'] = $this->getLimitSelect( array( 'tabindex' => 1 ) );
+               $fields = array();
+               $fields['limit'] = array(
+                       'type' => 'select',
+                       'name' => 'limit',
+                       'label-message' => 'table_pager_limit_label',
+                       'options' => $this->getLimitSelectList(),
+                       'default' => $this->mLimit,
+               );
+
                if ( !$this->getConfig()->get( 'MiserMode' ) ) {
-                       $inputForm['listfiles_search_for'] = Html::input(
-                               'ilsearch',
-                               $this->mSearch,
-                               'text',
-                               array(
-                                       'size' => '40',
-                                       'maxlength' => '255',
-                                       'id' => 'mw-ilsearch',
-                                       'tabindex' => 2,
-                               )
+                       $fields['ilsearch'] = array(
+                               'type' => 'text',
+                               'name' => 'ilsearch',
+                               'id' => 'mw-ilsearch',
+                               'label-message' => 'listfiles_search_for',
+                               'default' => $this->mSearch,
+                               'size' => '40',
+                               'maxlength' => '255',
                        );
                }
-               $inputForm['username'] = Html::input( 'user', $this->mUserName, 'text', array(
+
+               $fields['user'] = array(
+                       'type' => 'text',
+                       'name' => 'user',
+                       'id' => 'mw-listfiles-user',
+                       'label-message' => 'username',
+                       'default' => $this->mUserName,
                        'size' => '40',
                        'maxlength' => '255',
-                       'id' => 'mw-listfiles-user',
-                       'tabindex' => 3,
-               ) );
-
-               $inputForm['listfiles-show-all'] = Html::input( 'ilshowall', 1, 'checkbox', array(
-                       'checked' => $this->mShowAll,
-                       'tabindex' => 4,
-               ) );
-
-               return Html::openElement( 'form',
-                       array( 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listfiles-form' )
-               ) .
-                       Xml::fieldset( $this->msg( 'listfiles' )->text() ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
-                       Xml::buildForm( $inputForm, 'table_pager_limit_submit', array( 'tabindex' => 5 ) ) .
-                       $this->getHiddenFields( array( 'limit', 'ilsearch', 'user', 'title', 'ilshowall' ) ) .
-                       Html::closeElement( 'fieldset' ) .
-                       Html::closeElement( 'form' ) . "\n";
+               );
+
+               $fields['ilshowall'] = array(
+                       'type' => 'check',
+                       'name' => 'ilshowall',
+                       'id' => 'mw-listfiles-show-all',
+                       'label-message' => 'listfiles-show-all',
+                       'default' => $this->mShowAll,
+               );
+
+               $query = $this->getRequest()->getQueryValues();
+               unset( $query['title'] );
+               unset( $query['limit'] );
+               unset( $query['ilsearch'] );
+               unset( $query['user'] );
+
+               $form = new HTMLForm( $fields, $this->getContext() );
+
+               $form->setMethod( 'get' );
+               $form->setId( 'mw-listfiles-form' );
+               $form->setWrapperLegendMsg( 'listfiles' );
+               $form->setSubmitTextMsg( 'table_pager_limit_submit' );
+               $form->addHiddenFields( $query );
+
+               $form->prepareForm();
+               $form->displayForm( '' );
        }
 
        function getTableClass() {
-               return 'listfiles ' . parent::getTableClass();
+               return parent::getTableClass() . ' listfiles';
        }
 
        function getNavClass() {
-               return 'listfiles_nav ' . parent::getNavClass();
+               return parent::getNavClass() . ' listfiles_nav';
        }
 
        function getSortHeaderClass() {
-               return 'listfiles_sort ' . parent::getSortHeaderClass();
+               return parent::getSortHeaderClass() . ' listfiles_sort';
        }
 
        function getPagingQueries() {
index 3f1850d..5bd69e0 100644 (file)
@@ -99,6 +99,7 @@ class MIMEsearchPage extends QueryPage {
         * that this report gives results in a logical order). As an aditional
         * note, mysql seems to by default order things by img_name ASC, which
         * is what we ideally want, so everything works out fine anyhow.
+        * @return array
         */
        function getOrderFields() {
                return array();
@@ -183,7 +184,8 @@ class MIMEsearchPage extends QueryPage {
                        'video',
                        'message',
                        'model',
-                       'multipart'
+                       'multipart',
+                       'chemical'
                );
 
                return in_array( $type, $types );
index 6efc12b..492eb3b 100644 (file)
@@ -496,7 +496,7 @@ class MergeHistoryPager extends ReverseChronologicalPager {
        /** @var array */
        public $mConds;
 
-       function __construct( $form, $conds = array(), $source, $dest ) {
+       function __construct( $form, $conds, $source, $dest ) {
                $this->mForm = $form;
                $this->mConds = $conds;
                $this->title = $source;
@@ -550,7 +550,7 @@ class MergeHistoryPager extends ReverseChronologicalPager {
        function getQueryInfo() {
                $conds = $this->mConds;
                $conds['rev_page'] = $this->articleID;
-               $conds[] = "rev_timestamp < {$this->maxTimestamp}";
+               $conds[] = "rev_timestamp < " . $this->mDb->addQuotes( $this->maxTimestamp );
 
                return array(
                        'tables' => array( 'revision', 'page', 'user' ),
index aff5947..546c191 100644 (file)
@@ -140,12 +140,11 @@ class NewFilesPager extends ReverseChronologicalPager {
                        // Note that null for mode is taken to mean use default.
                        $mode = $this->getRequest()->getVal( 'gallerymode', null );
                        try {
-                               $this->gallery = ImageGalleryBase::factory( $mode );
+                               $this->gallery = ImageGalleryBase::factory( $mode, $this->getContext() );
                        } catch ( MWException $e ) {
                                // User specified something invalid, fallback to default.
-                               $this->gallery = ImageGalleryBase::factory();
+                               $this->gallery = ImageGalleryBase::factory( false, $this->getContext() );
                        }
-                       $this->gallery->setContext( $this->getContext() );
                }
 
                return '';
index fbb2d73..0b70bb7 100644 (file)
@@ -117,7 +117,6 @@ class SpecialNewpages extends IncludableSpecialPage {
         * Show a form for filtering namespace and username
         *
         * @param string $par
-        * @return string
         */
        public function execute( $par ) {
                $out = $this->getOutput();
index 6e04762..5c8794a 100644 (file)
@@ -97,6 +97,7 @@ class SpecialPageLanguage extends FormSpecialPage {
        /**
         *
         * @param array $data
+        * @return bool
         */
        public function onSubmit( array $data ) {
                $title = Title::newFromText( $data['pagename'] );
index b64b029..5072e76 100644 (file)
@@ -558,7 +558,7 @@ class ProtectedPagesPager extends TablePager {
        }
 
        public function getTableClass() {
-               return 'TablePager mw-protectedpages';
+               return parent::getTableClass() . ' mw-protectedpages';
        }
 
        function getIndexField() {
index 28a1bc5..570ab3b 100644 (file)
@@ -46,7 +46,7 @@
  *
  * @ingroup SpecialPage
  */
-class SpecialRandomInCategory extends SpecialPage {
+class SpecialRandomInCategory extends FormSpecialPage {
        protected $extra = array(); // Extra SQL statements
        protected $category = false; // Title object of category
        protected $maxOffset = 30; // Max amount to fudge randomness by.
@@ -67,10 +67,35 @@ class SpecialRandomInCategory extends SpecialPage {
                $this->minTimestamp = null;
        }
 
-       public function execute( $par ) {
+       protected function getFormFields() {
+               $form = array(
+                       'category' => array(
+                               'type' => 'text',
+                               'label-message' => 'randomincategory-category',
+                               'required' => true,
+                       )
+               );
+
+               return $form;
+       }
+
+       public function requiresWrite() {
+               return false;
+       }
+
+       public function requiresUnblock() {
+               return false;
+       }
+
+       protected function setParameter( $par ) {
+               // if subpage present, fake form submission
+               $this->onSubmit( array( 'category' => $par ) );
+       }
+
+       public function onSubmit( array $data ) {
                $cat = false;
 
-               $categoryStr = $this->getRequest()->getText( 'category', $par );
+               $categoryStr = $data['category'];
 
                if ( $categoryStr ) {
                        $cat = Title::newFromText( $categoryStr, NS_CATEGORY );
@@ -86,41 +111,25 @@ class SpecialRandomInCategory extends SpecialPage {
                }
 
                if ( !$this->category && $categoryStr ) {
-                       $this->setHeaders();
-                       $this->getOutput()->addWikiMsg( 'randomincategory-invalidcategory',
+                       $msg = $this->msg( 'randomincategory-invalidcategory',
                                wfEscapeWikiText( $categoryStr ) );
 
-                       return;
+                       return Status::newFatal( $msg );
+
                } elseif ( !$this->category ) {
-                       $this->setHeaders();
-                       $input = Html::input( 'category' );
-                       $submitText = $this->msg( 'randomincategory-selectcategory-submit' )->text();
-                       $submit = Html::input( '', $submitText, 'submit' );
-
-                       $msg = $this->msg( 'randomincategory-selectcategory' );
-                       $form = Html::rawElement( 'form', array( 'action' => wfScript() ),
-                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
-                               $msg->rawParams( $input, $submit )->parse()
-                       );
-                       $this->getOutput()->addHtml( $form );
-
-                       return;
+                       return; // no data sent
                }
 
                $title = $this->getRandomTitle();
 
                if ( is_null( $title ) ) {
-                       $this->setHeaders();
-                       $this->getOutput()->addWikiMsg( 'randomincategory-nopages',
+                       $msg = $this->msg( 'randomincategory-nopages',
                                $this->category->getText() );
 
-                       return;
+                       return Status::newFatal( $msg );
                }
 
-               $query = $this->getRequest()->getValues();
-               unset( $query['title'] );
-               unset( $query['category'] );
-               $this->getOutput()->redirect( $title->getFullURL( $query ) );
+               $this->getOutput()->redirect( $title->getFullURL() );
        }
 
        /**
index 6c5401a..4add742 100644 (file)
@@ -77,6 +77,7 @@ class SpecialResetTokens extends FormSpecialPage {
        /**
         * Display appropriate message if there's nothing to do.
         * The submit button is also suppressed in this case (see alterForm()).
+        * @return array
         */
        protected function getFormFields() {
                $user = $this->getUser();
index 54f224a..d4a06eb 100644 (file)
@@ -61,7 +61,7 @@ class SpecialRunJobs extends UnlistedSpecialPage {
 
                $squery = $params;
                unset( $squery['signature'] );
-               $cSig = self::getQuerySignature( $squery ); // correct signature
+               $cSig = self::getQuerySignature( $squery, $this->getConfig()->get( 'SecretKey' ) ); // correct signature
                $rSig = $params['signature']; // provided signature
 
                $verified = is_string( $rSig ) && hash_equals( $cSig, $rSig );
@@ -102,12 +102,11 @@ class SpecialRunJobs extends UnlistedSpecialPage {
 
        /**
         * @param array $query
+        * @param string $secretKey
         * @return string
         */
-       public static function getQuerySignature( array $query ) {
-               global $wgSecretKey;
-
+       public static function getQuerySignature( array $query, $secretKey ) {
                ksort( $query ); // stable order
-               return hash_hmac( 'sha1', wfArrayToCgi( $query ), $wgSecretKey );
+               return hash_hmac( 'sha1', wfArrayToCgi( $query ), $secretKey );
        }
 }
index 6419a57..3407476 100644 (file)
@@ -96,6 +96,16 @@ class SpecialSearch extends SpecialPage {
                $search = str_replace( "\n", " ", $request->getText( 'search', $titleParam ) );
 
                $this->load();
+               if ( !is_null( $request->getVal( 'nsRemember' ) ) ) {
+                       $this->saveNamespaces();
+                       // Remove the token from the URL to prevent the user from inadvertently
+                       // exposing it (e.g. by pasting it into a public wiki page) or undoing
+                       // later settings changes (e.g. by reloading the page).
+                       $query = $request->getValues();
+                       unset( $query['title'], $query['nsRemember'] );
+                       $out->redirect( $this->getPageTitle()->getFullURL( $query ) );
+                       return;
+               }
 
                $this->searchEngineType = $request->getVal( 'srbackend' );
 
@@ -209,7 +219,6 @@ class SpecialSearch extends SpecialPage {
                $search = $this->getSearchEngine();
                $search->setLimitOffset( $this->limit, $this->offset );
                $search->setNamespaces( $this->namespaces );
-               $this->saveNamespaces();
                $search->prefix = $this->mPrefix;
                $term = $search->transformSearchTerm( $term );
 
@@ -358,10 +367,8 @@ class SpecialSearch extends SpecialPage {
                                        $this->limit + $this->offset >= $totalRes
                                );
                        }
-                       wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
-               } else {
-                       wfRunHooks( 'SpecialSearchNoResults', array( $term ) );
                }
+               wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
 
                $out->parserOptions()->setEditSection( false );
                if ( $titleMatches ) {
@@ -516,9 +523,8 @@ class SpecialSearch extends SpecialPage {
                $request = $this->getRequest();
 
                if ( $user->isLoggedIn() &&
-                       !is_null( $request->getVal( 'nsRemember' ) ) &&
                        $user->matchEditToken(
-                               $request->getVal( 'nsToken' ),
+                               $request->getVal( 'nsRemember' ),
                                'searchnamespace',
                                $request
                        )
@@ -528,7 +534,7 @@ class SpecialSearch extends SpecialPage {
                        foreach ( MWNamespace::getValidNamespaces() as $n ) {
                                $user->setOption( 'searchNs' . $n, false );
                        }
-                       // The request parameters include all the namespaces we just searched.
+                       // The request parameters include all the namespaces to be searched.
                        // Even if they're the same as an existing profile, they're not eaten.
                        foreach ( $this->namespaces as $n ) {
                                $user->setOption( 'searchNs' . $n, true );
@@ -932,18 +938,17 @@ class SpecialSearch extends SpecialPage {
                $remember = '';
                $user = $this->getUser();
                if ( $user->isLoggedIn() ) {
-                       $remember .= Html::hidden(
-                               'nsToken',
-                               $user->getEditToken(
-                                       'searchnamespace',
-                                       $this->getRequest()
-                               )
-                       ) .
-                       Xml::checkLabel(
+                       $remember .= Xml::checkLabel(
                                wfMessage( 'powersearch-remember' )->text(),
                                'nsRemember',
                                'mw-search-powersearch-remember',
-                               false
+                               false,
+                               // The token goes here rather than in a hidden field so it
+                               // is only sent when necessary (not every form submission).
+                               array( 'value' => $user->getEditToken(
+                                       'searchnamespace',
+                                       $this->getRequest()
+                               ) )
                        );
                }
 
@@ -951,7 +956,7 @@ class SpecialSearch extends SpecialPage {
                return Xml::openElement( 'fieldset', array( 'id' => 'mw-searchoptions' ) ) .
                        Xml::element( 'legend', null, $this->msg( 'powersearch-legend' )->text() ) .
                        Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
-                       Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
+                       Xml::element( 'div', array( 'id' => 'mw-search-togglebox' ), '', false ) .
                        Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
                        implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
                        $hidden .
index 5e5588c..552031f 100644 (file)
@@ -41,7 +41,7 @@ class SpecialTrackingCategories extends SpecialPage {
                $this->outputHeader();
                $this->getOutput()->allowClickjacking();
                $this->getOutput()->addHTML(
-                       Html::openElement( 'table', array( 'class' => 'mw-datatable TablePager',
+                       Html::openElement( 'table', array( 'class' => 'mw-datatable',
                                'id' => 'mw-trackingcategories-table' ) ) . "\n" .
                        "<thead><tr>
                        <th>" .
index 4fd7cd4..5c5026c 100644 (file)
@@ -725,8 +725,7 @@ class SpecialUpload extends SpecialPage {
                        return '';
                }
 
-               $gallery = ImageGalleryBase::factory();
-               $gallery->setContext( $this->getContext() );
+               $gallery = ImageGalleryBase::factory( false, $this->getContext() );
                $gallery->setShowBytes( false );
                foreach ( $dupes as $file ) {
                        $gallery->add( $file->getTitle() );
index afa12a0..c156a5d 100644 (file)
@@ -1374,7 +1374,6 @@ class LoginForm extends SpecialPage {
                $template->set( 'cansecurelogin', ( $wgSecureLogin === true ) );
                $template->set( 'stickhttps', (int)$this->mStickHTTPS );
                $template->set( 'loggedin', $user->isLoggedIn() );
-               $template->set( 'loggedinuser', $user->getName() );
 
                if ( $this->mType == 'signup' ) {
                        if ( !self::getCreateaccountToken() ) {
index 87ab41c..97c7704 100644 (file)
@@ -212,9 +212,11 @@ class SpecialVersion extends SpecialPage {
                // wikimarkup can be used.
                $software = array();
                $software['[https://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
-               $phpKey = wfIsHHVM() ? '[http://hhvm.com/ HHVM]' :
-                       '[https://php.net/ PHP]';
-               $software[$phpKey] = PHP_VERSION . " (" . PHP_SAPI . ")";
+               if ( wfIsHHVM() ) {
+                       $software['[http://hhvm.com/ HHVM]'] = HHVM_VERSION . " (" . PHP_SAPI . ")";
+               } else {
+                       $software['[https://php.net/ PHP]'] = PHP_VERSION . " (" . PHP_SAPI . ")";
+               }
                $software[$dbr->getSoftwareLink()] = $dbr->getServerInfo();
 
                // Allow a hook to add/remove items.
@@ -724,7 +726,7 @@ class SpecialVersion extends SpecialPage {
                        if ( $vcsDate ) {
                                $vcsTimeString = Html::element( 'span',
                                        array( 'class' => 'mw-version-ext-vcs-timestamp' ),
-                                       $this->getLanguage()->timeanddate( $vcsDate )
+                                       $this->getLanguage()->timeanddate( $vcsDate, true )
                                );
                                $versionString .= " {$vcsTimeString}";
                        }
index 8bba426..ad01905 100644 (file)
@@ -37,11 +37,6 @@ class UserloginTemplate extends BaseTemplate {
        <?php } ?>
        <div id="userloginForm">
                <form name="userlogin" class="mw-ui-vform" method="post" action="<?php $this->text( 'action' ); ?>">
-                       <?php if ( $this->data['loggedin'] ) { ?>
-                               <div class="warningbox">
-                                       <?php echo $this->getMsg( 'userlogin-loggedin' )->params( $this->data['loggedinuser'] )->parse(); ?>
-                               </div>
-                       <?php } ?>
                        <section class="mw-form-header">
                                <?php $this->html( 'header' ); /* extensions such as ConfirmEdit add form HTML here */ ?>
                        </section>
@@ -171,15 +166,9 @@ class UserloginTemplate extends BaseTemplate {
                        </div>
 
                        <?php if ( $this->haveData( 'createOrLoginHref' ) ) { ?>
-                               <?php if ( $this->data['loggedin'] ) { ?>
-                                       <div id="mw-createaccount-another">
-                                               <a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7"  class="mw-ui-button"><?php $this->msg( 'userlogin-createanother' ); ?></a>
-                                       </div>
-                               <?php } else { ?>
-                                       <div id="mw-createaccount-cta">
-                                               <?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7"  class="mw-ui-button mw-ui-progressive"><?php $this->msg( 'userlogin-joinproject' ); ?></a>
-                                       </div>
-                               <?php } ?>
+                               <div id="mw-createaccount-cta">
+                                       <?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7"  class="mw-ui-button mw-ui-progressive"><?php $this->msg( 'userlogin-joinproject' ); ?></a>
+                               </div>
                        <?php } ?>
                        <?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
                        <?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
index d86de79..1499302 100644 (file)
@@ -62,8 +62,6 @@ class UploadFromChunks extends UploadFromFile {
                        }
                        $this->stash = new UploadStash( $this->repo, $this->user );
                }
-
-               return true;
        }
 
        /**
index b97e2ad..3ceb620 100644 (file)
@@ -148,6 +148,7 @@ abstract class CdbWriter {
 
        /**
         * Are we running on Windows?
+        * @return bool
         */
        protected function isWindows() {
                return substr( php_uname(), 0, 7 ) == 'Windows';
index 6c53249..cc13679 100644 (file)
@@ -99,7 +99,8 @@ class MWCryptHKDF {
 
 
        /**
-        * @param string $hash Name of hashing algorithm
+        * @param string $secretKeyMaterial
+        * @param string $algorithm Name of hashing algorithm
         * @param BagOStuff $cache
         * @param string|array $context Context to mix into HKDF context
         */
index 31a71c4..b602f78 100644 (file)
@@ -61,6 +61,7 @@ class MWCryptRand {
 
        /**
         * Initialize an initial random state based off of whatever we can find
+        * @return string
         */
        protected function initialRandomState() {
                // $_SERVER contains a variety of unstable user and system specific information
index dffe242..5346afa 100644 (file)
@@ -117,7 +117,7 @@ class UIDGenerator {
        }
 
        /**
-        * @param array $info (UIDGenerator::millitime(), clock sequence)
+        * @param array $info (UIDGenerator::millitime(), counter, clock sequence)
         * @return string 88 bits
         */
        protected function getTimestampedID88( array $info ) {
index 0f56e33..bc84976 100644 (file)
@@ -129,6 +129,9 @@ class ZipDirectoryReader {
 
        /**
         * Private constructor
+        * @param string $fileName
+        * @param callable $callback
+        * @param array $options
         */
        protected function __construct( $fileName, $callback, $options ) {
                $this->fileName = $fileName;
@@ -359,6 +362,8 @@ class ZipDirectoryReader {
 
        /**
         * Read the central directory at the given location
+        * @param int $offset
+        * @param int $size
         */
        function readCentralDirectory( $offset, $size ) {
                $block = $this->getBlock( $offset, $size );
@@ -450,6 +455,7 @@ class ZipDirectoryReader {
 
        /**
         * Interpret ZIP64 "extra field" data and return an associative array.
+        * @param string $extraField
         * @return array|bool
         */
        function unpackZip64Extra( $extraField ) {
@@ -575,6 +581,7 @@ class ZipDirectoryReader {
 
        /**
         * Get the size of a structure in bytes. See unpack() for the format of $struct.
+        * @param array $struct
         * @return int
         */
        function getStructSize( $struct ) {
index cd8df5d..2bc4554 100644 (file)
@@ -1026,6 +1026,11 @@ class Language {
 
        /**
         * Pass through result from $dateTimeObj->format()
+        * @param DateTime|bool|null &$dateTimeObj
+        * @param string $ts
+        * @param DateTimeZone|bool|null $zone
+        * @param string $code
+        * @return string
         */
        private static function dateTimeObjFormat( &$dateTimeObj, $ts, $zone, $code ) {
                if ( !$dateTimeObj ) {
@@ -3992,7 +3997,7 @@ class Language {
         * Get the list of variants supported by this language
         * see sample implementation in LanguageZh.php
         *
-        * @return array an array of language codes
+        * @return array An array of language codes
         */
        public function getVariants() {
                return $this->mConverter->getVariants();
@@ -4284,7 +4289,7 @@ class Language {
         *
         * @since 1.22
         * @param string $code Language code
-        * @return array array( fallbacks, site fallbacks )
+        * @return array Array( fallbacks, site fallbacks )
         */
        public static function getFallbacksIncludingSiteLanguage( $code ) {
                global $wgLanguageCode;
@@ -4339,7 +4344,7 @@ class Language {
         *
         * @since 1.19
         * @param string $code Language code
-        * @return array of message keys (strings)
+        * @return array Array of message keys (strings)
         */
        public static function getMessageKeysFor( $code ) {
                return self::getLocalisationCache()->getSubItemList( $code, 'messages' );
@@ -4611,7 +4616,7 @@ class Language {
         * @param Title $title Title object to link
         * @param int $offset
         * @param int $limit
-        * @param array|string $query Optional URL query parameter string
+        * @param array $query Optional URL query parameter string
         * @param bool $atend Optional param for specified if this is the last page
         * @return string
         */
index abca495..eae77fb 100644 (file)
@@ -1102,6 +1102,7 @@ class LanguageConverter {
 
        /**
         * Get the cached separator pattern for ConverterRule::parseRules()
+        * @return string
         */
        function getVarSeparatorPattern() {
                if ( is_null( $this->mVarSeparatorPattern ) ) {
index 2051a5b..9004676 100644 (file)
@@ -33,7 +33,7 @@
  * Some writing systems require some line-height fixes. This includes
  * most Indic scripts, like Devanagari.
  * If you are adding support for such a language, add it also to
- * the relevant section in skins/common/shared.css.
+ * the relevant section in shared.css.
  *
  * @ingroup Language
  */
index 545f19a..f9e54ae 100644 (file)
        "talkpagelinktext": "Marit",
        "specialpage": "Laman kusuih",
        "personaltools": "Peukakaih droë",
-       "postcomment": "Beunagi barô",
        "articlepage": "Eu asoë laman",
        "talk": "Marit",
        "views": "Seuneudeuih",
        "externaldberror": "Na seunalah bak peusahèh basis data luwa atawa droëneuh hana geubri idin keu neupeubarô akun luwa droëneuh",
        "login": "Tamöng",
        "nav-login-createaccount": "Tamöng / dapeuta",
-       "loginprompt": "Droëneuh suwah/payah neupeu’udép ''cookies'' mangat jeuët neutamong u {{SITENAME}}",
        "userlogin": "Tamöng / dapeuta",
        "userloginnocreate": "Tamöng",
        "logout": "Teubiët",
        "filetype-banned": "Jeunèh beureukaih nyoe geutheun.",
        "illegal-filename": "Nan beureukaih han jeut lagèe nyoe.",
        "savefile": "Kubah beureukaih",
-       "uploadedimage": "peutamöng \"[[$1]]\"",
-       "overwroteimage": "peutamöng vèrsi barô \"[[$1]]\"",
        "upload-source": "Asai beureukaih",
        "sourcefilename": "Asai nan beureukaih:",
        "sourceurl": "Asai URL:",
index bae51c9..32b7b8c 100644 (file)
        "talkpagelinktext": "Ħdith",
        "specialpage": "صفحة خاصة",
        "personaltools": "Outils mteεek",
-       "postcomment": "قسم جديد",
        "articlepage": "عرض صفحة المحتوى",
        "talk": "Ħdith",
        "views": "Affichages",
        "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.",
        "login": "ادخل",
        "nav-login-createaccount": "Connecti / aεmel compte",
-       "loginprompt": "يجب أن تكون الكوكيز لديك مفعلة لتسجل الدخول إلى {{SITENAME}}.",
        "userlogin": "ادخل / أنشئ حسابا",
        "userloginnocreate": "دخول",
        "logout": "اخرج",
        "upload": "Abεeth des fichiers l'esserveur",
        "uploadlogpage": "سجل الرفع",
        "filedesc": "ملخص:",
-       "uploadedimage": "رفع \"[[$1]]\"",
        "license": "ترخيص:",
        "license-header": "licence",
        "file-anchor-link": "milaf (Fichier)",
index 9cb0166..3db54fb 100644 (file)
        "searchprofile-advanced-tooltip": "Soek in spesifieke naamruimtes",
        "search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorde}})",
        "search-result-category-size": "{{PLURAL:$1|1 kategorielid|$1 kategorielede}} ({{PLURAL:$2|1 subkategorie|$2 subkategorieë}}, {{PLURAL:$3|1 lêer|$3 lêers}})",
-       "search-result-score": "Relevansie: $1%",
        "search-redirect": "(aanstuur $1)",
        "search-section": "(afdeling $1)",
        "search-suggest": "Het u $1 bedoel?",
        "uploadwarning": "Laaiwaarskuwing",
        "uploadwarning-text": "Verander die onderstaande lêerbeskrywing en probeer dan weer.",
        "savefile": "Stoor lêer",
-       "uploadedimage": "het \"[[$1]]\" gelaai",
-       "overwroteimage": "het 'n nuwe weergawe van \"[[$1]]\" opgelaai",
        "uploaddisabled": "Die oplaai van lêers is afgeskakel.",
        "copyuploaddisabled": "Die oplaai van lêers per URL is afgeskakel.",
        "uploaddisabledtext": "Die oplaai van lêers is afgeskakel.",
index df26585..6399f44 100644 (file)
        "talkpagelinktext": "Bisedo",
        "specialpage": "Faqe speciale",
        "personaltools": "Vegla vetjake",
-       "postcomment": "Sekcion i ri",
        "articlepage": "Shiko artikullin",
        "talk": "Diskutimi",
        "views": "Paraqitje",
        "externaldberror": "Ose pat gabim në databazën e autentifikimit, ose nuk lejoheni me ndryshue llogarinë tuej të jashtme.",
        "login": "Kyçu",
        "nav-login-createaccount": "Kyçu / çel llogari",
-       "loginprompt": "Shfletuesi duhet me pranue keksa (cookies) për me mujtë me u kyçë në {{SITENAME}}.",
        "userlogin": "Kyçu / çel llogari",
        "userloginnocreate": "Kyçu",
        "logout": "Çkyçu",
        "searchprofile-everything-tooltip": "Kërko krejt përmbajtjen (përfshi edhe faqet e diskutimit)",
        "searchprofile-advanced-tooltip": "Kërkimi në hapësina",
        "search-result-size": "$1 ({{PLURAL:$2|1 fjalë|$2 fjalë}})",
-       "search-result-score": "Relevanca: $1%",
        "search-redirect": "(përcjellje $1)",
        "search-section": "(sekcioni $1)",
        "search-suggest": "Mos menduet: $1",
        "recentchangeslinked-to": "Trego ndryshimet në faqet që lidhen në këtë faqe",
        "upload": "Ngarkoni skeda",
        "uploadlogpage": "Regjistri i ngarkimeve",
-       "uploadedimage": "ngarkue \"[[$1]]\"",
        "file-anchor-link": "Figura",
        "filehist": "Historiku i dosjes",
        "filehist-help": "Kliko në datë/orë për me pa skedën si âsht dukë në atë kohë.",
index 20ad098..1ff713b 100644 (file)
        "talkpagelinktext": "ውይይት",
        "specialpage": "ልዩ ገጽ",
        "personaltools": "የኔ መሣርያዎች",
-       "postcomment": "አስተያየት ለማቅረብ",
        "articlepage": "መጣጥፉን ለማየት",
        "talk": "ውይይት",
        "views": "ዕይታዎች",
        "externaldberror": "ወይም አፍአዊ የማረጋገጫ መረጃ-ቤት ስኅተት ነበረ፣ ወይም አፍአዊ አባልነትዎን ማሳደስ አልተፈቀዱም።",
        "login": "ለመግባት",
        "nav-login-createaccount": "መግቢያ",
-       "loginprompt": "(ወደ {{SITENAME}} በብዕር ስም ለመግባት በኮምፒዩተሮ ላይ ኩኪስ (cookies) እንዲቀመጡ መፍቀድ ይኖርቦታል።)",
        "userlogin": "ግባ / ተመዝገብ",
        "userloginnocreate": "ለመግባት",
        "logout": "ከብዕር ስምዎ ለመውጣት",
        "searchprofile-everything-tooltip": "ይዞታውን ሁሉ (ከነውይይት ገጾች) ለመፈለግ",
        "searchprofile-advanced-tooltip": "በልዩ ክፍለ-ዊኪዎች ለመፈለግ",
        "search-result-size": "$1 ({{PLURAL:$2|1 ቃል|$2 ቃላት}})",
-       "search-result-score": "ተገቢነት፦ $1%",
        "search-redirect": "(መምሪያ መንገድ $1)",
        "search-section": "(ክፍል $1)",
        "search-suggest": "ምናልባት $1 የፈለጉት ይሆን",
        "uploadwarning": "የመላክ ማስጠንቀቂያ",
        "uploadwarning-text": "እባክዎ፣ እታች ያለውን የፋይልን መግለጫ ቀይርና እንደገና ይሞክሩ።",
        "savefile": "ፋይሉ ለመቆጠብ",
-       "uploadedimage": "«[[$1]]» ላከ",
-       "overwroteimage": "የ«[[$1]]» አዲስ ዕትም ላከ",
        "uploaddisabled": "ፋይል መላክ አይቻልም",
        "uploaddisabledtext": "ፋይል መላክ በዚህ ዊኪ አይቻልም።",
        "uploadvirus": "ፋይሉ ቫይረስ አለበት! ዝርዝር፦ $1",
        "watchlist-details": "አሁን {{PLURAL:$1|$1 ገፅ|$1 ገፆች}} በምትከታተላቸው ገፆች ላይ አሉ (የውይይት ገፅ ሳይጨመር)።",
        "wlheader-enotif": "የ-ኢሜል ማስታወቂያ እንዲሠራ ተደርጓል።",
        "wlheader-showupdated": "መጨረሻ ከጎበኟቸው ጀምሮ የተቀየሩት ገጾች በ'''ጉልህ ፊደላት''' ይታያሉ",
+       "wlnote": "ባለፉት <b>$2</b> ሰዓቶች የተደረጉት $1 መጨረሻ ለውጦች እታች ይገኛሉ።",
        "wlshowlast": "ያለፉት $1 ሰዓት፤ $2 ቀን፤ $3 ይታዩ።",
        "watchlist-options": "የዝርዝሩ ምርጫዎች",
        "watching": "እየተጨመረ ነው...",
index d804ec0..bc94329 100644 (file)
        "talkpagelinktext": "Descutir",
        "specialpage": "Pachina Especial",
        "personaltools": "Ferramientas personals",
-       "postcomment": "Nueva sección",
        "articlepage": "Veyer l'articlo",
        "talk": "Discusión",
        "views": "Visualizacions",
        "externaldberror": "Bi habió una error d'autenticación externa d'a base de datos u bien no tiene premisos ta esviellar a suya cuenta externa.",
        "login": "Encetar sesión",
        "nav-login-createaccount": "Encetar una sesión / creyar cuenta",
-       "loginprompt": "Ta rechistrar-se en {{SITENAME}} ha d'activar as cookies en o navegador.",
        "userlogin": "Encetar una sesión / creyar cuenta",
        "userloginnocreate": "Encetar una sesión",
        "logout": "Salir d'a sesión",
        "searchprofile-advanced-tooltip": "Mirar en os siguients espacios de nombres",
        "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})",
        "search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 fichero|$3 fichers}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(endrecera dende $1)",
        "search-section": "(sección $1)",
        "search-suggest": "Quereba dicir $1?",
        "uploadwarning": "Alvertencia de carga de fichero",
        "uploadwarning-text": "Por favor, modifique a descripción d'o fichero d'abaixo y torne a intentar-lo.",
        "savefile": "Alzar fichero",
-       "uploadedimage": "«[[$1]]» cargato.",
-       "overwroteimage": "s'ha cargato una nueva versión de \"[[$1]]\"",
        "uploaddisabled": "A carga de fichers ye desactivata",
        "copyuploaddisabled": "Carga por URL desactivada.",
        "uploaddisabledtext": "A carga de fichers ye desactivata.",
        "watchlist-details": "{{PLURAL:$1|$1 pachina|$1 pachinas}} en a suya lista de seguimiento, sin contar-ie as pachinas de descusión.",
        "wlheader-enotif": "A notificación por correu electronico ye activata",
        "wlheader-showupdated": "Las pachinas cambiadas dende a suya zaguer vesita s'amuestran en '''negreta'''",
+       "wlnote": "Contino se i {{PLURAL:$1|amuestra o solo cambeo|amuestran os zaguers '''$1''' cambeos}} feitos en {{PLURAL:$2|a zaguer hora|as zagueras '''$2''' horas}}, o $3 a las $4.",
        "wlshowlast": "Amostrar as zagueras $1 horas, $2 días u $3",
        "watchlist-options": "Opcions d'a lista de seguimiento",
        "watching": "Cosirando...",
        "duplicate-defaultsort": "Pare cuenta: A clau d'ordenación por defecto «$2» anula l'anterior clau d'ordenación por defecto «$1».",
        "version": "Versión",
        "version-extensions": "Estensions instalatas",
+       "version-skins": "Aparencias",
        "version-specialpages": "Pachinas especials",
        "version-parserhooks": "Grifios d'o parser (parser hooks)",
        "version-variables": "Variables",
        "version-antispam": "Prevención de spam",
-       "version-skins": "Aparencias",
        "version-other": "Atros",
        "version-mediahandlers": "Maneyador de fichers multimedia",
        "version-hooks": "Grifios (Hooks)",
index e3ecd7d..c3bcbf6 100644 (file)
        "talkpagelinktext": "Mōtung",
        "specialpage": "Syndrig tramet",
        "personaltools": "Āgne tōlas",
-       "postcomment": "Nīwe dǣl",
        "articlepage": "Sēon innunge tramet",
        "talk": "Mōtung",
        "views": "Sihþa",
        "password-change-forbidden": "Þū ne canst awendan þafungword on þissum wiki.",
        "login": "Inmeldian",
        "nav-login-createaccount": "Inmeldian / wyrcan reccinge",
-       "loginprompt": "Þū scealt þafian cȳþþu grētunga tō inmeldienne in {{SITENAME}}.",
        "userlogin": "Inmeldian / wyrcan reccinge",
        "userloginnocreate": "Inmeldian",
        "logout": "Ūtmeldian",
        "filesource": "Fruma:",
        "badfilename": "Ymelan nama wearþ gewend tō \"$1\".",
        "savefile": "Hordian ymelan",
-       "uploadedimage": "forþhlōd \"[[$1]]\"",
        "sourcefilename": "Fruman ymelan nama:",
        "license": "Lēaf:",
        "license-header": "Lēaf:",
        "unwatch": "Ablinnan behealdunge",
        "unwatchthispage": "Ablinnan behealdunge",
        "watchlist-details": "{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā sunderlīce arīmedum mōtunga trametum.",
+       "wlnote": "Niðer {{PLURAL:$1|is sēo nīwoste andwendung|sind þā nīwostan '''$1''' andwendunga}} in {{PLURAL:$2|þǣre latostan tīde|þǣm latostan '''$2''' tīda}}, fram: $3, $4.",
        "wlshowlast": "Īwan þā nīwostan $1 tīda $2 daga $3",
        "watchlist-options": "Behealdungtæles cyras",
        "watching": "Behealdende...",
index 5fddefb..66d7617 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Angpradesh",
-                       "Vinitutpal"
+                       "Vinitutpal",
+                       "아라"
                ]
        },
        "tog-underline": " कड़ी अधोरेखित करना:",
@@ -15,7 +16,6 @@
        "tog-showtoolbar": "एडिट टूलबार दर्शाबॊ (जावास्क्रीप्ट)",
        "tog-editondblclick": "दू-बार क्लीक करी कॆ पन्ना संपादित करॊ (जावास्क्रीप्ट)",
        "tog-editsectiononrightclick": "विभाग शीर्षक पर दायाँ क्लीक करीकॆ संपादन करै के अनुमती दॆ (जावास्क्रीप्ट)",
-       "tog-rememberpassword": "इ कंप्यूटर पर हमरॊ लॉग-इन सूचना याद रखॊ (अधिकतम $1 {{PLURAL:$1|दिन|दिन}} लेली)",
        "tog-watchcreations": "हमरॊ तैयार करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
        "tog-watchdefault": "हमरॊ संपादित करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
        "tog-watchmoves": "हमरॊ हटैलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
        "search-interwiki-more": "(आरू)",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "नामस्थानॊ मॆ खोजॊ:",
-       "powersearch-redir": "अनुप्रेषितॊ के सूची दर्शाबॊ.",
        "preferences": "वरीयता",
        "mypreferences": "हमरॊ वरीयता",
        "group-sysop": "प्रचालक",
        "recentchanges": "हाल मॆं होलॊ बदलाव",
        "recentchanges-legend": "हाल केरॊ परिवर्तन संबंधी विकल्प",
        "recentchanges-feed-description": "इ फ़ीड मॆ होय वाला विकि पर हाल मॆ होलॊ बदलाव देखियै.",
-       "rclistfrom": "$1 सॆं नया बदलाव देखलाबॊ",
+       "rclistfrom": "$3 $2 सॆं नया बदलाव देखलाबॊ",
        "rcshowhideminor": "छोटॊ बदलाव $1",
        "rcshowhidebots": "बोट सीनी $1",
        "rcshowhideliu": "लॉग्ड इन सदस्यॊ के बदलाव $1",
        "recentchangeslinked-to": "ऐकरॊ बदला मॆं देलॊ पन्ना सीनी सॆं जुडलॊ पन्ना सीनी के बदलाव दिखलाबॊ",
        "upload": "फाईल अपलोड",
        "uploadlogpage": "अपलोड सूची",
-       "uploadedimage": "\"[[$1]]\" कॆ अपलोड करलॊ गेलै",
        "filehist": "फाइल के इतिहास",
        "filehist-help": "संचिका पुरानॊ समय में कैन्हॊ दिखै रहै इ जानै लेली वांछित दिनांक/समय पर चटका लगाबॊ.",
        "filehist-current": "मौजूदा",
        "booksources-go": "जा",
        "log": "लॉग सूची",
        "allpages": "सब्भे पन्ना",
-       "alphaindexline": "$1 सॆ $2 तलक",
        "prevpage": "पिछला पन्ना ($1)",
        "allpagesfrom": "देलॊ गेलॊ अक्षर सॆं आरंभ होयवाला लेख दर्शाबॊ:",
        "allpagesto": "ऐना समाप्त होय वाला पन्ना दिखाबॊ:",
index 23fb0e9..f8946b3 100644 (file)
@@ -62,6 +62,7 @@
        "tog-watchdefault": "أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي",
        "tog-watchmoves": "أضف الصفحات والملفات التي أنقلها إلى قائمة مراقبتي",
        "tog-watchdeletion": "أضف الصفحات والملفات التي أحذفها إلى قائمة مراقبتي",
+       "tog-watchrollback": "أضف إلى قائمة مراقبتي الصفحات التي كنت أجريت فيها استرجاعات",
        "tog-minordefault": "أشِّر كل التعديلات على أنها طفيفة مبدئيا",
        "tog-previewontop": "أظهر معاينة النص فوق صندوق التحرير",
        "tog-previewonfirst": "أظهر معاينة مع أول تعديل",
        "jumptonavigation": "تصفح",
        "jumptosearch": "ابحث",
        "view-pool-error": "عذرا، الخواديم منهكة حاليا.\nيحاول مستخدمون كثر الوصول إلى هذه الصفحة.\nمن فضلك تمهّل قليلا قبل محاولة الوصول إلى هذه الصفحة مجددا.\n\n$1",
+       "generic-pool-error": "عذرا، الخوادم مشغولة حاليا لوجود مستخدمون كثر يطلبون عرض هذا المورد. انتظر قليلا وأعد المحاولة.",
        "pool-timeout": "انتهت مهلة القفل",
        "pool-queuefull": "الطابور ملآن",
        "pool-errorunknown": "خطأ غير معروف",
        "hidetoc": "أخف",
        "collapsible-collapse": "أخف",
        "collapsible-expand": "أظهر",
+       "confirmable-confirm": "أأنت متأكد{{GENDER:$1||ة}}؟",
+       "confirmable-yes": "نعم",
+       "confirmable-no": "لا",
        "thisisdeleted": "عرض أو استرجاع $1؟",
        "viewdeleted": "عرض $1؟",
        "restorelink": "{{PLURAL:$1|$1 تعديل محذوف|تعديلا واحدا محذوفا|تعديلين محذوفين|$1 تعديلات محذوفة|$1 تعديلا محذوفا|$1 تعديل محذوف}}",
        "invalidtitle-knownnamespace": "عنوان غير صالح في النطاق «$2» مع نص «$3»",
        "invalidtitle-unknownnamespace": "عنوان غير صالح ذو نطاق غير معروف رقم $1 ونص «$2»",
        "exception-nologin": "غير مسجل الدخول",
-       "exception-nologin-text": "اÙ\84رجاء [[Special:Userlogin|تسجÙ\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84]] Ù\84تتÙ\85Ù\83Ù\86 Ù\85Ù\86 Ø§Ù\84Ù\88صÙ\88Ù\84 Ù\84Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة Ø£Ù\88 Ø£Ø¯Ø§Ø¡ Ù\87ذا Ø§Ù\84إجراء.",
+       "exception-nologin-text": "سجÙ\84 Ø§Ù\84دخÙ\88Ù\84 Ù\84Ù\84تÙ\85Ù\83Ù\86 Ù\85Ù\86 Ø¹Ø±Ø¶ Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة Ø£Ù\88 Ø¥Ø¬Ø±Ø§Ø¡ Ù\87ذا Ø§Ù\84Ù\81عÙ\84.",
        "exception-nologin-text-manual": "الرجاء $1 لتتمكن من الوصول لهذه الصفحة أو أداء هذا الإجراء.",
        "virus-badscanner": "ضبط سيء: ماسح فيروسات غير معروف: ''$1''",
        "virus-scanfailed": "فشل المسح (كود $1)",
        "preview": "عرض مسبق",
        "showpreview": "أظهر معاينة",
        "showdiff": "عرض التغييرات",
+       "blankarticle": "<strong>تنبيه:</strong> الصفحة التي تريد إنشاءها فارغة. إذا نقرت \"{{int:savearticle}}\" ثانية فستنشأ الصفحة بدون محتوى.",
        "anoneditwarning": "'''تحذير:''' لم تقم بالدخول.\nسيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.",
        "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
        "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
        "parser-template-recursion-depth-warning": "تم تجاوز حد عمق فرد القوالب ($1)",
        "language-converter-depth-warning": "تم تخطي حد عمق محول اللغة ($1)",
        "node-count-exceeded-category": "تجاوزات تعداد العقد",
-       "node-count-exceeded-warning": "تجاوزت هذه الصفحة تعداد العقد",
+       "node-count-exceeded-category-desc": "الصفحة تتجاوز الحد الأقصى للعقد البرمجية.",
+       "node-count-exceeded-warning": "الصفحة تجاوزت الحد الأقصى للعقد البرمجية.",
        "expansion-depth-exceeded-category": "تجاوزات عمق التوسيع",
-       "expansion-depth-exceeded-category-desc": "هذا تصنيف للصفحات التي تتجاوز عمق التوسيع.",
+       "expansion-depth-exceeded-category-desc": "الصفحة تجاوزت الحد الأقصى لعمق التوسيع.",
        "expansion-depth-exceeded-warning": "الصفحة تجاوزت عمق التوسيع",
        "parser-unstrip-loop-warning": "حلقة معراة تم الكشف عنها",
        "parser-unstrip-recursion-limit": "تعدى حد العودية Unstrip  ($1)",
        "currentrev": "المراجعة الحالية",
        "currentrev-asof": "المراجعة الحالية بتاريخ $1",
        "revisionasof": "مراجعة $1",
-       "revision-info": "Ù\85راجعة $1 Ø¨Ù\88اسطة $2",
+       "revision-info": "Ù\86سخة $1 Ù\84Ù\84Ù\85ستخدÙ\85 {{GENDER:$6|$2}}$7",
        "previousrevision": "→ مراجعة أقدم",
        "nextrevision": "مراجعة أحدث ←",
        "currentrevisionlink": "المراجعة الحالية",
        "rev-deleted-event": "(فعل السجل تمت إزالته)",
        "rev-deleted-user-contribs": "[اسم المستخدم أو عنوان الأيبي تمت إزالته - التعديل مخفي من المساهمات]",
        "rev-deleted-text-permission": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
+       "rev-suppressed-text-permission": "هذه النسخة قد <strong>أخفيت</strong> ([{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} تفاصيل].)",
        "rev-deleted-text-unhide": "'''حُذِفت''' مراجعة الصفحة هذه.\nيمكن العثور على تفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].\nمازال بإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
        "rev-suppressed-text-unhide": "'''أُخفيت''' مراجعة الصفحة هذه.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$1 رؤية هذه المراجعة] إذا أردت المتابعة.",
        "rev-deleted-text-view": "'''حُذِفت''' مراجعة هذه الصفحة.\nيمكنك رؤيتها؛ ويمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سجل الحذف].",
        "revdelete-no-file": "الملف المحدد غير موجود.",
        "revdelete-show-file-confirm": "هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف \"<nowiki>$1</nowiki>\" بتاريخ $2 الساعة $3؟",
        "revdelete-show-file-submit": "نعم",
+       "revdelete-selected-text": "{{PLURAL:$1|نسخة مختارة|نسخ مختارة}} ل[[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|حدث السجل المختار|أحداث السجل المختارة}}:",
        "revdelete-text-others": "سيتمكن الإداريون الآخرون على {{SITENAME}} من الوصول إلى المحتوى المخفي وإلغاء حذفه مجددا من خلال ذات الواجهة ما لم تطبق قيود إضافية.",
        "revdelete-confirm": "الإداريون الآخرون في {{SITENAME}} سيظل بإمكانهم رؤية المحتوى المخفي ويمكنهم استرجاعه مجددا من خلال هذه الواجهة نفسها، مالم يتم وضع قيود إضافية.\nمن فضلك أكد أنك تنوي فعل هذا، وأنك تفهم العواقب، وأنك تفعل هذا بالتوافق مع [[{{MediaWiki:Policy-url}}|السياسة]].",
        "searchrelated": "مرتبطة",
        "searchall": "الكل",
        "showingresults": "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
-       "showingresultsinrange": "معروض بالأسفل حتى {{PLURAL:$1|<strong>1</strong> نتيجة|<strong>$1</strong> نتائج}} في النطاق #<strong>$2</strong> إلى #<strong>$3</strong>.",
+       "showingresultsinrange": "بالأسفل {{PLURAL:$1|نتيجة واحدة|<strong>$1</strong> نتائج|<strong>$1</strong> نتيجة}} في النطاق من <strong>$2</strong> إلى <strong>$3</strong>.",
        "showingresultsheader": "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
        "search-nonefound": "لا توجد نتائج تطابق الاستعلام.",
        "powersearch-legend": "بحث متقدم",
        "prefs-files": "ملفات",
        "prefs-custom-css": "CSS مخصص",
        "prefs-custom-js": "جافاسكربت مخصص",
-       "prefs-common-css-js": "CSS أو جافاسكربت مشتركة لجميع المظاهر:",
+       "prefs-common-css-js": "سي إس إس وجافاسكربت مشترك لجميع المظاهر:",
        "prefs-reset-intro": "يمكنك استخدام هذه الصفحة لإعادة تفضيلاتك للحالة الافتراضية للموقع.\nلن تستطيع استرجاع الحالة السابقة.",
        "prefs-emailconfirm-label": "تأكيد البريد الإلكتروني:",
        "youremail": "البريد:",
        "randomincategory": "صفحة عشوائية في التصنيف",
        "randomincategory-invalidcategory": "\"$1\" ليس اسم تصنيف صالح.",
        "randomincategory-nopages": "لا توجد صفحات في التصنيف [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "عرض صفحة عشوائية من التصنيف:  $1   $2",
-       "randomincategory-selectcategory-submit": "اذهب",
        "randomredirect": "تحويلة عشوائية",
        "randomredirect-nopages": "لا توجد تحويلات في النطاق \"$1\".",
        "statistics": "إحصاءات",
        "movepagetalktext": "صفحة النقاش المرفقة سيتم نقلها كذلك، '''إلا في حالة''':\n* توجد صفحة نقاش غير فارغة تحت العنوان الجديد، أو\n* قمت بإزالة اختيار الصندوق بالأسفل.\n\nوفي هذه الحالات، يجب عليك نقل أو دمج محتويات الصفحة يدويا، إذا رغب في ذلك.",
        "movearticle": "انقل الصفحة:",
        "moveuserpage-warning": "'''تحذير: أنت على وشك نقل صفحة مستخدم. من فضلك لاحظ أن الصفحة وحدها سوف تنقل وأن المستخدم لن يعاد تسميته.'''",
-       "movecategorypage-warning": "أنت على وشك نقل صفحة التصنيف إلى عنوان جديد؛ لن تنقل الصفحات المندرجة تحت التصنيف إلى العنوان الجديد.",
+       "movecategorypage-warning": "<strong>تحذير:</strong> أنت على وشك نقل صفحة التصنيف إلى عنوان جديد؛ <em>لن</em> تنقل الصفحات المندرجة تحت التصنيف إلى العنوان الجديد.",
        "movenologintext": "يجب أن تكون مستخدماً مسجلاً وأن  [[Special:UserLogin|تسجل دخولك]] لكي تنقل صفحة.",
        "movenotallowed": "أنت لا تمتلك الصلاحية لنقل الصفحات.",
        "movenotallowedfile": "أنت لا تمتلك الصلاحية لنقل الملفات.",
        "import": "استيراد صفحات",
        "importinterwiki": "استيراد ترانسويكي",
        "import-interwiki-text": "اختر ويكي وعنوان الصفحة للاستيراد.\nتواريخ المراجعات وأسماء المحررين سيتم حفظها.\nكل أفعال الاستيراد عبر الويكي يتم تسجيلها في [[Special:Log/import|سجل الاستيراد]].",
-       "import-interwiki-source": "الويكي/الصفحة المصدر:",
        "import-interwiki-history": "انسخ كل نسخ التاريخ لهذه الصفحة",
        "import-interwiki-templates": "ضمن كل القوالب",
        "import-interwiki-submit": "استيراد",
        "duration-centuries": "{{PLURAL:$1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}",
        "duration-millennia": "{{PLURAL:$1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}",
        "rotate-comment": "تدوير الصورة  {{PLURAL:$1||درجة واحدة|درجتان|$1 درجات|$1 درجة}} باتجاه عقارب الساعة",
-       "limitreport-title": "محلل سمات البيانات:",
+       "limitreport-title": "بيانات تحليلية",
        "limitreport-cputime": "زمن المعالجة المستغرق",
        "limitreport-cputime-value": "{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}",
        "limitreport-walltime": "الزمن الحقيقي المستغرق",
        "limitreport-walltime-value": "{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}",
-       "limitreport-ppvisitednodes": "زار Ø§Ù\84Ù\85عاÙ\84ج Ø¹Ù\82دة Ø¥Ø­ØµØ§Ø¡",
-       "limitreport-ppgeneratednodes": "أحدث Ø§Ù\84Ù\85عاÙ\84ج Ø¹Ù\82دة Ø¥Ø­ØµØ§Ø¡",
-       "limitreport-postexpandincludesize": "بعد ØªÙ\88سÙ\8aع Ø§Ù\84Ù\85ساحة Ø§Ù\84شاÙ\85Ù\84Ø©",
+       "limitreport-ppvisitednodes": "عدد Ø§Ù\84عÙ\82د Ø§Ù\84Ù\85عاÙ\84جة",
+       "limitreport-ppgeneratednodes": "عÙ\82د Ø²Ø§Ø±Ù\87ا Ø§Ù\84Ù\85عاÙ\84ج Ø§Ù\84Ù\85سبÙ\82",
+       "limitreport-postexpandincludesize": "حجÙ\85 ØªØ¶Ù\85Ù\8aÙ\86 Ø§Ù\84تÙ\88سÙ\8aعات",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|بايت}}",
-       "limitreport-templateargumentsize": "حجÙ\85 Ù\86Ù\82اش Ø§Ù\84Ù\82الب",
+       "limitreport-templateargumentsize": "حجÙ\85 Ù\85عطÙ\8aات Ø§Ù\84Ù\82Ù\88الب",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|بايت}}",
-       "limitreport-expansiondepth": "أكثر عمق توسعي",
-       "limitreport-expensivefunctioncount": "تحÙ\84Ù\8aÙ\84 Ø¥Ø­ØµØ§Ø¡ Ù\88ظÙ\8aÙ\81Ø© Ù\85Ù\83Ù\84Ù\81",
-       "expandtemplates": "فرد القوالب",
+       "limitreport-expansiondepth": "أعمق التوسيعات",
+       "limitreport-expensivefunctioncount": "دÙ\88اÙ\84 Ù\85Ø­Ù\84Ù\84Ø© Ù\85Ù\83Ù\84Ù\81Ø©",
+       "expandtemplates": "توسعة قالب",
        "expand_templates_intro": "تتعامل هذه الصفحة الخاصة مع نصوص الويكي وتقوم بفرد كل القوالب الموجودة به.\nوتقوم أيضا بفرد دوال القوالب مثل\n<code><nowiki>{{</nowiki>#language:…}}</code> and variables like <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. حقيقةً، تقوم التعامل مع كل ما بين الأقواس المزدوجة.",
        "expand_templates_title": "عنوان صفحة هذا النص، لأجل معالجة {{FULLPAGENAME}} إلخ.:",
        "expand_templates_input": "النص المدخل:",
index 8d6b802..1a86697 100644 (file)
        "talkpagelinktext": "ܡܡܠܠܐ",
        "specialpage": "ܦܐܬܐ ܕܝܠܢܝܬܐ",
        "personaltools": "ܡܐܢ̈ܐ ܦܪ̈ܨܘܦܝܐ",
-       "postcomment": "ܡܢܬܐ ܚܕܬܐ",
        "articlepage": "ܚܘܝܝܐ ܕܦܐܬܐ ܕܚܒܝܫܬ̈ܐ",
        "talk": "ܡܡܠܠܐ",
        "views": "ܚܙܝܬ̈ܐ",
        "userlogin-signwithsecure": "ܐܚܫܚ ܕܒܝܩܘܬܐ ܡܫܝܢܢܬܐ",
        "login": "ܥܘܠ",
        "nav-login-createaccount": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
-       "loginprompt": "ܐܠܨܐ ܠܡܦܐܬܢܐ ܕܝܠܟ ܕܣܡܟ ܠܩܘܩܝܙ (cookies) ܠܥܠܠܬܐ ܒ {{SITENAME}}.",
        "userlogin": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
        "userloginnocreate": "ܥܘܠ",
        "logout": "ܦܠܘܛ",
        "minlength1": "ܫܡܗ̈ܐ ܕܠܦܦܐ ܘܠܐ ܕܢܗܘܐ ܒܪܝܐ ܡܢ ܐܬܘܬܐ ܚܕܐ ܟܕ ܙܥܘܪ",
        "uploadwarning": "ܐܣܩ ܙܘܗܪܐ",
        "savefile": "ܠܒܘܟ ܠܦܦܐ",
-       "uploadedimage": "ܐܣܩ \"[[$1]]\"",
-       "overwroteimage": "ܐܣܩ ܨܚܚܐ ܚܕܬܐ ܡܢ \"[[$1]]\"",
        "uploadvirus": "ܠܦܦܐ ܐܝܬ ܒܗ ܒܝܪܘܣ!\nܐܪ̈ܝܟܬܐ: $1",
        "upload-source": "ܡܒܘܥܐ ܕܠܦܦܐ",
        "sourcefilename": "ܫܡܐ ܕܠܦܦܐ ܡܒܘܥܐ",
        "unwatchthispage": "ܟܠܝ ܪܗܝܐ",
        "watchlist-details": "{{PLURAL:$1|$1 ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܪ̈ܗܝܬܟ, ܫܒܘܩ ܡܢ ܦܐܬܬ̈ܐ ܕܡܡܠܠܐ.",
        "wlheader-showupdated": "ܦܐܬܬ̈ܐ ܕܐܫܬܚܠܦܢ ܡܢ ܒܬܪ ܣܘܥܪܢܐ ܐܚܪܝܐ ܠܗܝܢ ܡܬܓܠܚܢ ܒܣܪܛܐ '''ܚܠܝܡܐ'''",
+       "wlnote": "ܠܬܚܬ {{PLURAL:$1|ܫܘܚܠܦܐ ܐܚܪܝܐ| '''$1''' ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ}} {{PLURAL:$2|ܒܫܥܬܐ ܐܚܪܝܬܐ|'''$2''' ܒܫܥܬ̈ܐ ܐܚܪ̈ܝܬܐ}}, ܠܦܘܬ $3, $4.",
        "wlshowlast": "ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3",
        "watchlist-options": "ܨܒܝܢܝܘܬ̈ܐ ܕܪ̈ܗܝܬܐ",
        "watching": "ܪܗܝܐ...",
index c8a3bf9..4eb0a96 100644 (file)
        "remembermypassword": "Amulen tañi nülküwküleael tüfa mew (alürumechi $1 {{PLURAL:$1 antü}})",
        "login": "Konkülen",
        "nav-login-createaccount": "konkülen/dewman konün",
-       "loginprompt": "Müley \"Cookies\" ñi püneleael wirintukuwam {{SITENAME}} mew.",
        "userlogin": "Konkülen/dewman konün",
        "userloginnocreate": "Konün",
        "logout": "Tripan",
        "uploadnologin": "Petu konlaymi",
        "uploadlogpage": "Püramülu eltukawün ñi wirintukun",
        "filedesc": "Pichi trokiñündungu",
-       "uploadedimage": "Püramüngey \"[[$1]]\"",
        "watchthisupload": "Llaytun tüfachi eltukawün",
        "license": "Dungunentuwün:",
        "license-header": "Dungunentuwün",
index b8eaf38..770e261 100644 (file)
        "talkpagelinktext": "Ṫnaqeċ",
        "specialpage": "Ṣefḫa ĥaṣa",
        "personaltools": "Adawaṫ ċeĥṣiya",
-       "postcomment": "Seksyon jdida",
        "articlepage": "Ċof l-li fe ṣ-ṣefḫa",
        "talk": "Modakara",
        "views": "Afiċaj",
        "externaldberror": "kayn imma ċi ĥata' f-doĥol qaĝidaṫ l-bayanaṫ wlla rah ma msmoḫ-likċ baċ ṫḫddṫ l-ḫisab l-ĥariji taĝk.",
        "login": "Dĥel",
        "nav-login-createaccount": "Ṫkonékta / Ĥṫareĝ ċi konṫ",
-       "loginprompt": "ĥask tkon mĥddm l-cookies baċ ṫdĥol l-{{SITENAME}}.",
        "userlogin": "Ṫkonnékta / Ṣayeb ċi ḫsab",
        "userloginnocreate": "Ṫkonékta",
        "logout": "Ṫdékonékta",
        "searchprofile-advanced-tooltip": "qlleb ġi f-ċi nitaqaṫ",
        "search-result-size": "$1 ({{PLURAL:$2|kelma weḫda|$2 kelmaṫ}})",
        "search-result-category-size": "{{PLURAL:$1|ĝoḍw 1|$1 dl-aĝḍa'}} ({{PLURAL:$2|ṫṣnif fṛĝi 1|$2 d-ṫṣnifaṫ l-fṛĝiyya}}, {{PLURAL:$3|milef 1|$3 dl-milffaṫ}})",
-       "search-result-score": "lirtibat: $1%",
        "search-redirect": "(Ṫeḫwil $1)",
        "search-section": "(seksyon $1)",
        "search-suggest": "Waċ konṫi baġi ṫqol : $1",
        "uploadwarning": "tahdir rafaa",
        "uploadwarning-text": "afak bdl description dyal lmilaf ltaht ohawl awtani",
        "savefile": "sjjl had lfichier",
-       "uploadedimage": "øplowda \"[[$1]]\"",
-       "overwroteimage": "sift noskha jdida dyal \"[[$1]]\"",
        "uploaddisabled": "upload maatl",
        "copyuploaddisabled": "sift b URL makhdamch",
        "uploaddisabledtext": "sift dyal lfichier makhdamch",
        "duplicate-defaultsort": "'''ṫḫdir:''' saroṫ ṫrṫib fṫiṛaḍi \"$2\" faṫ saroṫ ṫrṫib fṫiṛaḍi \"$1\".",
        "version": "Noskha",
        "version-extensions": "limtidadat lmotabbata",
+       "version-skins": "skinat",
        "version-specialpages": "Ṣefḫa ĥaṣa",
        "version-parserhooks": "khatatif lmohllil",
        "version-variables": "lmotaghayyirat",
        "version-antispam": "wiqaya mn ṣ-ṣpam",
-       "version-skins": "skinat",
        "version-other": "okhra",
        "version-mediahandlers": "motahakkimat lmedia",
        "version-hooks": "lkhtatif",
index 63a7d9f..6f52b4a 100644 (file)
        "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)",
        "search-suggest": "قصدك: $1",
        "uploadwarning": "تحذير التحميل",
        "uploadwarning-text": "لو سمحت عدل وصف الملف اللى تحت وحاول تانى.",
        "savefile": "حفظ الملف",
-       "uploadedimage": "اتحمل \"[[$1]]\"",
-       "overwroteimage": "اتحملت  نسخة جديدة من \"[[$1]]\"",
        "uploaddisabled": "التحميل متعطل",
        "uploaddisabledtext": "تحميل الملفات متعطل.",
        "php-uploaddisabledtext": "تحميل ملفات PHP متعطل. لو سمحت اتأكدن من إعدادات تحميل الملفات.",
        "watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحه}} فى قايمه مراقبتك، بدون عد صفحات المناقشه.",
        "wlheader-enotif": "*خاصية الاعلام بالايميل متفعلة",
        "wlheader-showupdated": "الصفحات اللى اتغيرت  بعد زيارتك ليها اخر مرة معروضة بالخط '''العريض'''",
+       "wlnote": "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
        "wlshowlast": "عرض اخر $1 ساعات $2 ايام $3",
        "watchlist-options": "اختيارات قايمة المراقبة",
        "watching": "بيراقب...",
index 1607c1f..2bd1869 100644 (file)
        "talkpagelinktext": "কথা-বতৰা",
        "specialpage": "বিশেষ পৃষ্ঠা",
        "personaltools": "ব্যক্তিগত সৰঞ্জাম",
-       "postcomment": "নতুন অনুচ্ছেদ",
        "articlepage": "সমল পৃষ্ঠা চাওক",
        "talk": "আলোচনা",
        "views": "দৰ্শন",
        "hidetoc": "দেখুৱাব নালাগে",
        "collapsible-collapse": "সংকোচন",
        "collapsible-expand": "বহলাওক",
+       "confirmable-yes": "হয়",
+       "confirmable-no": "নহয়",
        "thisisdeleted": "$1 চাওক বা সলনি কৰক?",
        "viewdeleted": "$1 চাওক?",
        "restorelink": "{{PLURAL:$1| এটা বিলুপ্ত সম্পাদনা|$1 টা বিলুপ্ত সম্পাদনা}}",
        "invalidtitle-knownnamespace": "নামস্থান \"$2\" আৰু পাঠ্য \"$3\" থকা অবৈধ শিৰোনাম",
        "invalidtitle-unknownnamespace": "অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য \"$2\" থকা অবৈধ শিৰোনাম",
        "exception-nologin": "প্ৰৱেশ কৰা নাই",
-       "exception-nologin-text": "এই কামৰ বাবে আপুনি [[Special:Userlogin|লগ্‌ ইন]] কৰাটো বাধ্যতামূলক।",
+       "exception-nologin-text": "এই কামৰ বাবে আপুনি লগ্‌ ইন কৰাটো বাধ্যতামূলক।",
        "exception-nologin-text-manual": "এই কামৰ বাবে অনুগ্ৰহ কৰি $1 কৰক।",
        "virus-badscanner": "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
        "virus-scanfailed": "স্কেন অসফল (কোড $1)",
        "externaldberror": "কোনো প্ৰামাণ্যকৰণ তথ্যকোষৰ ত্ৰুটি ঘটিছে নতুবা আপোনাৰ বৰ্হি-একাউণ্ট নৱীকৰণ কৰাৰ অনুমতি নাই ।",
        "login": "প্ৰৱেশ",
        "nav-login-createaccount": "প্ৰৱেশ/সদস্যভুক্তি",
-       "loginprompt": "{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ আপুনি কুকিজ্ সক্ৰিয় থাকিব লাগিব।",
        "userlogin": "প্ৰৱেশ/সদস্যভুক্তি",
        "userloginnocreate": "প্ৰৱেশ",
        "logout": "প্ৰস্থান",
        "noemail": "\"$1\" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।",
        "noemailcreate": "আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব",
        "passwordsent": "\"$1\" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্ৰহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্ৰৱেশ কৰক।",
-       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নà¦\83à¦\89দà§\8dধাৰ à¦\95ৰা à¦¸à§\81বিধাতà§\8b বাতিল কৰা হৈছে।",
+       "blocked-mailpassword": "à¦\86পà§\8bনাৰ à¦\86à¦\87পি à¦ à¦¿à¦\95নাৰ à¦ªà§°à¦¾ à¦¸à¦®à§\8dপাদনা à¦\95ৰা à¦¬à¦¾à§°à¦£ à¦\95ৰা à¦¹à§\88à¦\9bà§\87, à¦\8fনà§\87 à¦\85ৱসà§\8dথাত à¦¦à§\81ৰà§\8dবà§\8dযৱহাৰ à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà§\81নà¦\83à¦\89দà§\8dধাৰ à¦\95ৰা à¦¸à§\81বিধাà¦\93 বাতিল কৰা হৈছে।",
        "eauthentsent": "সঞ্চিত ই-মেইল ঠিকনালৈ নিশ্চিতকৰণ ই-মেইল এখন পঠিওৱা হৈছে।\nএকাউণ্টটোলৈ আন ই-মেইল পঠিওৱাৰ আগতে আপোনাৰ সদস্যতা নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।",
        "throttled-mailpassword": "যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এখন গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হৈছে।\nঅবৈধ ব্যৱহাৰ ৰোধ কৰিবলৈ প্ৰতি {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} এবাৰহে গুপ্তশব্দ উদ্ধাৰ ইমেইল পঠিওৱা হ'ব।",
        "mailerror": "ই-মেইল পঠিওৱাত সমস্যা হৈছে: $1",
        "login-throttled": "আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে ।\nঅনুগ্ৰহ কৰি $1 সময়ৰ পিছত আকৌ চেষ্টা কৰক ।",
        "login-abort-generic": "আপোনাৰ প্ৰৱেশ অসফল হৈছে- বাতিল কৰা হ’ল",
        "loginlanguagelabel": "ভাষা: $1",
-       "suspicious-userlogout": "আপোনাৰ প্ৰস্থানৰ অনুৰোধ বাতিল কৰা হৈছে কাৰণ হয়তো আপোনাৰ ব্ৰাউজাৰ অসম্পূৰ্ণ নতুবা পূৰ্বৱতী তথ্য পঠাইছে ।",
+       "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বৱতà§\80 à¦¤à¦¥à§\8dয à¦ªà¦ à¦¿à¦¯à¦¼à¦¾à¦\87à¦\9bà§\87 à¥¤",
        "createacct-another-realname-tip": "প্ৰকৃত নাম দিয়াটো বৈকল্পিক।\nআপুনি নামটো দিলে সেইটো আপোনাৰ বৰঙণিসমূহৰ বাবে স্বীকৃতি প্ৰদানত ব্যৱহাৰ কৰা হ'ব।",
        "pt-login": "প্ৰৱেশ",
        "pt-login-button": "প্ৰৱেশ",
        "preview": "খচৰা",
        "showpreview": "খচৰা চাওক",
        "showdiff": "সালসলনিবোৰ দেখুৱাওক",
+       "blankarticle": "<strong>Warning:</strong>আপুনি সৃষ্টি কৰি থকা পৃষ্ঠাটো খালি।\nযদি আপুনি \"{{int:savearticle}}\" বুটামটোত আকৌ ক্লিক কৰে তেন্তে বিষয়বস্তু অবিহনেই পৃষ্ঠাটো সৃষ্টি হ'ব।",
        "anoneditwarning": "<span style=\"color:red;\">'''সাৱধান:''' আপুনি প্ৰৱেশ কৰা নাই ।</span> \nএই পৃষ্ঠাৰ ইতিহাসত আপোনাৰ আই পি ঠিকনা সংৰক্ষিত কৰা হ'ব।",
        "anonpreviewwarning": "''আপুনি প্ৰৱেশ কৰা নাই। আপোনাৰ সম্পাদনা সাঁচিলে আপোনাৰ আই-পি ঠিকনা এই পৃষ্ঠাৰ ইতিহাসত সংৰক্ষিত হ'ব।\"",
        "missingsummary": "'''স্মাৰক:''' আপুনি সম্পাদনা সাৰাংশ দিয়া নাই।\nআপুনি আৰু এবাৰ সংৰক্ষণৰ বাবে ক্লিক কৰিলে সাৰাংশৰ অবিহনে সংৰক্ষিত হব।",
        "summary-preview": "সাৰাংশৰ খচৰা:",
        "subject-preview": "বিষয়/শিৰোনামাৰ খচৰা:",
        "blockedtitle": "সদস্যজনক অৱৰোধ কৰা হৈছে",
-       "blockedtext": "'''আপোনাৰ সদস্যনাম অথবা আই-পি ঠিকনা অৱৰোধ কৰা হৈছে ।'''\n\n$1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।\nইয়াৰ বাবে দিয়া কাৰণ হৈছে ''$2'' ।\n\n* অৱৰোধ আৰম্ভণি: $8\n* অৱৰোধ সমাপ্তি: $6\n* অৱৰোধ কৰা হৈছে: $7\n\nআপুনি এই অৱৰোধৰ বিষয়ে আলোচনা কৰিবলৈ $1 বা [[{{MediaWiki:Grouppage-sysop}}|প্ৰবন্ধকৰ]] লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।\nআপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰিব, আৰু আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।\nআপোনাৰ এতিয়াৰ আই-পি ঠিকনা হল $3, আৰু আপোনাৰ অবৰোধ ক্ৰমিক হৈছে #$5 ।\nএই বিষয়ে হোৱা আলোচনাত ইয়াৰ সবিশেষ সদৰী কৰে যেন।",
+       "blockedtext": "'''আপোনাৰ সদস্যনাম অথবা আই-পি ঠিকনা অৱৰোধ কৰা হৈছে।'''\n\n$1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।\nইয়াৰ বাবে দিয়া কাৰণ হৈছে ''$2'' ।\n\n* অৱৰোধ আৰম্ভণি: $8\n* অৱৰোধ সমাপ্তি: $6\n* অৱৰোধ কৰা হৈছে: $7\n\nআপুনি এই অৱৰোধৰ বিষয়ে আলোচনা কৰিবলৈ $1 বা [[{{MediaWiki:Grouppage-sysop}}|প্ৰশাসকৰ]] লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।\nআপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠিয়াওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰিব, আৰু আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।\nআপোনাৰ এতিয়াৰ আই-পি ঠিকনা হল $3, আৰু আপোনাৰ অৱৰোধ ক্ৰমিক হৈছে #$5 ।\nএই বিষয়ে হোৱা আলোচনাত ইয়াৰ সবিশেষ সদৰী কৰে যেন।",
        "autoblockedtext": "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।\nইয়াৰ বাবে দিয়া কাৰণ হৈছে:\n\n:''$2''\n\n* অৱৰোধ আৰম্ভণি:  $8\n* অৱৰোধ সমাপ্তি: $6\n* অৱৰোধ কৰা হৈছে: $7\n\nআপুনি এই অবৰোধৰ বিষয়ে আলোচনা কৰিবলৈ $1 বা [[{{MediaWiki:Grouppage-sysop}}|প্ৰশাসক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে ।\n\nআপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰে। আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই ।\nআপোনাৰ এতিয়াৰ আই পি ঠিকনা হৈছে $3, আৰু আপোনাৰ অৱৰোধ ক্ৰমিক হৈছে $5 ।\nএই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হ’ল।",
        "blockednoreason": "কাৰণ দিয়া নাই",
        "whitelistedittext": "সম্পাদনা কৰিবলৈ $1 কৰক ।",
        "missing-revision": "\"{{FULLPAGENAME}}\" নামৰ পৃষ্ঠাৰ #$1 সংশোধনৰ অস্তিত্ব নাই।\n\nসাধাৰণতে বিলোপ কৰা এখন পৃষ্ঠাৰ পুৰণা ইতিহাস লিংক অনুসৰণ কৰিলে এনে হয়।\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} বিলোপন ল'গ]ত অধিক তথ্য পাব।",
        "userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" নামৰ সদস্য একাউন্ট নিবন্ধিত নহয় ।\nঅনুগ্ৰহ কৰি চাওক আপুনি এই পৃষ্ঠা সৃষ্টি/সম্পাদনা কৰিব বিচাৰিছে নেকি ।",
        "userpage-userdoesnotexist-view": "সদস্য একাউন্ট ''$1'' পঞ্জীভূত নহয়",
-       "blocked-notice-logextract": "বৰ্তমানে এই সদস্যক বাৰণ কৰা হৈছে ।\nপ্ৰসংগক্ৰমে সাম্প্ৰতিক বাৰণ সূচী তলত দিয়া হ'ল ।",
+       "blocked-notice-logextract": "বৰ্তমানে এই সদস্যক বাৰণ কৰা হৈছে।\nআপোনাৰ সুবিধাৰ্থে সাম্প্ৰতিক বাৰণ সূচী তলত দিয়া হ'ল ।",
        "clearyourcache": "'''টোকা:''' সাঁচি ৰখাৰ পিছত পৰিৱৰ্তনখিনি চাবৰ বাবে আপুনি আপোনাৰ ব্ৰাউজাৰৰ কেচ্‌ (cache) অগ্ৰাহ্য কৰিব লগা হ’ব পাৰে।\n* '''Firefox / Safari: ''' ''Shift'' ধৰি ৰাখি ''Reload'' ক্লিক কৰক, নাইবা ''Ctrl-F5'' বা ''Ctrl-R'' টিপক (এপল মেকৰ বাবে ''⌘-R'')\n* '''Google Chrome:''' ''Ctrl-Shift-R'' টিপক (এপল মেকৰ বাবে ''⌘-Shift-R'' )\n* '''Internet Explorer:''' ''Ctrl'' ধৰি ৰাখি ''Refresh'' ক্লিক কৰক, অথবা ''Ctrl-F5'' টিপক\n* '''Opera:''' ''Tools→Preferences'' ত গৈ কেচ্‌ মচি পেলাওক",
        "usercssyoucanpreview": "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন CSS পৰীক্ষা কৰক ।",
        "userjsyoucanpreview": "'''পৰামৰ্শ:''' \"{{int:showpreview}}\" বুটাম ব্যৱহাৰ কৰি সাঁচি ৰখাৰ আগতে আপোনাৰ নতুন জাভালিপি পৰীক্ষা কৰক ।",
        "permissionserrorstext": "আপোনাৰ এই কামটো কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:",
        "permissionserrorstext-withaction": "আপোনাৰ $2 কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:",
        "recreate-moveddeleted-warn": "'''সাৱধান: আগতে বিলোপ কৰা পৃষ্ঠা এটা আপুনি পুনঃনিৰ্মাণ কৰি আছে। '''\n\nএই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।\nএই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।",
-       "moveddeleted-notice": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹à§\88à¦\9bà§\87 à¥¤\nপà§\83ষà§\8dঠাà¦\9fিৰ à¦¬à¦¾à¦¤à¦¿à¦² à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা à¦\85ভিলà§\87à¦\96 à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹'ল ।",
+       "moveddeleted-notice": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦¹à§\88à¦\9bà§\87।\nপà§\83ষà§\8dঠাৰ à¦¬à¦¿à¦²à§\8bপ à¦\86ৰà§\81 à¦¸à§\8dথানানà§\8dতৰণ à¦\85ভিলà§\87à¦\96 à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹'ল।",
        "log-fulllog": "সম্পূৰ্ণ অভিলেখ চাওক",
        "edit-hook-aborted": "হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।\nইয়াৰ কোনো ব্যাখ্যা নাই।",
-       "edit-gone-missing": "পà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল।\nসমà§\8dভৱতà¦\83 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰা হৈছে।",
+       "edit-gone-missing": "পà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল।\nসমà§\8dভৱতà¦\83 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰা হৈছে।",
        "edit-conflict": "সম্পাদনা দ্বন্দ্ব।",
        "edit-no-change": "আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই।",
        "postedit-confirmation-created": "পৃষ্ঠাটো সৃষ্টি কৰা হৈছে।",
        "parser-template-recursion-depth-warning": "সাঁচৰ পুনৰাবৃত্তি গভীৰতা সীমা ($1) তকৈ অধিক হৈছে",
        "language-converter-depth-warning": "ভাষা পৰিৱৰ্তকৰ গভীৰতা সীমাই ($1) অতিক্ৰম কৰিছে",
        "node-count-exceeded-category": "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
-       "node-count-exceeded-warning": "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
+       "node-count-exceeded-category-desc": "এই পৃষ্ঠাই সৰ্বোচ্চ ন'ড কাউণ্ট সীমা অতিক্ৰম কৰিছে।",
+       "node-count-exceeded-warning": "পৃষ্ঠাৰ ন'ড গণনা বেছি হৈছে",
        "expansion-depth-exceeded-category": "বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা",
        "expansion-depth-exceeded-warning": "পৃষ্ঠাটোৰ বিস্তৃতি গভীৰতা বেছি হৈছে",
        "parser-unstrip-loop-warning": "আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে",
        "converter-manual-rule-error": "মেনুৱেল ভাষা পৰিৱৰ্তন নিয়মত ত্ৰুটি পোৱা গৈছে",
        "undo-success": "এই সম্পাদনা পূৰ্ববৎ কৰিব পাৰি ।\nঅনুগ্ৰহ কৰি তলৰ তুলনাটি পৰীক্ষা কৰি ঠাৱৰ কৰক যে আপুনি এনে কৰিব বিচাৰিছে, আৰু তলত সালসলনিসমূহ সাঁচি এই কাৰ্য্য সম্পন্ন কৰক ।",
        "undo-failure": "এই সম্পাদনা মধ্যৱৰ্তী সম্পাদনাসমূহৰ দ্বন্দৰ কাৰণে পূৰ্ববৎ কৰা নহ'ব ।",
-       "undo-norev": "à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\9fি à§°à¦¦ à¦\95ৰিব à¦¨à§\8bৱাৰি, à¦\95াৰণ à¦\87 à¦\86ৰà§\81 à¦¨à¦¾à¦\87 à¦¬à¦¾ à¦\87য়াà¦\95 à¦¬à¦¾à¦¤à¦¿à¦² à¦\95ৰা à¦¹'ল ।",
+       "undo-norev": "à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\9fà§\8b à§°à¦¦ à¦\95ৰিব à¦¨à§\8bৱাৰি, à¦\95াৰণ à¦\8fà¦\87à¦\9fà§\8b à¦\86ৰà§\81 à¦¨à¦¾à¦\87 à¦¬à¦¾ à¦\87য়াà¦\95 à¦¬à¦¿à¦²à§\8bপ à¦\95ৰা à¦¹'ল।",
        "undo-nochange": "সম্পাদনাটো ইতিমধ্যেই বাতিল কৰা হৈছে।",
        "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|আলোচনা]]) সম্পাদিত $1 সংশোধনটি বাতিল কৰক",
        "undo-summary-username-hidden": "এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা $1 সংশোধন বাতিল কৰক",
        "rev-deleted-user-contribs": "[সদস্যনাম বা আই-পি ঠিকনা আঁতৰোৱা হ'ল - সম্পাদনা বৰঙনিসমূহৰ পৰা আঁৰ কৰা হৈছে]",
        "rev-deleted-text-permission": "পৃষ্ঠাৰ এই সংশোধনটি '''বিলোপ''' কৰা হ'ল ।\nসবিশেষ পাব [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অবলুপ্তি অভিলেখত]",
        "rev-deleted-text-unhide": "পৃষ্ঠাখনৰ এই সংশোধনটো '''বিলোপ''' কৰা হৈছে | \nসবিশেষ পাব [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অৱলুপ্তি অভিলেখত]।\nআপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
-       "rev-suppressed-text-unhide": "পà§\83ষà§\8dঠাà¦\96নৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হৈছে ।\nসবিশেষ পাব [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} নিবাৰণ অভিলেখত]।\nআপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
+       "rev-suppressed-text-unhide": "পà§\83ষà§\8dঠাà¦\9fà§\8bৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হৈছে ।\nসবিশেষ পাব [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} নিবাৰণ অভিলেখত]।\nআপুনি মন কৰিলে [$1 এই সংশোধনটো চাব পাৰে]।",
        "rev-deleted-text-view": "পৃষ্ঠাৰ এই সংশোধনটো '''বিলোপ''' কৰা হ'ল ।\nআপুনি এইটো চাব পাৰে; সবিশেষ পাব [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অবলুপ্তি অভিলেখত]।",
        "rev-suppressed-text-view": "পৃষ্ঠাৰ এই সংশোধনটো '''নিবাৰণ''' কৰা হ’ল।\nআপুনি এইটো চাব পাৰে; সবিশেষ পাব [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} নিবাৰণ অভিলেখত]।",
        "rev-deleted-no-diff": "আপুনি এই পাৰ্থক্য চাব নোৱাৰে কাৰণ এটা সংস্কৰণ '''বিলোপ''' কৰা হৈছে ।\nসবিশেষ পাব [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অৱলুপ্তি অভিলেখত]।",
        "searchprofile-advanced-tooltip": "স্বনিৰ্ধাৰিত নামস্থানত অনুসন্ধান কৰক",
        "search-result-size": "$1 ({{PLURAL:$2|1 শব্দ|$2 শব্দসমূহ}})",
        "search-result-category-size": "{{PLURAL:$1|১ জন সদস্য|$1 জন সদস্য}} ({{PLURAL:$2|এটা উপশ্ৰেণী|$2 টা উপশ্ৰেণী}}, {{PLURAL:$3|এটা ফাইল|$3 টা ফাইল}})",
-       "search-result-score": "যথাৰ্থতা: $1%",
        "search-redirect": "(পুনৰ্নিৰ্দেশনা $1)",
        "search-section": "(অনুচ্ছেদ $1)",
        "search-file-match": "(ফাইলৰ বিষয়বস্তুৰ লগত মিল পোৱা গৈছে)",
        "uploadwarning": "আপল’ড সতৰ্কবাণী",
        "uploadwarning-text": "অনুগ্ৰহ কৰি তলত ফাইলৰ বিৱৰণী পৰিৱৰ্তন কৰক আৰু পুনৰ চেষ্টা কৰক ।",
        "savefile": "সংৰক্ষণ",
-       "uploadedimage": "\"[[$1]]\" আপল’ড কৰা হ’ল",
-       "overwroteimage": "\"[[$1]]\" ৰ এটা নতুন সংস্কৰণ আপল’ড কৰা হৈছে",
        "uploaddisabled": "আপল’ড নিষ্ক্ৰিয় হৈ আছে",
        "copyuploaddisabled": "ইউ.আৰ.এল.ৰ মাধ্যমেৰে আপল’ড নিষ্ক্ৰিয় হৈ আছে ।",
        "uploaddisabledtext": "ফাইল আপল’ড নিষ্ক্ৰিয় হৈ আছে ।",
        "license": "অনুজ্ঞাপত্ৰ:",
        "license-header": "অনুজ্ঞাপত্ৰ",
        "nolicense": "একো বাছনি কৰা নাই",
+       "licenses-edit": "অনুজ্ঞাপত্ৰ বিকল্পসমূহ সম্পাদনা কৰক",
        "license-nopreview": "(প্ৰাকদৰ্শন উপলব্ধ নহয়)",
        "upload_source_url": "(এটা বৈধ, ৰাজহুৱাকৈ উন্মুক্ত URL)",
        "upload_source_file": "(আপোনাৰ কম্পিউটাৰৰ এটা ফাইল)",
        "randomincategory": "শ্ৰেণীৰ যিকোনো পৃষ্ঠা",
        "randomincategory-invalidcategory": "\"$1\" বৈধ শ্ৰেণী নাম নহয়।",
        "randomincategory-nopages": "[[:Category:$1|$1]] শ্ৰেণীত কোনো পৃষ্ঠা নাই।",
-       "randomincategory-selectcategory": "এই শ্ৰেণীৰ পৰা যিকোনো পৃষ্ঠা চাওক: $1 $2।",
-       "randomincategory-selectcategory-submit": "যাওক",
        "randomredirect": "অনিৰ্ধাৰিত পুননিৰ্দেশ",
        "randomredirect-nopages": "\"$1\" নামস্থানত কোনো পুননিৰ্দেশ নাই ।",
        "statistics": "পৰিসংখ্যা",
        "watchlist-details": "আলোচনা পৃষ্ঠাসমূহ বেলেগকৈ লেখত নধৰি {{PLURAL:$1|$1 টা পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে।",
        "wlheader-enotif": "ইমেইল জাননী সক্ৰিয় কৰা হৈছে।",
        "wlheader-showupdated": "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
-       "wlnote2": "$2, $3 অনুসাৰে শেষ {{PLURAL:$1|ঘণ্টাৰ|<strong>$1</strong> ঘণ্টাৰ}} সালসলনি তলত দিয়া হৈছে।",
+       "wlnote": "তলত {{PLURAL:$1| হ'ল সৰ্বশেষ পৰিৱৰ্তন|হ'ল সৰ্বশেষ '''$1''' পৰিৱৰ্তনসমূহ}} সৰ্বশেষ {{PLURAL:$2|ঘন্টা|'''$2''' ঘন্টা}}, $3, $4 -ৰ হিচাপে।",
        "wlshowlast": "যোৱা $1 ঘণ্টা $2 দিন $3 চাওক",
        "watchlist-options": "লক্ষ্য-তালিকা পছন্দসমূহ",
        "watching": "চকু দিয়া হৈছে.....",
        "actioncomplete": "কাৰ্য সম্পূৰ্ণ",
        "actionfailed": "কাৰ্য বিফল হ'ল",
        "deletedtext": "\"$1\" ক বিলোপন কৰা হৈছে।\nসাম্প্ৰতিক বিলোপনসমূহৰ তালিকা চাবলৈ $2 চাওক।",
-       "dellogpage": "বাতিল কৰা সূচী",
+       "dellogpage": "বিলà§\8bপ কৰা সূচী",
        "dellogpagetext": "তলত সাম্প্ৰতিক বিলোপনৰ তালিকা দিয়া হ'ল ।",
-       "deletionlog": "বাতিল কৰা সূচী",
+       "deletionlog": "বিলà§\8bপ কৰা সূচী",
        "reverted": "পূৰ্ববৰ্তী সংস্কৰণলৈ উভতি যোৱা হ'ল",
        "deletecomment": "কাৰণ:",
        "deleteotherreason": "আন/অতিৰিক্ত কাৰণ:",
        "deletereasonotherlist": "আন কাৰণ:",
        "deletereason-dropdown": "* বিলোপনৰ সাধাৰণ কাৰণসমূহ\n** স্পাম\n** অসভ্যালি\n** কপিৰাইট উলঙ্ঘন\n** লেখকৰ অনুৰোধ\n** ভঙা পুনঃনিৰ্দেশনা",
        "delete-edit-reasonlist": "অপসাৰণ কৰা কাৰণ সম্পাদনা কৰক",
-       "delete-toobig": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96নৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।\n{{SITENAME}}ৰ আকস্মিক ক্ষতি ৰোধ কৰিবলৈ এনে পৃষ্ঠাৰ ইতিহাস বিলোপ কৰাত সীমাবদ্ধতা আৰোপ কৰা হৈছে ।",
+       "delete-toobig": "à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8bৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।\n{{SITENAME}}ৰ আকস্মিক ক্ষতি ৰোধ কৰিবলৈ এনে পৃষ্ঠাৰ ইতিহাস বিলোপ কৰাত সীমাবদ্ধতা আৰোপ কৰা হৈছে ।",
        "delete-warning-toobig": "এই পৃষ্ঠাখনৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।\nইয়াক বিলোপ কৰিলে {{SITENAME}} ৰ তথ্যভঁৰালৰ কাৰ্য্যকাৰীতাত সমস্যা হ’ব পাৰে;\nসাৱধানেৰে আগ বাঢ়ক ।",
        "rollback": "সম্পাদনা পূৰ্ববৎ কৰক",
        "rollback_short": "পূৰ্ববৎ কৰক",
        "movetalk": "সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক",
        "move-subpages": "উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)",
        "move-talk-subpages": "আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)",
-       "movepage-page-exists": "$1 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\87তিমধà§\8dযà§\87à¦\87 à¦\86à¦\9bà§\87 à¦\86ৰà§\81 à¦¤à¦¾à§° à¦\93পৰত à¦¸à§\8dবয়à¦\82à¦\95à§\8dৰিয়ভাৱà§\87 à¦²à¦¿à¦\96িব à¦¨à§\8bৱাৰি ।",
+       "movepage-page-exists": "$1 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87 à¦\86ৰà§\81 à¦¤à¦¾à§° à¦\93পৰত à¦¸à§\8dবয়à¦\82à¦\95à§\8dৰিয়ভাৱà§\87 à¦²à¦¿à¦\96িব à¦¨à§\8bৱাৰি।",
        "movepage-page-moved": "$1 পৃষ্ঠাটো $2লৈ স্থানান্তৰ কৰা হ'ল।",
        "movepage-page-unmoved": "$1 পৃষ্ঠাটো $2লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়",
        "movepage-max-pages": "সৰ্বোচ্চ $1 {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} স্থানান্তৰ কৰা হৈছে আৰু ইয়াতকৈ অধিক স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ নহ’ব ।",
        "import": "পৃষ্ঠা আমদানি কৰক",
        "importinterwiki": "আন্তঃৱিকি আমদানি",
        "import-interwiki-text": "আমদানি কৰিবলৈ এটা ৱিকি বা পৃষ্ঠাৰ শিৰোনামা নিৰ্বাচন কৰক ।\nসংশোধনৰ তাৰিখ আৰু সম্পাদকৰ নাম সংৰক্ষণ কৰা হ'ব ।\nসকলো আন্তঃৱিকি আমদানি [[Special:Log/import|আমদানি অভিলেখ]]ত লিপিবদ্ধ আছে ।",
-       "import-interwiki-source": "উৎস ৱিকি/পৃষ্ঠা:",
+       "import-interwiki-sourcewiki": "উৎস ৱিকি:",
+       "import-interwiki-sourcepage": "উৎস পৃষ্ঠা:",
        "import-interwiki-history": "এই পৃষ্ঠাৰ সকলো সংশোধনৰ ইতিহাস প্ৰতিলিপি কৰক",
        "import-interwiki-templates": "সকলো সাঁচ অন্তৰ্ভুক্ত কৰক",
        "import-interwiki-submit": "আমদানি",
        "importbadinterwiki": "আন্ত:ৱিকি সংযোগ বেয়া",
        "importsuccess": "আমদানি সমাপ্ত !",
        "importnosources": "কোনো আন্তঃৱিকি আমদানি উৎসৰ সংজ্ঞা দিয়া হোৱা নাই আৰু প্ৰত্যক্ষ ইতিহাস আপল'ড নিষ্ক্ৰিয় কৰা হৈছে ।",
-       "importnofile": "কোনো আমদানি নথি আপল'ড কৰা হোৱা নাই ।",
+       "importnofile": "কোনো আমদানি নথি আপল'ড কৰা হোৱা নাই।",
        "importuploaderrorsize": "আমদানি নথিৰ আপল'ড অসফল হৈছে ।\nঅনুমোদিত আপল'ড নথিতকৈ এই নথিৰ আকাৰ ডাঙৰ ।",
        "importuploaderrorpartial": "আমদানি নথিৰ আপল'ড অসফল হৈছে ।\nনথিখন কেৱল আংশিকভাৱে আপল'ড কৰা হৈছে ।",
        "importuploaderrortemp": "আমদানি নথিৰ আপল'ড বিফল হৈছে ।\nএটা অস্থায়ী ফ'ল্ডাৰ হেৰাইছে ।",
        "import-error-create": "\"$1\" পৃষ্ঠাটো আমদানি কৰা নহ'ল কাৰণ ইয়াক সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই।",
        "import-error-interwiki": "\"$1\" পৃষ্ঠাটো আমদানি কৰা নহ'ল কাৰণ ইয়াৰ নামটো বাহিৰা সংযোগৰ (আন্তঃৱিকি) বাবে সংৰক্ষিত।",
        "import-error-special": "\"$1\" পৃষ্ঠাটো আমদানি কৰা নহ'ল কাৰণ ই পৃষ্ঠা অনুমোদন নকৰা এটা বিশেষ নামস্থানৰ অন্তৰ্গত।",
-       "import-error-invalid": "\"$1\" à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86মদানি à¦\95ৰা à¦¨à¦¹'ল à¦\95াৰণ à¦\87য়াৰ à¦¨à¦¾à¦®à¦\9fà§\8b অবৈধ।",
+       "import-error-invalid": "\"$1\" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86মদানি à¦\95ৰা à¦¨à¦¹'ল à¦\95াৰণ à¦¯à¦¿à¦\9fà§\8b à¦¨à¦¾à¦®à¦²à§\88 à¦\87য়াà¦\95 à¦\86মদানি à¦\95ৰিব à¦¬à¦¿à¦\9aৰা à¦¹à§\88à¦\9bিল à¦¸à§\87à¦\87à¦\9fà§\8b à¦\8fà¦\87 à§±à¦¿à¦\95িত অবৈধ।",
        "import-error-unserialize": " \"$1\" পৃষ্ঠাৰ $2 সংশোধনৰ ক্ৰম আঁতৰ কৰিব পৰা নগ'ল। এই সংশোধনে $4 ক্ৰমৰ সমল মডেল $3 ব্যৱহাৰ কৰা বুলি জনোৱা হৈছিল।",
        "import-options-wrong": "ভুল {{PLURAL:$2|বিকল্প|বিকল্পসমূহ}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "মূল পৃষ্ঠাৰ শিৰোনামা অবৈধ।",
        "confirmemail_body": "কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা এইটো ই-মেইল ঠিকনা ব্যৱহাৰ কৰি {{SITENAME}}ত\nএটা একাউণ্ট \"$2\" পঞ্জীয়ন কৰিছে ।\n\nএই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে\nআপোনাৰ ব্ৰাউজাৰত এই সংযোগটো খোলক:\n\n$3\n\nযদি আপুনি একাউণ্টটো পঞ্জীয়ন কৰা *নাই*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে\nএই সংযোগটো চাওক:\n\n$5\n\nএই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।",
        "confirmemail_body_changed": "কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত\nএকাউণ্ট \"$2\"ৰ ই-মেইল ঠিকনা সলনি  কৰিছে ।\n\nএই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ পুনৰ সক্ৰিয় কৰাৰ বাবে\nআপোনাৰ ব্ৰাউজাৰত এই সংযোগটো খুলক:\n\n$3\n\nযদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে\nএই সংযোগটো চাওক:\n\n$5\n\nএই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।",
        "confirmemail_body_set": "কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত\nএকাউণ্ট \"$2\"ৰ ইমেইল ঠিকনা এইটো প্ৰদান কৰিছে ।\n\nএই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে\nআপোনাৰ ব্ৰাউজাৰত এই সংযোগটো খোলক:\n\n$3\n\nযদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে\nএই সংযোগটো চাওক:\n\n$5\n\nএই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।",
-       "confirmemail_invalidated": "ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিল কৰা হৈছে",
+       "confirmemail_invalidated": "ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিল কৰা হৈছে",
        "invalidateemail": "ই-মেইল নিশ্চিতকৰণ বাতিল কৰক",
        "scarytranscludedisabled": "[আন্তঃৱিকি আন্তঃভুক্তি নিষ্ক্ৰিয় কৰা আছে]",
        "scarytranscludefailed": "[$1ৰ বাবে সাঁচ অনা অসফল হৈছে]",
        "scarytranscludetoolong": "[URL অত্যাধিক দীঘল]",
        "deletedwhileediting": "'''সতৰ্কবাণী''': আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত পৃষ্ঠাটো বিলোপ কৰা হৈছে !",
        "confirmrecreate": "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাটো বিলোপ কৰিছে, তাৰ কাৰণ:\n: ''$2''\nআপুনি এই পৃষ্ঠাটো আকৌ সৃষ্টি কৰিব খোজাটো নিশ্চিত কৰক ।",
-       "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ি à¦\95ৰিব à¦\96à§\8bà¦\9cাà¦\9fà§\8b à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95ৰà¦\95 ।",
+       "confirmrecreate-noreason": "à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিà¦\9bà§\87। à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\95à§\8c à¦¸à§\83ষà§\8dà¦\9fি à¦\95ৰিব à¦\96à§\8bà¦\9cাà¦\9fà§\8b à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95ৰà¦\95।",
        "recreate": "পুনৰ সৃষ্টি কৰক",
        "confirm_purge_button": "শুদ্ধ",
        "confirm-purge-top": "এই পৃষ্ঠাৰ কেচ্‌ খালী কৰা হওক ?",
        "confirm-watch-top": "এই পৃষ্ঠাটো আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰিব?",
        "confirm-unwatch-button": "শুদ্ধ",
        "confirm-unwatch-top": "এই পৃষ্ঠাটো আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাব?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← পূৰ্বৱৰ্তী পৃষ্ঠা",
        "imgmultipagenext": "পৰৱৰ্তী পৃষ্ঠা →",
        "imgmultigo": "যাওক",
        "watchlistedit-clear-titles": "শিৰোনামাসমূহ:",
        "watchlistedit-clear-submit": "লক্ষ্য-তালিকা পৰিষ্কাৰ কৰক (এইটো স্থায়ী!)",
        "watchlistedit-clear-done": "আপোনাৰ লক্ষ্য-তালিকা পৰিষ্কাৰ কৰা হ'ল।",
+       "watchlisttools-clear": "লক্ষ্য-তালিকা পৰিষ্কাৰ কৰক",
        "watchlisttools-view": "সংগতি থকা সাল-সলনিবোৰ চাওক",
        "watchlisttools-edit": "লক্ষ্য-তালিকা চাওক আৰু সম্পাদনা কৰক",
        "watchlisttools-raw": "অশোধিত লক্ষ্য-তালিকা সম্পাদনা কৰক",
        "version-license": "অনুজ্ঞাপত্ৰ",
        "version-ext-license": "অনুজ্ঞাপত্ৰ",
        "version-ext-colheader-name": "এক্সটেন্‌চন",
+       "version-skin-colheader-name": "আৱৰণ",
        "version-ext-colheader-version": "সংস্কৰণ",
        "version-ext-colheader-license": "অনুজ্ঞাপত্ৰ",
        "version-ext-colheader-description": "বিৱৰণ",
        "version-ext-colheader-credits": "লেখকসকল",
+       "version-license-title": "$1ৰ বাবে অনুজ্ঞাপত্ৰ",
        "version-poweredby-credits": "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
        "version-poweredby-others": "অন্য",
        "version-poweredby-translators": "translatewiki.net অনুবাদকসকল",
        "compare-submit": "তুলনা কৰক",
        "compare-invalid-title": "আপুনি নিৰ্ধাৰণ কৰা শিৰোনামাটো অবৈধ ।",
        "compare-title-not-exists": "আপুনি নিৰ্ধাৰণ কৰা ফাইলটোৰ অস্বিত্ব নাই ।",
-       "compare-revision-not-exists": "à¦\86পà§\81নি à¦¨à¦¿à§°à§\8dধাৰণ à¦\95ৰা à¦¸à¦\82শà§\8bধনà§\80à¦\9fà§\8bৰ à¦\85সà§\8dবিত্ব নাই ।",
+       "compare-revision-not-exists": "à¦\86পà§\81নি à¦¨à¦¿à§°à§\8dধাৰণ à¦\95ৰা à¦¸à¦\82শà§\8bধনà¦\9fà§\8bৰ à¦\85সà§\8dতিত্ব নাই ।",
        "dberr-problems": "দুঃখিত! চাইটটোত কিছু কাৰিকৰী সমস্যা হৈছে ।",
        "dberr-again": "অলপ সময় অপেক্ষা কৰি পুনৰ আপল'ডৰ চেষ্টা কৰক ।",
        "dberr-info": "(তথ্যকোষৰ চাৰ্ভাৰৰ লগত যোগাযোগ কৰিব নোৱাৰি: $1)",
        "sqlite-has-fts": "$1 সম্পূৰ্ণ-পাঠ অনুসন্ধান সমৰ্থন সহ",
        "sqlite-no-fts": "$1 সম্পূৰ্ণ-পাঠ অনুসন্ধান সমৰ্থন অবিহনে",
        "logentry-delete-delete": "$3 পৃষ্ঠাটো $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
-       "logentry-delete-restore": "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
+       "logentry-delete-restore": "$1-এ $3 পৃষ্ঠাটো {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰিলে}}",
        "logentry-delete-event": "$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা",
        "logentry-delete-revision": "পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4",
        "logentry-delete-event-legacy": "$3ত ল'গ ঘটনাসমূহৰ দৃশ্যমানতা $1 {{GENDER:$2|ৰদ্বাৰা সলোৱা হ'ল}}",
        "expand_templates_output": "ফলাফল",
        "expand_templates_ok": "ওকে",
        "expand_templates_remove_comments": "মন্তব্য গু়চাওক",
-       "expand_templates_preview": "খচৰা"
+       "expand_templates_preview": "খচৰা",
+       "pagelanguage": "পৃষ্ঠাৰ ভাষা নিৰ্বাচক",
+       "pagelang-name": "পৃষ্ঠা",
+       "pagelang-language": "ভাষা",
+       "pagelang-use-default": "ডিফল্ট ভাষা ব্যৱহাৰ কৰক",
+       "pagelang-select-lang": "ভাষা নিৰ্বাচন কৰক",
+       "right-pagelang": "পৃষ্ঠাৰ ভাষা পৰিৱৰ্তন কৰক",
+       "action-pagelang": "পৃষ্ঠাৰ ভাষা পৰিৱৰ্তন কৰক",
+       "log-name-pagelang": "ভাষা পৰিৱৰ্তন ল'গ"
 }
index b56b425..0d7f8a3 100644 (file)
        "randomincategory": "Páxina al debalu de la categoría",
        "randomincategory-invalidcategory": "\"$1\" nun ye un nome de categoría válidu.",
        "randomincategory-nopages": "Nun hai páxines en [[:Category:$1]].",
-       "randomincategory-selectcategory": "Ver una páxina al debalu de la categoría: $1. $2",
-       "randomincategory-selectcategory-submit": "Dir",
+       "randomincategory-category": "Categoría:",
+       "randomincategory-legend": "Páxina al debalu de la categoría",
        "randomredirect": "Redireición al debalu",
        "randomredirect-nopages": "Nun hai redireiciones nel espaciu de nomes \"$1\".",
        "statistics": "Estadístiques",
        "exbeforeblank": "el conteníu enantes de dexar en blanco yera: '$1'",
        "delete-confirm": "Desaniciar «$1»",
        "delete-legend": "Desaniciar",
-       "historywarning": "'''Avisu:'''' La páxina que vas desaniciar tien un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisiones}}:",
+       "historywarning": "<strong>Avisu:</strong> La páxina que vas desaniciar tien un historial con $1 {{PLURAL:$1|revisión|revisiones}}:",
        "confirmdeletetext": "Tas a piques d'esborrar una páxina xunto con tol so historial.\nPor favor confirma que ye lo que quies facer, qu'entiendes les consecuencies, y que lo tas faciendo acordies coles [[{{MediaWiki:Policy-url}}|polítiques]].",
        "actioncomplete": "Aición completada",
        "actionfailed": "Falló l'aición",
        "delete-edit-reasonlist": "Editar los motivos d'esborráu",
        "delete-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nRestrinxóse l'esborráu d'estes páxines pa evitar perturbaciones accidentales de {{SITENAME}}.",
        "delete-warning-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nEsborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};\nobra con precaución.",
+       "deleteprotected": "Nun pues desaniciar esta páxina porque ta protexida.",
        "deleting-backlinks-warning": "'''Avisu:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otres páxines]] enllacen a, o trescluyen de, la páxina que ta a piques de desaniciar.",
        "rollback": "Revertir ediciones",
        "rollback_short": "Revertir",
        "import": "Importar páxines",
        "importinterwiki": "Importación treswiki",
        "import-interwiki-text": "Seleiciona una wiki y un títulu de páxina pa importar.\nLes feches de revisión y los nomes de los editores caltendránse.\nToles aiciones d'importación treswiki queden rexistraes nel [[Special:Log/import|rexistru d'importaciones]].",
-       "import-interwiki-source": "Códigu wiki/páxina:",
+       "import-interwiki-sourcewiki": "Wiki d'orixe:",
+       "import-interwiki-sourcepage": "Páxina d'orixe:",
        "import-interwiki-history": "Copiar toles versiones d'historial d'esta páxina",
        "import-interwiki-templates": "Incluyir toles plantíes",
        "import-interwiki-submit": "Importar",
index 7956331..a8c72d1 100644 (file)
        "talkpagelinktext": "Keyaksera",
        "specialpage": "Aptafu bu",
        "personaltools": "Weltafa xeka",
-       "postcomment": "Warzaf gabot",
        "articlepage": "Telizwira",
        "talk": "Keyaksera",
        "views": "Wira",
        "externaldberror": "Ont divefa origakrokla va pilkomodara ont va rinafa divefa pata me ronuskel.",
        "login": "Pilkomodá",
        "nav-login-createaccount": "Pataredú oke va int dogluyá",
-       "loginprompt": "Ta dogluyara va {{SITENAME}} va koti \"cookie\" talpeyki gotutegiral.",
        "userlogin": "Va int dogluyá / pataredú",
        "userloginnocreate": "Dogluyara",
        "logout": "Dimgluyá",
        "searchprofile-advanced-tooltip": "Aneyara ko pilkovafo yoltxo",
        "search-result-size": "$1 ({{PLURAL:$2|1 trogarn|$2 trogarn}})",
        "search-result-category-size": "{{PLURAL:$1|1 bewik|$1 bewik}} ({{PLURAL:$2|1 volveyloma|$2 volveyloma}}, {{PLURAL:$3|1 iyeltak|$3 iyeltak}})",
-       "search-result-score": "Vadjereka : $1%",
        "search-redirect": "(graskara va $1)",
        "search-section": "($1 gabot)",
        "search-suggest": "Va $1 sugdalayal ?",
        "file-exists-duplicate": "Bat iyeltak tir jontolaca ke {{PLURAL:$1|iyeltak|iyeltak}}:",
        "uploadwarning": "Obral !",
        "savefile": "Giwara va iyeltak",
-       "uploadedimage": "« [[$1]] » ksudayan mo zanisiko",
-       "overwroteimage": "kalvajayan siatos ke \"[[$1]]\"",
        "uploaddisabled": "Skalev, staksera va iyeltak tir gritegirayan.",
        "uploaddisabledtext": "Iyeltakkalvajara tir gritegirayana.",
        "uploadscripted": "Bat iyeltak va HTML ok Script beksa rotir narujutuna gan web exulesiki ruldar.",
        "watchlist-details": "{{PLURAL:$1|$1 bu|$1 bu}} koe rinafi suzdasiki rade prilarabueem.",
        "wlheader-enotif": "Email walzera tir tegisa.",
        "wlheader-showupdated": "Bu betayanu vielu rin ironokon worayal tir '''sulatcalakorafu'''.",
+       "wlnote": "Vleveon tid tela '''$1''' ironokafa betara mali '''$2''' ironokaf bartiv.",
        "wlshowlast": "Nedira va ironokaf $1 bartiv isu $2 viel isu $3",
        "watchlist-options": "Suzdasikiolkeem",
        "watching": "Nedis...",
index 0b75926..1a429a7 100644 (file)
@@ -25,7 +25,8 @@
                        "아라",
                        "Arystanbek",
                        "Dağlı95",
-                       "Sayginer"
+                       "Sayginer",
+                       "Şeyx Şamil"
                ]
        },
        "tog-underline": "Keçidlərin altını xətlə:",
        "updated": "(yeniləndi)",
        "note": "'''Qeyd:'''",
        "previewnote": "<strong>Unutmayın ki, bu yalnız sınaq göstərişidir.</strong> Dəyişiklikləriniz hal-hazırda qeyd edilməmişdir!",
+       "continue-editing": "Redaktə sahəsinə qayıt",
        "previewconflict": "Bu sınaq göstərişidir və yaddaşda saxlayacağınız təqdirdə mətnin redaktə səhifəsinin yuxarı hissəsində nəticənin necə olacağını göstərir.",
        "session_fail_preview": "'''Üzr istəyirik! Sizin redaktəniz saxlanılmadı. Serverdə identifikasiyanızla bağlı problemlər yaranmışdır. Lütfən bir daha təkrar edin. Problem həll olunmazsa hesabınızdan çıxın və yenidən daxil olun.'''",
        "editing": "Redaktə $1",
        "unusedtemplates": "İstifadəsiz şablonlar",
        "unusedtemplateswlh": "digər keçidlər",
        "randompage": "İxtiyari səhifə",
-       "randomincategory-selectcategory-submit": "Keç",
        "randomredirect": "İxtiyari istiqamətləndirmə",
        "randomredirect-nopages": "\"$1\" ad sahəsində heç bir yönləndirmə yoxdur.",
        "statistics": "Statistika",
        "thumbnail_image-missing": "Belə görünür ki, $1 faylı yoxdur",
        "import": "Səhifələri idxal et",
        "importinterwiki": "Vikilərarası çıxarma",
-       "import-interwiki-source": "Mənbə viki/səhifə:",
        "import-interwiki-history": "Səhifənin dəyişmə tarixçələrinin hamısını köçür",
        "import-interwiki-templates": "Bütün şablonlarla birlikdə",
        "import-interwiki-submit": "İdxal",
index 7361191..e72d941 100644 (file)
        "talkpagelinktext": "دانیشیق",
        "specialpage": "اؤزل صحیفه",
        "personaltools": "شخصی آراجلار",
-       "postcomment": "يئنی بؤلوم",
        "articlepage": "ایچری‌لی صحیفه‌یه باخ",
        "talk": "دانیشیق",
        "views": "گؤرونوشلر",
        "externaldberror": "بیر دیتابیس دوغرولاما خطاسی اولدو، یوخسا سیزین ائشیک حسابینیزی گونجل‌لدمگه ایجازه‌نیز یوخدور.",
        "login": "گیریش",
        "nav-login-createaccount": "گیریش / حساب یاراد",
-       "loginprompt": "{{SITENAME}} سایتینا گیریش اوچون، کوکی‌لره ایجازه وئرمک لازیم‌دیر.",
        "userlogin": "گیریش / حساب یاراد",
        "userloginnocreate": "گیریش",
        "logout": "چیخیش",
        "searchprofile-advanced-tooltip": "تاپشیریلان آدفضالاریندا آختار",
        "search-result-size": "$1 ({{PLURAL:$2|۱ سؤزجوک|$2 سؤزجوک}})",
        "search-result-category-size": "{{PLURAL:$1|بیر|$1}} عوضو ({{PLURAL:$2|بیر|$}} آلت‌بؤلمه، {{PLURAL:$3|بیر|$3}} فایل)",
-       "search-result-score": "اویغونلوق: $1٪",
        "search-redirect": "یول‌لاندیرما $1",
        "search-section": "(بؤلوم $1)",
        "search-suggest": "بونو نظرده توتوردونوزمو: $1",
        "uploadwarning": "يوکله‌مه خبردارلیغی",
        "uploadwarning-text": "خاهیش ائدیریک آشاغی‌داکی فایل شرحینی دییش‌دیرین و یئنی‌دن جهد ائدین.",
        "savefile": "فايلی قئيد ائت",
-       "uploadedimage": "«[[$1]]» یوکلندی",
-       "overwroteimage": "\"[[$1]]\"-این یئنی نوسخه سی یوکلندی",
        "uploaddisabled": "يوکله‌مه باش توتمادی",
        "copyuploaddisabled": "اینترنت آدرسی ایله یوکلمه باش توتمادی.",
        "uploaddisabledtext": "فايل يوکلنمه‌سی باش توتمادی.",
        "watchlist-details": "دانیشیق صفحه‌لرینی سایمایاراق، {{PLURAL:$1|$1 صفحه‌نی}} ایزله‌ییرسینیز.",
        "wlheader-enotif": "ایمیل ایله بیلدیریش آچیلیب‌دیر.",
        "wlheader-showupdated": "سون گؤروشونوزدن سونرا ائدیلن دییشیکلیکلر '''قالین''' گؤستریلیبدیلر.",
+       "wlnote": "آشاغیداکی {{PLURAL:$1|'''$1''' ديَیشیک‌لیک|'''$1'''ديَیشیک‌لیک}}  سون {{PLURAL:$2|ساعتدا|'''$2''' ساعتدا}} ائدیلمیشدیر.$3، $4",
        "wlshowlast": "سون $1 ساعات $2 گون گؤستر $3",
        "watchlist-options": "ایزله‌دیکلر سئچمه‌لری",
        "watching": "ایزله‌نیلیر...",
        "duplicate-defaultsort": "'''دیقت:''' احتیمال ائدیلن «$2» دفالت آچاری، قاباقکی «$1» دفالت آچارینی گئچرسیز ائدیر.",
        "version": "نوسخه‌",
        "version-extensions": "قورولموش گنیشلندیرمه‌لر",
+       "version-skins": "قابیقلار",
        "version-specialpages": "اؤزل صحیفه‌لر",
        "version-parserhooks": "آیریشدیران چنگل‌لری",
        "version-variables": "دَییشینلر",
        "version-antispam": "اِسپم اؤنله‌مه",
-       "version-skins": "قابیقلار",
        "version-other": "آیری",
        "version-mediahandlers": "مئدیا ایشلدنلری",
        "version-hooks": "چنگل‌لر",
index 4e2de7b..b92e7b6 100644 (file)
        "searchprofile-advanced-tooltip": "Махсус исем арауыҡтарында эҙләргә",
        "search-result-size": "$1 ({{PLURAL:$2|1=$2 һүҙ|$2 һүҙ}})",
        "search-result-category-size": "{{PLURAL:$1|1=$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})",
-       "search-result-score": "Тап килеүсәнлек: $1%",
        "search-redirect": "(йүнәлтеү $1)",
        "search-section": "($1 бүлеге)",
        "search-suggest": "Бәлки, ошоно эҙләйһегеҙҙер: $1",
        "uploadwarning": "Киҫәтеү",
        "uploadwarning-text": "Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.",
        "savefile": "Һөҙгөстө яҙҙырып ҡуйырға",
-       "uploadedimage": "«[[$1]]» тейәлгән",
-       "overwroteimage": "\"[[$1]]\" файлының яңы өлгөһө тейәлде",
        "uploaddisabled": "Тейәү рөхсәт ителмәй",
        "copyuploaddisabled": "URL адрес аша тейәү рөхсәт ителмәй.",
        "uploaddisabledtext": "Файлдар тейәү рөхсәт ителмәй.",
        "watchlist-details": "Һеҙҙең күҙәтеү исемлегегеҙҙә, фекерләшеү биттәрен һанамағанда, {{PLURAL:$1|$1 бит}} бар.",
        "wlheader-enotif": "Электрон почта аша белдереү индерелгән.",
        "wlheader-showupdated": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
+       "wlnote": "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
        "wlshowlast": "Һуңғы $1 сәғәт $2 көн өсөн күрһәт $3",
        "watchlist-options": "Күҙәтеү исемлеге көйләүҙәре",
        "watching": "Күҙәтеү исемлегенә өҫтәү...",
index f8947bb..4ebcf4a 100644 (file)
        "emptyfile": "Dé aufféglooderne Daatei is laar. Da Grund kauh a Tippfeeler im Daateinaum seih. Bittscheh kóntróllier, ób du dé Daatei wirklé aufféloon wüst.",
        "uploadwarning": "Ówocht",
        "savefile": "Daatei speichern",
-       "uploadedimage": "hod „[[$1]]“ affeglodn",
        "uploaddisabled": "'s aufféloon is deaktivierd",
        "uploadscripted": "Dé Datei enthoit HTML- óder Scriptcode, der wos irrtymlicherweis voram Webbrowser ausgfyrd wern kunnterd.",
        "uploadvirus": "Dé Daatei do enthoitt a Virus! Details: $1",
        "watchlist-details": "Du beoochst {{PLURAL:$1|$1 Seitn}}, Dischkriaseitn ned mitgrechnad",
        "wlheader-enotif": "Da E-Mail-Benoochrichtigungsdeanst is aktivierd.",
        "wlheader-showupdated": "Seiten mid noh néd gseengne Änderrungen wern '''fett''' dorgstöd.",
+       "wlnote": "Es {{PLURAL:$1|fóigt d' létzde Änderrung|fóing d' létzden '''$1''' Änderrungen}} voh da/dé {{PLURAL:$2|Stund| '''$2''' Stunden}}. Staund: $3, $4 Uar.",
        "wlshowlast": "Zoag dé Änderrungen voh dé létzden $1 Stunden, $2 Dog óder $3 (in dé létzden 30 Dog).",
        "watchlist-options": "Mei Beobochta: Optiona",
        "watching": "Beówochten ...",
index 96ab52c..829e636 100644 (file)
@@ -10,7 +10,8 @@
                        "WBT003Bugari",
                        "WBT004Togu",
                        "WBT006Hendra",
-                       "WBT009Anju"
+                       "WBT009Anju",
+                       "아라"
                ]
        },
        "tog-underline": "Ondolhon panait",
        "qbmyoptions": "Alaman niiba",
        "faq": "FAQ",
        "faqpage": "Project:FAQ",
-       "vector-action-addsection": "Bagian na imbaru",
-       "vector-action-delete": "Sesa",
-       "vector-action-move": "Pahusor",
-       "vector-action-protect": "Ramoti",
-       "vector-action-undelete": "unang sesa",
-       "vector-action-unprotect": "Uba parlindungan",
-       "vector-view-create": "Tompa",
-       "vector-view-edit": "Paubah",
-       "vector-view-history": "Patudu andorang na",
-       "vector-view-view": "Jaha",
-       "vector-view-viewsource": "Ida haroanna",
        "actions": "Pangulahonon",
        "namespaces": "Inganan ni goar",
        "variants": "Angka ragam",
        "talkpage": "Hatahon alaman on",
        "talkpagelinktext": "Pangkataion",
        "personaltools": "Ula-ula ni sasahalak",
-       "postcomment": "Bagian imbaru",
        "talk": "Panghataion",
        "views": "Hataridaan",
        "toolbox": "Poti ulaula",
        "nstab-help": "Alaman pangurupion",
        "nstab-category": "Kategori",
        "error": "Hasesega",
-       "fileappenderror": "Ndang boi pamasuhon \"$1\" tu \"$2\".",
        "badarticleerror": "Ulaon on dang boi i ulahon di alaman on",
        "cannotdelete-title": "Ndang boi manesa alaman \"$1\"",
        "badtitle": "Ulu ni surat na rumar",
        "password-change-forbidden": "Ndang boi ubaonmu hata hincu di wiki on",
        "login": "Bongot tu log",
        "nav-login-createaccount": "Bongot tu log/ bahen akun",
-       "loginprompt": "Ikkon dipangolu do \"cookies\" laho bongot log tu {{SINTENAME}}.",
        "userlogin": "Bongot tu log/ bahen akun",
        "userlogout": "Haruar log",
        "userlogin-noaccount": "Ndang adong akun",
        "searchmenu-exists": "'''Adong sada alaman na digoari \"[[:$1]]\" di wiki on.'''",
        "searchmenu-new": "'''Bahen alaman \"[[:$1]]\" di wiki on!'''",
        "searchprofile-articles": "Alaman isi",
-       "searchprofile-project": "Alaman pangurupion dohot proyek",
        "searchprofile-images": "Akat na godang gunana",
        "searchprofile-everything": "Sasude",
        "searchprofile-advanced": "Timbul",
        "searchprofile-articles-tooltip": "Mandiori di $1",
-       "searchprofile-project-tooltip": "Mandiori di $1",
        "searchprofile-images-tooltip": "Mandiori berkas",
        "searchprofile-everything-tooltip": "Mandiori di sude inganan (dohot di alaman panghataion)",
        "searchprofile-advanced-tooltip": "Mandiori pake inganan ni goar",
        "recentchanges-label-minor": "Sada panotaan na metmet",
        "recentchanges-label-bot": "Panotaan on diulahon bot",
        "recentchanges-label-unpatrolled": "Panotaan on ndang dipamanat dope",
-       "rclistfrom": "Patuduhon parubaan na imbaru mamungka sian $1",
+       "rclistfrom": "Patuduhon parubaan na imbaru mamungka sian $3 $2",
        "rcshowhideminor": "$1 panotaan na metmet",
        "rcshowhidebots": "$1 bot",
        "rcshowhideliu": "$1 pamarhaseang bongot tu log",
        "booksources-go": "Torushon",
        "log": "Angka log",
        "allpages": "Sude alaman",
-       "alphaindexline": "$1 tu $2",
        "allarticles": "Sude alaman",
        "allpagessubmit": "Torushon",
        "categories": "Angka horong",
index 2dae621..08c0dde 100644 (file)
        "hidetoc": "پناه کن",
        "collapsible-collapse": "چیر داتن",
        "collapsible-expand": "تچک کتن",
+       "confirmable-confirm": "آیا {{GENDER:$1|شما}} مطمعین ویت?",
+       "confirmable-yes": "هان",
+       "confirmable-no": "نه",
        "thisisdeleted": "به گند یا پچ ترین $1?",
        "viewdeleted": "به گند $1?",
        "restorelink": "{{PLURAL:$1|یک حذف اصلاح|$1 حذف اصلاح}}",
        "delete-edit-reasonlist": "اصلاح کن دلایل حذفء",
        "delete-toobig": "صفحهء یک مزنین تاریح اصلاحی هست گیشتر چه $1 {{PLURAL:$1|بازبینی|بازبینی}}.\nحذف چوشین صفحات په خاظر جلو گر چه ناگهانی اتفاق ته سایت {{SITENAME}} ممنوع بوتت.",
        "delete-warning-toobig": "ای صفحه  مزنین تاریح اصلاح هست، گیش چه  $1 {{PLURAL:$1|بازبینی|بازبینی}}.\nحذف آی شاید کار دیتابیس  {{SITENAME}} قطع کنت؛\nگون اخطار پیش روت.",
-       "delete-cantedit": "شما نه توانیت ای صپحا پاک کنیت بی خاطیریکه شما اجازه نداریت آیرا ایڈیت کنیت.",
        "rollback": "پشت ترگ اصلاحات",
        "rollback_short": "پشتررگ",
        "rollbacklink": "عقب ترگ",
        "import": "وارد کن صفحاتء",
        "importinterwiki": "ورود بین ویکی",
        "import-interwiki-text": "یک ویکی و  عنوان صفحه انتخاب کن په ورود.\nتاریح بازبینی و نامان اصلاح کنوکان دارگ بیت.\nکل کاران ورود بین ویکی وارد بیت نه [[Special:Log/import|ورود آمار]].",
-       "import-interwiki-source": "ویکی بن در/صفحه:",
        "import-interwiki-history": "کپی کن کل بازبینی آن تاریح په ای صفحه",
        "import-interwiki-templates": "کل تمپلت هور بنت",
        "import-interwiki-submit": "ورود",
        "expand_templates_ok": "هوبنت",
        "expand_templates_remove_comments": "بزور نظرات",
        "expand_templates_generate_xml": "پیش دار درچک تجزیه XMLء",
-       "expand_templates_preview": "بازبین"
+       "expand_templates_preview": "بازبین",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (پعال)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر پعال''')"
 }
index 5030c0d..b471419 100644 (file)
        "invalidtitle-knownnamespace": "Imbalidong titulo na igwang espasyadong ngaran na \"$2\" asin teksto na \"$3\"",
        "invalidtitle-unknownnamespace": "Imbalidong titulo na igwang nin bakong bistado na bilang kan espasyadong ngaran na $1 asin teksto na \"$2\"",
        "exception-nologin": "Dai ka nakalaog",
-       "exception-nologin-text": "Tabi man [[Special:Userlogin|maglaog]]na tanganing makalangkay sa pahinang ini o aksyon.",
+       "exception-nologin-text": "Pakipalaog tabi tanganing makalangkay sa pahinang ini o aksyon.",
        "exception-nologin-text-manual": "Tabi man $1 na tanganing makalangkay sa pahinang ini o aksyon.",
        "virus-badscanner": "Raot na kasalansanan: Bakong bistadong virus scanner: ''$1''",
        "virus-scanfailed": "An paghingipid (scan) nagpalya (Koda $1)",
        "searchprofile-advanced-tooltip": "Maghanap nin pankustombreng espasyong-ngaran",
        "search-result-size": "$1 ({{PLURAL:$2|1 tatarámon|$2 mga tatarámon}})",
        "search-result-category-size": "{{PLURAL:$1|1 miyembro|$1 mga miyembro}} ({{PLURAL:$2|1 subkategorya|$2 mga subkategorya}}, {{PLURAL:$3|1 sagunson|$3 mga sagunson}})",
-       "search-result-score": "Relebansiya: $1%",
        "search-redirect": "(Panukdong otro $1)",
        "search-section": "(Seksyon $1)",
        "search-suggest": "Boot mong ipakahulugan: $1",
        "uploadwarning": "Patanid sa pagkarga",
        "uploadwarning-text": "Pakibaguha tabi an deskripsyon kan sagunson sa ibaba asin paki-otroha giraray.",
        "savefile": "Itagama an ''file''",
-       "uploadedimage": "ipinagkarga na \"[[$1]]\"",
-       "overwroteimage": "kinarga an bagong bersión kan \"[[$1]]\"",
        "uploaddisabled": "Pigpopondó an mga pagkargá",
        "copyuploaddisabled": "An pagkarga sa paagi kan kilyawan pinagpondo.",
        "uploaddisabledtext": "An pagkarga kan mga sagunson pinagpondo tabi.",
        "randomincategory": "Purakan na pahina sa kategoriya",
        "randomincategory-invalidcategory": "\"$1\" bako sarong balidong pangaran nin kategoriya.",
        "randomincategory-nopages": "Mayo nin mga pahina sa [[:Category:$1]].",
-       "randomincategory-selectcategory": "Magkua nin purakan na pahina gikan sa kategoriya: $1 $2.",
-       "randomincategory-selectcategory-submit": "Magduman",
+       "randomincategory-legend": "Purakan na pahina sa kategoriya",
        "randomredirect": "Random na pagredirekta",
        "randomredirect-nopages": "Mayo nin panukdo-liwat sa espasyong-ngaran na \"$1\".",
        "statistics": "Mga Estadistiko",
        "mywatchlist": "Bantay-listahan",
        "watchlistfor2": "Para ki $1 $2",
        "nowatchlist": "Mayo ka man na mga bagay saimong lista nin pigbabantayan.",
-       "watchlistanontext": "Mag $1 tabi para mahiling o maghira nin mga bagay saimong lista nin mga pigbabantayan.",
+       "watchlistanontext": "Pakipalaog tabi tanganing makapaghiling o makapagliwat sa mga aytem na yaon sa saimong bantay-listahan.",
        "watchnologin": "Mayô sa laog",
        "addwatch": "Idagdag sa bantay-listahan",
        "addedwatchtext": "Ining pahina \"[[:$1]]\" dinadagdag sa saimong mga [[Special:Watchlist|Bantay-listahan]].\nAn maabot na mga pagbabâgo sa páhinang ini asin sa asosyadong páhina nin olay paglilistahon duman.",
        "watchlist-details": "{{PLURAL:$1|$1 pahina|$1 mga pahina}} sa saimong bantay-listahan, dae binibilang an mga pahina nin orolayan.",
        "wlheader-enotif": "E-surat na paisi pinagpaandar na.",
        "wlheader-showupdated": "Mga pahina na pinagriliwat poon kaidtong huri kang nagbisita sainda ipinapatanaw na '''mahîbog'''",
+       "wlnote": "Sa ibaba an {{PLURAL:$1|huring pagbabago|mga huring '''$1''' pagbabago}} sa nakaaging {{PLURAL:$2|oras|'''$2''' mga oras}}, magpoon pa kan $3, $4.",
        "wlshowlast": "Ipahilíng an nakaaging $1 na mga oras mga $2 na aldaw $3",
        "watchlist-options": "Bantay-listahan na mga pagpipilian",
        "watching": "Pigbabantayan...",
        "exbeforeblank": "Ini an dating laog bagô blinankohán: '$1'",
        "delete-confirm": "Puraon \"$1\"",
        "delete-legend": "Paraon",
-       "historywarning": "'''Patanid tabi:''' An pahina na saimong pagpupuraon may historiya na igwa nin haros $1 {{PLURAL:$1|rebisyon|mga rebisyon}}:",
+       "historywarning": "<strong>Patanid:</strong> An pahina na saimong pagpupuraon may historiya na igwa nin $1 {{PLURAL:$1|rebisyon|mga rebisyon}}:",
        "confirmdeletetext": "Paparaon mo sa base nin datos ining pahina kasabay an gabos na mga uusipón kaini.\nKonpirmaron tabì na talagang boot mong gibohon ini, nasasabotan mo an mga resulta, asin an piggigibo mo ini konporme sa\n[[{{MediaWiki:Policy-url}}]].",
        "actioncomplete": "An aksyon nakumpleto na",
        "actionfailed": "An aksyon nagpalya",
        "autoblockid": "Awtomatikong-kabarahan #$1",
        "block": "Barahon an paragamit",
        "unblock": "Haleon an bara kan paragamit",
-       "blockip": "Bagáton an paragamit",
+       "blockip": "Bagáton {{KASARIAN:$1|paragamit}}",
        "blockip-legend": "Kubkuba an paragamit",
        "blockiptext": "Gamiton an pormularyo sa babâ para bagaton an pagsurat kan sarong espesipikong IP o ngaran nin parágamit.\nDapat gibohon sana ini para maibitaran vandalismo, asin kompirmi sa [[{{MediaWiki:Policy-url}}|palakaw]].\nMagkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang rinaot).",
        "ipaddressorusername": "direksyon nin IP o gahâ:",
        "ipb-unblock-addr": "Paagihon $1",
        "ipb-unblock": "Bawion an pagbagat nin ngaran nin paragamit o direccion nin IP",
        "ipb-blocklist": "Hilingon an mga presenteng binagat",
-       "ipb-blocklist-contribs": "Mga kontribusyon para sa $1",
+       "ipb-blocklist-contribs": "Mga kontribusyon para sa {{KASARIAN:$1|$1}}",
        "unblockip": "Paagihon an parâgamit",
        "unblockiptext": "Gamiton an pormulario sa baba para puede giraray suratan an dating binagat na direccion nin IP address o ngaran nin paragamit.",
        "ipusubmit": "Haleon ining bara",
        "import": "Ilaog an mga páhina",
        "importinterwiki": "Ipadara an Transwiki",
        "import-interwiki-text": "Pumili nin sarong wiki asin titulo kan pahina na importaron.\nMga petsa nin kaliwatan asin pangaran kan mga paraliwat pagpepreserbaron.\nGabos na aksyon nin importa sa transwiki nakatala sa [[Special:Log/import|talaan nin importa]].",
-       "import-interwiki-source": "Ginikanang wiki/pahina:",
+       "import-interwiki-sourcepage": "Gikanang pahina:",
        "import-interwiki-history": "Kopyahon an gabos na mga bersyón para sa páhinang ini",
        "import-interwiki-templates": "Ibali an gabos na mga panguyog",
        "import-interwiki-submit": "Ipalaog",
index 0fb698e..13f55ad 100644 (file)
        "node-count-exceeded-category-desc": "На старонцы перавышаная максымальная колькасьць вузлоў.",
        "node-count-exceeded-warning": "Старонка перавысіла дазволеную колькасьць вузлоў",
        "expansion-depth-exceeded-category": "Старонкі зь перавышанай глыбінёй уключэньня",
-       "expansion-depth-exceeded-category-desc": "Ð\93Ñ\8dÑ\82а ÐºÐ°Ñ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82аÑ\80онак, Ð´Ð·Ðµ Ð¿ÐµÑ\80авÑ\8bÑ\88анаÑ\8f Ð³Ð»Ñ\8bбÑ\96нÑ\8f раскрыцьця.",
+       "expansion-depth-exceeded-category-desc": "СÑ\82аÑ\80онка Ð¿ÐµÑ\80авÑ\8bÑ\88ае Ð¼Ð°ÐºÑ\81Ñ\8bмалÑ\8cнÑ\83Ñ\8e Ð³Ð»Ñ\8bбÑ\96нÑ\8e раскрыцьця.",
        "expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню ўключэньняў",
        "parser-unstrip-loop-warning": "Вызначаная незачыненая пятля",
        "parser-unstrip-recursion-limit": "Перавышанае абмежаваньне глыбіні рэкурсіі ($1)",
        "preferences": "Налады",
        "mypreferences": "Налады",
        "prefs-edits": "Колькасьць рэдагаваньняў:",
-       "prefsnologintext2": "Ð\9dеабÑ\85одна $1, каб зьмяніць вашыя налады.",
+       "prefsnologintext2": "Ð\9aалÑ\96 Ð»Ð°Ñ\81ка, Ñ\83вайдзÑ\96Ñ\86е Ñ\9e Ñ\81Ñ\8bÑ\81Ñ\82Ñ\8dмÑ\83, каб зьмяніць вашыя налады.",
        "prefs-skin": "Афармленьне",
        "skin-preview": "Папярэдні прагляд",
        "datedefault": "Па змоўчаньні",
        "randomincategory": "Выпадковая старонка ў катэгорыі",
        "randomincategory-invalidcategory": "«$1» — ня слушная назва катэгорыі.",
        "randomincategory-nopages": "У катэгорыі «[[:Category:$1|$1]]» старонак няма.",
-       "randomincategory-selectcategory": "Узяць адвольную старонку з катэгорыі: $1 $2.",
-       "randomincategory-selectcategory-submit": "Паказаць",
+       "randomincategory-category": "Катэгорыя:",
+       "randomincategory-legend": "Выпадковая старонка ў катэгорыі",
        "randomredirect": "Выпадковае перанакіраваньне",
        "randomredirect-nopages": "У прасторы назваў «$1» няма перанакіраваньняў.",
        "statistics": "Статыстыка",
        "trackingcategories-desc": "Крытэр уключэньня ў катэгорыю",
        "noindex-category-desc": "Гэтая старонка не індэксуецца пошукавымі робатамі, таму што на ёй маецца магічнае слова <code><nowiki>__NOINDEX__</nowiki></code>, а старонка знаходзіцца ў прасторы назваў, дзе дазволны гэты сьцяг.",
        "index-category-desc": "На старонцы знаходзіцца магічнае слова <code><nowiki>__INDEX__</nowiki></code> (пры гэтым старонка знаходзіцца ў прасторы назваў, дзе дазволены гэты сьцяг), таму яна індэксуецца пошукавымі робатамі ў тых выпадках, калі звычайна гэтага не адбываецца.",
-       "post-expand-template-inclusion-category-desc": "Пасьля разгортваньня ўсіх шаблёнаў, памер старонкі перавысіў <code>$wgMaxArticleSize</code>, таму некаторыя шаблёны не былі паказаныя цалкам.",
-       "post-expand-template-argument-category-desc": "Ð\9fаÑ\81Ñ\8cлÑ\8f Ñ\80аÑ\81кÑ\80Ñ\8bÑ\86Ñ\8cÑ\86Ñ\8f Ð°Ñ\80гÑ\83мÑ\8dнÑ\82Ñ\83 Ñ\88аблÑ\91нÑ\83 (неÑ\88Ñ\82а Ñ\9e Ñ\82Ñ\80айнÑ\8bÑ\85 Ð´Ñ\83жкаÑ\85, Ð½Ð°Ð¿Ñ\80Ñ\8bклад, <code>{{{Foo}}}</code>), Ñ\81Ñ\82аÑ\80онка Ð¿ÐµÑ\80авÑ\8bÑ\88ае Ð¿Ð°Ð¼ÐµÑ\80 <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "На старонцы ўжываецца зашмат рэсурсаёмістых функцыяў парсэру (такіх, як <code>#ifexist</code>). Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f Ð´Ð°Ð´Ð°ÐµÑ\86Ñ\86а, ÐºÐ°Ð»Ñ\96 Ñ\81таронка ўтрымлівае няслушную спасылку на файл (спасылку на файл, які не існуе).",
-       "hidden-category-category-desc": "Ð\93Ñ\8dÑ\82а ÐºÐ°Ñ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f Ð· Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ð¹ Ð¼ÐµÑ\82кай <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\83 Ñ\91й, што па змоўчаньні не адлюстроўвае яе на старонках у сьпісе катэгорыяў.",
+       "post-expand-template-inclusion-category-desc": "Памер старонкі перавысіў <code>$wgMaxArticleSize</code> пасьля разгортваньня ўсіх шаблёнаў, таму некаторыя шаблёны не былі паказаныя цалкам.",
+       "post-expand-template-argument-category-desc": "СÑ\82аÑ\80онка Ð¿ÐµÑ\80авÑ\8bÑ\88ае Ð¿Ð°Ð¼ÐµÑ\80 <code>$wgMaxArticleSize</code> Ð¿Ð°Ñ\81Ñ\8cлÑ\8f Ñ\80аÑ\81кÑ\80Ñ\8bÑ\86Ñ\8cÑ\86Ñ\8f Ð°Ñ\80гÑ\83мÑ\8dнÑ\82Ñ\83 Ñ\88аблÑ\91нÑ\83 (неÑ\88Ñ\82а Ñ\9e Ñ\82Ñ\80айнÑ\8bÑ\85 Ð´Ñ\83жкаÑ\85, Ð½Ð°Ð¿Ñ\80Ñ\8bклад, <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "На старонцы ўжываецца зашмат рэсурсаёмістых функцыяў парсэру (такіх, як <code>#ifexist</code>). Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Інструкцыя:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Старонка ўтрымлівае няслушную спасылку на файл (спасылку на файл, які не існуе).",
+       "hidden-category-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f Ñ\9eÑ\82Ñ\80Ñ\8bмлÑ\96вае Ð¼ÐµÑ\82кÑ\83 <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\83 Ð·Ñ\8cмеÑ\81Ñ\8cÑ\86е Ñ\81Ñ\82аÑ\80онкÑ\96, што па змоўчаньні не адлюстроўвае яе на старонках у сьпісе катэгорыяў.",
        "trackingcategories-nodesc": "Апісаньне адсутнічае.",
        "trackingcategories-disabled": "Катэгорыя адключаная",
        "mailnologin": "Няма адрасу атрымальніка",
        "mywatchlist": "Сьпіс назіраньня",
        "watchlistfor2": "Для $1 $2",
        "nowatchlist": "Ваш сьпіс назіраньня пусты.",
-       "watchlistanontext": "Ð\92ам Ð¿Ð°Ñ\82Ñ\80Ñ\8dбна $1, каб праглядаць альбо рэдагаваць сьпіс назіраньня.",
+       "watchlistanontext": "Ð\9aалÑ\96 Ð»Ð°Ñ\81ка, Ñ\83вайдзÑ\96Ñ\86е Ñ\9e Ñ\81Ñ\8bÑ\81Ñ\82Ñ\8dмÑ\83, каб праглядаць альбо рэдагаваць сьпіс назіраньня.",
        "watchnologin": "Вы не ўвайшлі ў сыстэму",
        "addwatch": "Дадаць ў сьпіс назіраньня",
        "addedwatchtext": "Старонка «[[:$1]]» была дададзеная да Вашага [[Special:Watchlist|сьпісу назіраньня]].\nНаступныя зьмены ў гэтай старонцы і зьвязанай зь ёю старонцы абмеркаваньняў будуць бачныя там.",
        "exbeforeblank": "зьмест да ачысткі: «$1»",
        "delete-confirm": "Выдаліць «$1»",
        "delete-legend": "Выдаліць",
-       "historywarning": "'''Папярэджаньне''': старонка, якую Вы зьбіраецеся выдаліць, мае гісторыю з прыкладна $1 {{PLURAL:$1|вэрсіі|вэрсіяў|вэрсіяў}}:",
+       "historywarning": "<strong>Папярэджаньне</strong>: старонка, якую Вы зьбіраецеся выдаліць, мае гісторыю з $1 {{PLURAL:$1|вэрсіі|вэрсіяў|вэрсіяў}}:",
        "confirmdeletetext": "Зараз Вы выдаліце старонку разам з усёй гісторыяй зьменаў.\nКалі ласка, пацьвердзіце, што Вы зьбіраецеся гэта зрабіць і што Вы разумееце ўсе наступствы, а таксама робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].",
        "actioncomplete": "Дзеяньне выкананае",
        "actionfailed": "Дзеяньне ня выкананае",
        "delete-edit-reasonlist": "Рэдагаваць прычыны выдаленьня",
        "delete-toobig": "Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.\nВыдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.",
        "delete-warning-toobig": "Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.\nЯе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.",
-       "delete-cantedit": "Вы ня можаце выдаліць гэтую старонку, таму што ня маеце правоў на яе рэдагаваньне.",
+       "deleteprotected": "Вы ня можаце выдаліць гэтую старонку, таму што яна абароненая.",
        "deleting-backlinks-warning": "'''Увага:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|іншыя старонкі]] ўключаюць або спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.",
        "rollback": "Адкаціць рэдагаваньні",
        "rollback_short": "Адкат",
        "autoblockid": "Аўтаматычнае блякаваньне №$1",
        "block": "Заблякаваць удзельніка",
        "unblock": "Разблякаваць удзельніка",
-       "blockip": "Заблякаваць",
+       "blockip": "Заблякаваць {{GENDER:$1|удзельніка|удзельніцу}}",
        "blockip-legend": "Заблякаваць удзельніка",
        "blockiptext": "Наступная форма дазваляе заблякаваць магчымасьць рэдагаваньня з пэўнага IP-адрасу альбо імя ўдзельніка. Гэта трэба рабіць толькі дзеля прадухіленьня вандалізму і згодна з [[{{MediaWiki:Policy-url}}|правіламі]]. Пазначце ніжэй дакладную прычыну (напрыклад, пералічыце асобныя старонкі, на якіх былі парушэньні).",
        "ipaddressorusername": "IP-адрас альбо імя ўдзельніка/ўдзельніцы:",
        "import": "Імпартаваць старонкі",
        "importinterwiki": "Імпартаваньне зь іншых вікі",
        "import-interwiki-text": "Абярыце вікі і назву старонкі для імпартаваньня.\nДаты зьменаў і імёны аўтараў будуць захаваныя.\nУсе дзеяньні імпартаваньня паміж вікі запісваюцца ў [[Special:Log/import|журнал імпартаваньняў]].",
-       "import-interwiki-source": "Крынічная вікі/старонка:",
+       "import-interwiki-sourcewiki": "Крынічная вікі:",
+       "import-interwiki-sourcepage": "Крынічная старонка:",
        "import-interwiki-history": "Капіяваць гісторыю старонкі цалкам",
        "import-interwiki-templates": "Уключыць усе шаблёны",
        "import-interwiki-submit": "Імпартаваць",
        "log-description-pagelang": "Гэта журнал зьменаў мовы старонак.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5.",
        "default-skin-not-found": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code> недаступная.\n\nВашае ўсталяваньне, падобна, уключае наступныя тэмы афармленьня. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.\n\n$2\n\n; Калі вы толькі што ўсталявалі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's каталёгу тэмаў]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code>skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki вэрсіі 1.24 і навейшыя больш не падключаюць тэмы афармленьня аўтаматычна (глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя:Аўтаматычнае выяўленьне тэмаў афармленьня]). Вы можаце дадаць наступныя радкі ў <code>LocalSettings.php</code>, каб падключыць усе ўсталяваныя тэмы афармленьня:\n\n<pre>$3</pre>\n\n; Калі вы толькі што зьмянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы тэмаў афармленьня на наяўнасьць памылак.",
+       "default-skin-not-found-no-skins": "Упс! Тэма афармленьня па змоўчаньня для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступная.\n\nВы ня маеце ўсталяваных тэмаў афармленьня.\n\n; Калі вы толькі што ўсталявалі або абнавілі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. MediaWiki вэрсіі 1.24 і навейшыя ня ўтрымліваюць тэмы афармленьня ў галоўным сховішчы. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code>skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''адключана''')"
 }
index 73e5b9c..929d9c4 100644 (file)
        "listduplicatedfiles-summary": "Гэта пералік файлаў, у якіх найноўшая версія файла ўяўляе сабою копію апошняй версіі якога-небудзь іншага файла. Улічваюцца толькі лакальныя файлы.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] мае [[$3|{{PLURAL:$2|дублікат|$2 дублікаты|$2 дублікатаў}}]].",
        "unusedtemplates": "Шаблоны, якія не выкарыстаны",
-       "unusedtemplatestext": "Тут пералічаныя ўсе старонкі ў прасторы назваў {{ns:template}}, якія ані разу не ўкладзеныя ў іншыя старонкі. Памятайце, што трэба правяраць спасылкі на шаблоны перад тым, як сціраць іх.",
+       "unusedtemplatestext": "Тут пералічаныя ўсе старонкі ў прасторы назваў {{ns:template}}, якія ані разу не ўкладзеныя ў іншыя старонкі.\nПамятайце, што трэба правяраць спасылкі на шаблоны перад тым, як сціраць іх.",
        "unusedtemplateswlh": "іншыя спасылкі",
        "randompage": "Выпадковая старонка",
        "randompage-nopages": "Няма старонак у наступн{{PLURAL:$2|ай прасторы|ых прасторах}} назваў: $1.",
        "randomincategory": "Выпадковая старонка ў катэгорыі",
        "randomincategory-invalidcategory": "\"$1\" - недапушчальная назва катэгорыі.",
        "randomincategory-nopages": "Няма старонак у катэгорыі [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Атрымаць выпадковую старонку з катэгорыі: $1 $2.",
-       "randomincategory-selectcategory-submit": "Перайсці",
+       "randomincategory-category": "Катэгорыя:",
+       "randomincategory-legend": "Выпадковая старонка ў катэгорыі",
        "randomredirect": "Выпадковая перасылка",
        "randomredirect-nopages": "Няма перасылак у прасторы назваў \"$1\".",
        "statistics": "Статыстыка",
        "exbeforeblank": "змесціва перад ачысткаю было: '$1'",
        "delete-confirm": "Сцерці \"$1\"",
        "delete-legend": "Сцерці",
-       "historywarning": "'''Увага''': Старонка, якую вы хочаце сцерці, мае гісторыю прыблізна $1 {{PLURAL:$1|праўкі|правак}}:",
+       "historywarning": "<strong>Увага:</strong> Старонка, якую вы хочаце сцерці, мае гісторыю з прыблізна $1 {{PLURAL:$1|праўкі|правак}}:",
        "confirmdeletetext": "Вы збіраецеся сцерці старонку разам з цэлай яе гісторыяй правак.\nПацвердзіце свой намер зрабіць гэта, сваё разуменне наступстваў, і што вы робіце гэта ў адпаведнасці з [[{{MediaWiki:Policy-url}}|палітыкай (асноўнымі правіламі)]].",
        "actioncomplete": "Завершана аперацыя",
        "actionfailed": "Памылка дзеяння",
        "delete-edit-reasonlist": "Правіць прычыны сцірання",
        "delete-toobig": "Старонка мае вялікую гісторыю правак, больш за $1 {{PLURAL:$1|версію|версій}}. Сціранне такіх старонак было абмежавана, каб пазбегчы ўтварэння выпадковых перашкод працы {{SITENAME}}.",
        "delete-warning-toobig": "Старонка мае вялікую гісторыю правак, больш за $1 {{PLURAL:$1|версію|версій}}. Сціранне такіх старонак можа перашкодзіць працы базы даных {{SITENAME}}; будзьце асцярожнымі.",
-       "delete-cantedit": "Вы не можаце сцерці гэту старонку, таму што не маеце дазволу правіць яе.",
+       "deleteprotected": "Вы не можаце сцерці гэтую старонку, таму што яна ахоўваецца.",
        "deleting-backlinks-warning": "'''Увага:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Іншыя старонкі]] спасылаюцца на ці ўключаюць старонку, якую вы збіраецеся сцерці.",
        "rollback": "Адкаціць праўкі",
        "rollback_short": "Адкат",
        "import": "Імпартаваць старонкі",
        "importinterwiki": "Імпарт Transwiki",
        "import-interwiki-text": "Выбар вікі і назвы старонкі дзеля імпарту.\nДаты версій і імёны аўтараў будуць захаваныя.\nУсе транс-вікавыя імпарты запісваюцца ў [[Special:Log/import|журнале імпартаў]].",
-       "import-interwiki-source": "Выточная вікі/старонка:",
+       "import-interwiki-sourcewiki": "Крынічная вікі:",
+       "import-interwiki-sourcepage": "Крынічная старонка:",
        "import-interwiki-history": "Капіраваць усе гістарычныя версіі гэтай старонкі",
        "import-interwiki-templates": "Разам з усімі шаблонамі",
        "import-interwiki-submit": "Імпартаваць",
index 8de83ad..9a21f2b 100644 (file)
@@ -20,7 +20,9 @@
                        "Vladimir Penov",
                        "Петър Петров",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Gazimagomedov",
+                       "StanProg"
                ]
        },
        "tog-underline": "Подчертаване на препратките:",
@@ -37,6 +39,7 @@
        "tog-watchdefault": "Добавяне на страниците, които редактирам, в списъка ми за наблюдение",
        "tog-watchmoves": "Добавяне на преместените от мен страници и файлове към списъка ми за наблюдение",
        "tog-watchdeletion": "Добавяне на изтритите от мен страници и файлове към списъка ми за наблюдение",
+       "tog-watchrollback": "Добавяне на страници, в които съм {{GENDER:$1|извършвал|извършвала}} отмяна на редакции в списъка ми за наблюдениe",
        "tog-minordefault": "Отбелязване на всички промени като малки по подразбиране",
        "tog-previewontop": "Показване на предварителния преглед преди текстовата кутия",
        "tog-previewonfirst": "Показване на предварителен преглед при първа редакция",
        "permalink": "Постоянна препратка",
        "print": "Печат",
        "view": "Преглед",
+       "view-foreign": "Преглед на $1",
        "edit": "Редактиране",
        "edit-local": "Редактиране на локалното описание",
        "create": "Създаване",
        "jumptonavigation": "навигация",
        "jumptosearch": "търсене",
        "view-pool-error": "Съжаляваме, но сървърите в момента са претоварени.\nТвърде много потребители се опитват да отворят тази страница.\nМоля, изчакайте малко преди отново да пробвате да отворите страницата.\n\n$1",
+       "generic-pool-error": "Съжаляваме, но сървърите в момента са претоварени.\nТвърде много потребители се опитват да отворят тази страница.\nМоля, изчакайте малко преди отново да пробвате да отворите страницата.",
        "pool-timeout": "Изтичане на времето за заключване на страницата",
        "pool-queuefull": "Опашката за заявки е пълна",
        "pool-errorunknown": "Непозната грешка",
        "hidetoc": "скриване",
        "collapsible-collapse": "Свиване",
        "collapsible-expand": "Разгръщане",
+       "confirmable-confirm": "{{GENDER:$1|Сигурен|Сигурна}} ли сте?",
+       "confirmable-yes": "Да",
+       "confirmable-no": "Не",
        "thisisdeleted": "Преглед или възстановяване на $1?",
        "viewdeleted": "Преглед на $1?",
        "restorelink": "{{PLURAL:$1|една изтрита редакция|$1 изтрити редакции}}",
        "badarticleerror": "Действието не може да се изпълни върху страницата.",
        "cannotdelete": "Указаната страница или файл \"$1\" не можа да бъде изтрит(а). Възможно е вече да е бил(а) изтрит(а) от някой друг.",
        "cannotdelete-title": "Страницата „$1“ не може да бъде изтрита",
+       "delete-hook-aborted": "Изтриването беше прекъснато от кука.\nНе беше посочена причина за това.",
        "no-null-revision": "Не може да бъде създадена празна версия на страницата „$1“",
        "badtitle": "Невалидно заглавие",
        "badtitletext": "Желаното заглавие на страница е невалидно, празно или неправилна препратка към друго уики. Възможно е да съдържа знаци, които не са позволени в заглавия.",
        "ns-specialprotected": "Специалните страници не могат да бъдат редактирани.",
        "titleprotected": "Тази страница е била защитена срещу създаване от [[User:$1|$1]].\nПосочената причина е ''$2''.",
        "filereadonlyerror": "Файлът „$1“ не може да бъде променен, тъй като файловото хранилище „$2“ е в режим само за четене.\n\nАдминистраторът, който го е заключил, е посочил следната причина: „$3“.",
-       "exception-nologin-text": "За досъп до желаната страница или действие уикито изисква [[Special:Userlogin|влизане в системата]].",
+       "invalidtitle-knownnamespace": "Невалидно заглавие с именно пространство $2\" и текст \"$3\"",
+       "invalidtitle-unknownnamespace": "Невалидно заглавие с неразпознато именно пространство номер $1 и текст „$2“",
+       "exception-nologin": "Не сте влезли",
+       "exception-nologin-text": "За достъп до избраното действие или страница е необходимо влизане в системата.",
        "exception-nologin-text-manual": "За достъп до избраното действие или страница е необходимо $1 в системата.",
        "virus-badscanner": "Лоша конфигурация: непознат скенер за вируси: ''$1''",
        "virus-scanfailed": "сканирането не сполучи (код $1)",
        "pt-userlogout": "Излизане",
        "php-mail-error-unknown": "Неизвестна грешка в mail() функцията на PHP",
        "user-mail-no-addy": "Опитвате се да изпратите е-писмо без да е посочен адрес за електронна поща.",
+       "user-mail-no-body": "Опитвате се да изпратите е-писмо с празно или изключително кратко съдържание.",
        "changepassword": "Смяна на парола",
        "resetpass_announce": "За да се завърши процеса на влизане, необходимо е да се избере нова парола.",
        "resetpass_text": "<!-- Тук добавете текст -->",
        "retypenew": "Нова парола повторно:",
        "resetpass_submit": "Избиране на парола и влизане",
        "changepassword-success": "Паролата ви беше променена успешно!",
+       "changepassword-throttled": "Направили сте твърде много опити да въведете паролата за тази сметка.\nНеобходимо е да изчакате $1 преди да опитате отново.",
        "resetpass_forbidden": "Не е разрешена смяна на паролата",
        "resetpass-no-info": "За да достъпвате тази страница директно, необходимо е да влезете в системата.",
        "resetpass-submit-loggedin": "Промяна на паролата",
        "resetpass-submit-cancel": "Отказ",
        "resetpass-wrong-oldpass": "Невалидна временна или текуща парола.\nВъзможно е вече успешно да сте сменили паролата си или да сте поискали нова временна парола.",
+       "resetpass-recycled": "Моля, променете паролата си с такава, различна от текущата.",
        "resetpass-temp-password": "Временна парола:",
        "resetpass-abort-generic": "Промяната на паролата беше прекъсната от използвано разширение.",
        "resetpass-expired": "Срокът на валидност на паролата е изтекъл. Изберете нова парола за влизане.",
        "resettokens-tokens": "Маркери:",
        "resettokens-token-label": "$1 (текуща стойност: $2)",
        "resettokens-watchlist-token": "Маркер за уеб хранилка (Atom/RSS) на [[Special: Watchlist|промени на страници от списъка Ви за наблюдение]]",
+       "resettokens-done": "Маркерите са изчистени.",
        "resettokens-resetbutton": "Изчистване на избраните маркери",
        "bold_sample": "Получер текст",
        "bold_tip": "Получер (удебелен) текст",
        "recreate-moveddeleted-warn": "'''Внимание: Създавате страница, която по-рано вече е била изтрита.'''\n\nОбмислете добре дали е уместно повторното създаване на страницата.\nЗа ваша информация по-долу е посочена причината за предишното изтриване на страницата:",
        "moveddeleted-notice": "Тази страница е била изтрита.\nЗа справка, по-долу са включени извадки от дневниците на изтриванията и преместванията.",
        "log-fulllog": "Преглеждане на пълния дневник",
-       "edit-hook-aborted": "Редакцията беше прекъсната от кука. Не беше посочена причина за това.",
+       "edit-hook-aborted": "Редакцията беше прекъсната от кука.\nНе беше посочена причина за това.",
        "edit-gone-missing": "Страницата не можа да се обнови.\nВероятно междувременно е била изтрита.",
        "edit-conflict": "Редакционен конфликт.",
        "edit-no-change": "Редакцията ви беше пренебрегната, защото не съдържа промени по текста.",
+       "postedit-confirmation-created": "Страницата е създадена.",
+       "postedit-confirmation-restored": "Страницата е възстановена.",
        "postedit-confirmation-saved": "Редакцията ви беше съхранена",
        "edit-already-exists": "Не можа да се създаде нова страница.\nТакава вече съществува.",
        "defaultmessagetext": "Текст на съобщението по подразбиране",
        "invalid-content-data": "Невалидни данни за съдържание",
        "content-not-allowed-here": "\nНа страницата [[$2]] не е позволено използването на $1",
        "editwarning-warning": "Ако излезете от тази страница, може да загубите всички незапазени промени, които сте направили. \nАко сте влезли в системата, можете да изключите това предупреждение през меню \"Редактиране\" във вашите лични настройки.",
+       "editpage-notsupportedcontentformat-title": "Форматът на съдържанието не се поддържа",
        "content-model-wikitext": "уикитекст",
        "content-model-text": "обикновен текст",
        "content-model-javascript": "Джаваскрипт",
        "parser-template-recursion-depth-warning": "Надвишен лимит на дълбочината при шаблонна рекурсия ($1)",
        "language-converter-depth-warning": "Надвишени са възможностите за автоматичен превод ($1)",
        "node-count-exceeded-category": "Страници, където е превишен възел-граф",
-       "node-count-exceeded-warning": "Страница превишава възел-брой",
+       "node-count-exceeded-category-desc": "Страницата превишава максималния възел-граф.",
+       "node-count-exceeded-warning": "Страница превиши броя на възлите",
        "undo-success": "Редакцията може да бъде върната. Прегледайте долното сравнение и се уверете, че наистина искате да го направите. След това съхранете страницата, за да извършите връщането.",
        "undo-failure": "Редакцията не може да бъде върната поради конфликтни междинни редакции.",
        "undo-norev": "Редакцията не може да бъде върната тъй като не съществува или е била изтрита.",
        "revdelete-confirm": "Необходимо е да потвърдите, че велаете да извършите действието, разбирате последствията и го правите според [[{{MediaWiki:Policy-url}}|политиката]].",
        "revdelete-suppress-text": "Премахването трябва да се използва '''само''' при следните случаи:\n*Неподходяща или неприемлива лична информация\n*: ''домашни адреси и телефонни номера, номера за социално осигуряване и др.''",
        "revdelete-legend": "Задаване на ограничения:",
-       "revdelete-hide-text": "СкÑ\80иване Ð½Ð° Ñ\82екÑ\81Ñ\82а на версията",
+       "revdelete-hide-text": "ТекÑ\81Ñ\82 на версията",
        "revdelete-hide-image": "Скриване на файловото съдържание",
        "revdelete-hide-name": "Скриване на действието и целта",
        "revdelete-hide-comment": "Скриване на резюмето",
        "search-section": "(раздел $1)",
        "search-suggest": "Вероятно имахте предвид: $1",
        "search-interwiki-caption": "Сродни проекти",
-       "search-interwiki-default": "$1 резултата:",
+       "search-interwiki-default": "Резултати от $1:",
        "search-interwiki-more": "(още)",
        "search-relatedarticle": "Свързани",
        "searchrelated": "свързани",
        "preferences": "Настройки",
        "mypreferences": "Настройки",
        "prefs-edits": "Брой редакции:",
+       "prefsnologintext2": "За да промените настройките си е необходимо да влезете в систеата.",
        "prefs-skin": "Облик",
        "skin-preview": "предварителен преглед",
        "datedefault": "Без предпочитание",
        "right-move": "преместване на страници",
        "right-move-subpages": "преместване на страници и техните подстраници",
        "right-move-rootuserpages": "Преместване на основни потребителски страници",
+       "right-move-categorypages": "Преместване на категорийни страници",
        "right-movefile": "Преместване на файлове",
        "right-suppressredirect": "без създаване на пренасочване от старото име при преместване на страница",
        "right-upload": "качване на файлове",
        "right-browsearchive": "търсене на изтрити страници",
        "right-undelete": "възстановяване на страници",
        "right-suppressrevision": "преглед и възстановяване на версии, скрити от администраторите",
+       "right-viewsuppressed": "Преглеждане на версии, скрити от който и да е потребител",
        "right-suppressionlog": "преглеждане на тайните дневници",
        "right-block": "спиране на достъпа до редактиране",
        "right-blockemail": "блокиране на потребители да изпращат писма по е-поща",
        "right-editusercssjs": "редактиране на CSS и JS файловете на други потребители",
        "right-editusercss": "редактиране на CSS файловете на други потребители",
        "right-edituserjs": "редактиране на JS файловете на други потребители",
+       "right-editmyusercss": "Редактиране на собствените потребителски CSS файлове",
+       "right-editmyuserjs": "Редактиране на собствените потребителски JavaScript файлове",
+       "right-viewmywatchlist": "Преглеждане на собствения списък за наблюдение",
+       "right-editmywatchlist": "Редактиране на собствения списък за наблюдение. Забележете, че някои действия все пак ще добавят страници, дори и без текущото право.",
+       "right-viewmyprivateinfo": "Преглеждане на собствените лични данни (например: адрес на електронната поща, истинско име)",
+       "right-editmyprivateinfo": "Редактиране на собствените лични данни (например: адрес на електронната поща, истинско име)",
+       "right-editmyoptions": "Редактиране на собствените настройки",
        "right-rollback": "Бърза отмяна на промените, направени от последния потребител, редактирал дадена страница",
        "right-markbotedits": "отбелязване на възвърнатите редакции като редакции на ботове",
        "right-noratelimit": "Пренебрегване на всякакви ограничения",
        "action-createpage": "създаване на страници",
        "action-createtalk": "създаване на дискусионни страници",
        "action-createaccount": "създаване на тази потребителска сметка",
+       "action-history": "преглед на историята на тази страница",
        "action-minoredit": "отбелязване на редакцията като малка",
        "action-move": "преместване на страницата",
        "action-move-subpages": "преместване на страницата и нейните подстраници",
        "action-move-rootuserpages": "преместване на основни потребителски страници",
+       "action-move-categorypages": "преместване на категорийни страници",
        "action-movefile": "преместване на този файл",
        "action-upload": "качване на файла",
        "action-reupload": "съхранение на файл върху вече съществуващ",
        "action-suppressionlog": "преглеждане на този поверителен дневник",
        "action-block": "блокиране на редакциите на този потребител",
        "action-protect": "променяне на нивото на защита на тази страница",
-       "action-import": "внасяне на тази страница от друго уики",
-       "action-importupload": "внасяне на тази страница от качен файл",
+       "action-rollback": "бърза отмяна на промените, направени от последния потребител, редактирал дадена страница",
+       "action-import": "внасяне на страници от други уикита",
+       "action-importupload": "внасяне на страници от качен файл",
        "action-patrol": "отбелязване на чуждите редакции като проверени",
        "action-autopatrol": "отбелязване на собствените редакции като автоматично патрулирани",
        "action-unwatchedpages": "преглеждане на списъка с ненаблюдавани страници",
        "action-userrights-interwiki": "редактиране на потребителските права на потребители от други уикита",
        "action-siteadmin": "заключване и отключване на базата от данни",
        "action-sendemail": "изпращане на е-писма",
+       "action-editmywatchlist": "редактиране на списъка ви за наблюдение",
+       "action-viewmywatchlist": "преглед на списъка ви за наблюдение",
+       "action-viewmyprivateinfo": "преглеждане на личните данни",
+       "action-editmyprivateinfo": "редактиране на личната си информация",
        "nchanges": "$1 {{PLURAL:$1|промяна|промени}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|от последното посещение}}",
        "enhancedrc-history": "история",
        "recentchanges": "Последни промени",
        "recentchanges-legend": "Настройки на списъка с последни промени",
        "recentchanges-summary": "Проследяване на последните промени в {{SITENAME}}.\n\nЛегенда: '''тек''' = разлика на текущата версия,\n'''ист''' = история на версиите",
+       "recentchanges-noresult": "Не бяха намерени промени за дадения период, които отговарят на критериите.",
        "recentchanges-feed-description": "Проследяване на последните промени в {{SITENAME}}.",
        "recentchanges-label-newpage": "Нова страница",
        "recentchanges-label-minor": "Това е малка промяна",
        "license-nopreview": "(Не е наличен предварителен преглед)",
        "upload_source_url": " (правилен, публично достъпен интернет-адрес)",
        "upload_source_file": " (файл на вашия компютър)",
+       "listfiles-delete": "изтриване",
        "listfiles-summary": "Тази специална страница показва всички качени файлове.",
        "listfiles_search_for": "Търсене по име на файла:",
        "imgfile": "файл",
        "download": "сваляне",
        "unwatchedpages": "Ненаблюдавани страници",
        "listredirects": "Списък на пренасочванията",
+       "listduplicatedfiles": "Списък на повтарящи се файлове",
        "unusedtemplates": "Неизползвани шаблони",
        "unusedtemplatestext": "Тази страница съдържа списък на страниците в именно пространство {{ns:template}}, които не са включени в друга страница. Проверявайте за препратки към отделните шаблони преди да ги изтриете или предложите за изтриване.",
        "unusedtemplateswlh": "други препратки",
        "randompage": "Случайна страница",
        "randompage-nopages": "В {{PLURAL:$2|следното именно пространство|следните именни пространства}} няма страници: $1.",
-       "randomincategory": "СлÑ\83Ñ\87айна Ñ\81Ñ\82Ñ\80аниÑ\86а Ð² категорията",
+       "randomincategory": "СлÑ\83Ñ\87айна Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¾Ñ\82 категорията",
        "randomincategory-invalidcategory": "„$1“ не е валидно име на категория.",
        "randomincategory-nopages": "В категория [[:Category:$1|$1]] няма страници.",
+       "randomincategory-category": "Категория:",
+       "randomincategory-legend": "Случайна страница от категорията",
        "randomredirect": "Случайно пренасочване",
        "randomredirect-nopages": "В именно пространство „$1“ няма пренасочвания.",
        "statistics": "Статистика",
        "statistics-users-active": "Активни потребители",
        "statistics-users-active-desc": "Потребители, направили редакция през {{PLURAL:$1|последния ден|последните $1 дни}}",
        "statistics-mostpopular": "Най-преглеждани страници",
+       "pageswithprop-prop": "Име на свойството:",
+       "pageswithprop-submit": "Отваряне",
        "doubleredirects": "Двойни пренасочвания",
        "doubleredirectstext": "Тази страница съдържа списък със страници, които пренасочват към друга пренасочваща страница.\nВсеки ред съдържа препратки към първото и второто пренасочване, както и целта на второто пренасочване, която обикновено е „истинската“ целева страница, към която първото пренасочване би трябвало да сочи.\n<del>Задрасканите</del> записи са коригирани.",
        "double-redirect-fixed-move": "Оправяне на двойно пренасочване след преместването на [[$1]] като [[$2]]",
        "protectedpages": "Защитени страници",
        "protectedpages-indef": "Само безсрочни защити",
        "protectedpages-cascade": "Само каскадни защити",
+       "protectedpages-noredirect": "Скриване на пренасочванията",
        "protectedpagesempty": "В момента няма защитени страници с тези параметри.",
+       "protectedpages-timestamp": "Дата и час",
        "protectedpages-page": "Страница",
+       "protectedpages-expiry": "Срок на изтичане",
+       "protectedpages-performer": "Защитаващ потребител",
+       "protectedpages-params": "Параметри на защита",
        "protectedpages-reason": "Причина",
+       "protectedpages-unknown-timestamp": "Неизвестни",
        "protectedpages-unknown-performer": "Неизвестен потребител",
        "protectedtitles": "Защитени заглавия",
        "protectedtitlesempty": "В момента няма заглавия, защитени с тези параметри.",
        "listusers": "Списък на потребителите",
        "listusers-editsonly": "Показване само на потребители с редакции",
        "listusers-creationsort": "Сортиране по дата на създаване",
+       "listusers-desc": "Сортиране в низходящ ред",
        "usereditcount": "$1 {{PLURAL:$1|редакция|редакции}}",
        "usercreated": "{{GENDER:$3|Създаден}} на $1 в $2",
        "newpages": "Нови страници",
        "allpagesbadtitle": "Зададеното име е невалидно. Възможно е да съдържа междуезикова или междупроектна представка или пък знаци, които не могат да се използват в заглавия.",
        "allpages-bad-ns": "В {{SITENAME}} не съществува именно пространство „$1“.",
        "allpages-hide-redirects": "Скриване на пренасочванията",
+       "cachedspecial-refresh-now": "Преглед на текущата.",
        "categories": "Категории",
        "categoriespagetext": "{{PLURAL:$1|Следната категория съдържа|Следните категории съдържат}} страници или медийни файлове.\n[[Special:UnusedCategories|Неизползваните категории]] не са показани тук.\nВижте също списъка с [[Special:WantedCategories|желани категории]].",
        "categoriesfrom": "Показване на категориите, като се започне от:",
        "listgrouprights-addgroup-self-all": "Може да добавя всички групи към своята сметка",
        "listgrouprights-removegroup-self-all": "Може да премахва всички групи от собствената сметка",
        "listgrouprights-namespaceprotection-namespace": "Именно пространство",
+       "trackingcategories": "Категории за проследяване",
+       "trackingcategories-summary": "Тази страница съдържа списък на категории за проследяване, които се попълват автоматично от софтуера на МедияУики. Имената им могат да се променят чрез съответните системни съобщения в именното пространство {{ns:8}}.",
+       "trackingcategories-msg": "Категория за проследяване",
+       "trackingcategories-name": "Име на съобщението",
+       "trackingcategories-desc": "Критерий за включване на категория",
+       "trackingcategories-nodesc": "Няма налично описание.",
+       "trackingcategories-disabled": "Категорията е деактивирана",
        "mailnologin": "Няма електронна поща",
        "mailnologintext": "Необходимо е да [[Special:UserLogin|влезете]] и да посочите валидна електронна поща в [[Special:Preferences|настройките]] си, за да може да пращате писма на други потребители.",
        "emailuser": "Писмо до потребителя",
+       "emailuser-title-target": "Изпращане на е-писмо на този {{GENDER:$1|потребител}}",
+       "emailuser-title-notarget": "Изпращане на е-писмо на потребител",
        "emailpage": "Пращане писмо на потребител",
        "emailpagetext": "Можете да използвате формуляра по-долу, за да изпратите електронно писмо на {{GENDER:$1|този потребител}}.\nАдресът, който се въвели в [[Special:Preferences|настройките си]], ще се появи в полето „От“ на писмото, така че получателят ще е в състояние да ви отговори директно.",
        "defemailsubject": "Писмо от потребител $1 в {{SITENAME}}",
        "watchnologin": "Не сте влезли",
        "addwatch": "Добавяне към списъка за наблюдение",
        "addedwatchtext": "Страницата „'''[[:$1]]'''“ беше добавена към [[Special:Watchlist|списъка ви за наблюдение]].\nНейните бъдещи промени, както и на съответната й дискусионна страница, ще се описват там.",
+       "addedwatchtext-short": "Страницата „$1“ беше добавена към списъка Ви за наблюдение.",
        "removewatch": "Премахване от списъка за наблюдение",
        "removedwatchtext": "Страницата „[[:$1]]“ беше премахната от [[Special:Watchlist|списъка ви за наблюдение]].",
+       "removedwatchtext-short": "Страницата „$1“ беше премахната от списъка Ви за наблюдение.",
        "watch": "Наблюдение",
        "watchthispage": "Наблюдаване на страницата",
        "unwatch": "Спиране на наблюдение",
        "contributions-title": "Потребителски приноси за $1",
        "mycontris": "Приноси",
        "contribsub2": "За {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.",
        "nocontribs": "Не са намерени промени, отговарящи на критерия.",
        "uctop": "(текуща)",
        "month": "Месец:",
        "blocklist-tempblocks": "Скриване на срочните блокирания",
        "blocklist-addressblocks": "Скриване на отделни блокирани IP адреси",
        "blocklist-rangeblocks": "Скриване на блокиранията по IP диапазон",
+       "blocklist-timestamp": "Дата и час",
        "blocklist-target": "Цел",
-       "blocklist-expiry": "Срок на изтичане:",
+       "blocklist-expiry": "Срок на изтичане",
        "blocklist-by": "Блокиращ администратор",
        "blocklist-params": "Параметри на блокирането",
        "blocklist-reason": "Причина",
        "unblocklink": "отблокиране",
        "change-blocklink": "промяна на параметрите на блокирането",
        "contribslink": "приноси",
+       "emaillink": "изпращане на е-писмо",
        "autoblocker": "Бяхте блокиран автоматично, тъй като неотдавна IP-адресът ви е бил ползван от блокирания в момента потребител [[User:$1|$1]]. Причината за неговото блокиране е: „$2“.",
        "blocklogpage": "Дневник на блокиранията",
        "blocklog-showlog": "Потребителят е бил блокиран в миналото.\nЗа справка по-долу е дадено извлечение от дневника на блокиранията:",
        "import": "Внасяне на страници",
        "importinterwiki": "Внасяне чрез Трансуики",
        "import-interwiki-text": "Изберете уики и име на страницата.\nДатите на редакциите и имената на авторите ще бъдат запазени.\nВсички операции при внасянето от друго уики се записват в [[Special:Log/import|дневника на внасянията]].",
-       "import-interwiki-source": "Изходно уики/страница:",
        "import-interwiki-history": "Копиране на всички версии на страницата",
        "import-interwiki-templates": "Включване на всички шаблони",
        "import-interwiki-submit": "Внасяне",
        "import-logentry-upload-detail": "{{PLURAL:$1|една версия|$1 версии}}",
        "import-logentry-interwiki": "$1 беше внесена от друго уики",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|една версия|$1 версии}} на $2 бяха внесени",
+       "javascripttest": "Тестване на JavaScript",
        "javascripttest-pagetext-noframework": "Тази страница е запазена за изпълнение на Джаваскрипт тестове.",
        "javascripttest-pagetext-skins": "Избор на облик за тестванията:",
        "javascripttest-qunit-intro": "Вижте [$1 тестовата документация] на mediawiki.org.",
        "hours-ago": "преди $1 {{PLURAL:$1|час|часа}}",
        "minutes-ago": "преди $1 {{PLURAL:$1|минута|минути}}",
        "seconds-ago": "преди $1 {{PLURAL:$1|секунда|секунди}}",
+       "monday-at": "Понеделник в $1",
+       "tuesday-at": "Вторник в $1",
+       "wednesday-at": "Сряда в $1",
+       "thursday-at": "Четвъртък в $1",
+       "friday-at": "Петък в $1",
+       "saturday-at": "Събота в $1",
+       "sunday-at": "Неделя в $1",
+       "yesterday-at": "Вчера в $1",
        "bad_image_list": "Спазва се следният формат:\n\nОтчитат се само записите в списъчен вид (редове, започващи със *). Първата препратка в реда трябва да сочи към неприемлив файл. Всички последващи препратки на същия ред се считат за изключения, т.е. страници, в които този файл може да се визуализира.",
        "metadata": "Метаданни",
        "metadata-help": "Файлът съдържа допълнителни данни, обикновено добавяни от цифровите апарати или скенери. Ако файлът е редактиран след създаването си, то някои параметри може да не съответстват на текущото изображение.",
        "exif-specialinstructions": "Специални инструкции",
        "exif-headline": "Заглавие",
        "exif-source": "Източник",
+       "exif-urgency": "Спешност",
        "exif-contact": "Информация за контакти",
        "exif-languagecode": "Език",
        "exif-iimversion": "IIM версия",
        "exif-originalimagewidth": "Ширина на изображението преди намаляването",
        "exif-compression-1": "Некомпресиран",
        "exif-copyrighted-true": "С авторски права",
-       "exif-copyrighted-false": "Ð\9eбÑ\89еÑ\81Ñ\82вено Ð´Ð¾Ñ\81Ñ\82оÑ\8fние",
+       "exif-copyrighted-false": "СÑ\82аÑ\82Ñ\83Ñ\82а Ð½Ð° Ð°Ð²Ñ\82оÑ\80Ñ\81киÑ\82е Ð¿Ñ\80ава Ð½Ðµ Ðµ Ñ\83казан",
        "exif-unknowndate": "Неизвестна дата",
        "exif-orientation-1": "Нормално",
        "exif-orientation-2": "Отражение по хоризонталата",
        "exif-objectcycle-p": "Само вечер",
        "exif-gpsdirection-t": "истинска",
        "exif-gpsdirection-m": "магнитна",
+       "exif-dc-contributor": "Сътрудници",
        "exif-dc-date": "Дата(и)",
        "exif-dc-rights": "Права",
        "exif-isospeedratings-overflow": "По-голяма от 65535",
        "imgmultigo": "Отваряне",
        "imgmultigoto": "Отиване на страница $1",
        "img-lang-default": "(език по подразбиране)",
+       "img-lang-go": "Отваряне",
        "ascending_abbrev": "възх",
        "descending_abbrev": "низх",
        "table_pager_next": "Следваща страница",
        "watchlistedit-raw-done": "Списъкът ви за наблюдение беше обновен.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 страница беше добавена|$1 страници бяха добавени}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Една страница беше премахната|$1 страници бяха премахнати}}:",
+       "watchlistedit-clear-legend": "Изчистване на списъка за наблюдение",
+       "watchlistedit-clear-submit": "Изчистване на списъка за наблюдение (Необратимо!)",
        "watchlisttools-clear": "Изчистване на списъка за наблюдение",
        "watchlisttools-view": "Преглед на списъка за наблюдение",
        "watchlisttools-edit": "Преглед и редактиране на списъка за наблюдение",
        "duplicate-defaultsort": "Внимание: Ключът за сортиране по подразбиране „$2“ отменя по-ранния ключ „$1“.",
        "version": "Версия",
        "version-extensions": "Инсталирани разширения",
-       "version-skins": "Ð\9eблици",
+       "version-skins": "Ð\98нÑ\81Ñ\82алиÑ\80ани Ð¾блици",
        "version-specialpages": "Специални страници",
        "version-parserhooks": "Куки в парсера",
        "version-variables": "Променливи",
        "version-hook-name": "Име на куката",
        "version-hook-subscribedby": "Ползвана от",
        "version-version": "(Версия $1)",
+       "version-no-ext-name": "[без име]",
        "version-license": "Лиценз на МедияУики",
        "version-ext-license": "Лиценз",
        "version-ext-colheader-name": "Разширение",
+       "version-skin-colheader-name": "Облик",
        "version-ext-colheader-version": "Версия",
        "version-ext-colheader-license": "Лиценз",
        "version-ext-colheader-description": "Описание",
        "version-entrypoints": "Адреси на входни точки",
        "version-entrypoints-header-entrypoint": "Входна точка",
        "version-entrypoints-header-url": "Адрес",
+       "redirect-submit": "Отваряне",
        "redirect-user": "Потребителски номер",
+       "redirect-page": "Номер на страницата",
+       "redirect-revision": "Версия на страницата",
        "redirect-file": "Име на файл",
+       "redirect-not-exists": "Стойността не е намерена",
        "fileduplicatesearch": "Търсене на повтарящи се файлове",
        "fileduplicatesearch-summary": "Търсене на повтарящи се файлове на база хеш стойности.",
        "fileduplicatesearch-legend": "Търсене на повтарящ се файл",
        "tags-tag": "Име на етикета",
        "tags-display-header": "Изглед в списъците с промени",
        "tags-description-header": "Пълно описание на значението",
+       "tags-active-header": "Активен?",
        "tags-hitcount-header": "Отбелязани промени",
        "tags-active-yes": "Да",
        "tags-active-no": "Не",
        "expand_templates_preview": "Преглед",
        "pagelang-name": "Страница",
        "pagelang-language": "Език",
-       "pagelang-select-lang": "Избиране на език"
+       "pagelang-use-default": "Използване на езика по подразбиране",
+       "pagelang-select-lang": "Избиране на език",
+       "right-pagelang": "Промяна езика на страница",
+       "action-pagelang": "промяна езика на страницата",
+       "log-name-pagelang": "Дневник на езиковите промени",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''изключено''')"
 }
index 8767a1b..7781475 100644 (file)
        "hidetoc": "छुपाईं",
        "collapsible-collapse": "सेकुड़ीं",
        "collapsible-expand": "फैलाईं",
+       "confirmable-yes": "जी",
+       "confirmable-no": "ना",
        "thisisdeleted": "देखीं या भंडार करीं $1?",
        "viewdeleted": "$1 देखब?",
        "restorelink": "देखीं {{PLURAL:$1|एगो हटावल गईल सम्पादन|$1 हटावल गईल कुल सम्पादन}}",
        "resetpass-temp-password": "अस्थायी गुप्तशब्द:",
        "resetpass-abort-generic": "कउनो एक्सटेंशन द्वारा गुप्तशब्द में बदलाव रोक दिहल गईल बा।",
        "resetpass-expired": "राउर पासवर्ड की वैधता अवधि समाप्त हो चुकल बा। कृपया लॉग इन करे खातिर एगो नया पासवर्ड सेट करीं।",
+       "resetpass-expired-soft": "राउर गुप्तशब्द अमान्य हो चुकल बा इ के पुनः स्थापित करे के पड़ी। कृपया अभी एगो नया गुप्तशब्द चुनीं या \"{{int:resetpass-submit-cancel}}\" पर बाद में पुनः स्थापित कर सकत बानी।",
        "resetpass-validity-soft": "राउर पासवर्ड मान्य नईखे: $1 \n\nकृपया अब एक नया पासवर्ड चुनीं, या उ के बाद में पुनर्स्थापित करे खातिर \"{{int:resetpass-submit-cancel}}\" पर क्लिक करीं।",
        "passwordreset": "गुप्तशब्द रिसेट करीं",
        "passwordreset-text-one": "आपन गुप्तशब्द के पुनर्स्थापित करे खातिर इ फॉर्म भरीं।",
        "searchprofile-everything-tooltip": "सभन सामग्री में खोजीं (वार्ता पन्ना सहित)",
        "searchprofile-advanced-tooltip": "विशेष नामस्थान में खोजीं",
        "search-result-size": "$1 ({{PLURAL:$2|1 शब्द|$2 शब्द}})",
-       "search-result-score": "प्रासंगिकता: $1%",
        "search-redirect": "(पुन: निर्देशण $1)",
        "search-section": "(खंड $1)",
        "search-suggest": "का राउर मतलब बा: $1",
index 1f18c13..328fcd2 100644 (file)
        "talkpagelinktext": "Pandir",
        "specialpage": "Tungkaran istimiwa",
        "personaltools": "Pakakas surang",
-       "postcomment": "Palih hanyar",
        "articlepage": "Tiringi isi tungkaran",
        "talk": "Pamandiran",
        "views": "Titiringan",
        "externaldberror": "Ada kasalahan apakah kacucukan basis data atawa Pian kada bulih mamutakhirakan akun luar.",
        "login": "Babuat",
        "nav-login-createaccount": "Babuat log / ulah akun",
-       "loginprompt": "Pian harus mangaktipakan ''cookies'' hagan kawa babuat log ka {{SITENAME}}.",
        "userlogin": "Babuat log / ulah akun",
        "userloginnocreate": "Babuat log",
        "logout": "Kaluar",
        "searchprofile-advanced-tooltip": "Panggagaian pada ragam ngaran kakamar",
        "search-result-size": "$1 ({{PLURAL:$2|1 ujar|$2 uujar}})",
        "search-result-category-size": "{{PLURAL:$1|1 angguta|$1 aangguta}} ({{PLURAL:$2|1 subtumbung|$2 subtutumbung}}, {{PLURAL:$3|1 barakas|$3 babarakas}})",
-       "search-result-score": "Kacucukan: $1%",
        "search-redirect": "(Paugahan $1)",
        "search-section": "(hagian $1)",
        "search-suggest": "Nginikah maksud Pian: $1",
        "uploadwarning": "Paringatan hunggah",
        "uploadwarning-text": "Muhun mangganti katarangan barakas di bawah wan cubai pulang.",
        "savefile": "Simpan barakas",
-       "uploadedimage": "mamuat \"[[$1]]\"",
-       "overwroteimage": "mahunggah sabuah pérsi hanyar matan \"[[$1]]\"",
        "uploaddisabled": "Pahunggahan dipajahakan.",
        "copyuploaddisabled": "Hunggah lawan URL pajah.",
        "uploaddisabledtext": "Hunggah barakas kada kawa.",
        "watchlist-details": "{{PLURAL:$1|$1 tungkaran|$1 tungkaran}} dalam daptar itihan Pian, kada mahitung tungkaran pamandiran.",
        "wlheader-enotif": "Suril pamadahan dipajahi.",
        "wlheader-showupdated": "Tutungkaran nang ba-ubah tumatan ilangan tauncit Pian ditampaiakan dalam '''hurup kandal'''",
+       "wlnote": "Di bawah naya adalah {{PLURAL:$1|paubahan|'''$1''' paubahan}} tauncit dalam '''$2''' jam tauncit, par $3, $4.",
        "wlshowlast": "Tampaiakan $1 jam $2 hari pahabisan $3",
        "watchlist-options": "Pilihan daptar itihan",
        "watching": "Maitihi...",
        "duplicate-defaultsort": "Paringatan: Sunduk pangurutan baku \"$2\" mangabaikan sunduk pangurutan baku \"$1\" sabalumnya.",
        "version": "Virsi",
        "version-extensions": "Ekstensi tapasang",
+       "version-skins": "Kukulimbit",
        "version-specialpages": "Tungkaran istimiwa",
        "version-parserhooks": "Kait parser",
        "version-variables": "Pariabal",
        "version-antispam": "Pancagahan spam",
-       "version-skins": "Kukulimbit",
        "version-other": "Lain-lain",
        "version-mediahandlers": "Pananganan madia",
        "version-hooks": "Kait",
index 425390c..0b94f49 100644 (file)
@@ -38,6 +38,7 @@
        "tog-watchdefault": "আমার সম্পাদিত পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক",
        "tog-watchmoves": "আমার স্থানান্তরিত পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক",
        "tog-watchdeletion": "আমার অপসারিত পাতা এবং ফাইলগুলো আমার নজর তালিকায় যোগ করা হোক",
+       "tog-watchrollback": "আমার দ্বারা রোলব্যাক করা পাতা আমার নজরতালিকায় যোগ করা হোক",
        "tog-minordefault": "শুরুতেই সব সম্পাদনাকে অনুল্লেখ্য বলে চিহ্নিত করা হোক",
        "tog-previewontop": "সম্পাদনা বাক্সের আগে প্রাকদর্শন দেখানো হোক",
        "tog-previewonfirst": "প্রথম সম্পাদনার ক্ষেত্রে প্রাকদর্শন দেখানো হোক",
        "welcomecreation-msg": "আপনার অ্যাকাউন্ট তৈরী হয়েছে।\nআপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]  পরিবর্তন করে নিতে ভুলবেন না।",
        "yourname": "ব্যবহারকারী নাম:",
        "userlogin-yourname": "ব্যবহারকারী নাম",
-       "userlogin-yourname-ph": "à¦\86পনার à¦¬à§\8dযবহাà¦\95ারà§\80 à¦¨à¦¾à¦® à¦ªà§\8dরবà§\87শ à¦\95রান",
+       "userlogin-yourname-ph": "à¦\86পনার à¦¬à§\8dযবহাà¦\95ারà§\80 à¦¨à¦¾à¦® à¦²à¦¿à¦\96à§\81ন",
        "createacct-another-username-ph": "আপনার ব্যবহাকারী নাম প্রবেশ করান",
-       "yourpassword": "শবà§\8dদà¦\9aাবি:",
-       "userlogin-yourpassword": "শবà§\8dদà¦\9aাবি (Password)",
-       "userlogin-yourpassword-ph": "à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবি (পাসà¦\93য়ারà§\8dড) লিখুন",
-       "createacct-yourpassword-ph": "শবà§\8dদà¦\9aাবি à¦ªà§\8dরদান à¦\95রুন",
-       "yourpasswordagain": "শবà§\8dদà¦\9aাবিà¦\9fি (password) à¦\86বার à¦²à¦¿à¦\96à§\81ন",
-       "createacct-yourpasswordagain": "শবà§\8dদà¦\9aাবি নিশ্চিত করুন",
-       "createacct-yourpasswordagain-ph": "à¦\86বারà¦\93 à¦¶à¦¬à§\8dদà¦\9aাবি à¦ªà§\8dরদান à¦\95রুন",
-       "remembermypassword": "à¦\8fà¦\95াধিà¦\95 à¦¸à§\87শনà§\87র à¦\9cনà§\8dয à¦¶à¦¬à§\8dদà¦\9aাবি à¦®à¦¨à§\87 à¦°à¦¾à¦\96া à¦¹à§\8bà¦\95 (সরà§\8dবà§\8bà¦\9aà§\8dà¦\9a $1 {{PLURAL:$1|দিনà§\87র|দিনের}} জন্য)",
+       "yourpassword": "পাসà¦\93য়ারà§\8dড:",
+       "userlogin-yourpassword": "পাসà¦\93য়ারà§\8dড",
+       "userlogin-yourpassword-ph": "à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড লিখুন",
+       "createacct-yourpassword-ph": "পাসà¦\93য়ারà§\8dড à¦²à¦¿à¦\96ুন",
+       "yourpasswordagain": "পাসà¦\93য়ারà§\8dড à¦\86বার à¦²à¦¿à¦\96à§\81ন:",
+       "createacct-yourpasswordagain": "পাসà¦\93য়ারà§\8dড নিশ্চিত করুন",
+       "createacct-yourpasswordagain-ph": "à¦\86বারà¦\93 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦²à¦¿à¦\96ুন",
+       "remembermypassword": "à¦\8fà¦\87 à¦¬à§\8dরাà¦\89à¦\9cারà§\87 à¦\86মার à¦ªà§\8dরবà§\87শ à¦®à¦¨à§\87 à¦°à¦¾à¦\96া à¦¹à§\8bà¦\95 (সরà§\8dবà§\8bà¦\9aà§\8dà¦\9a $1 {{PLURAL:$1|দিনের}} জন্য)",
        "userlogin-remembermypassword": "আমাকে প্রবেশ অবস্থায় রাখো",
        "userlogin-signwithsecure": "নিরাপদ সংযোগ ব্যবহার করুন",
        "yourdomainname": "আপনার ডোমেইন",
        "gotaccount": "আপনার কি ইতিমধ্যে একটি অ্যাকাউন্ট তৈরি করা আছে? '''$1''' করুন।",
        "gotaccountlink": "প্রবেশ",
        "userlogin-resetlink": "আপনার লগইনের বিস্তারিত তথ্যাদি ভুলে গেছেন?",
-       "userlogin-resetpassword-link": "শবà§\8dদà¦\9aাবি ভুলে গেছেন?",
+       "userlogin-resetpassword-link": "পাসà¦\93য়ারà§\8dড ভুলে গেছেন?",
        "userlogin-helplink2": "লগইন সংক্রান্ত সাহায্য",
        "userlogin-loggedin": "আপনি বর্তমানে {{GENDER:$1|$1}} হিসাবে লগইন আছেন।\nঅন্য ব্যবহারকারী নামে লগইন করতে চাইলে নিচের ফর্মটি ব্যবহার করুন।",
        "userlogin-createanother": "আরেকটি অ্যাকাউন্ট তৈরি করুন",
        "createacct-benefit-body1": "{{PLURAL:$1|টি সম্পাদনা}}",
        "createacct-benefit-body2": "{{PLURAL:$1|টি পাতা}}",
        "createacct-benefit-body3": "জন সাম্প্রতিক {{PLURAL:$1|অবদানকারী}}",
-       "badretype": "à¦\86পনার à¦ªà§\8dরবà§\87শ à¦\95রানà§\8b à¦¶à¦¬à§\8dদà¦\9aাবি'à¦\9fি à¦®à¦¿à¦²à¦\9bà§\87না।",
+       "badretype": "à¦\86পনার à¦ªà§\8dরবà§\87শ à¦\95রানà§\8b à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà¦\9fি à¦®à¦¿à¦²à¦\9bà§\87 না।",
        "userexists": "এই ব্যবহারকারী নামটি ইতমধ্যে ব্যবহার করা হয়েছে।\nঅনুগ্রহ করে অন্য নাম বেছে নিন।",
        "loginerror": "প্রবেশ করতে সমস্যা হয়েছে",
        "createacct-error": "অ্যাকাউন্ট তৈরি ত্রুটি",
        "createaccounterror": "অ্যাকাউন্ট তৈরি হয়নি: $1",
-       "nocookiesnew": "বà§\8dযবহারà¦\95ারà§\80র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি à¦¸à§\83ষà§\8dà¦\9fি à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\86পনি à¦\8fà¦\96নà¦\93 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রà§\87ননি। {{SITENAME}}-তà§\87 à¦\95à§\81à¦\95ি à¦¬à§\8dযবহার à¦\95রà§\87 à¦¬à§\8dযবহারà¦\95ারà§\80দà§\87র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রানà§\8b à¦¹à¦¯à¦¼à¥¤ à¦\86পনার à¦¬à§\8dরাà¦\89à¦\9cারà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি à¦¨à¦¿à¦·à§\8dà¦\95à§\8dরিয় à¦\95রা à¦\86à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি à¦¸à¦\95à§\8dরিয় à¦\95রà§\81ন à¦\8fবà¦\82 à¦\86পনার à¦¨à¦¤à§\81ন à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¨à¦¾à¦® à¦\93 à¦¶à¦¬à§\8dদà¦\9aাবি ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।",
+       "nocookiesnew": "বà§\8dযবহারà¦\95ারà§\80র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি à¦¸à§\83ষà§\8dà¦\9fি à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\86পনি à¦\8fà¦\96নà¦\93 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রà§\87ননি। {{SITENAME}}-তà§\87 à¦\95à§\81à¦\95ি à¦¬à§\8dযবহার à¦\95রà§\87 à¦¬à§\8dযবহারà¦\95ারà§\80দà§\87র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রানà§\8b à¦¹à¦¯à¦¼à¥¤ à¦\86পনার à¦¬à§\8dরাà¦\89à¦\9cারà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি à¦¨à¦¿à¦·à§\8dà¦\95à§\8dরিয় à¦\95রা à¦\86à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি à¦¸à¦\95à§\8dরিয় à¦\95রà§\81ন à¦\8fবà¦\82 à¦\86পনার à¦¨à¦¤à§\81ন à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¨à¦¾à¦® à¦\93 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।",
        "nocookieslogin": "{{SITENAME}} এ কুকি (cookies) এর মাধ্যমে ব্যবহারকারীদের লগ-ইন সম্পন্ন করা হয়। আপনার ব্রাঊজারে কুকি বন্ধ করে দেওয়া আছে। কুকি চালু করে আবার চেষ্টা করুন।",
        "nocookiesfornew": "ব্যবহারকারীর অ্যাকাউন্ট তৈরি হয়নি, কারণ এর উৎস সম্পর্কে আমরা নিশ্চিত নই।\nনিশ্চিত করুন আপনার কুকি সক্রিয় রয়েছে, পাতাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
        "noname": "আপনি সঠিক ব্যবহারকারী নাম নির্দিষ্ট করেননি।",
        "nosuchusershort": "\"$1\" নামের কোন ব্যবহারকারী নেই। নামের বানান পরীক্ষা করুন।",
        "nouserspecified": "আপনাকে অবশ্যই ব্যবহারকারী নাম নির্দিষ্ট করতে হবে।",
        "login-userblocked": "এই ব্যবহারকারীকে বাধা দেওয়া হয়েছে। লগ-ইন সম্ভব নয়।",
-       "wrongpassword": "à¦\86পনি à¦­à§\81ল à¦¶à¦¬à§\8dদà¦\9aাবি ব্যবহার করেছেন। অনুগ্রহ করে আবার চেষ্টা করুন।",
-       "wrongpasswordempty": "শবà§\8dদà¦\9aাবি (password) প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
-       "passwordtooshort": "শবà§\8dদà¦\9aাবি অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
-       "password-name-match": "à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবি আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
-       "password-login-forbidden": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80র à¦¨à¦¾à¦® à¦\8fবà¦\82 à¦¶à¦¬à§\8dদà¦\9aাবিটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
-       "mailmypassword": "শবà§\8dদà¦\9aাবি রিসেট",
-       "passwordremindertitle": "{{SITENAME}}-à¦\8fর à¦\9cনà§\8dয à¦¨à¦¤à§\81ন à¦¸à¦¾à¦®à¦¯à¦¼à¦¿à¦\95 à¦¶à¦¬à§\8dদà¦\9aাবি",
-       "passwordremindertext": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন ($1 à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\9fি à¦¥à§\87à¦\95à§\87 à¦¸à¦®à§\8dভবত à¦\86পনি) à¦\85নà§\81রà§\8bধ à¦\95রà§\87à¦\9bà§\87ন à¦¯à§\87ন à¦\86মরা à¦\86পনাà¦\95à§\87 {{SITENAME}} ($4) à¦\8fর à¦\9cনà§\8dয à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি à¦ªà¦¾à¦ à¦¾à¦\87।\n\"$2\" à¦¨à¦¾à¦®à§\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦\96à§\8bলা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\8fর à¦¶à¦¬à§\8dদà¦\9aাবি \"$3\"। à¦\86পনি à¦¯à¦¦à¦¿ à¦\8fà¦\9fাà¦\87 à¦\9aà§\87য়à§\87 à¦¥à¦¾à¦\95à§\87ন, à¦¤à¦¾à¦¹à¦²à§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রতà§\87 à¦¹à¦¬à§\87 à¦\93 à¦¨à¦¤à§\81ন à¦\8fà¦\95à¦\9fি à¦¶à¦¬à§\8dদà¦\9aাবি à¦ªà¦\9bনà§\8dদ à¦\95রতà§\87 à¦¹à¦¬à§\87।\n{{PLURAL:$5|à¦\8fà¦\95 à¦¦à¦¿à¦¨|$5 à¦¦à¦¿à¦¨}} à¦ªà¦°à§\87 à¦\86পনার à¦\8fà¦\87 à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবির à¦®à§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ à¦¹à¦¯à¦¼à§\87 à¦¯à¦¾à¦¬à§\87।\n\nযদি à¦\86পনি à¦\9bাড়া à¦\85নà§\8dয à¦\95à§\87à¦\89 à¦\8fà¦\87 à¦\85নà§\81রà§\8bধ à¦\95রà§\87 à¦¥à¦¾à¦\95à§\87, à¦\95িà¦\82বা à¦¯à¦¦à¦¿ à¦\86পনার à¦ªà§\81রনà§\8b à¦¶à¦¬à§\8dদà¦\9aাবিà¦\9fি à¦®à¦¨à§\87 à¦ªà¦¡à¦¼à§\87 à¦\97িয়à§\87 à¦¥à¦¾à¦\95à§\87 à¦\93 à¦¸à§\87à¦\9fি à¦\86র à¦¬à¦¦à¦²à¦¾à¦¬à¦¾à¦° à¦\87à¦\9aà§\8dà¦\9bা à¦¨à¦¾ à¦¥à¦¾à¦\95à§\87, à¦¤à¦¾à¦¹à¦²à§\87 à¦\8fà¦\87 à¦¬à¦¾à¦°à§\8dতাà¦\9fি à¦\89পà§\87à¦\95à§\8dষা à¦\95রতà§\87 à¦ªà¦¾à¦°à§\87ন à¦\8fবà¦\82 à¦ªà§\81রনà§\8b à¦¶à¦¬à§\8dদà¦\9aাবিটিই ব্যবহার করে যেতে পারেন।",
+       "wrongpassword": "à¦\86পনি à¦­à§\81ল à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড ব্যবহার করেছেন। অনুগ্রহ করে আবার চেষ্টা করুন।",
+       "wrongpasswordempty": "পাসà¦\93য়ারà§\8dড প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
+       "passwordtooshort": "পাসà¦\93য়ারà§\8dড অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
+       "password-name-match": "à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
+       "password-login-forbidden": "à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80র à¦¨à¦¾à¦® à¦\8fবà¦\82 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
+       "mailmypassword": "পাসà¦\93য়ারà§\8dড রিসেট",
+       "passwordremindertitle": "{{SITENAME}}-à¦\8fর à¦\9cনà§\8dয à¦¨à¦¤à§\81ন à¦¸à¦¾à¦®à¦¯à¦¼à¦¿à¦\95 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড",
+       "passwordremindertext": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন ($1 à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\9fি à¦¥à§\87à¦\95à§\87 à¦¸à¦®à§\8dভবত à¦\86পনি) à¦\85নà§\81রà§\8bধ à¦\95রà§\87à¦\9bà§\87ন à¦¯à§\87ন à¦\86মরা à¦\86পনাà¦\95à§\87 {{SITENAME}} ($4) à¦\8fর à¦\9cনà§\8dয à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦ªà¦¾à¦ à¦¾à¦\87।\n\"$2\" à¦¨à¦¾à¦®à§\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦\96à§\8bলা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\8fর à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড \"$3\"। à¦\86পনি à¦¯à¦¦à¦¿ à¦\8fà¦\9fাà¦\87 à¦\9aà§\87য়à§\87 à¦¥à¦¾à¦\95à§\87ন, à¦¤à¦¾à¦¹à¦²à§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রতà§\87 à¦¹à¦¬à§\87 à¦\93 à¦¨à¦¤à§\81ন à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦ªà¦\9bনà§\8dদ à¦\95রতà§\87 à¦¹à¦¬à§\87।\n{{PLURAL:$5|à¦\8fà¦\95 à¦¦à¦¿à¦¨|$5 à¦¦à¦¿à¦¨}} à¦ªà¦°à§\87 à¦\86পনার à¦\8fà¦\87 à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà§\87র à¦®à§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ à¦¹à¦¯à¦¼à§\87 à¦¯à¦¾à¦¬à§\87।\n\nযদি à¦\86পনি à¦\9bাড়া à¦\85নà§\8dয à¦\95à§\87à¦\89 à¦\8fà¦\87 à¦\85নà§\81রà§\8bধ à¦\95রà§\87 à¦¥à¦¾à¦\95à§\87, à¦\95িà¦\82বা à¦¯à¦¦à¦¿ à¦\86পনার à¦ªà§\81রনà§\8b à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦®à¦¨à§\87 à¦ªà¦¡à¦¼à§\87 à¦\97িয়à§\87 à¦¥à¦¾à¦\95à§\87 à¦\93 à¦¸à§\87à¦\9fি à¦\86র à¦¬à¦¦à¦²à¦¾à¦¬à¦¾à¦° à¦\87à¦\9aà§\8dà¦\9bা à¦¨à¦¾ à¦¥à¦¾à¦\95à§\87, à¦¤à¦¾à¦¹à¦²à§\87 à¦\8fà¦\87 à¦¬à¦¾à¦°à§\8dতাà¦\9fি à¦\89পà§\87à¦\95à§\8dষা à¦\95রতà§\87 à¦ªà¦¾à¦°à§\87ন à¦\8fবà¦\82 à¦ªà§\81রনà§\8b à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডটিই ব্যবহার করে যেতে পারেন।",
        "noemail": "\"$1\" ব্যবহারকারীর জন্য কোন ই-মেইল ঠিকানা সংরক্ষিত নেই।",
        "noemailcreate": "আপনাকে অবশ্যই একটি সঠিক ইমেইল ঠিকানা দিতে হবে",
-       "passwordsent": "à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।",
-       "blocked-mailpassword": "à¦\86পনার à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\9fি à¦¥à§\87à¦\95à§\87 à¦¸à¦®à§\8dপাদনা à¦\95রতà§\87 à¦¬à¦¾à¦§à¦¾ à¦\86à¦\9bà§\87, à¦¤à¦¾à¦\87 à¦\8fà¦\87 à¦ à¦¿à¦\95ানার à¦\85পবà§\8dযবহার à¦\95রà§\87 à¦¶à¦¬à§\8dদà¦\9aাবি ফেরত আনতে দেয়া যাবে না।",
+       "passwordsent": "à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।",
+       "blocked-mailpassword": "à¦\86পনার à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\9fি à¦¥à§\87à¦\95à§\87 à¦¸à¦®à§\8dপাদনা à¦\95রতà§\87 à¦¬à¦¾à¦§à¦¾ à¦\86à¦\9bà§\87, à¦¤à¦¾à¦\87 à¦\8fà¦\87 à¦ à¦¿à¦\95ানার à¦\85পবà§\8dযবহার à¦\95রà§\87 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড ফেরত আনতে দেয়া যাবে না।",
        "eauthentsent": "মনোনীত ই-মেইল ঠিকানায় একটি নিশ্চিতকরণ ই-মেইল পাঠানো হয়েছে।\nঐ অ্যাকাউন্টটে অন্য কোন ই-মেইল পাঠানোর আগে আপনাকে ই-মেইলের নির্দেশগুলি অনুসরণ করতে হবে, যাতে অ্যাকাউন্টটি যে আসলেই আপনার, তা নিশ্চিত হয়।",
-       "throttled-mailpassword": "বিà¦\97ত {{PLURAL:$1|à¦\98ণà§\8dà¦\9fার|$1 à¦\98ণà§\8dà¦\9fার}} à¦®à¦§à§\8dযà§\87 à¦\87তিমধà§\8dযà§\87à¦\87 à¦\8fà¦\95বার à¦¶à¦¬à§\8dদà¦\9aাবি à¦¬à¦¦à¦²à§\87র à¦¤à¦¥à§\8dয à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à¦¯à¦¼à§\87à¦\9bà§\87। à¦\85পবà§\8dযবহার à¦°à§\8bধà§\87 à¦ªà§\8dরতি {{PLURAL:$1|à¦\98ণà§\8dà¦\9fায়|$1 à¦\98ণà§\8dà¦\9fায়}} à¦\95à§\87বল à¦\8fà¦\95বার à¦¶à¦¬à§\8dদà¦\9aাবি বদলের তথ্য পাঠানো যাবে।",
+       "throttled-mailpassword": "বিà¦\97ত {{PLURAL:$1|à¦\98ণà§\8dà¦\9fার|$1 à¦\98ণà§\8dà¦\9fার}} à¦®à¦§à§\8dযà§\87 à¦\87তিমধà§\8dযà§\87à¦\87 à¦\8fà¦\95বার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¬à¦¦à¦²à§\87র à¦¤à¦¥à§\8dয à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à¦¯à¦¼à§\87à¦\9bà§\87। à¦\85পবà§\8dযবহার à¦°à§\8bধà§\87 à¦ªà§\8dরতি {{PLURAL:$1|à¦\98ণà§\8dà¦\9fায়|$1 à¦\98ণà§\8dà¦\9fায়}} à¦\95à§\87বল à¦\8fà¦\95বার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড বদলের তথ্য পাঠানো যাবে।",
        "mailerror": "ইমেইল পাঠাতে সমস্যা: $1",
        "acct_creation_throttle_hit": "এই উইকির দর্শক আপনার IP থেকে বিগত সময়ে {{PLURAL:$1|1 টি অ্যাকাউন্ট|$1 গুলো অ্যাকাউন্ট}} তৈরি করেছেন, যা এই সময়ের জন্য সর্বোচ্চ অনুমোদনকৃত।\nফলে, এই IP থেকে দর্শক এই সময়ে নতুন অ্যাকাউন্ট তৈরি করতে পারবেন না।",
        "emailauthenticated": "আপনার ইমেইল ঠিকানাটি $2 তারিখের $3 এ নিশ্চিত করা হয়েছে।",
        "accountcreated": "অ্যাকাউন্ট তৈরি করা হয়েছে",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|আলাপ]]) এর জন্য ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয়েছে।",
        "createaccount-title": "{{SITENAME}}-এর জন্য অ্যাকাউন্ট সৃষ্টি",
-       "createaccount-text": "à¦\95à§\87à¦\89 $2-à¦\8fর à¦\9cনà§\8dয {{SITENAME}}-à¦\8f à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦¸à§\83ষà§\8dà¦\9fি à¦\95রà§\87à¦\9bà§\87ন ($4)। \"$2\"-à¦\8fর à¦\9cনà§\8dয à¦¶à¦¬à§\8dদà¦\9aাবি à¦¹à¦² \"$3\"। à¦\86পনার à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রà§\87 à¦¶à¦¬à§\8dদà¦\9aাবি পরিবর্তন করা উচিত।\n\nযদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।",
+       "createaccount-text": "à¦\95à§\87à¦\89 $2-à¦\8fর à¦\9cনà§\8dয {{SITENAME}}-à¦\8f à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦¸à§\83ষà§\8dà¦\9fি à¦\95রà§\87à¦\9bà§\87ন ($4)। \"$2\"-à¦\8fর à¦\9cনà§\8dয à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¹à¦² \"$3\"। à¦\86পনার à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 à¦ªà§\8dরবà§\87শ à¦\95রà§\87 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড পরিবর্তন করা উচিত।\n\nযদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।",
        "login-throttled": "আপনি সাম্প্রতিক সময়ে পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন।\nপুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
        "login-abort-generic": "আপনার লগইন সফল ছিলো না - বাতিল করা হয়েছে",
        "loginlanguagelabel": "ভাষা: $1",
        "php-mail-error-unknown": "পিএইচপি এর মেইল () কার্যে অজ্ঞাত ভুল",
        "user-mail-no-addy": "কোনো ইমেইল ঠিকানা ছাড়াই ইমেইল করার চেষ্টা করা হয়েছে।",
        "user-mail-no-body": "অত্যান্ত সংক্ষিপ্ত অথবা কোনো তথ্য ছাড়াই ইমেইল পাঠানোর চেষ্টা করা হয়েছিল।",
-       "changepassword": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+       "changepassword": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
        "resetpass_announce": "লগইন করার জন্য আপনাকে অবশ্যই এনটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে।",
        "resetpass_text": "<!-- এখানে লেখা যোগ করুন -->",
-       "resetpass_header": "শবà§\8dদà¦\9aাবি পরিবর্তন করো",
-       "oldpassword": "পà§\81রনà§\8b à¦¶à¦¬à§\8dদà¦\9aাবি",
-       "newpassword": "নতà§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি:",
-       "retypenew": "নতà§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি আবার লিখুন:",
-       "resetpass_submit": "শবà§\8dদà¦\9aাবি দাও এবং লগ-ইন করো",
-       "changepassword-success": "à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবি সাফলভাবে পরিবর্তীত হয়েছে।",
+       "resetpass_header": "পাসà¦\93য়ারà§\8dড পরিবর্তন করো",
+       "oldpassword": "পà§\81রনà§\8b à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড:",
+       "newpassword": "নতà§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড:",
+       "retypenew": "নতà§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড আবার লিখুন:",
+       "resetpass_submit": "পাসà¦\93য়ারà§\8dড দাও এবং লগ-ইন করো",
+       "changepassword-success": "à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড সাফলভাবে পরিবর্তীত হয়েছে।",
        "changepassword-throttled": "আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
-       "resetpass_forbidden": "শবà§\8dদà¦\9aাবি পরিবর্তন করা সম্ভব নয়",
+       "resetpass_forbidden": "পাসà¦\93য়ারà§\8dড পরিবর্তন করা সম্ভব নয়",
        "resetpass-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
-       "resetpass-submit-loggedin": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+       "resetpass-submit-loggedin": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
        "resetpass-submit-cancel": "বাতিল",
-       "resetpass-wrong-oldpass": "ভà§\81ল à¦\85সà§\8dথায়à§\80 à¦\85থবা à¦¬à¦°à§\8dতমান à¦¶à¦¬à§\8dদà¦\9aাবি।\nসমà§\8dভবতà¦\83 à¦\86পনি à¦\87তà§\8bমধà§\8dযà§\87à¦\87 à¦¸à¦«à¦²à¦­à¦¾à¦¬à§\87 à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবিà¦\9fি à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রà§\87à¦\9bà§\87ন à¦\85থবা à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবির জন্য অনুরোধ করেছেন।",
+       "resetpass-wrong-oldpass": "ভà§\81ল à¦\85সà§\8dথায়à§\80 à¦\85থবা à¦¬à¦°à§\8dতমান à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড।\nসমà§\8dভবতà¦\83 à¦\86পনি à¦\87তà§\8bমধà§\8dযà§\87à¦\87 à¦¸à¦«à¦²à¦­à¦¾à¦¬à§\87 à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà¦\9fি à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রà§\87à¦\9bà§\87ন à¦\85থবা à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডà§\87র জন্য অনুরোধ করেছেন।",
        "resetpass-recycled": "অনুগ্রহ করে বর্তমানে ব্যবহার করছেন এমন পাসওয়ার্ডের পরিবর্তে নতুন একটি পাসওয়ার্ড নির্ধারণ করুন।",
        "resetpass-temp-emailed": "সাময়িকভাবে ব্যবহার করার কোড দিয়ে আপনি লগইন করেছেন।\nলগইন করার জন্য আপনাকে অবশ্যই একটি নতুন পাসওয়ার্ড নির্ধারন করতে হবে:",
-       "resetpass-temp-password": "à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবি:",
-       "resetpass-abort-generic": "শবà§\8dদà¦\9aাবি পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।",
+       "resetpass-temp-password": "à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড:",
+       "resetpass-abort-generic": "পাসà¦\93য়ারà§\8dড পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।",
        "resetpass-expired": "আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে। অনুগ্রহ করে নতুন পাসওয়ার্ড নির্ধারণ করুন।",
        "resetpass-expired-soft": "আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে এবং আপনাকে একটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে। অনুগ্রহ করে এখনই একটি নতুন পাসওয়ার্ড নির্ধারণ করুন অথবা পরে পরিবর্তন করতে চাইলে \"{{int:resetpass-submit-cancel}}\" বাটনে ক্লিক করুন।",
-       "resetpass-validity-soft": "দয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি নির্ধারণ করুন অথবা পরে করার জন্য \"{{int:resetpass-submit-cancel}}\" ক্লিক করুন।",
-       "passwordreset": "শবà§\8dদà¦\9aাবি রিসেট",
+       "resetpass-validity-soft": "দয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড নির্ধারণ করুন অথবা পরে করার জন্য \"{{int:resetpass-submit-cancel}}\" ক্লিক করুন।",
+       "passwordreset": "পাসà¦\93য়ারà§\8dড রিসেট",
        "passwordreset-text-one": "আপনার পাসওয়ার্ড পুনরায় সেট করতে এই ফর্মটি পূরণ করুন।",
-       "passwordreset-text-many": "{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র à¦®à¦¾à¦§à§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবি পেতে ঘরগুলির একটি পূরণ করুন।}}",
-       "passwordreset-legend": "শবà§\8dদà¦\9aাবি রিসেট",
-       "passwordreset-disabled": "à¦\8fà¦\87 à¦\89à¦\87à¦\95িতà§\87 à¦¶à¦¬à§\8dদà¦\9aাবি রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।",
+       "passwordreset-text-many": "{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র à¦®à¦¾à¦§à§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড পেতে ঘরগুলির একটি পূরণ করুন।}}",
+       "passwordreset-legend": "পাসà¦\93য়ারà§\8dড রিসেট",
+       "passwordreset-disabled": "à¦\8fà¦\87 à¦\89à¦\87à¦\95িতà§\87 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।",
        "passwordreset-emaildisabled": "এই উইকিতে ইমেইল অপশনটি বন্ধ করা হয়েছে।",
        "passwordreset-username": "ব্যবহারকারী নাম:",
        "passwordreset-domain": "ডোমেইন:",
        "passwordreset-capture": "অনুসন্ধানের ফলাফলের ইমেইল দেখুন?",
-       "passwordreset-capture-help": "à¦\86পনি à¦¯à¦¦à¦¿ à¦\8fà¦\87 à¦ªà¦°à§\80à¦\95à§\8dষা à¦¬à¦\95à§\8dসà§\87 à¦\95à§\8dলিà¦\95 à¦\95রà§\87ন, à¦¤à¦¬à§\87 à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবিসহ একটি ইমেইল আপনাকে দেখানো হবে ও সেইসাথে ব্যবহারকারীকে তা পাঠানো হবে।",
+       "passwordreset-capture-help": "à¦\86পনি à¦¯à¦¦à¦¿ à¦\8fà¦\87 à¦ªà¦°à§\80à¦\95à§\8dষা à¦¬à¦\95à§\8dসà§\87 à¦\95à§\8dলিà¦\95 à¦\95রà§\87ন, à¦¤à¦¬à§\87 à¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dডসহ একটি ইমেইল আপনাকে দেখানো হবে ও সেইসাথে ব্যবহারকারীকে তা পাঠানো হবে।",
        "passwordreset-email": "ইমেইল ঠিকানা:",
        "passwordreset-emailtitle": "{{SITENAME}} সাইটে ব্যবহারকারীর বিস্তারিত তথ্যাদি",
-       "passwordreset-emailtext-ip": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন (সমà§\8dভবত à¦\86পনি, $1 à¦\86à¦\87পি à¦ à¦¿à¦\95ানা à¦¥à§\87à¦\95à§\87) {{SITENAME}} ($4) à¦¸à¦¾à¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার\nশবà§\8dদà¦\9aাবি বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
-       "passwordreset-emailtext-user": "বà§\8dযবহারà¦\95ারà§\80 $1 {{SITENAME}} ($4) à¦¸à¦¾à¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবি বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
-       "passwordreset-emailelement": "বà§\8dযবহারà¦\95ারà§\80 à¦¨à¦¾à¦®: $1\nà¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবি: $2",
-       "passwordreset-emailsent": "শবà§\8dদà¦\9aাবি বদলের একটি ই-মেইল পাঠানো হয়েছে।",
+       "passwordreset-emailtext-ip": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন (সমà§\8dভবত à¦\86পনি, $1 à¦\86à¦\87পি à¦ à¦¿à¦\95ানা à¦¥à§\87à¦\95à§\87) {{SITENAME}} ($4) à¦¸à¦¾à¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার\nপাসà¦\93য়ারà§\8dড বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
+       "passwordreset-emailtext-user": "বà§\8dযবহারà¦\95ারà§\80 $1 {{SITENAME}} ($4) à¦¸à¦¾à¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
+       "passwordreset-emailelement": "বà§\8dযবহারà¦\95ারà§\80 à¦¨à¦¾à¦®: $1\nà¦\85সà§\8dথায়à§\80 à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড: $2",
+       "passwordreset-emailsent": "পাসà¦\93য়ারà§\8dড বদলের একটি ই-মেইল পাঠানো হয়েছে।",
        "passwordreset-emailsent-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল করা হয়েছে, যা নিচে দেখানো হচ্ছে।",
        "passwordreset-emailerror-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল তৈরী করা হয়েছিল, যা নিচে দেখানো হচ্ছে, তবে $1 {{GENDER:$2|ব্যবহারকারীকে}} এটি পাঠানো যায়নি!",
        "changeemail": "ই-মেইল ঠিকানা পরিবর্তন",
        "changeemail-header": "অ্যাকাউন্ট ই-মেইল ঠিকানা পরিবর্তন",
-       "changeemail-text": "à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95ানা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রতà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\87 à¦«à¦°à¦®à¦\9fি à¦ªà§\82রণ à¦\95রতà§\87 à¦¹à¦¬à§\87। à¦\8fà¦\87 à¦ªà¦°à¦¿à¦¬à¦°à§\8dতনà¦\9fি à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95রতà§\87 à¦\86পনার à¦¶à¦¬à§\8dদà¦\9aাবি (পাসà¦\93য়ারà§\8dড) প্রদানের প্রয়োজন হবে।",
+       "changeemail-text": "à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95ানা à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\95রতà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\87 à¦«à¦°à¦®à¦\9fি à¦ªà§\82রণ à¦\95রতà§\87 à¦¹à¦¬à§\87। à¦\8fà¦\87 à¦ªà¦°à¦¿à¦¬à¦°à§\8dতনà¦\9fি à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95রতà§\87 à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড প্রদানের প্রয়োজন হবে।",
        "changeemail-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
        "changeemail-oldemail": "বর্তমান ই-মেইল ঠিকানা:",
        "changeemail-newemail": "নতুন ই-মেইল ঠিকানা:",
        "changeemail-none": "(কিছু নাই)",
-       "changeemail-password": "à¦\86পনার {{SITENAME}} à¦¶à¦¬à§\8dদà¦\9aাবি:",
+       "changeemail-password": "à¦\86পনার {{SITENAME}} à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড:",
        "changeemail-submit": "ই-মেইল পরিবর্তন",
        "changeemail-cancel": "বাতিল",
        "changeemail-throttled": "আপনি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
        "loginreqtitle": "লগ-ইন প্রয়োজন",
        "loginreqlink": "লগ-ইন",
        "loginreqpagetext": "অন্যান্য পাতা দেখতে হলে আপনাকে অবশ্যই $1 হতে হবে।",
-       "accmailtitle": "শবà§\8dদà¦\9aাবি à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à¦¯à¦¼à§\87à¦\9bà§\87৷",
+       "accmailtitle": "পাসà¦\93য়ারà§\8dড à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à¦¯à¦¼à§\87à¦\9bà§\87",
        "accmailtext": "[[User talk:$1|$1]] এর জন্য দৈব ভাবে উৎপন্ন শব্দ চাবি $2 এ পাঠানো হয়েছে।\nলগ-ইন করার পর ''[[Special:ChangePassword|পাসওয়ার্ড পরিবর্তন]]'' পাতা থেকে এটি পরিবর্তন করা যাব।",
        "newarticle": "(নতুন)",
        "newarticletext": "আপনি এমন একটি লিংক অনুসরণ করছেন, যা নেই।\nপাতাটি তৈরি করতে, নিচের বাক্সে তা টাইপ করা শুরু করুন (আরও তথ্য জানতে [$1 সহায়িকা পাতা] দেখুন)।\nআপনি যদি ভুল করে এখানে এসে থাকেন, তাহলে আপনার ব্রাউজারের '''back''' বোতাম ক্লিক করুন।",
        "rev-deleted-event": "(লগ অ্যাকশন সরানো হয়েছে)",
        "rev-deleted-user-contribs": "ব্যবহারকারীর নাম অথবা আইপি ঠিকানা অপসারিত হয়েছে - অবদান থেকে সম্পাদনা আড়াল করা হয়েছে",
        "rev-deleted-text-permission": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।",
-       "rev-suppressed-text-permission": "পাতার à¦\8fà¦\87 à¦¸à¦\82শà§\8bধনà¦\9fি <strong>à¦\97à§\8bপন</strong> à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।\nà¦\86পনি à¦\8fà¦\9fি à¦¦à§\87à¦\96তà§\87 à¦ªà¦¾à¦°à§\87ন; à¦\8f à¦¸à¦\82à¦\95à§\8dরাসà§\8dত à¦¬à¦¿à¦¸à§\8dতারিত à¦¬à¦¿à¦¬à¦°à¦£[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} গোপনকার্যের লগে] থাকতে পারে।",
+       "rev-suppressed-text-permission": "পাতার à¦¸à¦\82শà§\8bধনà¦\9fি <strong>à¦\97à§\8bপন</strong> à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।\nবিসà§\8dতারিত à¦¬à¦¿à¦¬à¦°à¦£ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} গোপনকার্যের লগে] থাকতে পারে।",
        "rev-deleted-text-unhide": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।\nআপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
        "rev-suppressed-text-unhide": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।\nআপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
        "rev-deleted-text-view": "পাতার এই সংশোধনটি অপসারণ করা হয়েছে।\nআপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।",
        "prefs-watchlist-edits-max": "সর্বোচ্চ নাম্বার: ১০০০",
        "prefs-watchlist-token": "নজরতালিকা টোকেন:",
        "prefs-misc": "বিবিধ",
-       "prefs-resetpass": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+       "prefs-resetpass": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
        "prefs-changeemail": "ই-মেইল পরিবর্তন",
        "prefs-setemail": "একটি ই-মেইল ঠিকানা নির্ধারণ করুন",
        "prefs-email": "ই-মেইল অপশন",
        "prefs-help-gender": "সেটিংসের এই পরিবর্তন ঐচ্ছিক।\nসফটওয়্যারে মাধ্যমে লিঙ্গ অনুযায়ী সম্বধনের ক্ষেত্রে এটি ব্যবহৃত হয়।\nএই তথ্য সকলের জন্য উন্মুক্ত থাকেবে।",
        "email": "ই-মেইল",
        "prefs-help-realname": "আসল নাম দেওয়া অনাবশ্যক। যদি আসল নাম দেন, তবে আপনার কাজের স্বীকৃতি দানে তা ব্যবহার করা হবে।",
-       "prefs-help-email": "ই-মেইল ঠিকানা ঐচ্ছিক, তবে শব্দচাবি ভুলে গেলে নতুন করে শব্দচাবি নিতে এটির প্রয়োজন হবে।",
+       "prefs-help-email": "ইমেইল ঠিকানা ঐচ্ছিক, তবে পাসওয়ার্ড ভুলে গেলে নতুন করে পাসওয়ার্ড নিতে এটির প্রয়োজন হবে।",
        "prefs-help-email-others": "আপনি আপনার পরিচয় প্রকাশ না করেও আপনার ব্যবহারকারী অথবা আলাপ পাতাটির মাধ্যমে অন্যদেরকে আপনার সাথে যোগাযোগ করতে দিতে পারেন।",
        "prefs-help-email-required": "ই-মেইল ঠিকানা আবশ্যক।",
        "prefs-info": "সাধারণ তথ্য",
        "right-browsearchive": "অপসারিত পাতা অনুসন্ধান করো",
        "right-undelete": "পাতাটি পুনরুদ্ধার করুন",
        "right-suppressrevision": "প্রশাসকদের থেকে লুকানো সংস্করণগুলো রিভিউ এবং রিস্টোর করুন",
+       "right-viewsuppressed": "সকল ব্যবহারকারীর জন্য লুকিয়াত সংশোধন প্রদর্শন কর",
        "right-suppressionlog": "ব্যক্তিগত লগ দেখাও",
        "right-block": "সম্পাদনা করতে কোনো ব্যবহারকারীকে বাঁধা দাও",
        "right-blockemail": "ই-মেইল পাঠাতে কোনো ব্যবহারকারীকে বাঁধা দাও",
        "licenses-edit": "লাইসেন্স অপশন সম্পাদনা করুন",
        "license-nopreview": "(প্রাকদর্শন লভ্য নয়)",
        "upload_source_url": " (একটি বৈধ, উন্মুক্ত URL)",
-       "upload_source_file": " (আপনার কম্পিউটারের একটি ফাইল)",
+       "upload_source_file": "(আপনার কম্পিউটারের একটি ফাইল)",
        "listfiles-delete": "অপসারণ",
        "listfiles-summary": "এই বিশেষ পাতাটি আপলোড করা সকল ফাইল প্রদর্শন করে।",
        "listfiles_search_for": "ছবির নাম অনুসন্ধান:",
        "randomincategory": "বিষয়শ্রেণীর অজানা যেকোনো পাতা",
        "randomincategory-invalidcategory": "\"$1\" একটি ত্রুটিপূর্ণ বিষয়শ্রেণীর নাম।",
        "randomincategory-nopages": "[[:Category:$1]]-এ কোন পাতা নেই।",
-       "randomincategory-selectcategory": "এই বিষয়শ্রেণীর একটি অজানা যেকোনো পাতা: $1 $2।",
-       "randomincategory-selectcategory-submit": "যাও",
+       "randomincategory-category": "বিষয়শ্রেণী:",
+       "randomincategory-legend": "বিষয়শ্রেণীর অজানা যেকোনো পাতা",
        "randomredirect": "অনির্ধারিত পুনর্নির্দেশ",
        "randomredirect-nopages": "\"$1\" এই নামস্থানে কোন পুনর্নির্দেশ নেই।",
        "statistics": "পরিসংখ্যান",
        "mywatchlist": "নজর তালিকা",
        "watchlistfor2": "$1 ($2)-এর জন্য",
        "nowatchlist": "আপনার নজরতালিকা খালি।",
-       "watchlistanontext": "আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে $1।",
+       "watchlistanontext": "আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে প্রবেশ করুন।",
        "watchnologin": "আপনি এখনও লগ-ইন করেননি।",
        "addwatch": "নজরতালিকায় যোগ করো",
        "addedwatchtext": "\"[[:$1]]\" পাতাটি আপনার [[Special:Watchlist|নজরতালিকাতে]] যোগ করা হয়েছে।\nভবিষ্যতে এই পাতা ও এই পাতার সাথে সম্পর্কিত আলোচনা পাতায় সংঘটিত যাবতীয় পরিবর্তন এখানে তালিকাভুক্ত হবে।",
        "exbeforeblank": "মুছে ফেলার আগে বিষয়বস্তু ছিল: '$1'",
        "delete-confirm": "\"$1\" অপসারণ",
        "delete-legend": "অপসারণ",
-       "historywarning": "'''সতর্কীকরণ:''' যে পাতাটি আপনি মুছে ফেলতে যাচ্ছেন তার ইতিহাসে প্রায় $1টি {{PLURAL:$1|সংশোধন}} রয়েছে:",
+       "historywarning": "<strong>সতর্কীকরণ:</strong> যে পাতাটি আপনি মুছে ফেলতে যাচ্ছেন তার ইতিহাসে প্রায় $1টি {{PLURAL:$1|সংশোধন}} রয়েছে:",
        "confirmdeletetext": "আপনি একটি পাতা সেটির সমস্ত ইতিহাসসহ মুছে ফেলতে যাচ্ছেন।\nঅনুগ্রহ করে নিশ্চিত করুন আপনি আসলেই এটি করতে চান, আপনি এর ফলাফল সম্পর্কে অবহিত, এবং আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে এটি করছেন।",
        "actioncomplete": "কাজটি নিষ্পন্ন হয়েছে",
        "actionfailed": "অ্যাকশন ব্যর্থ",
        "delete-edit-reasonlist": "অপসারণের কারণ সম্পাদনা",
        "delete-toobig": "এই পাতার সম্পাদনার ইতিহাস অনেক বড়, যা $1টি {{PLURAL:$1|সংস্করণের|সংস্করণের}} বেশি।\n{{SITENAME}}-এর দূর্ঘটনাজনিত সমস্যা এড়াতে এই ধরনের পাতা মুছার ব্যপারে সীমাবদ্ধতা আরোপিত হয়েছে।",
        "delete-warning-toobig": "এই পাতাটির একটি বৃহৎ সম্পাদনা ইতিহাস রয়েছে, যা $1 {{PLURAL:$1|সংস্করণেরও|সংস্করণেরও}} বেশি।\nএই পাতাটি মুছে ফেললে তা {{SITENAME}} সাইটের ডেটাবেজ সমস্যার কারণ হতে পারে;\nসাবধানতার সাথে এগিয়ে যান।",
+       "deleteprotected": "আপনি এই পাতাটি মুছে ফেলতে পারবেন না কারণ এটি সুরক্ষিত করা হয়েছে।",
        "deleting-backlinks-warning": "'''সতর্কীকরণ:''' আপনি যেটি মুছে ফেলতে যাচ্ছেন তা [[Special:WhatLinksHere/{{FULLPAGENAME}}|অন্যান্য পাতাসমূহে]] সংযুক্ত অথবা অন্তর্ভুক্ত রয়েছে।",
        "rollback": "সম্পাদনা ফিরিয়ে নিন",
        "rollback_short": "ফিরিয়ে নিন",
        "import": "পাতা আমদানি",
        "importinterwiki": "আন্তঃউইকি আমদানি",
        "import-interwiki-text": "আমদানির জন্য একটি উইকি ও পাতার শিরোনাম নির্বাচন করুন।\nসংশোধনের তারিখগুলি এবং সম্পাদকদের নামগুলি সংরক্ষণ করা হবে।\nসমস্ত আন্তঃউইকি আমদানিগুলি [[Special:Log/import|আমদানি লগে]] লিপিবদ্ধ আছে।",
-       "import-interwiki-source": "উৎস উইকি/পাতা:",
+       "import-interwiki-sourcewiki": "উত্স উইকি:",
+       "import-interwiki-sourcepage": "উৎস পাতা:",
        "import-interwiki-history": "এই পাতার সমস্ত ইতিহাসের সংস্করণের অনুলিপি করা হোক",
        "import-interwiki-templates": "সকল টেম্পলেট অন্তর্ভুক্ত",
        "import-interwiki-submit": "আমদানি",
        "import-upload": "XML ডাটা আপলোড",
        "import-token-mismatch": "সেশন ডাটা হারিয়ে গিয়েছে।\nঅনুগ্রহ করে পুনরায় চেষ্টা করুন।",
        "import-invalid-interwiki": "নির্ধারিত উইকি থেকে আমদানী করা যাবে না।",
-       "import-error-edit": "\"$1\" à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\87মà§\8dপà§\8bরà§\8dà¦\9f করা যায়নি কারণ আপনার এটি সম্পাদনা করার অনুমতি নেই।",
+       "import-error-edit": "\"$1\" à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\86মদানি করা যায়নি কারণ আপনার এটি সম্পাদনা করার অনুমতি নেই।",
        "import-error-create": "\"$1\" পাতাটি ইম্পোর্ট করা যায়নি কারণ আপনার এটি তৈরী করার অনুমতি নেই।",
        "import-error-interwiki": "\"$1\" পাতাটি ইম্পোর্ট করা যায়নি কারণ এই নামটি বহিঃসংযোগর জন্য নির্ধারিত (ইন্টারউইকি)।",
        "import-error-special": "\"$1\" পাতাটি ইম্পোর্ট করা যায়নি কারণ এটি একটি বিশেষ নামস্থানকে নির্দেশ করে যেটি সম্পাদনার জন্য অনুমোদিত নয়।",
index 7b5d255..434232e 100644 (file)
        "talkpagelinktext": "གཏམ་གླེང།",
        "specialpage": "དམིགས་གསལ་ཤོག་ངོས།",
        "personaltools": "སྒེར་ཀྱི་ལག་ཆ།",
-       "postcomment": "སྡེ་ཚན་གསར་བ།",
        "articlepage": "ནང་དོན་ཤོག་ངོས་ལ་ལྟ་བ།",
        "talk": "གྲོས་བསྡུར།",
        "views": "ལྟ་ཞིབ།",
        "illegal-filename": "ཡིག་ཆའི་མིང་འདི་ལ་ཆོག་མཆན་མི་འདུག",
        "uploadwarning": "ཡར་འཇུག་སྔོན་བརྡ།",
        "savefile": "ཡིག་ཆ་ཉོར་ཅིག",
-       "uploadedimage": "\"[[$1]]\"ཡར་འཇུག་བྱས་ཟིན།",
        "uploaddisabled": "ཡར་འཇུག་ནུས་མེད་བཟོས་འདུག",
        "watchthisupload": "ཡིག་ཆ་འདི་ལ་གཟིགས།",
        "license": "གན་རྒྱ་ནང་ཞུགས་པ།",
index 6358b2d..3da2377 100644 (file)
        "talkpagelinktext": "য়্যারি",
        "specialpage": "বিশেষ পাতাহান",
        "personaltools": "নিজস্ব আতিয়ার",
-       "postcomment": "নুৱা অনুচ্ছেদহান",
        "articlepage": "নিবন্ধ চেইক",
        "talk": "য়্যারী",
        "views": "চা",
        "externaldberror": "ডাটেবেজর মা বেসেপ আহান ইসে নাইলে তরতা বারেদের একাউন্ট বদালানির য়্যাথাং নেই।",
        "login": "হমানি",
        "nav-login-createaccount": "লগইন / একাউন্ট খুল",
-       "loginprompt": "তি যেসাদেউ হমাসি {{SITENAME}} পাতা এহানর কুকিসর য়্যাথাঙ দে।",
        "userlogin": "হমানি / নৱা একাউন্ট খুলানি",
        "userloginnocreate": "লগইন",
        "logout": "নিকুলানি",
        "searchprofile-advanced-tooltip": "নিজর লেপকরা নাঙথাকে বিসারা",
        "search-result-size": "$1 ({{PLURAL:$2|1 ৱাহি|$2 ৱাহিহানি}})",
        "search-result-category-size": "{{PLURAL:$1 | 1 সদস্য | $1 সদস্যগি}} ({{PLURAL:$2 | 1 উপবিষয়থাকহানি | $2 হান}}, {{PLURAL:$3 | 1 ফাইল | $3 ফাইল}})",
-       "search-result-score": "মান্নপা $1%",
        "search-redirect": "(বারোআলথক $1)",
        "search-section": "(অনুচ্ছেদ $1)",
        "search-suggest": "তি হয়ত মাতানি চারতা: $1",
        "illegalfilename": "\"$1\" ফাইলর নাঙহাত থকনেই মেয়েক মিহিসে যেতা  পাতাহার চিঙনাঙে বরানি নাকরব।\nআরাক নুৱা নাঙ আহান দিয়া কাকর।",
        "badfilename": "ফাইলগর নাঙহান পতিয়া $1\" করানি ইল।",
        "savefile": "ফাইল ইতু",
-       "uploadedimage": "আপলোডকরানি অইল \"[[$1]]\"",
        "upload-source": "ফাইলর উৎস",
        "upload-options": "আপলোডর পছনহানি",
        "watchthisupload": "ফাইলগ খিয়ালে থ",
index 4cbfc49..0203515 100644 (file)
@@ -6,18 +6,18 @@
                        "GerardM",
                        "Huji",
                        "Meno25",
-                       "Mogoeilor"
+                       "Mogoeilor",
+                       "아라"
                ]
        },
        "tog-underline": "لینکهای خط به زیر",
        "tog-hideminor": "من ته نبیدن تغییرات کوچیک",
-       "tog-extendwatchlist": "Ú¯Ù¾ Ú©Ø±Ø¯Ù\86 Ù\84Û\8cستÙ\87اÛ\8c Ù\85Ù\86 ØªÙ\87 Ø³Û\8c Ø¯Û\8cدÙ\86 Ù\87Ù\85Ù\87 ØªØºÛ\8cÛ\8cراتÛ\8c Ú©Ù\87 Ø§Ø¨Ù\88Ù\87",
+       "tog-extendwatchlist": "Ú¯Ù¾ Ú©Ø±Ø¯Ù\86 Ù\86Ù\88Ù\85 Ú¯Ù\87 Ø¢ Ù\85Ù\88 Ø³Û\8c Ø¯Û\8cئÙ\86 Ù\87Ù\85Ù\87 Ø¢Ù\84شتا Ù\86Ù\87 Ù\81Ù\82Ø· Ù\87Ù\88Ù\86Ù\88 Ú©Ù\87 Ø¨Û\8cشتر Ø² Ù\87Ù\85Ù\87 Ø§Ù\86جÙ\88Ù\85 Ø§Ø¨Ù\88Ù\86.",
        "tog-usenewrc": "گپ کردن تغییرات آخری - جاوااسکریپت",
        "tog-numberheadings": "شماره وندن خودکار سی سرخط ها",
        "tog-showtoolbar": "نشو دادن تغییرات  تولبار  یا   جای نشودادن ابزارها- جاوااسکریپت",
        "tog-editondblclick": "اصلاح صفحات با دوبار کلیک - جاوااسکریپت",
        "tog-editsectiononrightclick": "امکان اصلاح یه قسمت زه راه راست کلیک کردن رو عنوان  اوقسمت- جاوااسکریپت",
-       "tog-rememberpassword": "به حافظه کامپیوتر دادن نحوه ورودی خوم (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "tog-watchcreations": "اضاف کردن اوصفحاتی که خوم درست کردم به فهرست نمایشی",
        "tog-watchdefault": "اضاف کردن اوصفحاتی که خوم اصلاح کردم به فهرست نمایشی",
        "tog-watchmoves": "اضاف کردن صفحاتی که خوم جابجا کردم به فهرست نمایشی",
        "talkpagelinktext": "صحبت",
        "specialpage": "صفحه مخصوص",
        "personaltools": "ابزارهای شخصی",
-       "postcomment": "ارسال یک توضیح",
        "articlepage": "دیدن صفحه محتوا",
        "talk": "بحث",
        "views": "مشاهدات",
        "remembermypassword": "رمز اویدن به سیستم را دراین رایانه به خاطر بسپار (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "login": "اویدن به سیستم",
        "nav-login-createaccount": "اویدن به سیستم",
-       "loginprompt": "ایسا وا کوکی ها رافعال کنین سی اویدن به  {{SITENAME}}.",
        "userlogin": "اویدن به سیستم / درست کردن حساب کاربری",
        "logout": "رهدن زه سیستم",
        "userlogout": "رهدن زه سیستم",
        "recentchanges": "تغییرات اخیر",
        "recentchanges-feed-description": "ردیابی آخرین تغییرات  ویکی در ای خورد",
        "rcnotefrom": "در زیر تغییرات زه تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشو داده ابوه).",
-       "rclistfrom": "نشودادن تغییرات تازه با شروع زه $1",
+       "rclistfrom": "نشودادن تغییرات تازه با شروع زه $3 $2",
        "rcshowhideminor": "اصلاحات کوچیک $1",
        "rcshowhidebots": "$1 ربات‌ها یا بوتها",
        "rcshowhideliu": "$1 کاربران داخل وابیده",
        "upload": "آپلود فایل",
        "uploadbtn": "آپلود فایل",
        "uploadlogpage": "نمایه آپلود",
-       "uploadedimage": "آپلود وابید \"[[$1]]\"",
        "listfiles": "لیست فایل",
        "file-anchor-link": "فایل",
        "filehist": "گزارش تاریخی فایل",
        "log": "نمایه ها",
        "all-logs-page": "همه نمایه ها",
        "allpages": "همه صفحات",
-       "alphaindexline": "$1 به\n$2",
        "nextpage": "صفحه بعدی ($1)",
        "prevpage": "صفحه قبلی($1)",
        "allpagesfrom": "نمایش دادن صفحات با شروع زه:",
index c1145a4..cb2786f 100644 (file)
        "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",
        "exception-nologin": "N'oc'h ket kevreet",
-       "exception-nologin-text": "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet er wiki-mañ.",
+       "exception-nologin-text": "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet.",
        "exception-nologin-text-manual": "$1, mar plij, evit gallout mont d'ar bajenn-mañ pe ober an dra-mañ",
        "virus-badscanner": "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
        "virus-scanfailed": "Skannadenn c'hwitet (kod $1)",
        "gotaccount": "Ur gont zo ganeoc'h dija ? '''$1'''.",
        "gotaccountlink": "Kevreañ",
        "userlogin-resetlink": "Ha disoñjet eo bet ho titouroù kevreañ ganeoc'h ?",
-       "userlogin-resetpassword-link": "Ankouaet ho peus ho ker-tremen ?",
+       "userlogin-resetpassword-link": "Ankouaet ho ker-tremen ganeoc'h ?",
        "userlogin-helplink2": "Skoazell evit kevreañ",
        "userlogin-loggedin": "Kevreet oc'h dija evel {{GENDER:$1|$1}}.\nImplijit ar furmskrid amañ dindan evit kevreañ evel un implijer all.",
        "userlogin-createanother": "Krouiñ ur gont all",
        "parser-template-recursion-depth-warning": "Tizhet bevenn donder galvoù ar patromoù ($1)",
        "language-converter-depth-warning": "Aet eur en tu all d'ar vevenn amdreiñ yezhoù ($1)",
        "node-count-exceeded-category": "Pajennoù m'eur aet en tu all d'an niver a skoulmoù",
-       "node-count-exceeded-warning": "Pajenn a ya en tu all d'an niver a skoulmoù",
+       "node-count-exceeded-warning": "Pajenn hag 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ñ",
        "currentrev": "Stumm a-vremañ pe stumm red",
        "currentrev-asof": "Stumm red eus an $1",
        "revisionasof": "Stumm eus an $1",
-       "revision-info": "Stumm eus an $1 gant $2",
+       "revision-info": "Stumm eus an $1 gant $2$7",
        "previousrevision": "← Stumm kent",
        "nextrevision": "Stumm war-lerc'h →",
        "currentrevisionlink": "Gwelet ar stumm red",
        "preferences": "Penndibaboù",
        "mypreferences": "Penndibaboù",
        "prefs-edits": "Niver a zegasadennoù :",
-       "prefsnologintext2": "$1, mar plij, evit cheñch ho penndibaboù.",
+       "prefsnologintext2": "Kevreit evit cheñch ho penndibaboù, mar plij.",
        "prefs-skin": "Gwiskadur",
        "skin-preview": "Rakwelet",
        "datedefault": "Dre ziouer",
        "license": "Aotre-implijout :",
        "license-header": "Aotre implijout",
        "nolicense": "Hini ebet diuzet",
+       "licenses-edit": "Aozañ dibarzhioù an aotre-implijout",
        "license-nopreview": "(Dibosupl rakwelet)",
        "upload_source_url": " (Un URL reizh a c'hall bezañ tizhet gant an holl)",
        "upload_source_file": " (ur restr war hoc'h urzhiataer)",
        "randomincategory": "Ur bajenn dre zegouezh er rummad",
        "randomincategory-invalidcategory": "\"$1\" n'eo ket un anv rummad reizh.",
        "randomincategory-nopages": "N'eus pajenn ebet e [[:Category:$1]].",
-       "randomincategory-selectcategory": "Tapout ur bajenn dre zegouezh eus ar rummad : $1 $2.",
-       "randomincategory-selectcategory-submit": "Mont",
+       "randomincategory-category": "Rummad :",
+       "randomincategory-legend": "Ur bajenn dre zegouezh er rummad",
        "randomredirect": "Ur bajenn adkas dre zegouezh",
        "randomredirect-nopages": "N'eus pajenn adkas ebet en esaouenn anv \"$1\".",
        "statistics": "Stadegoù",
        "doubleredirects": "Adkasoù doubl",
        "doubleredirectstext": "Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.\nWar bep linenn ez eus liammoù war-du pajennoù an adkas kentañ hag en eil adkas, hag ivez war-du pajenn-dal an eil adkas zo sañset bezañ ar pal \"gwirion\" a zlefe an adkas kentañ kas di.\nDiskoulmet eo bet an enmontoù <del>barrennet</del>.",
        "double-redirect-fixed-move": "Adanvet eo bet [[$1]], adkaset eo war-du [[$2]] bremañ",
-       "double-redirect-fixed-maintenance": "O reizhañ an adkas doubl adalek [[$1]] war-zu [[$2]].",
+       "double-redirect-fixed-maintenance": "O reizhañ ent emgefre an adkas doubl adalek [[$1]] war-zu [[$2]] en un trevell trezalc'h.",
        "double-redirect-fixer": "Reizher adkasoù",
        "brokenredirects": "Adkasoù torret",
        "brokenredirectstext": "Kas a ra an adkasoù-mañ da bajennoù n'eus ket anezho.",
        "wantedpages-badtitle": "Titl direizh er strollad disoc'hoù : $1",
        "wantedfiles": "Restroù a vank",
        "wantedfiletext-cat": "Ober a reer gant ar restroù da-heul koulskoude n'eus ket anezho. Gallout a reer rollañ kavlec'hioù diavaez ha pa vefe anezho. <del>Barrennet</del> e vo an holl falspozitivoù-se. Ouzhpenn-se emañ renablet an holl bajennoù zo enno restroù n'eus ket anezho e [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Implijet eo ar restroù-mañ, met n'eus ket anezho. Ouzhpenn-se, emañ ar pajennoù a enframm ar restroù er roll [[:$1]].",
        "wantedfiletext-nocat": "Ober a reer gant ar restroù da-heul koulskoude n'eus ket anezho. Gallout a reer rollañ kavlec'hioù diavaez ha pa vefe anezho. <del>Barrennet</del> e vo an holl falspozitivoù-se.",
        "wantedfiletext-nocat-noforeign": "Implijet e vez ar restroù-mañ met n'eus ket anezho.",
        "wantedtemplates": "Patromoù a vank",
        "mostlinked": "Pajennoù dezho al liammoù niverusañ",
        "mostlinkedcategories": "Rummadoù dezho al liammoù niverusañ",
-       "mostlinkedtemplates": "Patromoù implijet ar muiañ",
+       "mostlinkedtemplates": "Pajennoù enframmet ar muiañ",
        "mostcategories": "Pennadoù rummatet ar muiañ",
        "mostimages": "Skeudennoù implijet ar muiañ",
        "mostinterwikis": "Pajennoù gant an niver brasañ a etrewikioù",
        "listgrouprights-removegroup-self-all": "Gallout a ra tennañ kuit an holl strolladoù eus kont an-unan.",
        "listgrouprights-namespaceprotection-namespace": "Esaouenn anv",
        "trackingcategories-name": "Anv ar gemennadenn",
+       "broken-file-category-desc": "Er bajenn-mañ ez eus ul liamm restr torr (ul liamm da enframmañ ur restr pa n'eus ket eus ar restr-se).",
        "trackingcategories-nodesc": "N'eus deskrivadur ebet.",
        "trackingcategories-disabled": "Diweredekaet eo ar rummad",
        "mailnologin": "Chomlec'h ebet",
        "mywatchlist": "Ma roll evezhiañ",
        "watchlistfor2": "Evit $1 $2",
        "nowatchlist": "N'eus pennad ebet en ho roll evezhiañ.",
-       "watchlistanontext": "Ret eo deoc'h $1 evit gwelet pe kemmañ an elfennoù zo en ho roll evezhiañ.",
+       "watchlistanontext": "Ret eo deoc'h kevreañ evit gwelet pe aozañ an elfennoù a zo en ho roll evezhiañ.",
        "watchnologin": "Digevreet",
        "addwatch": "Ouzhpennañ d'ar roll evezhiañ",
        "addedwatchtext": "Ouzh ho [[Special:Watchlist|rollad evezhiañ]] eo bet ouzhpennet ar bajenn \"[[:$1]]\".\nAmañ e vo rollet ar c'hemmoù da zont evit ar bajenn-mañ hag ar bajenn gaozeal stag outi.",
        "autoblockid": "Emstankañ #$1",
        "block": "Stankañ an implijer",
        "unblock": "Distankañ an implijer",
-       "blockip": "Stankañ ur chomlec'h IP",
+       "blockip": "Stankañ an {{GENDER:$1|implijer|implijerez}}",
        "blockip-legend": "Stankañ an implijer",
        "blockiptext": "Grit gant ar furmskrid a-is evit stankañ ar moned skrivañ ouzh ur chomlec'h IP pe un implijer bennak.\nSeurt diarbennoù n'hallont bezañ kemeret nemet evit mirout ouzh ar vandalerezh hag a-du gant an [[{{MediaWiki:Policy-url}}|erbedadennoù ha reolennoù da heuliañ]].\nRoit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou outo).",
        "ipaddressorusername": "Chomlec'h IP pe anv implijer",
        "blockipsuccesstext": "Stanket eo bet [[Special:Contributions/$1|$1]].<br />\nSellit ouzh [[Special:BlockList|roll ar chomlec'hioù IP ha kontoù stanket]] evit gwiriañ ar stankadennoù.",
        "ipb-blockingself": "Emaoc'h war-nes stankañ ac'hanoc'h hoc'h-unan ! Ha sur oc'h eo se a fell deoc'h ober ?",
        "ipb-confirmhideuser": "Emaoc'h war-nes stankañ un implijer ha gweredekaet hoc'h eus \"kuzhat an implijer\". Diverkañ a ra an dra-se anv an implijer en holl rolloù ha monedoù ar marilh.",
+       "ipb-confirmaction": "A'z oc'h sur e fell deoc'h ober an dra-se evit gwir, askit ar vaezienn \"{{int:ipb-confirm}}\" en traoñ.",
        "ipb-edit-dropdown": "Kemmañ an abegoù stankañ",
        "ipb-unblock-addr": "Distankañ $1",
        "ipb-unblock": "Distankañ un implijer pe ur chomlec'h IP",
        "import": "Enporzhiañ pajennoù",
        "importinterwiki": "enporzhiadenn etrewiki",
        "import-interwiki-text": "Diuzit ur wiki hag ur bajenn da enporzhiañ.\nMiret e vo deiziadoù ar stummmoù hag anvioù an aozerien.\nMiret eo an holl enporzhiadennoù etrewiki e-barzh [[Special:Log/import|log an enporzhiadennoù]].",
-       "import-interwiki-source": "wiki ha pajennoù tarzh :",
+       "import-interwiki-sourcewiki": "Wiki mammenn :",
+       "import-interwiki-sourcepage": "Pajenn orin :",
        "import-interwiki-history": "Eilañ holl stummoù istor ar bajenn-mañ",
        "import-interwiki-templates": "Lakaat e-barzh an holl batromoù",
        "import-interwiki-submit": "Enporzhiañ",
        "newimages-summary": "Diskouez a ra ar bajenn dibar-mañ roll ar restroù diwezhañ bet enporzhiet.",
        "newimages-legend": "Sil",
        "newimages-label": "Anv ar restr (pe darn anezhi) :",
+       "newimages-showbots": "Diskouez an ezporzhiadennoù graet gant robotoù",
        "noimages": "Netra da welet.",
        "ilsubmit": "Klask",
        "bydate": "dre an deiziad anezho",
        "watchlistedit-raw-done": "Nevesaet eo bet ho roll evezhiañ.",
        "watchlistedit-raw-added": "Ouzhpennet ez eus bet {{PLURAL:$1|1 pajenn|$1 pajenn}} :",
        "watchlistedit-raw-removed": "Tennet ez eus bet {{PLURAL:$1|1 pajenn|$1 pajenn}} :",
+       "watchlistedit-clear-title": "Roll evezhiañ goulloet",
        "watchlistedit-clear-legend": "Diverkañ ar roll-evezhiañ",
+       "watchlistedit-clear-explain": "Lamet e vo an holl ditloù eus ho roll evezhiañ",
        "watchlistedit-clear-titles": "Titloù :",
+       "watchlistedit-clear-done": "Goulloet eo bet ho roll evezhiañ.",
        "watchlistedit-clear-removed": "Dilamet ez eus bet {{PLURAL:$1|1 titl|$1 a ditloù}} :",
        "watchlistedit-too-many": "Re a bajennoù zo da ziskwel amañ.",
        "watchlisttools-clear": "Diverkañ ar roll-evezhiañ",
index 2795034..d7ada3a 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Imdadb",
-                       "Southparkfan"
+                       "Southparkfan",
+                       "아라"
                ]
        },
        "sunday": "Yakşambe",
        "mytalk": "Kaná ítgap",
        "navigation": "Kasarşoní",
        "qbfind": "Paŧŧa",
-       "vector-action-addsection": "Púskun sarhál",
-       "vector-action-delete": "Mesa",
-       "vector-action-move": "Surif",
-       "vector-action-protect": "Rakk",
-       "vector-view-create": "Biná",
-       "vector-view-edit": "Radbadal",
-       "vector-view-history": "Lekav e ur",
-       "vector-view-view": "Xuán",
-       "vector-view-viewsource": "Bumpad e ur",
        "actions": "Amal ák",
        "namespaces": "Pin-jága ģák",
        "variants": "Badaldroşumk",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) e ur",
        "searchmenu-new": "'''Dá Vikí ŧí \"[[:$1]]\" panna ná biná kar!'''",
        "searchprofile-articles": "Nivişt panna ģák",
-       "searchprofile-project": "Ráhşon o bunkárem panna ģák",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Ar giŕá",
        "searchprofile-advanced": "Xúŕt",
        "searchprofile-articles-tooltip": "$1 ŧí paŧŧa",
-       "searchprofile-project-tooltip": "$1 ŧí paŧŧa",
        "searchprofile-images-tooltip": "Fáil átekin paŧŧpol",
        "searchprofile-everything-tooltip": "Ģuŧŧ nivişt áteŧí paŧŧpol (ítgap ná panna ģáteton avár)",
        "search-result-size": "$1 ({{PLURAL:$2|1 laoz|$2 laoz}})",
        "search-nonefound": "Just aná icc kaŧŧiá allav",
        "powersearch-legend": "Xúŕt paŧŧopol",
        "powersearch-ns": "Pin-jága ģáteŧí paŧŧopol:",
-       "powersearch-redir": "Aŕsoká panna ģátá cirr e nişán et",
        "preferences": "Gicenk",
        "mypreferences": "Kaná gicenk",
        "yourrealname": "Aslí pin",
        "recentchanges-label-minor": "Dá cunko radbadal as e",
        "recentchanges-label-bot": "Dá xudkár asená dú án maroko radbadal as e",
        "rcnotefrom": "Şefko raddobadal ák '''$2''' án maroko ('''$1''' iskán páş o)",
-       "rclistfrom": "$1 án púskuná radbadal áke nişán et",
+       "rclistfrom": "$3 $2 án púskuná radbadal áke nişán et",
        "rcshowhideminor": "Cunká radbadal áte $1",
        "rcshowhidebots": "Boŧ áte $1",
        "rcshowhideliu": "Drustírástí kárband áte $1",
        "upload": "Fáil laggif",
        "uploadlogpage": "Laggifing ná hisáb",
        "filedesc": "Bungapp",
-       "uploadedimage": "\"[[$1]]\" laggifingá",
        "license": "Muxtárnáma",
        "license-header": "Muxtárnáma",
        "file-anchor-link": "Fáil",
        "booksources-go": "Ráím",
        "log": "Lekav",
        "allpages": "Ģuŧŧ panna ģák",
-       "alphaindexline": "$1 án $2 iskán",
        "prevpage": "Mustko panna ($1)",
        "allpagesfrom": "Dáŕaŧ biná maroká panna ģáte nişán et:",
        "allpagesto": "Dáŕaŧ esar maroká panna ģáte nişán et:",
index fac19cc..c9ff9c8 100644 (file)
        "permalink": "Trajni link",
        "print": "Štampa",
        "view": "Pogled",
+       "view-foreign": "Vidi na $1",
        "edit": "Uredi",
+       "edit-local": "Uredi lokalni opis",
        "create": "Napravi",
+       "create-local": "Dodaj lokalni opis",
        "editthispage": "Uredite ovu stranicu",
        "create-this-page": "Napravi ovu stranicu",
        "delete": "Obriši",
        "jumptonavigation": "navigacija",
        "jumptosearch": "traži",
        "view-pool-error": "Žao nam je, serveri su trenutno preopterećeni.\nPreviše korisnika pokušava da pregleda ovu stranicu.\nMolimo pričekajte trenutak prije nego što ponovno pokušate pristupiti ovoj stranici.\n\n$1",
+       "generic-pool-error": "Nažalost, serveri su trenutno preopterećeni.\nPreviše korisnika pokušava da vidi ovaj resurs.\nMolimo pričekajte trenutak prije nego što ponovo pokušate da mu pristupite.",
        "pool-timeout": "Zaustavi čekanje na zaključavanje",
        "pool-queuefull": "Red na pool je prenapunjen",
        "pool-errorunknown": "Nepoznata greška",
        "hidetoc": "sakrij",
        "collapsible-collapse": "sklopi",
        "collapsible-expand": "Proširi",
+       "confirmable-confirm": "Da li {{GENDER:$1|ste}} sigurni?",
+       "confirmable-yes": "Da",
+       "confirmable-no": "Ne",
        "thisisdeleted": "Pogledaj ili vrati $1?",
        "viewdeleted": "Pogledaj $1?",
        "restorelink": "{{PLURAL:$1|$1 izbrisana izmjena|$1 izbrisanih izmjena}}",
        "nospecialpagetext": "<strong>Tražili ste nevaljanu posebnu stranicu.</strong>\n\nSpisak valjanih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Greška",
        "databaseerror": "Greška u bazi",
+       "databaseerror-text": "Došlo je do greške u upitu baze podataka. \nMožda je u pitanju softverska greška.",
+       "databaseerror-textcl": "Došlo je do greške u upitu baze podataka.",
+       "databaseerror-query": "Upit: $1",
        "databaseerror-function": "Funkcija: $1",
        "databaseerror-error": "Greška: $1",
        "laggedslavemode": "'''Upozorenje''': Stranica, možda, nije ažurirana.",
        "invalidtitle-knownnamespace": "Neispravan naslov s imenskim prostorom \"$2\" i tekstom \"$3\"",
        "invalidtitle-unknownnamespace": "Neispravan naslov s imenskim prostorom br. $1 i tekstom \"$2\"",
        "exception-nologin": "Niste prijavljeni",
-       "exception-nologin-text": "[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.",
+       "exception-nologin-text": "Prijavite se da biste pristupili ovoj stranici ili radnji.",
+       "exception-nologin-text-manual": "Molimo $1 da biste pristupili ovoj stranici ili radnji.",
        "virus-badscanner": "Loša konfiguracija: nepoznati anti-virus program: ''$1''",
        "virus-scanfailed": "skeniranje nije uspjelo (code $1)",
        "virus-unknownscanner": "nepoznati anti-virus program:",
        "retypenew": "Unesite ponovo novu šifru:",
        "resetpass_submit": "Odredi šifru i prijavi se",
        "changepassword-success": "Vaša šifra/lozinka je uspiješno promjenjena!",
+       "changepassword-throttled": "Previše puta ste se pokušali prijaviti.\nMolimo Vas da sačekate $1 prije nego što pokušate ponovo.",
        "resetpass_forbidden": "Šifre ne mogu biti promjenjene",
        "resetpass-no-info": "Morate biti prijavljeni da bi ste pristupili ovoj stranici direktno.",
        "resetpass-submit-loggedin": "Promijeni šifru",
        "resetpass-submit-cancel": "Odustani",
        "resetpass-wrong-oldpass": "Privremena ili trenutna šifra nije validna.\nMožda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.",
+       "resetpass-recycled": "Molimo resetirajte vašu lozinku u nešto drugo od vaše trenutne lozinke.",
+       "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz e-pošte.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovdje:",
        "resetpass-temp-password": "Privremena šifra:",
        "resetpass-abort-generic": "Promjenu šifre/lozinke je prekinula ekstenzija.",
+       "resetpass-expired": "Vaša lozinka je istekla. Postavite novu lozinku da biste se prijavili.",
        "passwordreset": "Poništavanje šifre",
        "passwordreset-text-one": "Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.",
        "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku putem e-pošte.}}",
        "changeemail-password": "Tvoja šifra/lozinka za {{SITENAME}}:",
        "changeemail-submit": "Promijeni e-mail",
        "changeemail-cancel": "Otkaži",
+       "resettokens-token-label": "$1 (trenutna vrijednost: $2)",
        "bold_sample": "Podebljan tekst",
        "bold_tip": "Podebljan tekst",
        "italic_sample": "Kurzivan tekst",
        "edit-gone-missing": "Stranica se nije mogla osvježiti.\nIzgleda da je obrisana.",
        "edit-conflict": "Sukob izmjena.",
        "edit-no-change": "Vaša izmjena je ignorirana, jer nije bilo promjena teksta stranice.",
+       "postedit-confirmation-created": "Stranica je napravljena.",
        "postedit-confirmation-saved": "Vaša izmjena je sačuvana.",
        "edit-already-exists": "Stranica nije mogla biti kreirana.\nIzgleda da već postoji.",
        "defaultmessagetext": "Uobičajeni tekst poruke",
        "invalid-content-data": "Nevaljani podaci sadržaja",
        "content-not-allowed-here": "Sadržaj napisan u obliku \"$1\" nije dozvoljen na stranici [[$2]]",
-       "editwarning-warning": "Napuštanje ove stranice može dovesti do gubitka svih promjena koje ste načinili.\nAko ste prijavljeni, možete isključiti ovo upozorenje u Sekciji za \"Uređivanje\" vaših opcija.",
+       "editwarning-warning": "Napuštanje ove stranice može dovesti do gubitka svih promjena koje ste načinili.\nAko ste prijavljeni, možete isključiti ovo upozorenje u Sekciji za \"{{int:prefs-editing}}\" vaših opcija.",
+       "editpage-notsupportedcontentformat-title": "Format sadržaja nije podržan",
        "content-model-wikitext": "wikitekst",
        "content-model-text": "obični tekst",
        "content-model-javascript": "JavaScript",
        "searchprofile-advanced-tooltip": "Traži u ostalim imenskim prostorima",
        "search-result-size": "$1 ({{PLURAL:$2|$2 riječ|$2 riječi}})",
        "search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}} ({{PLURAL:$2|1 podkategorija|$2 podkategorije|$2 podkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
-       "search-result-score": "Relevantnost: $1%",
        "search-redirect": "(preusmjeravanje $1)",
        "search-section": "(sekcija $1)",
        "search-suggest": "Da li ste mislili: $1",
        "prefs-displayrc": "Postavke izgleda",
        "prefs-displaywatchlist": "Postavke izgleda",
        "prefs-diffs": "Razlike",
+       "prefs-help-prefershttps": "Ova podešavanja će stupiti na snagu pri sljedećoj prijavi.",
        "email-address-validity-valid": "Izgleda valjano",
        "email-address-validity-invalid": "Neophodna valjana adresa!",
        "userrights": "Postavke korisničkih prava",
        "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",
-       "userrights-conflict": "Sukob u korisničkim pravima! Molimo pošaljite Vaše promjene ponovno.",
+       "userrights-conflict": "Sukob u izmjeni korisničkih prava! Molimo da razmotrite i potvrdite Vaše promjene.",
        "userrights-removed-self": "Uspješno ste uklonili vlastite prava. Zbog toga više niste u stanju pristupiti ovoj stranici.",
        "group": "Grupa:",
        "group-user": "Korisnici",
        "uploadwarning": "Upozorenje pri slanju",
        "uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.",
        "savefile": "Sačuvaj datoteku",
-       "uploadedimage": "poslato \"[[$1]]\"",
-       "overwroteimage": "postavljena nova verzija datoteke \"[[$1]]\"",
        "uploaddisabled": "Slanje fajlova je isključeno",
        "copyuploaddisabled": "Postavljanje putem URL nije omogućeno.",
        "uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
        "license-nopreview": "(Pregled nije dostupan)",
        "upload_source_url": " (validni, javno dostupni URL)",
        "upload_source_file": " (datoteka na Vašem računaru)",
+       "listfiles-delete": "obriši",
        "listfiles-summary": "Ova posebna stranica prikazuje sve postavljene datoteke.",
        "listfiles_search_for": "Traži medije po imenu:",
        "imgfile": "datoteka",
        "randompage": "Slučajna stranica",
        "randompage-nopages": "Nema stranica u {{PLURAL:$2|slijedećem imenskom prostoru|slijedećim imenskim prostorima}}: \"$1\".",
        "randomincategory": "Slučajna stranica u kategoriji",
-       "randomincategory-selectcategory-submit": "Idi",
+       "randomincategory-nopages": "Nema stranica u kategoriji [[:Category:$1|$1]].",
+       "randomincategory-category": "Kategorija:",
+       "randomincategory-legend": "Slučajna stranica u kategoriji",
        "randomredirect": "Slučajno preusmjerenje",
        "randomredirect-nopages": "Ne postoje preusmjerenja u imenskom prostoru \"$1\".",
        "statistics": "Statistike",
        "protectedpages-expiry": "Istječe",
        "protectedpages-reason": "Razlog",
        "protectedpages-unknown-timestamp": "Nepoznato",
+       "protectedpages-unknown-performer": "Nepoznati korisnik",
        "protectedtitles": "Zaštićeni naslovi",
        "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaštićen ovim parametrima.",
        "listusers": "Spisak korisnika",
        "listgrouprights-removegroup-self": "Može ukloniti {{PLURAL:$2|grupu|grupe|grupa}} sa svog računa: $1",
        "listgrouprights-addgroup-self-all": "Može dodati sve grupe na svoj račun",
        "listgrouprights-removegroup-self-all": "Može ukloniti sve grupe sa svog računa",
+       "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
+       "trackingcategories-nodesc": "Opis nije dostupan.",
        "mailnologin": "Nema adrese za slanje",
        "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]]\ni imati ispravnu adresu e-pošte u vašim [[Special:Preferences|podešavanjima]]\nda biste slali e-poštu drugim korisnicima.",
        "emailuser": "Pošalji e-poštu ovom korisniku",
        "autoblockid": "Automatska blokada #$1",
        "block": "Blokiraj korisnika",
        "unblock": "Odblokiraj korisnika",
-       "blockip": "Blokiraj korisnika",
+       "blockip": "Blokiraj {{GENDER:$1|korisnika|korisnicu}}",
        "blockip-legend": "Blokiranje korisnika",
        "blockiptext": "Upotrebite donji upitnik da biste uklonili prava pisanja sa određene IP adrese ili korisničkog imena.  Ovo bi trebalo da bude urađeno samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. Unesite konkretan razlog ispod (na primjer, navodeći koje stranice su vandalizovane).",
        "ipaddressorusername": "IP adresa ili korisničko ime:",
        "import": "Uvoz stranica",
        "importinterwiki": "Međuwiki uvoz",
        "import-interwiki-text": "Izaberi wiki i naslov stranice za uvoz.\nDatumi revizija i imena autora će biti sačuvani.\nSve akcije pri međuwiki uvozu će biti zapisane u [[Special:Log/import|zapisu uvoza]].",
-       "import-interwiki-source": "Izvorna wiki/stranica:",
        "import-interwiki-history": "Kopiraj sve verzije historije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvoz",
        "version-ext-colheader-license": "Licenca",
        "version-ext-colheader-description": "Opis",
        "version-ext-colheader-credits": "Autori",
+       "version-license-title": "Licenca za $1",
        "version-poweredby-credits": "Ova wiki je zasnovana na '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
        "version-poweredby-others": "ostali",
        "version-credits-summary": "Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Onemogući oznake <nowiki> u rezultatima",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
-       "expand_templates_preview": "Pregled"
+       "expand_templates_preview": "Pregled",
+       "pagelang-name": "Stranica",
+       "pagelang-language": "Jezik",
+       "pagelang-select-lang": "Izaberi jezik"
 }
index 1ca779e..e9b571f 100644 (file)
        "badaccess-groups": "L'acció que heu soŀlicitat es limita als usuaris {{PLURAL:$2|del grup|dels grups}}: $1.",
        "versionrequired": "Cal la versió $1 del MediaWiki",
        "versionrequiredtext": "Cal la versió $1 del MediaWiki per a utilitzar aquesta pàgina. Vegeu [[Special:Version]]",
-       "ok": "OK",
+       "ok": "D’acord",
        "retrievedfrom": "Obtingut de «$1»",
        "youhavenewmessages": "Tens $1 ($2).",
        "youhavenewmessagesfromusers": "Tens $1 {{PLURAL:$3|d'un altre usuari|de $3 usuaris}} ($2).",
        "username": "{{GENDER:$1|Nom d'usuari}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|del grup|dels grups}}:",
        "prefs-registration": "Hora de registre:",
-       "yourrealname": "Nom real *",
+       "yourrealname": "Nom real*:",
        "yourlanguage": "Idioma:",
        "yourvariant": "Variant lingüística:",
        "prefs-help-variant": "La variant lingüística o ortogràfica que preferiu a l'hora de mostrar el contingut d'aquest wiki.",
        "gender-female": "Femení",
        "prefs-help-gender": "Opcional: s'usa perquè el programari se us adreci amb missatges amb el gènere adient. Aquesta informació serà pública.",
        "email": "Correu electrònic",
-       "prefs-help-realname": "* Nom real (opcional): si escolliu donar aquesta informació serà utilitzada per a donar-vos l'atribució de la vostra feina.",
+       "prefs-help-realname": "<nowiki>*</nowiki> Nom real (opcional): si escolliu donar aquesta informació es utilitzarà per a donar-vos l’atribució de la vostra feina.",
        "prefs-help-email": "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas que oblideu l'actual.",
        "prefs-help-email-others": "També podeu optar per deixar que els altres contactin amb vós a través de la pàgina personal de discussió, sense necessitat de desvetllar la vostra identitat.",
        "prefs-help-email-required": "Cal una adreça de correu electrònic.",
        "randomincategory": "Pàgina aleatòria en una categoria",
        "randomincategory-invalidcategory": "«$1» no és un nom de categoria vàlid.",
        "randomincategory-nopages": "No hi ha pàgines a la categoria [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Obté una pàgina a l'atzar de la categoria: $1 $2.",
-       "randomincategory-selectcategory-submit": "Vés-hi",
+       "randomincategory-category": "Categoria:",
+       "randomincategory-legend": "Pàgina a l’atzar en la categoria",
        "randomredirect": "Redirecció a l'atzar",
        "randomredirect-nopages": "No hi ha cap redirecció a l'espai de noms «$1».",
        "statistics": "Estadístiques",
        "delete-legend": "Elimina",
        "historywarning": "'''Atenció:''' La pàgina que esteu a punt d'eliminar té un historial amb $1 {{PLURAL:$1|versió|versions}}, aproximadament:",
        "confirmdeletetext": "Esteu a punt d'esborrar de forma permanent una pàgina o imatge i tot el seu historial de la base de dades.\nConfirmeu que realment ho voleu fer, que enteneu les\nconseqüències, i que el que esteu fent està d'acord amb la [[{{MediaWiki:Policy-url}}|política]] del projecte.",
-       "actioncomplete": "S'ha realitzat l'acció de manera satisfactòria.",
+       "actioncomplete": "Acció realitzada",
        "actionfailed": "L'acció ha fallat",
        "deletedtext": "S'ha suprimit «$1».\nVegeu $2 per a un registre dels esborrats més recents.",
        "dellogpage": "Registre d'eliminació",
        "import": "Importació de pàgines",
        "importinterwiki": "Importa interwiki",
        "import-interwiki-text": "Trieu un web basat en wiki i un títol de pàgina per a importar.\nEs conservaran les dates de les versions i els noms dels editors.\nTotes les accions d'importació interwiki es conserven al [[Special:Log/import|registre d'importacions]].",
-       "import-interwiki-source": "Pàgina/wiki d'origen:",
        "import-interwiki-history": "Copia totes les versions de l'historial d'aquesta pàgina",
        "import-interwiki-templates": "Inclou totes les plantilles",
        "import-interwiki-submit": "Importa",
        "expand_templates_output": "Resultat:",
        "expand_templates_xml_output": "Sortida XML",
        "expand_templates_html_output": "Sortida en HTML sense filtrar",
-       "expand_templates_ok": "OK",
+       "expand_templates_ok": "D’acord",
        "expand_templates_remove_comments": "Elimina els comentaris",
        "expand_templates_remove_nowiki": "Suprimeix l'etiqueta <nowiki> en el resultat",
        "expand_templates_generate_xml": "Mostra l'arbre XML",
index e5f06a4..9398d45 100644 (file)
        "tog-underline": "下劃綫鏈接",
        "tog-hideminor": "藏起最近改變其過要修改",
        "tog-hidepatrolled": "藏起最近改變其巡邏修改",
+       "tog-extendwatchlist": "敆擴展監視單單臺中顯示所有其更改,伓啻最近其更改",
        "tog-numberheadings": "自動編號其標題",
+       "tog-showtoolbar": "顯示編輯工具欄",
        "tog-editondblclick": "雙擊就修改頁面",
+       "tog-editsectiononrightclick": "啟用右擊標題編輯段落",
        "tog-watchcreations": "加添我開其頁面共我上傳其文件遘我其監視單",
        "tog-watchdefault": "添加我編輯其頁面共文件遘我其監視單",
        "tog-watchmoves": "添加我移動其頁面共文件遘我其監視單",
        "category-empty": "''茲類別下底現在無文章也無媒體。''",
        "hidden-categories": "{{PLURAL:$1}}乞藏起其類別",
        "hidden-category-category": "已經藏起其類別",
+       "category-subcat-count": "{{PLURAL:$2|茲萆分類僅包括下底蜀萆子分類|茲分類有 {{PLURAL:$1|子分類|$1 萆子分類}},總計 $2 萆。}}",
        "category-subcat-count-limited": "茲蜀萆類別下底有子類別{{PLURAL:$1}}",
        "category-article-count": "{{PLURAL:$2|茲蜀萆類別儷有下底蜀頁。|共總有$2頁,下底其茲$1頁敆茲蜀萆類別𡅏。}}",
        "category-article-count-limited": "下底$1頁敆茲蜀萆類別𡅏{{PLURAL:$1}}",
        "history_short": "歷史",
        "updatedmarker": "趁我最後蜀回訪問開始更新",
        "printableversion": "會拍印其版本",
-       "permalink": "固定链接",
+       "permalink": "永久鏈接",
        "print": "拍印",
        "view": "覷蜀覷",
        "edit": "修改",
        "otherlanguages": "其它其語言",
        "redirectedfrom": "(由$1重定向過來)",
        "redirectpagesub": "重定向頁",
-       "lastmodifiedat": "茲頁面是著$2, $1時候修改其。",
+       "lastmodifiedat": "茲蜀頁是着$1 $2其辰候最後修改其。",
        "viewcount": "茲蜀頁已經乞訪問$1回了。{{PLURAL:$1}}",
        "protectedpage": "保護頁",
        "jumpto": "跳遘:",
        "badaccess": "權限錯誤",
        "badaccess-group0": "汝𣍐使做汝要求其茲蜀萆動作。",
        "badaccess-groups": "汝要求其動作著$2底裏用戶才會做其:$1{{PLURAL:$1}}",
-       "versionrequired": "需要版本$1其媒體維基",
-       "versionrequiredtext": "需要媒體維基其版本$1來使茲蜀頁。\n覷[[Special:Version|版本頁面]]。",
+       "versionrequired": "需要版本$1其MediaWiki",
+       "versionrequiredtext": "需要MediaWiki其版本$1來使茲蜀頁。\n覷[[Special:Version|版本頁面]]。",
        "ok": "好",
        "retrievedfrom": "趁「$1」退過來",
        "youhavenewmessages": "汝有$1($2)。",
        "toc": "目錄",
        "showtoc": "顯示",
        "hidetoc": "藏起",
-       "collapsible-collapse": "崩潰",
-       "collapsible-expand": "擴展",
+       "collapsible-collapse": "",
+       "collapsible-expand": "",
        "thisisdeleted": "卜看或者恢復$1?",
        "viewdeleted": "看$1?",
        "restorelink": "$1萆乞刪掉其修改{{PLURAL:$1}}",
        "nosuchspecialpage": "無總款其特殊頁",
        "nospecialpagetext": "<strong>汝請求蜀萆𣍐合法其特殊頁面。</strong>\n\n合法其特殊頁面清單會使敆[[Special:SpecialPages|{{int:特殊頁面}}]]頁面討著",
        "error": "鄭咯",
-       "databaseerror": "數據庫有",
+       "databaseerror": "數據庫有",
        "laggedslavemode": "'''警告:'''頁面可能無最近其更新。",
        "readonly": "數據庫乞鎖起咯",
        "readonlytext": "Só-gé̤ṳ-kó cī-buàng ké̤ṳk nè̤ng sō̤ kī lāu, mâ̤-sāi siā sĭng dèu-mĕ̤k hĕ̤k có̤ siŭ-gāi, ô kō̤-nèng sê ôi-lāu nĭk-siòng mì-hô, cĭ-hâiu cêu â̤ ciáng-siòng.\n\nSō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1",
        "badtitle": "獃其標題",
        "perfcached": "下底其數據乞緩存固加可能伓是最新其。{{PLURAL:$1|$1條結果}}會敆緩存臺中討著。",
        "perfcachedts": "下底其數據已經緩存過了,最後更新遘$1。{{PLURAL:$4|$4條結果}}會敆緩存臺中討著。",
-       "querypage-no-updates": "茲蜀頁其更新乞禁止了。\n數據塊現刻時𣍐更新了。",
+       "querypage-no-updates": "茲蜀頁其更新乞禁止了。\n數據塊現刻時𣍐更新了。",
        "viewsource": "看源代碼",
        "viewsource-title": "覷蜀覷$1其源代碼",
        "actionthrottled": "行動乞取消咯",
        "protectedpagetext": "茲頁已經乞保護起咯,𣍐使修改或者其它行動。",
        "viewsourcetext": "汝會使看共複製茲蜀頁其源代碼:",
        "viewyourtext": "汝會使覷蜀覷或者複製茲頁'''汝其修改'''其源代碼:",
-       "editinginterface": "'''警告:'''汝敆𡅏修改其頁面廮𡅏提供茲蜀萆軟件其界面文本。\n茲蜀頁其改變會影響遘其它用戶其用戶界面其顯示。\n如果蔔想修改維基其翻譯,起動遘媒體維基本地化計劃[//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]。",
+       "editinginterface": "'''警告:'''汝敆𡅏修改其頁面廮𡅏提供茲蜀萆軟件其界面文本。\n茲蜀頁其改變會影響遘其它用戶其用戶界面其顯示。\n如果卜想修改維基其翻譯,起動遘MediaWiki本地化計劃[//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]。",
        "namespaceprotected": "汝𣍐使修改敆'''$1'''命名空間其頁面。",
        "customcssprotected": "汝𣍐使修改茲蜀萆CSS頁面,因為伊有別蜀隻用戶其設定。",
        "customjsprotected": "汝𣍐使修改茲蜀萆JavaScript頁面,因為伊有別蜀隻用戶其設定。",
        "userlogin-signwithsecure": "使安全其連接",
        "yourdomainname": "汝其域名:",
        "password-change-forbidden": "汝𣍐使敆茲蜀萆維基百科𡅏修改密碼。",
-       "externaldberror": "可能是驗證數據庫咯,或者是汝𣍐使升級汝其外部賬戶。",
+       "externaldberror": "可能是驗證數據庫咯,或者是汝𣍐使升級汝其外部賬戶。",
        "login": "躒底",
        "nav-login-createaccount": "躒底/開賬戶",
        "userlogin": "躒底/開賬戶",
        "gotaccountlink": "躒底",
        "userlogin-resetlink": "躒底其資料𣍐記咯?",
        "userlogin-resetpassword-link": "密码𣍐記?",
+       "userlogin-helplink2": "對手汝躒底",
        "createacct-emailrequired": "電子郵件地址",
        "createacct-emailoptional": "電子郵件地址(愛寫就寫)",
        "createacct-email-ph": "輸底汝其電子郵件地址",
        "passwordtooshort": "密碼著設最少{{PLURAL:$1|$1萆字符}}。",
        "password-name-match": "汝其密碼硬著共汝其用戶名𣍐蜀様才會使其。",
        "password-login-forbidden": "茲蜀萆用戶名共密碼應經乞禁止去了。",
-       "mailmypassword": "共新密碼發遘電子郵件",
+       "mailmypassword": "重新設置密碼",
        "passwordremindertitle": "{{SITENAME}}其新其臨時密碼",
        "passwordsent": "新密碼已經寄遘「$1」註冊其電子郵件地址了。\n收遘後,請再躒底蜀頭部。",
        "mailerror": "發電子郵件有賺:$1",
        "resetpass-submit-cancel": "取消",
        "resetpass-temp-password": "臨時密碼:",
        "passwordreset": "重置密碼",
+       "passwordreset-text-one": "完成者隻表單,通過電子郵件發送臨時密碼來重新設定汝其密碼。",
        "passwordreset-legend": "重置密碼",
        "passwordreset-username": "用戶名:",
        "passwordreset-domain": "域名:",
        "prefs-personal": "用戶資料",
        "prefs-rc": "這般其改變",
        "prefs-watchlist": "監視單",
+       "prefs-watchlist-days": "監視單單臺中顯示其天數",
+       "prefs-watchlist-edits": "敆擴展監視其單單臺中顯示其更改其最大數目:",
        "prefs-misc": "其它",
        "saveprefs": "保存",
+       "prefs-editing": "編輯",
+       "rows": "行數:",
        "searchresultshead": "尋討",
        "recentchangescount": "這般改變其條目:",
        "savedprefs": "汝其設定已經乞保存了。",
        "yournick": "新其簽名:",
        "email": "電子郵件",
        "prefs-help-email": "電子郵件地址是愛寫就寫其,但是如果汝𣍐記密碼咯,密碼重置其時候需要茲。",
+       "prefs-help-email-others": "汝也會使選擇讓其他其用戶通過汝其用戶頁面或者討論頁面懸頂其鏈接,使電子郵件來聯繫汝。其他其用戶聯繫汝其辰候,汝其電子郵件地址𣍐顯示出來。",
        "editusergroup": "修改用戶組",
        "group": "組:",
        "group-bot": "機器人",
        "rclinks": "顯示$2日以內產生其$1回改變<br />$3",
        "diff": "差",
        "hist": "史",
-       "hide": "藏起",
-       "show": "顯示",
+       "hide": "",
+       "show": "",
        "minoreditletter": "~",
        "newpageletter": "!",
        "boteditletter": "^",
        "sp-contributions-search": "尋討貢獻",
        "sp-contributions-username": "IP地址或者用戶名:",
        "sp-contributions-submit": "尋討",
-       "whatlinkshere": "什乇鏈遘嚽塊",
+       "whatlinkshere": "甚乇鏈遘租塊",
        "whatlinkshere-title": "鏈接遘$1其頁面",
        "whatlinkshere-page": "頁面:",
        "linkshere": "下底其頁面鏈接遘'''[[:$1]]''':",
        "block-log-flags-nocreate": "防止開賬戶",
        "ipb_expiry_invalid": "過期時間無效。",
        "ipb_already_blocked": "「$1」已經乞封鎖了",
-       "lockconfirm": "正,我卜想鎖定數據庫。",
+       "lockconfirm": "正,我卜想鎖定數據庫。",
        "lockbtn": "鎖定數據庫",
        "unlockbtn": "開數據庫",
        "lockdbsuccesssub": "數據庫鎖定好了",
        "allmessagesname": "名",
        "allmessagesdefault": "默認其消息文字",
        "allmessagescurrent": "現時其文字",
-       "allmessagestext": "茲是敆媒體維基命名空間底裏系統消息其蜀萆單單。\n如果汝卜想貢獻通用其媒體維基本地化服務,請訪問[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation 媒體維基本地化]共[//translatewiki.net translatewiki.net]。",
+       "allmessagestext": "茲是敆MediaWiki命名空間裏勢系統消息其蜀萆單單。\n如果汝卜想貢獻通用其MediaWiki基本地化服務,起動汝訪問[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki本地化]共[//translatewiki.net translatewiki.net]。",
        "allmessagesnotsupportedDB": "茲蜀頁𣍐使其,因為'''$wgUseDatabaseMessages'''已經乞禁止去了。",
        "thumbnail-more": "放大",
        "tooltip-pt-userpage": "汝其用戶頁",
        "tooltip-pt-mytalk": "汝其討論頁",
        "tooltip-pt-preferences": "汝其設定",
+       "tooltip-pt-watchlist": "汝監視其頁面有改過其單單",
+       "tooltip-pt-mycontris": "汝其貢獻其單單",
        "tooltip-pt-login": "希望汝躒底其;當然,無逼汝總款做。",
        "tooltip-pt-logout": "躒出",
        "tooltip-ca-talk": "茲蜀頁其討論",
        "tooltip-ca-edit": "汝會使修改茲蜀頁。起動敆保存以前使預覽按鈕",
        "tooltip-ca-addsection": "開始蜀萆新其部分",
        "tooltip-ca-viewsource": "茲蜀頁乞保護起去。\n汝會使看伊其源代碼。",
+       "tooltip-ca-history": "覷茲頁舊底其版本",
        "tooltip-ca-protect": "保護茲蜀頁",
        "tooltip-ca-delete": "刪掉茲蜀頁",
        "tooltip-ca-move": "移動茲蜀頁",
        "tooltip-n-mainpage-description": "覷蜀覷頭頁",
        "tooltip-n-recentchanges": "維基百科最近其改變其單單",
        "tooltip-n-randompage": "隨便罔看",
-       "tooltip-t-whatlinkshere": "鏈遘嚽塊其所有維基頁面其單單",
+       "tooltip-t-whatlinkshere": "鏈遘租塊其所有維基頁面其單單",
+       "tooltip-t-recentchangeslinked": "鏈遘茲頁其頁面其最近修改",
        "tooltip-t-contributions": "茲蜀用戶其貢獻單單",
        "tooltip-t-emailuser": "共茲蜀隻用戶發電子郵件",
        "tooltip-t-upload": "上傳文件",
        "tooltip-t-specialpages": "特殊頁其單單",
        "tooltip-t-print": "茲蜀頁其會拍印其版本",
+       "tooltip-t-permalink": "茲頁茲版本其永久鏈接",
        "tooltip-ca-nstab-main": "看蜀看內容頁",
        "tooltip-ca-nstab-user": "覷蜀覷用戶頁",
        "tooltip-ca-nstab-special": "茲是蜀萆特殊頁,汝𣍐使修改茲蜀頁。",
index 9a443dc..cad5a9b 100644 (file)
        "aboutpage": "Project:Цуьнах лаьцна",
        "copyright": "Чулацам лело мега $1 лицензица (кхениг билгалйина яцахь).",
        "copyrightpage": "{{ns:project}}:Авторан бакъонаш",
-       "currentevents": "ХӀинцлера хилларш",
-       "currentevents-url": "Project:ХӀинцлера хилларш",
-       "disclaimers": "Бехк тӀе ца эцар",
-       "disclaimerpage": "Project:Бяхк тӀецалацар",
+       "currentevents": "Ð¥Ó\80инÑ\86алеÑ\80а Ñ\85иллаÑ\80Ñ\88",
+       "currentevents-url": "Project:Ð¥Ó\80инÑ\86алеÑ\80а Ñ\85иллаÑ\80Ñ\88",
+       "disclaimers": "Бехк тӀецалацар",
+       "disclaimerpage": "Project:Бехк тӀецалацар",
        "edithelp": "ГӀо оцу тадарна",
        "mainpage": "Коьрта агӀо",
        "mainpage-description": "Коьрта агӀо",
        "databaseerror-error": "ГӀалат: $1",
        "laggedslavemode": "Тергам бе: агӀона чохь керла йаьхинарш ца хила мега.",
        "readonly": "Блоктоьхна дӀайаздар хаамийн бухе",
-       "enterlockreason": "Билгал де блоктохаран бахьна а и чекх йолу хан а.",
+       "enterlockreason": "Билгалде блоктохаран бахьна а и чекх йолу хан а.",
        "readonlytext": "АгӀонаш тӀетохар а кхин хийцамаш барна а блоктоьхна:\nБлокоьхначо биттина хаам: $1.",
        "missing-article": "ХӀокху чохь кароезаш йолу хьан дехарца йозан агӀонаш цакарийна «$1» $2.\n\nИштнарг наггахь хуьлу хьажораг дӀаяьккхина елахь я хийцам бина тиша хьажорагца дехьа гӀо гӀоьртича.\n\nНагахьсан гӀулкх цуьнах доьзна дацахь, хьуна карийна гӀирс латточехь гӀалат.\nДехар до, хаам бе оцуьнах [[Special:ListUsers/sysop|куьйгалхога]], гойтуш URL.",
        "missingarticle-rev": "(верси № $1)",
        "userlogin-yourpassword-ph": "Язъе хьай пароль",
        "createacct-yourpassword-ph": "Язъе пароль",
        "yourpasswordagain": "Юха язъе пароль:",
-       "createacct-yourpasswordagain": "Бакъ йе пароль",
+       "createacct-yourpasswordagain": "Бакъе пароль",
        "createacct-yourpasswordagain-ph": "Кхин цкъа язъе пароль",
        "remembermypassword": "Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|дийнахь}})",
        "userlogin-remembermypassword": "Дагахь латт ве/е со",
        "missing-revision": "АгӀона «{{FULLPAGENAME}}» верси $1 яц.\n\nИшта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.\nМа-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.",
        "userpage-userdoesnotexist": "Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.",
        "userpage-userdoesnotexist-view": "«$1» ишта декъашхочун дӀаяздар дац.",
-       "blocked-notice-logextract": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
+       "blocked-notice-logextract": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
        "clearyourcache": "'''Билгалдаккхар.''' Ӏалашйинчул тӀехьа хийцамаш га браузеран кэш цӀанъян езаш хила мега.\n* '''Firefox / Safari:''' ''Shift'' цӀе йолу пиллиг лаьцна битна, гӀирсийн панелан тӀера тӀетаӀе ''Карлаяккха'' я ''Ctrl-F5'' я ''Ctrl-R'' (''⌘-R'' Mac тӀехь)\n* '''Google Chrome:''' ТӀетаӀе ''Ctrl-Shift-R'' (''⌘-Shift-R'' Mac тӀехь)\n* '''Internet Explorer:''' ''Ctrl'' лаьцна йитан, тӀетаӀе ''Карлаяккха'' я тӀетаӀе ''Ctrl-F5''\n* '''Opera:''' Кэш цӀанъяр харжа меню ''Инструменты → Настройки'' чохь",
        "usercssyoucanpreview": "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла CSS-файл Ӏалаш яле.",
        "userjsyoucanpreview": "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла JS-файл Ӏалаш яле.",
        "last": "хьалх.",
        "page_first": "хьалхара",
        "page_last": "тlаьххьара",
-       "histlegend": "Кхетор: (хlинцлера.) — йолучу башхон къастам; (хьалх.) — хьалхлерачу башхон къастам; '''ж''' — жимо бозалца болу хийцам.",
+       "histlegend": "Кхетор: (хӀинцалера.) — йолучу башхон къастам; (хьалх.) — хьалхлерачу башхон къастам; '''ж''' — жимо бозалца болу хийцам.",
        "history-fieldset-title": "АгӀона хийцамаш",
        "history-show-deleted": "ДӀаяхинарш",
        "histfirst": "ширниш",
        "revdelete-nooldid-text": "Ахьа хӀара функци кхочушъян билгалйина яц Ӏалашонан верси (я версеш).",
        "revdelete-no-file": "Иштта файл яц.",
        "revdelete-show-file-confirm": "Бакъалла лаьий хьуна дӀаяьккхина файлан версега хьажа «<nowiki>$1</nowiki>» $2 тӀера, $3?",
-       "revdelete-show-file-submit": "Хlаъ",
+       "revdelete-show-file-submit": "ХӀаъ",
        "revdelete-selected-text": "{{PLURAL:$1|Файлан хаьржина верси|Файлан хаьржина версеш}} [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Файлан хаьржина верси|Файлан хаьржина версеш}} [[:$2]]:",
        "logdelete-selected": "Тептар чура {{PLURAL:$1|хаьржина дӀаяздар|хаьржина дӀаяздарш}}:",
        "shown-title": "АгӀона чохь $1 {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}} гайта",
        "viewprevnext": "Хьажа ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
-       "searchmenu-new": "'''Кхолла ишта агӀо «[[:$1]]» хӀокху {{PLURAL:$2|0=|вики-проектехь.}}'''",
+       "searchmenu-new": "<strong>Кхолла «[[:$1]]» агӀо хӀокху вики-проектехь!</strong>\n{{PLURAL:$2|0=|Хьан лахарца карина.}}",
        "searchprofile-articles": "Къаьстина агlонаш",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Массанхьа",
        "prefs-watchlist": "Тергаме могӀам",
        "prefs-watchlist-days": "Денойн дукхалла:",
        "prefs-watchlist-days-max": "Къезиг $1 {{PLURAL:$1|дена}}",
-       "prefs-watchlist-edits": "Тергаме могӀам чохь гойтучу нисдаршан максимальни дукхалла:",
+       "prefs-watchlist-edits": "Тергаме могӀам чохь гойтучу нисдарийн максимальни дукхалла:",
        "prefs-watchlist-edits-max": "Уггар дукха: 1000",
        "prefs-watchlist-token": "Тергаме могӀанан токен:",
        "prefs-misc": "Кхин гlирсаш",
        "stub-threshold-disabled": "ДӀадайина",
        "recentchangesdays": "Керла нисдар гайта динахь:",
        "recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
-       "recentchangescount": "Iад йитарца гойтуш долу нисдаршан дукхалла",
+       "recentchangescount": "Iад йитарца гойтуш долу нисдарийн дукхалла",
        "prefs-help-recentchangescount": "Гойту керла нисдарш, агӀонашан истори, тептарш.",
        "prefs-help-watchlist-token2": "Иза хьан тергаме могӀан къайла догӀа ду.\nМуьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].",
        "savedprefs": "Хьан гӀирс Ӏалашбина.",
        "userrights-nologin": "Куьйгалхочунна бакъо йолу [[Special:UserLogin|дӀаяздарца]] ло декъашхочун бакъо.",
        "userrights-notallowed": "Хьан дӀаяздарца магийна дац декъашхошна бакъо яла а дӀаяккха а.",
        "userrights-changeable-col": "Хьона хийца луш йолу бакъонаш",
-       "userrights-unchangeable-col": "Хьона хийца луш йоцу бакъонаш",
+       "userrights-unchangeable-col": "Хьуна хийца луш йоцу бакъонаш",
        "group": "Тоба:",
        "group-user": "Декъашхой",
        "group-autoconfirmed": "Ша тӀелаьцболу декъашхой",
        "right-editmyprivateinfo": "Хьан долара хаамаш нисбар (масала, электронан адрес, бакъ цӀе)",
        "right-editmyoptions": "Тае хьайн гӀоли хетарг",
        "right-rollback": "билгала агӀона тӀехьарчу декъашхочо дина нисдарш сиха юхадахар",
-       "right-markbotedits": "юхудохучу нисдаршан шаболх бечунна нисдарш аьлла билгало ян",
+       "right-markbotedits": "юхудохучу нисдарийн ботан нисдарш санна билгало ян",
        "right-noratelimit": "чехкалин доза дац",
        "right-import": "кхечу википедешкара агӀонаш импорт ян",
        "right-importupload": "файлаш чуяхарца агӀонаш импорт ян",
        "recentchanges-label-plusminus": "байташкахь барам хийцар",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])",
        "rcnotefrom": "Лахахь гайтина тӀера <strong>$2</strong> (хийцамаш <strong>$1</strong> кӀезиг).",
-       "rclistfrom": "Гайта хийцам оцу $3 $2",
+       "rclistfrom": "Гайта хийцам $3 $2 хан",
        "rcshowhideminor": "$1 кегийра нисдарш",
        "rcshowhideminor-show": "Гайта",
        "rcshowhideminor-hide": "Къайладаха",
        "rcshowhidemine": "$1 айхьа нисдинарш",
        "rcshowhidemine-show": "Гайта",
        "rcshowhidemine-hide": "Къайладаха",
-       "rclinks": "Гайта тlаьхьара $1 хийцамаш оцу $2 ден<br />$3",
+       "rclinks": "Гайта тӀаьхьара $1 хийцамаш $2 ден<br />$3",
        "diff": "тейп тайпнара",
        "hist": "истори",
        "hide": "Къайлаяккха",
        "file-deleted-duplicate": "Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.",
        "uploadwarning": "Дlахьедар",
        "uploadwarning-text": "Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.",
-       "savefile": "ДӀаязе йе файл",
+       "savefile": "ДӀаязъе файл",
        "uploaddisabled": "Чуяккхар магийна дац",
        "copyuploaddisabled": "URL тӀера чуяккхар дӀадайина ду.",
        "uploaddisabledtext": "Файлаш чуяхар дӀадайина ду.",
        "randompage": "Цахууш нисъелла агӀо",
        "randomincategory": "Категори чу цахууш нисъелла  агӀо",
        "randomincategory-nopages": "[[:Category:$1]] категори чохь агӀонаш яц.",
-       "randomincategory-selectcategory": "Категори чу цахууш нийса елла агӀона чу гӀо: $1 $2.",
-       "randomincategory-selectcategory-submit": "Дехьа гӀо",
+       "randomincategory-category": "Категори:",
+       "randomincategory-legend": "Категори чу цахууш нисъелла  агӀо",
        "randomredirect": "Цахууш нисделла дIасахьажор",
        "randomredirect-nopages": "«$1» цӀерийн меттиган чохь дӀасахьажораш яц.",
        "statistics": "Статистика",
        "statistics-pages-desc": "Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.",
        "statistics-files": "Чуяьхна файлаш",
        "statistics-edits": "Нисдаран дукхалла {{grammar:genitive|{{SITENAME}}}} дlа йолайаларца",
-       "statistics-edits-average": "ЮккÑ\8aеÑ\80а Ð°Ð³Ó\80онан Ð½Ð¸Ñ\81даÑ\80ан Ñ\82еÑ\80аÑ\85Ñ\8c",
+       "statistics-edits-average": "Ð\90гÓ\80онан Ð½Ð¸Ñ\81даÑ\80ийн Ñ\8eкÑ\8aаÑ\80а Ð´Ñ\83кÑ\85алла",
        "statistics-views-total": "Массо хьажарш",
        "statistics-views-total-desc": "Ма лара дӀаяьхна а белхан а агӀонашка хьажар",
        "statistics-views-peredit": "Нисдаре хьажарш",
        "nbytes": "$1 {{PLURAL:$1|байт}}",
        "ncategories": "$1 {{PLURAL:$1|категори|категореш}}",
        "ninterwikis": "$1 {{PLURAL:$1|1=юкъарвики-хьажораг|юкъарвики-хьажоргаш}}",
-       "nlinks": "$1 {{PLURAL:$1|1=хьажораг|хьажоргаш}}",
+       "nlinks": "$1 {{PLURAL:$1|хьажорг}}",
        "nmembers": "$1 {{PLURAL:$1|хӀума|хӀумнаш}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|хӀума|хӀумнаш}}",
        "nrevisions": "$1 {{PLURAL:$1|верси|версеш}}",
        "usercreated": "{{GENDER:$3|дӀавазвелла|дӀаязелла}} $1 $2",
        "newpages": "Керла агӀонаш",
        "newpages-username": "Декъашхо:",
-       "ancientpages": "ЯззамаÑ\88 Ð¾Ñ\86Ñ\83 Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а Ñ\82Ó\80аÑ\8cÑ\85Ñ\85Ñ\8cаÑ\80а Ñ\82адаÑ\80 Ð´Ð¸Ð½Ð° Ð´Ð¾Ð»Ñ\83",
+       "ancientpages": "ТÓ\80еÑ\85Ñ\8cаÑ\80а Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а Ñ\82адаÑ\80 Ð´Ð¸Ð½Ð° Ñ\8fззамаÑ\88",
        "move": "ЦӀе хийца",
        "movethispage": "ХӀокху агӀон цӀе хийца",
        "unusedimagestext": "Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.",
        "watchlist-options": "Тергаме могlаман гlирс нисбар",
        "watching": "Тергаме мlогаман юкъаяккха…",
        "unwatching": "Тергаме могӀанан чура дӀаяккхар…",
-       "enotif_reset": "Билгал йаь ерриге агӀонаш хьаьжна санна",
+       "enotif_reset": "Билгалъе ерриге агӀонаш хьаьжна санна",
        "enotif_impersonal_salutation": "Декъашхо {{grammar:genitive|{{SITENAME}}}}",
        "enotif_subject_deleted": "Проектан «{{SITENAME}}» агӀо «$1» {{gender:$2|декъашхочо}} $2 дӀаяьккхина",
        "enotif_subject_created": "Проектан «{{SITENAME}}» агӀо «$1» {{gender:$2|декъашхочо}} $2 кхоьллина",
        "exbeforeblank": "чуьраниг дlацlанйале хьалха: «$1»",
        "delete-confirm": "$1 — дӀаяккхар",
        "delete-legend": "ДӀаяккхар",
-       "historywarning": "'''Тергам:''' хӀокху агӀона герггарчу хьесапехь $1 {{PLURAL:$1|версеш|верси|верси}} ю:",
+       "historywarning": "<strong>Тергам бе:</strong> Хьо дӀаяккха гӀертачу агӀона, нисдарийн истори ю, $1 {{PLURAL:$1|верси}} йолуш:",
        "confirmdeletetext": "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
        "actioncomplete": "Дешдерг кхочушдина",
        "actionfailed": "Кхочушъ дина дац",
        "protect_expiry_old": "Хан чаккхе — хьалхалера.",
        "protect-unchain-permissions": "Схьабелла кхин гӀорралин гӀирс",
        "protect-text": "Кхузéхь хьо хьажало хийцалуш гӀароллин локхалла оцу агӀонашна '''$1'''.",
-       "protect-locked-access": "Хьан дlаязваларéхь тоъал бакъо яц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху хlоттийнарш оцу агlонна '''$1''':",
+       "protect-locked-access": "Хьан дӀаяздаран тоъал бакъо яц гӀароллийн локхаллéхь агӀон хийцам бá. ДӀадоьлху хӀоттийнарш агӀонна '''$1''':",
        "protect-cascadeon": "Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|1=лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.",
        "protect-default": "Гlаролла йоцуш",
        "protect-fallback": "Бакъо оьшу «$1»",
        "protect-othertime-op": "кхин хан",
        "protect-otherreason": "Кхин бахьна/тӀетохар:",
        "protect-otherreason-op": "Кхин бахьна",
-       "protect-dropdown": "* ГӀоралла дарна баьхьаш \n** сих-сиха зулам дар \n** дуккха спам хилар\n** нисдаршан тӀом \n** гӀараялл агӀо",
+       "protect-dropdown": "* ГӀоралла дарна баьхьаш \n** сих-сиха зулам дар \n** дуккха спам хилар\n** нисдарийн тӀом \n** гӀараялл агӀо",
        "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,цlкъа:infinite",
        "restriction-type": "Бакъонаш:",
        "undelete-error": "АгӀо меттахӀоттаяран гӀалат",
        "undelete-error-short": "Файл меттахӀоттаяран гӀалат: $1",
        "undelete-error-long": "Файл меттахӀоттош гӀалат даьлла:\n\n$1",
-       "undelete-show-file-submit": "Хlаъ",
+       "undelete-show-file-submit": "ХӀаъ",
        "namespace": "Цlерийн ана:",
        "invert": "Хаьржинарг къайлаяккха",
        "tooltip-invert": "ХӀоттае хӀара билгало, хаьржинчу цӀерийн меттиган агӀонашан хийцамаш къайлабаха (кхин дихкина цӀерийн меттигаш, гайтина елахь)",
        "contributions-title": "{{GENDER:$1|Декъашхочун}} къинхьегам $1",
        "mycontris": "Сан къинхьегам",
        "contribsub2": "Къинхьегам $1 ($2)",
-       "contributions-userdoesnotexist": "«$1» Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ð´Ó\80аÑ\8fздаÑ\80 Ð´Ó\80аÑ\8fздина Ñ\8fц.",
+       "contributions-userdoesnotexist": "«$1» Ð¸Ñ\88Ñ\82а Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ð´Ó\80аÑ\8fздаÑ\80 Ð´Ð°ц.",
        "nocontribs": "Дехарца хийцамаш цакарий.",
        "uctop": "(карара)",
-       "month": "Ð\91аÑ\82Ñ\82аÑ\86а (я хьалхе):",
+       "month": "Ð\91аÑ\82Ñ\82аÑ\87оÑ\85Ñ\8c (я хьалхе):",
        "year": "Шерачохь (я хьалхе):",
        "sp-contributions-newbies": "Гайта бекъ къинхьегам, керла дlабазбиначара бина болу",
        "sp-contributions-newbies-sub": "Керла декъашхойн дӀаяздаршкара",
        "sp-contributions-logs": "тéптарш",
        "sp-contributions-talk": "дийцаре",
        "sp-contributions-userrights": "декъашхочун бакъона урхалладар",
-       "sp-contributions-blocked-notice": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
-       "sp-contributions-blocked-notice-anon": "ХӀара IP-адрес хӀинца блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
+       "sp-contributions-blocked-notice": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
+       "sp-contributions-blocked-notice-anon": "ХӀара IP-адрес хӀинца блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
        "sp-contributions-search": "Къинхьегам лахар",
        "sp-contributions-username": "IP-адрес я декъашхочун цӀе:",
        "sp-contributions-toponly": "ТӀаьхьара бина хийцамаш гайта",
        "whatlinkshere-links": "← хьажоргаш",
        "whatlinkshere-hideredirs": "$1 дӀасахьажорш",
        "whatlinkshere-hidetrans": "$1 латораш",
-       "whatlinkshere-hidelinks": "$1 хьажоргаш",
+       "whatlinkshere-hidelinks": "$1 хьажорг",
        "whatlinkshere-hideimages": "$1 файлийн хьажоргаш",
        "whatlinkshere-filters": "Литтарш",
        "autoblockid": "Ша блоккхетар #$1",
        "block": "Декъашхочун блоктохар",
        "unblock": "ДекъашхонтӀера блокдӀаякхар",
-       "blockip": "Блоктоха",
+       "blockip": "Блоктоха {{GENDER:$1|декъашхочун}}",
        "blockip-legend": "Декъашхочун блоктохар",
        "blockiptext": "Бухахь йолу форманца блоктоха IP-адресна цунтӏера дӏаяздарш ца дайта.\nБлоктоха магийна цо зенаш деш делахь кхин хӏокху [[{{MediaWiki:Policy-url}}|низам ца]].\nЛахахь билгалде блоктохарна бахьна.",
        "ipaddressorusername": "IP-адрес я декъашхочун цӀе:",
        "ipb-unblock-addr": "ДӀаякхаблок $1",
        "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера",
        "ipb-blocklist": "Блоктоьхнарш",
-       "ipb-blocklist-contribs": "Декъашхочун къинхьегам $1",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}} къинхьегам",
        "unblockip": "ДӀаякхаблок декъашхонтӀера",
        "unblockiptext": "Лелае лахара форма IP-адрес тӀера я декъашхойн дӀаяздар тӀера блокдӀайокхуш.",
        "ipusubmit": "ДIаяккха хӀара блок",
        "blocklist": "Блоктоьхна декъашхой",
        "ipblocklist": "Блоктоьхна декъашхой",
        "ipblocklist-legend": "Блоктоьхна декъашхо лахар",
-       "blocklist-userblocks": "ДӀахьулян дӀаяздаршан блоктохарш",
+       "blocklist-userblocks": "ДӀахьулян дӀаяздарийн блоктохарш",
        "blocklist-tempblocks": "ДӀахьулян цхьан ханна йолу блоктохарш",
        "blocklist-addressblocks": "ДӀахулдан цхьайолу IP адресан блоктохарш",
        "blocklist-rangeblocks": "ДӀахьулян блоктоьхна йолу диапазонаш",
        "noautoblockblock": "ша блоктухарг дӏаяйина",
        "createaccountblock": "цамагдо керла дӀаяздарш кхоллар",
        "emailblock": "цамаго кехаташ кхехӀита",
-       "blocklist-nousertalk": "шин дийцаре агӀо тая лууш дац",
+       "blocklist-nousertalk": "шин дийцаре агӀо таян луш дац",
        "ipblocklist-empty": "Блоктохаран могӀам баьсса бу.",
        "ipblocklist-no-results": "И адрес блоктоьхна дац.",
        "blocklink": "блоктоха",
        "block-log-flags-nocreate": "цамагдо керла дӏаяздарш кхоллар",
        "block-log-flags-noautoblock": "ша блоктухарг дӏаяйина",
        "block-log-flags-noemail": "цамаго кехаташ кхехӀита",
-       "block-log-flags-nousertalk": "шин дийцаре агӀо тая лууш дац",
+       "block-log-flags-nousertalk": "шин дийцаре агӀо таян луш дац",
        "block-log-flags-angry-autoblock": "латина шуьйра автоблоктохар",
        "block-log-flags-hiddenname": "декъашхочун цӀе къайлаяьккхина",
        "range_block_disabled": "Куьйгалхошна диапазонашна блоктоха цамага до.",
        "revertmove": "юхаяккха",
        "delete_and_move": "Цle а хуьйцуш дӀаяккха",
        "delete_and_move_text": "== ДӀаяккха хьокъ ю ==\nИ цӀе йолу аг1о «[[:$1]]» йолуш ю. \nЛаьий хьуна и дӀаяккха, цӀе хийца таро хилийта?",
-       "delete_and_move_confirm": "Хlаъ, дӀаяккха хlара агlо",
+       "delete_and_move_confirm": "ХӀаъ, дӀаяккха хӀара агӀо",
        "delete_and_move_reason": "ДӀаяьккхина цӀе хийца я таро хилийта  «[[$1]]»",
        "selfmove": "АгӀона цӏе хийца йиш яц: и цӏе хӏокху агӏона йолуш ю.",
        "immobile-source-page": "ХӀокху агӏона цӏе хийца йиш яц.",
        "thumbnail_image-missing": "$1 файл йоцчух тера ду",
        "import": "АгӀонаш чуяхар",
        "importinterwiki": "Викиюкъахь-импорт",
-       "import-interwiki-source": "Вики-хьост/агlо:",
+       "import-interwiki-sourcepage": "ДӀайолалун агӀо:",
        "import-interwiki-history": "ХӀокху агӀона ерриг хийцаман истори копи ян",
        "import-interwiki-templates": "Юкъайихка массо кепаш",
        "import-interwiki-submit": "Импорт ян",
        "exif-licenseurl": "Авторийн лицензин URL",
        "exif-morepermissionsurl": "Альтернативан лицензин хаам",
        "exif-pngfilecomment": "PNG-файлан билгалдаккхар",
-       "exif-disclaimer": "Бехк тӀе ца эцар",
+       "exif-disclaimer": "Бехк тӀецалацар",
        "exif-contentwarning": "Чулацамах лаьцна дӀахьедар",
        "exif-giffilecomment": "GIF-файлан билгалдаккхар",
        "exif-intellectualgenre": "ХӀуман тайп",
index 803e6f0..84c6ea2 100644 (file)
        "talkpagelinktext": "Hisgot",
        "specialpage": "Espesyal nga panid",
        "personaltools": "Personal nga galamiton",
-       "postcomment": "Pagbilin og komento",
        "articlepage": "Tan-awa ang panid sa sulod",
        "talk": "Panaghisgot-hisgot",
        "views": "Mga pagtan-aw",
        "externaldberror": "May nahitabong authentication database error o kaha wala ka tugoti nga mag-update sa imong eksternal nga akawnt.",
        "login": "Sulod",
        "nav-login-createaccount": "Rehistro / Dayon",
-       "loginprompt": "Kinahanglang naka-enable ang mga koki aron ikaw maka-log-in sa {{SITENAME}}.",
        "userlogin": "Rehistro / Dayon",
        "logout": "Biya",
        "userlogout": "Bıveciye",
        "recentchangeslinked-to": "Ipakita na lang ang mga pag-usab sa mga panid nga nakasumpay sa nahatag nga panid",
        "upload": "Pagsumiter og payl",
        "uploadlogpage": "Log sa upload",
-       "uploadedimage": "na-upload ang \"[[$1]]\"",
        "license": "Paglilisensya:",
        "license-header": "Paglilisensya",
        "file-anchor-link": "Payl",
index 96b48e0..6a2eddc 100644 (file)
        "talkpagelinktext": "Kuentusi",
        "specialpage": "Påhina espesiat",
        "personaltools": "Ramientan petsonat",
-       "postcomment": "Fa'tinas un komentu",
        "articlepage": "Atan i guinaha i påhina",
        "talk": "Diskuti",
        "views": "Mali'e'-ña",
        "yourdomainname": "Lugat-mu:",
        "login": "Log in",
        "nav-login-createaccount": "Hålom / fa'tinas kuenta-mu",
-       "loginprompt": "Un nesita muna'sedi cookies para un log in gi {{SITENAME}}.",
        "userlogin": "Hålom / fa'tinas kuenta-mu",
        "logout": "Log out",
        "userlogout": "Log out",
        "nextn": "{{PLURAL:$1|$1}} ni manmamaila'",
        "viewprevnext": "Atan i ($1 {{int:pipe-separator}} $2) ($3)",
        "search-result-size": "$1 ({{PLURAL:$2|1 na palabra|$2 na palabra siha}})",
-       "search-result-score": "Prinisisu: $1%",
        "search-redirect": "(na'dirihi $1)",
        "search-section": "(påtte $1)",
        "search-suggest": "Kao kumekeilek-mu: $1",
        "upload": "Na'kåtga hulu' i atkibu",
        "uploadbtn": "Na'kåtga hulu' atkibu",
        "uploadlogpage": "Na'kåtga i log",
-       "uploadedimage": "mana'kåtga hulu' \"[[$1]]\"",
        "listfiles": "Listan atkibu",
        "file-anchor-link": "Atkibu",
        "filehist": "Historian atkibu",
index 284f7c4..0c468b5 100644 (file)
        "morenotlisted": "ئەم لیستەیە تەواو نییە",
        "mypage": "پەڕه‌",
        "mytalk": "لێدوان",
-       "anontalk": "Ù\88تÙ\88Ù\88Û\8eÚ\98 Ø¨Û\86 Ø¦Û\95Ù\85 Ø¦Ø§Û\8câ\80\8cÙ¾Û\8c یە",
+       "anontalk": "Ù\84Û\8eدÙ\88اÙ\86 Ø¨Û\86 Ø¦Û\95Ù\85 Ø¦Ø§Û\8cÙ¾Û\8cیە",
        "navigation": "ڕێدۆزی",
        "and": "&#32;و",
        "qbfind": "بدۆزەرەوە",
        "undo-success": "دەکرێ دەستکاریەکە پووچەڵبکرێتەوە.\nتکایە چاو لەو هەڵسەنگاندنەی خوارەوە بکە تا دڵنیا بیت ئەمە ئەوەیە کە‌ دەتویست بیکەی و دواتر گۆڕانکارییەکانی خوارەوە پاشەکەوت بکە بۆ تەواوکردنی پووچەڵکردنەوەکە.",
        "undo-failure": "لەبەر کێشەی دەست‌تێ‌وەردان، ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەیت.",
        "undo-norev": "ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەی لەبەر ئەوەی بوونی نیە یا سڕدراوەتەوە.",
-       "undo-summary": "Ú¯Û\95Ú\95اÙ\86دÙ\86Û\95Ù\88Û\95Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95Û\8c $1 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[Special:Contributions/$2|$2]] ([[User talk:$2|Ù\88تÙ\88Ù\88Û\8eÚ\98]])",
+       "undo-summary": "Ú¯Û\95Ú\95اÙ\86دÙ\86Û\95Ù\88Û\95Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95Û\8c $1 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[Special:Contributions/$2|$2]] ([[User talk:$2|Ù\84Û\8eدÙ\88اÙ\86]])",
        "cantcreateaccounttitle": "ناتوانرێت هەژمار دروست بکرێت",
        "cantcreateaccount-text": "درووست‌کردنی هەژمارە بۆ ناونیشانی ئای‌پی ('''$1''') لە لایەن [[User:$3|$3]] داخراوە.<br /><br />\n$3 هۆکاری \"$2\" خستوەتەڕوو",
        "viewpagelogs": "لۆگەکانی ئەم پەڕەیە ببینە",
        "currentrev": "دوایین پێداچوونەوە",
        "currentrev-asof": "دوایین پێداچوونەوەی $1",
        "revisionasof": "وەک پێداچوونەوەی $1",
-       "revision-info": "پێداچوونەوی $1 لە لایەن $2",
+       "revision-info": "پێداچوونەوی $1 لە لایەن {{GENDER:$6|$2}}$7",
        "previousrevision": "→پیاچوونەوەی کۆنتر",
        "nextrevision": "پێداچوونەوەی نوێتر←",
        "currentrevisionlink": "پێداچوونەوەی ئێستا",
        "powersearch-togglelabel": "تاوتوێ بکە:",
        "powersearch-toggleall": "ھەموو",
        "powersearch-togglenone": "ھیچیان",
+       "powersearch-remember": "ھەڵبژاردەکانت بۆ گەڕانەکانی تر لە بیر بێت",
        "search-external": "گەڕانی دەرەکی",
        "searchdisabled": "گەڕانی {{SITENAME}} ئێستە کار ناکات.\nدەتوانی بۆ ئێستا لە گەڕانی گووگڵ کەڵک وەرگری.\nلەیادت بێت لەوانەیە پێرستەکانیان بۆ گەڕانی ناو {{SITENAME}}، کات‌بەسەرچوو بێت.",
        "preferences": "ھەڵبژاردەکان",
        "default": "بنچینەیی",
        "prefs-files": "پەڕگەکان",
        "prefs-custom-css": "CSSی دڵخواز",
-       "prefs-custom-js": "JSی دڵخواز",
+       "prefs-custom-js": "جاڤاسکریپتی دڵخواز",
        "prefs-common-css-js": "سی‌ئێس‌ئێس/جاڤاسکریپتی ھاوبەش بۆ گشت پێستەکان:",
        "prefs-reset-intro": "دەتوانی لەم لاپەڕە بۆ گەڕانەوەی هەڵبژاردەکانت بۆ بنچینەیی ماڵپەر کەڵک وەرگریت.\nگەر ئەوە بکەی ئیتر گۆڕانەکەت ناگەڕێتەوە.",
        "prefs-emailconfirm-label": "پشتڕاستکردنەوەی ئیمەیل:",
        "unusedtemplateswlh": "بەستەرەکانی تر",
        "randompage": "پەڕەیەک بە هەڵکەوت",
        "randompage-nopages": "هیچ لاپەڕەیەک لەم {{PLURAL:$2|ناوبۆشاییەدا|ناوبۆشاییانەدا}} نیە: $1.",
-       "randomincategory-selectcategory-submit": "بڕۆ",
        "randomredirect": "ڕەوانەکەری ھەرمەکی",
        "randomredirect-nopages": "لە ناوبۆشایی \"$1\" هیچ ڕەوانکەرێک نییە.",
        "statistics": "ئامارەکان",
        "rollbacklinkcount-morethan": "گەڕاندنەوەی زۆرتر لە $1 {{PLURAL:$1|دەستکاری}}",
        "rollbackfailed": "گەڕاندنەوە سەرکەوتوو نەبوو",
        "cantrollback": "دەستکاریەکان ناگەڕێندرێتەوە؛\nدوایین هاوبەش تەنها ڕێکخەری ئەم لاپەڕەیە.",
-       "alreadyrolled": "دÙ\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\95کاÙ\86Û\8c Ù\84Û\95سÛ\95ر [[:$1]] Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[User:$2|$2]] Ù\86اگÛ\95Ú\95Û\8eÙ\86درÛ\8eÙ\86Û\95Ù\88Û\95 ([[User talk:$2|Ù\88تÙ\88Ù\88Û\8eÚ\98]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])Ø\9b Ú©Û\95سÛ\8eÚ©Û\8c Ø¯Û\8cÚ©Û\95 Ù\84Û\95 Ù¾Û\8eØ´â\80\8cدا Ø¯Û\95ستکارÛ\8c Ú©Ø±Ø¯Ù\88Ù\88Û\95 Û\8cاÙ\86 Ú¯Û\95Ú\95اÙ\86دÙ\88Ù\88Û\8cÛ\95تÛ\95Ù\88Û\95.\n\nدÙ\88اÛ\8cÛ\8cÙ\86 Ø¯Û\95ستکارÛ\8c Ø¦Û\95Ù\85 Ù\84اپÛ\95Ú\95Û\95 [[User:$3|$3]] Ú©Ø±Ø¯Ù\88Ù\88Û\8cÛ\95 ([[User talk:$3|Ù\88تÙ\88Ù\88Û\8eÚ\98]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+       "alreadyrolled": "دÙ\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\8cÛ\95کاÙ\86 Ù\84Û\95سÛ\95ر [[:$1]] Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[User:$2|$2]] Ù\86اگÛ\95Ú\95Û\8eÙ\86درÛ\8eÙ\86Û\95Ù\88Û\95 ([[User talk:$2|Ù\84Û\8eدÙ\88اÙ\86]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])Ø\9b Ú©Û\95سÛ\8eÚ©Û\8c ØªØ± Ù\84Û\95 Ù¾Û\8eشدا Ø¯Û\95ستکارÛ\8cÛ\8c Ú©Ø±Ø¯Ù\88Ù\88Û\95 Û\8cاÙ\86 Ú¯Û\95Ú\95اÙ\86دÙ\88Ù\88Û\8cÛ\95تÛ\95Ù\88Û\95.\n\nدÙ\88اÛ\8cÛ\8cÙ\86 Ø¯Û\95ستکارÛ\8c Ø¦Û\95Ù\85 Ù¾Û\95Ú\95Û\95 [[User:$3|$3]] Ú©Ø±Ø¯Ù\88Ù\88Û\8cÛ\95 ([[User talk:$3|Ù\84Û\8eدÙ\88اÙ\86]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "پوختەی دەستکاری \"''$1''\" بوو.",
        "revertpage": "گەڕاندنەوەی دەستکارییەکانی [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]]) بۆ دوایین پێداچوونەوەی [[User:$1|$1]]",
        "revertpage-nouser": "دەستکارییەکانی بەکارھێنەرێکی شاڕدراوە بۆ دوایین پێداچوونەوەی {{GENDER:$1|[[User:$1|$1]]}} گەڕێنرایەوە.",
        "noautoblockblock": "بەربەستنی خۆگەڕ ناچالاکە",
        "createaccountblock": "دروستکردنی ھەژمار ناچالاکە",
        "emailblock": "ئیمەیل ناچالاکە",
-       "blocklist-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی خۆی ناچالاکە",
+       "blocklist-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی خۆی ناچالاکە",
        "ipblocklist-empty": "لیستی بەربەستەکان بەتاڵە",
        "ipblocklist-no-results": "ئای‌پی ئەدرەس یان ناوی‌ بەکارهێنەری داواکراو بەربەست نەکراوە.",
        "blocklink": "بەربەستن",
        "block-log-flags-nocreate": "دروستکردنی ھەژمار ناچالاک کرا",
        "block-log-flags-noautoblock": "بەربەستنی خۆگەڕ ناچالاک کرا",
        "block-log-flags-noemail": "ئیمەیل ناچالاک کرا",
-       "block-log-flags-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی خۆی ناچالاک کرا",
+       "block-log-flags-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی خۆی ناچالاک کرا",
        "block-log-flags-angry-autoblock": "بەربەستکردنی خۆگەڕی پێشکەوتوو چالاک کرا",
        "block-log-flags-hiddenname": "ناوی بەکارھێنەری شاراوە",
        "range_block_disabled": "تایبەتمەندی بەڕێوەبەر بۆ بەربەست‌کردنی زنجیرە لە کارخستراوە.",
        "movepagetext-noredirectfixer": "بەکارھێنانی ئەم فۆرمەی خوارەوە ناوی پەڕەیەک دەگۆڕێت، بە گواستنەوەی ھەموو مێژووەکەی بۆ ناوی نوێ.\nناوە کۆنەکە دەبێتە پەڕەیەکی ڕەوانەکردنەوە بۆ ناوە نوێکە.\nدڵنیا بە کە [[Special:DoubleRedirects|دووجار ڕەوانەکراوەکان]] یان [[Special:BrokenRedirects|ڕەوانەکراوە شکاوەکان]] تاقی بکەیتەوە.\nتۆ بەرپرسیاری لەوەی کە دڵنیا ببیتەوە بەستەرەکان ھەر پێوەندییان ھەیە بەو شوێنە کە چاوەڕوان دەکرێت.\n\nدەبێت بزانی کە پەڕەکە '''ناگوازرێتەوە''' ئەگەر پێشتر پەڕەیەک بە ناوە نوێکەوە ھەبێت، مەگەر ئەوەی کە پەڕەکە واڵا یان ڕەوانەکراوەیەک بێت و ھیچ مێژووی گۆڕاندنی پێشووی نەبێت.\nئەمە بەو واتایە کە ئەگەر ھەڵەیەک بکەی دەتوانی ناوی پەڕەکە دیسانەوە بگۆڕی بۆ ناوی پێشووی، و ناتوانی بیخەیتە جێگەی پەڕەیەک کە ھەنووکە ھەیە.\n\n'''ھۆشیار بە!'''\nئەمە دەتوانێت گۆڕانێکی زۆر نابەجێ و چاوەڕێنەکراو بێت بۆ پەڕەیەکی بەناوبانگ؛\nتکایە پێش گۆڕینی ناو باش بیر لە ئاکامەکەی بکەوە.",
        "movepagetalktext": "پەڕەی وتووێژی پەیوەندیداری بە شێوەی خۆکار لەگەڵیدا دەگوازرێتەوە، '''مەگەر:'''\n* پەڕەیەکی وتووێژی ناواڵا پێشتر ھەبێت لە ژێر ناوە نوێکەدا، یان\n* ئەو چوارچێوەی خوارەوە لێنەدراو بکەی.\n\nلەو حاڵەتەدا، ئەگەر بتەوێت بیگوازیتەوە ناچار دەبیت بە شێوەی دەستی بیگوازیتەوە یان تێکەڵیان بکەی.",
        "movearticle": "ئەم پەڕەیە بگوازەوە:",
+       "movecategorypage-warning": "<strong>ھۆشدار:</strong> تۆ خەریکی گواستنەوەی پەڕەی پۆلی. تکایە ئەمە لەبەرچاو بگرە تەنیا پەڕەکە دەگوازرێتەوە و پەڕەکانی ناو پۆلە کۆنەکە <em>ناچێتە</em> ناو پۆلە نوێکەوە.",
        "movenologintext": "بۆ گواستنەوەی پەڕەیەک، ئەشێ ببی بە ئەندام و [[Special:UserLogin|لە ژوورەوە]] بیت.",
        "movenotallowed": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکان.",
        "movenotallowedfile": "ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی پەڕگەکان.",
        "movepage-moved-noredirect": "لە دانانی ڕەوانەکەر بەرگری کرا.",
        "articleexists": "پەڕەیەک بەم ناوە ھەیە یان ئەو ناوەی تۆ ھەڵتبژاردووە ڕێگەی پێنەدراوە.\nتکایە ناوێکی دیکە ھەڵبژێرە.",
        "cantmove-titleprotected": "ناتوانی لاپەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، لەبەر ئەوەی سەردێڕی نوێ لە درووست‌کردن پارێزراوە.",
-       "movetalk": "Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی پەیوەندیدار بگوازەوە",
+       "movetalk": "Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی پەیوەندیدار بگوازەوە",
        "move-subpages": "ژێرپەڕەکانی بگوازەوە (ھەتا $1 پەڕە)",
-       "move-talk-subpages": "Ú\98Û\8eرپÛ\95Ú\95Û\95کاÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98 بگوازەوە (ھەتا $1 پەڕە)",
+       "move-talk-subpages": "Ú\98Û\8eرپÛ\95Ú\95Û\95کاÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86 بگوازەوە (ھەتا $1 پەڕە)",
        "movepage-page-exists": "پەڕەی $1 هەیە و ناتوانرێت خۆکار بخرێتە جێی.",
        "movepage-page-moved": "پەڕەی $1 گۆزرایەوە بۆ $2.",
        "movepage-page-unmoved": "ناکرێ پەڕەی $1 بگوێزرێتەوە بۆ $2.",
        "import": "ھاوردنی پەڕەکان",
        "importinterwiki": "ھاوردنی ناووویکی",
        "import-interwiki-text": "بۆ ھاوردن، ویکییەک و سەردێڕێکی پەڕە ھەڵبژێرە.\nڕێکەوتەکانی پێداچوونەوە و ناوی دەستکاریکەرەکان دەپارێزرێت.\nهەموو کردەوەکانی ھاوردنی ناوویکی لە [[Special:Log/import|لۆگی ھاوردن]]دا تۆمار دەکرێت.",
-       "import-interwiki-source": "ویکی/پەڕەی سەرچاوە:",
+       "import-interwiki-sourcewiki": "ویکی سەرچاوە:",
+       "import-interwiki-sourcepage": "پەڕەی سەرچاوە:",
        "import-interwiki-history": "هەموو مێژووی پێداچوونەوەکانی ئەم پەڕەیە کۆپی بکە",
        "import-interwiki-templates": "ھەموو داڕێژەکان لەخۆبگرێتەوە",
        "import-interwiki-submit": "هاوردە بکە",
index 1cbf870..01fe0c0 100644 (file)
        "talkpagelinktext": "discussione",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti persunali",
-       "postcomment": "Nova sezione",
        "articlepage": "Vede l'articulu",
        "talk": "Discussione",
        "toolbox": "Stuvigli",
index 18ff1d5..a878acd 100644 (file)
        "talkpagelinktext": "Istoryahanay",
        "specialpage": "Pinasahi nga pahina",
        "personaltools": "Mga pangkaugalingon nga galamiton",
-       "postcomment": "Bag-o nga seksyon",
        "articlepage": "Ipakita ang pahina sang ka-undan",
        "talk": "Diskusyon",
        "views": "Mga dagway",
        "yourdomainname": "Imo domain:",
        "login": "Mag sulod",
        "nav-login-createaccount": "Magsulod / mag-ubra sang account",
-       "loginprompt": "Dapat nakabukas ang cookies para makasulod sa {{SITENAME}}.",
        "userlogin": "Mag sulod / mag-ubra account",
        "userloginnocreate": "Magsulod",
        "logout": "Maggwa",
        "upload": "Magkarga sang akta",
        "uploadlogpage": "Lista sang upload",
        "filedesc": "Kasumahan",
-       "uploadedimage": "na-upload ang \"[[$1]]\"",
        "license": "Paglaong:",
        "file-anchor-link": "Akta",
        "filehist": "Kasaysayan sang akta",
index 2a38313..bc24170 100644 (file)
        "talkpagelinktext": "Музакере",
        "specialpage": "Махсус Саифе",
        "personaltools": "Шахсий алетлер",
-       "postcomment": "Янъы болюк",
        "articlepage": "Саифеге бар",
        "talk": "Музакере",
        "views": "Корюнишлер",
        "externaldberror": "Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.",
        "login": "Кириш",
        "nav-login-createaccount": "Кириш / Къайд олув",
-       "loginprompt": "Отурым ачмакъ ичюн «cookies»ге изин бермелисинъиз.",
        "userlogin": "Кириш / Къайд олув",
        "userloginnocreate": "Кириш",
        "logout": "Чыкъыш",
        "searchprofile-everything-tooltip": "Бутюн саифелерде (музакере саифелеринде де) къыдыр",
        "searchprofile-advanced-tooltip": "Бельгиленген исим фезаларында къыдыр",
        "search-result-size": "$1 ({{PLURAL:$2|1=1|$2}} сёз)",
-       "search-result-score": "Уйгъунлыкъ: $1 %",
        "search-redirect": "(ёллама $1)",
        "search-section": "(болюк $1)",
        "search-suggest": "Бунымы демеге истединъиз: $1",
        "file-exists-duplicate": "Бу файл ашагъыдаки {{PLURAL:$1|1=файлнынъ|файлларнынъ}} дубликаты ола:",
        "uploadwarning": "Тенби",
        "savefile": "Файлны сакъла",
-       "uploadedimage": "Юкленген: \"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" янъы версиясы юкленди",
        "uploaddisabled": "Юклеме ясакълыдыр.",
        "uploaddisabledtext": "Файл юклеме ясакълыдыр.",
        "uploadscripted": "Бу файлда браузер тарафындан янълышнен ишленип олур HTML коду я да скрипт бар.",
        "watchlist-details": "Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.",
        "wlheader-enotif": "E-mail иле хабер берюв ачылды.",
        "wlheader-showupdated": "Сонъки зияретинъизден сонъ денъиштирильген саифелер '''къалын арифлернен''' косьтерильди.",
+       "wlnote": "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|1=саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|1=денъиштирме|'''$1''' денъиштирме}} косьтериле.",
        "wlshowlast": "Сонъки $1 саат ичюн, $2 кунь ичюн я да $3 косьтер",
        "watchlist-options": "Козетюв джедвели сазламалары",
        "watching": "Козетюв джедвелине кирсетильмекте...",
index 82e3a05..1e10057 100644 (file)
        "talkpagelinktext": "Muzakere",
        "specialpage": "Mahsus Saife",
        "personaltools": "Şahsiy aletler",
-       "postcomment": "Yañı bölük",
        "articlepage": "Saifege bar",
        "talk": "Muzakere",
        "views": "Körünişler",
        "externaldberror": "Saytqa kirgende bir hata oldı. Bu tış esabıñıznı deñiştirmek aqqıñız olmağanından sebep meydanğa kelip ola.",
        "login": "Kiriş",
        "nav-login-createaccount": "Kiriş / Qayd oluv",
-       "loginprompt": "Oturım açmaq içün \"cookies\"ge izin bermelisiñiz.",
        "userlogin": "Kiriş / Qayd oluv",
        "userloginnocreate": "Kiriş",
        "logout": "Çıqış",
        "searchprofile-everything-tooltip": "Bütün saifelerde (muzakere saifelerinde de) qıdır",
        "searchprofile-advanced-tooltip": "Belgilengen isim fezalarında qıdır",
        "search-result-size": "$1 ({{PLURAL:$2|1|$2}} söz)",
-       "search-result-score": "Uyğunlıq: $1%",
        "search-redirect": "(yollama $1)",
        "search-section": "(bölük $1)",
        "search-suggest": "Bunımı demege istediñiz: $1",
        "file-exists-duplicate": "Bu fayl aşağıdaki {{PLURAL:$1|faylnıñ|fayllarnıñ}} dublikatı ola:",
        "uploadwarning": "Tenbi",
        "savefile": "Faylnı saqla",
-       "uploadedimage": "Yüklengen: \"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" yañı versiyası yüklendi",
        "uploaddisabled": "Yükleme yasaqlıdır.",
        "uploaddisabledtext": "Fayl yükleme yasaqlıdır.",
        "uploadscripted": "Bu faylda brauzer tarafından yañlışnen işlenip olur HTML kodu ya da skript bar.",
        "watchlist-details": "Muzakere saifelerini esapqa almayıp, közetüv cedveliñizde {{PLURAL:$1|1|$1}} saife bar.",
        "wlheader-enotif": "E-mail ile haber berüv açıldı.",
        "wlheader-showupdated": "Soñki ziyaretiñizden soñ deñiştirilgen saifeler '''qalın ariflernen''' kösterildi.",
+       "wlnote": "Aşağıda saat $3, $4 içün soñki {{PLURAL:$2|saat|'''$2''' saat}} içinde yapılğan soñki {{PLURAL:$1|deñiştirme|'''$1''' deñiştirme}} kösterile.",
        "wlshowlast": "Soñki $1 saat içün, $2 kün içün ya da $3 köster",
        "watchlist-options": "Közetüv cedveli sazlamaları",
        "watching": "Közetüv cedveline kirsetilmekte...",
index 8e52268..37b969e 100644 (file)
        "hidetoc": "skrýt",
        "collapsible-collapse": "Sbalit",
        "collapsible-expand": "Rozbalit",
+       "confirmable-confirm": "Jste si {{GENDER:$1|jist|jista|jisti}}?",
+       "confirmable-yes": "Ano",
+       "confirmable-no": "Ne",
        "thisisdeleted": "Prohlédnout nebo obnovit $1?",
        "viewdeleted": "Zobrazit $1?",
        "restorelink": "{{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}",
        "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": "Pro přístup na tuto stránku nebo k této akci se prosím [[Special:Userlogin|přihlaste]].",
+       "exception-nologin-text": "Pro přístup na tuto stránku nebo k této akci se musíte přihlásit.",
        "exception-nologin-text-manual": "Pro přístup na tuto stránku nebo k této akci se musíte $1.",
        "virus-badscanner": "Špatná konfigurace: neznámý antivirový program: ''$1''",
        "virus-scanfailed": "prověřování selhalo (kód $1)",
        "parser-template-recursion-depth-warning": "Překročen limit hloubky rekurzivního vkládání šablon ($1)",
        "language-converter-depth-warning": "Překročen limit vnoření u jazykové konverze ($1)",
        "node-count-exceeded-category": "Stránky překračující počet uzlů",
-       "node-count-exceeded-category-desc": "Kategorie pro stránky, kde je překročen počet uzlů.",
+       "node-count-exceeded-category-desc": "Tato stránka překračuje maximální počet uzlů.",
        "node-count-exceeded-warning": "Stránka překročila počet uzlů",
        "expansion-depth-exceeded-category": "Stránky překračující hloubku expanze",
-       "expansion-depth-exceeded-category-desc": "Toto je kategorie pro stránky, ve kterých je překročena hloubka expanze.",
+       "expansion-depth-exceeded-category-desc": "Stránka překročila maximální hloubku expanze.",
        "expansion-depth-exceeded-warning": "Stránka překročila hloubku expanze",
        "parser-unstrip-loop-warning": "Detekováno zacyklení unstrip",
        "parser-unstrip-recursion-limit": "Překročen limit rekurze unstrip ($1)",
        "preferences": "Nastavení",
        "mypreferences": "Nastavení",
        "prefs-edits": "Počet editací:",
-       "prefsnologintext2": "Pro změnu uživatelských nastavení se musíte $1.",
+       "prefsnologintext2": "Pro změnu uživatelských nastavení se musíte přihlásit.",
        "prefs-skin": "Vzhled",
        "skin-preview": "Náhled",
        "datedefault": "Implicitní",
        "prefs-namespaces": "Jmenné prostory",
        "default": "implicitní",
        "prefs-files": "Soubory",
-       "prefs-custom-css": "Vlastní CSS",
-       "prefs-custom-js": "Vlastní JS",
-       "prefs-common-css-js": "Sdílené CSS/JS pro všechny styly:",
+       "prefs-custom-css": "Uživatelské CSS",
+       "prefs-custom-js": "Uživatelský JavaScript",
+       "prefs-common-css-js": "Sdílené CSS/JavaScript pro všechny styly:",
        "prefs-reset-intro": "Pomocí této stránky můžete všechna nastavení vrátit na implicitní hodnoty.\nTuto operaci nelze vrátit zpět.",
        "prefs-emailconfirm-label": "Ověření e-mailu:",
        "youremail": "E-mail:",
        "randomincategory": "Náhodná stránka z kategorie",
        "randomincategory-invalidcategory": "„$1“ není platný název kategorie.",
        "randomincategory-nopages": "V [[:Category:$1|kategorii $1]] žádné stránky nejsou.",
-       "randomincategory-selectcategory": "Získat náhodnou stránku z kategorie: $1 $2",
-       "randomincategory-selectcategory-submit": "Přejít",
+       "randomincategory-category": "Kategorie:",
+       "randomincategory-legend": "Náhodná stránka v kategorii",
        "randomredirect": "Náhodné přesměrování",
        "randomredirect-nopages": "Ve jmenném prostoru „$1“ nejsou žádná přesměrování.",
        "statistics": "Statistika",
        "trackingcategories-desc": "Kritéria pro vložení do kategorie",
        "noindex-category-desc": "Stránka není indexována roboty, protože obsahuje kouzelné slovo <code><nowiki>__NOINDEX__</nowiki></code> a je ve jmenném prostoru, ve kterém je tento příznak dovolen.",
        "index-category-desc": "Stránka obsahuje kouzelné slovo <code><nowiki>__INDEX__</nowiki></code> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže je indexována roboty, přestože by normálně nebyla.",
-       "post-expand-template-inclusion-category-desc": "Po rozbalení všech šablon je stránka větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
-       "post-expand-template-argument-category-desc": "Po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> je stránka větší než <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Na stránce je použito příliš mnoho náročných funkcí syntaktického analyzátoru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Kategorie přidaná pokud stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
-       "hidden-category-category-desc": "Toto je kategorie, která obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
+       "post-expand-template-inclusion-category-desc": "Stránka je po rozbalení všech šablon větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
+       "post-expand-template-argument-category-desc": "Stránka je po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> větší než <code>$wgMaxArticleSize</code>.",
+       "expensive-parserfunction-category-desc": "Stránka používá příliš mnoho náročných funkcí syntaktického analyzátoru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
+       "hidden-category-category-desc": "Kategorie ve svém textu obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
        "trackingcategories-nodesc": "Popis není k dispozici.",
        "trackingcategories-disabled": "Kategorie je vypnuta",
        "mailnologin": "Bez odesílací adresy",
        "mywatchlist": "Sledované stránky",
        "watchlistfor2": "{{GENDER:$1|Uživatele|Uživatelky|Uživatele}} $1 $2",
        "nowatchlist": "Na svém seznamu sledovaných stránek nemáte žádné položky.",
-       "watchlistanontext": "Pro prohlížení či úpravu seznamu sledovaných stránek se musíte $1.",
+       "watchlistanontext": "Pro prohlížení či úpravu seznamu sledovaných stránek se musíte přihlásit.",
        "watchnologin": "Nejste přihlášen(a)",
        "addwatch": "Přidat do sledovaných stránek",
        "addedwatchtext": "Stránka „[[:$1]]“ byla přidána mezi stránky, které sledujete.\nVe [[Special:Watchlist|sledovaných stránkách]] se tak budou objevovat budoucí změny této stránky a přidružené diskuse.",
        "exbeforeblank": "obsah před vyprázdněním byl: „$1“",
        "delete-confirm": "Smazání stránky „$1“",
        "delete-legend": "Smazat",
-       "historywarning": "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{PLURAL:$1|revizí|revizemi}}:",
+       "historywarning": "<strong>Varování:</strong> Stránka, kterou se chystáte smazat, má historii s $1 {{PLURAL:$1|revizí|revizemi}}:",
        "confirmdeletetext": "Chystáte se smazat stránku s celou její historií. Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].",
        "actioncomplete": "Provedeno",
        "actionfailed": "Operace se nezdařila",
        "delete-edit-reasonlist": "Editovat důvody smazání",
        "delete-toobig": "Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.",
        "delete-warning-toobig": "Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.",
+       "deleteprotected": "Tuto stránku nemůžete smazat, protože je zamčena.",
        "deleting-backlinks-warning": "'''Upozornění:''' Stránka, kterou se chystáte smazat, je [[Special:WhatLinksHere/{{FULLPAGENAME}}|na jiných stránkách]] odkazována nebo je do nich vložena.",
        "rollback": "Vrátit zpět editace",
        "rollback_short": "Vrátit zpět",
        "import": "Import stránek",
        "importinterwiki": "Import mezi wiki",
        "import-interwiki-text": "Pro import zvolte zdrojovou wiki a název stránky. Data revizí a jména autorů budou zachována. Všechny importy se zaznamenávají do [[Special:Log/import|knihy importů]].",
-       "import-interwiki-source": "Zdrojová wiki/stránka:",
+       "import-interwiki-sourcewiki": "Zdrojová wiki:",
+       "import-interwiki-sourcepage": "Zdrojová stránka:",
        "import-interwiki-history": "Zkopírovat všechny historické verze této stránky",
        "import-interwiki-templates": "Zahrnout všechny šablony",
        "import-interwiki-submit": "Importovat",
        "logentry-rights-rights": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách z $4 na $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|byl automaticky povýšen|byla automaticky povýšena}} z $4 na $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|načetl|načetla}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|načetl|načetla}} novou verzi $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|načetl|načetla}} $3",
        "rightsnone": "(žádné)",
        "feedback-bugornote": "Pokud dokážete podrobně popsat technický problém, můžete [$1 nahlásit chybu].\nJinak můžete využít jednoduchý formulář níže. Váš komentář bude přidán na stránku „[$3 $2]“ spolu s vaším uživatelským jménem a informací o tom, jaký prohlížeč používáte.",
        "feedback-subject": "Předmět:",
        "action-pagelang": "měnit jazyk stránky",
        "log-name-pagelang": "Kniha změn jazyků",
        "log-description-pagelang": "Toto je protokol změn jazyků stránek.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5.",
+       "default-skin-not-found": "Jejda! Výchozí vzhled vaší wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, není dostupný.\n\nVaše instalace zřejmě obsahuje následující vzhledy. Informace o tom, jak je povolit a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].\n\n$2\n\n; Pokud jste právě nainstalovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář.\n\n; Pokud jste právě aktualizovali MediaWiki:\n: MediaWiki 1.24 a novější již automaticky nepovolují nainstalované vzhledy (vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_autodiscovery/cs Manual:Skin autodiscovery]). Pro povolení všech právě nainstalovaných vzhledů vlepte následující řádky do <code>LocalSettings.php</code>:\n\n<pre>$3</pre>\n\n; Pokud jste právě upravili <code>LocalSettings.php</code>:\n: Překontrolujte případné překlepy v názvech vzhledů.",
+       "default-skin-not-found-no-skins": "Jejda! Výchozí vzhled vaší wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, není dostupný.\n\nNemáte nainstalovány žádné vzhledy.\n\n; Pokud jste právě nainstalovali nebo aktualizovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. MediaWiki 1.24 a novější již v hlavním repozitáři neobsahují žádné vzhledy. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář. Informace o tom, jak povolit vzhledy a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (povolený)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''zakázaný''')"
 }
index 6a4cf9c..7049f9a 100644 (file)
        "talkpagelinktext": "Diskùsëjô",
        "specialpage": "Specjalnô starna",
        "personaltools": "Priwatné przërëchtënczi",
-       "postcomment": "Nowi dzél",
        "articlepage": "Starna artikla",
        "talk": "Diskùsëjô",
        "views": "Pòdzérków",
        "yourdomainname": "Twòjô domena",
        "login": "Wlogùjë mie",
        "nav-login-createaccount": "Logòwanié",
-       "loginprompt": "Brëkùjesz miec ''cookies'' (kùszczi) włączoné bë sã wlogòwac do {{SITENAME}}.",
        "userlogin": "Logòwanié",
        "userloginnocreate": "Wlogùjë mie",
        "logout": "Wëlogùjë mie",
        "badfilename": "Miono òbrôzka zmienioné na \"$1\".",
        "uploadwarning": "Òstrzega ò wladënkù",
        "savefile": "Zapiszë lôpk",
-       "uploadedimage": "wladënk: \"$1\"",
        "uploaddisabled": "Przeprôszómë! Mòżlëwòta wladënkù lopków na nen serwer òsta wëłączonô.",
        "upload-success-subj": "Wladënk darzëł sã",
        "listfiles": "Lësta òbrôzków",
        "notanarticle": "To nie je artikel",
        "watchlist-details": "Ùzérôsz {{PLURAL:$1|$1 artikel|$1 artikle/-ów}}, nie rechùjąc diskùsëjów.",
        "wlheader-showupdated": "Artiklë jakczé òsta zmienioné òd Twòji slédny wizytë są wëapratnioné '''pògrëbieniém'''",
+       "wlnote": "Niżi môsz wëskrzënioné {{PLURAL:$1|slédną zmianã|'''$1''' slédnëch zmianów}} zrobioné òb {{PLURAL:$2|gòdzënã|'''$2''' gòdzënë/gòdzënów}}.",
        "wlshowlast": "Wëskrzëni zjinaczi z $1 gòdzënów $2 dni $3",
        "watchlist-options": "Òptacëje ùzérónych",
        "watching": "Ùzéróm...",
index c80e34b..f5e4590 100644 (file)
        "talkpagelinktext": "бєсѣда",
        "specialpage": "нарочьна страница",
        "personaltools": "моꙗ орѫдиꙗ",
-       "postcomment": "нова чѧсть",
        "talk": "бєсѣда",
        "toolbox": "орѫдиꙗ",
        "otherlanguages": "дроугꙑ ѩꙁꙑкꙑ",
        "filedesc": "опьсаниѥ",
        "fileuploadsummary": "опьсаниѥ:",
        "savefile": "дѣла съхранѥниѥ",
-       "uploadedimage": "⁖ [[$1]] ⁖ положєнъ ѥстъ",
-       "overwroteimage": "новъ обраꙁъ ⁖ [[$1]] ⁖ положєнъ ѥстъ",
        "upload-source": "источьно дѣло",
        "sourcefilename": "источьна дѣла имꙗ :",
        "watchthisupload": "си дѣла блюдєниѥ",
index 9c6f083..7ac4c5d 100644 (file)
        "talkpagelinktext": "Сӳтсе явни",
        "specialpage": "Ятарлă страницă",
        "personaltools": "Ман хатĕрсем",
-       "postcomment": "Хуравла",
        "articlepage": "Статьяна пăх",
        "talk": "Сӳтсе явни",
        "views": "Пурĕ пăхнă",
        "yourdomainname": "Сирĕн домен",
        "login": "Сайта кĕр",
        "nav-login-createaccount": "Сайта кĕр / регистрацилен",
-       "loginprompt": "Сайта кĕрес тесен сирĕн «cookies»-па усă курма ирĕк памалла.",
        "userlogin": "Сайта кĕр",
        "logout": "Сайтран тухас",
        "userlogout": "Сайтран тух",
        "largefileserver": "Файл пысăкăшĕ юрăхлинчен пысăкрах (пĕчĕклетĕр).",
        "uploadwarning": "Асăрхаттару",
        "savefile": "Файла çырса хур",
-       "uploadedimage": "«[[$1]]» кĕртрĕмĕр",
        "uploaddisabled": "Каçарăр та сайта халĕ нимĕн те кĕртме юрамаст.",
        "uploaddisabledtext": "Ку вики-сайтра файлсене кĕртме чарнă.",
        "uploadvirus": "Файл ăшĕнче вирус пур! $1 пăхăр.",
index fe284ae..3a0a6ab 100644 (file)
        "externaldberror": "Naill ai: cafwyd gwall dilysu allanol ar databas neu: ar y llaw arall efallai nad oes hawl gennych chi i ddiwygio'ch cyfrif allanol.",
        "login": "Mewngofnodi",
        "nav-login-createaccount": "Mewngofnodi",
-       "loginprompt": "Mae'n rhaid galluogi cwcis er mwyn mewngofnodi i {{SITENAME}}.",
        "userlogin": "Mewngofnodi / creu cyfrif",
        "userloginnocreate": "Mewngofnodi",
        "logout": "Allgofnoder",
        "searchprofile-advanced-tooltip": "Chwilio drwy parthau dewisol",
        "search-result-size": "$1 ({{PLURAL:$2|dim geiriau|$2 gair|$2 air|$2 gair|$2 gair|$2 gair|}})",
        "search-result-category-size": "{{PLURAL:$1|$1 aelod}} ({{PLURAL:$2|$2 is-gategori}}, {{PLURAL:$3|$3 ffeil}})",
-       "search-result-score": "Perthnasedd: $1%",
        "search-redirect": "(ailgyfeiriad $1)",
        "search-section": "(adran $1)",
        "search-file-match": "(yn cyfateb i gynnwys y ffeil)",
        "uploadwarning": "Rhybudd uwchlwytho",
        "uploadwarning-text": "Newidiwch ddisgrifiad y ffeil isod ac yna ceisiwch ei huwchlwytho eto, os gwelwch yn dda.",
        "savefile": "Cadw'r ffeil",
-       "uploadedimage": "wedi llwytho \"[[$1]]\"",
-       "overwroteimage": "wedi uwchlwytho fersiwn newydd o \"[[$1]]\"",
        "uploaddisabled": "Ymddiheurwn; mae uwchlwytho wedi'i analluogi.",
        "copyuploaddisabled": "Analluogwyd uwchlwytho gan URL.",
        "uploaddisabledtext": "Analluogwyd uwchlwytho ffeiliau ar y wefan hon.",
        "watchlist-details": "{{PLURAL:$1|Nid oes dim tudalennau|Mae $1 dudalen|Mae $1 dudalen|Mae $1 tudalen|Mae $1 thudalen|Mae $1 o dudalennau}} ar eich rhestr wylio, heb gynnwys tudalennau sgwrs ar wahan.",
        "wlheader-enotif": "Galluogwyd hysbysiadau trwy e-bost.",
        "wlheader-showupdated": "Mae tudalennau sydd wedi newid ers i chi eu gweld ddiwethaf wedi'u '''hamlygu'''.",
-       "wlnote2": "Isod, fe welwch y newidiadau yn ystod {{PLURAL:$1|yr awr|yr awr|y ddwyawr ddiwethaf|teirawr diwethaf|<strong>$1</strong> awr diwethaf}}, hyd at $2, $3.",
+       "wlnote": "{{PLURAL:$1|Ni fu unrhyw newid|Isod mae'r '''$1''' newid diweddaraf|Isod mae'r '''$1''' newid diweddaraf|Isod mae'r '''$1''' newid diweddaraf|Isod mae'r '''$1''' newid diweddaraf|Isod mae'r '''$1''' newid diweddaraf}} yn ystod {{PLURAL:$2||yr awr|y ddwyawr|y teirawr|y \"$2\" awr|y(r) \"$2\" awr}} ddiwethaf, fel ag yr oedd am $4, $3.",
        "wlshowlast": "Dangoser newidiadau'r $1 awr ddiwethaf neu'r $2 {{PLURAL:$2|diwrnod|diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}} diwethaf neu'r $3 newidiadau.",
        "watchlist-options": "Dewisiadau ar gyfer y rhestr wylio",
        "watching": "Wrthi'n ychwanegu...",
index cc426f3..f5ef28b 100644 (file)
        "randomincategory": "Tilfældig side i kategori",
        "randomincategory-invalidcategory": "\"$1\" er ikke et gyldigt kategorinavn.",
        "randomincategory-nopages": "Der er ingen sider i [[:Category:$1]].",
-       "randomincategory-selectcategory": "Få tilfældig side fra kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Gå til",
+       "randomincategory-category": "Kategori:",
        "randomredirect": "Tilfældige henvisninger",
        "randomredirect-nopages": "Der er ingen omdirigeringer i navnerummet $1.",
        "statistics": "Statistik",
        "listgrouprights-namespaceprotection-header": "Navnerumsbegrænsninger",
        "listgrouprights-namespaceprotection-namespace": "Navnerum",
        "listgrouprights-namespaceprotection-restrictedto": "Rettighed(er) der giver brugeren mulighed for at redigere",
+       "trackingcategories-desc": "Kategori optagelse kriterier",
+       "noindex-category-desc": "Siden ikke indekseres af robotter, fordi det er det magiske ord <code><nowiki>__NOINDEX__</nowiki></code> på det og er i et navneområde, hvor dette flag er tilladt.",
+       "index-category-desc": "Siden har en <code><nowiki>__INDEX__</nowiki></code> på det (og er i et navneområde, hvor dette flag er tilladt), og dermed er indekseret af robotter, hvor det normalt ikke ville være.",
        "mailnologin": "Du er ikke logget på",
        "mailnologintext": "Du skal være [[Special:UserLogin|logget på]] og have en gyldig e-mailadresse sat i dine [[Special:Preferences|indstillinger]] for at sende e-mail til andre brugere.",
        "emailuser": "E-mail til denne bruger",
        "watchlist-details": "Du har $1 {{PLURAL:$1|side|sider}} på din overvågningsliste (ekskl. diskussionssider).",
        "wlheader-enotif": "E-mail-underretning er slået til.",
        "wlheader-showupdated": "Sider, der er ændret siden dit sidste besøg, er vist med '''fed skrift'''.",
-       "wlnote": "Nedenfor ses {{PLURAL:$1|den seneste ændring|de seneste '''$1''' ændringer}} i {{PLURAL:$2|den sidste time|de sidste '''$2''' timer}} op til den $3 kl. $4.",
+       "wlnote": "Nedenfor ses {{PLURAL:$1|den seneste ændring|de seneste <strong>$1</strong> ændringer}} i {{PLURAL:$2|den sidste time|de sidste <strong>$2</strong> timer}} op til den $3 kl. $4.",
        "wlshowlast": "Vis de seneste $1 timer $2 dage $3",
        "watchlist-options": "Indstillinger for overvågningslisten",
        "watching": "Tilføjer overvågning …",
        "exbeforeblank": "indholdet før siden blev tømt var: '$1'",
        "delete-confirm": "Slet \"$1\"",
        "delete-legend": "Slet",
-       "historywarning": "Advarsel: Siden du er ved at slette har en historie med $1 {{PLURAL:$1|revision|revisioner}}:",
+       "historywarning": "<strong>Advarsel:</strong> Siden du er ved at slette har en historie med $1 {{PLURAL:$1|version|versioner}}:",
        "confirmdeletetext": "Du er ved at slette en side sammen med hele dens tilhørende historik.\nBekræft venligst at du virkelig vil gøre dette, at du forstår konsekvenserne, og at du gør det i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].",
        "actioncomplete": "Gennemført",
        "actionfailed": "Handlingen mislykkedes",
        "delete-edit-reasonlist": "Rediger sletningsårsager",
        "delete-toobig": "Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.",
        "delete-warning-toobig": "Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.",
+       "deleteprotected": "Du kan ikke slette denne side, fordi den er beskyttet.",
        "deleting-backlinks-warning": "'''Advarsel:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] linker til eller inkluderer den side, du er ved at slette.",
        "rollback": "Fjern redigeringer",
        "rollback_short": "Fjern redigering",
        "contributions-title": "Brugerbidrag for $1",
        "mycontris": "Bidrag",
        "contribsub2": "For {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Brugerkontoen \"$1\" er ikke registreret.",
        "nocontribs": "Ingen ændringer er fundet som opfylder disse kriterier.",
        "uctop": "(seneste)",
        "month": "Måned:",
        "autoblockid": "Autoblock #$1",
        "block": "Bloker bruger",
        "unblock": "Ophæv blokering af bruger",
-       "blockip": "Bloker bruger",
+       "blockip": "Bloker {{GENDER:$1|bruger}}",
        "blockip-legend": "Bloker bruger",
        "blockiptext": "Brug formularen herunder til at blokere for skriveadgang fra en bestemt IP-adresse eller et brugernavn.\nDette bør kun gøres for at forhindre vandalisme og skal være i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].\nAngiv en konkret begrundelse herunder (for eksempel med angivelse af sider der har været udsat for vandalisme).",
        "ipaddressorusername": "IP-adresse eller brugernavn",
        "ipb-unblock-addr": "Ophæv blokeringen af \"$1\"",
        "ipb-unblock": "Frigive IP-adresse/bruger",
        "ipb-blocklist": "Vis alle blokeringer som er i kraft",
-       "ipb-blocklist-contribs": "Bidrag fra $1",
+       "ipb-blocklist-contribs": "Bidrag fra {{GENDER:$1|$1}}",
        "unblockip": "Ophæv blokering af bruger",
        "unblockiptext": "Brug formularen herunder for at gendanne skriveadgangen for en tidligere blokeret IP-adresse eller bruger.",
        "ipusubmit": "Ophæv blokeringen",
        "import": "Importer sider",
        "importinterwiki": "Importer sider fra en anden wiki",
        "import-interwiki-text": "Vælg en Wiki og en side til importen.\nDatoen i den pågældende version og forfatterne ændres ikke.\nAlle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-loggen]].",
-       "import-interwiki-source": "Kildewiki/-side:",
        "import-interwiki-history": "Importer alle versioner af denne side",
        "import-interwiki-templates": "Inkluder alle skabeloner",
        "import-interwiki-submit": "Importer",
        "import-upload": "Upload XML-data",
        "import-token-mismatch": "Sessionsdata er mistet. Prøv venligst igen.",
        "import-invalid-interwiki": "Kan ikke importere fra den angivne wiki.",
-       "import-error-edit": "Siden \"$1\" importeres ikke, da du ikke har rettigheden til at redigere den.",
-       "import-error-create": "Siden \"$1\" importeres ikke, da du ikke har rettigheden til at oprette den.",
-       "import-error-interwiki": "Siden \"$1\" importeres ikke, da dens navn er reserveret for eksterne henvisninger (interwiki).",
-       "import-error-special": "Siden \"$1\" importeres ikke, da den tilhører et særligt navnerum, der ikke tillader sider.",
-       "import-error-invalid": "Siden \"$1\" importeres ikke, da dens navn er ugyldigt.",
+       "import-error-edit": "Siden \"$1\" blev ikke importeret, da du ikke har rettighed til at redigere den.",
+       "import-error-create": "Siden \"$1\" blev ikke importeret, da du ikke har rettighed til at oprette den.",
+       "import-error-interwiki": "Siden \"$1\" blev ikke importeret, da dens navn er reserveret for eksterne henvisninger (interwiki).",
+       "import-error-special": "Siden \"$1\" blev ikke importeret, da den tilhører et særligt navnerum, der ikke tillader sider.",
+       "import-error-invalid": "Siden \"$1\" blev ikke importeret, fordi det navn, som den ville være importeret til er ugyldigt på denne wiki.",
        "import-error-unserialize": "Ændring $2 af siden \"$1\" kunne ikke afserialiseres. Ændringen brugte indholdsmodel $3 serialiseret som $4.",
        "import-error-bad-location": "Version $2 der bruger indholdsmodellen $3 kan ikke gemmes på \"$1\" på denne wiki, da denne model ikke understøttes på denne side.",
        "import-options-wrong": "{{PLURAL:$2|Ugyldig indstilling|Ugyldige indstillinger}}: <nowiki>$1</nowiki>",
        "importlogpage": "Importlog",
        "importlogpagetext": "Administrativ import af sider med versionshistorik fra andre Wikis.",
        "import-logentry-upload": "[[$1]] blev importeret",
-       "import-logentry-upload-detail": "{{PLURAL:$1|1 version|$1 versioner}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|version|versioner}} importeret",
        "import-logentry-interwiki": "$1 blev importeret (Transwiki)",
-       "import-logentry-interwiki-detail": "{{PLURAL:$1|1 version|$1 versioner}} af $2 importeret",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importeret fra $2",
        "javascripttest": "Test af JavaScript",
        "javascripttest-title": "Kører $1 test",
        "javascripttest-pagetext-noframework": "Denne side er reserveret til at teste JavaScript.",
        "newimages-summary": "Denne specialside viser de senest oplagte filer.",
        "newimages-legend": "Filter",
        "newimages-label": "Filnavn (eller en del af det):",
+       "newimages-showbots": "Vis oplægninger af robotter",
        "noimages": "Ingen filer fundet.",
        "ilsubmit": "Søg",
        "bydate": "efter dato",
        "confirm-watch-top": "Tilføj denne side til din overvågningsliste?",
        "confirm-unwatch-button": "OK",
        "confirm-unwatch-top": "Fjern denne side fra din overvågningsliste?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← forrige side",
        "imgmultipagenext": "næste side →",
        "imgmultigo": "OK",
        "autosumm-replace": "Erstatter sidens indhold med \"$1\"",
        "autoredircomment": "Omdirigering til [[$1]] oprettet",
        "autosumm-new": "Oprettede siden med \"$1\"",
+       "autosumm-newblank": "Oprettede tom side",
        "lag-warn-normal": "Ændringer som er nyere end {{PLURAL:$1|et sekund|$1 sekunder}}, vises muligvis ikke i denne liste.",
        "lag-warn-high": "Grundet stor belastning af databaseserveren vil ændringer der er nyere end {{PLURAL:$1|et sekund|$1 sekunder}} måske ikke blive vist i denne liste.",
        "watchlistedit-normal-title": "Rediger overvågningsliste",
        "watchlistedit-raw-done": "Din overvågningsliste blev opdateret.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 side|$1 sider}} er tilføjet:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 side|$1 sider}} er fjernet:",
+       "watchlistedit-clear-title": "Ryddet overvågningsliste",
+       "watchlistedit-clear-legend": "Ryd overvågningsliste",
+       "watchlistedit-clear-explain": "Alle siderne vil blive fjernet fra din overvågningsliste",
+       "watchlistedit-clear-titles": "Sider:",
+       "watchlistedit-clear-submit": "Ryd overvågningslisten (dette er permanent!)",
+       "watchlistedit-clear-done": "Din overvågningsliste er blevet ryddet.",
        "watchlisttools-clear": "Ryd overvågningsliste",
        "watchlisttools-view": "Se ændrede sider i overvågningslisten",
        "watchlisttools-edit": "Rediger overvågningsliste",
index 90bff13..ea0b643 100644 (file)
@@ -92,7 +92,7 @@
        "tog-watchdefault": "Selbst geänderte Seiten und Dateien automatisch beobachten",
        "tog-watchmoves": "Selbst verschobene Seiten und Dateien automatisch beobachten",
        "tog-watchdeletion": "Selbst gelöschte Seiten und Dateien automatisch beobachten",
-       "tog-watchrollback": "Seiten der Beobachtungsliste hinzufügen, bei denen ich eine Zurücksetzung durchgeführt habe.",
+       "tog-watchrollback": "Seiten, bei denen ich eine Zurücksetzung durchgeführt habe, der Beobachtungsliste hinzufügen.",
        "tog-minordefault": "Eigene Änderungen standardmäßig als geringfügig markieren",
        "tog-previewontop": "Vorschau oberhalb des Bearbeitungsfensters anzeigen",
        "tog-previewonfirst": "Beim ersten Bearbeiten immer die Vorschau anzeigen",
        "grouppage-suppress": "{{ns:project}}:Oversighter",
        "right-read": "Seiten lesen",
        "right-edit": "Seiten bearbeiten",
-       "right-createpage": "Seiten erstellen (außer Diskussionsseiten)",
+       "right-createpage": "Seiten erstellen (die keine Diskussionsseiten sind)",
        "right-createtalk": "Diskussionsseiten erstellen",
        "right-createaccount": "Benutzerkonto erstellen",
        "right-minoredit": "Bearbeitungen als klein markieren",
        "randomincategory": "Zufällige Seite einer Kategorie",
        "randomincategory-invalidcategory": "„$1“ ist kein gültiger Kategorienname.",
        "randomincategory-nopages": "Es gibt keine Seiten in [[:Category:$1]].",
-       "randomincategory-selectcategory": "Zufällige Seite aus der Kategorie: $1 $2",
-       "randomincategory-selectcategory-submit": "Los",
+       "randomincategory-category": "Kategorie:",
+       "randomincategory-legend": "Zufällige Seite in Kategorie",
        "randomredirect": "Zufällige Weiterleitung",
        "randomredirect-nopages": "Im Namensraum „$1“ sind keine Weiterleitungen vorhanden.",
        "statistics": "Statistik",
        "exbeforeblank": "Inhalt vor dem Leeren der Seite: „$1“",
        "delete-confirm": "Löschen von „$1“",
        "delete-legend": "Löschen",
-       "historywarning": "'''Achtung:''' Die Seite, die du löschen möchtest, hat eine Versionsgeschichte mit ungefähr $1 {{PLURAL:$1|Version|Versionen}}:",
+       "historywarning": "<strong>Achtung:</strong> Die Seite, die du löschen möchtest, hat eine Versionsgeschichte mit {{PLURAL:$1|einer Version|$1 Versionen}}:",
        "confirmdeletetext": "Du bist dabei, eine Seite mit allen zugehörigen älteren Versionen zu löschen. Bitte bestätige dazu, dass du dir der Konsequenzen bewusst bist, und dass du in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] handelst.",
        "actioncomplete": "Aktion beendet",
        "actionfailed": "Aktion fehlgeschlagen",
        "delete-edit-reasonlist": "Löschgründe bearbeiten",
        "delete-toobig": "Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.",
        "delete-warning-toobig": "Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.",
-       "delete-cantedit": "Du kannst diese Seite nicht löschen, da du nicht über das Recht verfügst, diese Seite zu bearbeiten.",
+       "deleteprotected": "Du kannst diese Seite nicht löschen, da sie geschützt wurde.",
        "deleting-backlinks-warning": "'''Warnung:''' Es verweisen noch [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere Seiten]] auf die zu löschende Seite oder diese Seite ist noch woanders eingebunden.",
        "rollback": "Zurücksetzen der Änderungen",
        "rollback_short": "Zurücksetzen",
        "import": "Seiten importieren",
        "importinterwiki": "Transwiki-Import",
        "import-interwiki-text": "Wähle ein Wiki und eine Seite zum Importieren aus.\nDie Versionsdaten und Benutzernamen bleiben dabei erhalten.\nAlle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] protokolliert.",
-       "import-interwiki-source": "Quell-Wiki/-Seite:",
+       "import-interwiki-sourcewiki": "Quellwiki:",
+       "import-interwiki-sourcepage": "Quellseite:",
        "import-interwiki-history": "Alle Versionen dieser Seite importieren",
        "import-interwiki-templates": "Alle Vorlagen einschließen",
        "import-interwiki-submit": "Importieren",
index 1db8670..53f608f 100644 (file)
        "talkpagelinktext": "Boroson",
        "specialpage": "Bolikon suaikowokon",
        "personaltools": "Kakamot minsosondiri",
-       "postcomment": "Bogian wagu",
        "articlepage": "Intaai suang bolikon",
        "talk": "Pogigibarasan",
        "views": "Pongintangan",
        "externaldberror": "Haro nokosilap pongintutunan bingdata toi awu ko pasagaon monginwagu takaun poinsoliwannu.",
        "login": "Sumuang log",
        "nav-login-createaccount": "Sumuang log / pomonsoi  do takaun",
-       "loginprompt": "Suhuonko do poposikit pongongonsok do sumuang log id {{SITENAME}}.",
        "userlogin": "Sumuang log / pomonsoi  do takaun",
        "userloginnocreate": "Sumuang log",
        "logout": "Lumabus log",
        "uploadnologintext": "Pinatantu ko do [[Special:UserLogin|lumoog sumuang]] do mangaplod tangapail-pail.",
        "uploadlogpage": "Log poposuang",
        "filedesc": "Koinibaan",
-       "uploadedimage": "poposuang \"[[$1]]\"",
        "license": "Pongolisinan:",
        "license-header": "Pongolisinan",
        "listfiles_search_for": "Mogihum ngaran modia:",
index ca2cfa4..703f898 100644 (file)
        "talkpagelinktext": "ޚިޔާލު ސަފްޙާ",
        "specialpage": "ހާއްސަ ޞަފްޙާ",
        "personaltools": "އަމިއްލަ",
-       "postcomment": "އާ ބައެއް",
        "articlepage": "ފިހުރިސްތު ޞަފްޙާ ބައްލަވާ",
        "talk": "ބަހުސް",
        "views": "ހިޔާލުފުޅުތައް",
        "yourpasswordagain": "ސިއްރުބަސް އަލުންލިޔުއްވާ",
        "login": "ވަދެވަޑައިގަންނަވާ",
        "nav-login-createaccount": "ވަންނަވާ / މެންބަރަކަށް ވެވަޑައިގަންނަވާ",
-       "loginprompt": "{{SITENAME}}އަށް ވަންނަވަން ކުކީޒް ބޭނުންވާނެއެވެ.",
        "userlogin": "ވަންނަވާ / މެންބަރަކަށް ވެ ވަޑައިގަންނަވާ",
        "userloginnocreate": "ވަދެވަޑައިގަންނަވާ",
        "logout": "ބޭރަށް ވަޑައިގަންނަވާ",
        "watch": "ނަޒަރުބަހައްޓަވާ",
        "watchthispage": "މި ޞަފްޙާއަށް ނަޒަރުބަހައްޓަވާ",
        "unwatch": "ހާއްސަ ނަޒަރުން އުނިކުރޭ",
+       "wlnote": "ތިރީގައި މިވަނީ އެއީ ފާއިތުވި <b>$2</b> ގަޑި އިރުގެ ތެރޭގައިގެނެވިފައިވާ ފަހު $1 ބަދަލެވެ.",
        "changed": "ބަދަލުކުރެވިއްޖެ",
        "deletepage": "ޞަފްޙާ ފޮހެލައްވާ",
        "confirm": "ޔަގީން",
index 7f1a29f..8e54abf 100644 (file)
        "hidden-category-category": "Categoréi lughêdi",
        "category-subcat-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'n'ónica sòt-categoréia.| In cla categoréia ché a gh'é {{PLURAL:$1|la sòt-categoréia sgnêda|al $1 sòt-categoréi sgnêdi}} ed sègvit, só 'n totêl ed $2.}}",
        "category-subcat-count-limited": "In cla categoréia ché a gh'é{{PLURAL:$1|'na sòt-categoréia, nutêda|$1 sòt-categoréi, nutêdi}}ché 'd sègvit.",
-       "category-article-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|In cla categoréia ché gh'é{{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
+       "category-article-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|Cla categoréia ché la gh'à {{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
        "category-article-count-limited": "In cla categoréia ché a gh'é {{PLURAL:$1|la pàgina nutêda|al  $1 pàgini nutêdi ch'é 'd sègvit.}}",
        "category-file-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché| i file $1, sgnê}} ed sègvit, in un totêl ed $2.}}",
        "category-file-count-limited": "In cla categoréia ché a gh'é {{PLURAL:$1|al file nutê|i $1 file nutê}} ché 'd sègvit.",
        "hidetoc": "Lōga",
        "collapsible-collapse": "Stréca",
        "collapsible-expand": "Şlêrga",
+       "confirmable-confirm": "Ét {{GENDER:$1|sicûr|sicûra}}?",
        "confirmable-yes": "Sé",
        "confirmable-no": "No",
        "thisisdeleted": "Guêrda e tōrna a mèter $1?",
        "nstab-image": "'File'",
        "nstab-mediawiki": "Mesâg",
        "nstab-template": "Mudèl",
-       "nstab-help": "Per quî rivê da pôch",
+       "nstab-help": "Pàgina 'd ajót",
        "nstab-category": "Categoréia",
        "nosuchaction": "Operasiòun mìa arcgnusûda",
        "nosuchactiontext": "Còl che t'é scrét int l' URL an n'é mìa vâlid.\nL'é anca pusébil che la URL la sia stêda scréta şbaliêda o che sia stê fât un colegamèint mìa vâlid.\nCòst al pré ânca dîr che gh'é un bug in {{SITENAME}}.",
        "protectedinterface": "Cla pàgina ché la gh'à 'n elemèint ch' al fa pêrt dal colegamèint tra utèint e al progrâma 'd cól sît ché e l'é prutèta per schivşêr pusébil abûş. Per zuntêr o mudufichêr tradusiòun per tót i sistēma wiki druvêr [//translatewiki.net/ translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
        "editinginterface": "'''Atèinti:''' Al tèst ed cla pàgina ché 'l fa pêrt dal colegamèint tra utèint e 'l progrâma dal sît.  Tót' al modéfichi fâti a cla pàgina ché a gnîran spustêdi insém a i mesâg vést da tót j utèint ed cól wiki ché. Per zuntêr o mudufichêr tradusiòun vâlidi per tót i wiki, cunsîdra la pusibilitê 'd druvêr [/ / translatewiki.net / translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
        "cascadeprotected": "Insém a cla pàgina ché an n'é mìa pusébil fêr dal mudéfichi perchè l'é dèinter {{PLURAL:$1|int la pàgina sgnêda ché  'd sègvit, ch' l'é stêda prutèta|int al pàgini sgnêdi ché  'd sègvit, ch' în stêdi prutèti}} cun la prutesiòun ch' la 's arfà in cuntinvasiòun:\n$2",
-       "namespaceprotected": "An 's gh'à mìa i permès necesâri per mudifichêr al pàgini dal spâsi di nòm '''$1'''.",
+       "namespaceprotected": "An 's gh'à mìa i permès necesâri per mudifichêr al pàgini dal spâsi di nòm <strong>$1</strong>.",
        "customcssprotected": "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
        "customjsprotected": "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
        "mycustomcssprotected": "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché.",
        "login-abort-generic": "An t'é mìa stê arcgnusû - Scanşlê",
        "loginlanguagelabel": "Léngva: $1",
        "suspicious-userlogout": "La tó dmânda per destachêret l'é stēda rifiutêda perchè la sèmbra spidîda da un navigadōr ch' al funsiòuna mìa o da un proxy di caching.",
-       "createacct-another-realname-tip": "Druvêr al nòm vèira l'é 'na siēlta personêla; s' es pèinsa 'd ruvêrel al gnirâ uşê per dêr la paternitê di lavōr spidî.",
+       "createacct-another-realname-tip": "Druvêr al nòm vèira l'é 'na siēlta personêla; s' es pèinsa 'd druvêrel al gnirâ uşê per dêr la paternitê di lavōr spidî.",
        "pt-login": "Và dèinter",
        "pt-login-button": "Và dèinter",
        "pt-createaccount": "Fà la tó inscrisiòun",
        "parser-template-recursion-depth-warning": "A s'é rivê al lémit 'd arciâm int al mudèl ($1)",
        "language-converter-depth-warning": "A s'é pasê 'l lémit ed fònd dal cunvertidōr ed léngua ($1)",
        "node-count-exceeded-category": "Pàgin in dó vîn pasê 'l nómer ed nōd",
-       "node-count-exceeded-category-desc": "'Na categoréia p'r al pàgini in dó a's pâsa al nómer di nōd.",
+       "node-count-exceeded-category-desc": "La pàgina la và d'ed sōver al nómer di nōd.",
        "node-count-exceeded-warning": "Cla pàgina ché l'à pasê 'l nómer di nōd",
        "expansion-depth-exceeded-category": "Pàgini 'n dó vî pasê al fònd de şlargamèint",
-       "expansion-depth-exceeded-category-desc": "Còsta l'é 'na categoréia per pàgini in dó vî pasê al fònd dal şlargamèint.",
+       "expansion-depth-exceeded-category-desc": "La pàgina la và d'ed là dal fònd mâsim de slarghêda.",
        "expansion-depth-exceeded-warning": "Cla pàgina ché la pasê al fònd de şlargamèint",
        "parser-unstrip-loop-warning": "Catê sèria 'd Unistrip",
        "parser-unstrip-recursion-limit": "A s'é pasê i lémit 'd arciâm 'd Unstrip ($1)",
        "recentchangesdays": "Nómer di dé da fêr vèder int al j ûltmi mudéfichi:",
        "recentchangesdays-max": "Mâsim $1 {{PLURAL:$1|dé}}",
        "recentchangescount": "Nómer ed mudéfichi da fêr vèder per default:",
+       "prefs-help-recentchangescount": "A gh'é dèinter al j ûltmi mudéfichi, stôri, e regéster.",
+       "prefs-help-watchlist-token2": "Còsta l'é la cêva secrēta p'r al flós web di tō tgnû 'd ôc specêl. Tót quî che la cgnòsen a sràn bòun ed lēşer i tō tgnû 'd ôc specêl, per còst an spartîrla mìa cun nisûn. [[Special:ResetTokens|Cléca ché s'ét ghê bişògn ed turnêrla impustêr]].",
+       "savedprefs": "Al preferèinsi în stêdi salvêdi.",
+       "timezonelegend": "Fûş urâri:",
+       "localtime": "Ōra lochêla:",
+       "timezoneuseserverdefault": "Drōva l'ōra stabilîda dal wiki ($1)",
+       "timezoneuseoffset": "Êter (spieghêr la diferèinsa)",
+       "servertime": "Ōra dal server:",
+       "guesstimezone": "Drōva l'ōra dal navigadōr",
        "timezoneregion-africa": "Âfrica",
        "timezoneregion-america": "Amèrica",
        "timezoneregion-antarctica": "Antârtide",
        "timezoneregion-europe": "Eurôpa",
        "timezoneregion-indian": "Ocèan Indiân",
        "timezoneregion-pacific": "Ocèan Pacéfich",
+       "allowemail": "Permèt a chiêter utèin ed mandêret ed la pōsta eletrônica",
+       "prefs-searchoptions": "Sērca",
+       "prefs-namespaces": "Spâsi di nòm",
+       "default": "Stabilî préma",
+       "prefs-files": "File",
+       "prefs-custom-css": "Adâta al CSS al tō necesitê",
+       "prefs-custom-js": "Adâta al JavaScript al tō necesitê",
+       "prefs-common-css-js": "CSS/JavaScript in comûn per tóti 'l skin:",
+       "prefs-reset-intro": "Es pōl druvêr cla pàgina ché per turnêr a impustêr al preferèinsi e cambiêr còli dichiarêdi int al sît. \nL'operasiòun l'an pōl mìa èser scanşlêda.",
+       "prefs-emailconfirm-label": "Cunfèirma ed la pôsta eletrônica:",
        "youremail": "E-mail:",
        "username": "{{GENDER:$1|Nòm utèint}}",
        "prefs-memberingroups": "{{GENDER:$2|Elemèint}}{{PLURAL:$1|dal gróp|di gróp}}:",
+       "prefs-registration": "Dâta 'd registrasiòun:",
        "yourrealname": "Nòm vèira:",
        "yourlanguage": "Léngua",
+       "yourvariant": "Câmbi 'd la léngua:",
+       "prefs-help-variant": "La versiòun o l'ortograféia ch' ét preferés vèder al pàgini ed cla wiki ché.",
+       "yournick": "Scutmâj (nikname):",
+       "prefs-help-signature": "I cumèint int al pàgini 'd discusiòun a dēven èser firmê cun \"<nowiki>~~~~</nowiki>\" ch' al gnirà cambiê cun la tó fîrma cun dôp la dâta.",
+       "badsig": "Erōr int la fîrma mìa standard, verifichêr i tag HTML.",
+       "badsiglength": "La fîrma siēlta l'é trôp lònga, l'an dēv mìa andêr d'ed sōver di $1 {{PLURAL:$1|carâter}}.",
+       "yourgender": "Cme arfêres a té?",
+       "gender-unknown": "Indiferèint",
+       "gender-male": "L'é registrê in sém a {{SITENAME}}",
+       "gender-female": "L'é registrêda in sém a {{SITENAME}}",
+       "prefs-help-gender": "L'impustasiòun ed cla preferèinsa ché l'é a siēlta. Al progrâma al drōva cól valōr ché per parlêr cun tè e numinêret cun chiêter cun al druvêr al gèner ed gramâtica gióst. Cl'infurmasiòun ché la srà póblica.",
        "email": "E-mail",
+       "prefs-help-realname": "Druvêr al nòm vèira l'é 'na siēlta personêla; s' es pèinsa 'd druvêrel al gnirâ uşê per dêr la paternitê di lavōr spidî.",
        "prefs-help-email": "Mèter l'indéris ed la tó pôsta eletrônica an n'é mia necesâri, mó al permèt ed ricêver la cêva 'd ingrès se per chêş ét la scurdés.",
        "prefs-help-email-others": "Ét pō ânca sernîr ed lasêr che chiêter a 's mèten in cuntât  tēgh cun la pôsta eletrônica cun al colegamèint da la tó pàgina utèint o da còla 'd discusiòun.  Al tó indirés al vîn mìa fât savèir a quî ch'ét 's mèten in cuntât tēgh.",
+       "prefs-help-email-required": "L'indirés ed pôsta eletrônica l'é ubligatôri.",
+       "prefs-info": "Infurmasiòun necesâri",
+       "prefs-signature": "Fîrma",
+       "prefs-dateformat": "Fōrma 'd la dâta",
+       "prefs-timeoffset": "Ōri 'd diferèinsa",
+       "prefs-advancedediting": "Siēlti generêli",
+       "prefs-editor": "Editōr",
+       "prefs-preview": "Guêrda préma",
+       "prefs-advancedrc": "Siēlti pió şvilupêdi",
+       "prefs-advancedrendering": "Siēlti pió şvilupêdi",
+       "prefs-advancedsearchoptions": "Siēlti pió şvilupêdi",
+       "prefs-advancedwatchlist": "Siēlti pió şvilupêdi",
+       "prefs-displayrc": "Siēlti ed vidûda",
+       "prefs-displaywatchlist": "Siēlti ed vidûda",
+       "prefs-tokenwatchlist": "Token",
+       "prefs-diffs": "Diferèinsi",
+       "prefs-help-prefershttps": "Cla diferèinsa ché la gh'à efèt dal st'êter ingrès.",
+       "prefs-tabs-navigation-hint": "Sugerimèint: è pusébil druvêr i tâst frècia a mansèina e a dréta per spustêres tr'al schēdi int l'elèinch dal schēdi.",
+       "email-address-validity-valid": "L'indirès ed pôste eletrônica a sèmbra vâlid",
+       "email-address-validity-invalid": "Mèt un indirés ed pôsta eletrônica vâlid",
+       "userrights": "Gestiòun di permès relatîv a j utèint",
+       "userrights-lookup-user": "Gestiòun di gróp utèint",
+       "userrights-user-editname": "Mèt dèinter al nòm utèint:",
+       "editusergroup": "Mudéfica gróp utèint",
+       "editinguser": "Mudéfica i dirét utèint ed l' utèint <strong>[[User:$1|$1]]</strong> $2",
+       "userrights-editusergroup": "Mudéfica gróp utèint",
+       "saveusergroups": "Sêlva gróp utèint",
+       "userrights-groupsmember": "Al fà pêrt {{PLURAL:$1|al gróp|ai gróp}}:",
        "group": "Gróp:",
        "group-user": "Utèint",
        "group-autoconfirmed": "Utèint cunvalidê da per ló",
        "rcshowhidemine": "$1 al mē mudéfichi",
        "rclinks": "Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3",
        "diff": "dif",
-       "hist": "stòr",
+       "hist": "stòria",
        "hide": "Lōga",
        "show": "Fà vèder",
        "minoreditletter": "m",
        "actioncomplete": "Asiòun cumpîda",
        "actionfailed": "Asiòun falîda",
        "dellogpage": "Scanşladûri",
-       "rollback_short": "Tōrna préma dal mudéfichi",
-       "rollbacklink": "tōrna préma dal mudéfichi",
+       "rollback_short": "Tōrna préma dal mudéfichi",
+       "rollbacklink": "tōrna préma dal mudéfichi",
        "rollbackfailed": "An t'é mia turnê indrē",
        "protectlogpage": "Al prutesiòun",
        "protectedarticle": "l'à prutèt \"[[$1]]\"",
        "blocklink": "blôca",
        "unblocklink": "şblôca",
        "change-blocklink": "câmbia blôch",
-       "contribslink": "lavōr",
+       "contribslink": "lavōr fât",
        "blocklogpage": "Blôch",
        "blocklogentry": "t'é bluchê [[$1]] per un peréiod ed $2 $3",
        "unblocklogentry": "l'à şbluchê $1",
        "tooltip-pt-login": "A 's cunsélia 'd fêr la registrasiòun, ânca s' an n'é mia ubligatôri.",
        "tooltip-pt-logout": "Và fōra",
        "tooltip-ca-talk": "Guêrda al discusiòun relatîvi a cla pàgina chè.",
-       "tooltip-ca-edit": "Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun \"Guêrda préma\" préma 'd salvêr còl che t'é fât.",
+       "tooltip-ca-edit": "Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun \"Guêrda préma 'd salvêr\" per vèder còl che t'é fât.",
        "tooltip-ca-addsection": "Cumîncia 'na sesiòun nōva.",
        "tooltip-ca-viewsource": "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
        "tooltip-ca-history": "Versiòun ed préma fâti a cla pàgina ché.",
        "fileduplicatesearch-submit": "Sērca",
        "specialpages": "Pàgini specêli",
        "external_image_whitelist": "#Lasêr cla pàgina ché acsé cme l'é<pre>\n#Mèter dèinter i pès dal j espresiòun regolêri (sōl la pêrta cla va fra //) ed sègvit\n#Còsti gnirân més a cunfrûnt cun j indirés URL dal figûri d'ed fōra (hotlinked) \n#Al cunbinasiòun asrân fât vèder cme figûri, se no a gnirà fât vèder sōl al colegamèint\n#Al rîghi che cumîncen cun # în cunsidrêdi di cumèint\n#La diferèinsa tr' al lètri grândi e al lètri céchi an gh'à mìa impurtânsa\n\n#Mèter sōver cla rîga ché tót i pès di regex. Lasêr cla rîga ché acsé cme l'é</pre>",
-       "tag-filter": "Fîlta per  [[Special:Tags|etichèta]]",
+       "tag-filter": "Fîltra per  [[Special:Tags|etichèta]]",
        "tags-edit": "mudéfica",
        "compare-page1": "Pàgina 1",
        "compare-page2": "Pàgina 2",
index 80e4d79..a5ec592 100644 (file)
@@ -56,6 +56,7 @@
        "tog-watchdefault": "Προσθήκη σελίδων που επεξεργάζομαι στη λίστα παρακολούθησης.",
        "tog-watchmoves": "Προσθήκη σελίδων που μετακινώ στη λίστα παρακολούθησής μου",
        "tog-watchdeletion": "Προσθήκη σελίδων και αρχείων που διαγράφω στη λίστα παρακολούθησής μου",
+       "tog-watchrollback": "Προσθήκη σελίδων όπου έχω κάνει μια επαναφορά στη λίστα παρακολούθησής μου",
        "tog-minordefault": "Σήμανση εκ προεπιλογής όλων των αλλαγών ως μικρής κλίμακας",
        "tog-previewontop": "Εμφάνιση προεπισκόπησης πριν από το πλαίσιο επεξεργασίας",
        "tog-previewonfirst": "Εμφάνιση προεπισκόπησης κατά την πρώτη επεξεργασία",
        "view": "Προβολή",
        "view-foreign": "Δείτε στο $1",
        "edit": "Επεξεργασία",
+       "edit-local": "Επεξεργασία τοπικής περιγραφής",
        "create": "Δημιουργία",
        "create-local": "Προσθέστε τοπική περιγραφή",
        "editthispage": "Επεξεργασία αυτής της σελίδας",
        "jumptonavigation": "πλοήγηση",
        "jumptosearch": "αναζήτηση",
        "view-pool-error": "Λυπούμαστε, οι εξυπηρετητές είναι υπερφορτωμένοι αυτή τη στιγμή.\nΠάρα πολλοί χρήστες προσπαθούν να προβάλουν αυτή τη σελίδα.\nΠαρακαλούμε περιμένετε λίγο πριν ξαναπροσπαθήσετε να προσπελάσετε αυτή τη σελίδα.\n\n$1",
+       "generic-pool-error": "Λυπούμαστε, οι εξυπηρετητές είναι υπερφορτωμένοι αυτή τη στιγμή.\nΠάρα πολλοί χρήστες προσπαθούν να προβάλουν αυτό τον πόρο.\nΠαρακαλούμε περιμένετε λίγο πριν ξαναπροσπαθήσετε να προσπελάσετε αυτό τον πόρο ξανά.",
        "pool-timeout": "Χρόνος αναμονής για το κλείδωμα",
        "pool-queuefull": "Η ουρά της δεξαμενής διεργασιών είναι πλήρης",
        "pool-errorunknown": "Άγνωστο σφάλμα",
        "hidetoc": "απόκρυψη",
        "collapsible-collapse": "Σύμπτυξη",
        "collapsible-expand": "Ανάπτυξη",
+       "confirmable-confirm": "Είστε {{GENDER:$1|σίγουρος|σίγουρη}};",
+       "confirmable-yes": "Ναι",
+       "confirmable-no": "Όχι",
        "thisisdeleted": "Προβολή ή αποκατάσταση $1;",
        "viewdeleted": "Προβολή $1;",
        "restorelink": "{{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}",
        "cannotdelete": "Η σελίδα ή το αρχείο «$1» δεν μπόρεσε να διαγραφεί.\nΕνδεχομένως να έχει ήδη διαγραφεί από κάποιον άλλον.",
        "cannotdelete-title": "Αδύνατη η διαγραφή της σελίδας «$1»",
        "delete-hook-aborted": "Η επεξεργασία ματαιώθηκε από το άγκιστρο του συντακτικού αναλυτή.\nΔεν έδωσε εξήγηση.",
+       "no-null-revision": "Δεν μπορούσε να δημιουργηθεί νέα μηδενική αναθεώρηση για τη σελίδα \"$1\"",
        "badtitle": "Ακατάλληλος τίτλος",
        "badtitletext": "Ο τίτλος της σελίδας που ζητήσατε δεν είναι έγκυρος ή είναι κενός ή πρόκειται για έναν εσφαλμένα συνδεδεμένο διαγλωσσικό τίτλο ή εσφαλμένα συνδεδεμένο τίτλο ανάμεσα σε διαφορετικά wiki.",
        "perfcached": "Τα δεδομένα που ακολουθούν είναι cached και είναι πιθανόν να μην είναι επικαιροποιημένα. Ένα μέγιστο των  {{PLURAL:$1|one result is|$1 results are}} διαθέσιμο στην cache.",
        "invalidtitle-knownnamespace": "Μη έγκυρος τίτλος με χώρο ονομάτων «$2» και κείμενο «$3»",
        "invalidtitle-unknownnamespace": "Μη έγκυρος τίτλος με άγνωστο αριθμό χώρου ονομάτων $1 και κείμενο «$2»",
        "exception-nologin": "Δεν έχετε συνδεθεί.",
-       "exception-nologin-text": "Παρακαλούμε να [[Special:Userlogin|συνδεθείτε]] για να μπορείτε να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα ή την ενέργεια.",
+       "exception-nologin-text": "Παρακαλούμε να συνδεθείτε για να μπορείτε να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα ή την ενέργεια.",
        "exception-nologin-text-manual": "Παρακαλούμε $1 για να μπορείτε να έχετε πρόσβαση σε αυτή τη σελίδα ή ενέργεια.",
        "virus-badscanner": "Λάθος ρύθμιση: άγνωστος ανιχνευτής ιών: ''$1''",
        "virus-scanfailed": "Η σάρωση απέτυχε (κώδικας $1)",
        "gotaccountlink": "Είσοδος",
        "userlogin-resetlink": "Ξεχάσατε τα στοιχεία εισόδου σας;",
        "userlogin-resetpassword-link": "Ξεχάσατε τον κωδικό πρόσβασης;",
+       "userlogin-helplink2": "Βοήθεια για τη σύνδεση",
        "userlogin-loggedin": "Είστε ήδη {{GENDER:$1|συνδεδεμένος|συνδεδεμένη}} ως $1.\nΧρησιμοποιήστε την παρακάτω φόρμα για να συνδεθείτε ως άλλος χρήστης.",
        "userlogin-createanother": "Δημιουργήσετε έναν άλλο λογαριασμό",
        "createacct-emailrequired": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
        "resetpass-submit-cancel": "Ακύρωση",
        "resetpass-wrong-oldpass": "Λάθος προσωρινός ή κανονικός κωδικός.\nΜπορεί να έχετε ήδη αλλάξει επιτυχώς τον κωδικό σας ή να έχετε ζητήσει έναν νέο προσωρινό κωδικό.",
        "resetpass-recycled": "Παρακαλούμε επαναφέρετε τον κωδικό πρόσβασής σας σε κάτι διαφορετικό από τον τρέχοντα κωδικό πρόσβασης.",
+       "resetpass-temp-emailed": "Έχετε συνδεθεί με ένα προσωρινό κωδικό μέσω ηλεκτρονικού ταχυδρομείου.\nΓια να ολοκληρώσετε τη σύνδεση, πρέπει να ορίσετε ένα νέο κωδικό εδώ:",
        "resetpass-temp-password": "Προσωρινός κωδικός:",
        "resetpass-abort-generic": "Η αλλαγή του κωδικού έχει απορριφθεί από μια προέκταση.",
        "resetpass-expired": "Τον κωδικό πρόσβασής σας έχει λήξει. Ορίστε ένα νέο κωδικό πρόσβασης για να συνδεθείτε.",
+       "resetpass-expired-soft": "Ο κωδικός πρόσβασής σας έχει λήξει και πρέπει να γίνει επαναφορά του. Παρακαλούμε γράψτε ένα νέο κωδικό πρόσβασης ή κάντε κλικ στο \"{{int:resetpass-submit-cancel}}\" για τον επαναφέρετε αργότερα.",
        "resetpass-validity-soft": "Τον κωδικό πρόσβασής σας δεν είναι έγκυρος: $1 \nΠαρακαλώ επιλέξτε ένα νέο κωδικό πρόσβασης τώρα, ή κάντε κλικ στο κουμπί \"{{int:resetpass-submit-cancel}}\" για να το επαναφέρετε αργότερα.",
        "passwordreset": "Κωδικός επαναφοράς",
        "passwordreset-text-one": "Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.",
        "preview": "Προεπισκόπηση",
        "showpreview": "Εμφάνιση προεπισκόπησης",
        "showdiff": "Εμφάνιση αλλαγών",
+       "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που δημιουργείτε είναι κενή.\nΕάν κάνετε κλικ στο κουμπί \"{{int:savearticle}}\" και πάλι, η σελίδα θα δημιουργηθεί χωρίς κανένα περιεχόμενο.",
        "anoneditwarning": "'''Προειδοποίηση:''' Δεν έχετε συνδεθεί. Η διεύθυνση IP σας θα καταγραφεί στο ιστορικό επεξεργασίας αυτής της σελίδας.",
        "anonpreviewwarning": "''Δεν έχετε συνδεθεί. Η αποθήκευση θα καταγράψει την διεύθυνσή IP σας στο ιστορικό επεξεργασίας αυτής της σελίδας.''",
        "missingsummary": "'''Υπενθύμιση:''' Δεν έχετε συμπληρώσει τη σύνοψη επεξεργασίας. Αν κάνετε κλικ στο κουμπί Αποθήκευση πάλι, η επεξεργασία σας θα αποθηκευτεί χωρίς σύνοψη.",
        "edit-gone-missing": "Δεν ήταν εφικτό να ενημερωθεί η σελίδα.\nΦαίνεται πως έχει διαγραφεί.",
        "edit-conflict": "Σύγκρουση επεξεργασιών.",
        "edit-no-change": "Η επεξεργασία σας αγνοήθηκε, επειδή δεν έγινε καμία αλλαγή στο κείμενο.",
+       "postedit-confirmation-created": "Η σελίδα έχει δημιουργηθεί.",
+       "postedit-confirmation-restored": "Η σελίδα έχει αποκατασταθεί.",
        "postedit-confirmation-saved": "H επεξεργασία σας αποθηκεύτηκε.",
        "edit-already-exists": "Δεν ήταν εφικτό να δημιουργηθεί η νέα σελίδα.\nΥπάρχει ήδη.",
        "defaultmessagetext": "Προεπιλεγμένο κείμενο μηνύματος",
        "parser-template-recursion-depth-warning": "Το όριο του μάκρους της αναδρομής του πρότυπου έχει ξεπεραστεί ($1)",
        "language-converter-depth-warning": "Το όριο βάθους του μετατροπέα γλώσσας έχει ξεπεραστεί ($1)",
        "node-count-exceeded-category": "Σελίδες υπέρβασης του αριθμού κόμβων",
+       "node-count-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο αριθμό κόμβων.",
        "node-count-exceeded-warning": "Η σελίδα έχει υπερβεί τον αριθμό κόμβων",
        "expansion-depth-exceeded-category": "Σελίδες υπέρβασης της επέκτασης σε βάθος",
+       "expansion-depth-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο βάθος επέκτασης.",
        "expansion-depth-exceeded-warning": "Η σελίδα υπερέβη το βάθος επέκτασης",
        "parser-unstrip-loop-warning": "εντοπίστηκε ένας βρόχος unstrip",
        "parser-unstrip-recursion-limit": "Υπέρβαση του ορίου αναδρομής Unstrip ($1)",
        "currentrev": "Τρέχουσα αναθεώρηση",
        "currentrev-asof": "Τελευταία αναθεώρηση της $1",
        "revisionasof": "Αναθεώρηση της $1",
-       "revision-info": "Î\91ναθεÏ\8eÏ\81ηÏ\83η Ï\84ηÏ\82 $1 Ï\85Ï\80Ï\8c {{GENDER:$6|Ï\84ον|Ï\84ην}} $2",
+       "revision-info": "Î\91ναθεÏ\8eÏ\81ηÏ\83η Ï\89Ï\82 Ï\80Ï\81οÏ\82 $1 Î±Ï\80Ï\8c {{GENDER:$6|Ï\84ον|Ï\84ην}} $2 $7",
        "previousrevision": "&larr;Παλαιότερη αναθεώρηση",
        "nextrevision": "Νεώτερη αναθεώρηση &rarr;",
        "currentrevisionlink": "Τελευταία αναθεώρηση",
        "rev-deleted-event": "(η καταγραφή στο αρχείο αφαιρέθηκε)",
        "rev-deleted-user-contribs": "[όνομα χρήστη ή διεύθυνση ΙΡ έχουν αφαιρεθεί - η επεξεργασία έχει αποκρυφθεί από τις συνεισφορές]",
        "rev-deleted-text-permission": "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.\nΜπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
+       "rev-suppressed-text-permission": "Αυτή η έκδοση της σελίδας έχει '''κατασταλεί'''.\nΛεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολής].",
        "rev-deleted-text-unhide": "Αυτή η έκδοση σελίδας '''διεγράφη'''.\nΠερισσότερες λεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ιστορικό διαγραφών].\nΜπορείτε ακόμη να [$1 δείτε αυτήν την αναθεώρηση] αν επιθυμείτε να συνεχίσετε.",
        "rev-suppressed-text-unhide": "Αυτή η έκδοση της σελίδας έχει '''αποκρυφθεί'''.\nΜπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο απόκρυψης].\nΜπορείτε ακόμα [$1 να δείτε την έκδοση] αν επιθυμείτε να συνεχίσετε.",
        "rev-deleted-text-view": "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.\nΜπορείτε να την δείτε. Λεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
        "revdelete-no-file": "Το αρχείο που καθορίσατε δεν υπάρχει.",
        "revdelete-show-file-confirm": "Είστε σίγουροι ότι θέλετε να δείτε μία διεγραμμένη αναθεώρηση του αρχείου \"<nowiki>$1</nowiki>\" από τις $2 στις $3;",
        "revdelete-show-file-submit": "Ναι",
-       "revdelete-selected-text": "'''{{PLURAL:$2|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$1]]:'''",
+       "revdelete-selected-text": "{{PLURAL:$1|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Επιλεγμένο γεγονός αρχείου καταγραφής|Επιλεγμένα γεγονότα αρχείου καταγραφής}}:",
        "revdelete-confirm": "Παρακαλούμε επιβεβαιώστε ότι σκοπεύετε να το κάνετε αυτό, ότι αντιλαμβάνεσθε τις συνέπειες, και ότι το κάνετε σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].",
        "revdelete-suppress-text": "Η καταστολή μπορεί να χρησιμοποιηθεί <strong> μόνο </strong> για τις ακόλουθες περιπτώσεις:\n* Ενδεχόμενη συκοφαντική δυσφήμιση\n* Ακατάλληλες προσωπικές πληροφορίες\n*: <em>διευθύνσεις κατοικίας και αριθμοί τηλεφώνου, αριθμοί ταυτότητας, κλπ. </em>",
        "preferences": "Προτιμήσεις",
        "mypreferences": "Προτιμήσεις",
        "prefs-edits": "Αριθμός επεξεργασιών:",
-       "prefsnologintext2": "Παρακαλούμε $1 για να αλλάξετε τις προτιμήσεις σας.",
+       "prefsnologintext2": "Παρακαλώ συνδεθείτε για να αλλάξετε τις προτιμήσεις σας.",
        "prefs-skin": "Οπτική οργάνωση (skin)",
        "skin-preview": "Προεπισκόπηση",
        "datedefault": "Χωρίς προτίμηση",
        "right-move": "Μετακίνηση σελίδων",
        "right-move-subpages": "Μετακίνηση σελίδων μαζί με τις υποσελίδες τους",
        "right-move-rootuserpages": "Μετακίνηση κεντρικών σελίδων χρηστών",
+       "right-move-categorypages": "Μετακίνηση σελίδων κατηγοριών",
        "right-movefile": "Μετακίνηση αρχείων",
        "right-suppressredirect": "Μη δημιουργία ανακατεύθυνσης από το παλιό όνομα κατά τη μετακίνηση μιας σελίδας",
        "right-upload": "Επιφόρτωση αρχείων",
        "right-browsearchive": "Αναζήτηση στις διαγραμμένες σελίδες",
        "right-undelete": "Ανάκληση διαγραφής μίας σελίδας",
        "right-suppressrevision": "Επιθεώρηση και αποκατάσταση αναθεωρήσεων κρυμμένων από τους διαχειριστές",
+       "right-viewsuppressed": "Προβολή αναθεωρήσεων κρυμμέτων από κάθε χρήστη",
        "right-suppressionlog": "Προβολή ιδιωτικών καταγραφών",
        "right-block": "Φραγή άλλων χρηστών από την επεξεργασία",
        "right-blockemail": "Φραγή ενός χρήστη από την αποστολή ηλεκτρονικών μηνυμάτων",
        "action-move": "να μετακινήσετε αυτή τη σελίδα",
        "action-move-subpages": "να μετακινήσετε αυτή τη σελίδα, καθώς και τις υποσελίδες της",
        "action-move-rootuserpages": "να μετακινήσετε κεντρικές σελίδες χρηστών",
+       "action-move-categorypages": "μετακίνηση σελίδων κατηγοριών",
        "action-movefile": "να μετακινήσετε αυτό το αρχείο",
        "action-upload": "να επιφορτώσετε αυτό το αρχείο",
        "action-reupload": "να ανεβάσετε νέα έκδοση αυτού του υπάρχοντος αρχείου",
        "nolicense": "Καμία επιλεγμένη",
        "license-nopreview": "(Μη διαθέσιμη προεπισκόπηση)",
        "upload_source_url": " (ένα έγκυρο, δημόσια προσβάσιμο URL)",
-       "upload_source_file": " (ένα αρχείο στον υπολογιστή σας)",
+       "upload_source_file": "(το επιλεγμένο αρχείο από τον υπολογιστή σας)",
+       "listfiles-delete": "διαγραφή",
        "listfiles-summary": "Αυτή η ειδική σελίδα δείχνει όλα τα επιφορτωμένα αρχεία.",
        "listfiles_search_for": "Αναζήτηση για όνομα πολυμέσου:",
        "imgfile": "αρχείο",
        "listfiles_size": "Μέγεθος",
        "listfiles_description": "Περιγραφή",
        "listfiles_count": "Εκδόσεις",
+       "listfiles-show-all": "Συμπερίληψη παλαιών εκδόσεων των εικόνων",
        "listfiles-latestversion": "Τρέχουσα έκδοση",
        "listfiles-latestversion-yes": "Ναι",
        "listfiles-latestversion-no": "Όχι",
        "randomincategory": "Τυχαία σελίδα στην κατηγορία",
        "randomincategory-invalidcategory": "Το «$1» δεν είναι έγκυρο όνομα κατηγορίας.",
        "randomincategory-nopages": "Δεν υπάρχουν σελίδες στην κατηγορία [[:Category:$1|$1]].",
-       "randomincategory-selectcategory-submit": "Μετάβαση",
+       "randomincategory-category": "Κατηγορία:",
+       "randomincategory-legend": "Τυχαία σελίδα στην κατηγορία",
        "randomredirect": "Τυχαία ανακατεύθυνση",
        "randomredirect-nopages": "Δεν υπάρχουν ανακατευθύνσεις στον ονοματοχώρο \"$1\".",
        "statistics": "Στατιστικά",
        "protectedpages-page": "Σελίδα",
        "protectedpages-expiry": "Λήγει",
        "protectedpages-performer": "Προστασία χρήστη",
+       "protectedpages-params": "Παράμετροι προστασίας",
        "protectedpages-reason": "Αιτία",
        "protectedpages-unknown-timestamp": "Άγνωστο",
        "protectedpages-unknown-performer": "Άγνωστος χρήστης",
        "listgrouprights-removegroup-self": "Μπορεί να αφαιρέσει {{PLURAL:$2|ομάδα|ομάδες}} από το δικό σας λογαριασμό: $1",
        "listgrouprights-addgroup-self-all": "Μπορεί να προσθέσει όλες τις ομάδες στο δικό σας λογαριασμό",
        "listgrouprights-removegroup-self-all": "Μπορεί να αφαιρέσει όλες τις ομάδες από το δικό σας λογαριασμό",
+       "listgrouprights-namespaceprotection-namespace": "Ονοματοχώρος",
+       "trackingcategories-name": "Όνομα μηνύματος",
+       "trackingcategories-desc": "Κριτήρια συμπερίληψης κατηγορίας",
+       "post-expand-template-inclusion-category-desc": "Το μέγεθος της σελίδας είναι μεγαλύτερο από <code>$wgMaxArticleSize</code> μετά την επέκταση όλων των προτύπων, έτσι ώστε ορισμένα πρότυπα δεν έχουν αναπτυχθεί.",
+       "trackingcategories-nodesc": "Καμία διαθέσιμη περιγραφή.",
        "mailnologin": "Δεν υπάρχει διεύθυνση παραλήπτη.",
        "mailnologintext": "Πρέπει να έχετε [[Special:UserLogin|συνδεθεί]] και να έχετε δηλώσει\nμια έγκυρη ηλεκτρονική διεύθυνση στις [[Special:Preferences|Προτιμήσεις]]\nγια να στείλετε e-mail σε άλλους χρήστες.",
        "emailuser": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε αυτόν τον χρήστη",
        "mywatchlist": "Λίστα παρακολούθησης",
        "watchlistfor2": "Για $1 $2",
        "nowatchlist": "Δεν υπάρχουν εγγραφές στη λίστα παρακολούθησης.",
-       "watchlistanontext": "Παρακαλώ $1 για να δείτε ή να επεξεργαστείτε στοιχεία στη λίστα παρακολούθησής σας.",
+       "watchlistanontext": "Παρακαλούμε συνδεθείτε για να δείτε ή να επεξεργαστείτε αντικείμενα στη λίστα παρακολούθησής σας.",
        "watchnologin": "Δεν έχετε συνδεθεί.",
        "addwatch": "Προσθήκη στη λίστα παρακολούθησης",
        "addedwatchtext": "Η σελίδα «[[:$1]]» έχει προστεθεί στη [[Special:Watchlist|λίστα παρακολούθησής σας]].\nΜελλοντικές αλλαγές σε αυτή τη σελίδα και στη συσχετισμένη σελίδα συζήτησής της θα εμφανίζονται εδώ.",
        "exbeforeblank": "το περιεχόμενο πριν απο την εκκαθάριση ήταν: '$1'",
        "delete-confirm": "Διαγραφή του \"$1\"",
        "delete-legend": "Διαγραφή",
-       "historywarning": "'''Προσοχή:''' Η σελίδα που πρόκειται να διαγράψετε έχει ιστορικό με περίπου $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}:",
+       "historywarning": "<strong>Προσοχή:</strong> Η σελίδα που πρόκειται να διαγράψετε έχει ιστορικό με περίπου $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}:",
        "confirmdeletetext": "Πρόκειται να διαγράψετε οριστικά από τη βάση δεδομένων μια σελίδα (ή μια εικόνα) μαζί με το ιστορικό της. Παρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να το κάνετε, ότι αντιλαμβάνεσθε τις συνέπειες και ότι το κάνετε σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].",
        "actioncomplete": "Η ενέργεια ολοκληρώθηκε.",
        "actionfailed": "Η ενέργεια απέτυχε",
        "delete-edit-reasonlist": "Επεξεργασία λόγων διαγραφής",
        "delete-toobig": "Αυτή η σελίδα έχει μεγάλο ιστορικό τροποποιήσεων, πάνω από $1 {{PLURAL:$1|τροποποίηση|τροποποιήσεις}}.\nΗ διαγραφή τέτοιων σελίδων έχει περιοριστεί για την αποφυγή τυχαίας αναστάτωσης του {{SITENAME}}.",
        "delete-warning-toobig": "Αυτή η σελίδα έχει μεγάλο ιστορικό τροποποιήσεων, πάνω από $1 {{PLURAL:$1|τροποποίηση|τροποποιήσεις}}.\nΗ διαγραφή της μπορεί να αναστατώσει τη λειτουργία της βάσης δεδομένων του {{SITENAME}}. Συνιστούμε μεγάλη προσοχή.",
+       "deleteprotected": "Δεν μπορείτε να διαγράψετε αυτή τη σελίδα επειδή είναι προστατευόμενη.",
        "rollback": "Επαναφορά επεξεργασιών",
        "rollback_short": "Επαναφορά",
        "rollbacklink": "αναστροφή",
        "autoblockid": "Autoblock #$1",
        "block": "Φραγή χρήστη",
        "unblock": "Κατάργηση αποκλεισμού χρήστη",
-       "blockip": "Φραγή χρήστη ή διεύθυνσης IP",
+       "blockip": "Φραγή {{GENDER:$1|χρήστη|χρήστριας}}",
        "blockip-legend": "Φραγή του χρήστη",
        "blockiptext": "Χρησιμοποιήστε την παρακάτω φόρμα για να εμποδίσετε παρεμβάσεις στο κείμενο από μια συγκεκριμένη διεύθυνση IP ή όνομα χρήστη.\nΤο μέτρο αυτό πρέπει να λαμβάνεται μόνο σε περιπτώσεις βανδαλισμού σελίδων και πάντα σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].\nΠαρακαλούμε να αιτιολογήσετε την ενέργειά σας (παραπέμποντας π.χ. σε συγκεκριμένες σελίδες που υπέστησαν βανδαλισμό).",
        "ipaddressorusername": "Διεύθυνση IP ή όνομα χρήστη",
        "ipb-unblock-addr": "Τερμάτισε τη φραγή του/της $1",
        "ipb-unblock": "Τερμάτισε τη φραγή για ένα όνομα χρήστη ή μια διεύθυνση IP",
        "ipb-blocklist": "Δες τις υπάρχουσες φραγές",
-       "ipb-blocklist-contribs": "Συνεισφορές για τον/την $1",
+       "ipb-blocklist-contribs": "Συνεισφορές {{GENDER:$1|του $1|της $1}}",
        "unblockip": "Άρση φραγής χρήστη",
        "unblockiptext": "Χρησιμοποιήστε την παρακάτω φόρμα για να αποκαταστήσετε την πρόσβαση σε επεξεργασία, σε μια διεύθυνση IP ή σε ένα χρήστη που είχε αποκλειστεί με φραγή.",
        "ipusubmit": "Άρση φραγής",
        "import": "Εισαγωγή σελίδων",
        "importinterwiki": "Εισαγωγή από άλλο Wiki",
        "import-interwiki-text": "Επιλέξτε ένα wiki και τίτλο σελίδας για την εισαγωγή.\nΟι ημερομηνίες των αναθεωρήσεων και τα ονόματα των συντακτών θα διατηρηθούν.\nΌλες οι ενέργειες εισαγωγής μεταξύ wiki καταγράφονται στο [[Special:Log/import|αρχείο καταγραφής εισαγωγών]].",
-       "import-interwiki-source": "Wiki και σελίδα πηγή:",
        "import-interwiki-history": "Αντιγραφή όλων των εκδόσεων του ιστορικού για αυτή τη σελίδα",
        "import-interwiki-templates": "Συμπερίληψη όλων των προτύπων",
        "import-interwiki-submit": "Εισαγωγή",
        "pageinfo-lasttime": "Ημερομηνία τελευταίας επεξεργασίας",
        "pageinfo-edits": "Συνολικός αριθμός επεξεργασιών",
        "pageinfo-authors": "Συνολικός αριθμός διαφορετικών συντακτών",
-       "pageinfo-recent-edits": "ΠÏ\81Ï\8cÏ\83Ï\86αÏ\84οÏ\82 Î±Ï\81ιθμÏ\8cÏ\82 επεξεργασιών (σε διάστημα $1)",
+       "pageinfo-recent-edits": "Î\91Ï\81ιθμÏ\8cÏ\82 Ï\80Ï\81Ï\8cÏ\83Ï\86αÏ\84Ï\89ν επεξεργασιών (σε διάστημα $1)",
        "pageinfo-recent-authors": "Πρόσφατος αριθμός μοναδικών συντακτών",
        "pageinfo-magic-words": "{{PLURAL:$1|Μαγική λέξη|Μαγικές λέξεις}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Κρυφή κατηγορία|Κρυφές κατηγορίες}} ($1)",
        "svg-long-desc": "Αρχείο SVG, ονομαστικό μέγεθος $1 × $2 εικονοστοιχεία, μέγεθος αρχείου: $3",
        "svg-long-desc-animated": "Κινούμενο αρχείο SVG, ονομαστικό μέγεθος σε pixels: $1 × $2, μέγεθος αρχείου: $3",
        "svg-long-error": "Μη έγκυρο αρχείο SVG: $1",
-       "show-big-image": "Î\91Ï\81Ï\87ικÏ\8c αρχείο",
+       "show-big-image": "ΠÏ\81Ï\89Ï\84Ï\8cÏ\84Ï\85Ï\80ο αρχείο",
        "show-big-image-preview": "Μέγεθος αυτής της προεπισκόπησης: $1 .",
        "show-big-image-other": "Άλλες {{PLURAL:$2|ανάλυση|αναλύσεις}}: $1.",
        "show-big-image-size": "$1 × $2 εικονοστοιχεία",
        "confirm-watch-top": "Προσθήκη αυτής της σελίδας στη λίστα παρακολούθησης σας;",
        "confirm-unwatch-button": "Εντάξει",
        "confirm-unwatch-top": "Κατάργηση αυτής της σελίδας από τη λίστα παρακολούθησης σας;",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← προηγούμενη σελίδα",
        "imgmultipagenext": "επόμενη σελίδα →",
        "imgmultigo": "Πήγαινε!",
        "autosumm-replace": "Αντικατάσταση σελίδας με '$1'",
        "autoredircomment": "Ανακατεύθυνση στη σελίδα [[$1]]",
        "autosumm-new": "Νέα σελίδα με '$1'",
+       "autosumm-newblank": "Δημιουργήθηκε κενή σελίδα",
        "lag-warn-normal": "Αλλαγές νεότερες από {{PLURAL:$1|δευτερόλεπτο|δευτερόλεπτα}} μπορεί να μην φαίνονται σε αυτή τη λίστα.",
        "lag-warn-high": "Εξαιτίας υψηλής καθυστέρησης της βάσης δεδομένων του εξυπηρετητή, αλλαγές νεότερες από $1 {{PLURAL:$1|δευτερόλεπτο|δευτερόλεπτα}} μπορεί να μην φαίνονται σε αυτή τη λίστα.",
        "watchlistedit-normal-title": "Επεξεργασία λίστας παρακολούθησης",
        "expand_templates_remove_nowiki": "Απόκρυψη της ετικέτας <nowiki> στο αποτέλεσμα",
        "expand_templates_generate_xml": "Εμφάνιση δέντρου συντακτικής ανάλυσης XML",
        "expand_templates_generate_rawhtml": "Εμφάνιση ανεπεξέργαστης HTML",
-       "expand_templates_preview": "Προεπισκόπηση"
+       "expand_templates_preview": "Προεπισκόπηση",
+       "pagelang-name": "Σελίδα",
+       "pagelang-language": "Γλώσσα",
+       "pagelang-use-default": "Χρήση προεπιλεγμένης γλώσσας",
+       "pagelang-select-lang": "Επιλογή γλώσσας",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> /$2 (ενεργοποιημένο)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''απενεργοποιημένο''')"
 }
index a43a742..d6d22ff 100644 (file)
        "userlogin-resetpassword-link": "Forgot your password?",
        "helplogin-url": "https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Logging_in",
        "userlogin-helplink2": "Help with logging in",
-       "userlogin-loggedin": "You are already logged in as {{GENDER:$1|$1}}.\nUse the form below to log in as another user.",
-       "userlogin-createanother": "Create another account",
        "createacct-emailrequired": "Email address",
        "createacct-emailoptional": "Email address (optional)",
        "createacct-email-ph": "Enter your email address",
        "randomincategory": "Random page in category",
        "randomincategory-invalidcategory": "\"$1\" is not a valid category name.",
        "randomincategory-nopages": "There are no pages in the [[:Category:$1|$1]] category.",
-       "randomincategory-selectcategory": "Get random page from category: $1 $2.",
-       "randomincategory-selectcategory-submit": "Go",
+       "randomincategory-category": "Category:",
+       "randomincategory-legend": "Random page in category",
        "randomredirect": "Random redirect",
        "randomredirect-nopages": "There are no redirects in the namespace \"$1\".",
        "statistics": "Statistics",
        "exbeforeblank": "content before blanking was: \"$1\"",
        "delete-confirm": "Delete \"$1\"",
        "delete-legend": "Delete",
-       "historywarning": "<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
+       "historywarning": "<strong>Warning:</strong> The page you are about to delete has a history with $1 {{PLURAL:$1|revision|revisions}}:",
        "confirmdeletetext": "You are about to delete a page along with all of its history.\nPlease confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].",
        "actioncomplete": "Action complete",
        "actionfailed": "Action failed",
        "delete-edit-reasonlist": "Edit deletion reasons",
        "delete-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeletion of such pages has been restricted to prevent accidental disruption of {{SITENAME}}.",
        "delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.",
-       "delete-cantedit": "You cannot delete this page because you do not have permission to edit it.",
+       "deleteprotected": "You cannot delete this page because it has been protected.",
        "deleting-backlinks-warning": "'''Warning:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] link to or transclude the page you are about to delete.",
        "rollback": "Roll back edits",
        "rollback_short": "Rollback",
        "import-summary": "",
        "importinterwiki": "Transwiki import",
        "import-interwiki-text": "Select a wiki and page title to import.\nRevision dates and editors' names will be preserved.\nAll transwiki import actions are logged at the [[Special:Log/import|import log]].",
-       "import-interwiki-source": "Source wiki/page:",
+       "import-interwiki-sourcewiki": "Source wiki:",
+       "import-interwiki-sourcepage": "Source page:",
        "import-interwiki-history": "Copy all history revisions for this page",
        "import-interwiki-templates": "Include all templates",
        "import-interwiki-submit": "Import",
index 3cf01bc..303a4c6 100644 (file)
@@ -37,7 +37,8 @@
                        "Yekrats",
                        "Александр Сигачёв",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Substreki ligilojn",
        "hidetoc": "kaŝi",
        "collapsible-collapse": "kaŝi",
        "collapsible-expand": "Montri",
+       "confirmable-yes": "Jes",
+       "confirmable-no": "Ne",
        "thisisdeleted": "Vidi aŭ restarigi $1?",
        "viewdeleted": "Ĉu rigardi $1?",
        "restorelink": "{{PLURAL:$1|unu forigitan version|$1 forigitajn versiojn}}",
        "revdelete-offender": "Aŭtoro de revizio:",
        "suppressionlog": "Protokolo pri subigado",
        "suppressionlogtext": "Malsupre estas listo de forigoj kaj forbaroj pri enhavo kaŝita de administrantoj.\nRigardu la [[Special:BlockList|forbarliston]] por la listo de nune operaciaj forbaroj kaj forigoj.",
-       "mergehistory": "Kunfandigi historiojn de paĝoj",
+       "mergehistory": "Kunigi historiojn de paĝoj",
        "mergehistory-header": "Ĉi tiu paĝo permesas al vi kunigi versiojn de la historio de unu fonta paĝo en pli novan paĝon.\nCertigu ke ĉi tiu ŝanĝo tenos kontinuecon de la historia paĝo.",
        "mergehistory-box": "Kunigi versiojn de du paĝoj:",
        "mergehistory-from": "Fontpaĝo:",
        "searchprofile-advanced-tooltip": "Serĉi en specialaj nomspacoj",
        "search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vortoj}})",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membroj}} ({{PLURAL:$2|1 subkategorio|$2 subkategorioj}}, {{PLURAL:$3|1 dosiero|$3 dosieroj}})",
-       "search-result-score": "Trafeco: $1%",
        "search-redirect": "(alidirektilo $1)",
        "search-section": "(sekcio $1)",
        "search-suggest": "Ĉu vi intenciis: $1",
        "uploadwarning": "Alŝuta averto",
        "uploadwarning-text": "Bonvolu ŝanĝi la dosieran priskribon kaj reprovi.",
        "savefile": "Konservi dosieron",
-       "uploadedimage": "alŝutis \"[[$1]]\"",
-       "overwroteimage": "alŝutis novan version de \"[[$1]]\"",
        "uploaddisabled": "Alŝutado estas malŝaltita",
        "copyuploaddisabled": "Alŝuto de URL malfunkciigita.",
        "uploaddisabledtext": "Alŝutado de dosieroj estas malebligita.",
        "randomincategory": "Hazarda paĝo en kategorio",
        "randomincategory-invalidcategory": "\"$1\" ne estas valida kategoria nomo.",
        "randomincategory-nopages": "Ne estas paĝoj en la kategorio [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Iri al hazarda paĝo el kategorio: $1 $2.$1",
-       "randomincategory-selectcategory-submit": "Ek!",
        "randomredirect": "Hazarda alidirekto",
        "randomredirect-nopages": "Estas neniuj alidirektiloj en la nomspaco \"$1\".",
        "statistics": "Statistiko",
        "import": "Importi paĝojn",
        "importinterwiki": "Transvikia importo",
        "import-interwiki-text": "Elektu vikion kaj paĝan titolon por importi.\nDatoj de versioj kaj nomoj de redaktantoj estos preservitaj.\nĈiuj transvikaj importoj estas raportitaj ĉe la [[Special:Log/import|loglibro de importoj]].",
-       "import-interwiki-source": "Fonta vikio/paĝo:",
        "import-interwiki-history": "Kopiu ĉiujn historiajn versiojn por ĉi tiu pago.",
        "import-interwiki-templates": "Inkluzivi ĉiujn ŝablonojn",
        "import-interwiki-submit": "Importi",
index 491303c..0a7625d 100644 (file)
        "editfont-monospace": "Tipo de letra monoespaciado",
        "editfont-sansserif": "Tipo de letra de palo seco",
        "editfont-serif": "Tipo de letra con serifas",
-       "sunday": "Domingo",
-       "monday": "Lunes",
-       "tuesday": "Martes",
-       "wednesday": "Miércoles",
-       "thursday": "Jueves",
-       "friday": "Viernes",
-       "saturday": "Sábado",
+       "sunday": "domingo",
+       "monday": "lunes",
+       "tuesday": "martes",
+       "wednesday": "miércoles",
+       "thursday": "jueves",
+       "friday": "viernes",
+       "saturday": "sábado",
        "sun": "dom",
        "mon": "lun",
        "tue": "mar",
        "thu": "jue",
        "fri": "vie",
        "sat": "sáb",
-       "january": "Enero",
-       "february": "Febrero",
-       "march": "Marzo",
-       "april": "Abril",
-       "may_long": "Mayo",
-       "june": "Junio",
-       "july": "Julio",
-       "august": "Agosto",
-       "september": "Septiembre",
-       "october": "Octubre",
-       "november": "Noviembre",
-       "december": "Diciembre",
-       "january-gen": "Enero",
-       "february-gen": "Febrero",
-       "march-gen": "Marzo",
-       "april-gen": "Abril",
-       "may-gen": "Mayo",
-       "june-gen": "Junio",
-       "july-gen": "Julio",
-       "august-gen": "Agosto",
-       "september-gen": "Septiembre",
-       "october-gen": "Octubre",
-       "november-gen": "Noviembre",
-       "december-gen": "Diciembre",
+       "january": "enero",
+       "february": "febrero",
+       "march": "marzo",
+       "april": "abril",
+       "may_long": "mayo",
+       "june": "junio",
+       "july": "julio",
+       "august": "agosto",
+       "september": "septiembre",
+       "october": "octubre",
+       "november": "noviembre",
+       "december": "diciembre",
+       "january-gen": "enero",
+       "february-gen": "febrero",
+       "march-gen": "marzo",
+       "april-gen": "abril",
+       "may-gen": "mayo",
+       "june-gen": "junio",
+       "july-gen": "julio",
+       "august-gen": "agosto",
+       "september-gen": "septiembre",
+       "october-gen": "octubre",
+       "november-gen": "noviembre",
+       "december-gen": "diciembre",
        "jan": "ene",
        "feb": "feb",
        "mar": "mar",
        "oct": "oct",
        "nov": "nov",
        "dec": "dic",
-       "january-date": "$1 de Enero",
-       "february-date": "$1 de Febrero",
-       "march-date": "$1 de Marzo",
-       "april-date": "$1 de Abril",
-       "may-date": "$1 de Mayo",
-       "june-date": "$1 de Junio",
-       "july-date": "$1 de Julio",
-       "august-date": "$1 de Agosto",
-       "september-date": "$1 de Septiembre",
-       "october-date": "$1 de Octubre",
-       "november-date": "$1 de Noviembre",
-       "december-date": "$1 de Diciembre",
+       "january-date": "$1 de enero",
+       "february-date": "$1 de febrero",
+       "march-date": "$1 de marzo",
+       "april-date": "$1 de abril",
+       "may-date": "$1 de mayo",
+       "june-date": "$1 de junio",
+       "july-date": "$1 de julio",
+       "august-date": "$1 de agosto",
+       "september-date": "$1 de septiembre",
+       "october-date": "$1 de octubre",
+       "november-date": "$1 de noviembre",
+       "december-date": "$1 de diciembre",
        "pagecategories": "{{PLURAL:$1|Categoría|Categorías}}",
        "category_header": "Páginas en la categoría «$1»",
        "subcategories": "Subcategorías",
        "mergehistory-go": "Mostrar ediciones fusionables",
        "mergehistory-submit": "Fusionar revisiones",
        "mergehistory-empty": "No hay revisiones fusionables.",
-       "mergehistory-success": "$3 {{PLURAL:$3|revisión|revisiones}} de [[:$1]] fusionadas de forma exitosa en [[:$2]].",
+       "mergehistory-success": "Se {{PLURAL:$3|fusionó $3 revisión|fusionaron $3 revisiones}} de «[[:$1]]» en «[[:$2]]» correctamente.",
        "mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
        "mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del límite de $1 {{PLURAL:$1|revisión|revisiones}} se moverían.",
        "mergehistory-no-source": "La página origen $1 no existe.",
        "randomincategory": "Página aleatoria en categoría",
        "randomincategory-invalidcategory": "\"$1\" no es una categoría válida.",
        "randomincategory-nopages": "No hay páginas en la categoría [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Obtener una página aleatoria de categoría: $1 $2.",
-       "randomincategory-selectcategory-submit": "Ir",
+       "randomincategory-category": "Categoría:",
+       "randomincategory-legend": "Página aleatoria en categoría",
        "randomredirect": "Ir a una redirección cualquiera",
        "randomredirect-nopages": "No hay redirecciones en el espacio de nombres «$1».",
        "statistics": "Estadísticas",
        "exbeforeblank": "El contenido antes de blanquear era: «$1»",
        "delete-confirm": "Borrar «$1»",
        "delete-legend": "Borrar",
-       "historywarning": "'''Aviso:''' La página que estás a punto de borrar tiene un historial de aproximadamente $1 {{PLURAL:$1|revisión|revisiones}}:",
+       "historywarning": "<strong>Atención:</strong> la página que estás a punto de borrar tiene un historial con $1 {{PLURAL:$1|revisión|revisiones}}:",
        "confirmdeletetext": "Estás a punto de borrar una página en forma permanente, así como todo su historial.\nPor favor, confirma que realmente quieres hacer eso, que entiendes las\nconsecuencias, y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|las políticas]].",
        "actioncomplete": "Acción completada",
        "actionfailed": "Acción fallida",
        "delete-edit-reasonlist": "Editar razones de borrado",
        "delete-toobig": "Esta página tiene un historial muy grande, con más de $1 {{PLURAL:$1|revisión|revisiones}}. Borrar este tipo de páginas ha sido restringido para prevenir posibles problemas en {{SITENAME}}.",
        "delete-warning-toobig": "Esta página tiene un historial de más de $1 {{PLURAL:$1|revisión|revisiones}}. Eliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}. Ten cuidado al borrar.",
-       "delete-cantedit": "Usted no se puede borrar esta página porque usted no tiene permiso para editar.",
+       "deleteprotected": "No puedes eliminar esta página porque ha sido protegida.",
        "deleting-backlinks-warning": "'''Advertencia:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otras páginas]] enlazan o transcluyen la página que vas a eliminar.",
        "rollback": "Revertir ediciones",
        "rollback_short": "Revertir",
        "import": "Importar páginas",
        "importinterwiki": "Importación transwiki",
        "import-interwiki-text": "Selecciona un wiki y un título de página para importar.\nLas fechas de revisiones y los nombres de editores se preservarán.\nTodas las importaciones transwiki se registran en el [[Special:Log/import|registro de importaciones]].",
-       "import-interwiki-source": "Wiki o página origen:",
+       "import-interwiki-sourcewiki": "Wiki de origen:",
+       "import-interwiki-sourcepage": "Página de origen:",
        "import-interwiki-history": "Copiar todas las versiones históricas para esta página",
        "import-interwiki-templates": "Incluir todas las plantillas",
        "import-interwiki-submit": "Importar",
        "log-description-pagelang": "Este es un registro de los cambios en los idiomas de las páginas.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5.",
        "default-skin-not-found": "¡Oops! La apariencia por defecto de la wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, no está disponible.\n\nLa instalación parece poseer las siguientes opciones de apariencia. Por favor revise [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] para mayor información sobre cómo configurarla y seleccionar la apariencia por defecto.\n\n$2\n\n; Si acaba de instalar MediaWiki:\n: Probablemente la haya instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. Intente instalar algunos sets de apariencia desde [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory]:\n:* Descargando [https://www.mediawiki.org/wiki/Download el instalador tarball], el cual contiene varios sets de apariencia y extensiones. Puede copiar y pegar el directorio <code>skins/</code> desde ahi.\n:* Clonando uno de los repositorios en <code>mediawiki/skins/*</code> via git dentro del directorio <code>skins/</code> de su instaación de MediaWiki.\n: Haciendo esto no debería interferir con su repositorio git si usted es un desarrollador de MediaWiki.\n\n; Si acaba de actualizar MediaWiki:\n: MediaWiki 1.24 y versiones posteriores ya no tiene habilitada la actualización de apariencia (revise [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Puede pegar las siguientes lineas <code>LocalSettings.php</code> para habilitar todos los sets de apariencia que haya configurado:\n\n<pre>$3</pre>\n\n; Si acaba de modificar <code>LocalSettings.php</code>:\n: Compruebe detenidamente posibles errores tipográficos en los nombres de los sets de apariencias.",
+       "default-skin-not-found-no-skins": "¡Vaya! El skin por defecto de tu wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, no está disponible.\n\nNo tienes skins instaladas.\n\n; Si has instalado o actualizado MediaWiki recientemente:\n: Probablemente la has instalado desde git, o directamente desde el código fuente usando algún otro métoido. Esto es lo esperado. MediaWiki 1.24 y versiones posteriores no incluyen ningun skin en el repositorio. Trata de instalar algunos skins desde [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], siguiendo el siguiente procedimiento:\n:* Descarga el [https://www.mediawiki.org/wiki/Download instalador tarball], que viene con varios skins y extensiones. Puedes copiar y pegar el directorio <code>skins/</code> desde ahí.\n:* Clonando algunos de los repositorios en <code>mediawiki/skins/*</code>  via git en el directorio <code>skins/</code> de tu instación de MediaWiki.\n: Hacer esto no debería interferir con tu repositorio de MediaWiki si eres un desarrollador de MediaWiki. Revisa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] para información sobre como habilitar los skins y seleccionar el  por defecto.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activado)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactivado''')"
 }
index a3879ff..121e77e 100644 (file)
@@ -21,7 +21,8 @@
                        "Silvar",
                        "Võrok",
                        "WikedKentaur",
-                       "לערי ריינהארט"
+                       "לערי ריינהארט",
+                       "Boxmein"
                ]
        },
        "tog-underline": "Linkide allakriipsutus:",
        "jumptosearch": "otsi",
        "view-pool-error": "Serverid on hetkel üle koormatud.\nLiiga palju kasutajaid üritab seda lehte vaadata.\nPalun oota hetk, enne kui uuesti proovid.\n\n$1",
        "generic-pool-error": "Kahjuks on serverid praegu üle koormatud.\nLiiga palju kasutajaid proovivad seda ressurssi vaadata.\nPalun oota natuke, enne kui proovid uuesti selle ressursi juurde pääseda.",
+       "pool-timeout": "Ajalõpp luku ootamisel",
+       "pool-queuefull": "Protsessikogumi järjekord on täis.",
        "pool-errorunknown": "Teadmata tõrge",
+       "pool-servererror": "Protsessikogumi loendurteenus pole saadaval ($1).",
        "aboutsite": "{{GRAMMAR:genitive|{{SITENAME}}}} tiitelandmed",
        "aboutpage": "Project:Tiitelandmed",
        "copyright": "Sisu on kasutatav litsentsi $1 tingimustel, kui pole öeldud teisiti.",
        "hidetoc": "peida",
        "collapsible-collapse": "Peida",
        "collapsible-expand": "Näita",
+       "confirmable-confirm": "Kas {{GENDER:$1|oled}} kindel?",
+       "confirmable-yes": "Jah",
+       "confirmable-no": "Ei",
        "thisisdeleted": "Vaata $1 või taasta?",
        "viewdeleted": "Vaata $1?",
        "restorelink": "{{PLURAL:$1|üht|$1}} kustutatud versiooni",
        "badarticleerror": "Seda toimingut ei saa sellel leheküljel sooritada.",
        "cannotdelete": "Lehekülge või faili \"$1\" ei saa kustutada.\nVõimalik, et keegi on selle juba kustutanud.",
        "cannotdelete-title": "Lehekülge \"$1\" ei saa kustutada",
+       "delete-hook-aborted": "Haak katkestas kustutamise.\nSeletust pole toodud.",
        "no-null-revision": "Lehekülje \"$1\" nullredaktsiooni ei õnnestunud teha.",
        "badtitle": "Vigane pealkiri",
        "badtitletext": "Soovitud lehekülje pealkiri oli vigane, tühi või teisest keeleversioonist või vikist valesti lingitud.\nSee võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.",
        "invalidtitle-knownnamespace": "Vigane pealkiri nimeruumis \"$2\" tekstiga \"$3\"",
        "invalidtitle-unknownnamespace": "Vigane pealkiri nimeruuminumbriga $1 ja tekstiga \"$2\"",
        "exception-nologin": "Sisse logimata",
-       "exception-nologin-text": "Selle lehekülje või toimingu jaoks [[Special:Userlogin|logi]] palun sisse.",
+       "exception-nologin-text": "Selle lehekülje või toimingu jaoks logi palun sisse.",
        "exception-nologin-text-manual": "Pead $1, et sellele leheküljele või toimingule ligi pääseda.",
        "virus-badscanner": "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
        "virus-scanfailed": "skaneerimine ebaõnnestus (veakood $1)",
        "welcomecreation-msg": "Sinu konto on loodud.\nÄra unusta seada oma {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|eelistusi]].",
        "yourname": "Kasutajanimi:",
        "userlogin-yourname": "Kasutajanimi",
-       "userlogin-yourname-ph": "Sisesta oma kasutajanimi",
+       "userlogin-yourname-ph": "Sisesta kasutajanimi",
        "createacct-another-username-ph": "Sisesta kasutajanimi",
        "yourpassword": "Parool:",
        "userlogin-yourpassword": "Parool",
-       "userlogin-yourpassword-ph": "Sisesta oma parool",
+       "userlogin-yourpassword-ph": "Sisesta parool",
        "createacct-yourpassword-ph": "Sisesta parool",
        "yourpasswordagain": "Sisesta parool uuesti:",
        "createacct-yourpasswordagain": "Parooli kinnitus",
        "yourdomainname": "Sinu domeen:",
        "password-change-forbidden": "Selles vikis ei saa paroole muuta.",
        "externaldberror": "Esines autentimistõrge või sul pole õigust konto andmeid muuta.",
-       "login": "Logi sisse",
+       "login": "Sisselogimine",
        "nav-login-createaccount": "Logi sisse või registreeru kasutajaks",
        "userlogin": "Sisselogimine või kasutajakonto loomine",
        "userloginnocreate": "Sisselogimine",
        "userlogin-joinproject": "Ühine projektiga {{SITENAME}}",
        "nologin": "Kas sul pole kontot? $1.",
        "nologinlink": "Registreeru siin",
-       "createaccount": "Loo uus konto",
+       "createaccount": "Konto loomine",
        "gotaccount": "Kui sul on juba konto, '''$1'''.",
        "gotaccountlink": "logi sisse",
        "userlogin-resetlink": "Kas oled unustanud oma sisselogimisandmed?",
        "userlogin-createanother": "Loo teine konto",
        "createacct-emailrequired": "E-posti aadress",
        "createacct-emailoptional": "E-posti aadress (valikuline)",
-       "createacct-email-ph": "Sisesta oma e-posti aadress",
+       "createacct-email-ph": "Sisesta e-posti aadress",
        "createacct-another-email-ph": "Sisesta e-posti aadress",
        "createaccountmail": "Kasuta juhuslikku parooli ja saada see määratud e-posti aadressile",
        "createacct-realname": "Pärisnimi (valikuline)",
        "createacct-reason-ph": "Miks lood teist kontot?",
        "createacct-captcha": "Turvakontroll",
        "createacct-imgcaptcha-ph": "Sisesta ülalnähtav tekst",
-       "createacct-submit": "Loo oma konto",
+       "createacct-submit": "Loo konto",
        "createacct-another-submit": "Loo teine konto",
        "createacct-benefit-heading": "{{SITENAME}} on sinusuguste inimeste tehtud.",
        "createacct-benefit-body1": "{{PLURAL:$1|muudatus|muudatust}}",
        "parser-template-recursion-depth-warning": "Malli rekursiivse kasutamise limiit on ületatud ($1)",
        "language-converter-depth-warning": "Keeleteisendaja sügavuspiir ületatud ($1)",
        "node-count-exceeded-category": "Ületatud sõlmemääraga leheküljed",
-       "node-count-exceeded-category-desc": "Ületatud sõlmemääraga lehekülgede kategooria.",
+       "node-count-exceeded-category-desc": "Lehekülg ületab sõlmede ülemmäära.",
        "node-count-exceeded-warning": "Lehekülg ületas sõlmemäära.",
        "expansion-depth-exceeded-category": "Ületatud hõrendussügavusega leheküljed",
-       "expansion-depth-exceeded-category-desc": "Ületatud hõrendussügavusega lehekülgede kategooria.",
+       "expansion-depth-exceeded-category-desc": "Lehekülg ületab hõrendussügavuse ülemmäära.",
        "expansion-depth-exceeded-warning": "Lehekülg ületas hõrendussügavuse.",
+       "parser-unstrip-loop-warning": "''Unstrip''-funktsiooni silmus tuvastatud",
+       "parser-unstrip-recursion-limit": "''Unstrip''-funktsioonis rekursiooni piirmäär ületatud ($1)",
        "converter-manual-rule-error": "Tõrge keelevariandi käsivahetusreeglis",
        "undo-success": "Selle redaktsiooni käigus tehtud muudatusi saab eemaldada. Palun kontrolli allolevat võrdlust veendumaks, et tahad need muudatused tõepoolest eemaldada. Seejärel saad lehekülje salvestada.",
        "undo-failure": "Muudatust ei saa vahapeal tehtud redigeerimiste tõttu tühistada.",
        "preferences": "Eelistused",
        "mypreferences": "Eelistused",
        "prefs-edits": "Redigeerimiste arv:",
-       "prefsnologintext2": "Pead $1, et oma eelistusi muuta.",
+       "prefsnologintext2": "Palun logi sisse, et oma eelistusi muuta.",
        "prefs-skin": "Kujundus",
        "skin-preview": "eelvaade",
        "datedefault": "Eelistus puudub",
        "prefs-namespaces": "Nimeruumid",
        "default": "vaikeväärtus",
        "prefs-files": "Failid",
-       "prefs-custom-css": "kohandatud CSS",
-       "prefs-custom-js": "kohandatud JS",
-       "prefs-common-css-js": "Kõigi kujunduste ühine CSS/JS:",
+       "prefs-custom-css": "Kohandatud CSS",
+       "prefs-custom-js": "Kohandatud JavaScript",
+       "prefs-common-css-js": "Kõigi kujunduste ühine CSS/JavaScript:",
        "prefs-reset-intro": "Sellel leheküljel saad oma eelistused lähtestada võrgukoha vaike-eelistusteks.\nToimingut ei saa hiljem tühistada.",
        "prefs-emailconfirm-label": "E-posti kinnitus:",
        "youremail": "E-posti aadress:",
        "backend-fail-read": "Faili $1 ei saa lugeda.",
        "backend-fail-create": "Faili $1 ei saa kirjutada.",
        "backend-fail-maxsize": "Faili $1 ei saa kirjutada, sest see on {{PLURAL:$2|ühest baidist|$2 baidist}} suurem.",
+       "backend-fail-readonly": "Tagamälu \"$1\" on praegu kirjutuskaitstud. Põhjus: \"<em>$2</em>\"",
+       "backend-fail-synced": "Faili \"$1\" olek sisemälus on ühtimatu.",
+       "backend-fail-connect": "Ühendus tagamäluga \"$1\" ebaõnnestus.",
+       "backend-fail-internal": "Tagamälus \"$1\" esines tundmatu tõrge.",
        "backend-fail-contenttype": "Faili, mida soovitakse talletada asukohas \"$1\", sisutüüpi saanud kindlaks teha.",
+       "backend-fail-batchsize": "Tagamällu edastati {{PLURAL:$1|ühest|$1}} failioperatsioonist koosnev pakk; ülemmäär on {{PLURAL:$2|üks operatsioon|$2 operatsiooni}}.",
        "backend-fail-usable": "Faili $1 ei saa ebapiisavate õiguste või puuduvate kataloogide/konteinerite tõttu lugeda ega kirjutada.",
+       "filejournal-fail-dbconnect": "Tagamälus \"$1\" ebaõnnestus ühendumine päevikuga.",
+       "filejournal-fail-dbquery": "Tagamälus \"$1\" ebaõnnestus päeviku värskendamine.",
        "lockmanager-notlocked": "Rada \"$1\" ei saa lukust lahti teha, sest see pole lukus.",
        "lockmanager-fail-closelock": "Raja \"$1\" lukustusfaili ei saa sulgeda.",
        "lockmanager-fail-deletelock": "Raja \"$1\" lukustusfaili ei saa kustutada.",
+       "lockmanager-fail-acquirelock": "Ressursi \"$1\" luku hankimine ebaõnnestus.",
        "lockmanager-fail-openlock": "Raja \"$1\" lukustusfaili ei saa avada.",
+       "lockmanager-fail-releaselock": "Ressursi \"$1\" lukku ei õnnestunud vabastada.",
+       "lockmanager-fail-db-bucket": "Komplektis $1 ei õnnestunud saada ühendust piisavalt paljude lukustusandmebaasidega.",
+       "lockmanager-fail-db-release": "Andmebaasis $1 ei õnnestunud lukke vabastada.",
+       "lockmanager-fail-svr-acquire": "Serveris $1 ei õnnestunud lukke hankida.",
+       "lockmanager-fail-svr-release": "Serveris $1 ei õnnestunud lukke vabastada.",
        "zip-file-open-error": "Faili avamisel ZIP-kontrolliks tekkis tõrge.",
        "zip-wrong-format": "Valitud fail ei ole ZIP-fail.",
        "zip-bad": "See ZIP-fail on kas rikutud või muul põhjusel loetamatu.\nSelle turvalisust ei saa kontrollida.",
        "randomincategory": "Juhuslik lehekülg kategoorias",
        "randomincategory-invalidcategory": "\"$1\" pole sobiv kategooria nimi.",
        "randomincategory-nopages": "Kategoorias \"[[:Category:$1|$1]]\" puuduvad leheküljed.",
-       "randomincategory-selectcategory": "Hangi juhuslik lehekülg kategooriast: $1 $2.",
-       "randomincategory-selectcategory-submit": "Mine",
+       "randomincategory-category": "Kategooria:",
+       "randomincategory-legend": "Juhuslik lehekülg kategoorias",
        "randomredirect": "Juhuslik ümbersuunamine",
        "randomredirect-nopages": "Nimeruumis \"$1\" ei ole ümbersuunamislehekülgi.",
        "statistics": "Arvandmestik",
        "index-category-desc": "Leheküljel on <code><nowiki>__INDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu indekseerivad robotid lehekülge seal, kus nad muidu seda ei teeks.",
        "post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.",
        "post-expand-template-argument-category-desc": "Malli argumendi (midagi kolmekordsete looksulgude vahel, näiteks <code>{{{Foo}}})</code> hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Leheküljel on liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
-       "broken-file-category-desc": "Kategooria lisatakse, kui leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
+       "expensive-parserfunction-category-desc": "Lehekülg kasutab liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
+       "broken-file-category-desc": "Leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
        "hidden-category-category-desc": "Selle kategooria leheküljel on <code><nowiki>__HIDDENCAT__</nowiki></code>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
        "trackingcategories-nodesc": "Kirjeldus puudub.",
        "trackingcategories-disabled": "Kategooria on keelatud.",
        "mywatchlist": "Jälgimisloend",
        "watchlistfor2": "Kasutaja $1 $2 jaoks",
        "nowatchlist": "Sinu jälgimisloend on tühi.",
-       "watchlistanontext": "Oma jälgimisloendi nägemiseks ja muutmiseks pead $1.",
+       "watchlistanontext": "Palun logi sisse, et oma jälgimisloendit näha või muuta.",
        "watchnologin": "Ei ole sisse logitud",
        "addwatch": "Lisa jälgimisloendisse",
        "addedwatchtext": "Lehekülg \"[[:$1]]\" on lisatud sinu [[Special:Watchlist|jälgimisloendisse]].\nEdasised muudatused sellel leheküljel ja seotud aruteluleheküljel tuuakse ära jälgimisloendis.",
        "exbeforeblank": "sisu enne lehekülje tühjendamist: '$1'",
        "delete-confirm": "Lehekülje \"$1\" kustutamine",
        "delete-legend": "Kustutamine",
-       "historywarning": "'''Hoiatus:''' Kustutataval leheküljel on ligikaudu {{PLURAL:$1|ühe redaktsiooniga|$1 redaktsiooniga}} ajalugu:",
+       "historywarning": "<strong>Hoiatus:</strong> Kustutataval leheküljel on {{PLURAL:$1|ühe redaktsiooniga|$1 redaktsiooniga}} ajalugu:",
        "confirmdeletetext": "Sa oled andmebaasist kustutamas lehekülge koos kogu tema ajalooga.\nPalun kinnita, et tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et sinu tegevus on kooskõlas siinse [[{{MediaWiki:Policy-url}}|sisekorraga]].",
        "actioncomplete": "Toiming sooritatud",
        "actionfailed": "Toiming ebaõnnestus",
        "delete-edit-reasonlist": "Redigeeri kustutamise põhjuseid",
        "delete-toobig": "See lehekülg on pika redigeerimisajalooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.\nSelle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITENAME}}}} töö häirimist.",
        "delete-warning-toobig": "See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.\nEttevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.",
+       "deleteprotected": "Seda lehekülge ei saa kustutada, sest see on kaitstud.",
        "deleting-backlinks-warning": "'''Hoiatus:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Teised leheküljed]] viitavad leheküljele, mida oled kustutamas, või see lehekülg on kasutuses mallina.",
        "rollback": "Tühista muudatused",
        "rollback_short": "Tühista",
        "autoblockid": "Automaatblokeering #$1",
        "block": "Kasutaja blokeerimine",
        "unblock": "Kasutaja blokeeringu eemaldamine",
-       "blockip": "Kasutaja blokeerimine",
+       "blockip": "Blokeeri {{GENDER:$1|kasutaja}}",
        "blockip-legend": "Kasutaja blokeerimine",
        "blockiptext": "See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.\nSeda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].\nTäida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.",
        "ipaddressorusername": "IP-aadress või kasutajanimi:",
        "import": "Lehekülgede import",
        "importinterwiki": "Vikidevaheline import",
        "import-interwiki-text": "Vali importimiseks viki ja lehekülje pealkiri.\nRedigeerimisajad ja kaastööliste nimed säilitatakse.\nKõik vikidevahelised toimingud on [[Special:Log/import|impordilogis]].",
-       "import-interwiki-source": "Lähteviki/lehekülg:",
+       "import-interwiki-sourcewiki": "Lähteviki:",
+       "import-interwiki-sourcepage": "Alliklehekülg:",
        "import-interwiki-history": "Kopeeri selle lehekülje kogu ajalugu",
        "import-interwiki-templates": "Liida kõik mallid",
        "import-interwiki-submit": "Impordi",
        "import-error-interwiki": "Lehekülge \"$1\" ei imporditud, sest selle pealkirja hoitakse välislinkide (interviki) jaoks.",
        "import-error-special": "Lehekülge \"$1\" ei imporditud, sest see kuulub erinimeruumi, kus pole leheküljed lubatud.",
        "import-error-invalid": "Lehekülge \"$1\" ei imporditud, sest pealkiri, mille alla see siin toodaks, on vigane.",
+       "import-error-unserialize": "Lehekülje \"$1\" jadastatud redaktsiooni $2 ei õnnestunud tagasi muundada. Teate järgi kasutas redaktsioon vormingus $4 jadastatud sisumudelit $3.",
        "import-error-bad-location": "Redaktsiooni $2 sisumudeliga $3 ei saa talletada siin vikis leheküljel \"$1\", mis seda mudelit ei toeta.",
        "import-options-wrong": "{{PLURAL:$2|Vale valik|Valed valikud}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Etteantud juurlehekülje pealkiri on vigane.",
        "logentry-rights-rights": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust; enne oli $4, nüüd on $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|viidi}} automaatselt üle teise rühma; enne oli $4, nüüd on $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|laadis üles}} faili $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|laadis üles}} uue versiooni failist $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|laadis üles}} faili $3",
        "rightsnone": "(puudub)",
        "feedback-bugornote": "Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].\nKui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajanime ja teabega kasutatava võrgulehitsejaga kohta leheküljele \"[$3 $2]\".",
        "feedback-subject": "Teema:",
        "action-pagelang": "muuta lehekülje keelt",
        "log-name-pagelang": "Keele muutmise logi",
        "log-description-pagelang": "Siia on logitud lehekülgede keele muutmised.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutis}} lehekülje \"$3\" keelt: $4 → $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutis}} lehekülje \"$3\" keelt: $4 → $5.",
+       "default-skin-not-found": "Oih! Sinu viki vaikekujundus (<code>$wgDefaultSkin</code>) <code>$1</code> pole saadaval.\n\nPaistab, et sinu install sisaldab järgmisi kujundusi. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas neid lubada ja kuidas valida vaikekujundus.\n\n$2\n\n; Kui oled MediaWiki just paigaldanud:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code>skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja.\n\n; Kui oled MediaWikit just täiendanud:\n: MediaWiki 1.24-s ja uuemates versioonides pole paigaldatud kujundused enam automaatselt lubatud (vaata juhendist [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery kujunduste automaatse leidmise] kohta). Saad kleepida järgmised read leheküljele <code>LocalSettings.php</code>, et lubada kõik praegu paigaldatud kujundused:\n\n<pre>$3</pre>\n\n; Kui oled lehekülge <code>LocalSettings.php</code> just muutnud:\n: Kontrolli üle, ega kujunduste nimedes pole trükivigu.",
+       "default-skin-not-found-no-skins": "Oih! Sinu viki vaikekujundus (<code>$wgDefaultSkin</code>) <code>$1</code> pole saadaval.\n\nÜhtegi kujundust pole paigaldatud.\n\n; Kui oled MediaWiki just paigaldanud või täiendasid seda:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. MediaWiki 1.24 ja uuemad versioonid ei sisalda peahoidlas ühtegi kujundust. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code>skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas kujundusi lubada ja kuidas valida vaikekujundus.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (lubatud)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''keelatud''')"
 }
index ab0bb1f..b09c7d8 100644 (file)
@@ -19,7 +19,8 @@
                        "לערי ריינהארט",
                        "පසිඳු කාවින්ද",
                        "아라",
-                       "Joxemai"
+                       "Joxemai",
+                       "Arkaitz Barnetik"
                ]
        },
        "tog-underline": "Loturak azpimarratu:",
        "hidetoc": "ezkutatu",
        "collapsible-collapse": "Itxi",
        "collapsible-expand": "Zabaldu",
+       "confirmable-yes": "Bai",
+       "confirmable-no": "Ez",
        "thisisdeleted": "$1 ikusi edo leheneratu?",
        "viewdeleted": "$1 ikusi?",
        "restorelink": "{{PLURAL:$1|ezabatutako aldaketa bat|ezabatutako $1 aldaketa}}",
        "searchprofile-advanced-tooltip": "Lankideen izen zehatzetan bilatu",
        "search-result-size": "$1 ({{PLURAL:$2|hitz bat|$2 hitz}})",
        "search-result-category-size": "{{PLURAL:$1|kide 1|$1 kide}} ({{PLURAL:$2|azpikategoria 1|$2 azpikategoria}}, {{PLURAL:$3|fitxategi 1|$3 fitxategi}})",
-       "search-result-score": "Garrantzia: %$1",
        "search-redirect": "(«$1» orritik birbideratua)",
        "search-section": "($1 atala)",
        "search-suggest": "$1 esan nahi zenuen",
        "uploadwarning": "Igotzeko oharra",
        "uploadwarning-text": "Aldatu beheko fitxategiaren deskribapena, mesedez, eta saiatu berriz.",
        "savefile": "Fitxategia gorde",
-       "uploadedimage": "\"[[$1]]\" igo da",
-       "overwroteimage": "\"[[$1]]\"ren bertsio berri bat igo",
        "uploaddisabled": "Igoerak ezgaituta daude",
        "copyuploaddisabled": "URL bidezko igoera desaktibatuta.",
        "uploaddisabledtext": "Fitxategiak igotzea ezgaituta dago.",
        "license-nopreview": "(Aurreikuspenik ez)",
        "upload_source_url": " (baliozko URL publikoa)",
        "upload_source_file": " (zure ordenagailuko fitxategi bat)",
+       "listfiles-delete": "ezabatu",
        "listfiles-summary": "Orri berezi honek igotako fitxategi guztiak erakusten ditu.\nBerez, azken igotako fitxategiak zerrendaren goiko aldean azaltzen dira.",
        "listfiles_search_for": "Irudiaren izenagatik bilatu:",
        "imgfile": "fitxategia",
        "randomincategory": "Kategoriako ausazko orrialdea",
        "randomincategory-invalidcategory": "\"$1\" ez da kategoria izen baliagarri bat.",
        "randomincategory-nopages": "Ez dago orrialderik [[:Category:$1|$1]] kategorian.",
-       "randomincategory-selectcategory": "Lortu kategoria honetako ausazko orrialdea: $1 $2.",
-       "randomincategory-selectcategory-submit": "Joan",
        "randomredirect": "Ausazko birbideratzea",
        "randomredirect-nopages": "Ez dago birzuzenketarik \"$1\" izen-tartean.",
        "statistics": "Estatistikak",
        "watchlist-details": "{{PLURAL:$1|Orrialde $1|$1 orrialde}} jarraitzen, eztabaida orrialdeak kontuan hartu gabe.",
        "wlheader-enotif": "Posta bidezko ohartarazpena gaituta dago.",
        "wlheader-showupdated": "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
+       "wlnote": "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken '''$2''' orduetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}}, $3, $4 gisa.",
        "wlshowlast": "Erakutsi azken $1 orduak $2 egunak $3",
        "watchlist-options": "Jarraitze-zerrendaren aukerak",
        "watching": "Zerrendan gehitzen...",
        "import": "Orrialdeak inportatu",
        "importinterwiki": "Wikien arteko inportazioa",
        "import-interwiki-text": "Aukeratu inportatzeko wiki eta orrialde izenburu bat. Berrikuspenen datak eta egileak gorde egingo dira. Inportazio ekintza guzti hauek [[Special:Log/import|inportazio erregistroan]] gordetzen dira.",
-       "import-interwiki-source": "Jatorrizko wiki/orrialdea:",
        "import-interwiki-history": "Orrialde honen historiako bertsio guztiak kopiatu",
        "import-interwiki-templates": "Txantiloi guztiak sartu",
        "import-interwiki-submit": "Inportatu",
        "confirm-purge-bottom": "Orrialdea purgatzean katxea ezabatzen du eta orrialdearen bertsiorik eguneratuena erakustera behartzen du.",
        "confirm-watch-button": "Ados",
        "confirm-unwatch-button": "Ados",
+       "quotation-marks": "«$1»",
        "imgmultipageprev": "&larr; aurreko orrialdea",
        "imgmultipagenext": "hurrengo orrialdea &rarr;",
        "imgmultigo": "Joan!",
index 224adac..b4eb8d5 100644 (file)
        "talkpagelinktext": "Caraba",
        "specialpage": "Página Especial",
        "personaltools": "Herramientas presonalis",
-       "postcomment": "Nueva seción",
        "articlepage": "Vel artículu",
        "talk": "Caraba",
        "views": "Guipás",
        "externaldberror": "Marru d'autentificación esterna e la basi e datus, u bien nu t'alcuentras autorizau p'atualizal la tu cuenta esterna.",
        "login": "Entral",
        "nav-login-createaccount": "Entral/Crial cuenta",
-       "loginprompt": "Ebis atival las cookies pa entral en {{SITENAME}}.",
        "userlogin": "Entral/Crial cuenta",
        "userloginnocreate": "Entral",
        "logout": "Salil",
        "searchprofile-images-tooltip": "Landeal archivus",
        "searchprofile-everything-tooltip": "Landeal tol conteniu (encruyendu carabas)",
        "search-result-size": "$1 ({{PLURAL:$2|1 letra|$2 letras}})",
-       "search-result-score": "Emportáncia: $1%",
        "search-redirect": "(rederihil $1)",
        "search-section": "(seción $1)",
        "search-suggest": "Quieis izil: $1",
        "file-exists-duplicate": "Esti archivu es un dupricau {{PLURAL:$1|el siguienti archivu|los siguientis archivus}}:",
        "uploadwarning": "Avisu d´empuntu",
        "savefile": "Emburacal archivu",
-       "uploadedimage": "emputau \"[[$1]]\"",
-       "overwroteimage": "empuntá una nueva velsión de \"[[$1]]\"",
        "uploaddisabled": "Empuntus desativaus",
        "uploaddisabledtext": "El empuntu d'archivus está desativau.",
        "uploadscripted": "Esti archivu contieni script u cóigu HTML que puei sel mal entelpretau pol un escrucaol.",
        "watchlist-details": "{{PLURAL:$1|$1 artículu|$1 artículus}} vehilaus (sin contal las carabas).",
        "wlheader-enotif": "Se premitin notificacionis pol email.",
        "wlheader-showupdated": "Las páhinas que s'án emburacau dendi la úrtima vezi que las visoreasti son muestrás en '''negrina'''",
+       "wlnote": "Embahu {{PLURAL:$1|es el úrtimu chambu|son los úrtimus '''$1''' chambus}} enas úrtimas {{PLURAL:$2|oras|'''$2''' oras}}.",
        "wlshowlast": "Muestral úrtimus $1 oras $2 dias $3",
        "watchlist-options": "Ocionis de la mi lista e seguimientu",
        "watching": "Vehilandu...",
index 8b474a6..03027ad 100644 (file)
                        "아라",
                        "Mostafadaneshvar",
                        "Pouyana",
-                       "Oldstoneage"
+                       "Oldstoneage",
+                       "Omid.koli",
+                       "Alirezaaa",
+                       "Mogoeilor"
                ]
        },
        "tog-underline": "خط کشیدن زیر پیوندها:",
        "hidetoc": "نهفتن",
        "collapsible-collapse": "نهفتن",
        "collapsible-expand": "گسترش",
+       "confirmable-confirm": "{{GENDER:$1|شما}} مطمئن هستید؟",
        "confirmable-yes": "بله",
        "confirmable-no": "خیر",
        "thisisdeleted": "نمایش یا احیای $1؟",
        "parser-template-recursion-depth-warning": "محدودیت عمق بازگشت الگو رد شد ($1)",
        "language-converter-depth-warning": "محدودیت عمق مبدل زبانی رد شد ($1)",
        "node-count-exceeded-category": "صفحه‌هایی که از حداکثر تعداد گره تجاوز کرده‌اند",
-       "node-count-exceeded-category-desc": "ردÙ\87 Ø¨Ø±Ø§Û\8c ØµÙ\81حاتÛ\8c Ú©Ù\87 Ø¯Ø± Ø¢Ù\86Ù\87ا Ø´Ù\85ارÙ\86دÙ\87 فراتر رفته است.",
-       "node-count-exceeded-warning": "صفحه از حداکثر تعداد گره تجاوز کرد",
+       "node-count-exceeded-category-desc": "اÛ\8cÙ\86 ØµÙ\81Ø­Ù\87 Ø§Ø² ØªØ¹Ø¯Ø§Ø¯ Ø­Ø¯Ø§Ú©Ø«Ø± Ø§Ø´Ú©Ø§Ù\84 فراتر رفته است.",
+       "node-count-exceeded-warning": "صفحه از حداکثر تعداد گره فراتر رفته‌است",
        "expansion-depth-exceeded-category": "صفحه‌هایی که از حداکثر عمق بسط دادن تجاوز کرده‌اند",
-       "expansion-depth-exceeded-category-desc": "رده برای صفحاتی که در آنها عمق گسترش فراتر رفته است.",
+       "expansion-depth-exceeded-category-desc": "ردÙ\87 Ø¨Ø±Ø§Û\8c ØµÙ\81حاتÛ\8c Ú©Ù\87 Ø¯Ø± Ø¢Ù\86Ù\87ا Ø§Ø² Ø¹Ù\85Ù\82 Ú¯Ø³ØªØ±Ø´ Ù\81راتر Ø±Ù\81تÙ\87 Ø§Ø³Øª.",
        "expansion-depth-exceeded-warning": "صفحه حداکثر عمق بسط دادن تجاوز کرد",
        "parser-unstrip-loop-warning": "حلقه در دستور unstrip پیدا شد",
        "parser-unstrip-recursion-limit": "از حداکثر ارجاع در دستور unstrip تجاوز شد ($1)",
        "undo-success": "این ویرایش را می‌توان خنثی کرد.\nلطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که می‌خواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثی‌سازی ویرایش را به پایان ببرید.",
        "undo-failure": "به علت تعارض با ویرایش‌های میانی، این ویرایش را نمی‌توان خنثی کرد.",
        "undo-norev": "این ویرایش را نمی‌توان خنثی کرد چون وجود ندارد یا حذف شده‌است.",
-       "undo-nochange": "بÙ\87 Ù\86ظر Ù\85Û\8câ\80\8cرسد Ù\88Û\8cراÛ\8cØ´ Ø¯Ø± Ø­Ø§Ù\84 Ø­Ø§Ø¶Ø± Ø¨Ø§Ø·Ù\84 Ø¨Ù\88ده است.",
+       "undo-nochange": "بÙ\87 Ù\86ظر Ù\85Û\8câ\80\8cرسد Ù\88Û\8cراÛ\8cØ´ Ø§Ø² Ù¾Û\8cØ´ Ù\88اگرداÙ\86Û\8c Ø´ده است.",
        "undo-summary": "خنثی‌سازی ویرایش $1 توسط [[Special:Contributions/$2|$2]] ([[User talk:$2|بحث]])",
        "undo-summary-username-hidden": "خنثی‌سازی نسخهٔ $1 به دست یک کاربر پنهان‌شده",
        "cantcreateaccounttitle": "نمی‌توان حساب باز کرد",
        "revdelete-radio-set": "پنهان",
        "revdelete-radio-unset": "نمایان",
        "revdelete-suppress": "از دسترسی مدیران به داده نیز مانند سایر کاربران جلوگیری به عمل آید.",
-       "revdelete-unsuppress": "خاتÙ\85Ù\87Ù\94 Ù\85حدÙ\88دÛ\8cتâ\80\8cÙ\87ا Ø¯Ø± Ù\85Ù\88رد Ù\86سخÙ\87â\80\8cÙ\87اÛ\8c Ø§Ù\86تخاب شده",
+       "revdelete-unsuppress": "حذÙ\81 Ù\85حدÙ\88دÛ\8cتâ\80\8cÙ\87ا Ø¯Ø± Ø¨Ø§Ø²Ø¨Û\8cÙ\86Û\8câ\80\8cÙ\87اÛ\8c ØªØ±Ù\85Û\8cÙ\85â\80\8cشده",
        "revdelete-log": "دلیل:",
        "revdelete-submit": "اعمال بر {{PLURAL:$1|نسخهٔ|نسخه‌های}} انتخاب شده",
        "revdelete-success": "'''پیدایی نسخه با موفقیت به روز شد.'''",
        "difference-multipage": "(تفاوت بین صفحه‌ها)",
        "lineno": "سطر $1:",
        "compareselectedversions": "مقایسهٔ نسخه‌های انتخاب‌شده",
-       "showhideselectedversions": "نمایش/نهفتن نسخه‌های انتخاب شده",
+       "showhideselectedversions": "تغییر پدیداری بازبینی‌های انتخاب‌شده",
        "editundo": "خنثی‌سازی",
        "diff-empty": "(بدون تفاوت)",
        "diff-multi-sameuser": "({{PLURAL:$1|یک نسخهٔ میانی|$1 نسخهٔ میانی}} توسط کاربر مشابهی که نشان داده نشده)",
        "preferences": "ترجیحات",
        "mypreferences": "ترجیحات",
        "prefs-edits": "تعداد ویرایش‌ها:",
-       "prefsnologintext2": "لطفاً  $1  برای تنظیم ترجیحات کاربر.",
+       "prefsnologintext2": "خواهشمند است برای تغییر تنظیمات‌تان وارد شوید.",
        "prefs-skin": "پوسته",
        "skin-preview": "پیش‌نمایش",
        "datedefault": "بدون ترجیح",
        "right-proxyunbannable": "تاثیر نپذیرفتن از قطع دسترسی خودکار پروکسی‌ها",
        "right-unblockself": "بازکردن دسترسی خود",
        "right-protect": "تغییر میزان محافظت صفحه‌ها و ویرایش صفحه‌های محافظت‌شده آبشاری",
-       "right-editprotected": "ویرایش صفحه‌های محافظت شده به عنوان \"{{int:protect-level-sysop}}\"",
+       "right-editprotected": "ویرایش صفحه‌های محافظت‌شده به‌عنوان «{{int:protect-level-sysop}}»",
        "right-editsemiprotected": "ویرایش صفحه حفاظت‌شده به عنوان \"{{int:protect-level-autoconfirmed}}\"",
        "right-editinterface": "ویرایش واسط کاربری",
        "right-editusercssjs": "ویرایش صفحه‌های CSS و JS دیگر کاربرها",
        "recentchanges-label-plusminus": "حجم صفحه به اندازه این بایت‌ها تغییر یافته‌است",
        "recentchanges-legend-heading": "'''اختصارها:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)",
-       "recentchanges-legend-plusminus": "('' ±۱۲۳'')",
+       "recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)",
        "rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).",
        "rclistfrom": "نمایش تغییرات جدید با شروع از $3 $2",
        "rcshowhideminor": "$1 ویرایش‌های جزئی",
        "randomincategory": "صفحهٔ تصادفی در رده",
        "randomincategory-invalidcategory": "«$1» نامی معتبر برای یک ردهٔ نیست.",
        "randomincategory-nopages": "هیج صفحه‌ای در رده [[:Category:$1|$1]] وجود ندارد.",
-       "randomincategory-selectcategory": "دریافت صفحه‌ای تصادفی از دسته‌بندی: $1 $2.",
-       "randomincategory-selectcategory-submit": "برو",
+       "randomincategory-category": "رده:",
+       "randomincategory-legend": "صفحهٔ تصادفی در رده",
        "randomredirect": "تغییرمسیر تصادفی",
        "randomredirect-nopages": "هیج صفحهٔ تغییرمسیری در فضای نام «$1» موجود نیست.",
        "statistics": "آمار",
        "wantedtemplates": "الگوهای مورد نیاز",
        "mostlinked": "صفحه‌هایی که بیشتر از همه به آن‌ها پیوند داده شده‌است",
        "mostlinkedcategories": "رده‌هایی که بیشتر از همه به آن‌ها پیوند داده شده‌است",
-       "mostlinkedtemplates": "ببشترین صفحه‌های تراگنجایش‌شده",
+       "mostlinkedtemplates": "ببشترین صفحات تراگنجانده‌شده",
        "mostcategories": "صفحه‌های دارای بیشترین رده",
        "mostimages": "پرونده‌هایی که بیشتر از همه به آن‌ها پیوند داده شده‌است",
        "mostinterwikis": "صفحه‌های دارای بیشترین میان‌ویکی",
        "alllogstext": "نمایش یک‌جای تمام سیاهه‌های موجود در {{SITENAME}}.\nمی‌توانید با انتخاب نوع سیاهه، نام کاربری (حساس به کوچکی و بزرگی حروف) و صفحه‌های تغییریافته (حساس به بزرگی و کوچکی حروف)، نمایش را محدودتر سازید.",
        "logempty": "مورد منطبق با منظور شما در سیاهه یافت نشد.",
        "log-title-wildcard": "صفحه‌هایی را جستجو کن که عنوانشان با این عبارت آغاز می‌شود",
-       "showhideselectedlogentries": "نمایش/نهفتن موارد انتخابی در سیاهه",
+       "showhideselectedlogentries": "تغییر پدیداری موارد انتخاب‌شده سیاهه",
        "allpages": "همهٔ صفحه‌ها",
        "nextpage": "صفحهٔ بعد ($1)",
        "prevpage": "صفحهٔ قبلی ($1)",
        "noindex-category-desc": "این صفحه توسط ربات‌ها فهرست‌نشده‌است به این دلیل که واژه جادویی <code><nowiki>__NOINDEX__</nowiki></code> در آن یا در فضای که پرچم مجاز است دارد.",
        "index-category-desc": "این صفحه <code><nowiki>__INDEX__</nowiki></code> درونش دارد (و در فضای نامی است که پرچم مجاز است)، و به این دلیل توسط ربات مجاز است که به‌صورت عادی نباید می‌شد.",
        "post-expand-template-inclusion-category-desc": "پس از گسترش همهٔ الگوها، حجم صفحه بزرگتر از <code>$wgMaxArticleSize</code> است بنابراین بعضی از الگو گسترش نیافته‌اند.",
-       "post-expand-template-argument-category-desc": "پس از گسترش یک آرگومان الگو (چیزی بین آکولادهای سه‌تایی، مانند <code>{{{Foo}}}</code>) صفحه بزرگتر از <code>$wgMaxArticleSize</code> می‌شود.",
-       "expensive-parserfunction-category-desc": "تÙ\88ابع Ù\87زÛ\8cÙ\86Ù\87â\80\8cبر Ú¯Ø±Ø§Ù\86 (Ù\85اÙ\86Ù\86د <code>#ifexist</code>) Ø²Û\8cادÛ\8c Ø¯Ø± ØµÙ\81جÙ\87 Ø´Ø§Ù\85Ù\84 Ø´Ø¯Ù\87â\80\8cاست. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] را ببینید.",
-       "broken-file-category-desc": "ردÙ\87 Ø§Ù\81زÙ\88د Ù\85Û\8câ\80\8cØ´Ù\88د Ø§Ú¯Ø± ØµÙ\81Ø­Ù\87 Ø´Ø§Ù\85Ù\84 Û\8cÚ© Ù¾Û\8cÙ\88Ù\86د Ø´Ú©Ø³ØªÙ\87 Ø¨Ø§Ø´Ø¯ (Û\8cا Û\8cÚ© Ù¾Ø¨Ù\88Ù\86د Ø¨Ù\87 Ù¾Ø±Ù\88Ù\86دÙ\87Ù\94 ØªÙ\88کارÛ\8c Ø§Ø³Øª Ú©Ù\87 Ù\88جÙ\88د Ù\86دارد)",
-       "hidden-category-category-desc": "اÛ\8cÙ\86 Û\8cÚ© Ø±Ø¯Ù\87Ù\94 <code><nowiki>__HIDDENCAT__</nowiki></code> Ø¯Ø±Ù\88Ù\86Ø´ Ø§Ø³Øª Ú©Ù\87 Ø§Ø² Ù\86Ù\85اÛ\8cشش Ø¯Ø± Ø¬Ø¹Ø¨Ù\87Ù\94 Ù¾Û\8cÙ\88Ù\86دÙ\87اÛ\8c Ø±Ø¯Ù\87 Ø¨Ù\87â\80\8cصÙ\88رت Ù¾Û\8cØ´â\80\8cÙ\81رض جلوگیری می‌کند.",
+       "post-expand-template-argument-category-desc": "پس از گسترش یک آرگومان الگو (چیزی بین آکولادهای سه‌تایی، مانند <code>{{{Foo}}}</code>) صفحه بزرگتر از <code>$wgMaxArticleSize</code> می‌شود.",
+       "expensive-parserfunction-category-desc": "تÙ\88ابع Ù\87زÛ\8cÙ\86Ù\87â\80\8cبر Ú¯Ø±Ø§Ù\86 (Ù\85اÙ\86Ù\86د <code>#ifexist</code>) Ø²Û\8cادÛ\8c Ø¯Ø± ØµÙ\81جÙ\87 Ø§Ø³ØªÙ\81ادÙ\87 Ø´Ø¯Ù\87â\80\8c است. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] را ببینید.",
+       "broken-file-category-desc": "صÙ\81Ø­Ù\87 Ø´Ø§Ù\85Ù\84 Û\8cÚ© Ù¾Û\8cÙ\88Ù\86د Ù¾Ø±Ù\88Ù\86دÙ\87 Ø®Ø±Ø§Ø¨ Ø§Ø³Øª (Ù¾Û\8cÙ\88Ù\86دÛ\8c Ø¨Ø±Ø§Û\8c Ø¬Ø§Ø³Ø§Ø²Û\8câ\80\8cکردÙ\86 Û\8cÚ© Ù¾Ø±Ù\88Ù\86دÙ\87 Ù\87Ù\86گاÙ\85Û\8c Ú©Ù\87 Ø¢Ù\86 Ù¾Ø±Ù\88Ù\86دÙ\87 Ù\88جÙ\88د Ù\86دارد).",
+       "hidden-category-category-desc": "ردÙ\87 Ø¯Ø± Ù\85حتÙ\88اÛ\8c ØµÙ\81Ø­Ù\87â\80\8cاش Ø´Ø§Ù\85Ù\84 <code><nowiki>__HIDDENCAT__</nowiki></code> Ø§Ø³ØªØ\8c Ú©Ù\87 Ø§Ø² Ø¨Ù\87 Ø·Ù\88ر Ù¾Û\8cØ´â\80\8cÙ\81رض Ù\86شاÙ\86â\80\8cدادÙ\86 Ø¬Ø¹Ø¨Ù\87 Ù¾Û\8cÙ\88Ù\86دÙ\87اÛ\8c Ø±Ø¯Ù\87 Ø¯Ø± ØµÙ\81حات جلوگیری می‌کند.",
        "trackingcategories-nodesc": "توضیحی وجود ندارد.",
        "trackingcategories-disabled": "رده غیرفعال‌شده است",
        "mailnologin": "نشانی‌ای از فرستنده موجود نیست",
        "exbeforeblank": "محتوای صفحه قبل از خالی‌کردن این بود: «$1»",
        "delete-confirm": "حذف «$1»",
        "delete-legend": "حذف",
-       "historywarning": "'''هشدار!''' صفحه‌ای که قصد دارید حذف کنید تاریخچه‌ای با حدود $1 {{PLURAL:$1|نسخه|نسخه}} دارد:",
+       "historywarning": "<strong>هشدار:</strong> صفحه‌ای که در حال پاک‌کردن آن هستید دارای یک تاریخچه همراه $1 {{PLURAL:$1|بازبینی|بازبینی‌ها}} است:",
        "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه داده‌ها همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.",
        "actioncomplete": "عمل انجام شد",
        "actionfailed": "عمل ناموفق بود",
        "delete-edit-reasonlist": "ویرایش دلایل حذف",
        "delete-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nبه منظور جلوگیری از اختلال ناخواسته در {{SITENAME}} حذف این گونه صفحه‌ها محدود شده‌است.",
        "delete-warning-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nحذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;\nبا احتیاط ادامه دهید.",
-       "deleting-backlinks-warning": "''' هشدار:''' پیوند [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحات دیگر]] یا تراگنجایش صفحهٔ شما برای حذف.",
+       "deleteprotected": "شما نمی‌توانید این صفحه را پاک کنید چون که از آن محافظت شده‌است.",
+       "deleting-backlinks-warning": "''' هشدار:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحه‌های دیگری]] هستند که به صفحه‌ای که شما در حال حذف آن هستید پیوند دارند یا آن را تراگنجانیده‌اند.",
        "rollback": "واگردانی ویرایش‌ها",
        "rollback_short": "واگردانی",
        "rollbacklink": "واگردانی",
        "autoblockid": "شناسه قطع دسترسی خودکار #$1",
        "block": "بستن کاربر",
        "unblock": "بازکردن کاربر",
-       "blockip": "بستن کاربر",
+       "blockip": "مسدودکردن {{GENDER:$1|کاربر}}",
        "blockip-legend": "بستن کاربر",
        "blockiptext": "از فرم زیر برای بستن دسترسی ویرایش یک نشانی آی‌پی یا نام کاربری مشخص استفاده کنید.\nاین کار فقط فقط باید برای جلوگیری از خرابکاری و بر اساس [[{{MediaWiki:Policy-url}}|سیاست قطع دسترسی]] انجام شود.\nدلیل مشخص این کار را در زیر ذکر کنید (مثلاً با ذکر صفحه‌های به‌خصوصی که مورد خرابکاری واقع شده‌اند).",
        "ipaddressorusername": "نشانی آی‌پی یا نام کاربری:",
        "import": "درون‌ریزی صفحه‌ها",
        "importinterwiki": "درون‌ریزی تراویکی",
        "import-interwiki-text": "یک ویکی و یک نام صفحه را انتخاب کنید تا اطلاعات از آن درون‌ریزی شود.\nتاریخ نسخه‌ها و نام ویرایش‌کنندگان ثابت خواهد ماند.\nاطلاعات مربوط به درون‌ریزی صفحه‌ها در [[Special:Log/import|سیاههٔ درون‌ریزی‌ها]] درج خواهد شد.",
-       "import-interwiki-source": "ویکی/صفحهٔ منبع:",
+       "import-interwiki-sourcewiki": "ویکی منبع:",
+       "import-interwiki-sourcepage": "صفحهٔ مبدأ:",
        "import-interwiki-history": "تمام نسخه‌های تاریخچهٔ این صفحه انتقال داده شود",
        "import-interwiki-templates": "تمام الگوها را شامل شود",
        "import-interwiki-submit": "درون‌ریزی شود",
        "pageinfo-magic-words": "{{PLURAL:$1|حرف|حروف}} جادویی ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1| ردهٔ|ردهٔ}} پنهان ( $1 )",
        "pageinfo-templates": "{{PLURAL:$1|الگو|الگو}} استفاده‌شده ($1)",
-       "pageinfo-transclusions": "{{PLURAL:$1|صفحهٔ|صفحه‌های}} تراگنجایش‌شده در ($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|صفحهٔ|صفحه‌های}} تراگنجانش‌شده در ($1)",
        "pageinfo-toolboxlink": "اطلاعات صفحه",
        "pageinfo-redirectsto": "تغییرمسیر به",
        "pageinfo-redirectsto-info": "اطلاعات",
        "log-name-pagelang": "تغییر سیاههٔ زبان",
        "log-description-pagelang": "این سیاههٔ تغییرات صفحهٔ زبان‌ها است.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای  $3  از  $4  به  $5 .",
+       "default-skin-not-found": "اوه! پوسته پیش‌فرض برای ویکی شما (<code>$wgDefaultSkin</code>)، <code>$1</code>، در دسترس نیست.\n\nبه نظر می‌آید نصب شما شامل پوسته‌های زیر می‌شود. [https://www.mediawiki.org/wiki/Manual:Skin_configuration راهنما: تنظیمات پوسته] را برای کسب اطلاعات در باره چگونگی فعال‌ساختن آن‌ها و انتخاب پیش‌فرض ببینید.\n\n$2\n\n; اگر اخیراً مدیاویکی را نصب کرده‌اید:\n: احتمالاً از گیت، یا به طور مستقیم از کد مبدأ که از چند متد دیگر استفاده می‌کند نصب کردید. انتظار می‌رود. چند پوسته از [https://www.mediawiki.org/wiki/Category:All_skins فهرست پوسته mediawiki.org] نصب کنید، که همراه چندین پوسته و افزونه هستند. شما می‌توانید شاخه <code>skins/</code> را از آن نسخه‌برداری کرده و بچسبانید.\n\n:* همسانه‌سازی یکی از مخازن <code>mediawiki/skins/*</code> از طریق گیت به داخل شاخه <code>skins/</code> از نصب مدیاویکی‌تان.\n: انجام این کار با مخزن گیت‌تان تداخل نمی‌کند اگر توسعه‌دهنده مدیاویکی هستید.\n\n; اگر اخیراً مدیاویکی را ارتقاء دادید:\n: مدیاویکی ۱٫۲۴ و تازه‌تر دیگر به طور خودکار پوسته‌های نصب‌شده را فعال نمی‌کند ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery راهنما: کشف خودکار پوسته] را ببینید). شما می‌توانید خطوط زیر را به داخل <code>LocalSettings.php</code> بچسبانید تا همه پوسته‌های نصب‌شده جاری را فعال کنید:\n\n<pre>$3</pre>\n\n; اگر اخیراً <code>LocalSettings.php</code> را تغییر دادید:\n: نام پوسته‌ها را برای غلط املایی دوباره بررسی کنید.",
+       "default-skin-not-found-no-skins": "پوستهٔ پیش‌فرض برای ویکی شما  (<code>$wgDefaultSkin</code>)، <code>$1</code> هست موجود نیست.\n\nشما پوسته‌ها را نصب نکرده‌اید.\n\n:اگر مدیاویکی را به‌روز یا نصب کرده‌اید:\n:ممکن است از گیت یا از کند منبع با روش های دیگر نصب کرده‌اید. انتظار می‌رود MediaWiki 1.24 یا جدیدتر در پوشهٔ اصلی هیچ پوسته‌ای نداشته باشند.\nسعی کنید تعدادی پوسته از [https://www.mediawiki.org/wiki/Category:All_skins پوشهٔ پوسته‌های مدیاویکی]، با:\n:*دانلود کردن [https://www.mediawiki.org/wiki/Download نصب‌کننده تاربال]، که با چندین پوسته و افزونه هست. شما می توانید پوستهٔ <code>skins/</code> را  از آن کپی و پیست کنید.\n:*کلون کردن یکی از <code>mediawiki/skins/*</code> از ریپوزیتوری در پوشهٔ <code>skins/</code> مدیاویکی‌تان.\n:اگر توسعه‌دهندهٔ مدیاویکی هستید، انجام این کار نباید تعارضی با ریپوزیتوری گیت شما داشته باشد. برای اطلاعات بیشتر و فعال کردن پوسته‌ها و انتخاب آنها به عنوان پیش‌فرض [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: تنظیمات پوسته] را مشاهده کنید.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (فعال)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر فعال''')"
 }
index c318f3e..0d165ff 100644 (file)
        "mergehistory-same-destination": "Lähde- ja kohdesivut eivät voi olla samat",
        "mergehistory-reason": "Syy:",
        "mergelog": "Yhdistämisloki",
-       "pagemerge-logentry": "yhdisti kohteen [[$1]] kohteeseen [[$2]] (muokkaukseen $3 saakka)",
+       "pagemerge-logentry": "yhdisti kohteen [[$1]] kohteeseen [[$2]] (versiot $3 saakka)",
        "revertmerge": "Peru yhdistäminen",
        "mergelogpagetext": "Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.",
        "history-title": "Sivun ”$1” muutoshistoria",
        "compareselectedversions": "Vertaile valittuja versioita",
        "showhideselectedversions": "Näytä tai piilota valitut versiot",
        "editundo": "kumoa",
-       "diff-empty": "(ei eroavaisuuksia)",
+       "diff-empty": "(ei mitään eroa)",
        "diff-multi-sameuser": "({{PLURAL:$1|Yhtä välissä olevaa versiota|$1 välissä olevaa versiota}} samalta käyttäjältä ei näytetä)",
        "diff-multi-otherusers": "({{PLURAL:$1|Yhtä välissä olevaa versiota|$1 välissä olevaa versiota}} {{PLURAL:$2|toisen käyttäjän tekemänä|$2 käyttäjän tekeminä}} ei näytetä)",
        "diff-multi-manyusers": "(Versioiden välissä on {{PLURAL:$1|yksi muu muokkaus|$1 muuta muokkausta, jotka on tehnyt {{PLURAL:$2|yksi käyttäjä|yli $2 eri käyttäjää}}}}.)",
        "recentchangeslinked-feed": "Linkitettyjen sivujen muutokset",
        "recentchangeslinked-toolbox": "Linkitettyjen sivujen muutokset",
        "recentchangeslinked-title": "Sivulta $1 linkitettyjen sivujen muutokset",
-       "recentchangeslinked-summary": "Tämä toimintosivu näyttää muutokset sivuihin, joihin on viitattu tältä sivulta. [[Special:Watchlist|Tarkkailulistallasi]] olevat sivut on '''lihavoitu'''.",
-       "recentchangeslinked-page": "Sivu",
-       "recentchangeslinked-to": "Näytä muutokset sivuihin, joilla on linkki annettuun sivuun",
+       "recentchangeslinked-summary": "Tämä on luettelo muutoksista, jotka on viimeksi tehty niihin sivuihin, joihin johtaa linkki tietystä sivusta (tai jonkun määrätyn luokan sisältämistä sivuista). Omalla [[Special:Watchlist|tarkkailulistallasi]] olevat sivut on <strong>lihavoitu</strong>.",
+       "recentchangeslinked-page": "Sivun nimi:",
+       "recentchangeslinked-to": "Näytä sen sijaan muutokset sivuihin, joista on linkki tähän sivuun",
        "upload": "Tallenna tiedosto",
        "uploadbtn": "Tallenna tiedosto",
        "reuploaddesc": "Peruuta tallennus ja palaa tallennuslomakkeelle.",
        "randomincategory": "Satunnainen sivu luokasta",
        "randomincategory-invalidcategory": "$1 ei ole kelvollinen luokan nimi.",
        "randomincategory-nopages": "Luokassa [[:Category:$1|$1]] ei ole sivuja.",
-       "randomincategory-selectcategory": "Hae satunnainen sivu luokasta: $1 $2",
-       "randomincategory-selectcategory-submit": "Hae",
+       "randomincategory-category": "Luokka:",
+       "randomincategory-legend": "Satunnainen sivu luokassa",
        "randomredirect": "Satunnainen ohjaus",
        "randomredirect-nopages": "Nimiavaruudessa ”$1” ei ole ohjaussivuja.",
        "statistics": "Tilastot",
        "unusedimagestext": "Seuraavat tiedostot ovat olemassa, mutta niitä ei käytetä millään sivulla.\nHuomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla, jolloin tiedosto saattaa olla tässä listassa, vaikka sitä käytetäänkin.",
        "unusedcategoriestext": "Nämä luokat ovat olemassa, mutta niitä ei käytetä.",
        "notargettitle": "Ei kohdetta",
-       "notargettext": "Et ole määritellyt kohdesivua tai -käyttäjää johon toiminto kohdistuu.",
+       "notargettext": "Et ole määritellyt kohteeksi sivua tai käyttäjää, johon toiminto suoritetaan.",
        "nopagetitle": "Kohdesivua ei ole olemassa.",
        "nopagetext": "Määritettyä kohdesivua ei ole olemassa.",
        "pager-newer-n": "← {{PLURAL:$1|1 uudempi|$1 uudempaa}}",
        "exbeforeblank": "ennen tyhjentämistä sisälsi: ”$1”",
        "delete-confirm": "Poista ”$1”",
        "delete-legend": "Sivun poisto",
-       "historywarning": "'''Varoitus:''' Sivua, jota olet poistamassa, on muokattu noin $1 {{PLURAL:$1|kerta|kertaa}}:",
+       "historywarning": "<strong>Varoitus:</strong> Sivulla, jota olet poistamassa, on muokkaushistoriaa ja sitä on muokattu $1 {{PLURAL:$1|kerran|kertaa}}:",
        "confirmdeletetext": "Olet poistamassa sivun tai tiedoston ja kaiken sen historian. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.",
        "actioncomplete": "Toiminto suoritettu",
        "actionfailed": "Toiminto epäonnistui",
        "dellogpagetext": "Alla on loki viimeisimmistä poistoista.",
        "deletionlog": "poistoloki",
        "reverted": "Palautettu aikaisempaan versioon",
-       "deletecomment": "Syy",
+       "deletecomment": "Syy:",
        "deleteotherreason": "Muu syy tai tarkennus",
        "deletereasonotherlist": "Muu syy",
        "deletereason-dropdown": "* Yleiset poistosyyt\n** Spam tai mainossivu\n** Vandalismi\n** Tekijänoikeusrikkomus\n** Sivun tekijän pyyntö\n** Virheellinen ohjaus",
        "delete-edit-reasonlist": "Muokkaa poistosyitä",
        "delete-toobig": "Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistamista on rajoitettu suorituskykysyistä.",
        "delete-warning-toobig": "Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.",
-       "delete-cantedit": "Et voi poistaa tätä sivua, koska sinulla ei ole oikeutta sen muokkaamiseen.",
+       "deleteprotected": "Et voi poistaa tätä sivua, koska se on suojattu.",
        "deleting-backlinks-warning": "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa [[Special:WhatLinksHere/{{FULLPAGENAME}}|linkkejä muilta sivuilta]], tai sivu on sisällytetty muuhun sivuun.",
        "rollback": "palauta aiempaan versioon",
        "rollback_short": "Palautus",
        "sp-contributions-submit": "Hae",
        "whatlinkshere": "Tänne viittaavat sivut",
        "whatlinkshere-title": "Sivut, jotka viittaavat sivulle $1",
-       "whatlinkshere-page": "Sivu",
+       "whatlinkshere-page": "Sivu:",
        "linkshere": "Seuraavilta sivuilta on linkki sivulle <strong>[[:$1]]</strong>:",
        "nolinkshere": "Sivulle <strong>[[:$1]]</strong> ei ole linkkejä.",
        "nolinkshere-ns": "Sivulle <strong>[[:$1]]</strong> ei ole linkkejä valitussa nimiavaruudessa.",
        "import": "Tuo sivuja",
        "importinterwiki": "Tuo sivuja muista wikeistä (transwiki import)",
        "import-interwiki-text": "Valitse wiki ja sivun nimi tuontia varten.\nVersioiden päivämäärät ja muokkaajien nimet säilyvät ennallaan. \nKaikki wikienväliset tuontitapahtumat kirjataan [[Special:Log/import|tuontilokiin]].",
-       "import-interwiki-source": "Lähdewiki/sivu:",
+       "import-interwiki-sourcewiki": "Lähdewiki:",
+       "import-interwiki-sourcepage": "Lähdesivu:",
        "import-interwiki-history": "Kopioi sivun koko historia ja kaikki versiot",
        "import-interwiki-templates": "Ota mukaan kaikki mallineet",
        "import-interwiki-submit": "Tuo",
        "log-name-pagelang": "Kielenvaihtoloki",
        "log-description-pagelang": "Tämä on loki, johon merkitään muutokset sivujen kieliasetuksissa.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5.",
+       "default-skin-not-found": "Hupsista! Oletuksena tuleva ulkoasu sinun wikillesi (<code>$wgDefaultSkin</code>), <code>$1</code>, ei ole saatavilla.\n\n\n<strong>Alla on ohjeita englanniksi:</strong>\n\n\nYour installation seems to include the following skins. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable them and choose the default.\n\n$2\n\n; If you have just installed MediaWiki: \n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by: :* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it. \n:* Cloning one of the <code>mediawiki/skins/*</code> repositories via git into the <code>skins/</code> directory of your MediaWiki installation. \n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n\n; If you have just upgraded MediaWiki: \n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following lines into <code>LocalSettings.php</code> to enable all currently installed skins:\n\n<pre>$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>: \n: Double-check the skin names for typos.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (käytössä)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ei käytössä''')"
 }
index 5a3397d..3bc686f 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Kaganer",
-                       "Mestos"
+                       "Mestos",
+                       "아라"
                ]
        },
        "tog-underline": "Linkitten alleviivaus",
@@ -15,7 +16,6 @@
        "tog-showtoolbar": "Näytä työneuvopalkki (JavaScript)",
        "tog-editondblclick": "Mookkaa sivuja kaksoisknapituksella (JavaScript)",
        "tog-editsectiononrightclick": "Aktiveeraa seksuuni mookkaus oikeapuolen klikkauksella seksuuni tittelhiin (JavaScript)",
-       "tog-rememberpassword": "Muista minun lokkauksen tässä weppilukijassa (eninthään $1 {{PLURAL:$1|päivä|päivää}})",
        "tog-watchcreations": "Lissää sivut mitä luon valvontasivule",
        "tog-watchdefault": "Lissää sivut mitä mie mookkaan valvontasivule",
        "tog-watchmoves": "Lissää sivut mitä mie siirän minun valvontasivule",
        "qbmyoptions": "Minun inställninkit",
        "faq": "Useasti kysytyt kysymykset",
        "faqpage": "Project:Useasti kysytyt kysymykset",
-       "vector-action-addsection": "Lissää aine",
-       "vector-action-delete": "Ota poies",
-       "vector-action-move": "Siirä",
-       "vector-action-protect": "Suojaa",
-       "vector-action-undelete": "Pane takashiin",
-       "vector-action-unprotect": "Muuta suojaa",
-       "vector-view-create": "Luo",
-       "vector-view-edit": "Mookkaa",
-       "vector-view-history": "Näytä histuuria",
-       "vector-view-view": "Lue",
-       "vector-view-viewsource": "Näytä lähekooti",
        "actions": "Toiminat",
        "namespaces": "Nimityhjyyet",
        "variants": "Varianttia",
        "remembermypassword": "Muista minun lokkauksen tässä taattorissa (korkeinthaans $1 {{PLURAL:$1|päivä|päivää}})",
        "login": "Lokkaa sisäle",
        "nav-login-createaccount": "Lokkaa sisäle / luo konttu",
-       "loginprompt": "Lokkauksheen tähhään {{SITENAME}} tarvithaan ette olet aktiveeranu kuukit .",
        "userlogin": "Lokkaa sisäle/ luo konttu",
        "userlogout": "Lokkaa ulos",
        "nologin": "Eikos sulla ole käyttäjäkonttua, '''$1'''.",
        "searchmenu-exists": "'''Sivu [[:$1]] löytyy tästä wikistä.'''",
        "searchmenu-new": "'''Luo sivu ''[[:$1]]'' tähhaän wikhiin.'''",
        "searchprofile-articles": "Sisältösivut",
-       "searchprofile-project": "Apu ja prujektisivut",
        "searchprofile-images": "Mylttimeetia",
        "searchprofile-everything": "Kaikki",
        "searchprofile-advanced": "Avanseerattu",
        "searchprofile-articles-tooltip": "Hae nimityhjyyestä $1",
-       "searchprofile-project-tooltip": "Hae nimityhjyyestä $1",
        "searchprofile-images-tooltip": "Hae fiiliä",
        "searchprofile-everything-tooltip": "Hae kaikesta (keskustelusivut kans)",
        "searchprofile-advanced-tooltip": "Hae tietyissä nimityhjyissä",
        "recentchanges-label-bot": "Tämän muutoksen teki botti",
        "recentchanges-label-unpatrolled": "Tätä muutosta ei ole vielä tarkistettu",
        "rcnotefrom": "Alla on muutokset '''$2'''lähtien. (korkeinthaans '''$1''' näytethään).",
-       "rclistfrom": "Näytä uuet muutokset jälkhiin $1",
+       "rclistfrom": "Näytä uuet muutokset jälkhiin $3 $2",
        "rcshowhideminor": "$1 pienet muutokset",
        "rcshowhidebots": "$1 ropootit",
        "rcshowhideliu": "\n$1 sisäle lokaattuja käyttäjiä",
        "upload": "Lattaa ylös fiili",
        "uploadlogpage": "Ylöslattauksen loki",
        "filedesc": "Yhteenveto",
-       "uploadedimage": "lattasi ylös [[$1]]",
        "license": "Lisensi",
        "license-header": "Lisensi",
        "file-anchor-link": "Fiili",
        "booksources-go": "Mene",
        "log": "Lokit",
        "allpages": "Kaikki sivut",
-       "alphaindexline": "$1…$2",
        "allarticles": "Kaikki sivut",
        "allpagessubmit": "Mene",
        "categories": "Katekuurit",
index 2e56326..40620b4 100644 (file)
        "talkpagelinktext": "Kjak",
        "specialpage": "Serstøk síða",
        "personaltools": "Persónlig amboð",
-       "postcomment": "Nýtt brot",
        "articlepage": "Vís síðu við innihaldi",
        "talk": "Kjak",
        "views": "Skoðanir",
        "externaldberror": "Antin var talan um ein atgongd dátubasu feil, ella hevur tú ikki loyvi til at dagføra tína eksternu kontu.",
        "login": "Rita inn",
        "nav-login-createaccount": "Stovna kontu ella rita inn",
-       "loginprompt": "Cookies má verða sett til fyri at innrita á {{SITENAME}}.",
        "userlogin": "Stovna kontu ella rita inn",
        "userloginnocreate": "Rita inn",
        "logout": "Útrita",
        "searchprofile-advanced-tooltip": "Leita í ávísum navnaøkjum",
        "search-result-size": "$1 ({{PLURAL:$2|1 orð|$2 orð}})",
        "search-result-category-size": "{{PLURAL:$1|1 limur|$1 limir}} ({{PLURAL:$2|1 undirbólkur|$2 undirbólkar}}, {{PLURAL:$3|1 fíla|$3 fílur}})",
-       "search-result-score": "Viðkomandi: $1%",
        "search-redirect": "(umstilling $1)",
        "search-section": "(sektión $1)",
        "search-suggest": "Meinti tú: $1",
        "uploadwarning": "Ávaring",
        "uploadwarning-text": "Vinarliga broyt frágreiðingina fyri fíluna og royn umaftur.",
        "savefile": "Goym fílu",
-       "uploadedimage": "sent \"[[$1]]\" upp",
-       "overwroteimage": "legði út eina nýggja versjón av \"[[$1]]\"",
        "uploaddisabled": "Útleggjan av fílum er óvirkin.",
        "copyuploaddisabled": "Útleggjan frá URL er óvirkið.",
        "uploaddisabledtext": "Útleggjan av fílum er óvirkið.",
        "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á tínum vaktarlista, kjaksíður ikki íroknaðar.",
        "wlheader-enotif": "Tað ber nú til at senda teldupost.",
        "wlheader-showupdated": "Síður sum eru broyttar síðan tú seinast vitjaði tær, eru vístar við '''feitum'''.",
+       "wlnote": "Niðanfyri {{PLURAL:$1|stendur seinasta broytingin|standa seinastu '''$1''' broytingarnar}} seinasta/u {{PLURAL:$2| tíman|'''$2''' tímarnar}} hin $3 kl. $4",
        "wlshowlast": "Vís seinastu $1 tímar $2 dagar $3",
        "watchlist-options": "Møguleikar í ansingarlistanum",
        "watching": "Eftirlitir...",
index 8de0858..36ec047 100644 (file)
        "tog-watchdefault": "Ajouter les pages et les fichiers que je modifie à ma liste de suivi",
        "tog-watchmoves": "Ajouter les pages et les fichiers que je renomme à ma liste de suivi",
        "tog-watchdeletion": "Ajouter les pages et les fichiers que je supprime à ma liste de suivi",
-       "tog-watchrollback": "Ajouter à ma liste de suivi les pages sur lesquelles j’ai effectué une annulation",
+       "tog-watchrollback": "Ajouter à ma liste de suivi les pages sur lesquelles j’ai effectué une révocation",
        "tog-minordefault": "Marquer toutes mes modifications comme mineures par défaut",
        "tog-previewontop": "Afficher la prévisualisation au-dessus de la zone de modification",
        "tog-previewonfirst": "Afficher la prévisualisation lors de la première modification",
        "edit": "Modifier",
        "edit-local": "Modifier la description locale",
        "create": "Créer",
-       "create-local": "ajouter une description locale",
+       "create-local": "Ajouter une description locale",
        "editthispage": "Modifier cette page",
        "create-this-page": "Créer cette page",
        "delete": "Supprimer",
        "userrights-lookup-user": "Gestion des groupes d'utilisateurs",
        "userrights-user-editname": "Entrez un nom d'utilisateur :",
        "editusergroup": "Modification des groupes d'utilisateurs",
-       "editinguser": "Modification des droits de l'{{GENDER:$1|utilisateur|utilisatrice}} <strong>[[User:$1|$1]]</strong>' $2",
+       "editinguser": "Modification des droits de l’{{GENDER:$1|utilisateur|utilisatrice}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Modifier les groupes de l'utilisateur",
        "saveusergroups": "Enregistrer les groupes de l'utilisateur",
        "userrights-groupsmember": "Membre de :",
        "randomincategory": "Page au hasard dans la catégorie",
        "randomincategory-invalidcategory": "« $1 » n’est pas un nom de catégorie valide.",
        "randomincategory-nopages": "Il n’y a pas de page dans [[:Category:$1]].",
-       "randomincategory-selectcategory": "Prendre une page au hasard dans la catégorie : $1 $2.",
-       "randomincategory-selectcategory-submit": "Aller",
+       "randomincategory-category": "Catégorie :",
+       "randomincategory-legend": "Page aléatoire dans la catégorie",
        "randomredirect": "Page de redirection au hasard",
        "randomredirect-nopages": "Il n'y a aucune page de redirection dans l'espace de noms « $1 ».",
        "statistics": "Statistiques",
        "exbeforeblank": "contenait avant blanchiment « $1 »",
        "delete-confirm": "Supprimer « $1 »",
        "delete-legend": "Supprimer",
-       "historywarning": "'''Attention :''' la page que vous êtes sur le point de supprimer a un historique avec environ $1 {{PLURAL:$1|version|versions}} :",
+       "historywarning": "<strong>Attention :</strong> la page que vous êtes sur le point de supprimer a un historique avec $1 {{PLURAL:$1|version|versions}} :",
        "confirmdeletetext": "Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c’est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].",
        "actioncomplete": "Action effectuée",
        "actionfailed": "L'action a échoué",
        "delete-edit-reasonlist": "Modifier les motifs de suppression de page",
        "delete-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa suppression de telles pages a été restreinte pour prévenir des perturbations accidentelles de {{SITENAME}}.",
        "delete-warning-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;\nveuiller ne procéder qu'avec prudence.",
-       "delete-cantedit": "Vous ne pouvez pas supprimer cette page car vous n’avez pas le droit de la modifier.",
+       "deleteprotected": "Vous ne pouvez pas supprimer cette page car elle a été protégée.",
        "deleting-backlinks-warning": "'''Attention :''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|D’autres pages]] ont un lien vers ou incorporent la page que vous allez supprimer.",
        "rollback": "Révoquer les modifications",
        "rollback_short": "Révoquer",
        "import": "Importer des pages",
        "importinterwiki": "Importation inter-wiki",
        "import-interwiki-text": "Sélectionnez un wiki et un titre de page à importer.\nLes dates des versions et les noms des contributeurs seront préservés.\nToutes les actions d'importation inter-wiki sont consignées dans l'[[Special:Log/import|historique des importations]].",
-       "import-interwiki-source": "Wiki et page sources :",
+       "import-interwiki-sourcewiki": "Wiki source :",
+       "import-interwiki-sourcepage": "Page source :",
        "import-interwiki-history": "Copier toutes les versions de l’historique de cette page",
        "import-interwiki-templates": "Inclure tous les modèles",
        "import-interwiki-submit": "Importer",
        "log-name-pagelang": "Tracer les changements de langue",
        "log-description-pagelang": "Ceci est un journal des changements dans les langues des pages.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5.",
-       "default-skin-not-found": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVotre installation semble inclure les habillages suivants. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de configuration des habillages] pour savoir comment les activer et choisir celui par défaut.\n\n$2\n\n; Si vous venez juste d’installer MédiaWiki :\n: Vous l’avez probablement installé depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en:\n:* Téléchargeant le [https://www.mediawiki.org/wiki/Download fichier tar de l’installeur], qui comprend plusieurs habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:* Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MédiaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git, si vous êtes un développeur de MédiaWiki.\n\n; Si vous venez juste de mettre à jour MédiaWiki :\n: MédiaWiki 1.24 et au-delà n’active plus automatiquement les habillages installés (voyez [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery le manuel sur la découverte automatique des habillages]). Vous pouvez coller les lignes suivantes dans <code>LocalSettings.php</code> pour activer tous les habillages actuellement installés :\n\n<pre>$3</pre>\n\n; Si vous venez de modifier <code>LocalSettings.php</code> :\n: Vérifiez deux fois le nom des habillages pour éviter les erreurs de frappe.",
-       "default-skin-not-found-no-skins": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVous n’avez aucun habillage d’installé.\n\n; Si vous venez juste d’installer ou de mettre à jour MédiaWiki :\n: Vous l’avez sans doute fait depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. MédiaWiki 1.24 et au-delà n’inclut aucun habillage dans le dépôt principal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en :\n:* Téléchargeant [https://www.mediawiki.org/wiki/Download le fichier tar de l’installeur], qui comprend différents habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:*Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MédiaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git si vous êtes un développeur de MédiaWiki. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de la configuration des habillages] pour des instructions sur la manière d’activer les habillages et choisir celui par défaut.",
+       "default-skin-not-found": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVotre installation semble inclure les habillages suivants. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de configuration des habillages] pour savoir comment les activer et choisir celui par défaut.\n\n$2\n\n; Si vous venez juste d’installer MediaWiki :\n: Vous l’avez probablement installé depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en:\n:* Téléchargeant le [https://www.mediawiki.org/wiki/Download fichier tar de l’installeur], qui comprend plusieurs habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:* Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MediaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git, si vous êtes un développeur de MediaWiki.\n\n; Si vous venez juste de mettre à jour MediaWiki :\n: MediaWiki 1.24 et au-delà n’active plus automatiquement les habillages installés (voyez [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery le manuel sur la découverte automatique des habillages]). Vous pouvez coller les lignes suivantes dans <code>LocalSettings.php</code> pour activer tous les habillages actuellement installés :\n\n<pre>$3</pre>\n\n; Si vous venez de modifier <code>LocalSettings.php</code> :\n: Vérifiez deux fois le nom des habillages pour éviter les erreurs de frappe.",
+       "default-skin-not-found-no-skins": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVous n’avez aucun habillage d’installé.\n\n; Si vous venez juste d’installer ou de mettre à jour MediaWiki :\n: Vous l’avez sans doute fait depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. MediaWiki 1.24 et au-delà n’inclut aucun habillage dans le dépôt principal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en :\n:* Téléchargeant [https://www.mediawiki.org/wiki/Download le fichier tar de l’installeur], qui comprend différents habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:*Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MediaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git si vous êtes un développeur de MediaWiki. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de la configuration des habillages] pour des instructions sur la manière d’activer les habillages et choisir celui par défaut.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activé)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''désactivé''')"
 }
index 02f26b9..29c6d43 100644 (file)
        "talkpagelinktext": "discutar",
        "specialpage": "Pâge spèciâla",
        "personaltools": "Outils a sè",
-       "postcomment": "Novèla sèccion",
        "articlepage": "Vêde la pâge de contegnu",
        "talk": "Discussion",
        "views": "Vues",
        "externaldberror": "Ou ben na fôta est arrevâye avouéc la bâsa de balyês d’ôtentificacion de defôr ou ben vos éte pas ôtorisâ{{GENDER:||ye|(ye)}} a betar a jorn voutron compto de defôr.",
        "login": "Branchement",
        "nav-login-createaccount": "Sè branchiér / fâre un compto",
-       "loginprompt": "Vos dête activar los tèmouens (''cookies'') por vos branchiér a {{SITENAME}}.",
        "userlogin": "Sè branchiér / fâre un compto",
        "userloginnocreate": "Sè branchiér",
        "logout": "Sè dèbranchiér",
        "searchprofile-advanced-tooltip": "Chouèsir los èspâços de noms por la rechèrche",
        "search-result-size": "$1 ($2 mot{{PLURAL:$2||s}})",
        "search-result-category-size": "$1 membro{{PLURAL:$1||s}} ($2 sot-catègorie{{PLURAL:$2||s}}, $3 fichiér{{PLURAL:$3||s}})",
-       "search-result-score": "Rapôrt : $1%",
        "search-redirect": "(redirèccion dês $1)",
        "search-section": "(sèccion $1)",
        "search-suggest": "Voléd-vos dére : $1",
        "uploadwarning": "Semonce pendent lo tèlèchargement",
        "uploadwarning-text": "Se vos plét, changiéd la dèscripcion du fichiér ce-desot et pués tornâd èprovar.",
        "savefile": "Encartar lo fichiér",
-       "uploadedimage": "at tèlèchargiê « [[$1]] »",
-       "overwroteimage": "at tèlèchargiê na novèla vèrsion de « [[$1]] »",
        "uploaddisabled": "Tèlèchargements dèsactivâs.",
        "copyuploaddisabled": "Tèlèchargement per URL dèsactivâ.",
        "uploaddisabledtext": "Los tèlèchargements de fichiérs sont dèsactivâs.",
        "watchlist-details": "Y at $1 pâge{{PLURAL:$1||s}} dedens voutra lista de siuvu, sen comptar les pâges de discussion.",
        "wlheader-enotif": "La notificacion per mèssageria èlèctronica est activâye.",
        "wlheader-showupdated": "Les pâges que sont étâyes changiêes dês voutra dèrriére visita sont montrâyes en '''grâs'''.",
+       "wlnote": "Vê-que {{PLURAL:$1|lo dèrriér changement fêt|los '''$1''' dèrriérs changements fêts}} pendent {{PLURAL:$2|l’hora passâye|les '''$2''' hores passâyes}}, dês $3 a $4.",
        "wlshowlast": "Montrar les $1 hores passâyes, los $2 jorns passâs ou ben $3",
        "watchlist-options": "Chouèx de la lista de siuvu",
        "watching": "Siuvu...",
        "duplicate-defaultsort": "'''Atencion :''' la cllâf de tri per dèfôt « $2 » ècllafe cela « $1 ».",
        "version": "Vèrsion",
        "version-extensions": "Èxtensions enstalâs",
+       "version-skins": "Habelyâjos",
        "version-specialpages": "Pâges spèciâles",
        "version-parserhooks": "Grèfons du parsor",
        "version-variables": "Variâbles",
        "version-antispam": "Prèvencion du spame",
-       "version-skins": "Habelyâjos",
        "version-other": "De totes sôrtes",
        "version-mediahandlers": "Maneyors de mèdia",
        "version-hooks": "Grèfons",
index 6bb0457..1bcd678 100644 (file)
        "talkpagelinktext": "Diskusjuun",
        "specialpage": "Spezial-sidj",
        "personaltools": "Min werktjüügen",
-       "postcomment": "Nei kirew",
        "articlepage": "Artiikel wise",
        "talk": "Diskusjuun",
        "views": "Uunsichten",
        "externaldberror": "Deer läit en fäägel bai jü äkstärn autentifisiiring for, unti dü möist din äkstärn brükerkonto äi aktualisiire.",
        "login": "Uunmelde",
        "nav-login-createaccount": "Melde di uun of skriiw di iin",
-       "loginprompt": "För't uunmeldin tu {{SITENAME}} skel bi dan browser cookies aktiwiaret wees.",
        "userlogin": "Melde di uun of skriiw di iin",
        "userloginnocreate": "Uunmelde",
        "logout": "Ufmelde",
        "searchprofile-advanced-tooltip": "Uun ööder nöömrümer schük",
        "search-result-size": "$1 ({{PLURAL:$2|1 wurd|$2 wurden}})",
        "search-result-category-size": "{{PLURAL:$1|1 sidj|$1 sidjen}} ({{PLURAL:$2|1 onerkategorii|$2 onerkategoriin}}, {{PLURAL:$3|1 datei|$3 datein}})",
-       "search-result-score": "Relewans: $1 %",
        "search-redirect": "(widjerfeerd faan „$1“)",
        "search-section": "(kirew $1)",
        "search-file-match": "(fünjen tekst)",
        "uploadwarning": "Wäärnang",
        "uploadwarning-text": "Feranre det datei-beskriiwang an ferschük det noch ans nei.",
        "savefile": "Datei seekre",
-       "uploadedimage": "hää \"[[$1]]\" huuchschüürd",
-       "overwroteimage": "hää en nei werjuun faan „[[$1]]“ huuchschüürd",
        "uploaddisabled": "Huuchschüüren as ei aktiwiaret",
        "copyuploaddisabled": "Huuchschüüren faan URLs as ei aktiwiaret.",
        "uploaddisabledtext": "Det huuchschüüren faan datein as ei aktiwiaret.",
        "watchlist-details": "Dü behäälst {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug, diarbi wurd diskuschuunsidjen ei mätääld.",
        "wlheader-enotif": "Di e-mail siinst as aktiif.",
        "wlheader-showupdated": "Nei feranert sidjen wurd '''fäät''' uunwiset.",
-       "wlnote2": "Diar stun a feranrangen faan a leetst {{PLURAL:$1|stünj|<strong>$1</strong> stünjen}}, üüb a stant faan $2, $3.",
+       "wlnote": "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|stünj|'''$2''' stünjen}}. Stant: $3, klook $4.",
        "wlshowlast": "Wise a feranrangen faan leetst $1 stünjen, $2 daar of $3.",
        "watchlist-options": "Iinstelangen för't uunwisin",
        "watching": "Uun't uug behual ...",
index ff1c4e3..18b5c72 100644 (file)
        "talkpagelinktext": "discussion",
        "specialpage": "Pagjine speciâl",
        "personaltools": "Imprescj personâi",
-       "postcomment": "Gnove sezion",
        "articlepage": "Cjale la vôs",
        "talk": "Discussion",
        "views": "Visitis",
        "yourdomainname": "Il to domini",
        "login": "Jentre",
        "nav-login-createaccount": "Regjistriti o jentre",
-       "loginprompt": "Tu âs di vê abilitâts i cookies par jentrâ in {{SITENAME}}.",
        "userlogin": "Regjistriti o jentre",
        "userloginnocreate": "Jentre",
        "logout": "Jes",
        "searchprofile-advanced-tooltip": "Cîr tai spazis dai nons personalizâts",
        "search-result-size": "$1 ({{PLURAL:$2|une peraule|$2 peraulis}})",
        "search-result-category-size": "{{PLURAL:$1|1 membri|$1 membris}} ({{PLURAL:$2|1 sotcategorie|$2 sotcategoriis}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Rilevance: $1%",
        "search-redirect": "(re-indreçament $1)",
        "search-section": "(sezion $1)",
        "search-suggest": "Forsit tu cirivis: $1",
        "filetype-missing": "Il file nol à une estension (par esempli \".jpg\").",
        "file-exists-duplicate": "Chest file al è un duplicât {{PLURAL:$1|dal file |dai files ca sot:}}",
        "savefile": "Salve file",
-       "uploadedimage": "cjamât sù \"$1\"",
-       "overwroteimage": "al à cjamât une gnove version di «[[$1]]»",
        "uploaddisabled": "Nus displâs, par cumò no si pues cjamâ sù robe.",
        "uploaddisabledtext": "Lis cjamadis di files a son disativadis.",
        "sourcefilename": "Non dal file origjinâl:",
        "watchlist-details": "{{PLURAL:$1|E je $1 pagjine tignude|A son $1 pagjinis tignudis}} di voli, cence contâ lis pagjinis di discussion.",
        "wlheader-enotif": "Notifiche par pueste eletroniche ativade.",
        "wlheader-showupdated": "Lis pagjinis gambiadis de ultime volte che tu lis âs cjaladis a son mostradis in '''gruessut'''",
+       "wlnote": "Ca sot {{PLURAL:$1|al è il cambiament plui recent|a son i '''$1''' cambiaments plui recents}} {{PLURAL:$2|inte ultime ore|intes '''$2''' oris passadis}}.",
        "wlshowlast": "Mostre ultimis $1 oris $2 zornadis $3",
        "watchlist-options": "Opzions pe liste dai tignûts di voli",
        "watching": "Daûr a zontâ aes pagjinis tignudis di voli...",
index 0851cc8..9c23ae8 100644 (file)
        "talkpagelinktext": "Oerlis",
        "specialpage": "Bysûndere side",
        "personaltools": "Persoanlike ynstellings",
-       "postcomment": "Skriuw in opmerking",
        "articlepage": "Side lêze",
        "talk": "Oerlis",
        "views": "Aspekten/aksjes",
        "externaldberror": "Der is in fout by it oanmelden by de database of jo hawwe gjin tastimming om jo ekstern account by te wurkjen.",
        "login": "Oanmelde",
        "nav-login-createaccount": "Oanmelde",
-       "loginprompt": "Jo moatte 'cookies' oanstean hawwe om yn jo oan te melden by {{SITENAME}}.",
        "userlogin": "Oanmelde",
        "userloginnocreate": "Ynlogge",
        "logout": "Ofmelde",
        "searchprofile-everything-tooltip": "Alle ynhâld trochsykje (ynklusyf oerlissiden)",
        "searchprofile-advanced-tooltip": "Sykje yn oanjûne nammerûmten",
        "search-result-size": "$1 ({{PLURAL:$2|1 wurd|$2 wurden}})",
-       "search-result-score": "Relevante: $1%",
        "search-redirect": "(trochferwizing $1)",
        "search-section": "(seksje $1)",
        "search-suggest": "Bedoele jo: $1",
        "file-deleted-duplicate": "In bestân idintyk oan dit bestân ([[:$1]]) is foarhinne fuorthelle.\nRieplachtsje it fuorthel-logboek foar't jo fierder geane.",
        "uploadwarning": "Oanbied-warskôging",
        "savefile": "Lis triem fêst",
-       "uploadedimage": " \"[[$1]]\" oanbean",
-       "overwroteimage": "hat in nije ferzje fan \"[[$1]]\" tafoege",
        "uploaddisabled": "Sorry, op dizze tsjinner kin net oanbean wurde.",
        "uploaddisabledtext": "It oanbieden fan triemmen is útskeakele.",
        "php-uploaddisabledtext": "PHP-triemuploads binne útskeakele. Kontrolearje a.j.w. de triem_uploads-ynstelling.",
        "unwatchthispage": "Ferjit dizze side",
        "notanarticle": "Dit kin net folge wurde.",
        "watchlist-details": "Jo folchlist hat {{PLURAL:$1|$1 side|$1 siden}}, oerlissiden net meiteld.",
+       "wlnote": "Dit {{PLURAL:$1|is de lêste feroaring|binne de lêste '''$1''' feroarings}} yn de lêste {{PLURAL:$2|oer|'''$2''' oeren}}.",
        "wlshowlast": "Lit feroarings sjen fan de lêste $1 oeren $2 dagen $3",
        "watching": "Dwaande mei op'e folchlist te setten ...",
        "unwatching": "Dwaande mei fan'e folchlist ôf te heljen ...",
index 0fe4dfa..42bf7e9 100644 (file)
        "talkpagelinktext": "Plé",
        "specialpage": "Leathanach Speisialta",
        "personaltools": "Do chuid uirlisí",
-       "postcomment": "Mír nua",
        "articlepage": "Féach ar an alt",
        "talk": "Plé",
        "views": "Radhairc",
        "externaldberror": "Bhí earráid bhunachair sonraí ann maidir le fíordheimhniú seachtrach, nóThere was either an external authentication database error or you are not allowed to update your external account.",
        "login": "Logáil isteach",
        "nav-login-createaccount": "Logáil isteach",
-       "loginprompt": "Tá sé riachtanach fianáin a chur i ngníomh chun logáil isteach a dhéanamh ag {{SITENAME}}.",
        "userlogin": "Logáil isteach / cruthaigh cuntas",
        "userloginnocreate": "Logáil isteach",
        "logout": "Logáil amach",
        "fileexists-forbidden": "Tá comhad eile leis an ainm seo ann fós, agus ní féidie é a forscríobh.\nMá theastáilann uait do chomhad a uaslódáil fós, téigh ar ais agus úsáid ainm nua, le do thoil. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Rabhadh suaslódála",
        "savefile": "Sábháil comhad",
-       "uploadedimage": "uaslódáladh \"[[$1]]\"",
        "uploaddisabled": "Tá brón orainn, ní féidir aon rud a uaslódáil faoi láthair.",
        "uploaddisabledtext": "Tá cosc ar uaslódáil comhad.",
        "uploadvirus": "Tá víreas ann sa comhad seo! Eolas: $1",
        "watchlist-details": "Tá tú ag faire ar {{PLURAL:$1|leathanach amháin|$1 leathanaigh}}, gan leathanaigh phlé a chur san áireamh.",
        "wlheader-enotif": "Cumasaíodh fógraí riomhphoist.",
        "wlheader-showupdated": "Tá '''cló trom''' ar leathanaigh a athraíodh ón uair is deireanaí a d'fhéach tú orthu.",
+       "wlnote": "Is {{PLURAL:$1|é seo thíos an t-athrú deireanach|iad seo thíos na '''$1''' athruithe deireanacha}} {{PLURAL:$2|san uair deireanach|sna '''$2''' uaire deireanacha}}.",
        "wlshowlast": "Líon na n-uair is déanaí le taispeáint: $1. Líon na laethanta is déanaí le taispeáint: $2. Taispeáin $3.",
        "watchlist-options": "Roghanna don liosta faire",
        "watching": "Ag faire...",
index ba65dc6..eca10f7 100644 (file)
        "talkpagelinktext": "Konuşmaa",
        "specialpage": "Maasus Sayfa",
        "personaltools": "Personal instrumentlär",
-       "postcomment": "Yorum ekle",
        "articlepage": "Yazıya bak",
        "talk": "Dartışma",
        "views": "Görünüşler",
        "yourdomainname": "Domen adınız",
        "login": "Gir",
        "nav-login-createaccount": "Gir / esap yarat",
-       "loginprompt": "Bak: {{SITENAME}} saytında sessiya açmaa için tarayıcınızda läazım cookies aktivat olsun. <br />\nKullanıcı adınız '''var nicä içersin'''gagauzça nışan, boşluk . Savaşın kullanıcı adınıza e-mail adresi '''girmemää'''.",
        "userlogin": "Gir / esap yarat",
        "logout": "Sessiyanı kapat",
        "userlogout": "Oturmaa kapat",
        "upload": "Fayl ükle",
        "uploadbtn": "Fayl ükle",
        "uploadlogpage": "Fayl üklemäk jurnalları",
-       "uploadedimage": "Üklenen: \"[[$1]]\"",
        "listfiles": "Pätret listası",
        "file-anchor-link": "Fayl",
        "filehist": "Fayl istoriyası",
index b343117..5c67aa4 100644 (file)
        "externaldberror": "外部验证数据库出错,或倷更新伓正倷𠮶外部帐户。",
        "login": "登入",
        "nav-login-createaccount": "登入/新开只帐户",
-       "loginprompt": "要开到cookies才登入得正{{SITENAME}}。",
        "userlogin": "登入/新开只帐户",
        "userloginnocreate": "登入",
        "logout": "退出",
        "fileexists-shared-forbidden": "到共用档案库里度有嘞同名𠮶档案;请回头并换过只新𠮶名称来上传个只档案。[[File:$1|thumb|center|$1]]",
        "uploadwarning": "上传警告",
        "savefile": "保存盘案",
-       "uploadedimage": "上传正嘞\"[[$1]]\"",
-       "overwroteimage": "上传正嘞\"[[$1]]\"𠮶新版本",
        "uploaddisabled": "上传伓正",
        "uploaddisabledtext": "上传伓正文件到{{SITENAME}}。",
        "uploadscripted": "个只档案包到可能会误导网络浏览器错误解释𠮶 HTML 或脚本代码。",
        "watchlist-details": "$1只页面(伓算讨论页) 拖眏到哩",
        "wlheader-enotif": "启动嘞email通知功能。",
        "wlheader-showupdated": "上回倷眵𠮶页面改动𠮶部分用'''粗体'''显到",
+       "wlnote": "下底系最近'''$2'''钟头内𠮶最晏'''$1'''道修改:",
        "wlshowlast": "显示近来$1钟头$2日$3𠮶改动",
        "watchlist-options": "监视清单选项",
        "watching": "眏到...",
index e3f8bbb..8e2a350 100644 (file)
        "fileexists-shared-forbidden": "到共用檔案庫裡度有嘞同名嗰檔案;請回頭並換過隻新嗰名稱來上傳箇隻檔案。[[File:$1|thumb|center|$1]]",
        "uploadwarning": "上傳警告",
        "savefile": "保存檔案",
-       "uploadedimage": "上傳正哩\"[[$1]]\"",
-       "overwroteimage": "上傳正哩\"[[$1]]\"嗰新版本",
        "uploaddisabled": "上傳伓正",
        "uploaddisabledtext": "上傳伓正文件到{{SITENAME}}。",
        "uploadscripted": "箇隻檔案包到可能會誤導網絡瀏覽器錯誤解釋嗰 HTML 或腳本代碼。",
index ee29121..cd72433 100644 (file)
        "searchprofile-advanced-tooltip": "Lorg am broinn ainm-spàsan gnàthaichte",
        "search-result-size": "$1 ({{PLURAL:$2|$2 fhacal|$2 fhacal|$2 faclan|$2 facal}})",
        "search-result-category-size": "{{PLURAL:$1|$1 bhall|$1 bhall|$1 bhuill|$1 ball}} ({{PLURAL:$2|$2 fho-roinn-seòrsa|$2 fho-roinn-seòrsa|$2 fo-roinnean-seòrsa|$2 fo-roinn-seòrsa}}, {{PLURAL:$3|$3 fhaidhle|$3 fhaidhle|$3 faidhlichean|$3 faidhle}})",
-       "search-result-score": "Buntainneas: $1%",
        "search-redirect": "(ag ath-sheòladh $1)",
        "search-section": "(earrann $1)",
        "search-file-match": "{a' freagairt ri susbaint an fhaidhle)",
        "uploadwarning": "Rabhadh luchdaidh suas",
        "uploadwarning-text": "Atharraich tuairisgeul an fhaidhle gu h-ìosal 's feuch ris a-rithist.",
        "savefile": "Sàbhail faidhle",
-       "uploadedimage": "a luchdaich suas \"[[$1]]\"",
-       "overwroteimage": "luchdaich suas tionndadh ùr de \"[[$1]]\"",
        "uploaddisabled": "Tha an luchdadh suas à comas.",
        "copyuploaddisabled": "Tha an luchdadh suas o URL à comas.",
        "uploaddisabledtext": "Tha luchdadh suas fhaidhlichean à comas.",
        "watchlist-details": "Tha {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} air a' chlàr-fhaire agad, gun luaidh air na duilleagan deasbaireachd.",
        "wlheader-enotif": "Tha brathan-naidheachd air a' phost-d an comas.",
        "wlheader-showupdated": "Tha clò <strong>trom</strong> air duilleagan a chaidh atharrachadh on turas mu dheireadh a thadhail thu orra.",
-       "wlnote2": "Chì thu na h-atharraichean {{PLURAL:$1|san <strong>$1</strong> uair|san <strong>$1</strong> uair|sna <strong>$1</strong> uairean|san <strong>$1</strong> uair}} a thìde seo chaidh aig $3 air $2.",
+       "wlnote": "Seo {{PLURAL:$1|an $1 mhùthadh|$1 mhùthadh|na $1 mùthaidhean|$1 mùthadh}} mu dheireadh san {{PLURAL:$2|$2 uair a thìde|$2 uair a thìde|$2 uairean a thìde|$2 uair a thìde}} mu dheireadh, mar a bha e $3, $4.",
        "wlshowlast": "Seall na $1 uairean a thìde mu dheireadh $2 làithean mu dheireadh $3",
        "watchlist-options": "Roghainnean mo chlàir-faire",
        "watching": "'Ga chur air a' chlàr-fhaire...",
index 7c7f484..af10ca7 100644 (file)
@@ -32,6 +32,7 @@
        "tog-watchdefault": "Engadir as páxinas e os ficheiros que edite á miña lista de vixilancia",
        "tog-watchmoves": "Engadir as páxinas e os ficheiros que mova á miña lista de vixilancia",
        "tog-watchdeletion": "Engadir as páxinas e os ficheiros que borre á miña lista de vixilancia",
+       "tog-watchrollback": "Engadir as páxinas nas que realice unha reversión á miña lista de vixilancia",
        "tog-minordefault": "Marcar por omisión todas as edicións como pequenas",
        "tog-previewontop": "Mostrar a vista previa antes da caixa de edición",
        "tog-previewonfirst": "Mostrar a vista previa na primeira edición",
        "hidetoc": "agochar",
        "collapsible-collapse": "Contraer",
        "collapsible-expand": "Expandir",
+       "confirmable-confirm": "Está {{GENDER:$1|seguro|segura}}?",
+       "confirmable-yes": "Si",
+       "confirmable-no": "Non",
        "thisisdeleted": "Quere ver ou restaurar $1?",
        "viewdeleted": "Quere ver $1?",
        "restorelink": "{{PLURAL:$1|unha edición borrada|$1 edicións borradas}}",
        "invalidtitle-knownnamespace": "Título inválido co espazo de nomes \"$2\" e o texto \"$3\"",
        "invalidtitle-unknownnamespace": "Título inválido cun número de espazo de nomes, $1, descoñecido e o texto \"$2\"",
        "exception-nologin": "Non accedeu ao sistema",
-       "exception-nologin-text": "[[Special:Userlogin|Acceda ao sistema]] para poder realizar esa acción ou acceder a esa páxina.",
+       "exception-nologin-text": "Acceda ao sistema para poder realizar esa acción ou acceder a esa páxina.",
        "exception-nologin-text-manual": "Debe $1 para poder realizar esa acción ou acceder a esa páxina.",
        "virus-badscanner": "Configuración errónea: escáner de virus descoñecido: ''$1''",
        "virus-scanfailed": "fallou o escaneado (código $1)",
        "parser-template-recursion-depth-warning": "Excedeuse o límite de profundidade de recursión do modelo ($1)",
        "language-converter-depth-warning": "Excedeuse o límite de profundidade do convertedor de lingua ($1)",
        "node-count-exceeded-category": "Páxinas nas que se supera o número de nodos",
-       "node-count-exceeded-category-desc": "Unha categoría para as páxinas que superan o número de nodos.",
+       "node-count-exceeded-category-desc": "A páxina supera o número máximo de nodos.",
        "node-count-exceeded-warning": "A páxina supera o número de nodos",
        "expansion-depth-exceeded-category": "Páxinas nas que se supera a profundidade de expansión",
-       "expansion-depth-exceeded-category-desc": "Esta é unha categoría para as páxinas que superan a profundidade de expansión.",
+       "expansion-depth-exceeded-category-desc": "A páxina supera a profundidade de expansión máxima.",
        "expansion-depth-exceeded-warning": "A páxina supera a profundidade de expansión",
        "parser-unstrip-loop-warning": "Detectouse un bucle inamovible",
        "parser-unstrip-recursion-limit": "Excedeuse o límite de recursión inamovible ($1)",
        "searchprofile-advanced-tooltip": "Procurar nos espazos de nomes elixidos",
        "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 ficheiro|$3 ficheiros}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(redirixido desde \"$1\")",
        "search-section": "(sección \"$1\")",
        "search-file-match": "(coincide co contido do ficheiro)",
        "preferences": "Preferencias",
        "mypreferences": "Preferencias",
        "prefs-edits": "Número de edicións:",
-       "prefsnologintext2": "Debe $1 para definir as preferencias de usuario.",
+       "prefsnologintext2": "Acceda ao sistema para modificar as súas preferencias.",
        "prefs-skin": "Aparencia",
        "skin-preview": "Vista previa",
        "datedefault": "Ningunha preferencia",
        "nolicense": "Ningunha seleccionada",
        "licenses-edit": "Editar as opcións de licenza",
        "license-nopreview": "(A vista previa non está dispoñible)",
-       "upload_source_url": "  (un URL válido e accesible publicamente)",
-       "upload_source_file": "  (un ficheiro no seu ordenador)",
+       "upload_source_url": "(o ficheiro elixido, cun URL válido e accesible publicamente)",
+       "upload_source_file": "(o ficheiro elixido do seu ordenador)",
        "listfiles-delete": "borrar",
        "listfiles-summary": "Esta páxina especial mostra todos os ficheiros cargados.",
        "listfiles_search_for": "Buscar polo nome do ficheiro multimedia:",
        "randomincategory": "Páxina aleatoria na categoría",
        "randomincategory-invalidcategory": "\"$1\" non é un nome de categoría válido.",
        "randomincategory-nopages": "Non hai páxinas na [[:Category:$1]].",
-       "randomincategory-selectcategory": "Ir a unha páxina ao chou da categoría: $1 $2.",
-       "randomincategory-selectcategory-submit": "Ir",
+       "randomincategory-category": "Categoría:",
+       "randomincategory-legend": "Páxina aleatoria na categoría",
        "randomredirect": "Redirección aleatoria",
        "randomredirect-nopages": "Non hai redireccións no espazo de nomes \"$1\".",
        "statistics": "Estatísticas",
        "trackingcategories-desc": "Criterio de inclusión da categoría",
        "noindex-category-desc": "A páxina non está indexada polos bots porque contén a palabra máxica <code><nowiki>__NOINDEX__</nowiki></code> e está nun espazo de nomes no que esa marca está permitida.",
        "index-category-desc": "A páxina contén a palabra máxica <code><nowiki>__INDEX__</nowiki></code> (e está nun espazo de nomes no que esa marca está permitida) e, polo tanto, será indexada polos bots cando non debera selo normalmente.",
-       "post-expand-template-inclusion-category-desc": "Despois de expandir todos os modelos, o tamaño da páxina é maior que <code>$wgMaxArticleSize</code>; algúns modelos non se expandiron.",
-       "post-expand-template-argument-category-desc": "Despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Proba}}}</code>), a páxina é maior que <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Hai demasiadas funcións analíticas custosas (como <code>#ifexist</code>) incluídas nunha páxina. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Categoría engadida se a páxina contén unha ligazón de ficheiro rota (unha ligazón para incorporar un ficheiro cando o ficheiro non existe).",
-       "hidden-category-category-desc": "Esta é unha categoría coa palabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
+       "post-expand-template-inclusion-category-desc": "O tamaño da páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir todos os modelos; algúns modelos non se expandiron.",
+       "post-expand-template-argument-category-desc": "A páxina é maior que <code>$wgMaxArticleSize</code> despois de expandir o argumento dun modelo (algo entre chaves triples, como <code>{{{Proba}}}</code>).",
+       "expensive-parserfunction-category-desc": "A páxina utiliza demasiadas funcións analíticas custosas (como <code>#ifexist</code>). Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "A páxina contén unha ligazón de ficheiro rota (unha ligazón para incorporar un ficheiro que non existe).",
+       "hidden-category-category-desc": "A categoría contén a palabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que impide que se mostre por defecto na caixa de categorías das páxinas.",
        "trackingcategories-nodesc": "Non hai ningunha descrición dispoñible.",
        "trackingcategories-disabled": "A categoría está desactivada",
        "mailnologin": "Non existe enderezo para o envío",
        "mywatchlist": "Lista de vixilancia",
        "watchlistfor2": "De $1 $2",
        "nowatchlist": "Non ten elementos na súa lista de vixilancia.",
-       "watchlistanontext": "Debe $1 para ver ou editar os elementos da súa lista de vixilancia.",
+       "watchlistanontext": "Acceda ao sistema para ver ou editar os elementos da súa lista de vixilancia.",
        "watchnologin": "Non accedeu ao sistema",
        "addwatch": "Engadir á lista vixilancia",
        "addedwatchtext": "A páxina \"[[:$1]]\" foi engadida á súa [[Special:Watchlist|lista de vixilancia]].\nOs cambios futuros nesta páxina e na súa páxina de conversa asociada serán listados alí.",
        "watchlist-details": "Hai {{PLURAL:$1|unha páxina|$1 páxinas}} na súa lista de vixilancia, sen contar as de conversa.",
        "wlheader-enotif": "A notificación por correo electrónico está activada.",
        "wlheader-showupdated": "As páxinas que cambiaron desde a súa última visita móstranse en '''negra'''.",
-       "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas '''$1''' modificacións}} {{PLURAL:$2|na última hora|nas últimas '''$2''' horas}} ata o $3 ás $4.",
+       "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas <strong>$1</strong> modificacións}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} ata o $3 ás $4.",
        "wlshowlast": "Mostrar as últimas $1 horas, os últimos $2 días ou $3",
        "watchlist-options": "Opcións de vixilancia",
        "watching": "Vixiando...",
        "exbeforeblank": "o contido antes do baleirado era: \"$1\"",
        "delete-confirm": "Borrar \"$1\"",
        "delete-legend": "Borrar",
-       "historywarning": "'''Atención:''' A páxina que está a piques de borrar ten un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisións}}:",
+       "historywarning": "<strong>Atención:</strong> A páxina que está a piques de borrar ten un historial con $1 {{PLURAL:$1|revisión|revisións}}:",
        "confirmdeletetext": "Está a piques de borrar de xeito permanente unha páxina ou imaxe con todo o seu historial na base de datos.\nPor favor, confirme que é realmente a súa intención, que comprende as consecuencias e que está obrando de acordo coas regras [[{{MediaWiki:Policy-url}}|da política e normas]].",
        "actioncomplete": "Completouse a acción",
        "actionfailed": "Fallou a acción",
        "delete-edit-reasonlist": "Editar os motivos de borrado",
        "delete-toobig": "Esta páxina conta cun historial longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nLimitouse a eliminación destas páxinas para previr problemas de funcionamento accidentais en {{SITENAME}}.",
        "delete-warning-toobig": "Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nAo eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};\nproceda con coidado.",
+       "deleteprotected": "Non pode borrar esta páxina porque está protexida.",
        "deleting-backlinks-warning": "'''Atención:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
        "rollback": "Reverter as edicións",
        "rollback_short": "Reverter",
        "autoblockid": "Bloqueo automático nº$1",
        "block": "Bloquear un usuario",
        "unblock": "Desbloquear un usuario",
-       "blockip": "Bloquear o usuario",
+       "blockip": "Bloquear {{GENDER:$1|o usuario|a usuaria}}",
        "blockip-legend": "Bloquear un usuario",
        "blockiptext": "Use o seguinte formulario para bloquear o acceso de escritura desde un enderezo IP ou para bloquear un usuario específico.\nIsto debería facerse só para previr vandalismo, e de acordo coa [[{{MediaWiki:Policy-url}}|política e normas]] vixentes.\nExplique a razón específica do bloqueo (por exemplo, citando as páxinas concretas que sufriron vandalismo).",
        "ipaddressorusername": "Enderezo IP ou nome de usuario:",
        "ipb-unblock-addr": "Desbloquear a $1",
        "ipb-unblock": "Desbloquear un usuario ou enderezo IP",
        "ipb-blocklist": "Ver os bloqueos vixentes",
-       "ipb-blocklist-contribs": "Contribucións de $1",
+       "ipb-blocklist-contribs": "Contribucións de {{GENDER:$1|$1}}",
        "unblockip": "Desbloquear un usuario",
        "unblockiptext": "Use o seguinte formulario para dar de novo acceso de escritura a un enderezo IP ou usuario que estea bloqueado.",
        "ipusubmit": "Retirar o bloqueo",
        "import": "Importar páxinas",
        "importinterwiki": "Importación transwiki",
        "import-interwiki-text": "Seleccione o wiki e o título da páxina que queira importar.\nAs datas das revisións e os nomes dos editores manteranse.\nTodas as accións relacionadas coa importación entre wikis poden verse no [[Special:Log/import|rexistro de importacións]].",
-       "import-interwiki-source": "Wiki/Páxina de orixe:",
+       "import-interwiki-sourcewiki": "Wiki de orixe:",
+       "import-interwiki-sourcepage": "Páxina de orixe:",
        "import-interwiki-history": "Copiar todas as versións que hai no historial desta páxina",
        "import-interwiki-templates": "Incluír todos os modelos",
        "import-interwiki-submit": "Importar",
        "logentry-rights-rights": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3 de $4 a $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|cambiou}} o grupo ao que pertence $3",
        "logentry-rights-autopromote": "$1 foi {{GENDER:$2|promovido|promovida}} automaticamente de $4 a $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|cargou}} \"$3\"",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|cargou}} unha nova versión de \"$3\"",
+       "logentry-upload-revert": "$1 {{GENDER:$2|cargou}} \"$3\"",
        "rightsnone": "(ningún)",
        "feedback-bugornote": "Se está listo para describir un problema técnico en detalle, [$1 informe do erro].\nEn caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario aparecerá na páxina \"[$3 $2]\" xunto ao seu nome de usuario e o navegador que está usando.",
        "feedback-subject": "Asunto:",
        "action-pagelang": "cambiar a lingua da páxina",
        "log-name-pagelang": "Rexistro de cambios de lingua",
        "log-description-pagelang": "Este é un rexistro dos cambios na lingua das páxinas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiou}} a lingua da páxina \"$3\" do $4 ao $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiou}} a lingua da páxina \"$3\" do $4 ao $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code>/$2 (activada)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code>/$2 ('''desactivada''')"
 }
index 7cc5f1b..8d7786e 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Deepak D'Souza",
                        "Isidore Dantas",
-                       "The Discoverer"
+                       "The Discoverer",
+                       "아라"
                ]
        },
        "underline-always": "Soddankal",
@@ -80,6 +81,7 @@
        "category-article-count": "{{PLURAL:$2|Hea vorgan fokot hi ek pan asa.|Hea vorgan {{PLURAL:$1|hi pan asa|him $1 panam asat}} beriz $2 panam modem.}}",
        "category-file-count": "{{PLURAL:$2|Hea vorgan fokot hi ek fail asa.|Hea vorgan {{PLURAL:$1|hi fail asa|heo $1 faili asat}}, beriz $2 faili modem.}}",
        "listingcontinuesabbrev": "chalu",
+       "index-category": "Suchi-potran zodlelim panam",
        "noindex-category": "Suchi-potran zoddunk-naslelim panam",
        "about": "Hea vixoiavoir",
        "article": "Vixoi sombondhi pan",
        "cancel": "Rod'd kor",
        "mytalk": "Bhasabhas",
        "navigation": "Dixa-niontronn",
+       "and": "&#32;ani",
        "qbfind": "Sod",
        "qbedit": "Bodol",
        "faq": "Choddxe vicharlole prosn",
-       "vector-action-addsection": "Vixoi zodd",
-       "vector-action-delete": "Kadd",
-       "vector-action-move": "Fuddem voch",
-       "vector-action-protect": "Rakh",
-       "vector-view-create": "Roch",
-       "vector-view-edit": "Sudar",
-       "vector-view-history": "Itihas polloi",
-       "vector-view-view": "Vach",
-       "vector-view-viewsource": "Mull polloi",
        "actions": "Karvaio",
        "namespaces": "Nanv-thollam",
        "variants": "Dusre",
        "history_short": "Itihas",
        "printableversion": "Chapp'pachi avruti",
        "permalink": "Togpi zodd",
+       "print": "Chap",
        "view": "Poloi",
        "edit": "Sudar",
        "create": "Roch",
        "remembermypassword": "Hea internet browseran mhojem sotrachem ugdas dovor (chodan chod $1 {{PLURAL:$1|disak|disank}})",
        "login": "Sotrromb kor",
        "nav-login-createaccount": "Sotrrombh kor / khato roch",
-       "loginprompt": "{{SITENAME}}, hea siticher sotrorombh korunktujea internet browseran ''cookies'' suru asunk zai.",
        "userlogin": "Sotrrombh kor / khatem roch",
        "logout": "Bhair podd",
        "userlogout": "Sotracho xevott",
        "gotaccount": "Tuje kodem khatem asa? $1.",
        "gotaccountlink": "Sotrorombh kor",
        "userlogin-resetlink": "Sotrorombh korpacheo bariksai visorlai?",
-       "mailmypassword": "Novem gupitutor email kor",
+       "mailmypassword": "Novem gupitutor",
        "loginlanguagelabel": "Bhas: $1",
        "bold_sample": "Datt mozkur",
        "bold_tip": "Datt mozkur",
        "viewpagelogs": "Hea panachim sotram polloi",
        "currentrev-asof": "$1, hachi halinchi uzollnni",
        "revisionasof": "$1 hachi uzollnni",
-       "revision-info": "$2 hannem $1, hachi uzollnni",
+       "revision-info": "$1 porian, $2 hannem kelli uzollnni",
        "previousrevision": "← Adli uzollnni",
        "nextrevision": "Novi uzolnni →",
        "currentrevisionlink": "Sogleanvon novi uzollnni",
        "shown-title": "Dor panar {{PLURAL:$1|porinam|porinam}} dakhoi",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) poloi",
        "searchmenu-exists": "'''Hea Wikicher \"[[:$1]]\" nanvanche pan asa.'''",
-       "searchmenu-new": "'''\"[[:$1]]\" hem pan hea vikint roch!'''",
+       "searchmenu-new": "<strong>\"[[:$1]]\" hem pan hea vikint roch!<strong> {{PLURAL:$2|0=|Tujea sodan mellelem panui polloi.|Tujea sodan mellelem panamui polloi.}}",
        "searchprofile-articles": "Mozkurachim panam",
-       "searchprofile-project": "Adar ani Project panam",
        "searchprofile-images": "Bhovmadhiom",
        "searchprofile-everything": "Sogllem",
        "searchprofile-advanced": "Sodpache poryay",
        "searchprofile-articles-tooltip": "$1 hantunt sod",
-       "searchprofile-project-tooltip": "$1 hantunt sod",
        "searchprofile-images-tooltip": "Faili sod",
        "searchprofile-everything-tooltip": "Akhea sitin sod (Bhasabhas panant'ui)",
        "searchprofile-advanced-tooltip": "chalu nanvthollancher sod",
        "recentchanges-label-minor": "Ho ek dhaktto sudar",
        "recentchanges-label-bot": "Hem bodlop eka robotan kel'lem",
        "recentchanges-label-unpatrolled": "Hem sudharop azun topasunk nam",
-       "rcnotefrom": "Sokoil '''$2''' savn zalelim bodolpam dileant ( '''$1'''meren dakhoileant).",
-       "rclistfrom": "$1 savn suru zatelim novim bodolpam dakhoi",
+       "rcnotefrom": "Sokoil <strong>$2<strong> savn zalelim bodolpam dileant ( <strong>$1<strong> meren dakhoileant).",
+       "rclistfrom": "$3 $2 savn suru zatelim novim bodolpam dakhoi",
        "rcshowhideminor": "$1 dhaktteo sudarnneo",
        "rcshowhidebots": "$1 robot",
-       "rcshowhideliu": "$1 sotrromb kelele vapuddpi",
+       "rcshowhideliu": "$1 nond zalele vapuddpi",
        "rcshowhideanons": "$1 nanv-naslelim vapurpi",
        "rcshowhidepatr": "$1 topaslele sudharop",
        "rcshowhidemine": "Mhojem sudarop $1",
        "upload": "Fail upload kor",
        "uploadlogpage": "Uploadachem sotr",
        "filedesc": "Sar",
-       "uploadedimage": " \"[[$1]]\" upload zalem",
        "watchthisupload": "Hea faylar dixtt dovor",
        "license": "Porvangi",
        "license-header": "Porvangi",
        "speciallogtitlelabel": "Vishoi vo vapurpi:",
        "log": "Sotram",
        "allpages": "Sogllim panam",
-       "alphaindexline": "$1 savn $2",
        "nextpage": "Mukklem pan ($1)",
        "prevpage": "Ad'dlem pan ($1)",
        "allpagesfrom": "Hanga thavn suru zatelea panank dakhoi:",
        "watch": "Sadur rav",
        "watchthispage": "Hea panar dixtt dovor",
        "unwatch": "Nodor kadd",
-       "watchlist-details": "Tujea sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}}, ulovpachim panam mezonastanam.",
+       "watchlist-details": "Tujea sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}}, ulovpachim panam veglim mezonastanam.",
        "wlheader-showupdated": "Tujea fatle bhette san bodol'lean tim panam '''datt''' dakhoileant.",
        "wlshowlast": "Xevottchim $1 voram $2 dis $3 dakhoi",
        "watchlist-options": "Sadurvollericheo poryay",
index 36237d0..01dc517 100644 (file)
        "talkpagelinktext": "Διαλέγεσθαι",
        "specialpage": "Εἰδικὴ δέλτος",
        "personaltools": "Ἴδια ἐργαλεῖα",
-       "postcomment": "Νέον τμῆμα",
        "articlepage": "Χρήματος δέλτον ὁρᾶν",
        "talk": "Διάλεξις",
        "views": "Προβολαί",
        "externaldberror": "Συνέβη εἴτε σφάλμα τι πιστοποιήσεως τῆς βάσεως δεδομένων εἴτε οὐκ ἔξεστί σοι ἐνημεροῦν τὸν ἐξωτερικὸν λογισμόν σου.",
        "login": "Συνδεῖσθαι",
        "nav-login-createaccount": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
-       "loginprompt": "Δεῖ ἐνεργὰ τὰ HTTP-πύσματα εἶναι πρὸ τοῦ συνδεῖσθαι τῷ {{SITENAME}}.",
        "userlogin": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
        "userloginnocreate": "Συνδεῖσθαι",
        "logout": "Ἐξέρχεσθαι",
        "searchprofile-everything-tooltip": "Πανταχοῖ (καὶ τὰς δέλτους διαλέξεως) ζητεῖν.",
        "searchprofile-advanced-tooltip": "Ζητεῖν εἰς συνήθη ὀνοματεῖα",
        "search-result-size": "$1 ({{PLURAL:$2|1 λέξις|$2 λέξεις}})",
-       "search-result-score": "Σχετικότης: $1%",
        "search-redirect": "(ἀναδιευθύνειν $1)",
        "search-section": "(τμῆμα $1)",
        "search-suggest": "Συνίης: $1",
        "file-exists-duplicate": "Τὸ ἀρχεῖον ἐστὶ διπλότυπον τοῦ/τῶν ἑξῆς {{PLURAL:$1|ἀρχείου|ἀρχείων}}:",
        "uploadwarning": "Προμήνυσις ἐπιφορτίσεως",
        "savefile": "Σῴζειν ἀρχεῖον",
-       "uploadedimage": "ἐπιπεφορτισμένον \"[[$1]]\"",
-       "overwroteimage": "νέα ἔκδοσις τῆς \"[[$1]]\" ἐπιπεφορτισμένη",
        "uploaddisabled": "Μὴ ἐνεργαὶ αἱ ἐπιφορτίσεις",
        "uploaddisabledtext": "Ἐπιφορτίσεις ἀρχείων μὴ ἐνεργαὶ.",
        "php-uploaddisabledtext": "Αἱ ἐπιφορτώσεις ἀρχείων εἰσὶν ἀνενεργοὶ ἐν τῇ PHP.\nἜλεγξον τὴν ῥύθμισιν file_uploads.",
        "notvisiblerev": "Ἀναθεώρησις διαγεγραμμένη",
        "watchlist-details": "{{PLURAL:$1|$1 δέλτος|$1 δέλτοι}} ἐφορωμέναι, ἄνευ τῶν δέλτων διαλέξεως περιλαμβανομένων.",
        "wlheader-enotif": "Σύστημα εἰδήσεως μέσῳ ἠλ-ἐπιστολῶν ἐνεργόν.",
+       "wlnote": "Κατωτέρω {{PLURAL:$1|ἐστὶν ἡ ὑστάτη μεταβολὴ|εἰσὶν αἱ ὑστάται  '''$1'''  μεταβολαὶ}} ἐν {{PLURAL:$2|τῇ ὑστάτῃ μίᾳ ὥρᾳ|ταῖς ὑστάταις '''$2''' ὥραις}}.",
        "wlshowlast": "Ἐμφάνισις τῶν τελευταίων $1 ὡρῶν $2 ἡμερῶν $3",
        "watchlist-options": "Ἐπιλογαὶ ἐφοροδιαλογῆς",
        "watching": "Ἐφορῶν...",
index 579df7a..97e5b09 100644 (file)
        "searchprofile-advanced-tooltip": "Suech in wytere Namensryym",
        "search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Werter}})",
        "search-result-category-size": "{{PLURAL:$1|1 Kategorii|$1 Kategorie}} ({{PLURAL:$2|1 Unterkategorii|$2 Unterkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Wyterleitig $1)",
        "search-section": "(Abschnitt $1)",
        "search-suggest": "Hesch „$1“ gmeint?",
        "uploadwarning": "Warnig",
        "uploadwarning-text": "Bitte tue unte d Dateibsschryybig ändere un versuech s nomol.",
        "savefile": "Datei spychere",
-       "uploadedimage": "het „[[$1]]“ ufeglade",
-       "overwroteimage": "het e neiji Version vu „[[$1]]“ uffeglade",
        "uploaddisabled": "Uffelade deaktiviert",
        "copyuploaddisabled": "S Uffelade iber URL isch abschalte wore.",
        "uploaddisabledtext": "S Uffelade vu Dateie isch deaktiviert.",
        "watchlist-details": "{{PLURAL:$1|1 Syte wird|$1 Sytene wärde}} beobachtet (Diskussionssyte nid zelt, aber ou beobachtet).",
        "wlheader-enotif": "Dr E-Mail-Benochrichtigungsdienscht isch aktiviert.",
        "wlheader-showupdated": "Syte mit Anderige, wu no nit aagluegt sin, sin '''fett''' dargstellt.",
+       "wlnote": "Do {{PLURAL:$1|chunnt di letscht Änderig|chemme di letschte '''$1''' Änderige}} vu dr letschte {{PLURAL:$2|Stund|'''$2''' Stunde}}. Stand: $3, $4 Uhr.",
        "wlshowlast": "Zeig di letschte $1 Stunde $2 Tage $3",
        "watchlist-options": "Aazeigoptione",
        "watching": "Am beobachte …",
index 23cbf79..ebce018 100644 (file)
        "talkpagelinktext": "Resoonaght",
        "specialpage": "Duillag er lheh",
        "personaltools": "Greienyn persoonagh",
-       "postcomment": "Meer noa",
        "articlepage": "Jeeagh er y duillag chummal",
        "talk": "Resoonaght",
        "views": "Reayrtyn",
        "remembermypassword": "Cooinnee m'ockle arrey (rish wheesh as $1 {{PLURAL:$1|laa|laa|laa|laaghyn}})",
        "login": "Log stiagh",
        "nav-login-createaccount": "Log stiagh / croo coontys",
-       "loginprompt": "Shegin dhyt cur pooar da minniagyn dy loggal stiagh ayns {{SITENAME}}.",
        "userlogin": "Log stiagh / croo coontys",
        "userloginnocreate": "Log stiagh",
        "logout": "Log magh",
        "searchprofile-images-tooltip": "Ronsee coadanyn",
        "searchprofile-everything-tooltip": "Ronsee dagh red (goaill stiagh duillagyn resoonaght)",
        "search-result-size": "$1 ({{PLURAL:$2|1 fockle|$2 'ockle|$2 'ockle|$2 focklyn}})",
-       "search-result-score": "Bentynys: $1%",
        "search-redirect": "(aa-enmyssit ass $1)",
        "search-section": "(rheynn $1)",
        "search-suggest": "R'ou çheet er: $1",
        "filesource": "Bun:",
        "badfilename": "T'ennym y choadan aa-enmyssit myr \"$1\".",
        "savefile": "Sauail y coadan",
-       "uploadedimage": "\"[[$1]]\" laadit neese",
        "uploadvirus": "Ta veerys 'sy choadan! Mynphoyntyn: $1",
        "watchthisupload": "Freill arrey er y choadan shoh",
        "upload-file-error": "Marranys ynveanagh",
index 3f4f994..76e5945 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Mladanali"
+                       "Mladanali",
+                       "아라"
                ]
        },
        "tog-underline": "A shaya zaruruwa",
@@ -14,7 +15,6 @@
        "tog-showtoolbar": "A nuna sandar kayan aiki ta gyarawa (ana buƙatar JavaScript)",
        "tog-editondblclick": "A gyara shafuna da dabar-kiliki (ana buƙatar JavaScript)",
        "tog-editsectiononrightclick": "A lamunta gyara shashe da kilikin dama a kan kanun shashe (ana buƙatar JavaScript)",
-       "tog-rememberpassword": "A adana bayanan loginkina a wannan kwamfyuta (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "tog-watchcreations": "A daɗa shafunan da na ƙirƙira a cikin jerina na kan ido",
        "tog-watchdefault": "A daɗa shafunan da na gyara a cikin jerina na kan ido",
        "tog-watchmoves": "A daɗa shafunan da na gusar a cikin jerina na kan ido",
        "navigation": "Shawagi",
        "qbfind": "Nemo",
        "qbedit": "Gyarawa",
-       "vector-action-delete": "Soke",
-       "vector-action-move": "Gusarwa",
-       "vector-action-protect": "A kare",
-       "vector-view-create": "Ƙirƙira",
        "errorpagetitle": "Tangarɗa",
        "returnto": "Koma $1",
        "tagline": "Daga {{SITENAME}}",
        "searchall": "duka",
        "powersearch-legend": "Sahihin nema",
        "powersearch-ns": "Binciki sararen sunaye:",
-       "powersearch-redir": "Nuna turawa gaba",
        "powersearch-toggleall": "Duka",
        "preferences": "Saituttuka",
        "mypreferences": "Saituttukana",
        "recentchanges": "Sauye-sauyen baya-bayan nan",
        "recentchanges-legend": "Zaɓi na sauye-sauyen baya-bayan nan",
        "recentchanges-feed-description": "Bi sawun sauye-sauyen ƙarshe na wikin da ke cikin wannan kwarare",
-       "rclistfrom": "Nuna sabbin sauye-sauye tun daga $1",
+       "rclistfrom": "Nuna sabbin sauye-sauye tun daga $3 $2",
        "rcshowhideminor": "$1 ƙananen sauye-sauye",
        "rcshowhidebots": "Rabuwat $1",
        "rcshowhideliu": "$1 Ma'aikata logaggi",
        "uploadlogpage": "Rajistan girke fayiloli",
        "filedesc": "Taƙaici",
        "fileuploadsummary": "Taƙaici:",
-       "uploadedimage": "an girke \"[[$1]]\"",
        "filehist": "Tarihin fayil",
        "filehist-help": "ku Latsa rana/lokaci ku ga fayil yadda yake a wannan lokaci",
        "filehist-deleteone": "soke",
        "booksources-go": "Mu je",
        "log": "Rajistoci ayyuka",
        "allpages": "Duka shafuna",
-       "alphaindexline": "$1 zuwa $2",
        "prevpage": "Shafi na baya ($1)",
        "allpagesfrom": "Nuna shafuna farawa daga:",
        "allpagesto": "Nuna shafuna har:",
index b781900..cb43f56 100644 (file)
        "fileexists-shared-forbidden": "在共享文件庫中既存在同名文件。\n係話汝仍然想愛上載其嘅話,請返回並用一隻新名來上傳邇隻文件。[[File:$1|thumb|center|$1]]",
        "uploadwarning": "上傳警告",
        "savefile": "保存文件",
-       "uploadedimage": "已上傳“[[$1]]”",
        "uploaddisabled": "上傳己停用。",
        "uploaddisabledtext": "Tóng-on song-chhòn chhai chhṳ́ miong-chham put hí-khó yung.",
        "php-uploaddisabledtext": "PHP文件上傳已經停用。請檢查file_uploads設定。",
index b5506ae..acb72ef 100644 (file)
        "copyrightpage": "{{ns:project}}:Kūleana kope",
        "currentevents": "Nūhou",
        "currentevents-url": "Project:Nūhou",
-       "disclaimers": "Nā Akahele",
+       "disclaimers": "Akahana",
        "disclaimerpage": "Project:Akahele Laulaha",
        "edithelp": "Kōkua ho‘ololi",
        "mainpage": "Papa Kinohi",
        "filedelete-reason-otherlist": "Nā kumu ʻē aʻe",
        "download": "hoʻoili",
        "randompage": "ʻAtikala Kaulele",
-       "randomincategory-selectcategory-submit": "Huli",
        "statistics": "ʻIkepilihelu",
        "statistics-header-pages": "ʻIkepilihelu ʻaoʻao",
        "statistics-header-edits": "ʻIkepilihelu hoʻololi",
        "watchlisttools-raw": "Hoʻololi i ka papakiaʻi maka",
        "duplicate-defaultsort": "<strong>E akahele:</strong> Mauʻaʻe ke kī kaʻalike paʻamau \"$2\" i ke kī kaʻalike paʻamau \"$1\" mai ka wā mua.",
        "version-specialpages": "Nā ‘Ao‘ao kūikawā",
-       "version-poweredby-translators": "Mea unuhi translatewiki.net",
+       "version-poweredby-translators": "nā mea unuhi ma translatewiki.net",
        "version-software-version": "Mana",
        "redirect": "Kiahou e ka waihona, ka mea hoʻohana, ka ʻaoʻao aiʻole ka ID loihape",
        "redirect-legend": "Kiahou i kekahi waihona aiʻole kekahi ʻaoʻao",
index ca7a37d..3cd4cf8 100644 (file)
@@ -43,7 +43,7 @@
        "tog-watchdefault": "מעקב אחרי דפים וקבצים שערכתי",
        "tog-watchmoves": "מעקב אחרי דפים וקבצים שהעברתי",
        "tog-watchdeletion": "מעקב אחרי דפים וקבצים שמחקתי",
-       "tog-watchrollback": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×©×©×\97×\96רת×\99",
+       "tog-watchrollback": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ×©×\91×\94×\9d ×\91×\99צעת×\99 ×©×\97×\96×\95ר ×\9e×\94×\99ר",
        "tog-minordefault": "הגדרת כל פעולת עריכה כמשנית אם לא צוין אחרת",
        "tog-previewontop": "הצגת תצוגה מקדימה לפני תיבת העריכה",
        "tog-previewonfirst": "הצגת תצוגה מקדימה בעריכה ראשונה",
        "privacypage": "Project:מדיניות הפרטיות",
        "badaccess": "שגיאה בהרשאות",
        "badaccess-group0": "אינכם מורשים לבצע את הפעולה שביקשתם.",
-       "badaccess-groups": "הפעולה שביקשתם לבצע מוגבלת למשתמשים ב{{PLURAL:$2|קבוצה הבאה|אחת הקבוצות הבאות}}: $1.",
+       "badaccess-groups": "הפעולה שביקשת לבצע מוגבלת למשתמשים ב{{PLURAL:$2|קבוצה הבאה|אחת הקבוצות הבאות}}: $1.",
        "versionrequired": "נדרשת גרסה $1 של מדיה־ויקי",
        "versionrequiredtext": "גרסה $1 של מדיה־ויקי נדרשת לשימוש בדף זה. למידע נוסף, ראו את [[Special:Version|דף הגרסה]].",
        "ok": "אישור",
        "editinginterface": "'''אזהרה:''' הדף שאתם עורכים הוא אחד הדפים המספקים הודעות מערכת לתוכנה.\nשינויים בדף זה ישפיעו על תצוגת ממשק המשתמש של משתמשים אחרים באתר ויקי זה.\nכדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "cascadeprotected": "דף זה מוגן מעריכה כי הוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:\n$2",
        "namespaceprotected": "אינכם מורשים לערוך דפים במרחב השם '''$1'''.",
-       "customcssprotected": "×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d ×\9cער×\95×\9a ×\93×£ CSS ×\96×\94, ×\9b×\99×\95×\95×\9f ×©×\94×\95×\90 ×\9b×\95×\9c×\9c ×\90ת ×\94×\94×\92×\93ר×\95ת ×\94אישיות של משתמש אחר.",
-       "customjsprotected": "×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d ×\9cער×\95×\9a ×\93×£ JavaScript ×\96×\94, ×\9b×\99×\95×\95×\9f ×©×\94×\95×\90 ×\9b×\95×\9c×\9c ×\90ת ×\94×\94×\92×\93ר×\95ת ×\94אישיות של משתמש אחר.",
+       "customcssprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9cער×\95×\9a ×\93×£ CSS ×\96×\94 ×\9b×\99×\95×\95×\9f ×©×\94×\95×\90 ×\9b×\95×\9c×\9c ×\94×\92×\93ר×\95ת אישיות של משתמש אחר.",
+       "customjsprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9cער×\95×\9a ×\93×£ JavaScript ×\96×\94 ×\9b×\99×\95×\95×\9f ×©×\94×\95×\90 ×\9b×\95×\9c×\9c ×\94×\92×\93ר×\95ת אישיות של משתמש אחר.",
        "mycustomcssprotected": "אינכם מורשים לערוך דף CSS זה.",
        "mycustomjsprotected": "אינכם מורשים לערוך דף JavaScript זה.",
        "myprivateinfoprotected": "אין לך הרשאה לערוך את המידע הפרטי שלך",
        "noemail": "לא רשומה כתובת דואר אלקטרוני עבור ה{{GENDER:$1|משתמש|משתמשת}} \"$1\".",
        "noemailcreate": "יש לספק כתובת דואר אלקטרוני תקינה.",
        "passwordsent": "סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור \"$1\".\nאנא היכנסו חזרה לאתר אחרי שתקבלו אותה.",
-       "blocked-mailpassword": "×\9bת×\95×\91ת ×\94Ö¾IP ×©×\9c×\9b×\9d ×\97ס×\95×\9e×\94 ×\9eער×\99×\9b×\94, ×\95×\9cפ×\99×\9b×\9a ×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d להשתמש באפשרות שחזור הסיסמה כדי למנוע ניצול לרעה של התכונה.",
+       "blocked-mailpassword": "×\9bת×\95×\91ת ×\94Ö¾IP ×©×\9c×\9a × ×\97ס×\9e×\94 ×\9eער×\99×\9b×\94, ×\95×\9cפ×\99×\9b×\9a ×\90×\99× ×\9a ×\9e×\95רש×\94 להשתמש באפשרות שחזור הסיסמה כדי למנוע ניצול לרעה של התכונה.",
        "eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה עליכם לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לכם.",
        "throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
        "mailerror": "שגיאה בשליחת דואר: $1",
        "revertmerge": "ביטול המיזוג",
        "mergelogpagetext": "זוהי רשימה של המיזוגים האחרונים של גרסאות מדף אחד לתוך דף שני.",
        "history-title": "$1: היסטוריית גרסאות",
-       "difference-title": "$1: הבדלים בין גרסאות",
+       "difference-title": "הבדלים בין גרסאות בדף \"$1\"",
        "difference-title-multipage": "$1 ו{{GRAMMAR:תחילית|$2}}: הבדלים בין דפים",
        "difference-multipage": "(הבדלים בין דפים)",
        "lineno": "שורה $1:",
        "prefs-help-gender": "אין חובה למלא העדפה זו.\nהמערכת משתמשת במידע זה כדי לפנות אליך/אלייך ולציין את שם המשתמש שלך במין הדקדוקי הנכון.\nהמידע יהיה ציבורי.",
        "email": "דוא\"ל",
        "prefs-help-realname": "השם האמיתי הוא אופציונאלי.\nאם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.",
-       "prefs-help-email": "×\9bת×\95×\91ת ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\94×\99×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99ת, ×\90×\9a ×\94×\99×\90 ×\93ר×\95ש×\94 ×\9c×\90×\99פ×\95ס ×\94ס×\99ס×\9e×\94 ×\91×\9eקר×\94 ×©×ª×©×\9b×\97×\95 ×\90ת ×\94ס×\99ס×\9eה.",
+       "prefs-help-email": "×\9bת×\95×\91ת ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\94×\99×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99ת, ×\90×\91×\9c ×\94×\99×\90 ×\97×\99×\95× ×\99ת ×\9c×\90×\99פ×\95ס ×\94ס×\99ס×\9e×\94 ×\91×\9eקר×\94 ×©×ª×©×\9b×\97×\95 ×\90×\95תה.",
        "prefs-help-email-others": "באפשרותך גם לבחור לאפשר לאחרים ליצור איתך קשר באמצעות דוא\"ל דרך קישור בדף המשתמש או בדף השיחה שלך.\nכתובת הדוא\"ל שלך לא תיחשף כשמשתמשים אחרים ייצרו קשר איתך.",
        "prefs-help-email-required": "כתובת דואר אלקטרוני נדרשת לכתיבה באתר.",
        "prefs-info": "מידע בסיסי",
        "userrights-no-interwiki": "אין לכם הרשאה לערוך הרשאות משתמש באתרים אחרים.",
        "userrights-nodatabase": "בסיס הנתונים $1 אינו קיים או אינו מקומי.",
        "userrights-nologin": "עליכם [[Special:UserLogin|להיכנס לחשבון]] עם הרשאות מתאימות כדי לשנות הרשאות של משתמשים.",
-       "userrights-notallowed": "×\90×\99×\9f ×\9c×\9b×\9d הרשאה להוסיף או להסיר הרשאות של משתמשים.",
+       "userrights-notallowed": "×\90×\99×\9f ×\9c×\9a הרשאה להוסיף או להסיר הרשאות של משתמשים.",
        "userrights-changeable-col": "קבוצות שבאפשרותכם לשנות",
        "userrights-unchangeable-col": "קבוצות שאין באפשרותכם לשנות",
        "userrights-conflict": "התנגשות בין שינויי הרשאות משתמש! אנא בדקו את השינויים שלכם ואשרו אותם.",
        "randomincategory": "דף אקראי בקטגוריה",
        "randomincategory-invalidcategory": "\"$1\" אינו שם תקין לקטגוריה.",
        "randomincategory-nopages": "אין דפים בקטגוריה [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "קבלת דף אקראי מהקטגוריה: $1 $2.",
-       "randomincategory-selectcategory-submit": "מעבר",
+       "randomincategory-category": "קטגוריה:",
+       "randomincategory-legend": "דף אקראי בקטגוריה",
        "randomredirect": "הפניה אקראית",
        "randomredirect-nopages": "אין הפניות במרחב השם \"$1\".",
        "statistics": "סטטיסטיקות",
        "exbeforeblank": "התוכן לפני שרוקן היה: \"$1\"",
        "delete-confirm": "מחיקת $1",
        "delete-legend": "מחיקה",
-       "historywarning": "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
+       "historywarning": "<strong>אזהרה:</strong> לדף שאתם עומדים למחוק יש היסטוריית שינויים של {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
        "confirmdeletetext": "אתם עומדים למחוק דף יחד עם כל ההיסטוריה שלו.\n\nאנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נוהלי האתר]].",
        "actioncomplete": "הפעולה בוצעה",
        "actionfailed": "הפעולה נכשלה",
        "delete-edit-reasonlist": "עריכת סיבות המחיקה",
        "delete-toobig": "דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.",
        "delete-warning-toobig": "דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.",
-       "delete-cantedit": "אין באפשרותך למחוק את הדף כי אין לך הרשאה לערוך אותו.",
+       "deleteprotected": "אין באפשרותך למחוק את הדף כי הוא מוגן.",
        "deleting-backlinks-warning": "'''אזהרה:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|דפים אחרים]] מקשרים לדף שאתם עומדים למחוק או מכלילים אותו.",
        "rollback": "שחזור עריכות",
        "rollback_short": "שחזור",
        "import": "ייבוא דפים",
        "importinterwiki": "ייבוא בין־אתרי",
        "import-interwiki-text": "אנא בחרו אתר ויקי וכותרת דף לייבוא.\nתאריכי העריכות ושמות העורכים יישמרו.\nכל פעולות הייבוא הבין־אתרי נשמרות ב[[Special:Log/import|יומן הייבוא]].",
-       "import-interwiki-source": "אתר/דף המקור:",
+       "import-interwiki-sourcewiki": "אתר המקור:",
+       "import-interwiki-sourcepage": "דף המקור:",
        "import-interwiki-history": "העתקת כל היסטוריית העריכות של דף זה",
        "import-interwiki-templates": "ייבוא גם של כל התבניות המוכללות בדף",
        "import-interwiki-submit": "ייבוא",
        "logentry-newusers-byemail": "חשבון המשתמש $3 נוצר על־ידי $1 והסיסמה נשלחה בדוא\"ל",
        "logentry-newusers-autocreate": "חשבון המשתמש $1 {{GENDER:$2|נוצר}} אוטומטית",
        "logentry-rights-rights": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3 מ$4 ל$5&rlm;",
-       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3",
+       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3&rlm;",
        "logentry-rights-autopromote": "$1 קודם אוטומטית מ$4 ל$5",
        "logentry-upload-upload": "$1 {{GENDER:$2|העלה|העלתה}} את $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|העלה|העלתה}} גרסה חדשה של $3",
index dcccfad..1aa0dbc 100644 (file)
        "node-count-exceeded-category-desc": "यह उन पृष्ठों की श्रेणी है जिनमें नोड-संख्या सीमा पार की गयी है।",
        "node-count-exceeded-warning": "पृष्ठ ने नोड-संख्या पार की है",
        "expansion-depth-exceeded-category": "पृष्ठ जिनमें विस्तार गहराई पार की गई है",
-       "expansion-depth-exceeded-category-desc": "यह à¤\89न à¤ªà¥\83षà¥\8dठà¥\8bà¤\82 à¤\95à¥\80 à¤¶à¥\8dरà¥\87णà¥\80 à¤¹à¥\88 à¤\9cिनमà¥\87à¤\82 à¤µà¤¿à¤¸à¥\8dतार à¤\97हराà¤\88 à¤ªà¤¾à¤° à¤\95à¥\80 à¤\97यà¥\80 है।",
+       "expansion-depth-exceeded-category-desc": "यह à¤ªà¥\83षà¥\8dठ à¤µà¤¿à¤¸à¥\8dतार à¤\97हराà¤\88 à¤ªà¤¾à¤° à¤\95रता है।",
        "expansion-depth-exceeded-warning": "पृष्ठ में विस्तार गहराई पार की गई है",
        "parser-unstrip-loop-warning": "Unstrip लूप पाया गया",
        "parser-unstrip-recursion-limit": "Unstrip पुनरावर्तन सीमा पार की गई ($1)",
        "randomincategory": "श्रेणी में यादृच्छिक (रैंडम) पृष्ठ",
        "randomincategory-invalidcategory": "\"$1\" एक मान्य श्रेणी नाम नहीं है।",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कोई पृष्ठ नहीं हैं।",
-       "randomincategory-selectcategory": "श्रेणी से यादृच्छिक (रैंडम) पृष्ठ खोलें: $1 $2",
-       "randomincategory-selectcategory-submit": "खोलें",
        "randomredirect": "किसी एक पुनर्निर्देशन पर जाएँ",
        "randomredirect-nopages": "नामस्थान \"$1\" में कोई पुनर्निर्देशन नहीं हैं।",
        "statistics": "आँकड़े",
        "delete-edit-reasonlist": "हटाने के कारण संपादित करें",
        "delete-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\n{{SITENAME}} के अनपेक्षित रूप से बंद होने से रोकने के लिये ऐसे पृष्ठों को हटाने की अनुमति नहीं है।",
        "delete-warning-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\nइसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;\nकृपया सोच समझ कर आगे बढ़ें।",
-       "delete-cantedit": "आप इस पृष्ठ को नहीं हटा सकते क्योंकि आपको इसकी अनुमति नहीं है।",
        "deleting-backlinks-warning": "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
        "rollback": "संपादन वापिस लें",
        "rollback_short": "वापिस लें",
        "import": "पृष्ठ इम्पोर्ट करें",
        "importinterwiki": "ट्रान्सविकि आयात",
        "import-interwiki-text": "आयात करने के लिये एक विकि और एक पृष्ठ चुनें।\nअवतरण दिनांक और संपादक नाम ज्यों-के-त्यों रखे जाएँगे।\nसभी ट्रान्सविकि आयात क्रियाएँ [[Special:Log/import|आयात लॉग]] में डाली जाती हैं।",
-       "import-interwiki-source": "स्रोत विकि/पृष्ठ:",
        "import-interwiki-history": "इस पृष्ठ के सभी इतिहास अवतरण कॉपी करें",
        "import-interwiki-templates": "सभी साँचे शामिल करें",
        "import-interwiki-submit": "आयात",
index 255e77f..1600b9d 100644 (file)
        "talkpagelinktext": "Hisayranay",
        "specialpage": "Espesyal nga panid",
        "personaltools": "Mga kinaugalingon nga galamiton",
-       "postcomment": "Bag-o nga seksyon",
        "articlepage": "Lantawon ang panid sang ka-undan",
        "talk": "Paghisayranay",
        "views": "Mga talanawon",
        "externaldberror": "Mahimo nga may ara sang sala sa pagpamatood sang database ukon wala ka sa lugar nga magbag-o sang imo pang-guha nga akawnt.",
        "login": "Mag sulod",
        "nav-login-createaccount": "Magsulod / maghimo account",
-       "loginprompt": "Kinahanglan mo nga pasugtan ang kokes agod nga makasulod ka sa {{SITENAME}}.",
        "userlogin": "Mag sulod / maghimo account",
        "userloginnocreate": "Magsulod",
        "logout": "Mag guha",
        "searchprofile-advanced-tooltip": "Pangitaon sa pahungod nga espasyo sang pangalan",
        "search-result-size": "$1 ({{PLURAL:$2|1 pulong|$2 pulong}})",
        "search-result-category-size": "{{PLURAL:$1|1 ka miyembro|$1 ka mga miyembro}} ({{PLURAL:$2|1 ka subcategoriya|$2 ka mga subcategoriya}}, {{PLURAL:$3|1 ka hilera|$3 ka mga hilera}})",
-       "search-result-score": "Pagkaangot: $1%",
        "search-redirect": "(gindirekta liwat $1)",
        "search-section": "(seksiyon $1)",
        "search-suggest": "Ang buot mo silingon: $1",
        "file-too-large": "Ang dokumeto ginapadala mo madako gid.",
        "filename-tooshort": "Ang ngalan sang dokumento malipot gid.",
        "filetype-banned": "Ini sari ni dokumento madumili.",
-       "uploadedimage": "na-uplod \"[[$1]]\"",
        "watchthisupload": "Bantayan ining panid",
        "license": "Pagpanglisensya",
        "license-header": "Pagpanglisensya",
index 0b526c5..6b07b21 100644 (file)
        "view": "Vidi",
        "view-foreign": "vidi na projektu $1",
        "edit": "uredi",
+       "edit-local": "Uredi lokalni opis",
        "create": "Započni",
        "create-local": "dodaj lokalni opis",
        "editthispage": "Uredi ovu stranicu",
        "searchprofile-advanced-tooltip": "Traži u zadanom imenskom prostoru",
        "search-result-size": "$1 ({{PLURAL:$2|1 riječ|$2 riječi}})",
        "search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}} ({{PLURAL:$2|1 potkategorija|$2 potkategorije|$2 potkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
-       "search-result-score": "Povezanost: $1%",
        "search-redirect": "(preusmjeravanje $1)",
        "search-section": "(odlomak $1)",
        "search-suggest": "Mislili ste: $1",
        "uploadwarning": "Upozorenje kod postavljanja",
        "uploadwarning-text": "Molimo izmijenite opis datoteke ispod i pokušajte kasnije.",
        "savefile": "Sačuvaj datoteku",
-       "uploadedimage": "je postavio \"$1\"",
-       "overwroteimage": "postavljena nova inačica od \"[[$1]]\"",
        "uploaddisabled": "Postavljanje je onemogućeno",
        "copyuploaddisabled": "Postavljanje URL-om onemogućeno.",
        "uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
        "unusedtemplateswlh": "druge poveznice",
        "randompage": "Slučajna stranica",
        "randompage-nopages": "Nema stranica u {{PLURAL:$2|imenskom prostoru|imenskim prostorima}}: $1.",
-       "randomincategory-selectcategory-submit": "Idi",
        "randomredirect": "Slučajno preusmjeravanje",
        "randomredirect-nopages": "Nema preusmjeravanja u imenskom prostoru \"$1\".",
        "statistics": "Statistika",
        "import": "Uvezi stranice",
        "importinterwiki": "Transwiki uvoz",
        "import-interwiki-text": "Izaberite wiki i ime stranice za uvoz.\nPovijest stranice i imena suradnika će biti sačuvani.\nTranswiki uvoz stranica je zabilježen u [[Special:Log/import|evidenciji uvoza stranica]].",
-       "import-interwiki-source": "Izvor wiki/stranica:",
        "import-interwiki-history": "Prenesi sve inačice ove stranice",
        "import-interwiki-templates": "Uključi sve predloške",
        "import-interwiki-submit": "Uvezi",
        "logentry-rights-rights": "$1 {{GENDER:$2|je promijenio|je promijenila}} suradnička prava računa $3 iz $4 u $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|je promijenio|je promijenila}} članstvo skupine suradničkog računa $3",
        "logentry-rights-autopromote": "Suradničkom računu $1 {{GENDER:$1| automatski je promijenjeno članstvo|automatski su promijenjena članstva}} iz $4 u $5",
+       "logentry-upload-upload": "$1 је {{GENDER:$2|postavio|postavila}} $3",
+       "logentry-upload-overwrite": "$1 је {{GENDER:$2|postavio|postavila}} novu inačicu $3",
+       "logentry-upload-revert": "$1 је {{GENDER:$2|postavio|postavila}} $3",
        "rightsnone": "(suradnik)",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\"].\nInače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će dodan na stranicu \"[$3 $2]\", zajedno s vašim suradničkim imenom i imenom internetskog preglednika koji rabite.",
        "feedback-subject": "Tema:",
index b952766..d51bf83 100644 (file)
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezialseit",
        "personaltools": "Meine Werkzeiche",
-       "postcomment": "Neier Abschnitt",
        "articlepage": "Inhaltsseit oonzeiche",
        "talk": "Diskussion",
        "views": "Ansichte",
        "externaldberror": "Entweder es lieht en Fehler bei der externe Authentifizierung voar orrer du därrefst dein externes Benutzerkonto net aktualisiere.",
        "login": "Oonmelde",
        "nav-login-createaccount": "Oonmelde / Benutzerkonto erstelle",
-       "loginprompt": "Zur Oonmeldung müsse Cookies aktiviert sin.",
        "userlogin": "Oonmelde / Benutzerkonto erstelle",
        "userloginnocreate": "Oonmelde",
        "logout": "Abmelde",
        "searchprofile-advanced-tooltip": "Such in weitre Noomeräume",
        "search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})",
        "search-result-category-size": "{{PLURAL:$1|1 Seit|$1 Seite}} ({{PLURAL:$2|1 Unnerkategorie|$2 Unnerkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Weiterleitung von „$1“)",
        "search-section": "(Abschnitt $1)",
        "search-file-match": "(treffende Dateiinhalte)",
        "uploadwarning": "Hochloodewarnung",
        "uploadwarning-text": "Bittschön änner unner die Dateibeschreibung und versuch das nochmo erneit.",
        "savefile": "Datei speichre",
-       "uploadedimage": "lud „[[$1]]“ hoch",
-       "overwroteimage": "Hot en nei Version von \"[[$1]]\" hochgelood",
        "uploaddisabled": "Hochloode deaktiviert",
        "copyuploaddisabled": "Das Hochloode von URLs ist deaktiviert",
        "uploaddisabledtext": "Das Hochloode von Dateie ist deaktiviert.",
        "watchlist-details": "Du beobachtest {{PLURAL:$1|en Seit|$1 Seite}}, ohne dass Diskussionsseite getrennt gezählt werre.",
        "wlheader-enotif": "Der E-Mail-Benachrichtigungsdienst ist aktiviert.",
        "wlheader-showupdated": "Seite mit noch net gesiehne Ännrunge werre'''fett''' dorgestellt.",
-       "wlnote2": "Do folliche die Ändrunge von der letzte {{PLURAL:$1|Stund|<strong>$1</strong> Stunne}}. Stand: $2, $3.",
        "wlshowlast": "Zeich die Ännrunge von der letzte $1 Stunde, $2 Tooch orrer $3.",
        "watchlist-options": "Oonzeichoptione",
        "watching": "Beobachte …",
        "duplicate-defaultsort": "Achtung: Der Sortierungsschlüssel „$2“ üwerschreibt den voarher verwenndte Schlüssel „$1“.",
        "version": "Version",
        "version-extensions": "Installierte Erweitrunge",
+       "version-skins": "Benutzeroberfläche",
        "version-specialpages": "Erweitrungen mit Spezialseite",
        "version-parserhooks": "Parsererweitrunge",
        "version-variables": "Variable",
        "version-antispam": "Spamschutzerweitrunge",
-       "version-skins": "Benutzeroberfläche",
        "version-other": "Sonstiche Erweitrungen",
        "version-mediahandlers": "Medienutzungserweitrunge",
        "version-hooks": "Schnittstelle ''(Hooks)''",
index a15861f..7f7e3ac 100644 (file)
        "randomincategory": "Připadna strona w kategoriji",
        "randomincategory-invalidcategory": "\"$1\" płaćiwe kategorijowe mjeno njeje.",
        "randomincategory-nopages": "W kategoriji [[:Category:$1|$1]] žane strony njejsu.",
-       "randomincategory-selectcategory": "Připadna strona z kategorija: $1 $2",
-       "randomincategory-selectcategory-submit": "Wotesłać",
        "randomredirect": "Připadne daleposrědkowanje",
        "randomredirect-nopages": "Žane daleposrědkowanja w mjenowym rumje \"$1\".",
        "statistics": "Statistika",
        "delete-edit-reasonlist": "Přičiny za wušmórnjenje wobdźěłać",
        "delete-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.",
        "delete-warning-toobig": "Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.",
-       "delete-cantedit": "Njemóžeš tutu stronu zhašeć, dokelž nimaš prawo ju wobdźěłować.",
        "deleting-backlinks-warning": "'''Warnowanje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druhe strony]] wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
        "rollback": "Změny cofnyć",
        "rollback_short": "Cofnyć",
        "import": "Strony importować",
        "importinterwiki": "Import z druheho wikija",
        "import-interwiki-text": "Wuběr wiki a stronu za importowanje. Daty wersijow a mjena awtorow so zachowaja. Wšě akcije za transwiki-importy so w [[Special:Log/import|protokolu importow]] protokoluja.",
-       "import-interwiki-source": "Žórłowy wiki/Žórłowa strona:",
        "import-interwiki-history": "Wšě wersije ze stawiznow tuteje strony kopěrować",
        "import-interwiki-templates": "Wšě předłohi zapřijeć",
        "import-interwiki-submit": "Importować",
index 6759eb6..f006760 100644 (file)
        "talkpagelinktext": "Diskite",
        "specialpage": "Paj Espesyal",
        "personaltools": "Zouti pèsonèl yo",
-       "postcomment": "Nouvo seksyon",
        "articlepage": "Wè paj atik",
        "talk": "Diskisyon",
        "views": "Afichay yo",
        "externaldberror": "Li sanble ke yon erè pwodui ak bazdone a pou idantifikasyon ki pa nan sistèm an, oubyen ou pa otorize pou mete a jou kont ou genyen nan lòt sistèm yo.",
        "login": "Konekte ou",
        "nav-login-createaccount": "Kreye yon kont oubyen konekte ou",
-       "loginprompt": "Ou dwe aksepte (aktive) koukiz (cookies) yo pou ou kapab konekte nan {{SITENAME}}.",
        "userlogin": "Kreye yon kont oubyen konekte ou",
        "userloginnocreate": "Konekte ou",
        "logout": "Dekonekte ou",
        "upload": "Chaje yon fichye",
        "uploadbtn": "Chaje yon fichye",
        "uploadlogpage": "Jounal chajman pou fichye yo",
-       "uploadedimage": "chaje « [[$1]] »",
        "listfiles": "Lis fichye yo",
        "file-anchor-link": "Fichye",
        "filehist": "Istorik fichye a",
index 374c088..8c2f8aa 100644 (file)
        "preferences": "Beállítások",
        "mypreferences": "Beállítások",
        "prefs-edits": "Szerkesztéseid száma:",
+       "prefsnologintext2": "Kérjük jelentkezzen be a beállítások módosításához.",
        "prefs-skin": "Felület",
        "skin-preview": "előnézet",
        "datedefault": "Nincs beállítás",
        "import": "Lapok importálása",
        "importinterwiki": "Transwiki importálása",
        "import-interwiki-text": "Válaszd ki az importálandó wikit és lapcímet.\nA változatok dátumai és a szerkesztők nevei megőrzésre kerülnek.\nValamennyi transwiki importálási művelet az [[Special:Log/import|importálási naplóban]] kerül naplózásra.",
-       "import-interwiki-source": "Forrás wiki/lap:",
        "import-interwiki-history": "A lap összes előzményváltozatainak másolása",
        "import-interwiki-templates": "Az összes sablon hozzáadása",
        "import-interwiki-submit": "Importálás",
index 52c0fa0..1b775f0 100644 (file)
        "talkpagelinktext": "Քննարկում",
        "specialpage": "Սպասարկող էջ",
        "personaltools": "Անձնական գործիքներ",
-       "postcomment": "Նոր բաժին",
        "articlepage": "Դիտել հոդվածը",
        "talk": "Քննարկում",
        "views": "Դիտումները",
        "externaldberror": "Տեղի է ունեցել վավերացման արտաքին տվյալների բազայի սխալ, կամ դուք չունեք բավարար իրավունքներ ձեր արտաքին հաշվի փոփոխման համար։",
        "login": "Մտնել համակարգ",
        "nav-login-createaccount": "Մտնել / Գրանցվել",
-       "loginprompt": "{{SITENAME}} մուտք գործելու համար հարկավոր է քուքիները թույլատրել։",
        "userlogin": "Մտնել / Գրանցվել",
        "userloginnocreate": "Մտնել",
        "logout": "Դուրս գալ համակարգից",
        "searchprofile-advanced-tooltip": "Որոնել նշված անվանատարածքներում",
        "search-result-size": "$1 ({{PLURAL:$2|1 բառ|$2 բառ}})",
        "search-result-category-size": "{{PLURAL:$1|անդամ}} ({{PLURAL:$2|ենթակատեգորիա}}, {{PLURAL:$3|նիշք}})",
-       "search-result-score": "Համընկնում $1%",
        "search-redirect": "(վերահղում $1)",
        "search-section": "(բաժին $1)",
        "search-suggest": "Գուցե նկատի ունե՞ք՝ $1",
        "fileexists-shared-forbidden": "Այսպիսի անվանմամբ նիշք արդեն գոյություն ունի նիշքերի ընդհանուր զետեղարանում։ Խնդրում ենք հետ վերադառնալ և բեռնել նիշքը նոր անվանմամբ։ [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Զգուշացում",
        "savefile": "Հիշել ֆայլը",
-       "uploadedimage": "բեռնվեց «[[$1]]»",
-       "overwroteimage": "բեռնվեց «[[$1]]» նիշքի նոր տարբերակ",
        "uploaddisabled": "Բեռնումները արգելված են",
        "uploaddisabledtext": "Նիշքերի բեռնումը արգելափակված է։",
        "uploadscripted": "Այս նիշքը պարունակում է HTML-կոդ կամ գրվածք (սկրիպտ), որը կարող է սխալ մեկնաբանվել զննարկիչի կողմից։",
        "watchlist-details": "Ձեր հսկացանկում կա {{PLURAL:$1|$1 էջ|$1 էջ}}` քննարկման էջերը չհաշված։",
        "wlheader-enotif": "Էլ-փոստով տեղեկացումը միացված է։",
        "wlheader-showupdated": "Էջերը, որոնք փոփոխվել են ձեր դրանց վերջին այցից հետո բերված են '''թավատառ'''։",
+       "wlnote": "Ստորև բերված {{PLURAL:$1|է վերջին փոփոխությունը|են վերջին '''$1''' փոփոխությունները}} վերջին <strong>$2</strong> ժամվա ընթացքում։",
        "wlshowlast": "Ցուցադրել վերջին $1 ժամերը $2 օրերը $3",
        "watchlist-options": "Հսկացանկի նախընտրություններ",
        "watching": "Հսկվում է...",
index 07f2fd1..0991e5e 100644 (file)
        "hidetoc": "celar",
        "collapsible-collapse": "Plicar",
        "collapsible-expand": "Displicar",
+       "confirmable-confirm": "Es {{GENDER:$1|tu}} secur?",
+       "confirmable-yes": "Si",
+       "confirmable-no": "No",
        "thisisdeleted": "Vider o restaurar $1?",
        "viewdeleted": "Vider $1?",
        "restorelink": "{{PLURAL:$1|un modification|$1 modificationes}} delite",
        "invalidtitle-knownnamespace": "Titulo invalide con spatio de nomines \"$2\" e texto \"$3\"",
        "invalidtitle-unknownnamespace": "Titulo invalide con spatio de nomines incognite $1 e texto \"$2\"",
        "exception-nologin": "Non identificate",
-       "exception-nologin-text": "[[Special:Userlogin|Aperi session]] pro poter acceder a iste pagina o action.",
+       "exception-nologin-text": "Aperi session pro poter acceder a iste pagina o action.",
        "exception-nologin-text-manual": "Es necessari $1 pro poter acceder a iste pagina o action.",
        "virus-badscanner": "Configuration incorrecte: programma antivirus non cognoscite: ''$1''",
        "virus-scanfailed": "scannamento fallite (codice $1)",
        "parser-template-recursion-depth-warning": "Limite de recursion del patrono excedite ($1)",
        "language-converter-depth-warning": "Limite de profunditate del conversor de lingua excedite ($1)",
        "node-count-exceeded-category": "Paginas in que le numero de nodos excede le limite",
-       "node-count-exceeded-category-desc": "Un categoria pro paginas ubi le numero de nodos ha essite excedite.",
+       "node-count-exceeded-category-desc": "Le pagina excede le numero maxime de nodos.",
        "node-count-exceeded-warning": "Le numero de nodos in iste pagina excede le limite",
        "expansion-depth-exceeded-category": "Paginas in que le profunditate de expansion excede le limite",
        "expansion-depth-exceeded-category-desc": "Isto es un categoria pro paginas in le quales le profunditate de expansion ha essite excedite.",
        "randomincategory": "Pagina aleatori in categoria",
        "randomincategory-invalidcategory": "\"$1\" non es un nomine de categoria valide.",
        "randomincategory-nopages": "Il non ha paginas in [[:Category:$1]].",
-       "randomincategory-selectcategory": "Prender un pagina qualcunque del categoria: $1 $2.",
-       "randomincategory-selectcategory-submit": "Va",
        "randomredirect": "Redirection aleatori",
        "randomredirect-nopages": "Il non ha redirectiones in le spatio de nomines \"$1\".",
        "statistics": "Statisticas",
        "import": "Importar paginas",
        "importinterwiki": "Importation transwiki",
        "import-interwiki-text": "Selige le wiki e le titulo del pagina a importar.\nLe datas del versiones e nomines del contributores essera preservate.\nTote le actiones de importation transwiki se registra in le [[Special:Log/import|registro de importationes]].",
-       "import-interwiki-source": "Wiki/pagina de origine:",
        "import-interwiki-history": "Copiar tote le versiones del historia de iste pagina",
        "import-interwiki-templates": "Includer tote le patronos",
        "import-interwiki-submit": "Importar",
index 87985cc..431a3aa 100644 (file)
        "userlogout": "Keluar log",
        "notloggedin": "Belum masuk log",
        "userlogin-noaccount": "Belum punya akun?",
-       "userlogin-joinproject": "Join {{SITENAME}}",
+       "userlogin-joinproject": "Gabung {{SITENAME}}",
        "nologin": "Belum mempunyai akun? $1.",
        "nologinlink": "Daftarkan akun baru",
        "createaccount": "Buat akun baru",
        "searchprofile-advanced-tooltip": "Pencarian di ruang nama tertentu",
        "search-result-size": "$1 ({{PLURAL:$2|1 kata|$2 kata}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
-       "search-result-score": "Relevansi: $1%",
        "search-redirect": "(pengalihan $1)",
        "search-section": "(bagian $1)",
        "search-file-match": "(cocok dengan isi berkas)",
        "uploadwarning": "Peringatan pemuatan",
        "uploadwarning-text": "Mohon perbaiki keterangan berkas di bawah dan coba lagi.",
        "savefile": "Simpan berkas",
-       "uploadedimage": "memuat \"[[$1]]\"",
-       "overwroteimage": "memuat versi baru dari \"[[$1]]\"",
        "uploaddisabled": "Maaf, fasilitas pemuatan dimatikan.",
        "copyuploaddisabled": "Pengunggahan dengan URL dimatikan.",
        "uploaddisabledtext": "Pemuatan berkas tidak diizinkan.",
        "randomincategory": "Halaman acak dalam kategori",
        "randomincategory-invalidcategory": "\"$1\" bukanlah nama kategori yang berlaku.",
        "randomincategory-nopages": "Tidak ada halaman dalam [[:Category:$1]].",
-       "randomincategory-selectcategory": "Dapatkan halaman acak dari kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Lanjut",
        "randomredirect": "Pengalihan sembarang",
        "randomredirect-nopages": "Tak terdapat pengalihan pada ruang nama \"$1\".",
        "statistics": "Statistik",
        "watchlist-details": "Terdapat {{PLURAL:$1|$1 halaman|$1 halaman}} di daftar pantauan Anda, tidak termasuk halaman pembicaraan.",
        "wlheader-enotif": "Notifikasi surel diaktifkan.",
        "wlheader-showupdated": "Halaman-halaman yang telah berubah sejak kunjungan terakhir Anda ditampilkan dengan '''huruf tebal'''.",
-       "wlnote2": "Di bawah ini adalah perubahan yang terjadi dalam {{PLURAL:$1|sejam|<strong>$1</strong> jam}} terakhir, per $2, $3.",
+       "wlnote": "Di bawah ini adalah {{PLURAL:$1|perubahan|'''$1''' perubahan}} terakhir dalam '''$2''' jam terakhir, per $3, $4.",
        "wlshowlast": "Tampilkan $1 jam $2 hari terakhir $3",
        "watchlist-options": "Opsi daftar pantauan",
        "watching": "Memantau...",
        "import": "Impor halaman",
        "importinterwiki": "Impor transwiki",
        "import-interwiki-text": "Pilih suatu wiki dan judul halaman yang akan di impor.\nTanggal revisi dan nama penyunting akan dipertahankan.\nSemua aktivitas impor transwiki akan dicatat di [[Special:Log/import|log impor]].",
-       "import-interwiki-source": "Wiki/halaman sumber:",
        "import-interwiki-history": "Salin semua versi terdahulu dari halaman ini",
        "import-interwiki-templates": "Sertakan semua templat",
        "import-interwiki-submit": "Impor",
index 6e09f82..b1f5651 100644 (file)
        "talkpagelinktext": "Conversation",
        "specialpage": "Págine special",
        "personaltools": "Mi utensiles",
-       "postcomment": "Nov division",
        "articlepage": "Vider li articul",
        "talk": "Discussion",
        "views": "Aspectes",
        "yourdomainname": "Tui dominia:",
        "login": "Aperter session",
        "nav-login-createaccount": "Crear un conto o intrar",
-       "loginprompt": "Cookies deve esser permisset por intrar in {{SITENAME}}.",
        "userlogin": "Crear un conto o intrar",
        "userloginnocreate": "Intrar",
        "logout": "Surtida",
        "uploadwarning": "Advertiment de cargament",
        "uploadwarning-text": "Pleser modificar li descrition de file infra e prova denov.",
        "savefile": "Conservar file",
-       "uploadedimage": "cargat \"[[$1]]\"",
        "uploadscripted": "Ti file contene HTML o code scrite que posse esser interpretet erroremen per un navigator web.",
        "uploadvirus": "Li file contene un virus!\nDetallies: $1",
        "upload-maxfilesize": "Mesura maxim de file: $1",
        "watchlist-details": "{{PLURAL:$1|$1 págine|$1 págines}} in tui liste de págines vigilat, sin págines de discussion.",
        "wlheader-enotif": "Li notification de e-mail es permisset.",
        "wlheader-showupdated": "Págines quel hat esset mutat desde tui ultim visitation es monstrat in '''nigri'''",
+       "wlnote": "Infra {{PLURAL:$1|es li ultim change|es li ultim '''$1''' changes}} in li ultim {{PLURAL:$2|hor|'''$2''' hores}}.",
        "wlshowlast": "Monstra ultim $1 hores $2 dies $3",
        "watchlist-options": "Optiones de liste de págines vigilat",
        "watching": "Vigilant...",
index 88015ef..e976fac 100644 (file)
        "talkpagelinktext": "Okwu",
        "specialpage": "Ihü mkpà",
        "personaltools": "Ngwa nkem",
-       "postcomment": "Nkeji ohúrù",
        "articlepage": "Zi ihü iheníle",
        "talk": "Akíkó",
        "views": "Há hụrụ ya olé",
        "yourdomainname": "Obí gi:",
        "login": "Banyé",
        "nav-login-createaccount": "Banyé / ké buwá",
-       "loginprompt": "Í gi nwé cookies Í chórí bátá {{SITENAME}}.",
        "userlogin": "Banyé / ké buwá",
        "userloginnocreate": "Banyé",
        "logout": "Fwuör",
        "searchprofile-everything-tooltip": "Tùwé ihe nile (na okwu ihü)",
        "searchprofile-advanced-tooltip": "Chọwa na ímé áhàámá nke gí Í kèrè",
        "search-result-size": "$1 ({{PLURAL:$2|mkpurụ edemede 1|$2 mkpurụ edemede}})",
-       "search-result-score": "Otu o di nkpà: $1%",
        "search-redirect": "(kúfù $1)",
        "search-section": "(nkeji $1)",
        "search-suggest": "Ị̀ kwèshirí dé: $1",
        "filereuploadsummary": "Gbanwere maka usòrò:",
        "filesource": "Mkpọlọ́gwụ̀:",
        "savefile": "Domá usòrò",
-       "uploadedimage": "\"[[$1]]\" dị na élú",
        "upload-source": "Usòrò mkpọlógwù",
        "sourcefilename": "Áhà usòrò mkpọlógwù:",
        "sourceurl": "URL mkpọlógwù:",
        "watchlisttools-edit": "Lé na rü na ndetù ńlé",
        "watchlisttools-raw": "Rüo ndetù nlènlé mèpòrò",
        "version": "Ùdị",
-       "version-specialpages": "Ihü mkpà",
        "version-skins": "Akpụkpọ",
+       "version-specialpages": "Ihü mkpà",
        "version-other": "Nke ozor",
        "version-hooks": "Nyazo",
        "version-hook-name": "Áhà nyazo",
index 5ed80a3..d350f64 100644 (file)
        "talkpagelinktext": "дувцам",
        "specialpage": "ГӀулакха оагӀув",
        "personaltools": "Са гӀорсаш",
-       "postcomment": "Керда декъам",
        "articlepage": "Йоазув тӀа бӀаргтасса",
        "talk": "Дувцам",
        "views": "БӀаргтассамаш",
        "yourdomainname": "Шун цӀеноагӀув:",
        "login": "Чувала/яла",
        "nav-login-createaccount": "ЦӀи яьккха/Ший oагӀув ела",
-       "loginprompt": "Укх белхацхьоагIоца доттагӀал лаца, шун \"cookies\" йийла хьалдеза.",
        "userlogin": "ЦӀи яьккха/ОагӀув ела",
        "userloginnocreate": "Чувала/яла",
        "logout": "Аравала/яла",
        "uploadlogpage": "Чуяьккхамий тептар",
        "filedesc": "Лоаца лоацам",
        "fileuploadsummary": "Лоаца лоацам:",
-       "uploadedimage": "\"[[$1]]\" чуяьккхай",
        "license": "ЦIийяздар",
        "license-header": "ЦIийяздар",
        "imgfile": "паьл",
index 01f4b3e..a519039 100644 (file)
        "talkpagelinktext": "Diskutez",
        "specialpage": "Specala pagino",
        "personaltools": "Personala utensili",
-       "postcomment": "Nova seciono",
        "articlepage": "Regardar artiklo",
        "talk": "Diskuto",
        "views": "Apari",
        "yourdomainname": "Vua domano:",
        "login": "Enirar",
        "nav-login-createaccount": "Enirar",
-       "loginprompt": "Vu mustas permisar ''cookies'' por enirar a {{SITENAME}}.",
        "userlogin": "Enirar / krear konto",
        "userloginnocreate": "Enirar",
        "logout": "Ekirar",
        "searchprofile-articles-tooltip": "Serchez en $1",
        "searchprofile-images-tooltip": "Serchez arkivi",
        "search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vorti}})",
-       "search-result-score": "Importo: $1%",
        "search-redirect": "(ridirektilo $1)",
        "search-section": "(seciono $1)",
        "search-suggest": "Ka vu volis dicar: $1",
        "fileexists": "Arkivo kun ica nomo ja existas.\nVolutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.\n[[$1|thumb]]",
        "uploadwarning": "Averto pri la adkargo di arkivo",
        "savefile": "Registragar arkivo",
-       "uploadedimage": "adkargita \"[[$1]]\"",
        "uploaddisabled": "Pardonez, la adkargo esas desaktiva.",
        "watchthisupload": "Surveyar ica arkivo",
        "upload-success-subj": "Adcharjo sucesoza",
        "unwatch": "Ne plus surveyar",
        "unwatchthispage": "Ne plus surveyar",
        "notanarticle": "Ne esas artiklo",
+       "wlnote": "Infre esas la lasta {{PLURAL:$1|chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|horo|'''$2''' hori}}.",
        "wlshowlast": "Montrar la lasta $1 hori $2 dii $3",
        "watchlist-options": "Surveryo-listo selekti",
        "watching": "Surveyanta…",
index d65c9b7..448c2a9 100644 (file)
        "searchprofile-advanced-tooltip": "Leita í ákveðnum nafnrýmum",
        "search-result-size": "$1 ({{PLURAL:$2|1 orð|$2 orð}})",
        "search-result-category-size": "{{PLURAL:$1|1 meðlimur|$1 meðlimir}} ({{PLURAL:$2|1 undirflokks|$2 undirflokka}}, {{PLURAL:$3|1 skrá|$3 skrár}})",
-       "search-result-score": "Gildi: $1%",
        "search-redirect": "(tilvísun $1)",
        "search-section": "(hluti $1)",
        "search-file-match": "(passar við innihald skráa)",
        "rcshowhidebots": "$1 vélmenni",
        "rcshowhidebots-show": "Sýna",
        "rcshowhidebots-hide": "Fela",
-       "rcshowhideliu": "$1 skráðir notendur",
+       "rcshowhideliu": "$1 skráða notendur",
        "rcshowhideliu-show": "Sýna",
        "rcshowhideliu-hide": "Fela",
        "rcshowhideanons": "$1 óinnskráða notendur",
        "uploadwarning": "Aðvörun",
        "uploadwarning-text": "Vinsamlegast breyttu myndalýsingunni hér fyrir neðan og reyndu aftur.",
        "savefile": "Vista",
-       "uploadedimage": "hlóð inn „[[$1]]“",
-       "overwroteimage": "hlóð inn nýrri útgáfu af \"[[$1]]\"",
        "uploaddisabled": "Lokað er fyrir að hlaða inn myndum.",
        "copyuploaddisabled": "Lokað er fyrir að hlaða inn myndum frá vefslóð.",
        "uploaddisabledtext": "Lokað er fyrir að hlaða inn skrám.",
        "randomincategory": "Handhófsvalin síða í flokki",
        "randomincategory-invalidcategory": "„$1“ er ekki gilt flokkarheiti",
        "randomincategory-nopages": "Það eru engar síður í flokkinum [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Fá handhófsvalda síðu úr flokkinum: $1 $2.",
-       "randomincategory-selectcategory-submit": "Fara",
        "randomredirect": "Handahófsvalin tilvísun",
        "randomredirect-nopages": "Það eru engar tilvísanir í nafnrýminu „$1“.",
        "statistics": "Tölfræði",
        "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.",
        "wlheader-enotif": "Tilkynning með tölvupósti er virk.",
        "wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.",
+       "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta <strong>$1</strong> breyting|eru síðustu <strong>$1</strong> breytingar}} {{PLURAL:$2|síðustu <strong>$2</strong> klukkutímann|síðastliðna <strong>$2</strong> klukkutímana}}, frá $3, $4.",
        "wlshowlast": "Sýna síðustu $1 klukkutíma, $2 daga, $3",
        "watchlist-options": "Vaktlistastillingar",
        "watching": "Vakta...",
        "import": "Flytja inn síður",
        "importinterwiki": "Milli-Wiki innflutningur",
        "import-interwiki-text": "Veldu Wiki-kerfi og síðutitil til að flytja inn.\nBreytingaupplýsingar s.s. dagsetningar og höfundanöfn eru geymd.\nAllir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].",
-       "import-interwiki-source": "Uppruni wiki síðunnar:",
        "import-interwiki-history": "Afrita allar breytingar þessarar síðu",
        "import-interwiki-templates": "Innifala öll snið með",
        "import-interwiki-submit": "Flytja inn",
index 91b5254..c6c57a3 100644 (file)
        "hidetoc": "nascondi",
        "collapsible-collapse": "Comprimi",
        "collapsible-expand": "Espandi",
+       "confirmable-confirm": "Sei {{GENDER:$1|sicuro|sicura}}?",
        "confirmable-yes": "Sì",
        "confirmable-no": "No",
        "thisisdeleted": "Vedi o ripristina $1?",
        "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": "Si prega di [[Special:Userlogin|eseguire l'accesso]] per poter accedere a questa pagina o azione.",
+       "exception-nologin-text": "Per poter accedere a questa pagina o azione è necessario eseguire l'accesso.",
        "exception-nologin-text-manual": "Si prega di $1 per poter accedere a questa pagina o azione.",
        "virus-badscanner": "Errore di configurazione: antivirus sconosciuto: ''$1''",
        "virus-scanfailed": "scansione fallita (codice $1)",
        "parser-template-recursion-depth-warning": "È stato raggiunto il limite di ricorsione nel template ($1)",
        "language-converter-depth-warning": "Limite di profondità del convertitore di lingua superato ($1)",
        "node-count-exceeded-category": "Pagine dove viene superato il numero di nodi",
-       "node-count-exceeded-category-desc": "Una categoria per pagine dove viene superato il numero di nodi.",
+       "node-count-exceeded-category-desc": "La pagina supera il numero massimo di nodi.",
        "node-count-exceeded-warning": "Questa pagina ha superato il numero di nodi",
        "expansion-depth-exceeded-category": "Pagine nelle quali è superata la profondità di espansione",
-       "expansion-depth-exceeded-category-desc": "Questa è una categoria per pagine dove viene superata la profondità di espansione.",
+       "expansion-depth-exceeded-category-desc": "La pagina supera la profondità massima di espansione.",
        "expansion-depth-exceeded-warning": "Questa pagina ha superato la profondità di espansione",
        "parser-unstrip-loop-warning": "Rilevato ciclo di Unstrip",
        "parser-unstrip-recursion-limit": "Superati i limiti di ricorsione di Unstrip ($1)",
        "preferences": "Preferenze",
        "mypreferences": "preferenze",
        "prefs-edits": "Modifiche effettuate:",
-       "prefsnologintext2": "Si prega di $1 per impostare le preferenze dell'utente.",
+       "prefsnologintext2": "Per modificare le tue preferenze è necessario eseguire l'accesso.",
        "prefs-skin": "Aspetto grafico (skin)",
        "skin-preview": "Anteprima",
        "datedefault": "Nessuna preferenza",
        "randomincategory": "Pagina casuale in una categoria",
        "randomincategory-invalidcategory": "\"$1\" non è un nome di categoria valido.",
        "randomincategory-nopages": "Non ci sono pagine in [[:Category:$1]].",
-       "randomincategory-selectcategory": "Ottieni una pagina casuale dalla categoria: $1 $2.",
-       "randomincategory-selectcategory-submit": "Vai",
+       "randomincategory-category": "Categoria:",
+       "randomincategory-legend": "Pagina casuale in una categoria",
        "randomredirect": "Un redirect a caso",
        "randomredirect-nopages": "Non ci sono redirect nel namespace \"$1\".",
        "statistics": "Statistiche",
        "trackingcategories-desc": "Criteri per l'inclusione nella categoria",
        "noindex-category-desc": "La pagina non è indicizzata dai robot perché contiene la parola magica <code><nowiki>__NOINDEX__</nowiki></code> e si trova in un namespace dove tale flag è consentito.",
        "index-category-desc": "La pagina contiene <code><nowiki>__INDEX__</nowiki></code> (e si trova in un namespace dove tale flag è consentito) e quindi è indicizzata dai robot, anche se normalmente non lo sarebbe.",
-       "post-expand-template-inclusion-category-desc": "Dopo aver espanso tutti i template, la dimensione della pagina sarà più grande di <code>$wgMaxArticleSize</code>, e dunque alcuni non si espanderanno.",
-       "post-expand-template-argument-category-desc": "Dopo aver espanso il parametro di un template (qualcosa tra parentesi graffe, come <code>{{{Foo}}})</code>, la pagina sarà più grande di <code>$wgMaxArticleSize</code>.",
+       "post-expand-template-inclusion-category-desc": "La dimensione della pagina sarà più grande di <code>$wgMaxArticleSize</code> dopo aver espanso tutti i template, e dunque alcuni non si espanderanno.",
+       "post-expand-template-argument-category-desc": "La pagina sarà più grande di <code>$wgMaxArticleSize</code> dopo aver espanso il parametro di un template (qualcosa tra tre parentesi graffe, come <code>{{{Foo}}}</code>).",
        "expensive-parserfunction-category-desc": "La pagina usa troppe funzioni parser (come <code>#ifexist</code>). Vedi [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Categoria aggiunta se la pagina contiene un collegamento interrotto ad un file (un collegamento per incorporare un file quando questo non esiste).",
-       "hidden-category-category-desc": "Questa è una categoria che contiene <code><nowiki>__HIDDENCAT__</nowiki></code>, il quale impedisce che venga mostrata, in modo predefinito, nel riquadro dei collegamenti alle categorie delle pagine.",
+       "broken-file-category-desc": "La pagina contiene un collegamento interrotto ad un file (un collegamento per incorporare un file quando questo non esiste).",
+       "hidden-category-category-desc": "Questa categoria contiene <code><nowiki>__HIDDENCAT__</nowiki></code> nella sua pagina, il quale impedisce che venga mostrata, in modo predefinito, nel riquadro dei collegamenti alle categorie delle pagine.",
        "trackingcategories-nodesc": "Nessuna descrizione disponibile.",
        "trackingcategories-disabled": "La categoria è disabilitata",
        "mailnologin": "Nessun indirizzo cui inviare il messaggio",
        "mywatchlist": "osservati speciali",
        "watchlistfor2": "Dell'utente $1 $2",
        "nowatchlist": "La lista degli osservati speciali è vuota.",
-       "watchlistanontext": "Per visualizzare e modificare l'elenco degli osservati speciali è necessario $1.",
+       "watchlistanontext": "Per visualizzare e modificare l'elenco degli osservati speciali è necessario eseguire l'accesso.",
        "watchnologin": "Accesso non effettuato",
        "addwatch": "Aggiungi agli osservati speciali",
        "addedwatchtext": "La pagina \"[[:$1]]\" è stata aggiunta alla propria [[Special:Watchlist|lista degli osservati speciali]].\nD'ora in poi, le modifiche apportate alla pagina e alla sua discussione verranno elencate in quella sede.",
        "exbeforeblank": "Il contenuto prima dello svuotamento era: '$1'",
        "delete-confirm": "Cancella \"$1\"",
        "delete-legend": "Cancella",
-       "historywarning": "'''Attenzione:''' La pagina che stai per cancellare ha una cronologia con approssimativamente $1 {{PLURAL:$1|versione|versioni}}:",
+       "historywarning": "'''Attenzione:''' La pagina che stai per cancellare ha una cronologia con $1 {{PLURAL:$1|versione|versioni}}:",
        "confirmdeletetext": "Stai per cancellare una pagina con tutta la sua cronologia. Per cortesia, conferma che è tua intenzione procedere a tale cancellazione, che hai piena consapevolezza delle conseguenze della tua azione e che essa è conforme alle linee guida stabilite in [[{{MediaWiki:Policy-url}}]].",
        "actioncomplete": "Azione completata",
        "actionfailed": "Azione fallita",
        "delete-edit-reasonlist": "Modifica i motivi di cancellazione",
        "delete-toobig": "La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|versione|versioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.",
        "delete-warning-toobig": "La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|versione|versioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.",
+       "deleteprotected": "Non puoi cancellare questa pagina perché è stata protetta.",
        "deleting-backlinks-warning": "'''Attenzione:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|altre pagine]] contengono collegamenti o inclusioni alla pagina che stai per cancellare.",
        "rollback": "Annulla le modifiche",
        "rollback_short": "Rollback",
        "autoblockid": "Autoblocco #$1",
        "block": "Blocca utente",
        "unblock": "Sblocca utente",
-       "blockip": "Blocco utente",
+       "blockip": "Blocca {{GENDER:$1|utente}}",
        "blockip-legend": "Blocca l'utente",
        "blockiptext": "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o a un utente registrato.\nIl blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza delle [[{{MediaWiki:Policy-url}}|regole di {{SITENAME}}]].\nIndicare il motivo specifico per il quale si procede al blocco (per esempio, citando i titoli di eventuali pagine oggetto di vandalismo).",
        "ipaddressorusername": "Indirizzo IP o nome utente:",
        "ipb-unblock-addr": "Sblocca $1",
        "ipb-unblock": "Sblocca un utente o un indirizzo IP",
        "ipb-blocklist": "Elenca i blocchi attivi",
-       "ipb-blocklist-contribs": "Contributi di $1",
+       "ipb-blocklist-contribs": "Contributi di {{GENDER:$1|$1}}",
        "unblockip": "Sblocca l'utente",
        "unblockiptext": "Usare il modulo sottostante per restituire l'accesso in scrittura ad un utente o indirizzo IP bloccato.",
        "ipusubmit": "Rimuovi questo blocco",
        "import": "Importa pagine",
        "importinterwiki": "Importazione transwiki",
        "import-interwiki-text": "Selezionare un progetto wiki e il titolo della pagina da importare.\nLe date di pubblicazione e i nomi degli autori delle varie versioni saranno conservati.\nTutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log/import|log di importazione]].",
-       "import-interwiki-source": "Sorgente wiki/pagina:",
+       "import-interwiki-sourcewiki": "Wiki di origine:",
+       "import-interwiki-sourcepage": "Pagina di origine:",
        "import-interwiki-history": "Copia l'intera cronologia di questa pagina",
        "import-interwiki-templates": "Includi tutti i template",
        "import-interwiki-submit": "Importa",
        "action-pagelang": "modificare la lingua della pagina",
        "log-name-pagelang": "Modifiche lingua",
        "log-description-pagelang": "Questo è un registro delle modifiche alla lingua delle pagine.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha modificato}} la lingua della pagina $3 da $4 a $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha modificato}} la lingua della pagina $3 da $4 a $5.",
+       "default-skin-not-found": "Oops! La skin predefinita per il tuo wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, non è disponibile.\n\nLa tua installazione sembra includere le seguenti skin. Vedi [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configurazione skin] per informazioni su come abilitarle e scegliere quella predefinita.\n\n$2\n\n; Se hai appena installato MediaWiki:\n: Probabilmente lo hai installato da git, o direttamente dal codice sorgente usando qualche altro metodo. Ciò era previsto. Prova ad installare alcune skin dalla [https://www.mediawiki.org/wiki/Category:All_skins directory su mediawiki.org], tramite:\n:* Scaricando il [https://www.mediawiki.org/wiki/Download programma di installazione tarball], che viene fornito con diverse skin ed estensioni. Puoi fare copia ed incolla della directory <code>skins/</code> da lì.\n:* Clonando uno dei repository <code>mediawiki/skins/*</code> tramite git nella directory <code>skins/</code> della tua installazione MediaWiki.\n: In questo modo non dovrebbe interferire con il tuo repository git se sei uno sviluppatore MediaWiki.\n\n; Se hai appena aggiornato MediaWiki:\n: MediaWiki 1.24 e versioni successive non abilità più automaticamente le skin installate (vedi [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuale: rilevamento automatico skin]). Puoi copiare le seguenti linee nel <code>LocalSettings.php</code> per abilitare tutte le skin attualmente installate:\n\n<pre>$3</pre>\n\n; Se hai appena modificato <code>LocalSettings.php</code>:\n: Ricontrolla i nomi delle skin per errori di battitura.",
+       "default-skin-not-found-no-skins": "Oops! La skin predefinita per il tuo wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, non è disponibile.\n\nNon hai skin installate.\n\n; Se hai appena installato o aggiornato MediaWiki:\n: Probabilmente lo hai installato da git, o direttamente dal codice sorgente usando qualche altro metodo. Ciò era previsto. MediaWiki 1.24 e versioni successive non include alcuna skin nel repository principale. Prova ad installare alcune skin dalla [https://www.mediawiki.org/wiki/Category:All_skins directory su mediawiki.org], tramite:\n:* Scaricando il [https://www.mediawiki.org/wiki/Download programma di installazione tarball], che viene fornito con diverse skin ed estensioni. Puoi fare copia ed incolla della directory <code>skins/</code> da lì.\n:* Clonando uno dei repository <code>mediawiki/skins/*</code> tramite git nella directory <code>skins/</code> della tua installazione MediaWiki.\n: In questo modo non dovrebbe interferire con il tuo repository git se sei uno sviluppatore MediaWiki. Vedi [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configurazione skin] per informazioni su come abilitarle e scegliere quella predefinita.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (abilitata)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disabilitata''')"
 }
index b3ba7e9..b576b2a 100644 (file)
        "hidetoc": "非表示",
        "collapsible-collapse": "折り畳む",
        "collapsible-expand": "展開する",
-       "confirmable-confirm": "本当にいいですか?",
+       "confirmable-confirm": "{{GENDER:$1|}}本当によろしいですか?",
        "confirmable-yes": "はい",
        "confirmable-no": "いいえ",
        "thisisdeleted": "$1を閲覧または復元しますか?",
        "invalidtitle-knownnamespace": "名前空間名「$2」と名前「$3」の組み合わせはページ名として無効です",
        "invalidtitle-unknownnamespace": "不明な名前空間番号 $1 と名前「$2」の組み合わせはページ名として無効です",
        "exception-nologin": "ログインしていません",
-       "exception-nologin-text": "このページまたは操作にアクセスできるようにするには[[Special:Userlogin|ログイン]]してください。",
+       "exception-nologin-text": "このページまたは操作にアクセスできるようにするにはログインしてください。",
        "exception-nologin-text-manual": "このページまたは操作にアクセスできるようにするには$1してください。",
        "virus-badscanner": "環境設定が不適合です: 不明なウイルス対策ソフトウェア: <em>$1</em>",
        "virus-scanfailed": "スキャンに失敗しました (コード $1)",
        "parser-template-recursion-depth-warning": "テンプレートの再帰の深さ ($1) が上限を超えました",
        "language-converter-depth-warning": "言語変換機能の深さ ($1) が制限を超えました",
        "node-count-exceeded-category": "ノード数が制限を超えたページ",
-       "node-count-exceeded-category-desc": "ノード数が制限を超えたページを列挙するカテゴリです。",
+       "node-count-exceeded-category-desc": "ノード数が上限を超えたページ。",
        "node-count-exceeded-warning": "ページがノード数の制限を超えました",
        "expansion-depth-exceeded-category": "展開の深さ制限を超えたページ",
-       "expansion-depth-exceeded-category-desc": "このカテゴリでは、展開の深さが制限を超えたページを列挙します。",
+       "expansion-depth-exceeded-category-desc": "展開の深さが上限を超えたページ。",
        "expansion-depth-exceeded-warning": "ページが展開の深さ制限を超えました",
        "parser-unstrip-loop-warning": "unstrip のループを検出しました",
        "parser-unstrip-recursion-limit": "unstrip の再帰 ($1) が上限を超えました",
        "preferences": "個人設定",
        "mypreferences": "個人設定",
        "prefs-edits": "編集回数:",
-       "prefsnologintext2": "個人設定を変更するには$1してください。",
+       "prefsnologintext2": "個人設定を変更するにはログインしてください。",
        "prefs-skin": "外装",
        "skin-preview": "プレビュー",
        "datedefault": "選択なし",
        "randomincategory": "カテゴリ内でおまかせ表示",
        "randomincategory-invalidcategory": "「$1」は有効なカテゴリ名ではありません。",
        "randomincategory-nopages": "カテゴリ [[:Category:$1|$1]] にはページがありません。",
-       "randomincategory-selectcategory": "以下のカテゴリでおまかせ表示: $1 $2",
-       "randomincategory-selectcategory-submit": "表示",
+       "randomincategory-category": "カテゴリ:",
+       "randomincategory-legend": "カテゴリ内でおまかせ表示",
        "randomredirect": "おまかせリダイレクト",
        "randomredirect-nopages": "「$1」名前空間に転送ページはありません。",
        "statistics": "統計",
        "post-expand-template-inclusion-category-desc": "テンプレートを展開したあとのページ サイズが <code>$wgMaxArticleSize</code> よりも大きいため、一部のテンプレートが展開されなかった",
        "post-expand-template-argument-category-desc": "テンプレート引数 (<code>{{{Foo}}}</code> のような三重中括弧部分) を展開したあとのページが <code>$wgMaxArticleSize</code> よりも大きい",
        "expensive-parserfunction-category-desc": "高負荷なパーサー関数 (<code>#ifexist</code> など) の呼び出し回数が多過ぎるページ。[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] を参照してください。",
-       "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない) に追加されるカテゴリ",
-       "hidden-category-category-desc": "<code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは、既定ではページのカテゴリ リンク ボックス内に表示されません。",
+       "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない)",
+       "hidden-category-category-desc": "ページの本文に <code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは既定ではページのカテゴリ リンク ボックス内に表示されません。",
        "trackingcategories-nodesc": "説明はありません。",
        "trackingcategories-disabled": "このカテゴリは無効化されています",
        "mailnologin": "送信アドレスがありません",
        "mywatchlist": "ウォッチリスト",
        "watchlistfor2": "利用者: $1 $2",
        "nowatchlist": "ウォッチリストには何も項目がありません。",
-       "watchlistanontext": "ウォッチリストにある項目を閲覧または編集するには、$1してください。",
+       "watchlistanontext": "ウォッチリストにある項目を閲覧または編集するには、ログインしてください。",
        "watchnologin": "ログインしていません",
        "addwatch": "ウォッチリストに追加",
        "addedwatchtext": "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。\nこのページまたはそのトークページが変更されると、ウォッチリストに表示されます。",
        "exbeforeblank": "白紙化前の内容:「$1」",
        "delete-confirm": "「$1」の削除",
        "delete-legend": "削除",
-       "historywarning": "<strong>警告:</strong> 削除しようとしているページには、$1版の履歴があります:",
+       "historywarning": "<strong>警告:</strong> 削除しようとしているページには、$1版の履歴があります:",
        "confirmdeletetext": "ページをすべての履歴とともに削除しようとしています。\n本当にこの操作を行いたいか、操作の結果を理解しているか、およびこの操作が[[{{MediaWiki:Policy-url}}|方針]]に従っているかどうか、確認してください。",
        "actioncomplete": "操作を完了しました",
        "actionfailed": "操作に失敗しました",
        "delete-edit-reasonlist": "削除理由を編集",
        "delete-toobig": "このページには、$1版を超える編集履歴があります。\nこのようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。",
        "delete-warning-toobig": "このページには、 $1版を超える編集履歴があります。\n削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。\n十分に注意してください。",
+       "deleteprotected": "このページは保護されているため削除できません。",
        "deleting-backlinks-warning": "'''警告:''' 削除しようとしているページは、[[Special:WhatLinksHere/{{FULLPAGENAME}}|他のページ]]からリンクまたは参照読み込みされています。",
        "rollback": "編集を巻き戻し",
        "rollback_short": "巻き戻し",
        "autoblockid": "自動ブロック #$1",
        "block": "利用者をブロック",
        "unblock": "利用者のブロックを解除",
-       "blockip": "利用者をブロック",
+       "blockip": "{{GENDER:$1|利用者}}をブロック",
        "blockip-legend": "利用者をブロック",
        "blockiptext": "以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。\nこのような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。\n以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。",
        "ipaddressorusername": "IPアドレスまたは利用者名:",
        "ipb-unblock-addr": "$1のブロックを解除",
        "ipb-unblock": "利用者またはIPアドレスのブロックを解除",
        "ipb-blocklist": "現在有効なブロックを表示",
-       "ipb-blocklist-contribs": "$1の投稿の一覧",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}}の投稿の一覧",
        "unblockip": "ブロックを解除",
        "unblockiptext": "以下のフォームで利用者またはIPアドレスのブロックを解除できます。",
        "ipusubmit": "このブロックを解除",
        "import": "ページデータの取り込み",
        "importinterwiki": "ウィキ間移動の取り込み",
        "import-interwiki-text": "取り込むウィキとページ名を選択してください。\n版の日付と編集者名は保持されます。\nウィキ間移動のすべての取り込み操作は[[Special:Log/import|取り込み記録]]に記録されます。",
-       "import-interwiki-source": "取り込み元のウィキ/ページ:",
+       "import-interwiki-sourcewiki": "取り込み元のウィキ:",
+       "import-interwiki-sourcepage": "取り込み元のページ:",
        "import-interwiki-history": "このページのすべての版を複製する",
        "import-interwiki-templates": "すべてのテンプレートを含める",
        "import-interwiki-submit": "取り込み",
index d7054bf..81bc7a8 100644 (file)
        "talkpagelinktext": "Chat",
        "specialpage": "Peshal piej",
        "personaltools": "Persnal tuuldem",
-       "postcomment": "Nyuu sekshan",
        "articlepage": "Vyuu kantent piej",
        "talk": "Diskoshan",
        "views": "Vyuu",
        "externaldberror": "Aida aatentikieshan dietabies era okor ar yu no lou fi opdiet yu extoernal akount.",
        "login": "Lag iin",
        "nav-login-createaccount": "Lag iin / kriet akount",
-       "loginprompt": "Yu mos ab kukidem eniebl fi lag iin tu {{SITENAME}}.",
        "userlogin": "Lag iin / kriet akount",
        "userloginnocreate": "Lag iin",
        "logout": "Lag out",
        "recentchangeslinked-to": "Shuo chienjdem tu piej wa lingk tu di gibn piej insted",
        "upload": "Opluod fail",
        "uploadlogpage": "Opluod lag",
-       "uploadedimage": "opluodid \"[[$1]]\"",
        "filehist": "Fail ischri",
        "filehist-help": "Klik pan a diet/taim fi vyuu di fail az ou iapier a di taim.",
        "filehist-current": "korant",
index 4f91578..1e4aa6b 100644 (file)
@@ -6,7 +6,8 @@
                        "Urhixidur",
                        "Xabier Armendaritz",
                        "Ælsån",
-                       "Midnight Gambler"
+                       "Midnight Gambler",
+                       "아라"
                ]
        },
        "tog-underline": "Understreg henvesnenger",
@@ -17,7 +18,6 @@
        "tog-showtoolbar": "Ves værktøjslenje til redigærenge",
        "tog-editondblclick": "Redigær sider ve dåbeltklik",
        "tog-editsectiononrightclick": "Redigær åfsnet ve at klikke på deres titler",
-       "tog-rememberpassword": "Husk adgengskode til næste besøĝ frå denne kompjuter (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "tog-watchcreations": "Tilføj sider a åpretter til miin åvervågnengsliste",
        "tog-watchdefault": "Tilføj sider a redigærer til miin åvervågnengsliste",
        "tog-watchmoves": "Tilføj sider a flytter til miin åvervågnengsliste",
        "talkpagelinktext": "diskusje",
        "specialpage": "Sonst side",
        "personaltools": "Personlige værktø'r",
-       "postcomment": "Tilføj en biskrevselenger",
        "articlepage": "Se'n ertikel",
        "talk": "Diskusje",
        "views": "Vesnenger",
        "filedeleteerror": "Kan ekke slette'n file \"$1\".",
        "directorycreateerror": "Kan ekke åprette katalåget \"$1\".",
        "filenotfound": "Kan ekke finde'n file \"$1\".",
-       "fileexistserror": "Kan ekke åprette \"$1\": æ file findes ålrede",
        "unexpected": "Uventet værdi: \"$1\"=\"$2\".",
        "formerror": "Fejl: Kan ekke åfsende formulær",
        "badtitle": "Førkert skrevselenger",
        "remembermypassword": "Husk min adgangskode til næste gang (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "login": "Loĝ på",
        "nav-login-createaccount": "Åpret æ konto æller loĝ på",
-       "loginprompt": "Du skal have cookies slået til før at kunne loĝge på {{SITENAME}}.",
        "userlogin": "Åpret æ konto æller loĝ på",
        "logout": "Loĝ åf",
        "userlogout": "Loĝ åf",
        "recentchanges": "Seneste ændrenger",
        "recentchanges-feed-description": "Ve dette fiid ken du følge de seneste ændrenger på {{SITENAME}}.",
        "rcnotefrom": "Nedenfør ses ændrengerne frå '''$2''' til '''$1''' vest.",
-       "rclistfrom": "Ves nye ændrenger startende frå $1",
+       "rclistfrom": "Ves nye ændrenger startende frå $3 $2",
        "rcshowhideminor": "$1 lile ændrenger",
        "rcshowhidebots": "$1 råbotter",
        "rcshowhideliu": "$1 regestrerede brugere",
        "upload": "Læĝ æ billet åp",
        "uploadbtn": "Læĝ æ gøret åp",
        "uploadlogpage": "Åplægnengslog",
-       "uploadedimage": "Låĝde \"[[$1]]\" åp",
        "listfiles": "Billetliste",
        "file-anchor-link": "Billet",
        "filehist": "Billetskigt",
        "log": "Loglister",
        "all-logs-page": "Åle loglister",
        "allpages": "Åle ertikler",
-       "alphaindexline": "$1 til $2",
        "nextpage": "Næste side ($1)",
        "prevpage": "Førge side ($1)",
        "allpagesfrom": "Ves sider startende frå:",
index 3a6b61b..0f1efd1 100644 (file)
        "talkpagelinktext": "Wicara",
        "specialpage": "Kaca astaméwa",
        "personaltools": "Piranti pribadi",
-       "postcomment": "Bagéyan anyar",
        "articlepage": "nDeleng artikel",
        "talk": "Dhiskusi",
        "views": "Tampilan",
        "externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
        "login": "Mlebu log",
        "nav-login-createaccount": "Log mlebu / nggawé rékening (akun)",
-       "loginprompt": "Panjenengan kudu ngaktifaké ''cookies'' supaya bisa mlebu (log in) ing {{SITENAME}}.",
        "userlogin": "Mlebu log / gawé rékening (akun)",
        "userloginnocreate": "Mlebu log",
        "logout": "Oncat",
        "searchprofile-advanced-tooltip": "Panggolèkan ing bilik jeneng biasa (''custom'')",
        "search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
-       "search-result-score": "Relevansi: $1%",
        "search-redirect": "(pangalihan $1)",
        "search-section": "(sèksi $1)",
        "search-suggest": "Apa panjenengan kersané: $1",
        "uploadwarning": "Pèngetan pangunggahan berkas",
        "uploadwarning-text": "Mangga owah katrangan berkas nèng ngisor lan coba manèh.",
        "savefile": "Simpen berkas",
-       "uploadedimage": "gambar \"[[$1]]\" kaunggahaké",
-       "overwroteimage": "ngunggahaké vèrsi anyar saka \"[[$1]]\"",
        "uploaddisabled": "Nuwun sèwu, fasilitas pangunggahan dipatèni.",
        "copyuploaddisabled": "Ngunggah mawa URL dipatèni.",
        "uploaddisabledtext": "Pangunggahan berkas ora diidinaké.",
        "watchlist-details": "Ngawasaké {{PLURAL:$1|$1 kaca|$1 kaca}}, ora kalebu kaca-kaca dhiskusi.",
        "wlheader-enotif": "Notifikasi layang elektronik diaktifaké.",
        "wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
+       "wlnote": "Ngisor iki {{PLURAL:$1|owahan pungkasan|'''$1''' owahan pungkasan}} {{PLURAL:$2|jam|'''$2''' jam}} kapungkur, per $3, $4.",
        "wlshowlast": "Tuduhna $1 jam $2 dina $3 pungkasan",
        "watchlist-options": "Opsi daftar pangawasan",
        "watching": "Ngawasi...",
        "duplicate-defaultsort": "Pènget: Kunci pilih asal (''Default sort key'') \"$2\" nggantèkaké kunci pilih asal sadurungé \"$1\".",
        "version": "Versi",
        "version-extensions": "Èkstènsi sing wis diinstalasi",
+       "version-skins": "Kulit",
        "version-specialpages": "Kaca astaméwa (kaca kusus)",
        "version-parserhooks": "Canthèlan parser",
        "version-variables": "Variabel",
        "version-antispam": "Pambendhung spam",
-       "version-skins": "Kulit",
        "version-other": "Liyané",
        "version-mediahandlers": "Pananganan média",
        "version-hooks": "Canthèlan-canthèlan",
index 857fa17..d5e1877 100644 (file)
        "talkpagelinktext": "განხილვა",
        "specialpage": "სპეციალური გვერდი",
        "personaltools": "პირადი ხელსაწყოები",
-       "postcomment": "ახალი სექცია",
        "articlepage": "სტატიის ნახვა",
        "talk": "განხილვა",
        "views": "გადახედვა",
        "hidetoc": "დამალვა",
        "collapsible-collapse": "ჩაკეცვა",
        "collapsible-expand": "გაშლა",
+       "confirmable-confirm": "{{GENDER:$1|დარწმუნებული}} ხართ?",
+       "confirmable-yes": "დიახ",
+       "confirmable-no": "არა",
        "thisisdeleted": "$1-ის ჩვენება თუ აღდგენა?",
        "viewdeleted": "იხილე $1?",
        "restorelink": "{{PLURAL:$1|ერთი წაშლილი რედაქტირება|$1 წაშლილი რედაქტირება}}",
        "invalidtitle-knownnamespace": "დაუშვებელი სათაური სახელთა სივრცე \"$2\" და ტექსტი \"$3\"-თან",
        "invalidtitle-unknownnamespace": "დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი \"$2\"-ით",
        "exception-nologin": "შესვლა არ განხორციელდა",
-       "exception-nologin-text": "á\83\90á\83\9b á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¡á\83\90á\83\9cá\83\90á\83®á\83\90á\83\95á\83\90á\83\93 á\83\90á\83\9c á\83\9bá\83\9dá\83\97á\83®á\83\9dá\83\95á\83\9cá\83\98á\83\9aá\83\98 á\83\9bá\83\9dá\83¥á\83\9bá\83\94á\83\93á\83\94á\83\91á\83\98á\83¡ á\83¨á\83\94á\83¡á\83\90á\83¡á\83 á\83£á\83\9aá\83\94á\83\91á\83\9aá\83\90á\83\93 á\83¡á\83\90á\83­á\83\98á\83 á\83\9dá\83\90 [[Special:Userlogin|á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\90á\83¨á\83\98 á\83¨á\83\94á\83¡á\83\95á\83\9aá\83\90]].",
+       "exception-nologin-text": "á\83\90á\83\9b á\83\92á\83\95á\83\94á\83 á\83\93á\83\96á\83\94 á\83¬á\83\95á\83\93á\83\9dá\83\9bá\83\98á\83¡á\83\90á\83\97á\83\95á\83\98á\83¡ á\83\90á\83\9c á\83\9bá\83\9dá\83¥á\83\9bá\83\94á\83\93á\83\94á\83\91á\83\98á\83¡á\83\97á\83\95á\83\98á\83¡ á\83¡á\83\90á\83­á\83\98á\83 á\83\9dá\83\90 á\83¡á\83\98á\83¡á\83¢á\83\94á\83\9bá\83\90á\83¨á\83\98 á\83¨á\83\94á\83¡á\83\95á\83\9aá\83\90.",
        "virus-badscanner": "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
        "virus-scanfailed": "სკანირების შეცდომა  (კოდი $1)",
        "virus-unknownscanner": "უცნობი ანტივირუსი:",
        "externaldberror": "საგარეო მონაცემთა ბაზაში აუტენტიფიკაციის შეცდომაა, ან თქვენ არ გაქვთ საკმარისი უფლებები საგარეო ანგარიშში ცვლილებების შესატანად.",
        "login": "შესვლა",
        "nav-login-createaccount": "შესვლა / რეგისტრაცია",
-       "loginprompt": "{{SITENAME}}-ში შესასვლელად საჭიროა კუკის (cookies) გააქტიურება.",
        "userlogin": "შესვლა/ანგარიშის შექმნა",
        "userloginnocreate": "შესვლა",
        "logout": "გასვლა",
        "currentrev": "მიმდინარე შესწორება",
        "currentrev-asof": "მიმდინარე ცვლილება $1 მდგომარეობით",
        "revisionasof": "$1-ის ვერსია",
-       "revision-info": "$1-ის ვერსია, შეტანილი $2-ის მიერ",
+       "revision-info": "$1-ის ვერსია, {{GENDER:$6|$2}}$7",
        "previousrevision": "←წინა ვერსია",
        "nextrevision": "შემდეგი ვერსია→",
        "currentrevisionlink": "მიმდინარე ვერსია",
        "searchprofile-advanced-tooltip": "ძიება სახელთა მოცემულ სივრცეში",
        "search-result-size": "$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)",
        "search-file-match": "(ემთხვევა ფაილის შინაარსს)",
        "right-deletedtext": "წაშლილი ტექსტის და განსხვავებების ხილვა.",
        "right-browsearchive": "წაშლილი გვერდების ძიება",
        "right-undelete": "გვერდის აღდგენა",
-       "right-suppressrevision": "á\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\97á\83\90á\83\92á\83\90á\83\9c á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83£á\83\9aá\83\98 á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83®á\83\98á\83\9aá\83\95á\83\90 á\83\93á\83\90 á\83\90á\83¦á\83\93á\83\92á\83\94á\83\9cá\83\90",
+       "right-suppressrevision": "á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83£á\83\9aá\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\94á\83\91á\83\98á\83¡ á\83®á\83\98á\83\9aá\83\95á\83\90, á\83\93á\83\90á\83\9bá\83\90á\83\9aá\83\95á\83\90 á\83\93á\83\90 á\83\90á\83¦á\83\93á\83\92á\83\94á\83\9cá\83\90 á\83§á\83\95á\83\94á\83\9aá\83\90 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡á\83\92á\83\90á\83\9c",
        "right-suppressionlog": "კერძო ჟურნალების ნახვა",
        "right-block": "სხვა მომხმარებლების მიერ რედაქტირების აკრძალვა",
        "right-blockemail": "ელ ფოსტის გაგზავნის აკრძალვა",
        "uploadwarning": "გადატვირთვის შეხსენება",
        "uploadwarning-text": "გთხოვთ ჩაასწოროთ ფაილის აღწერა ქვევით და ხელმეორედ სცადოთ.",
        "savefile": "ფაილის შენახვა",
-       "uploadedimage": "აიტვირთა „[[$1]]“",
-       "overwroteimage": "ატვირთულია „[[$1]]-ის“ ახალი ვერსია",
        "uploaddisabled": "ატვირთვა გამორთულია.",
        "copyuploaddisabled": "URL ატვირთვა გაღიშულია",
        "uploaddisabledtext": "ფაილების ატვირთვა შეუძლებელია.",
        "license-header": "ლიცენზია",
        "nolicense": "არაფერი არის მონიშნული",
        "license-nopreview": "(წინასწარ გადახედვა არ არის ხელმისაწვდომი)",
-       "upload_source_url": " (სწორი, საზოგადოდ ხელმისაწვდომი URL)",
-       "upload_source_file": " (ფაილი შენს კომპიუტერზე)",
+       "upload_source_url": "(თქვენ აირჩიეთ სწორი, საზოგადოდ ხელმისაწვდომი URL)",
+       "upload_source_file": "(თქვენ აირჩიეთ ფაილი თქვენი კომპიუტერიდან)",
+       "listfiles-delete": "წაშლა",
        "listfiles-summary": "ეს სპეციალური გვერდი აჩვენებს ყველა ატვირთულ ფაილს.",
        "listfiles_search_for": "ძიება სურათის სახელის მიხედვით:",
        "imgfile": "ფაილი",
        "randompage-nopages": "{{PLURAL:$2|სახელთა შემდეგი სივრცე|სახელთა შემდეგ სივრცეში}} \"$1\" არ არის გვერდები.",
        "randomincategory": "კატეგორიის შემთხვევითი გვერდი",
        "randomincategory-invalidcategory": "კატეგორია „$1“ არ არსებობს.",
-       "randomincategory-selectcategory-submit": "მიდი",
        "randomredirect": "ნებისმიერი გადამისამართება",
        "randomredirect-nopages": "სახელთა სივრცეში „$1“ არ არის გადამისამართებები.",
        "statistics": "სტატისტიკა",
        "protectedpages": "დაცული გვერდები",
        "protectedpages-indef": "მხოლოდ უვადო დაცვები",
        "protectedpages-cascade": "მხოლოდ კასკადური დაცვა",
+       "protectedpages-noredirect": "გადამისამართებების დამალვა",
        "protectedpagesempty": "ამ დროისთვის არ არსებობს დაცული გვერდები მოთხოვნილი პარამეტრებით.",
+       "protectedpages-timestamp": "თარიღი/დრო",
        "protectedpages-page": "გვერდი",
        "protectedpages-expiry": "ვადა გასდის",
+       "protectedpages-performer": "მომხმარებლის დაცვა",
+       "protectedpages-params": "დაცვის პარამეტრები",
        "protectedpages-reason": "მიზეზი",
        "protectedpages-unknown-timestamp": "უცნობი",
        "protectedpages-unknown-performer": "უცნობი მომხმარებელი",
        "watchlist-details": "$1 გვერდია თქვენი კონტროლის სიაში განხილვის გვერდების ჩაუთვლელად.",
        "wlheader-enotif": "ელ.ფოსტით შეტყობინება ჩართულია.",
        "wlheader-showupdated": "თქვენი ბოლო ვიზიტის შემდეგ შეცვლილი გვერდები, აღნიშნულია '''მუქად'''.",
+       "wlnote": "ქვემოთ {{PLURAL:$1|ნაჩვენებია ბოლო ცვლილება|ნაჩვენებია ბოლო '''$1''' ცვლილება}} უკანასკნელი {{PLURAL:$2|საათის|'''$2''' საათის}} მანძილზე, $3, $4 მდგომარეობით.",
        "wlshowlast": "აჩვენე ბოლო $1 საათის $2 დღის $3",
        "watchlist-options": "კონტროლის სიის პარამეტრები",
        "watching": "კონტროლებადი...",
        "autoblockid": "ავტომატური ბლოკირება #$1",
        "block": "მომხმარებლის დაბლოკვა",
        "unblock": "მომხმარებელზე ბლოკის მოხსნა",
-       "blockip": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\90á\83\9c IP á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\98á\83¡ á\83\91á\83\9aá\83\9dá\83\99á\83\98á\83 á\83\94á\83\91á\83\90",
+       "blockip": "á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9a {{GENDER:$1|á\83\93á\83\90á\83\91á\83\9aá\83\9dá\83\99á\83\95á\83\90}}",
        "blockip-legend": "მომხმარებლის დაბლოკვა",
        "blockiptext": "გამოიყენეთ ქვემოთ მოყვანილი ფორმა სპეციფიური IP მისამართის\nან მომხმარებლისთვის რედაქტირების ბლოკირებისთვის.\nამის გაკეთება შეიძლება მხოლოდ ვანდალიზმის ასარიდებლად,\nდა [[{{MediaWiki:Policy-url}}|პოლიტიკასთან]] თანხმობაში.\nჩაწერეთ სპეციფიური მიზეზი ქვემოთ (მაგ. მიუთითეთ გვერდები,\nრომლებზეც ვანდალიზმი განხორციელდა).",
        "ipaddressorusername": "IP მისამართი ან მომხმარებლის სახელი",
        "ipb-unblock-addr": "ბლოკის მოხსნა $1",
        "ipb-unblock": "მომხმარებლის სახელზე ან IP მისამართზე ბლოკის მოხსნა",
        "ipb-blocklist": "იხილე არსებული ბლოკირებები",
-       "ipb-blocklist-contribs": "$1 მომხმარებლის წვლილი",
+       "ipb-blocklist-contribs": "მომხმარებელ {{GENDER:$1|$1}} წვლილი",
        "unblockip": "მომხმარებელზე ბლოკის მოხსნა",
        "unblockiptext": "გამოიყენეთ ქვემოთ მოცემული ფორმულარი, რათა  დაბლოკილი IP მისამართი ან მომხმარებლის სახელი აღადგინოთ.",
        "ipusubmit": "ამ ბლოკის მოხსნა",
        "import": "გვერდების იმპორტი",
        "importinterwiki": "ტრანსვიკი იმპორტი",
        "import-interwiki-text": "წარმოადგინეთ ვიკი და იმპორტირებადი გვერდის სახელი.\nცვლილებათა რიცხვები და ავტორთა სახელები შენნარჩუნდება.\nტრანსვიკი იმპორტის ყველა ოპერაცია რეგისტრირდება [[Special:Log/import|სპეციალურ ჟურნალში]].",
-       "import-interwiki-source": "ვიკი წყარო/გვერდი:",
        "import-interwiki-history": "ამ გვერდის ცვლილებათა ისტორიის კოპირება.",
        "import-interwiki-templates": "ყველა თარგის ჩართვა",
        "import-interwiki-submit": "იმპორტირება",
        "duplicate-defaultsort": "'''ყურადღება.'''სორტირების გასაღებს «$2»-ს გააჭრის წინა გასაღებს «$1»-ს.",
        "version": "ვერსია",
        "version-extensions": "დაყენებული გაფართოებები",
+       "version-skins": "იერსახე",
        "version-specialpages": "სპეციალური გვერდები",
        "version-parserhooks": "სინტაქსური ანალიზატორის ჰუკები",
        "version-variables": "ცვალებადი",
        "version-antispam": "სპამის პრევენცია",
-       "version-skins": "იერსახე",
        "version-api": "API",
        "version-other": "სხვა",
        "version-mediahandlers": "მედია დამუშავება",
        "version-hook-name": "ჰუკის სახელი",
        "version-hook-subscribedby": "ჩაწერილია",
        "version-version": "(ვერსია $1)",
+       "version-no-ext-name": "[სახელის გარეშე]",
        "version-svn-revision": "(r$2)",
        "version-license": "მედიავიკის ლიცენზია",
        "version-ext-license": "ლიცენზია",
        "version-ext-colheader-name": "გაფართოებები",
+       "version-skin-colheader-name": "იერსახე",
        "version-ext-colheader-version": "ვერსია",
        "version-ext-colheader-license": "ლიცენზია",
        "version-ext-colheader-description": "აღწერა",
        "expand_templates_ok": "შესრულება",
        "expand_templates_remove_comments": "კომენტარების წაშლა",
        "expand_templates_remove_nowiki": "ტეგების დათრგუნვა <nowiki> შედეგში",
-       "expand_templates_preview": "წინა"
+       "expand_templates_preview": "წინა",
+       "pagelanguage": "გვერდის ენის არჩევა",
+       "pagelang-name": "გვერდი",
+       "pagelang-language": "ენა",
+       "pagelang-use-default": "საწყისი ენის გამოყენება",
+       "pagelang-select-lang": "აირჩიეთ ენა",
+       "right-pagelang": "გვერდის ენის შეცვლა",
+       "action-pagelang": "გვერდის ენის შეცვლა",
+       "log-name-pagelang": "ენის ცვლილებების ჟურნალი",
+       "log-description-pagelang": "ეს არის გვერდის ენის ცვლილებების ჟურნალი",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ჩართულია)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''გამორთულია''')"
 }
index 8380ac5..f5237ee 100644 (file)
        "talkpagelinktext": "Sa'wbet",
        "specialpage": "Arnawlı bet",
        "personaltools": "Paydalanıwshı a'sbapları",
-       "postcomment": "Taza bo'lim",
        "articlepage": "Mag'lıwmat betin ko'riw",
        "talk": "Diskussiya",
        "views": "Ko'rinis",
        "yourdomainname": "Sizin' domen:",
        "login": "Kiriw",
        "nav-login-createaccount": "Kiriw / akkaunt jaratıw",
-       "loginprompt": "{{SITENAME}} saytına kiriw ushın kukiler qosılg'an bolıwı kerek.",
        "userlogin": "Kiriw / akkaunt jaratıw",
        "logout": "Shıg'ıw",
        "userlogout": "Shıg'ıw",
        "searchprofile-everything-tooltip": "Barlıq betlerde izlew (sa'wbet betlerin qosıp)",
        "searchprofile-advanced-tooltip": "Berilgen isimler ko'pliginde izlew",
        "search-result-size": "$1 ({{PLURAL:$2|1 so'z|$2 so'z}})",
-       "search-result-score": "Qatnasıqlıg'ı: $1%",
        "search-redirect": "(qayta bag'ıtlandırıw $1)",
        "search-section": "(bo'lim $1)",
        "search-suggest": "Ba'lkim, siz bunı na'zerde tutqan shig'arsız: $1",
        "largefileserver": "Bul faildın mo'lsheri serverdin' ruxsatınan u'lken.",
        "uploadwarning": "Aploud eskertiwi",
        "savefile": "Fayldı saqla",
-       "uploadedimage": "«[[$1]]» faylı aploud qılındı",
-       "overwroteimage": "\"[[$1]]\" faylının' jan'a nusqası aploud qılındı",
        "uploaddisabled": "Aploudqa ruxsat berilmegen",
        "uploaddisabledtext": "Fayllardı aploud qılıw toqtatılg'an.",
        "uploadvirus": "Bul failda virus bar! Mag'lıwmat: $1",
        "notvisiblerev": "Nusqa o'shirildi",
        "watchlist-details": "Baqlaw dizimin'izde (sa'wbet betlerin esapqa almag'anda) {{PLURAL:$1|1 bet|$1 bet}} bar.",
        "wlheader-enotif": "E-mail arqalı eskertiw qosılg'an.",
+       "wlnote": "To'mende aqırg'ı {{PLURAL:$2|saattag'ı|'''$2''' saattag'ı}} {{PLURAL:$1|aqırg'ı o'zgeris bar|aqırg'ı '''$1''' o'zgeris bar}}.",
        "wlshowlast": "Aqırg'ı $1 saat, $2 ku'n, $3 ko'rset",
        "watchlist-options": "Baqlaw diziminin' sazlawları",
        "watching": "Baqlaw...",
index acd010c..256af44 100644 (file)
        "talkpagelinktext": "Mmeslay",
        "specialpage": "Asebter uslig",
        "personaltools": "Dduzan inu",
-       "postcomment": "Azen awennit",
        "articlepage": "Ẓer ayen yellan deg usebter",
        "talk": "Amyannan",
        "views": "Tuẓrin",
        "externaldberror": "Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.",
        "login": "Kcem",
        "nav-login-createaccount": "Kcem / Xleq isem n wemseqdac",
-       "loginprompt": "Yessefk ad teǧǧiḍ ikukiyen (cookies) iwakken ad tkecmeḍ ar {{SITENAME}}.",
        "userlogin": "Kcem / Xleq isem n wemseqdac",
        "userloginnocreate": "Qqen",
        "logout": "Ffeɣ",
        "searchprofile-advanced-tooltip": "Fren ideggen n isemawen i unadi",
        "search-result-size": "$1 ({{PLURAL:$2|1 awal|$2 awalen}})",
        "search-result-category-size": "$1 {{PLURAL:$1|amseqdac|imseqdacen}} $2 ({{PLURAL:$2|adu-taggayt|adu-tiggayin}}, $3 {{PLURAL:$3|afaylu|ifuyla}})",
-       "search-result-score": "Taflest : $1%",
        "search-redirect": "(asemmimeḍ $1)",
        "search-section": "(tigezmi $1)",
        "search-file-match": "(yzega i ugbur n ufaylu)",
        "uploadwarning": "Aɣtal deg wazan n ufayluwen",
        "uploadwarning-text": "Beddel aglam n ufaylu dɣa ɛreḍ tikkelt nniḍen",
        "savefile": "Smekti afaylu",
-       "uploadedimage": "\"[[$1]]\" yettwazen",
-       "overwroteimage": "yekter lqem amaynut n « [[$1]] »",
        "uploaddisabled": "Suref-aɣ, azen n ufayluwen yettwakkes",
        "copyuploaddisabled": "Taktert n ufaylu s URL yensan.",
        "uploaddisabledtext": "Azen n ifuyla yettwakkes deg wiki agi.",
        "watchlist-details": "ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren \"amyannan\".",
        "wlheader-enotif": "Talɣut s email yessermed.",
        "wlheader-showupdated": "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
-       "wlnote2": "Ddaw agi ibeddilen deg {{PLURAL:$1|asrag aneggaru|<strong>$1</strong> isragen ineggura}}, seg $2, $3.",
+       "wlnote": "Ddaw agi  {{PLURAL:$1|yella abeddel aneggaru|llan '''$1''' ibeddilen ineggura}} n {{PLURAL:$2|usrag aneggaru|'''$2''' isragen ineggura}}, seg $3 af $4.",
        "wlshowlast": "Ssken $1 n swayeɛ $2 n wussan neɣ $3 ineggura",
        "watchlist-options": "Tifranin n umuɣ n uɛessi",
        "watching": "Ad iɛass...",
        "duplicate-defaultsort": "Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».",
        "version": "Lqem",
        "version-extensions": "Isiɣzaf i serkeben",
+       "version-skins": "Igelman",
        "version-specialpages": "isebtar usligen",
        "version-parserhooks": "Imguden n umsisleḍ n taseddast",
        "version-variables": "Imuttiyen",
        "version-antispam": "Aḥezzeb n spam",
-       "version-skins": "Igelman",
        "version-other": "Nniḍen",
        "version-mediahandlers": "Amsqerdec n imediaten",
        "version-hooks": "Imguden",
index 0ccb278..29f6f2e 100644 (file)
        "talkpagelinktext": "Тепсэлъыхьыгъуэ",
        "specialpage": "Лэжыгъэ напэкӀуэцӀ",
        "personaltools": "Уи Ӏэмэпсымэхэр",
-       "postcomment": "ЛъэныкъуэщӀэ",
        "articlepage": "Тхыгъэм хэплъэн",
        "talk": "Тепсэлъэхьыгъуэ",
        "views": "Зыхэплъахэр",
        "externaldberror": "Щэуэгъуэ хъуа, аутентификациэ щекӀуэкӀым иэ апхуэдиз пӀалъэ уиӀу щыткъым, уи нэкугъуэ аккаунтыр зэпхъуэкӀын.",
        "login": "Системэм зыкъегъэцIыхуын",
        "nav-login-createaccount": "Ихьэн/щӀэуэ зитхэн",
-       "loginprompt": "«Cookies» уиӀэн хуэй, системэм уихьэн щхьэкӀэ.",
        "userlogin": "Ихьэн/зыхэтхэн",
        "userloginnocreate": "Системэм зыкъегъэцӀыхуын",
        "logout": "ИкӀыжын",
        "upload": "Файл илъхьэн",
        "uploadnologin": "Системэм зыкъебгъэцӀыхуакъым",
        "uploadlogpage": "Иралъхьахэм и тхыдэ-тхылъыр",
-       "uploadedimage": "изылъхьар \"[[$1]]\"",
        "filehist": "Файлым и тхыдэ",
        "filehist-help": "Махуэ/зэманым текъузэ файлыр дэпщэщ дэуэду щытами уеплъынумэ",
        "filehist-current": "иджырер",
index 9a5181c..f9976fa 100644 (file)
        "talkpagelinktext": "مشقولگی",
        "specialpage": "خصوصی صفحہ",
        "personaltools": "ذاتی سماند",
-       "postcomment": "پروشٹیو حصّہ",
        "articlepage": "مندرجاتی صفحہو لوڑے",
        "talk": "تبادلہٴ خیال",
        "views": "خیالات",
        "externaldberror": "یا تھے توثیقی ڈیٹابیسا خطا واقع بیتی شیر یا تتے بیریو کھاتو بتاریخ کوریکو اِجازت نیکی",
        "login": "داخل بوس",
        "nav-login-createaccount": "کھاتہ کھولاو کورے یا اندراج کورے",
-       "loginprompt": "{{SITENAME}} کھوار ویکیپیڈیا داخلو بچے تہ سوم پاسورڈ بیک ضروری شیر",
        "userlogin": "کھاتہ ساوزاوے یا اندراج کورے",
        "userloginnocreate": "داخل نوشتہ بوس",
        "logout": "لاگ آوٹ",
        "uploadlogpage": "نوشتۂ زبراثقال (اپ لوڈ لاگ)",
        "filename": "فایلو نام",
        "filedesc": "خلاصہ",
-       "uploadedimage": "زبراثقال (اپ لوڈ) براۓ \"[[$1]]\"",
        "license": "لایسنس",
        "license-header": "لایسنسنگ",
        "file-anchor-link": "فایل",
index 7006a1e..4b2bf84 100644 (file)
        "filesource": "Çıme:",
        "empty-file": "Dosya ke ti şawit veng biy.",
        "savefile": "Dosya qeyd ke",
-       "uploadedimage": "\"[[$1]]\" bar bi",
        "upload-source": "Dosya çımey",
        "sourcefilename": "Namê dosya çımey:",
        "watchthisupload": "Na dosya de şêr ke",
index 97df37b..e70e9c8 100644 (file)
        "talkpagelinktext": "تالقىلاۋى",
        "specialpage": "ارنايى بەت",
        "personaltools": "جەكە قۇرالدار",
-       "postcomment": "ماندەمە جونەلتۋ",
        "articlepage": "ماعلۇمات بەتىن قاراۋ",
        "talk": "تالقىلاۋ",
        "views": "كورىنىس",
        "externaldberror": "وسى ارادا نە شەتتىك راستاۋ دەرەكقورىندا قاتە بولدى, نەمەسە شەتتىك تىركەلگىڭىزدى جاڭالاۋ رۇقساتى جوق.",
        "login": "كىرۋ",
        "nav-login-createaccount": "كىرۋ / تىركەلگى جاساۋ",
-       "loginprompt": "{{SITENAME}} تورابىنا كىرۋىڭىز ٴۇشىن «cookies» قوسىلۋى ٴجون.",
        "userlogin": "كىرۋ / تىركەلگى جاساۋ",
        "logout": "شىعۋ",
        "userlogout": "شىعۋ",
        "nextn": "كەلەسى {{PLURAL:$1|$1}}",
        "viewprevnext": "كورسەتىلۋى: ($1 {{int:pipe-separator}} $2) ($3) جازبا",
        "search-result-size": "$1 ($2 ٴسوز)",
-       "search-result-score": "اراقاتىناستىلىعى: $1 %",
        "search-redirect": "(ايداعىش $1)",
        "search-section": "(ٴبولىم $1)",
        "search-suggest": "بۇنى ىزدەدىڭىز بە: $1",
        "file-exists-duplicate": "بۇل فايل كەلەسى {{PLURAL:$1|فايلدىڭ|فايلدارىنىڭ}} تەلنۇسقاسى:",
        "uploadwarning": "قوتارىپ بەرۋ جونىندە قۇلاقتاندىرۋ",
        "savefile": "فايلدى ساقتاۋ",
-       "uploadedimage": "«[[$1]]» فايلىن قوتارىپ بەردى",
-       "overwroteimage": "«[[$1]]» فايلىننىڭ جاڭا نۇسقاسىن قوتارىپ بەردى",
        "uploaddisabled": "قوتارىپ بەرۋ وشىرىلگەن",
        "uploaddisabledtext": "{{SITENAME}} جوباسىندا فايل قوتارىپ بەرۋى وشىرىلگەن.",
        "uploadscripted": "بۇل فايلدا ۆەب شولعىشتى قاتەلىكپەن تالداتقىزاتىن HTML نە ٴامىر كودى بار.",
        "watchlist-details": "تالقىلاۋ بەتتەرىن ساناماعاندا $1 بەت باقلانىلادى.",
        "wlheader-enotif": "ەسكەرتۋ حات جىبەرۋى قوسىلعان.",
        "wlheader-showupdated": "سوڭعى كەلىپ-كەتۋىڭىزدەن بەرى وزگەرتىلگەن بەتتەردى '''جۋان''' قارىپىمەن كورسەت",
+       "wlnote": "تومەندە سوڭعى {{PLURAL:$2|ساعاتتا|'''$2''' ساعاتتا}} بولعان, {{PLURAL:$1|جۋىقتاعى وزگەرىس|جۋىقتاعى '''$1''' وزگەرىس}} كورسەتىلەدى.",
        "wlshowlast": "سوڭعى $1 ساعاتتاعى, $2 كۇندەگى, $3 بولعان وزگەرىستى كورسەتۋ",
        "watching": "باقىلاۋدا…",
        "unwatching": "باقىلاماۋدا…",
index 6046b72..34df836 100644 (file)
        "preview": "Қарап шығу",
        "showpreview": "Алдын-ала қарау",
        "showdiff": "Өзгерістерді көрсет",
+       "blankarticle": "<strong>Ескерту:</strong> Сіз бастамақшы болған бет бос.\nЕгер сіз «{{int:savearticle}}» дегенші қайта шертсеңіз бет қандайда бір мағлұматсыз басталады.",
        "anoneditwarning": "<strong> Ескерту:</strong>  Сіз жүйеге кірмегенсіз.\nIP мекенжайыңыз бұл беттің өңделу тарихында жазылып алынады.",
        "anonpreviewwarning": "<em>Сіз жүйеге кірмегенсіз. IP мекенжайыңыз бұл беттің өңделу тарихында жазылып алынады.</em>",
        "missingsummary": "<strong>Ескерту:</strong> Өңдеменің қысқаша түйіндемесін енгізбепсіз.\n«{{int:savearticle}}» батырмасын қайта бассаңыз өңденмеңіз түйіндемесіз сақталады.",
        "undo-failure": "Бұл өңдеме жоққа шығарылмайды, себебі арада қақтығысты өңдемелер бар.",
        "undo-norev": "Бұл өңдеме жоққа шығарылмайды, себебі бұл бет жоқ немесе жойылған.",
        "undo-nochange": "Өңдеме әлдеқашан жоққа шығарылғаны анықталды.",
-       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|т]]) істеген нөмір $1 түзетуін жоққа шығарды",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|т]]) істеген нөмір $1 нұсқасын жоққа шығарды",
        "undo-summary-username-hidden": "$1 нұсқасын жасырылған қатысушы жоққа шығарды",
        "cantcreateaccounttitle": "Тіркелгі жасалмады",
        "cantcreateaccount-text": "Бұл IP мекенжайдан (<strong>$1</strong>) жаңа тіркелгі жасауын [[User:$3|$3]] бұғаттаған.\n\n$3 есімді қатысушының келтіріген себебі: <em>$2</em>",
        "pagemerge-logentry": "[[$1]] деген [[$2]] дегенге біріктірілді ($3 дейінгі түзетулері)",
        "revertmerge": "Біріктіруді болдырмау",
        "mergelogpagetext": "Төменде бір беттің тарихы өзге бетке біріктіру ең соңғы тізімі келтіріледі.",
-       "history-title": "«$1» дегеннің өңдеу тарихы",
+       "history-title": "«$1» дегеннің өңделу тарихы",
        "difference-title": "$1 — нұсқалар арасындағы айырмашылық",
        "difference-title-multipage": "\"$1\" және \"$2\" беттерінің арасындағы айырмашылық",
        "difference-multipage": "(Беттер арасындағы айырмашылық)",
        "randomincategory": "Санаттағы кездейсоқ бет",
        "randomincategory-invalidcategory": "\"$1\" жарамды санат аты емес.",
        "randomincategory-nopages": "Бұлар [[:Category:$1]] беттері мес.",
-       "randomincategory-selectcategory-submit": "Өту",
        "randomredirect": "Кездейсоқ айдағыш",
        "randomredirect-nopages": "Бұл есім аясында еш айдағыш жоқ \"$1\".",
        "statistics": "Санақ",
        "import": "Беттерді сырттан алу",
        "importinterwiki": "Уики-апару үшін сырттан алу",
        "import-interwiki-text": "Сырттан алынатын уикиді және беттің тақырып атын бөлектеңіз.\nТүзету күн-айы және өңдеуші есімдері сақталады.\nУики-апару үшін сырттан алу барлық әрекеттер [[{{#special:Log}}/import|сырттан алу журналына]] жазылып алынады.",
-       "import-interwiki-source": "Қайнар уики/бет:",
        "import-interwiki-history": "Бұл беттің барлық тарихи нұсқаларын көшіру",
        "import-interwiki-templates": "Кірістірілген барлық үлгілер",
        "import-interwiki-submit": "Сырттан алу",
        "pageinfo-header-edits": "Өңдеу тарихы",
        "pageinfo-header-restrictions": "Бет қорғалуы",
        "pageinfo-header-properties": "Бет сипаттары",
-       "pageinfo-display-title": "Бейнебет атауы",
+       "pageinfo-display-title": "Көрініс атауы",
+       "pageinfo-default-sort": "Әдепкі іріктеу кілті",
        "pageinfo-length": "Бет ұзындығы (байтпен)",
        "pageinfo-article-id": "Бет ID-і",
        "pageinfo-language": "Бет мәлімет тілі",
        "pageinfo-content-model": "Бет мағлұмат қалпы",
-       "pageinfo-robot-policy": "Индекстеуді робот жүргізеді",
-       "pageinfo-robot-index": "Рұқсат берілген",
-       "pageinfo-robot-noindex": "Рұқсат етілмеген",
+       "pageinfo-robot-policy": "Индекстеуді робот жүргізуге",
+       "pageinfo-robot-index": "рұқсат берілген",
+       "pageinfo-robot-noindex": "рұқсат етілмеген",
        "pageinfo-views": "Қараушылар саны",
        "pageinfo-watchers": "Бетті қараушылар саны",
        "pageinfo-few-watchers": "$1 азырақ {{PLURAL:$1|қараушы|қараушы}}",
-       "pageinfo-redirects-name": "Ð\91ұл Ð±ÐµÑ\82ке Ð°Ð¹Ð´Ð°Ñ\82Ñ\8bлғандар саны",
+       "pageinfo-redirects-name": "Ð\91ұл Ð±ÐµÑ\82ке Ð±Ð°Ò\93Ñ\8bÑ\82Ñ\82алғандар саны",
        "pageinfo-subpages-name": "Бұл беттің төменгі беттер саны",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|айдатқыш|айдатқыш}}; $3 {{PLURAL:$3|айдатқыш емес|айдатқыш емес}})",
        "pageinfo-firstuser": "Бетті бастаушы",
        "pageinfo-toolboxlink": "Бұл бет туралы мәлімет",
        "pageinfo-redirectsto": "Айдатылғандар",
        "pageinfo-redirectsto-info": "Информация",
+       "pageinfo-contentpage": "Контент бетке санала ма?",
        "pageinfo-contentpage-yes": "Иә",
        "pageinfo-protect-cascading": "Баулы қорғаулылар мұнда",
        "pageinfo-protect-cascading-yes": "Иә",
index cbec7b2..a3a4cd8 100644 (file)
        "talkpagelinktext": "Talqılawı",
        "specialpage": "Arnaýı bet",
        "personaltools": "Jeke quraldar",
-       "postcomment": "Mändeme jöneltw",
        "articlepage": "Mağlumat betin qaraw",
        "talk": "Talqılaw",
        "views": "Körinis",
        "externaldberror": "Osı arada ne şettik rastaw derekqorında qate boldı, nemese şettik tirkelgiñizdi jañalaw ruqsatı joq.",
        "login": "Kirw",
        "nav-login-createaccount": "Kirw / Tirkelgi jasaw",
-       "loginprompt": "{{SITENAME}} torabına kirwiñiz üşin «cookies» qosılwı jön.",
        "userlogin": "Kirw / Tirkelgi jasaw",
        "logout": "Şığw",
        "userlogout": "Şığw",
        "nextn": "kelesi {{PLURAL:$1|$1}}",
        "viewprevnext": "Körsetilwi: ($1 {{int:pipe-separator}} $2) ($3) jazba",
        "search-result-size": "$1 ($2 söz)",
-       "search-result-score": "Araqatınastılığı: $1 %",
        "search-redirect": "(aýdağış $1)",
        "search-section": "(bölim $1)",
        "search-suggest": "Bunı izdediñiz be: $1",
        "file-exists-duplicate": "Bul faýl kelesi {{PLURAL:$1|faýldıñ|faýldarınıñ}} telnusqası:",
        "uploadwarning": "Qotarıp berw jöninde qulaqtandırw",
        "savefile": "Faýldı saqtaw",
-       "uploadedimage": "«[[$1]]» faýlın qotarıp berdi",
-       "overwroteimage": "«[[$1]]» faýlınnıñ jaña nusqasın qotarıp berdi",
        "uploaddisabled": "Qotarıp berw öşirilgen",
        "uploaddisabledtext": "{{SITENAME}} jobasında faýl qotarıp berwi öşirilgen.",
        "uploadscripted": "Bul faýlda veb şolğıştı qatelikpen taldatqızatın HTML ne ämir kodı bar.",
        "watchlist-details": "Talqılaw betterin sanamağanda $1 bet baqlanıladı.",
        "wlheader-enotif": "Eskertw xat jiberwi qosılğan.",
        "wlheader-showupdated": "Soñğı kelip-ketwiñizden beri özgertilgen betterdi '''jwan''' qaripimen körset",
+       "wlnote": "Tömende soñğı {{PLURAL:$2|sağatta|'''$2''' sağatta}} bolğan, {{PLURAL:$1|jwıqtağı özgeris|jwıqtağı '''$1''' özgeris}} körsetiledi.",
        "wlshowlast": "Soñğı $1 sağattağı, $2 kündegi, $3 bolğan özgeristi körsetw",
        "watching": "Baqılawda…",
        "unwatching": "Baqılamawda…",
index c6a3dc8..1c97771 100644 (file)
        "talkpagelinktext": "ការពិភាក្សា",
        "specialpage": "ទំព័រពិសេស",
        "personaltools": "ឧបករណ៍ផ្ទាល់ខ្លួន",
-       "postcomment": "ផ្នែកថ្មី",
        "articlepage": "មើលខ្លឹមសារទំព័រ​",
        "talk": "ការពិភាក្សា",
        "views": "គំហើញ",
        "externaldberror": "មាន​​បញ្ហាក្នុងការ​បញ្ជាក់​ផ្ទៀង​ផ្ទាត់​​មូលដ្ឋាន​ទិន្នន័យ​ ឬ​អ្នក​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​បន្ទាន់​សម័យ​គណនី​ខាង​ក្រៅ​របស់​អ្នក​។​\n​",
        "login": "កត់ឈ្មោះចូល",
        "nav-login-createaccount": "កត់ឈ្មោះចូលឬបង្កើតគណនី",
-       "loginprompt": "អ្នក​ត្រូវតែ​មាន​ខូគី ដើម្បី​អាច​កត់ឈ្មោះចូល​{{SITENAME}}បាន។",
        "userlogin": "កត់ឈ្មោះចូលឬបង្កើតគណនី",
        "userloginnocreate": "កត់ឈ្មោះចូល",
        "logout": "កត់ឈ្មោះចេញ",
        "searchprofile-advanced-tooltip": "ស្វែងរកក្នុងប្រភេទកំណត់ដោយអ្នកប្រើប្រាស់",
        "search-result-size": "$1({{PLURAL:$2|១ពាក្យ|$2ពាក្យ}})",
        "search-result-category-size": "{{PLURAL:$1|សមាជិកម្នាក់|សមាជិក$1នាក់}} ({{PLURAL:$2|កូនចំណាត់ថ្នាក់ក្រុម១|$2 កូនចំណាត់ថ្នាក់ក្រុម}}, {{PLURAL:$3|1 ឯកសារ|$3 ឯកសារ}})",
-       "search-result-score": "កម្រិតទាក់ទិន៖ $1%",
        "search-redirect": "(បញ្ជូនបន្ត $1)",
        "search-section": "(ផ្នែក $1)",
        "search-suggest": "ប្រហែលជាអ្នកចង់រក៖ $1",
        "uploadwarning": "ប្រយ័ត្ន",
        "uploadwarning-text": "សូមកែការពិពណ៌នារបស់ឯកសារខាងក្រោម រួចសាកល្បងម្ដងទៀត។",
        "savefile": "រក្សាឯកសារទុក",
-       "uploadedimage": "បានផ្ទុកឡើង \"[[$1]]\"",
-       "overwroteimage": "បានផ្ទុកឡើងកំណែថ្មីរបស់\"[[$1]]\"",
        "uploaddisabled": "មិនអនុញ្ញាតអោយផ្ទុកឯកសារឡើង",
        "copyuploaddisabled": "មានអោយប្រើការផ្ទុកឡើងដោយ URL។",
        "uploaddisabledtext": "ការផ្ទុកឯកសារ​ឡើង​គឺ​មិន​ត្រូវបាន​អនុញ្ញាត​ទេ​។",
        "watchlist-details": "{{PLURAL:$1|$1 page|ទំព័រ $1}}នៅក្នុងបញ្ជីតាមដានរបស់អ្នក ដោយមិនរាប់បញ្ចូលទំព័រពិភាក្សា។",
        "wlheader-enotif": "បើកប្រើការផ្ដល់ដំណឹងតាមរយៈអ៊ីមែល។",
        "wlheader-showupdated": "ទំព័រដែលត្រូវបានផ្លាស់ប្តូរតាំងពីពេលចូលមើលចុងក្រោយរបស់អ្នក ត្រូវបានបង្ហាញជា '''អក្សរដិត'''។",
+       "wlnote": "ខាងក្រោមនេះជា {{PLURAL:$1|បំលាស់ប្តូរចុងក្រោយ|'''$1'''បំលាស់ប្តូរចុងក្រោយ}}ក្នុងរយះពេល{{PLURAL:$2|'''$2'''ម៉ោង}}ចុងក្រោយ គិតចាប់ពី $3, $4។",
        "wlshowlast": "បង្ហាញ $1ម៉ោងចុងក្រោយ $2ថ្ងៃចុងក្រោយ ឬ$3",
        "watchlist-options": "ជម្រើសនានាក្នុងបញ្ជីតាមដាន",
        "watching": "កំពុង​តាមដាន...",
        "unknown_extension_tag": "ស្លាក​នៃផ្នែកបន្ថែម \"$1\" មិនស្គាល់",
        "version": "កំណែ",
        "version-extensions": "ផ្នែកបន្ថែមដែលបានដំឡើង",
+       "version-skins": "សំបក",
        "version-specialpages": "ទំព័រពិសេសៗ",
        "version-variables": "អថេរ",
        "version-antispam": "ការបង្ការស្ប៉ាម",
-       "version-skins": "សំបក",
        "version-other": "ផ្សេង",
        "version-mediahandlers": "កម្មវិធី​បើក​មេឌា​ (Media handlers)",
        "version-hook-name": "ឈ្មោះ​ Hook",
index cbd849c..b24c1bb 100644 (file)
        "talkpagelinktext": "ಚರ್ಚೆ",
        "specialpage": "ವಿಶೇಷ ಪುಟ",
        "personaltools": "ವೈಯಕ್ತಿಕ ಉಪಕರಣಗಳು",
-       "postcomment": "ಹೊಸ ವಿಭಾಗ",
        "articlepage": "ಲೇಖನ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ",
        "talk": "ಚರ್ಚೆ",
        "views": "ನೋಟಗಳು",
        "password-change-forbidden": "ನೀವು ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
        "login": "ಲಾಗ್ ಇನ್",
        "nav-login-createaccount": "ಲಾಗ್ ಇನ್ - log in",
-       "loginprompt": "{{SITENAME}} ತಾಣಕ್ಕೆ ಲಾಗ್ ಇನ್ ಆಗಲು ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ಕುಕೀ (cookie) ಸೌಲಭ್ಯವಿರಬೇಕು.",
        "userlogin": "ಲಾಗ್ ಇನ್ - log in",
        "userloginnocreate": "ಲಾಗ್ ಇನ್",
        "logout": "ಲಾಗ್ ಔಟ್",
        "searchprofile-everything-tooltip": "ಹುದುಕಿ ಯಲ ಸುಮನು (ಇಥಿಯದಿ ಮಾಥು ಹಲೆ)",
        "searchprofile-advanced-tooltip": "ಹುಧುಕಿ ನಮ ಜಾಗ ಹೆಸರುಸ್ತಲ್ಲ",
        "search-result-size": "$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳು}})",
-       "search-result-score": "ಸಂಬದ್ಧತೆ: $1%",
        "search-redirect": "(ಪುನರ್ನಿರ್ದೇಶನ $1)",
        "search-section": "(ವಿಭಾಗ $1)",
        "search-suggest": "ನೀವು ಇದನ್ನು ಹುಡುಕುತ್ತಿರುವಿರೆ: $1",
        "fileexists-shared-forbidden": "ಆ ಹೆಸರಿನಲ್ಲಿ ಫೈಲೊಂದು ಸಾಮೂಹಿಕ ಫೈಲಿನ ಆಗರದಲ್ಲಿ ಆಗಲೆ ಇದೆ;\nದಯವಿಟ್ಟು ಹಿಂದಕ್ಕೆ ಹೋಗಿ ಈ ಫೈಲನ್ನು ಹೊಸ ಹೆಸರಿನಲ್ಲಿ ಅಪ್ಲೋಡ್ ಮಾಡಿ. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "ಅಪ್ಲೋಡ್ ಎಚ್ಚರಿಕೆ",
        "savefile": "ಕಡತವನ್ನು ಉಳಿಸಿ",
-       "uploadedimage": "\"[[$1]]\" ಅಪ್ಲೋಡ್ ಆಯಿತು",
-       "overwroteimage": "\"[[$1]]\" ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲಾಯಿತು",
        "uploaddisabled": "ಅಪ್ಲೋಡ್‍ಗಳು ನಿರ್ಬಂಧಿತವಾಗಿದೆ",
        "uploaddisabledtext": "{{SITENAME}} ತಾಣದಲ್ಲಿ ಫೈಲುಗಳ ಅಪ್ಲೋಡ್ ಮಾಡುವಿಕೆ ತಡೆಗಟ್ಟಲ್ಪಟ್ಟಿದೆ.",
        "uploadvirus": "ಈ ಫೈಲಿನಲ್ಲಿ ಒಂದು ವೈರಸ್ ಇದೆ! ಮಾಹಿತಿ: $1",
        "linkstoimage": "ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಪುಟವು|$1 ಪುಟಗಳು}} ಈ ಚಿತ್ರಕ್ಕೆ ಸಂಪರ್ಕ {{PLURAL:$1|ಹೊಂದಿದೆ|ಹೊಂದಿವೆ}}:",
        "nolinkstoimage": "ಈ ಫೈಲಿಗೆ ಯಾವ ಪುಟವೂ ಸಂಪರ್ಕ ಹೊಂದಿಲ್ಲ.",
        "sharedupload": "ಈ ಫೈಲು $1 ಇಂದ. ಇದು ಇತರ ಯೋಜನೆಗಳಲ್ಲಿ ಉಪಯೋಗದಲ್ಲಿರಬಹುದು.",
-       "sharedupload-desc-here": "ಈಧು ಬನ್ದಿರುವುಧು $1 ಮಥು ಹಲವು ಯೋಜನೆ  ಯಲ್ಲಿ ಉಪಯೊಗ ವಗುಥದೆ. \nಕೊಟುರುವ   ವಿವರನೆ [$2 ಕತಥೆ ವಿವರನೆ ಪುಟಾ] ಕೆಲ್ಲಕೆ ನೊಡೀ.",
+       "sharedupload-desc-here": "ಈ ಕಡತವು $1 ಇಂದ ಬಂದಿದ್ದು, ಬೇರೆ ಯೋಜನೆಗಳಲ್ಲೂ ಉಪಯೋಗಿಸಲ್ಪಡಬಹುದು. \n[[$2 ಕಡತ ವಿವರಣಾ ಪುಟ]]ದಲ್ಲಿರುವ ವಿವರಣೆಯನ್ನು ಕೆಳಗೆ ಕೊಡಲಾಗಿದೆ.",
        "filepage-nofile": "ಈ ಹೆಸರಿನ ಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ",
        "filepage-nofile-link": "ಈ ಹೆಸರಿನ ಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಆದರೆ ನೀವು ಇದನ್ನು [$1 ನಕಲೆರಿಸಬಹುದು ]",
        "uploadnewversion-linktext": "ಈ ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
        "unusedtemplateswlh": "ಇತರ ಕೊಂಡಿಗಳು",
        "randompage": "ಯಾದೃಚ್ಛಿಕ ಪುಟ",
        "randompage-nopages": "ಈ ಪುಟಪ್ರಬೇಧದಲ್ಲಿ ಯಾವ ಪುಟವೂ ಇಲ್ಲ.",
-       "randomincategory-selectcategory-submit": "ಹೋಗು",
        "randomredirect": "ಯದೃಚ್ಛಿಕ ಪುನರ್ನಿರ್ದೇಶಿತ ಪುಟ",
        "randomredirect-nopages": "ಈ ಪುಟಪ್ರಬೇಧದಲ್ಲಿ ಯಾವ ಪುನರ್ನಿರ್ದೇಶನಗಳೂ ಇಲ್ಲ.",
        "statistics": "ಅಂಕಿ ಅಂಶಗಳು",
index bc0d91a..d055485 100644 (file)
                        "관인생략",
                        "아라",
                        "Keysuck",
-                       "Infinity"
+                       "Infinity",
+                       "Bluemersen"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "tog-hideminor": "최근 바뀜에서 사소한 편집을 숨기기",
-       "tog-hidepatrolled": "최근 바뀜에서 검토한 편집을 숨기기",
+       "tog-hidepatrolled": "최근 바뀜에서 점검한 편집을 숨기기",
        "tog-newpageshidepatrolled": "새 문서 목록에서 검토한 문서를 숨기기",
        "tog-extendwatchlist": "주시문서 목록에서 가장 최근의 편집만이 아닌 모든 편집을 보기",
        "tog-usenewrc": "최근 바뀜과 주시문서 목록의 문서별 그룹 바뀜",
@@ -55,6 +56,7 @@
        "tog-watchdefault": "내가 편집하는 문서와 파일을 주시문서 목록에 추가",
        "tog-watchmoves": "내가 이동하는 문서와 파일을 주시문서 목록에 추가",
        "tog-watchdeletion": "내가 삭제하는 문서와 파일을 주시문서 목록에 추가",
+       "tog-watchrollback": "내가 되돌리기 기능을 사용한 문서를 주시문서 목록에 추가",
        "tog-minordefault": "모든 편집에 기본적으로 사소한 편집을 표시",
        "tog-previewontop": "편집 상자 앞에 미리 보기 보이기",
        "tog-previewonfirst": "처음 편집할 때 미리 보기 보이기",
@@ -72,7 +74,7 @@
        "tog-watchlisthideminor": "주시문서 목록에서 사소한 편집을 숨기기",
        "tog-watchlisthideliu": "주시문서 목록에서 로그인한 사용자의 편집을 숨기기",
        "tog-watchlisthideanons": "주시문서 목록에서 익명 사용자의 편집을 숨기기",
-       "tog-watchlisthidepatrolled": "주시문서 목록에서 검토한 편집을 숨기기",
+       "tog-watchlisthidepatrolled": "주시문서 목록에서 점검한 편집을 숨기기",
        "tog-ccmeonemails": "이메일을 보낼 때 내 이메일로 복사본을 보내기",
        "tog-diffonly": "편집 차이를 비교할 때 문서 내용을 보지 않기",
        "tog-showhiddencats": "숨은 분류 보이기",
        "hidetoc": "숨기기",
        "collapsible-collapse": "접기",
        "collapsible-expand": "펼치기",
+       "confirmable-confirm": "{{GENDER:$1|}}확실합니까?",
+       "confirmable-yes": "예",
+       "confirmable-no": "아니오",
        "thisisdeleted": "$1 문서를 보거나 되살리겠습니까?",
        "viewdeleted": "$1 문서를 보겠습니까?",
        "restorelink": "{{PLURAL:$1|삭제된 편집}} $1개",
        "invalidtitle-knownnamespace": "제목 오류: \"$2\" 이름공간과 \"$3\" 텍스트",
        "invalidtitle-unknownnamespace": "제목 오류: 알 수 없는 $1 이름공간 번호와, \"$2\" 텍스트",
        "exception-nologin": "로그인하지 않음",
-       "exception-nologin-text": "ì\9d´ ë¬¸ì\84\9cì\97\90 ì \91ê·¼í\95\98ê±°ë\82\98 ì\9d´ ëª\85ë ¹ì\9d\84 ì\88\98í\96\89í\95\98려면 [[Special:Userlogin|ë¡\9cê·¸ì\9d¸]]하세요.",
+       "exception-nologin-text": "ì\9d´ ë¬¸ì\84\9cì\97\90 ì \91ê·¼í\95\98ê±°ë\82\98 ì\9d´ ë\8f\99ì\9e\91ì\9d\84 ì\88\98í\96\89í\95\98려면 ë¡\9cê·¸ì\9d¸하세요.",
        "exception-nologin-text-manual": "이 문서에 접근하거나 이 명령을 수행하려면 $1하세요.",
        "virus-badscanner": "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
        "virus-scanfailed": "검사 실패 (코드 $1)",
        "node-count-exceeded-category-desc": "노드 횟수를 초과하는 문서의 분류입니다.",
        "node-count-exceeded-warning": "문서가 노드 수를 초과하였습니다.",
        "expansion-depth-exceeded-category": "문서가 확장 깊이를 초과하였습니다.",
-       "expansion-depth-exceeded-category-desc": "확장 깊이를 초과하는 문서의 분류입니다.",
+       "expansion-depth-exceeded-category-desc": "최대 확장 깊이를 초과하는 문서입니다.",
        "expansion-depth-exceeded-warning": "문서가 확장 깊이를 초과하였습니다",
        "parser-unstrip-loop-warning": "Unstrip의 반복을 감지했습니다",
        "parser-unstrip-recursion-limit": "Unstrip의 재귀 한도를 초과했습니다 ($1)",
        "preferences": "사용자 환경 설정",
        "mypreferences": "환경 설정",
        "prefs-edits": "편집 수:",
-       "prefsnologintext2": "사용자 환경 설정을 설정하려면 $1하십시오.",
+       "prefsnologintext2": "사용자 환경 설정을 변경하려면 로그인하십시오.",
        "prefs-skin": "스킨",
        "skin-preview": "미리 보기",
        "datedefault": "설정하지 않음",
        "right-noratelimit": "속도 제한에 영향을 받지 않음",
        "right-import": "다른 위키에서 문서 가져오기",
        "right-importupload": "파일 올리기를 통해 문서 가져오기",
-       "right-patrol": "다른 사용자의 편집을 검토",
-       "right-autopatrol": "자신의 편집을 자동으로 검토",
-       "right-patrolmarks": "최근 바뀜에서 검토 표시를 보기",
+       "right-patrol": "다른 사용자의 편집을 점검된 것으로 표시",
+       "right-autopatrol": "자신의 편집을 자동으로 점검된 판으로 표시",
+       "right-patrolmarks": "최근 바뀜에서 점검 표시를 보기",
        "right-unwatchedpages": "주시되지 않은 문서 목록 보기",
        "right-mergehistory": "문서의 역사를 합침",
        "right-userrights": "사용자의 모든 권한 조정",
        "action-rollback": "특정 문서를 마지막으로 편집한 사용자의 모든 편집을 간편하게 되돌리기",
        "action-import": "다른 위키에서 문서 가져오기",
        "action-importupload": "파일 올리기를 통해 문서를 가져오기",
-       "action-patrol": "다른 사용자의 편집을 검토된 것으로 표시하기",
-       "action-autopatrol": "자신의 편집을 검토된 것으로 표시할",
+       "action-patrol": "다른 사용자의 편집을 점검된 것으로 표시할",
+       "action-autopatrol": "자신의 편집을 점검된 것으로 표시할",
        "action-unwatchedpages": "주시되지 않은 문서 목록 보기",
        "action-mergehistory": "이 문서의 역사 합치기",
        "action-userrights": "사용자의 모든 권한 조정",
        "recentchanges-legend-heading": "'''범례:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|새 문서 목록]]도 보세요)",
        "recentchanges-legend-plusminus": "(''±123'')",
-       "rcnotefrom": "다음은 <strong>$2</strong>에서부터 바뀐 문서 <strong>$1</strong>개입니다.",
+       "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 보여집니다)",
        "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기",
        "rcshowhideminor": "사소한 편집을 $1",
        "rcshowhideminor-show": "보이기",
        "rcshowhideanons": "익명 사용자를 $1",
        "rcshowhideanons-show": "보이기",
        "rcshowhideanons-hide": "숨기기",
-       "rcshowhidepatr": "ì\88\9cì°°ë\90\9c í\8e¸ì§\91ì\9d\84 $1",
+       "rcshowhidepatr": "ì \90ê²\80í\95\9c í\8e¸ì§\91ì\9d\84 $1",
        "rcshowhidepatr-show": "보이기",
        "rcshowhidepatr-hide": "숨기기",
        "rcshowhidemine": "내 편집을 $1",
        "randomincategory": "분류 안의 임의 문서",
        "randomincategory-invalidcategory": "\"$1\"(은)는 올바른 분류 이름이 아닙니다.",
        "randomincategory-nopages": "[[:Category:$1]]에 문서가 없습니다.",
-       "randomincategory-selectcategory": "분류에서 임의 문서 얻기: $1 $2",
-       "randomincategory-selectcategory-submit": "보기",
+       "randomincategory-category": "분류:",
+       "randomincategory-legend": "분류 안의 임의 문서",
        "randomredirect": "임의 넘겨주기 문서로",
        "randomredirect-nopages": "\"$1\" 이름공간에서 해당하는 넘겨주기 문서가 없습니다.",
        "statistics": "통계",
        "trackingcategories-desc": "분류 포함 기준",
        "noindex-category-desc": "문서는 그것과 그 플래그가 허용된 곳에 있는 이름공간에서 <code><nowiki>__NOINDEX__</nowiki></code> 특수 명령이 있기 때문에 로봇이 색인하지 않습니다.",
        "index-category-desc": "문서는 그것(과 플래그가 허용된 곳에 있는 이름공간에 있는 것)에 <code><nowiki>__INDEX__</nowiki></code>가 있어서, 정상적이지 않을 곳에 로봇에 의해 색인됩니다.",
-       "post-expand-template-inclusion-category-desc": "모든 틀을 확장하고 나서, 문서 크기가 <code>$wgMaxArticleSize</code>보다 커지므로, 어떤 틀은 확장하지 않았습니다.",
+       "post-expand-template-inclusion-category-desc": "모든 틀을 전개하였을 때, 문서 크기가 <code>$wgMaxArticleSize</code>보다 커지므로, 어떤 틀은 전개하지 않았습니다.",
        "post-expand-template-argument-category-desc": "틀 변수 (<code>{{{Foo}}}</code>와 같은, 중괄호가 세 개 있는 무언가)를 확장하고 나서, 문서는 <code>$wgMaxArticleSize</code>보다 커집니다.",
        "expensive-parserfunction-category-desc": "(<code>#ifexist</code>와 같은) 느린 파서 함수가 너무 많이 문서에 포함되어 있습니다. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]를 보세요.",
        "broken-file-category-desc": "분류가 깨진 파일 링크 (파일이 존재하지 않을 때 포함되는 링크)가 있는 문서가 있다면 추가됩니다.",
        "undeletepagetext": "다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 되살릴 수 있습니다.\n보관된 문서는 주기적으로 삭제될 것입니다.",
        "undelete-fieldset-title": "문서 되살리기",
        "undeleteextrahelp": "문서 역사 전체를 되살리려면 모든 체크박스의 선택을 해제하고 '''{{int:undeletebtn}}'''를 누르세요.\n특정한 버전만 되살리려면 되살리려는 버전을 선택하고 '''{{int:undeletebtn}}'''를 누르세요.",
-       "undeleterevisions": "{{PLURAL:$1|판}} $1개 보관 중",
+       "undeleterevisions": "{{PLURAL:$1|판}} $1개가 보존되어 있습니다",
        "undeletehistory": "문서를 되살리면 모든 역사가 같이 복구됩니다.\n문서가 삭제된 뒤 같은 이름의 문서가 만들어졌다면, 복구되는 역사는 지금 역사의 과거 부분에 나타날 것입니다.",
        "undeleterevdel": "복구하려는 문서의 최신판이 삭제되어 있는 경우 문서를 되살릴 수 없습니다.\n이러한 경우 삭제된 최신판 문서의 확인 상자를 선택 해제하거나 숨김을 해제해야 합니다.",
        "undeletehistorynoadmin": "이 문서는 삭제되었습니다.\n삭제된 이유와 삭제되기 전에 이 문서를 편집한 사용자가 아래에 나와 있습니다.\n삭제된 문서의 내용을 보려면 관리자 권한이 필요합니다.",
        "autoblockid": "자동 차단 #$1",
        "block": "사용자 차단",
        "unblock": "사용자 차단 해제",
-       "blockip": "사용자 차단",
+       "blockip": "{{GENDER:$1|사용자}} 차단",
        "blockip-legend": "사용자 차단",
        "blockiptext": "차단할 IP 주소나 사용자 이름을 아래에 적어 주세요.\n차단은 문서 훼손을 막기 위해, [[{{MediaWiki:Policy-url}}|정책]]에 의해서만 이루어져야 합니다.\n차단 이유를 같이 적어주세요(예: 특정 문서 훼손).",
        "ipaddressorusername": "IP 주소 또는 사용자 이름:",
        "ipb-unblock-addr": "$1 차단 해제하기",
        "ipb-unblock": "사용자 또는 IP 주소 차단 해제하기",
        "ipb-blocklist": "현재 차단 기록 보기",
-       "ipb-blocklist-contribs": "$1의 기여",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}}의 기여",
        "unblockip": "사용자 차단 해제",
        "unblockiptext": "아래의 양식에 차단 해제하려는 IP 주소나 사용자 이름을 입력하세요.",
        "ipusubmit": "차단 해제",
        "import": "문서 가져오기",
        "importinterwiki": "다른 위키에서 문서 가져오기",
        "import-interwiki-text": "문서를 가져올 위키를 선택하고 문서 제목을 입력해주세요.\n편집 날짜와 편집자의 이름이 보존될 것입니다.\n모든 가져오기는 [[Special:Log/import|가져오기 기록]]에 기록될 것입니다.",
-       "import-interwiki-source": "원본 위키/문서:",
+       "import-interwiki-sourcewiki": "원본 위키:",
+       "import-interwiki-sourcepage": "원본 문서:",
        "import-interwiki-history": "이 문서의 모든 역사를 가져오기",
        "import-interwiki-templates": "모든 틀을 포함하기",
        "import-interwiki-submit": "가져오기",
        "importlogpage": "가져오기 기록",
        "importlogpagetext": "다른 위키에서 가져온 문서 기록입니다.",
        "import-logentry-upload": "사용자가 파일 올리기를 통해 [[$1]] 문서를 가져왔습니다",
-       "import-logentry-upload-detail": "{{PLURAL:$1|판}} $1개",
+       "import-logentry-upload-detail": "{{PLURAL:$1|판}} $1개를 가져왔습니다",
        "import-logentry-interwiki": "$1 문서를 다른 위키에서 가져왔습니다",
        "import-logentry-interwiki-detail": "$2에서 {{PLURAL:$1|판}} $1개를 가져왔습니다",
        "javascripttest": "자바스크립트 테스트",
        "pageinfo-category-pages": "문서 수",
        "pageinfo-category-subcats": "하위 분류 수",
        "pageinfo-category-files": "파일 수",
-       "markaspatrolleddiff": "검토한 문서로 표시",
-       "markaspatrolledtext": "이 문서를 검토한 것으로 표시",
-       "markedaspatrolled": "검토한 문서로 표시",
+       "markaspatrolleddiff": "점검한 문서로 표시",
+       "markaspatrolledtext": "이 문서를 점검한 것으로 표시",
+       "markedaspatrolled": "점검한 문서로 표시",
        "markedaspatrolledtext": "[[:$1]] 문서의 선택한 판을 순찰한 것으로 표시하였습니다.",
-       "rcpatroldisabled": "최근 바뀜 검토 기능 비활성화됨",
-       "rcpatroldisabledtext": "최근 바뀜 검토 기능은 현재 비활성화되어 있습니다.",
-       "markedaspatrollederror": "검토한 것으로 표시할 수 없습니다.",
-       "markedaspatrollederrortext": "검토한 것으로 표시할 판을 지정해야 합니다.",
-       "markedaspatrollederror-noautopatrol": "자신의 편집은 스스로 검토할 수 없습니다.",
-       "markedaspatrollednotify": "$1에 대한 바뀜을 검토한 것으로 표시했습니다.",
-       "markedaspatrollederrornotify": "검토한 것으로 표시를 실패했습니다.",
-       "patrol-log-page": "검토 기록",
-       "patrol-log-header": "문서 검토에 대한 기록입니다.",
-       "log-show-hide-patrol": "검토 기록을 $1",
+       "rcpatroldisabled": "최근 바뀜 점검 기능 비활성화됨",
+       "rcpatroldisabledtext": "최근 바뀜 점검 기능은 현재 비활성화되어 있습니다.",
+       "markedaspatrollederror": "점검한 것으로 표시할 수 없습니다.",
+       "markedaspatrollederrortext": "점검한 것으로 표시할 판을 지정해야 합니다.",
+       "markedaspatrollederror-noautopatrol": "자신의 편집은 스스로 점검할 수 없습니다.",
+       "markedaspatrollednotify": "$1에 대한 바뀜을 점검한 것으로 표시했습니다.",
+       "markedaspatrollederrornotify": "점검한 것으로 표시를 실패했습니다.",
+       "patrol-log-page": "점검 기록",
+       "patrol-log-header": "문서 점검에 대한 기록입니다.",
+       "log-show-hide-patrol": "점검 기록을 $1",
        "deletedrevision": "예전 $1 판이 삭제되었습니다.",
        "filedeleteerror-short": "파일 삭제 오류: $1",
        "filedeleteerror-long": "파일을 삭제하는 도중 오류가 발생했습니다:\n\n$1",
        "logentry-move-move-noredirect": "$1 사용자가 $3 문서를 넘겨주기를 만들지 않고 $4 문서로 {{GENDER:$2|옮겼습니다}}",
        "logentry-move-move_redir": "$1 사용자가 $3 문서를 $4 문서로 {{GENDER:$2|옮기면서}} 넘겨주기를 덮어썼습니다",
        "logentry-move-move_redir-noredirect": "$1 사용자가 $3 문서를 $4 문서로 넘겨주기를 남기지 않으면서 {{GENDER:$2|옮기면서}} 옮길 대상에 있던 넘겨주기를 덮어썼습니다",
-       "logentry-patrol-patrol": "$1 사용자가 $3 문서의 $4판을 검토한 것으로 {{GENDER:$2|표시했습니다}}",
-       "logentry-patrol-patrol-auto": "$1 사용자가 자동적으로 $3 문서의 $4판을 검토한 것으로 {{GENDER:$2|표시했습니다}}",
+       "logentry-patrol-patrol": "$1 사용자가 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
+       "logentry-patrol-patrol-auto": "$1 사용자가 자동적으로 $3 문서의 $4판을 점검한 것으로 {{GENDER:$2|표시했습니다}}",
        "logentry-newusers-newusers": "$1 사용자 계정을 {{GENDER:$2|만들었습니다}}",
        "logentry-newusers-create": "$1 사용자 계정을 {{GENDER:$2|만들었습니다}}",
        "logentry-newusers-create2": "$1 사용자가 $3 사용자 계정을 {{GENDER:$2|만들었습니다}}",
        "logentry-rights-rights": "$1 사용자가 $3 사용자의 권한을 $4에서 $5으로 {{GENDER:$2|바꾸었습니다}}",
        "logentry-rights-rights-legacy": "$1 사용자가 $3 사용자의 권한을 {{GENDER:$2|바꾸었습니다}}",
        "logentry-rights-autopromote": "$1 사용자의 권한을 자동적으로 $4에서 $5으로 {{GENDER:$2|바꾸었습니다}}",
+       "logentry-upload-upload": "$1 사용자가 $3 파일을 {{GENDER:$2|올렸습니다}}",
+       "logentry-upload-overwrite": "$1 사용자가 $3의 새 판을 {{GENDER:$2|올렸습니다}}",
+       "logentry-upload-revert": "$1 사용자가 $3 파일을 {{GENDER:$2|올렸습니다}}",
        "rightsnone": "(없음)",
        "feedback-bugornote": "기술적 문제를 구체적으로 설명할 준비가 되었다면 [$1 버그를 신고]해 주세요.\n아니면 아래에 쉬운 양식을 쓸 수 있습니다. 의견은 사용자 이름과 함께 \"[$3 $2]\"에 남겨질 것입니다.",
        "feedback-subject": "제목:",
        "action-pagelang": "문서 언어 바꾸기",
        "log-name-pagelang": "언어 바꾸기 기록",
        "log-description-pagelang": "문서 언어를 바꾼 기록입니다.",
-       "logentry-pagelang-pagelang": "$1 사용자가 $3의 문서 언어를 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}."
+       "logentry-pagelang-pagelang": "$1 사용자가 $3의 문서 언어를 $4에서 $5로 {{GENDER:$2|바꾸었습니다}}.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (활성화)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''비활성화''')"
 }
index 9df747a..4cded69 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Enye Lav",
-                       "Yufereff"
+                       "Yufereff",
+                       "아라"
                ]
        },
        "underline-always": "Пыр",
@@ -85,8 +86,6 @@
        "qbmyoptions": "Листбоккезö",
        "faq": "Отир сё юасьö",
        "faqpage": "Project:отир сё юасьö",
-       "vector-action-delete": "Чышкыны",
-       "vector-view-view": "Лыддьöтны",
        "variants": "Варианттэз",
        "errorpagetitle": "Сорасьöм",
        "returnto": "Бертны $1-öдз.",
        "talkpagelinktext": "Сёрнитан",
        "specialpage": "Тодильнöй листбок",
        "personaltools": "Аслат керöтаннэз",
-       "postcomment": "Виль юкöт",
        "talk": "Сёрни",
        "views": "Видзöтöммез",
        "toolbox": "Керöтаннэз",
        "viewprevnext": "Видзöтны ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-everything": "Быдлаись",
        "searchprofile-articles-tooltip": "Кошшан $1ын",
-       "searchprofile-project-tooltip": "Кошшан $1ын",
        "search-result-size": "$1 ({{PLURAL:$2|1=1 кыв|$2 кыв}})",
        "search-redirect": "(иньдöтöм $1 вылiсь)",
        "search-section": "(юкöт № $1)",
        "searchall": "быдöс",
        "powersearch-legend": "Паськытжыка кошшан",
        "powersearch-ns": "Ним чукöррезiсь кошшан:",
-       "powersearch-redir": "Мöдлаö иньдöтöммез ним сьöртi",
        "powersearch-toggleall": "Быдöс",
        "powersearch-togglenone": "Нем",
        "preferences": "Лöсьöтаннэз",
        "timezoneregion-pacific": "Лöнь океан",
        "youremail": "Электрон пошта:",
        "username": "Уджкерисьлöн ним:",
-       "uid": "Уджкерисьлöн лыддьöса пас:",
        "yourrealname": "Быльнöй нимыт:",
        "yourlanguage": "Кыв:",
        "yournick": "Виль кырымпас:",
        "recentchanges": "Медбöрья вильмöтöммез",
        "recentchanges-legend": "Медбöрья вильмöтöммез понда лöсьöтаннэз",
        "recentchanges-feed-description": "Синмавны медбöрья вильмöтöммез этiя вики визылын.",
-       "rclistfrom": "Мыччавны вильмöтöмсö  $1-сянь",
+       "rclistfrom": "Мыччавны вильмöтöмсö  $3 $2-сянь",
        "rcshowhideminor": "$1 невунка мöдкöдьсьöтыштöм",
        "rcshowhidebots": "$1 бот",
        "rcshowhideliu": "Ас нимöн $1 уджкерись",
        "recentchangeslinked-to": "Мыччавны мöдкодьсьöтöммез листбоккез вылын, кöдна асьныс ыстiсьöны этiя листбок вылö",
        "upload": "Кышавны файл",
        "uploadlogpage": "Тöбалöм сьöртi журнал",
-       "uploadedimage": "тöбалiс ''[[$1]]''",
        "filehist": "Файллöн история",
        "filehist-help": "Нырышт дата/кад, мед адззыны, кытшöмöн сэк вöлi файлыс.",
        "filehist-current": "öння",
        "booksources-go": "Кошшыны",
        "log": "Журналлэз",
        "allpages": "Быдöс листбоккез",
-       "alphaindexline": "$1-сянь $2-дынö",
        "prevpage": "Одзжыкся листбок ($1)",
        "allpagesfrom": "Мыччавны листбоккез, кöдна пондöтчöны сiдз:",
        "allpagesto": "Мыччавны листбоккез татшöмöдз:",
index fdd1d4e..d027276 100644 (file)
        "talkpagelinktext": "сюзюу",
        "specialpage": "Къуллукъ бет",
        "personaltools": "Энчи адырла",
-       "postcomment": "Джангы бёлюм",
        "articlepage": "Статьягъа къарау",
        "talk": "Сюзюу",
        "views": "Къараула",
        "externaldberror": "Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.",
        "login": "Системагъа кириу",
        "nav-login-createaccount": "Системагъа кириу / Аккаунт къурау",
-       "loginprompt": "{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.",
        "userlogin": "Кир / регистрация эт",
        "userloginnocreate": "Кириу",
        "logout": "Чыгъыу",
        "searchprofile-advanced-tooltip": "Энчи ат аланладада изле",
        "search-result-size": "$1 ({{PLURAL:$2|1 сёз|$2 сёз}})",
        "search-result-category-size": "{{PLURAL:$1|1=1 элемент|$1 элемент}} ({{PLURAL:$2|1=1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1=1 файл|$3 файл}})",
-       "search-result-score": "Келишиулюк: $1%",
        "search-redirect": "(Джиберилиниу $1)",
        "search-section": "($1 бёлюм)",
        "search-file-match": "(файлны ичиндегиси бла бирди)",
        "uploadwarning": "Эсгертиу",
        "uploadwarning-text": "Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.",
        "savefile": "Файлны сакълат",
-       "uploadedimage": "«[[$1]]» джюкленнгенди",
-       "overwroteimage": "«[[$1]]» суратны джангы версиясы джюкленнгенди",
        "uploaddisabled": "Джюклеуге эркинлик джокъду",
        "copyuploaddisabled": "URL кёре джюклеу джукъланыбды.",
        "uploaddisabledtext": "Файлланы джюклеу мадар джукъланыбды",
        "watchlist-details": "Кёздеги тизмегизде сюзюу бетлери саналмай {{PLURAL:$1|бет|бет}} барды.",
        "wlheader-enotif": "E-mail бла хапар бериу джандырылыбды.",
        "wlheader-showupdated": "Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
-       "wlnote2": "Тюбюнде, ахыр {{PLURAL:$1|сагъатны|<strong>$1</strong> сагъатны}} ичинден этилген тюрлениуле кёрюнедиле, $2, $3 заманда болумгъа кёре.",
+       "wlnote": "Тюбюндеди кёргюзюлгенди: ахыр '''$2''' сагъатха этилген ахыр '''$1''' тюрлениу, $3 $4 заманнга дери.",
        "wlshowlast": "Арт $1 сагъат $2 кюннге $3 кёргюз",
        "watchlist-options": "Кёзде тургъан тизмени джарашдырыулары",
        "watching": "Кёзде тургъан тизмеге къошуу...",
index 794bfbc..5cb828e 100644 (file)
@@ -6,8 +6,35 @@
                        "Protostar"
                ]
        },
+       "tog-underline": "Link ùndarlaintin",
        "tog-hideminor": "Haid dhi lili chenjdèm na dhi resènt chenj list",
+       "tog-hidepatrolled": "Haid patrol èditdèm na risènt chenjdèm",
+       "tog-newpageshidepatrolled": "Haid patrol pejdèm na dhi nyu pej list",
        "tog-extendwatchlist": "Èkspand dhi wachlist fòr show òll dhi chenjdèm,  pas dhi resènt chenjdèm nòmòr",
+       "tog-usenewrc": "Grup chenjdèm bay pej na dhi risènt chenj wachlist",
+       "tog-numberheadings": "Auto-nùmbar hedtindèm",
+       "tog-showtoolbar": "Show dhi èdit tulbar",
+       "tog-editondblclick": "Èdit pejdèm with tutèm klik",
+       "tog-editsectiononrightclick": "Ebul sèkshòn èdit whe yu raiht klik pan sèkshòn tituldèm",
+       "tog-watchcreations": "Add pejdèm whe a kreat èn faildèm whe a ùplod tu mi wachlist",
+       "tog-watchdefault": "Add pejdèm èn faildèm whe a èdit tu mi wachlist.",
+       "tog-watchmoves": "Add dhi pejdèm we a muf go mi wachlist",
+       "tog-watchdeletion": "Add dhi pejdèm èn faildèm we a delet go mi wachlist",
+       "tog-minordefault": "Mark òll èditdèm lèkkè minòr bay default",
+       "tog-previewontop": "Show prevyu bifor èdit bòks",
+       "tog-previewonfirst": "Show prevyu we dhi fùrs èdit dòn",
+       "tog-enotifwatchlistpages": "Sèn mi e-mel wan pej òr fail na mi wachlist chenj",
+       "tog-enotifusertalkpages": "Sèn mi e-mel whe mi yuzar tòk pej chenj",
+       "tog-enotifminoredits": "Sèn mi e-mel fòr minòr pej èn fail èditdèm",
+       "tog-enotifrevealaddr": "Show mi e-mel addrèss na mi notifakshòn e-meldèm",
+       "tog-shownumberswatching": "Show dhi nùmbàr dhi yuzardèm we de wach",
+       "tog-oldsig": "Signatura we èksist",
+       "tog-fancysig": "Trit signatura lèkkè wikitext (withaut automatik link)",
+       "tog-uselivepreview": "Yuz laive prevyu (èkspèrimèntlèkk)",
+       "tog-forceeditsummary": "Tèllmi we a de èntar blank èdit sùmmari",
+       "tog-watchlisthideown": "Haid mi èditdèm kòmòt mi wachlist",
+       "tog-watchlisthidebots": "Haid bòtèdit kòmòt dhi wachlist",
+       "tog-watchlisthideminor": "Haid minòr èditdèn kòmòt dhi wachlist",
        "sunday": "Sandey",
        "monday": "Mundey",
        "tuesday": "Tyrdey",
        "navigation": "Navigatio",
        "qbedit": "Èdit",
        "faq": "Kwèstiòn dèndeaks bòku",
-       "faqpage": "Projèkt:Kuèstiòndèm we òllman de ask",
-       "vector-action-addsection": "Add tòpik",
-       "vector-action-delete": "Delet",
-       "vector-action-move": "Muf",
-       "vector-action-protect": "Protèkt",
-       "vector-view-create": "Kreat",
-       "vector-view-edit": "Chenj",
-       "vector-view-history": "Luk historia",
-       "vector-view-view": "Rid",
-       "vector-view-viewsource": "Luk dhi sòrs",
+       "faqpage": "Project:Kuèstiòndèm we de ask bòku",
        "actions": "Actiòndèm",
        "namespaces": "Nemspasiodèm",
        "variants": "Variantdèm",
        "talkpagelinktext": "Tòk",
        "specialpage": "Spèsial Pej",
        "personaltools": "Pèrsònal tuldèm",
-       "postcomment": "Nyu sèktiòn",
        "articlepage": "Luk kòntènt pej",
        "talk": "Diskùssiòn",
        "views": "Vyudèm",
        "jumptosearch": "Luk fòr",
        "aboutsite": "Na bòt {{SITENAME}}",
        "aboutpage": "Project:Na bòt",
-       "copyright": "Dis kontent de onda $1 .",
+       "copyright": "Dhis kòntènt avelebul ùndar $1 .",
        "currentevents": "Kùrrènt evèntdèm",
        "currentevents-url": "Project:Kùrrènt evèntdèm",
        "disclaimers": "Disklamardèm",
        "yourpasswordagain": "Retayp passwòrd",
        "login": "Lògin",
        "nav-login-createaccount": "Lògin / Mek yu yon akkaunt",
-       "loginprompt": "Yu gèt fòde yuz kukidèm fòr ebul fòrlogin {{SITENAME}}.",
        "userlogin": "Lògin / Mek yu yon akkaunt",
        "logout": "Lògòt",
        "userlogout": "Lògòt",
        "createaccount": "Kreat yu yon akkaunt",
        "gotaccount": "Yu dòn mek yu akkaunt? '''$1'''.",
        "gotaccountlink": "Lògin",
-       "createaccountmail": "wit imel",
+       "createaccountmail": "Yuz shòrttèm randòm passwòrd èn sèn am go dhi imel address we spesifay",
        "badretype": "Dhi passwòrddèm we yu taip nò mach.",
        "userexists": "Odhar pòrsin de yuz dha yuzmannem.\nYu go gèt fòr pik differènt wan.",
        "mailmypassword": "Resèt passwòrd",
        "savearticle": "Sev dis pej",
        "preview": "Prevyu",
        "showpreview": "Luk dhi prevyu",
-       "showlivepreview": "Luk dhi laiv prevyu",
        "showdiff": "Sho wetin dòn chenj",
        "anoneditwarning": "'''Tek tèm o:''' Yu nò lògin yet.\nSo dèn go sev yu IP addrèss na dhi pejim èdithistoria",
        "missingsummary": "'''Mèmbar se:''' yu nò mek èditsùmmari.\nIf yu prèss sev bak, dhèm go sev yu èdit nòmor.",
        "shown-title": "Show $1 {{PLURAL:$1|resùlt|resùltdèm}} fòr pej",
        "viewprevnext": "Vyu ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-articles": "Kòntèntpejdèm",
-       "searchprofile-project": "Hèp èn Protèkt pejdèm",
        "searchprofile-images": "Mùltimedia",
        "searchprofile-everything": "Òllthin",
        "searchprofile-advanced": "We advans",
        "searchprofile-articles-tooltip": "Sarch na $1",
-       "searchprofile-project-tooltip": "Sarch na $1",
        "searchprofile-images-tooltip": "Sarch fòr faildèm",
        "search-result-size": "$1 ({{PLURAL:$2|1 wòrd|$2 wòrddèm}})",
        "search-section": "(sèkshòn $1)",
        "search-nonefound": "Resùltdèm we mach dhi kweri nò de",
        "powersearch-legend": "Advanssarch",
        "powersearch-ns": "Sarch na nemspatiodèm:",
-       "powersearch-redir": "List de sèn yu go",
        "search-external": "Èksternal sarch",
        "searchdisabled": "{{websaitim nem}} Dhi sarch nò de work.\nNa dhi mintèm yuz Google fòr sarch.\nMèmbar se sòmtèm dhèm indèksdèm na {{SITENAME}}go dòn datòt.",
        "mypreferences": "Prèfèrèntiadèm",
        "searchresultshead": "Sarch",
        "youremail": "Emel:",
-       "username": "Yuzanem:",
+       "username": "Yuzmannem:",
        "yourrealname": "Real nem",
        "newuserlogpage": "Yuzman kreattin lòg",
        "action-edit": "èdit dhis pej",
        "booksources-go": "Go",
        "log": "Lògdèm",
        "allpages": "Òll pejdèm",
-       "alphaindexline": "$1 go $2",
        "allarticles": "Òll pejdèm",
        "allpagessubmit": "Go",
        "categories": "Katègòridèm",
index 65f2a50..07a1d75 100644 (file)
        "searchprofile-articles-tooltip": "Di $1 da lêbigere",
        "searchprofile-images-tooltip": "Li pelan bigere",
        "search-result-size": "$1 ({{PLURAL:$2|peyvek|$2 peyv}})",
-       "search-result-score": "Lêhatin: $1%",
        "search-redirect": "(beralîkirin $1)",
        "search-section": "(beş $1)",
        "search-suggest": "Gelo mebesta te ev bû: $1",
index 5461859..e8320d8 100644 (file)
        "talkpagelinktext": "keskows",
        "specialpage": "Folen arbennek",
        "personaltools": "Toulys personel",
-       "postcomment": "Tregh nowyth",
        "articlepage": "Gweles an folen",
        "talk": "Keskows",
        "views": "Gwelyansow",
        "password-change-forbidden": "Ny yllir chanjya geryow tremena war an wiki-ma.",
        "login": "Omgelmi",
        "nav-login-createaccount": "Omgelmi / Gwruthyl akont nowyth",
-       "loginprompt": "Res yw dhywgh galosegi cookies rag omgelmi orth {{SITENAME}}.",
        "userlogin": "Omgelmi / gwruthyl akont nowyth",
        "userloginnocreate": "Omgelmi",
        "logout": "Digelmi",
        "fileuploadsummary": "Berrskrif:",
        "filesource": "Pennfenten:",
        "savefile": "Gwitha restren",
-       "uploadedimage": "\"[[$1]]\" ughkergys",
        "watchthisupload": "Golya an folen-ma",
        "imgfile": "restren",
        "listfiles_date": "Dedhyans",
        "unwatch": "Diswolya",
        "watchlist-details": "Yma {{PLURAL:$1|$1 folen}} war agas rol wolya, marnas folennow keskows.",
        "wlheader-showupdated": "Yn '''tew''' y tiskwedhir folennow re beu chanjyes a-dhia agas vysytyans diwettha.",
+       "wlnote": "A-woles yma an {{PLURAL:$1|chanj diwettha|'''$1''' chanj diwettha}} y'n {{PLURAL:$2|our|'''$2''' our}} diwettha, a-dhia $3, $4.",
        "wlshowlast": "Diskwedhes an $1 our diwettha, an $2 dydh diwettha, po $3",
        "watchlist-options": "Etholyow an rol wolya",
        "watching": "Ow kolya...",
index a64f675..f3fb4ec 100644 (file)
        "talkpagelinktext": "Талкуулоо",
        "specialpage": "Кызматтык барак",
        "personaltools": "Жеке аспаптар",
-       "postcomment": "Жаңы бөлүм",
        "articlepage": "Макаланы кароо",
        "talk": "Талкуу",
        "views": "Көрсөтүүлөр",
        "externaldberror": "Маалымат базасында ката кетти же сизге сырткы эсебиңизди жаңыртууга уруксат берилген эмес.",
        "login": "Кирүү",
        "nav-login-createaccount": "Кирүү / Катталуу",
-       "loginprompt": "{{SITENAME}} сайтына кириш үчүн сиз «кукилерге» уруксат беришиңиз керек.",
        "userlogin": "Кирүү / Катталуу",
        "userloginnocreate": "Кирүү",
        "logout": "Чыгуу",
        "searchprofile-advanced-tooltip": "Белгиленген аталыш мейкиндиктеринде издөө",
        "search-result-size": "$1 ({{PLURAL:$2|1 сөз|$2 сөздөр}})",
        "search-result-category-size": "{{PLURAL:$1|1 мүчө|$1 мүчөлөр}} ({{PLURAL:$2|1 ички категория|$2 ички категориялар}}, {{PLURAL:$3|1 файл|$3 файлдар}})",
-       "search-result-score": "Релеванттуулук: $1%",
        "search-redirect": "($1 багыттама)",
        "search-section": "($1 бөлүмү)",
        "search-suggest": "Балким, издегениңиз бул: $1",
        "ignorewarnings": "Болгон эскертүүлөрдү этибар албоо",
        "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|уруксат болбогон файл тиби|уруксат болбогон файл типтери}}.\nУруксат болгон {{PLURAL:$3|файл тиби|файл типтери}} $2.",
        "savefile": "Файлды сактоо",
-       "uploadedimage": "\"[[$1]]\" жүктөлдү",
        "upload-source": "Баштапкы файл",
        "sourcefilename": "Булактын файл аты:",
        "sourceurl": "Булактын URL-дареги:",
index 5da1b59..3024fe7 100644 (file)
        "rcnotefrom": "Subter sunt '''$1''' nuperrime mutata in proxima '''$2''' die.",
        "rclistfrom": "Monstrare mutata nova incipiens ab $3 $2",
        "rcshowhideminor": "$1 recensiones minores",
+       "rcshowhideminor-show": "Monstrare",
+       "rcshowhideminor-hide": "Celare",
        "rcshowhidebots": "$1 automata",
+       "rcshowhidebots-show": "Monstrare",
+       "rcshowhidebots-hide": "Celare",
        "rcshowhideliu": "$1 usores notos",
+       "rcshowhideliu-show": "Monstrare",
+       "rcshowhideliu-hide": "Celare",
        "rcshowhideanons": "$1 usores ignotos",
+       "rcshowhideanons-show": "Monstrare",
+       "rcshowhideanons-hide": "Celare",
        "rcshowhidepatr": "$1 recensiones circumitae",
+       "rcshowhidepatr-show": "Monstrare",
+       "rcshowhidepatr-hide": "Celare",
        "rcshowhidemine": "$1 conlationes meas",
+       "rcshowhidemine-show": "Monstrare",
+       "rcshowhidemine-hide": "Celare",
        "rclinks": "Monstrare $1 nuperrime mutata in $2 diebus proximis.<br />$3",
        "diff": "diss",
        "hist": "hist",
        "unusedtemplateswlh": "nexus alii",
        "randompage": "Pagina fortuita",
        "randompage-nopages": "Non est ulla pagina {{PLURAL:$2|hoc in spatio nominale|in his spatiis nominalibus}}: $1.",
-       "randomincategory-selectcategory-submit": "Pergere",
        "randomredirect": "Redirectio fortuita",
        "randomredirect-nopages": "Non est ulla redirectio in spatio nominali \"$1\".",
        "statistics": "Census",
        "djvu_page_error": "Pagina DjVu extra latitudinem",
        "import": "Paginas importare",
        "importinterwiki": "Adportatio transvici",
-       "import-interwiki-source": "Vici et pagina fons:",
        "import-interwiki-submit": "Importare",
        "import-interwiki-namespace": "Spatium nominale destinatum:",
        "import-upload-filename": "Nomen fasciculi:",
index c1e5ee6..db68ff1 100644 (file)
        "talkpagelinktext": "Messaje",
        "specialpage": "Hoja Especial",
        "personaltools": "Aparates personales",
-       "postcomment": "Capítůlo muevo",
        "articlepage": "Ver el artícůlo de contenido",
        "talk": "Diskusyón",
        "views": "Vistas",
        "password-change-forbidden": "No se puede kambiar contrasenyas en este viki.",
        "login": "Entrar",
        "nav-login-createaccount": "Entrar / criar un cuento",
-       "loginprompt": "Kale tener \"cookies\" aktivadas enel navegador para enrejistrarse en {{SITENAME}}",
        "userlogin": "Entrar / Criar cuento",
        "logout": "Salir",
        "userlogout": "Salir",
        "filesource": "Fuente:",
        "filename-tooshort": "El nombre del archivo es muy kurto.",
        "savefile": "Guardar archivo",
-       "uploadedimage": "suvió «[[$1]]»",
        "backend-fail-notexists": "El archivo $1 no egziste.",
        "backend-fail-alreadyexists": "El archivo \"$1\" ya egziste.",
        "img-auth-nofile": "El archivo \"$1\" no egziste.",
index 2894e7f..56a22d2 100644 (file)
        "revdelete-selected-text": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vu(n) [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Erausgesicht Versioun|Erausgesicht Versioune}} vum Fichier vu(n) [[:$2]]:",
        "logdelete-selected": "Ausgewielten {{PLURAL:$1|Evenement|Evenementer}} aus dem Logbuch:",
+       "revdelete-text-text": "Geläscht Versioune bleiwen am Historique vun der Säit, awer Deeler vun hirem Inhalt sinn net ëffentlech zougänglech.",
+       "revdelete-text-file": "Geläscht Versioune vu Fichiere bleiwen am Historique vum Fichier awer Deeler vun hirem Inhalt sinn net ëffentlech zougänglech.",
        "revdelete-text-others": "Aner Administrateure kënnen nach ëmmer de verstoppten Inhalt gesinn an en nees restauréieren, ausser wann zousätzlech Limitatiounen agestallt sinn.",
        "revdelete-confirm": "Confirméiert w.e.g. datt Dir dat maache wëllt, datt Dir d'Konsequenze verstitt an datt Dir dëst an Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] maacht.",
        "revdelete-suppress-text": "Ënnerdréckung sollt '''nëmmen''' an dëse Fäll benotzt ginn:\n* Informatiounen déi beleidege kéinten\n* Net ubruechte perséinlechen Informatiounen\n*: ''Adressen, Telefonsnummeren, Sozialversécherungsnummeren asw.''",
        "unwatchedpages": "Net iwwerwaacht Säiten",
        "listredirects": "Lëscht vun de Viruleedungen",
        "listduplicatedfiles": "Lëscht vu Fichiere mat Doublonen",
+       "listduplicatedfiles-summary": "Dëst ass eng Lëscht vu Fichiere wou déi lescht Versioun vum Fichier en Doublon vun der leschter Versioun vun engem anere Fichier ass. Et ginn nëmme lokal Fichiere consideréiert.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] huet [[$3|{{PLURAL:$2|een Doublon|$2 Doublonen}}]].",
        "unusedtemplates": "Net benotzt Schablounen",
        "unusedtemplatestext": "Op dëser Säit stinn all Säiten aus dem {{ns:template}} Nummraum, déi a kenger anerer Säit benotzt ginn. Vergiesst net nozekucken, ob et keng aner Linken op dës Schabloune gëtt, ier Dir eng Schabloun läscht.",
        "randomincategory": "Zoufälleg Säit an der Kategorie",
        "randomincategory-invalidcategory": "\"$1\" ass kee valabelen Numm fir eng Kategorie.",
        "randomincategory-nopages": "Et gëtt keng Säiten an der [[:Category:$1]].",
-       "randomincategory-selectcategory": "Eng zoufälleg Säit aus der Kategorie: $1 $2 opruffen",
-       "randomincategory-selectcategory-submit": "Lass",
+       "randomincategory-category": "Kategorie:",
+       "randomincategory-legend": "Zoufälleg Säit an der Kategorie",
        "randomredirect": "Zoufälleg Viruleedung",
        "randomredirect-nopages": "Am Nummraum $1 gëtt et keng Viruleedungen.",
        "statistics": "Statistik",
        "exbeforeblank": "Den Inhalt virum Läsche war: '$1'",
        "delete-confirm": "Läsche vu(n) \"$1\"",
        "delete-legend": "Läschen",
-       "historywarning": "'''Opgepasst:''' Déi Säit déi Dir läsche wëllt huet en Historique mat ongeféier $1 {{PLURAL:$1|Versioun|Versiounen}}:",
+       "historywarning": "<strong>Opgepasst:</strong> D'Säit déi Dir läsche wëllt huet en Historique mat $1 {{PLURAL:$1|Versioun|Versiounen}}:",
        "confirmdeletetext": "Dir sidd am Gaang, eng Säit mat hirem kompletten Historique vollstänneg aus der Datebank ze läschen.\nW.e.g. confirméiert, datt Dir dëst wierklech wëllt, datt Dir d'Konsequenze verstitt, an datt dat Ganzt am Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] geschitt.",
        "actioncomplete": "Aktioun ofgeschloss",
        "actionfailed": "Aktioun huet net funktionéiert",
        "delete-edit-reasonlist": "Läschgrënn änneren",
        "delete-toobig": "Dës Säit huet e laangen Historique, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.\nD'Läsche vu sou Säite gouf limitéiert fir ongewollte Stéierungen op {{SITENAME}} ze verhënneren.",
        "delete-warning-toobig": "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.\nD'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;\ndës Aktioun soll mat Virsiicht gemaach ginn.",
-       "delete-cantedit": "Dir däerft dës Säit net läsche well Dir net d'Recht hutt fir se z'änneren.",
+       "deleteprotected": "Dir däerft dëst Säit net läsche well se gespaart ass.",
        "deleting-backlinks-warning": "'''Opgepasst:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Aner Säite]] linken op déi Säit déi Dir am Gaang sidd ze läschen oder déi Säit Déi Dir am Gaang sidd ze läschen ass an aner Säiten agebonn.",
        "rollback": "Ännerungen zrécksetzen",
        "rollback_short": "Zrécksetzen",
        "import": "Säiten importéieren",
        "importinterwiki": "Transwiki-Import",
        "import-interwiki-text": "Sicht eng Wiki an e Säitentitel eraus fir z'importéieren.\nD'Versiounsdatumen an d'Benotzernimm bleiwen dobäi erhalen.\nAll Transwiki-Import-Aktioune ginn am [[Special:Log/import|Import-Logbuch]] protokolléiert.",
-       "import-interwiki-source": "Quelle Wiki/Säit:",
+       "import-interwiki-sourcewiki": "Quellwiki:",
+       "import-interwiki-sourcepage": "Originalsäit:",
        "import-interwiki-history": "Importéier all d'Versioune vun dëser Säit",
        "import-interwiki-templates": "Mat alle Schablounen",
        "import-interwiki-submit": "Import",
index 3cbf19c..69b197c 100644 (file)
        "talkpagelinktext": "Рахун",
        "specialpage": "Куьмекчи ччин",
        "personaltools": "Кьилди вичин алатар",
-       "postcomment": "ЦӀйий пай",
        "articlepage": "Къене авайбурун ччиндиз килигун",
        "talk": "Веревирд авун",
        "views": "Килигунар",
        "yourdomainname": "Куь домен",
        "login": "Гьахьун",
        "nav-login-createaccount": "Гьахьун/аккаунт туькӀуьрун",
-       "loginprompt": "Системадиз гьахьун патал \"куки\" -яр куькӀуьрна кӀанзава",
        "userlogin": "Гьахьун/аккаунт туькӀуьрун",
        "userloginnocreate": "Гьахьун",
        "logout": "ЭкъечӀун",
        "filereuploadsummary": "Файлдин къене дегишвилер:",
        "filestatus": "Автордин ихтиярдин статус:",
        "filesource": "Чешме:",
-       "uploadedimage": "\"[[$1]]\" ппарна",
        "upload-source": "Чешмедин файл",
        "sourcefilename": "Чешмедин тир файлдин тIвар:",
        "sourceurl": "Чешмедин URL-адрес:",
        "watchlisttools-raw": "Текст хьиз дуьзар хъувун",
        "duplicate-defaultsort": "'''Дикъет:''' Авайд хьиз кьунвай жуьрейриз ччара авунин \"$2\" куьлег  виликан \"$1\" жуьрейриз ччара авунин куьлег гьич йийзва.",
        "version": "Жуьре",
-       "version-antispam": "Спамдин вилик пад атIун",
        "version-skins": "КЪайдадиз ттунин темаяр",
+       "version-antispam": "Спамдин вилик пад атIун",
        "version-other": "Муькуьбур",
        "specialpages": "КьетӀен ччинар",
        "external_image_whitelist": " #И цӀар авайд хьиз тур<pre>\n#Агъада вахт акадар тийиз жезвай (гьамиша къайдадалди) лугьунрин кьатӀар эцига (// арада авай кӀус).\n#Ибур кьецепатан суьретрин URL галаз гекъигда.\n#Дуьзкъвезвайбур суьретар хьиз къалурда, муькуьбур суьретриз тухузвай элячӀунар хьиз къалурда.\n#«#» галаз эгечӀзавай цӀарариз къейдериз хьиз килигда.\n#ЦӀарар регистрдиз фад кьатӀудайбур я.\n\n#ЦӀарцин винел вири вахт акадар тийиз жезвай лугьунрин кьатӀар эцига. И цӀар авайд хьиз тур</pre>",
index f11f156..b7592f5 100644 (file)
        "talkpagelinktext": "Parla",
        "specialpage": "Paje spesial",
        "personaltools": "Utiles personal",
-       "postcomment": "Sesion nova",
        "articlepage": "Vide la paje de contenis",
        "talk": "Discutes",
        "views": "Vides",
        "yourdomainname": "Tu domina:",
        "login": "Identifia",
        "nav-login-createaccount": "Sinia per entra",
-       "loginprompt": "Tu debe engrana \"tortetas\" per entra {{SITENAME}}.",
        "userlogin": "Sinia per entra",
        "logout": "Retira",
        "userlogout": "Sinia per retira",
        "uploadbtn": "Envia la fix",
        "uploadlogpage": "Envia arcivo",
        "savefile": "Fisa fix",
-       "uploadedimage": "\"[[$1]]\" es enviada",
        "upload-file-error": "Era interna",
        "imgfile": "fix",
        "listfiles": "Lista de imajes",
index 25010fe..ee0185a 100644 (file)
        "talkpagelinktext": "Yogera nange",
        "specialpage": "Olupapula olwawule",
        "personaltools": "Ebikola ku akawunti n'enfo yo",
-       "postcomment": "Kitundu kipya",
        "articlepage": "Kebera olupapula",
        "talk": "Emboozi",
        "views": "Kyusa endabika ya by'olaba wano",
        "externaldberror": "Waliwo kiremya mu ggwanika lya data ekozesebwa okukakasa bamemba oba tokkirizibwa okukyusa ku akawunti yo ey'awalala.",
        "login": "Yingira",
        "nav-login-createaccount": "Yingira / kolawo akawunti",
-       "loginprompt": "Okuyingira {{SITENAME}}, kalambula-neti yo erina okukkirizako kuki.",
        "userlogin": "Yingira / kolawo akawunti",
        "userloginnocreate": "Yingira",
        "logout": "Vaamu",
        "recentchangeslinked-to": "Nonamu eby'empapula ezikuggusa ku luno zokka",
        "upload": "Teekayo fayiro",
        "uploadlogpage": "Likooda eya fayiro eziteekedwa ku wiki",
-       "uploadedimage": "yateekayo \"[[$1]]\"",
        "listfiles_user": "Memba",
        "file-anchor-link": "Fayiro",
        "filehist": "Ebyafaayo ebya fayiro eno",
index 255d832..bf80d69 100644 (file)
        "talkpagelinktext": "Euverlègk",
        "specialpage": "Speciaal pagina",
        "personaltools": "Persuunlike hulpmiddele",
-       "postcomment": "Nuuj sectie",
        "articlepage": "Artikel",
        "talk": "Euverlègk",
        "views": "Weergave",
        "externaldberror": "d'r Is 'n fout opgetraoje biej 't aanmelje biej de database of doe höbs gén toesjtömming diene externe gebroeker biej te wèrke.",
        "login": "Aanmèlde",
        "nav-login-createaccount": "Aanmelje / registrere",
-       "loginprompt": "Diene browser mót ''cookies'' acceptere óm in te logge op {{SITENAME}}.",
        "userlogin": "Aanmelde / registrere",
        "userloginnocreate": "Mèlj aan",
        "logout": "Aafmelde",
        "searchprofile-advanced-tooltip": "Zeuke in aongegeve naamruumdes",
        "search-result-size": "$1 ({{PLURAL:$2|1 waord|$2 wäörd}})",
        "search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorielede}} ({{PLURAL:$2|1 ongercategorie|$2 ongercategorieë}}, {{PLURAL:$3|1 bestandj|$3 bestenj}})",
-       "search-result-score": "Relevantie: $1%",
        "search-redirect": "(doorverwiezing $1)",
        "search-section": "(subkop $1)",
        "search-suggest": "Meins te sóms: $1",
        "uploadwarning": "Upload waarsjuwing",
        "uploadwarning-text": "Pas de ongerstaonde bestandjsbesjrieving aan en perbeer t daonao opnuuj.",
        "savefile": "Bestand opsjlaon",
-       "uploadedimage": "haet ge-upload: [[$1]]",
-       "overwroteimage": "haet 'ne nuuje versie van \"[[$1]]\" toegevoeg",
        "uploaddisabled": "Uploade is oetgesjakeld",
        "copyuploaddisabled": "t Uploade van bestenj via nen URL is oetgezat.",
        "uploaddisabledtext": "'t uploade van bestenj is oetgesjakeld.",
        "watchlist-details": "D'r {{PLURAL:$1|sjteit ein pagina|sjtaon $1 pagina's}} op dien volglies mit oetzunjering van de euverlèkpagina's.",
        "wlheader-enotif": "Doe wörs per e-mail gewaarsjuwd",
        "wlheader-showupdated": "Pazjena's die verangerd zeen saers doe ze veur 't lètste bekeeks sjtaon '''vet'''",
+       "wlnote": "Hieónger {{PLURAL:$1|steit de lètste verangering|staon de lètste $1 verangeringe}} van {{PLURAL:$2|'t lètste oer|de lètste <b>$2</b> oer}} óp $3 óm $4.",
        "wlshowlast": "Tuin lètste $1 ore $2 daag $3",
        "watchlist-options": "Opties veur volglies",
        "watching": "Bezig mit plaatse op de volglies...",
        "import": "Pazjena's importere",
        "importinterwiki": "Transwiki-import",
        "import-interwiki-text": "Selecteer 'ne wiki en pazjenanaam om te importere.\nVersie- en auteursgegaeves blieve hiej bie bewaard.\nAlle transwiki-importhanjelinge waere opgeslage in 't [[Special:Log/import|importlogbook]].",
-       "import-interwiki-source": "Bronwiki/pagina:",
        "import-interwiki-history": "Volledige gesjiedenis van deze pazjena ouch kopiëre",
        "import-interwiki-templates": "Alle sjablone opnaeme",
        "import-interwiki-submit": "Importere",
        "duplicate-defaultsort": "Waarsjuwing: De standaardsortering \"$2\" krieg veurrang veur de sortering \"$1\".",
        "version": "Versie",
        "version-extensions": "Geïnstalleerde oetbreijinge",
+       "version-skins": "Vörmgevinge",
        "version-specialpages": "Speciaal pazjena's",
        "version-parserhooks": "Parserheuk",
        "version-variables": "Variabele",
        "version-antispam": "Spampreventie",
-       "version-skins": "Vörmgevinge",
        "version-other": "Euverige",
        "version-mediahandlers": "Mediaverwerkers",
        "version-hooks": "Heuk",
        "htmlform-selectorother-other": "Anges",
        "sqlite-has-fts": "Zeuk versie $1 mit óngersteuning veur \"full-text\"",
        "sqlite-no-fts": "Zeuk versie $1 zónger óngersteuning veur \"fulltext\"",
-       "logentry-delete-delete": "$1 haef de pagina $3 gewösj",
+       "logentry-delete-delete": "$1 {{GENDER:$1|haet}} de pagina $3 gewösj",
        "logentry-delete-restore": "$1 haet de pagina $3 trögkgezat",
        "logentry-delete-event": "$1 haet de zichbaarheid van {{PLURAL:$5|'ne logbookregel|$5 logbookregels}} van $3 gewiezig: $4",
        "logentry-delete-revision": "$1 haet de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van $3 gewiezig: $4",
index 98789dd..c475327 100644 (file)
        "talkpagelinktext": "Ciæti",
        "specialpage": "Pagina speçiâ",
        "personaltools": "Strùmenti personâli",
-       "postcomment": "Noeuva seçion",
        "articlepage": "Veddi a voxe",
        "talk": "Ciæti",
        "views": "Vìxite",
        "password-change-forbidden": "No ti peu cangiâ poula segretta in questa wiki.",
        "login": "Intra",
        "nav-login-createaccount": "Intra / Registrate",
-       "loginprompt": "Pe fâ l'accesso inte {{SITENAME}} ti g'hæ da  abilitâ i cookie.",
        "userlogin": "Intra / Registrite",
        "userloginnocreate": "Intra",
        "logout": "Sciorti",
        "fileexists": "Un papê co sto nomme o existe de zà, pe piaxei da unn'euggiâ a <strong>[[:$1]]</strong> se non ti tei seguo de voleilo cangiâ.\n[[$1|thumb]]",
        "fileexists-forbidden": "Un papê co sto nomme o existe de zà, pe piaxei vanni in derrê e carega sto papê co un ätro nomme. [[File:$1|thumb|center|$1]]",
        "savefile": "Sarva o papê",
-       "uploadedimage": "O l'ha caregòu \"[[$1]]\"",
        "uploaddisabledtext": "In {{SITENAME}} non se peu caregâ de papê.",
        "uploadvirus": "O papê gha un virus!! Dettaggi: $1",
        "sourcefilename": "Nomme do papê d'origine:",
index d36102c..727743d 100644 (file)
@@ -4,7 +4,8 @@
                        "Andrijko Z.",
                        "Erdemaslancan",
                        "Ohpuu",
-                       "Warbola"
+                       "Warbola",
+                       "아라"
                ]
        },
        "sunday": "pivāpǟva",
        "navigation": "Navigīerimi",
        "qbfind": "Vȯtšõgid",
        "faq": "SKK",
-       "vector-action-addsection": "Pangid jūrõ tēma",
-       "vector-action-delete": "Kištāntõgid jarā",
-       "vector-action-move": "Vīž jarā",
-       "vector-action-protect": "Kaitsõmi",
-       "vector-view-create": "Lūo",
-       "vector-view-edit": "Redigīer",
-       "vector-view-history": "Nägţ istōrijõ",
-       "vector-view-view": "Vaņ",
-       "vector-view-viewsource": "Vaņ ovāt tekstõ",
        "actions": "Tīemizt",
        "namespaces": "Nim-rūimõd",
        "variants": "Varianţõd",
        "remembermypassword": " Mǟdlõgid sallisõnā (kuņtš $1 {{PLURAL:$1|päuvõ|päuvõ}})",
        "login": "Log sīezõ",
        "nav-login-createaccount": "Log sīezõ agā registrīer kȭlbatijizõks",
-       "loginprompt": "Sīezõ loggimizõks täddõn um āndamizt lubā \"kūkid\" (''cookies'') pierāst",
        "userlogin": "Sīezõ loggimi agā kȭlbatijiz-konto lūomi",
        "logout": "Log ulzõ",
        "userlogout": "Log ulzõ",
        "searchmenu-exists": "'''Lēḑ pēļizkēraks \"[[:$1]]\" um vȯlmizõs.'''",
        "searchmenu-new": "'''Lūo lēḑ pēļizkēraks \"[[:$1]]\".'''",
        "searchprofile-articles": "Sižāliz lēḑõd",
-       "searchprofile-project": "Ab ja projekt lēḑõd",
        "searchprofile-images": "Multimēdij",
        "searchprofile-everything": "Tikkiž",
        "searchprofile-advanced": "Jo akurāt vȯtšimi",
        "searchprofile-articles-tooltip": "Vȯtšõgid nim-rūimstõ $1",
-       "searchprofile-project-tooltip": "Vȯtšõgid nim-rūimstõ $1",
        "searchprofile-images-tooltip": "Fail vȯtšimi",
        "searchprofile-everything-tooltip": "Vȯtšõgid amā sižāliz sizāld (ka nõvpidāmiz-lēḑõd pǟld)",
        "searchprofile-advanced-tooltip": "Vȯtšõgid andtõd nim-rūimšti",
        "search-nonefound": "Vȯtšimizõn vȯtšimi äb lieudtõd vastūkst.",
        "powersearch-legend": " Juo akurāt vȯtšimi",
        "powersearch-ns": "Vȯtšimi nim-rūimšti:",
-       "powersearch-redir": "Jeddõpēḑõn sōtimizt nimkēra",
        "preferences": "Mīeldõbõd ulzõ-vēļimizt",
        "mypreferences": "Min mīeldõbõd ulzõ-vēļimizt",
        "youremail": "E-kēra adres:",
        "recentchanges-label-bot": "Sīe mõitõks tei ikš robot",
        "recentchanges-label-unpatrolled": "Se mõitõks tēji vȯļ ikš robot",
        "rcnotefrom": "Allõ-pūol um tūodõd mõitõkst  '''$2''' sōņõst: (nägţõbõd amā jemīņ '''$1''' mõitõkst)",
-       "rclistfrom": "Nägţ mõitõkši sōņõst: $1",
+       "rclistfrom": "Nägţ mõitõkši sōņõst: $3 $2",
        "rcshowhideminor": "$1 piškizt parāmtimizt",
        "rcshowhidebots": "$1 robōtõd",
        "rcshowhideliu": "$1 sīezõ loggõnd kȭlbatijizt",
        "upload": "Fail ilzõ-lōţimi",
        "uploadlogpage": "Ilzõ-lōţimiz log",
        "filedesc": "Kubbõ võtāmi:",
-       "uploadedimage": "lōţiz ilzõ fail \"[[$1]]\"",
        "license": "Litsents:",
        "license-header": "Litsents:",
        "file-anchor-link": "Bīlda",
        "booksources-go": "Li",
        "log": "Logūd",
        "allpages": "Amād lēḑõd",
-       "alphaindexline": "$1 sōņist $2 sōņõ",
        "prevpage": "Jedmõli lēḑ ($1)",
        "allpagesfrom": " Nägţ līedidi pēļizkērast sōņõst:",
        "allpagesto": " Nägţ līedidi sīe pēļikēra sōņõ:",
index cf83330..80bfa6b 100644 (file)
        "talkpagelinktext": "Ciciarada",
        "specialpage": "Pagina speciala",
        "personaltools": "Istrüment persunaj",
-       "postcomment": "Sezión növa",
        "articlepage": "Varda l'articul",
        "talk": "Discüssión",
        "views": "Vìste",
        "externaldberror": "Gh'è 'n erùr söl server de autenticasiù estèrno o sedenò se g'ha mìa le autorizasiù nesesàre per agiurnà i dati de registrasiù estèrni.",
        "login": "Va dent",
        "nav-login-createaccount": "Vena denter / Crea un cünt",
-       "loginprompt": "Par cunett a {{SITENAME}}, a duvii abilitá i galet.",
        "userlogin": "Vegní denter - Creè un cünt",
        "userloginnocreate": "Vegn denter",
        "logout": "Va fö",
        "searchprofile-everything-tooltip": "Cerca depertüt (anca int i paginn de discüssion)",
        "searchprofile-advanced-tooltip": "Cerca int i namespace persunalizaa",
        "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 paroll}})",
-       "search-result-score": "Atinènsa: $1%",
        "search-redirect": "(redirezión $1)",
        "search-section": "(sessión $1)",
        "search-file-match": "(corespondènsa endèl test de l'archivi)",
        "ignorewarnings": "Ignora tücc i avertimeent",
        "largefileserver": "Chel archivi-chí al è püssee graant che ul serviduur al sía cunfigüraa da permett.",
        "savefile": "Salva l'archivi",
-       "uploadedimage": "l'ha cargaa \"[[$1]]\"",
        "sourcefilename": "Nomm da l'archivi surgeent:",
        "destfilename": "Nomm da l'archivi da destinazziun:",
        "imgfile": "archivi",
index d7eb71b..5e8fda1 100644 (file)
@@ -3,12 +3,12 @@
                "authors": [
                        "Bombo (on ln.wikipedia.org)",
                        "Eruedin",
-                       "Moyogo"
+                       "Moyogo",
+                       "TMg"
                ]
        },
        "tog-underline": "Kotíya sulimá na bikangisi:",
        "tog-showtoolbar": "Komɔ́nisa ndámbo-ndámbo (esengélí JavaScript)",
-       "tog-rememberpassword": "Komíkundola bokitoli na molúki (ekosúkisa na {{PLURAL:$1|mokɔlɔ|mikɔlɔ}} $1)",
        "underline-always": "Mikɔlɔ yɔ́nsɔ",
        "underline-never": "Libélá tɛ́",
        "sunday": "Lomíngo",
@@ -53,8 +53,8 @@
        "feb": "s2",
        "mar": "s3",
        "apr": "s4",
-       "may": "s4",
-       "jun": "s5",
+       "may": "s5",
+       "jun": "s6",
        "jul": "s7",
        "aug": "s8",
        "sep": "s9",
        "qbpageoptions": "Lonkásá óyo",
        "qbmyoptions": "Lonkásá na ngáí",
        "faq": "Mitúná Mizóngelaka (MM)",
-       "vector-action-addsection": "Kobakisa mpɔ̂",
-       "vector-action-delete": "Kolímwisa",
-       "vector-action-move": "Kobóngola nkómbó",
-       "vector-action-protect": "Kobátela",
-       "vector-action-undelete": "Kolímwisa tɛ̂",
-       "vector-action-unprotect": " Kobátela tɛ̂",
-       "vector-view-create": "Kokela",
-       "vector-view-edit": "Kobɔngisa",
-       "vector-view-history": "Komɔ́nisa mokóló",
-       "vector-view-view": "Kotánga",
-       "vector-view-viewsource": "Komɔ́nisa mosólo",
        "namespaces": "Ntáká ya nkómbó",
        "errorpagetitle": "Mbéba",
        "returnto": "Kozóngisa na $1.",
        "talkpagelinktext": "Ntembe",
        "specialpage": "Lonkásá gudi",
        "personaltools": "Bisáleli ya moto-mɛ́i",
-       "postcomment": "Sɛksió sika",
        "articlepage": "Komɔ́nisa káti",
        "talk": "Ntembe",
        "views": "Bomɔ́nisi",
        "searchprofile-images": "Mitímediá",
        "searchprofile-everything": "Yɔ́nsɔ",
        "searchprofile-articles-tooltip": "Koluka na $1",
-       "searchprofile-project-tooltip": "Koluka na $1",
        "search-result-size": "$1 ({{PLURAL:$2|lokomá 1|nkomá $2}})",
-       "search-result-score": "Ntína : $1%",
        "search-redirect": "(boyendisi útá $1)",
        "search-section": "(sɛksió ya $1)",
        "search-suggest": "Ómeka na lokomá : $1",
        "searchall": "nyɔ́nsɔ",
        "powersearch-legend": "Boluki bopúsání",
        "powersearch-ns": "Koluka o ntáká ya nkómbó :",
-       "powersearch-redir": "Kotíya molɔngɔ́ mwa mayendisi",
        "powersearch-toggleall": "Nyɔ́nsɔ",
        "powersearch-togglenone": "Mɔ́kɔ́ tɛ́",
        "preferences": "Malúli",
        "uploadlogpage": "Zuluná ya botómbisi likoló",
        "filedesc": "Likwé ya mokusé:",
        "savefile": "kobómbisa kásá-kásá",
-       "uploadedimage": "«[[$1]]» etómbísámí likoló",
        "listfiles_date": "Mokɔlɔ",
        "file-anchor-link": "Elilingi",
        "filehist": "Mokóló mwa kásá",
        "booksources-go": "Kɛndɛ́",
        "log": "Bapasɔ́",
        "allpages": "Nkásá ínsɔ",
-       "alphaindexline": "$1 kina $2",
        "nextpage": "Lonkásá ya nsima ($1)",
        "prevpage": "Lonkasá o libosó ($1)",
        "allarticles": "Nkásá ínsɔ",
        "watchthispage": "Kolanda lonkásá óyo",
        "unwatch": "Kolanda tɛ́",
        "watchlist-details": "{{PLURAL:$1|Lonkásá $1 elandámí|Nkásá $1 bilandámí}}, longola nkásá ya ntembe.",
+       "wlnote": "Áwa o nsé {{PLURAL:$1|ezalí mbóngwana ya nsúka|izalí mbóngwana '''$1''' ya nsúka}} o {{PLURAL:$2|ngonga|ngonga '''$2'''}} ya nsúka.",
        "wlshowlast": "Komɔ́nisa ngónga $1 ya nsúka, mikɔlɔ $2 mya nsúka tǒ $3",
        "watching": "Kolanda...",
        "unwatching": "Kolanda tɛ́...",
index 4990cb2..dfffb14 100644 (file)
        "yourdomainname": "ໂດເມນ ຂອງ ທ່ານ",
        "login": "ເຊັນເຂົ້າ",
        "nav-login-createaccount": "ເຊັນເຂົ້າ / ສ້າງບັນຊີ",
-       "loginprompt": "ທ່ານຕ້ອງຮັບຄຸກກີ້ ເພື່ອ ເຊັນເຂົ້າ {{SITENAME}}.",
        "userlogin": "ເຊັນເຂົ້າ / ສ້າງບັນຊີ",
        "logout": "ເຊັນອອກ",
        "userlogout": "ເຊັນອອກ",
        "nextn": "{{PLURAL:$1|$1}} ຕໍ່ໄປ",
        "viewprevnext": "ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).",
        "search-result-size": "$1 ({{PLURAL:$2|1 ຄຳ|$2 ຄຳ}})",
-       "search-result-score": "ຄວາມກ່ຽວຂ້ອງ: $1%",
        "search-redirect": "(ໂອນ $1)",
        "search-relatedarticle": "ກ່ຽວຂ້ອງ",
        "searchrelated": "ກ່ຽວຂ້ອງ",
index fdeafee..7f03841 100644 (file)
        "talkpagelinktext": "Bulelezi",
        "specialpage": "Petulo Zwenti",
        "personaltools": "Solume sisebelisoni",
-       "postcomment": "Bulelezi mulumiwa",
        "articlepage": "Kamukile petulo",
        "talk": "Bulelezi",
        "views": "Kamukile",
        "yourdomainname": "Zwa domeni:",
        "login": "Menuhile",
        "nav-login-createaccount": "Menuhile / ipupezi sebelu",
-       "loginprompt": "A sa nyembulisize di kukina di menuhile kwa {{SITENAME}}.",
        "userlogin": "Menuhile / ipupezi sebelu",
        "logout": "Ile",
        "userlogout": "Ile",
        "fileuploadsummary": "Lyangutukezi:",
        "filesource": "Ng'i",
        "savefile": "Bulukezi imegi",
-       "uploadedimage": "sa uplodezi \"[[$1]]\"",
-       "overwroteimage": "sa uplodezi nca imegi petuho di \"[[$1]]\"",
        "sourcefilename": "Ng'i di imegi",
        "watchthisupload": "Kentezi bye petulo",
        "upload-file-error": "Interni bufosi",
index 025263c..0a3b528 100644 (file)
        "passwordreset-capture-help": "ار شما ای جعوه نه وارسی بکید. ایمیل و خوئی اوسه که سی کارور کل بیه بوئه بوینیتش.",
        "passwordreset-email": "نشونی ايميل",
        "passwordreset-emailtitle": "جزئیات حساو ها د {{نوم مالگه}}",
+       "passwordreset-emailtext-ip": "یه کسی(شات خوتو، وا تیرنشون آی پی $1) سی د نو زنه کردن رازینه گواردن تو د {{SITENAME}}  درحاست کرده($4).\nسی کاریار «$2» یه گل رازینه گواردن موقتی دروس بیه و و هؤمبراور «$3» ئه.\nار تمارزو تو یه بیه ایسه باید بیایت وامین سامونه و یه گل رازینه گواردن هنی بهاییت\nرازینه گواردن شما د طیل {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\n\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
+       "passwordreset-emailtext-user": "کاریار $1 د {{SITENAME}} د نو زنه کردن رازینه گواردن شمانه د{{SITENAME}} ($4) کرده. {{PLURAL:$3|حساو|حساویا}} کاریاری که هان د هار د وا ای تیرنشون انجومانامه ها د ارتواط:\n\n$2\n\n{{PLURAL:$3|ای رازینه گواردن موقت|ای رازینه گواردنیا موقت}} تا {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
        "passwordreset-emailelement": "نوم کاروری: $1\nپاسورد موقتی: $2",
        "passwordreset-emailsent": "پاسورد هنی سی ایمیل کل بیه.",
        "passwordreset-emailsent-capture": "پاسورد تازه تو د ایمیلتو که د هار نشو دئه بیه کل بیه",
        "nonunicodebrowser": "<strong>زئنار:دووارته نئر شما وا نیسسه یا یونیکد سازگاری ناره.</strong>\nیه گل راحل وه کار گرته بیه سی یه که شما بلگه یا نه وا امنیت ویرایشت بکیت:\nنیسه یا غیر-ASCII  د پایه رازینه یا 16 تایی دتو نشو دئه بوئه.",
        "editingold": "<strong>زئنار:شما داریت یه گل وانئری نا به هنگوم بیه نه سی ای بلگه ویرایشت می کید</strong>\nار شما ونه اماییه بکیت،هر آلشتی که د اول سی ای وانئری انجوم بیه گم بوئه.",
        "yourdiff": "فرخيا",
+       "copyrightwarning": "لطفن د ویرتو با که ایچه فرض بوئه که همه هومیاریا شما وا{{SITENAME}} د شکل «$2» درتیچ بوئن(سی چیا تر روئیت وه $1).\nار نمیهایت که که نیسسه یاتو که فره ویرایشت بینه و دلحا درتیچ بان، د ایچه کلشو نکیت.<br />\nهمچنو شما داریت وه ایما قول میئیت که خوتو ونونن نویسنیته، یا ونه د یه گل سرچشمه آزاد وا بئرکرد همگونی یا چی وه ؤرداشتیته.\n'''کاریایی که حق درتیچسن (copyright) دارن بی صلا کل نکیت!'''",
+       "copyrightwarning2": "لطفن د ویرتو با که ایچه فرض بوئه که همه هومیاریا شما وا{{SITENAME}} د شکل «$2» درتیچ بوئن(سی چیا تر روئیت وه $1).\nار نمیهایت که که نیسسه یاتو که فره ویرایشت بینه و دلحا درتیچ بان، د ایچه کلشو نکیت.<br />\nهمچنو شما داریت وه ایما قول میئیت که خوتو ونونن نویسنیته، یا ونه د یه گل سرچشمه آزاد وا بئرکرد همگونی یا چی وه ؤرداشتیته.\n'''کاریایی که حق درتیچسن (copyright) دارن بی صلا کل نکیت!'''",
        "longpageerror": "<strong>خطا:نیسسه شما  {{جمی:$1|یه کلوبایت|$1 کلوبایت}}  درازی نه دئه، که ونو د بیشرونه انازه{{جمی:$2|یه کلوبایت|$2 کلوبایت}} گپترن.</strong>\nنبوئه وه اماییه با.",
        "readonlywarning": "<strong>زئنار:رسینه گا سی واداشت قلف بیه، سی یه نه که شما ایسه نمی تونیت ویرایشتیاتونه اماییه بکیت.</strong>\nشات شما بحایت که نیسسه خوتونه د جانیا نیسسه ای وردار بدیس بکیت و ونه سی نهاتر اماییه بکیت.\n\nدیوونداری که ونه قلف کرده چنی گوته:$1",
        "protectedpagewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
+       "semiprotectedpagewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
+       "cascadeprotectedwarning": "<strong>زئنار:</strong> ای بلگه",
+       "titleprotectedwarning": "<strong>زئنار:ای بلگه پر و پیم بیه سی یه که[[ویجه:نوم گه حقوق گرو|حقوق ویجه]] باید ونه دروس بکن .</strong>\nآخرین پهرستنومه دئه بیه سی سرچشمه دئن نهااماییه بیه:",
        "templatesused": "{{جمی:$1|چوئه|چوئه یا}}د ای بلگه استفاده بیه:",
        "templatesusedpreview": "{{جمی:$1|چوئه|چوئه یا}}استفاده بیه د ای پیش سیل:",
        "templatesusedsection": "{{جمی:$1|چوئه|چوئه یا}} استفاده بیه د ای بخش:",
        "content-model-text": "متن ساده",
        "content-model-javascript": "جاوا اسكريپت",
        "content-model-css": "سی اس اس",
+       "expensive-parserfunction-warning": "<strong>زئنار:</strong>ای بلگه مینونه دار واحونی دستوریا مئن اشکافت فره ای هئ.\n\nانازه و باید د کمتر با$2 {{جمی:$2|واحونی|واحونیا}}، ایسه {{جمی:$1|$1 واحونی|$1 واحونیا}}ئه.",
        "expensive-parserfunction-category": "بلگه یایی که واحونی پیوندگر خطا گرون فره ای ها دشو",
        "post-expand-template-inclusion-warning": "زنئار قالو شومل انازه ای یه که فره گپه.پاره ای د قالویا نه د بر نگره",
        "post-expand-template-inclusion-category": "بلگیا شومل قالوی ین که انازش د حد اومائه وه در",
        "expansion-depth-exceeded-category-desc": "زیر دسه سی بلگه یایی که د ونو پی یا ووله بیین فره پئشکرد کرده.",
        "expansion-depth-exceeded-warning": "بلگه د پی یا ووله بیین پئشکرد کرد",
        "parser-unstrip-loop-warning": "گردوله د فرمونه Unstrip پیدا بیه",
+       "parser-unstrip-recursion-limit": "د بیشترونه د سرچشمه رئتن د دستور Unstrip واروتر رئتیته($1)",
+       "converter-manual-rule-error": "خطا د قانون دسی زون",
+       "undo-success": "نبوئه ویرایشت نه انجومشیو بکیت.\nلطفا ای فرخی که ها د هار نه وارسی بکیت تا یه کاریه که میهات انجوم بئیت، و اوسه آلشتیا هار نه اماییه بکیت سی یه که خمثی کردن ویرایشت نه انجوم بئیت.",
+       "undo-failure": "سی ری به ری بیئن ای ویرایشت وا ویرایشتیا مینجایی، نبوئه ای ویرایشت نه خومثی بکیت.",
+       "undo-norev": "نبوئه ای ویرایشت نه خومثی بکیت سی یه که یا وجود ناره یا پاکسا بیه.",
+       "undo-nochange": "وه نظر میا که ای ویرایشت د ایسنیا خومثی بیه.",
+       "undo-summary": "خومثی بیئن وانئری وا $1[[ویجه:هومیاریا/$2|$2]] ([[چک چنه کاریار:$2|چک چنه]])",
+       "undo-summary-username-hidden": "خومثی بیئن وانئری $1 وا یه گل کاریار قام بیه",
        "cantcreateaccounttitle": "نبوئه حساو راس بکید",
+       "cantcreateaccount-text": "حساو دروس بیه و ا ای تیرنشون آی پی(<strong>$1</strong>) وه دس ای [[کاریار:$3|$3]] قلف بیه.\n\n\nدلیل دئه بیه وا $3 ها د<em>$2</em>",
+       "cantcreateaccount-range-text": "حساو دروس بیه وا تیرنشون آی پی که د پوشینه '''$1''' ، که وه ئم مینونه دار تیرنشون آی پی شما ئم هئ('''$4''')، وه دس [[کاریار:$3|$3]]قلف بیه.\n\nدلیل دئه بیه وا $3، \"$2\" ئه.",
        "viewpagelogs": "سی ای بلگه بوینتو.",
        "nohistory": "هیچ ویرگار ویرایشتی د ای بلگه نئ.",
        "currentrev": "آخرین دوواره دیئن",
        "rev-deleted-user": "(نوم کاروری جا وه جا بیه)",
        "rev-deleted-event": "(انجوم گر پهرستنومه جا وه جا بیه)",
        "rev-deleted-user-contribs": "[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]",
+       "rev-deleted-text-permission": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+       "rev-suppressed-text-permission": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+       "rev-deleted-text-unhide": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].\nشما  هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+       "rev-suppressed-text-unhide": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما  هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+       "rev-deleted-text-view": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+       "rev-suppressed-text-view": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+       "rev-deleted-no-diff": "شما نمی تونیت ای فرخ نه بونیت سی یه که یه گل د وانئریا <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+       "rev-suppressed-no-diff": "شما نمی تونیت ای فرخ نه بونیت سی یه که یه گل د وانئریا <strong>پاکسا بیه</strong>.",
+       "rev-deleted-unhide-diff": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].\nشما  هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+       "rev-suppressed-unhide-diff": "وانئری ای بلگه <strong>پاکساگری بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما  هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+       "rev-deleted-diff-view": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+       "rev-suppressed-diff-view": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د  [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
        "rev-delundel": "آلشت وضئيت ديئن",
        "rev-showdeleted": "نشو دائن",
        "revisiondelete": "پاکسا کردن/زنه کردن وانئریا",
        "revdelete-nooldid-title": "وانیری تمارزی بیه نامعتوره",
+       "revdelete-nooldid-text": "شما وانئریا حاسنی نه سی انجوم دئن ای کار ره ون تیاری نکردیته، یا وانئریا تیارگر بیه وجود نارن، یا یه که شما میهایت وانئری ایسنی نه قام بکیت.",
        "revdelete-no-file": "فایل مشقص بیه وجود ناره.",
+       "revdelete-show-file-confirm": "شما د دل میهایت که وانئری پاکسا بیه ای جانیا نه بونیت \"<nowiki>$1</nowiki>\" د $2 تا $3؟",
        "revdelete-show-file-submit": "هری",
        "revdelete-selected-text": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
        "revdelete-selected-file": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
+       "logdelete-selected": "{{جمی:$1|پهرستنومه رخ ونیا انتخاو بیه|پهرستنومه رخ ونیا انتخاو بیه}}:",
+       "revdelete-text-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+       "revdelete-text-file": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+       "logdelete-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+       "revdelete-text-others": "دیوونداریا هنی می تونن د مینونه یا قام بیه دسرسی داشتوئن و ونه د نو زنه بکن، مه ر محدودیتیا اضافی میزوکاری بان.",
+       "revdelete-confirm": "لطفن بکید پشت راسی بکیت که میهایت ای کار نه انجوم بیئت، و یه دل بایت که شما نتیجه یا ای کار نه فئمستیته و ای کار نه  مطاوق وا  [[{{MediaWiki:Policy-url}}|the policy]].انجوم می ئیت",
+       "revdelete-suppress-text": "پاکساگری فقط با <strong>تئنا</strong> سی جایایی که هان د هار وه کار گرته بوئه:\n*دونسمنیایی که فره تنادارن\n*دونسمنیا نامناسو شخصی\n*: <em>تیرنشون حونه، شماره تیلیفون،رازینه زایاره ای و چیا تر</em>",
+       "revdelete-legend": "میزونکاری محدودیتیا دیار بیین.",
        "revdelete-hide-text": "متن دوواره دیئن",
        "revdelete-hide-image": "چی یا مئن فایل قام کو",
        "revdelete-hide-name": "آرمون و انجوم گر نه قام بکید",
        "revdelete-hide-comment": "چکسه نه ویرایشت بکید",
        "revdelete-hide-user": "نوم کاروری ویرایشتگر/نشونی آی پی",
+       "revdelete-hide-restricted": "پاکساگری کردن رسینه یا سی دیوونداریا و کسونا تر",
        "revdelete-radio-same": "آلشت نکید",
        "revdelete-radio-set": "قام بیه",
        "revdelete-radio-unset": "دیینی",
+       "revdelete-suppress": "پاکساگری کردن رسینه یا سی دیوونداریا و کسونا تر",
        "revdelete-unsuppress": "محدودیتیانه د وانیریا امباربیه جا وه جا بکید",
        "revdelete-log": "دلیل:",
        "revdelete-submit": "سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو",
        "revdelete-success": "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
        "revdelete-failure": "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
+       "logdelete-success": "<strong>پهرستنومه دیار بیین د خوئی میزونکاری بی.</strong>",
+       "logdelete-failure": "<strong>پهرستنومه دیار بیین نبوئه میزونکاری با.</strong> $1",
        "revdel-restore": "آلشت وضئيت ديئن",
        "pagehist": "ويرگار بلگه",
        "deletedhist": "ویرگار پاکسا بیه",
+       "revdelete-hide-current": "خطا د قام کردن چی که ها د ویرگار $2 ساعت $1: ای نسقه، نسقه ایسنی یه و نبوئه نهوش بکیت.",
+       "revdelete-show-no-access": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: ای نسقه نشون «مئن تنگلا بیئن» داره و شما نمی تونیت وه ش دسرسی داشتویت.",
+       "revdelete-modify-no-access": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: ای نسقه نشون «مئن تنگلا بیئن» داره و شما نمی تونیت وه ش دسرسی داشتویت.",
+       "revdelete-modify-missing": "خطا د قام کردن چی شمارهٔ $1: ای نسقه د رسینه گا نیئش!",
+       "revdelete-no-change": "'''زئنار:''' چی که ها د ویرگا $2 ساعت $1 د دماتر دیاری میزونکاری حاسته بینه داشته.",
+       "revdelete-concurrent-change": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: وه ویر و باور میا که د او گاتی که شما سی آلشت دئن حال و بار وه سعی می کردیته، حال و بارش وه دس کسی تر آلشت دئه بیه.\nلطفن پهرستنومه یا نه وارسی بکیت.",
+       "revdelete-only-restricted": "خطا د قام کردن چیی که ها د ویرگار $2 ساعت $1: شما نیمی تونیت چیانه د ورتیه دیوونداریا قام بکیتو مر یه که یه گل د گزینه یا دیاری کردن هنی نه انتخاو بکیت.",
+       "revdelete-reason-dropdown": "*دلیلیا جاونه سی پاکسا کردن\n** تیه پوشی د حق درتیچ کردن\n** ویر و باور یا دونسمنیا شخصی نامناسو\n** نوم کاریاری نامناسو\n** دونسمنیا فره تنادار",
        "revdelete-otherreason": "دلیل هنی:",
        "revdelete-reasonotherlist": "دلیل هنی",
        "revdelete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
        "revdelete-offender": "نیسنه وانیری:",
+       "suppressionlog": "پهرستنومه پاکسازی",
+       "suppressionlogtext": "د هار یه گل نوم گه ای هئ که مینونه یا پاکسا بیه و قلف بیه  که هان دش د ورتیه دیوونداریا قام بینه.\n[[ویجه:نوم گه قلف بیه|نوم گه قلف بیئنیا]]نه سی نوم گه ایی که انجومکاریا قدقن بیه و قلف بینیا هان دش بونیت.",
        "mergehistory": "ویرگاریا بلگه نه یکی بکید",
        "mergehistory-header": "ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.\nمطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.",
        "mergehistory-box": "دوواره دیئن دوبلگه ای نه سر یک سازی کو:",
        "mergehistory-from": "بلگه سرچشمه:",
        "mergehistory-into": "بلگه مقصد:",
        "mergehistory-list": "ویرگار ویرایشت سر یک سازی بیئنی",
+       "mergehistory-merge": "نسقه یا هاری که د [[:$1]] وه یک شیوسنی وا[[:$2]] هئن.\nستین دگمه یا رادیویی نه به کار به ونیت سی یه که نسقه یایی نه که د گاتی دماتر دروس بینه انتخاو بکیت.\nد ویرتو با که پورسن ری پیوندیا باعث بوئه که ستین وه شکل اولیه خوش ؤرئرده.",
        "mergehistory-go": "ویرایشتیایی که سریک سازی بوئن نشو بیئه",
        "mergehistory-submit": "سر یک سازی دوواره دیئنیا",
        "mergehistory-empty": "هیپ دوواره دیئنی نبوئه یکی سازی بوئه.",
        "mergehistory-success": "$3 {{جمی:$3|وانیری|وانیریا}} د [[:$1]] وه خوئی د [[:$2]] سریک سازی بی.",
        "mergehistory-fail": "سریک سازی ویرگار انجوم نبوئه، لطفن پینیاریا زمون و بلگه نه د نو وارسی بکید.",
+       "mergehistory-fail-toobig": "نبوئه وه یک شیوسن ویرگان انجوم دئه سی یکه وه بیشتر د محدودیت $1 {{PLURAL:$1|نسقه}}جا وه جا موئه.",
        "mergehistory-no-source": "سرچشمه بلگه $1 وجود ناره.",
        "mergehistory-no-destination": "بلگه مقصد $1 وجود ناره.",
        "mergehistory-invalid-source": "نوم ون بلگه سرچشمه با معتور بوئه.",
        "mergelog": "سریک سازی پهرستنومه",
        "pagemerge-logentry": " [[$1]] وا [[$2]] سریک سازی بی (وانیریا که د $3 فره تر هئن)",
        "revertmerge": "بی لوئه",
+       "mergelogpagetext": "شما د هار نوم گه آخرین چیا وه یک شیوسن ویرگار یه بلگه نه د بلگه تر میئنیت.",
        "history-title": "دوواره دیئن ویرگار$1",
        "difference-title": "فرخ مینجا وانیریا \"$1\"",
        "difference-title-multipage": "فرخ مینجا بلگه یا \"$1\" و \"$2\"",
        "showhideselectedversions": "شلک دیئن وانیریا انتخاو بیه نه آلشت بکید",
        "editundo": "رد كردن",
        "diff-empty": "(بی فرق)",
+       "diff-multi-sameuser": "({{PLURAL:$1|یه گل نسقه مینجایی|$1 نسقه یا مینجایی}} وه دس{{PLURAL:$2|کاریاری تر|$2 کاریاریا}} نشو دئه نبیه)",
+       "diff-multi-otherusers": "({{PLURAL:$1|یه گل نسقه مینجایی|$1 نسقه یا مینجایی}} وه دس{{PLURAL:$2|کاریاری تر|$2 کاریاریا}} نشو دئه نبیه)",
        "diff-multi-manyusers": "({{جمی:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{جمی:$2|کارور|کاروریا}} نشو دئه نبیه)",
+       "difference-missing-revision": "{{PLURAL:$2|یه گل ویرایشت|$2 ویرایشت}} د فرق مینجا($1) {{PLURAL:$2|پیدا نبی|پیدا نبینه}}.\n\nشایت بانی جاونه وه وا یه گل ویرگار وه هنگوم نبیه که د یه گل بلگه پاکسا بیه هوم پیوند بیه بوئه.\nشایت جزئیات د   [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log]  پیدا بوئن.",
        "searchresults": "نتيجه يا پی جوری",
        "searchresults-title": "نتيجه يا پی جوری سی \"$1\"",
        "titlematches": "عنوان بلگه مطاوقت داره",
        "search-relatedarticle": "مرتوط",
        "searchrelated": "مرتوط",
        "searchall": "همه",
+       "showingresults": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2'''.",
+       "showingresultsinrange": "نمائشت بیشترونه {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} د هار، شرو د شماره'''$2''' تا شماره '''$3'''.",
        "showingresultsheader": "{{PLURAL:$5|نتيجه '''$1''' د'''$3'''|نتيجه يا '''$1 - $2''' د'''$3'''}} سيli'''$4'''",
        "search-nonefound": "هیژ نتیجه یی سی پی جست تو مطاوقت نکرده",
        "powersearch-legend": "پی جوری پیشبرده",
        "powersearch-togglelabel": "چك كردن:",
        "powersearch-toggleall": "همه",
        "powersearch-togglenone": "هيش كوم",
+       "powersearch-remember": "د ویر داشتن انتخاو سی پی جوریا نهایی",
        "search-external": "پی جوری د در",
+       "searchdisabled": "مئن جوری د {{SITENAME}} کنشتگر نئ.\nموقتاً می تونیت مئن جوری Google نه بونیت وه کار.\nد ویرتو با که نتیجه یایی که د مئن جوری وا او روشت وه دست میان شایت وه روز نبان.",
        "search-error": "یه گل خطا سی اوسنی که پی جوری می کردیت اتفاق افتائه:$1",
        "preferences": "خصوصيات هنی",
        "mypreferences": "خصوصيات هنی",
        "prefs-edits": "شماره ویرایشتا:",
+       "prefsnologintext2": "لطف بکیت بیایت وامین و ترجیحات خوتونه آلشت بئیت.",
        "prefs-skin": "پوست",
        "skin-preview": "پیش سیل",
+       "datedefault": "هیچ ترجیحات دش نئ",
+       "prefs-labs": "گزینشتیا آزمایشتی",
        "prefs-user-pages": "بلگیا كارور",
        "prefs-personal": "پروفایل کارور",
        "prefs-rc": "آلشتیا تازه باو",
        "prefs-watchlist": "سیل برگ",
        "prefs-watchlist-days": "روزیا نه د سیل برگ نشو دئه بو:",
        "prefs-watchlist-days-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
+       "prefs-watchlist-edits": "بیشترونه انازه آلشتیایی که د سیل برگ گپ بیه نشو دئه بیه:",
        "prefs-watchlist-edits-max": "شماره بیشترونه:1000",
+       "prefs-watchlist-token": "نشونه سیل برگ:",
        "prefs-misc": "شيوسن",
        "prefs-resetpass": "پاسورد نه آلشت بكيت",
        "prefs-changeemail": "نشونی ایمیل تو نه آلشت بکید",
        "prefs-email": "چیا هنی انجومانامه",
        "prefs-rendering": "شلک و ری",
        "saveprefs": "اماییه كردن",
+       "restoreprefs": "د نو زنه کردن همه میزونکاریا پیش فرض(د همه جایا)",
        "prefs-editing": "د حالت ويرايشت",
        "rows": "رديفيا:",
        "columns": "ستينا:",
        "searchresultshead": "پی جوری",
+       "stub-threshold": "آستونه ویرایشتیا د یک دیسسه<a href=\"#\" class=\"stub\">ناقص</a> (بایت):",
        "stub-threshold-disabled": "د كار ونن",
        "recentchangesdays": "روزیا آلشتیا تازه باو نه نشو بیه:",
        "recentchangesdays-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
        "recentchangescount": "انازه ویرایشتیایی که دیاری می که:",
        "prefs-help-recentchangescount": "یه شامل آلشتیا تازه،ویرگاریا بلگه و پهرستنومه یا هئ.",
+       "prefs-help-watchlist-token2": "یه یه گل کلیت رازینه دار سی خوارک تیارگه سیل برگه شمانه.\nهر کسی که شما مئشناسیت می تونه سیل برگ شما نه بوحونه،په ونه هومبئری نکیت.[[Special:ResetTokens|ار لازمه ونه آلشت بئیت ایچه نه بپورنیت]].",
        "savedprefs": "ویجه گیا هنی تو اماییه بیه.",
        "timezonelegend": "وخت راساگه",
        "localtime": "وخت ولاتی:",
        "prefs-custom-css": "سی اس اس جاافتائه",
        "prefs-custom-js": "جاوا نیسسه جاافتائه",
        "prefs-common-css-js": " سی اس اس/جاوا اسکریپت بهر بیه سی همه پوسه یا:",
+       "prefs-reset-intro": "شما می تونیت ای بلگه سی د نو زنه کردن ترجیحات خوت وه شکل تیارگه پیش فرض وه کار بوونیت.\nیه ورئشت پذیر نئ.",
        "prefs-emailconfirm-label": "مئکم کردن ایمیل:",
        "youremail": "ايميل:",
        "username": "{{جنس:$1|نوم کاروری}}:",
        "yourrealname": "نوم راستكی:",
        "yourlanguage": "زون:",
        "yourvariant": "محتوا آلشتگر زون:",
+       "prefs-help-variant": "قسه وری انتخاوی شما سی نمائشت مینونه بلگه یا د ای ویکی.",
        "yournick": "امضا تازه:",
+       "prefs-help-signature": "ویر و باوریا نیسسه بیه د بلگه چک چنه باید وا«<nowiki>~~~~</nowiki>» امضا بان؛ ای نشون وه شکل خودانجومی وه امضا شما و مؤر ویرگار تبدیل بوئه.",
+       "badsig": "امضا خؤم بی اعتوار.\nسردیسیا اچ تی ام ال نه وارسی بکیت.",
+       "badsiglength": "امضا شما فره گپه.\nطیل امضا باید کمتر  د $1 {{PLURAL:$1|نیسه}} بوئه.",
        "yourgender": "شما بیشتر میهایت که چه جوری گوته بوئه؟",
        "gender-unknown": "مه میهام چی یی نموئم",
        "gender-male": "وه(پیا) بلگه یا ویکی نه ویرایشت می که",
        "gender-female": "وه(زئنه)بلگه یا ویکی نه ویرایشت می که",
+       "prefs-help-gender": "انجوم دئن ای میزونکاری دل به هاییه.\nنرم افزار سی هشاره درست وه جنسیت و گوتن شما سی کسونا تر د شکل درست وه کار بسن یه گل دستور زون یه نه وه کار می بنه.\nای دونسمنیا سی کل خلک دیارن.",
        "email": "پیومک برقی",
+       "prefs-help-realname": "نوم راستکی دل به حائه.\nار شما ونه وارد بکیت د گات واگردونی وه آرنگیاتو و نسوت دئن ونو وه خوتو د نوم راستکی استفاده بوئه.",
        "prefs-help-email": "نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت",
        "prefs-help-email-others": "شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.\nنشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.",
        "prefs-help-email-required": "نشونی ایمیل لازم هئ.",
        "prefs-displaywatchlist": "گزینه یا نه نشو بیه",
        "prefs-tokenwatchlist": "نشو",
        "prefs-diffs": "فرخیا",
+       "prefs-help-prefershttps": "کارگرایی ای ترجیح نها وامین اومائن نهایی شما وه کار گرته بوئه.",
+       "prefs-tabs-navigation-hint": "نکته: شما می تونید د کلیتیا لادیار کن چپ و راست نه سی رئتن مین تبیا که هان د نوم گه تبیا وه کار بونیت.",
        "email-address-validity-valid": "نشونی ایمیل دیار بیه خوئه",
        "email-address-validity-invalid": "یه گل نشونی ایمیل خو وارد بکید",
        "userrights": "حقوق دیوونداری کاریار",
        "userrights-lookup-user": "دسه یا کاروری نه دیوون داری بکیت",
        "userrights-user-editname": "نوم كاروری ته وارد كو",
        "editusergroup": "ویرایشت گرویا کاروری",
+       "editinguser": "آلشت دئن حقوق کاریاری کاریار'''[[کاریار:$1|$1]]''' $2",
        "userrights-editusergroup": "ویرایشت گرویا کاروری",
        "saveusergroups": "اماییه کردن گرویا کاریاری",
        "userrights-groupsmember": "اندوم:",
+       "userrights-groupsmember-auto": "اندوم ضمنی:",
+       "userrights-groups-help": "شما می تونیت دسه یای که ای کاریار ها دشو آلشت بئیتو:\n* جعوه نشودار وه ای مئنیه که کاریار ها د او دسه.\n* جعوه بی نشون وه ای مئنیه که کاریار د او دسه نئ.\n* نشون* د ای مئنیه که ار شما او دسه نه اضاف بکیتو د نهاتر نموئه ؤردارینش یا برعسگش.",
        "userrights-reason": "دليل:",
        "userrights-no-interwiki": "شما سی ویرایشت حقوق کارور د ویکی یا هنی دسرسی ناریت.",
        "userrights-nodatabase": "پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.",
+       "userrights-nologin": "شما باید وا یه گل حساو کاریاری دیووندار [[Special:UserLogin|روئیت وامین ]] تا تونستوییت حقوق کاریاری کاریار نه گماشته کاری بکیت.",
        "userrights-notallowed": "شما سی اضاف کردن  حقوق کارور یا ورداشتنش دسرسی ناریت.",
        "userrights-changeable-col": "گرویایی که شما تونیت ویرایشت بکید",
        "userrights-unchangeable-col": "گرویایی که شما نتونیت ویرایشت بکید",
+       "userrights-conflict": "تعارض دسرسیا کاریاری! لطف بکیت یه گل وارسی انجوم بئیت و آلشتانه پشت راس بکیت.",
+       "userrights-removed-self": "شما د خوئی حقوق خوتونه ؤرداشتیته، چی یه که مثلا شما تر نمی تونیت وه ای بلگه دسرسی داشتویت.",
        "group": "گرو",
        "group-user": "کاروریا",
        "group-autoconfirmed": "کاروریا خودوادار",
        "group-bot": "بتیا",
        "group-sysop": "مدیریا",
        "group-bureaucrat": "بروکراتیا",
+       "group-suppress": "تیه پایا",
        "group-all": "(همه)",
        "group-user-member": "{{جنس:$1|کارور}}",
        "group-autoconfirmed-member": "{{جنس:$1|کاریار خودانجومکار}}",
        "group-bot-member": "{{حنس:$1|بوت}}",
        "group-sysop-member": "{{جنس:$1|مدیر}}",
        "group-bureaucrat-member": "{{جنس:$1|بروکرات}}",
+       "group-suppress-member": "{{جنس:$1|تیه پا}}",
        "grouppage-user": "{{ns:project}}:کاروریا",
        "grouppage-autoconfirmed": "{{ns:project}}:کاریار خودانجومکار",
        "grouppage-bot": "{{ns:project}}:بوت یا",
        "grouppage-sysop": "{{ns:project}}:دیوونداریا",
        "grouppage-bureaucrat": "{{ns:project}}:دیوونداریا",
+       "grouppage-suppress": "{{ns:project}}:تیه پا",
        "right-read": "حنن بلگیا",
        "right-edit": "ویرایشت بلگیا",
        "right-createpage": "بلگه یا نه راس بکیت(ونو که دشو بلگه یا چک چنه نئ)",
        "right-createtalk": "بلگه یا چک چنه نه راس بکید",
        "right-createaccount": "یه گل حساو کاروری تازه راس بکیت",
+       "right-minoredit": "نشودار کردن همه ویرایشتیا چی حیرده",
        "right-move": "بلگه یا جا وه جا کو",
        "right-move-subpages": "بلگه یا و زیر بلگه یا شونه جا وه جا کو",
        "right-move-rootuserpages": "بلگه یا ریشه ای کارور نه جا وه جا کو",
        "right-movefile": "فایلیا نه جا وه جا کو",
        "right-suppressredirect": "اوسه که بلگه یا د بین رئتنه هیچ واگردونی سی بلگه یا سرچشمه دروس نبیه",
        "right-upload": "سوار کردن فايلا",
+       "right-reupload": "سوارکرد هنی جانیایی که دماتر بئیشه",
+       "right-reupload-own": "سوارکرد هنی جانیایی که د دماتر وه دس همو کاریار سوارکرد بیه.",
+       "right-reupload-shared": "باطل‌کردن ولات نشینی جانیایا هومبئر بیه",
        "right-upload_by_url": "سوار کرد فایلیا د یو آر ال",
+       "right-purge": "پاک کردن مینجاگر بلگه بی یه که بلگه پشت راس کردن دیاری بکه",
+       "right-autoconfirmed": "د محدودیتیا سرعت آی پی-پایه کارگرایی ناره",
+       "right-bot": "باور بیه چی یه گل پردازشت خودانجوم",
+       "right-nominornewtalk": "حیرده ویرایشت بلگه یا چک چنه وه شکلی که باعث گوتن پیغوم تازه نبوئه.",
+       "right-apihighlimits": "سخم بالاتر د وه کار بسن API",
        "right-writeapi": "د نیسنن ای پی آی استفاده بکید",
        "right-delete": "بلگیا نه پاکسا کو",
        "right-bigdelete": "بلگه یایی که ویرگار گپی دارن پاکسا بکیت",
+       "right-deletelogentry": "پاکسا کردن و ناپاکسا کردن داده واریایی ویجه ای د پهرستنومه",
+       "right-deleterevision": "پاکساکردن و ناپاکساکردن وانئریا ویجه ای د بلگه یا",
+       "right-deletedhistory": "دیئن چیا پاکسا بیه د ویرگار، بی یه که نیسسه ونونه بؤنیت.",
+       "right-deletedtext": "دیئن نیسسه پاکسا بیه و آلشتیایی که هان مینجا وانئریا پاکسا بیه",
        "right-browsearchive": "بلگه یا پاک بیه نه پی جوری کو",
        "right-undelete": "ای بلگه نه حذف نكيد",
+       "right-suppressrevision": "دیئن و زنه کردن وانئریایی بلگه یایی که د دس کاریاریا نهو بینه",
+       "right-viewsuppressed": "دیئن وانئریایی که د تیه هر کاریاری قام بیه",
        "right-suppressionlog": "دیئن پهرستنومه یا خصوصی",
        "right-block": "کاریاریا هنی د ویرایشت منع بوئن",
        "right-blockemail": "کاریار نه د کل کردن انجومانامه منع کو",
+       "right-hideuser": "قلف کردن یه گل نوم کاریاری،قام کردن وه د ور تیه کل خلک",
+       "right-ipblock-exempt": "کارگرایی نگرتن د قطع دسرسیا آی پی، خودانجوم یا فاصله دار",
+       "right-proxyunbannable": "کارگرایی نگرتن د قطع دسرسی خودکار پروکسیا",
        "right-unblockself": "خوشه قلف نکید",
+       "right-protect": "آلشت دئن انازه پر و پیم کردن بلگه یا و ویرایشت بلگه یا پر و پیم بیه تافی",
+       "right-editprotected": "ویرایشت بلگه یا پر و پیم بیه چی «{{int:protect-level-sysop}}»",
+       "right-editsemiprotected": "ویرایشت بلگه یا پر و پیم بیه چی «{{int:protect-level-autoconfirmed}}»",
        "right-editinterface": "راوط کارور نه ویرایشت کو",
        "right-editusercssjs": "فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو",
        "right-editusercss": "فایلیا سی اس اس کاروریا هنی نه ویرایشت کو",
        "right-editmyusercss": "فایلیا سی اس اس کارور خوتو نه ویرایشت کو",
        "right-editmyuserjs": "فایلیا جاوا اسکریپت کارور خوتو نه ویرایشت کو",
        "right-viewmywatchlist": "سیل برگ خوتونه بوینیت",
+       "right-editmywatchlist": "سیل برگ خوتونه ویرایشت بکیت. د ویرتو با که پاره ای د انجومکاریا بی دسرسی ئم می تونن ای بلگه یا نه اضافه بکن.",
        "right-viewmyprivateinfo": "دونسمنیا شصقی خوتونه بوینیت(چی نشونی ایمیل،نوم راستکی)",
        "right-editmyprivateinfo": "دونسمنیا شصقی خوتونه ویرایشت بکید(چی نشونی ایمیل،نوم راستکی)",
        "right-editmyoptions": "اولویتیا تونه ویرایشت بکیت",
+       "right-rollback": "چواشه کردن سریع ویرایشتیا آخری کاریاری که یه بلگه ویجه نه ویرایشت دئه",
+       "right-markbotedits": "نشودار کردن ویرایشتیا چواشه بیه چی ویرایشتیا یه گل بات",
+       "right-noratelimit": "کارگرا نبیئن د محدودیت سرعت",
+       "right-import": "بلگه یا نه د ویکی هنی وارد بکید",
        "right-importupload": "دئن بلگه یا د یه گل جانیا سوار بیه",
+       "right-patrol": "سردیاری کردن د ویرایشتیا کسونا تر",
+       "right-autopatrol": "سردیاری کردن خودانجوم د ویرایشتیا خوش",
+       "right-patrolmarks": "دیئن سردیس سردیاری کردن د آلشتیا ایسنی",
        "right-unwatchedpages": "دیئن نوم گه بلگه یا دیئه نبیه",
+       "right-mergehistory": "وه یک شیوسن ویرگار ای بلگه",
        "right-userrights": "حقوق همه کاروریانه ویرایشت بکید",
        "right-userrights-interwiki": "حقوق همه کاروریانه د ویکی یا هنی ویرایشت بکید",
        "right-siteadmin": "پاگا دونسمنی نه قلف بکید یا نکید",
+       "right-override-export-depth": "وه در دئن بلگه یایی که بلگه یا هوم پیوند بیه تا پی یا 5 ها دشو",
        "right-sendemail": "سی کاروریا هنی ایمیل کل بکید",
        "right-passwordreset": "پاسورد ایمیلیا د نو دئه بیه نه بوینیت",
        "newuserlogpage": "راس بیه وا کارور",
        "newuserlogpagetext": "یه پهرستنومه راس بیئن کارور هئ.",
+       "rightslog": "پهرستنومه حقوق کاریار",
        "rightslogtext": "یه پهرستنومه آلشتیا حقوق کارور هئ.",
        "action-read": "ای بلگه نه بحون",
        "action-edit": "ای بلگه نه ويرايشت بكيد",
        "action-move": "لی بلگه جا وه جا کو",
        "action-move-subpages": "ای بلگه و زیر بلگه یاشه جا وه جا بکید",
        "action-move-rootuserpages": "بلگه یا ریشه ای کارور نه جا وه جا بکید",
+       "action-move-categorypages": "جا وه جا کردن دسه بلگه یا",
        "action-movefile": "ای فایل جا وه جا بکید",
        "action-upload": "ای فایل سوار بکید",
+       "action-reupload": "نیسئین ری جانیا ایسنی",
+       "action-reupload-shared": "باطل کردن ای جانیا ری یه گل گنجینه هومبئر",
        "action-upload_by_url": "ای فایله نه د یو آر ال سوار بکید",
        "action-writeapi": "د نیسنن ای پی آی استفاده بکید",
        "action-delete": "ای بلگه نه پاکسا کو",
        "action-deletedhistory": "ویرگار پاکسا بیه ای بلگه نه بوینیت",
        "action-browsearchive": "بلگه یا پاک بیه نه پی جوری بکید",
        "action-undelete": "ای بلگه نه پاک نکو",
+       "action-suppressrevision": "وانئری و زنه کردن وانئریا پاک بیه",
        "action-suppressionlog": "ای پهرستنومه خصوصی نه بوینیت",
        "action-block": "ای کارور نه د ویرایشت کردن منع کو",
        "action-protect": "ریترازیا حفاظت د ای بلگه نه آلشت بکید",
+       "action-rollback": "چواشه کردن سریع ویرایشتیا آخری کاریاری که یه بلگه ویجه نه ویرایشت دئه",
        "action-import": "بلگه یا نه د ویکی هنی وارد بکید",
        "action-importupload": "بلگه یا نه د فایل سوار بیه وارد بکید",
+       "action-patrol": "سردیاری کردن د ویرایشتیا کسونا تر",
+       "action-autopatrol": "سردیاری کردن د ویرایشتیا خوتو",
        "action-unwatchedpages": "دیئن نوم گه بلگه یا دیئه نبیه",
+       "action-mergehistory": "وه یک شیوسن ویرگار ای بلگه",
        "action-userrights": "حقوق همه کاروریانه ویرایشت بکید",
        "action-userrights-interwiki": "حقوق همه کاروریانه د ویکی یا هنی ویرایشت بکید",
        "action-siteadmin": "پاگا دونسمنی نه قلف بکید یا نکید",
        "enhancedrc-history": "ويرگار",
        "recentchanges": "تغيريا تازه",
        "recentchanges-legend": "گزينه يا آلشتيا تازه",
+       "recentchanges-summary": "دو بیشتر آلشتیا تازباو نه د ویکی نه د ای بلگه پیگری کو.",
+       "recentchanges-noresult": "هیژ آلشتی د طیل دوره دیار بیه وا ای معیاریا یکی نبی.",
        "recentchanges-feed-description": "دو بیشتر آلشتیا تازباو نه د ویکی که ها د هوال حون پیگری کو.",
        "recentchanges-label-newpage": "ای ويرايشت يه بلگه تازه راس كرده",
        "recentchanges-label-minor": "يه ويرايشت كؤچكيه",
        "upload": "بلم گير كردن فايلا",
        "uploadbtn": "سوار کردن فایل",
        "reuploaddesc": "سوار کردن نه انجوم شیو بکیت و د ورئردیت جابلگ سوارکرد",
+       "upload-tryagain": "کل کردن توضیحیا آلشت دئیه بیه جانیا",
        "uploadnologin": "وارد نبیه",
        "uploadnologintext": "لطفن $1 سی سوارکرد جانیایا.",
+       "upload_directory_missing": "نشونگه سوارکرد ($1) وجود ناره و نبوئه دروسش بکی.",
+       "upload_directory_read_only": "نشونگه سوارکرد($1) د لا سرور قاول نیسنن نئ.",
        "uploaderror": "خطا د سوار کردن",
+       "upload-recreate-warning": "'''زئنار: جانیایی که وه ای نومه یا پاکسا بیه یا جا وه جا بیه.'''\n\nسی رائتی، نومگه پاکساگری و جا وه جا کردن ای بلگه ها د هار:",
+       "uploadtext": "دسی دئین جانیایی که  د دماتر سوار بینه روئیت وه  [[Special:FileList|نوم گه جانیایا]] . د نو سوارکردن  د [[Special:Log/upload|نوم گه سوارکردیا]] و پاکساگری جانیایا د [[Special:Log/delete|deletion log]] جاگئر موئه.\n\nنها یه که یه گل جانیانه سوار کردیت می تونیت د سه شکل هاری وه نه د بلگه یا وه کار بونیت:\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' سی به کار بسن نسقه کامل جانیا\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' سی به کار بسن یه گل نسقه 200 پیکسلی  د جانیایی که ها د مینه یه گل جعوه  که ها د لا چپ نیسسه که د وه عبارت alt text چی توضیح وه کار بسه بیه\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' سی دروس کردن یه گل هوم پیوند سرراست وه جانیا بی یه که جانیا دیاری بکه نوم بلگه هاری سی سوارکرد جانیایا تازه استفاده بکیت.",
        "upload-permitted": "جورا جانیا مجاز:$1.",
        "upload-preferred": "جورا جانیا مجاز:$1.",
        "upload-prohibited": "جورا جانیا مجاز:$1.",
        "uploadlogpage": "سوارکرد",
+       "uploadlogpagetext": "نومگه هاری یه گل نومگه د آخری سوارکرد جانیایا هئ.\nسی د نو سیل کردن[[Special:NewFiles|عسگدونی جانیایا تازه نه]] به ونیت.",
        "filename": "نوم فایل",
        "filedesc": "چكسته",
        "fileuploadsummary": "چکسه",
        "filereuploadsummary": "آلشتیا فایل:",
        "filestatus": "حال و بال کپی رایت",
        "filesource": "سرچشمه:",
+       "ignorewarning": "تیه پوشی د زئنار و اماییه کردن جانیا",
        "ignorewarnings": "د هر زنهار تیه پوشی کو",
+       "minlength1": "نوم جانیا باید حداقل یه حرف داشتوئه.",
+       "illegalfilename": "نوم جانیا «$1» د وه گیرنه نیسه یایی که د نوم بلگه یا صاحاو اجاره نیئن.\nلطفن نوم جانیا نه آلشت بئیت و ونه د نو نوم بنیت.",
        "filename-toolong": "نوم جانیا شایت گپتر د 240 بایت نبا.",
        "badfilename": "نوم جانیا د \"$1\" آلشت بیه.",
+       "filetype-mime-mismatch": "دماون جانیا «$1.‎» وا نوع MIME وه($2) یکی نئ.",
+       "filetype-badmime": "جانیایی که نوع MIME ونو $1 بوئه سی سوارکرد اجازه دار نیئن.",
        "empty-file": "فایلی که دئی ته حالی بیه.",
        "file-too-large": "فایلی که دئی ته فره گپ بی.",
        "filename-tooshort": "نوم فایل فره کؤچکه.",
        "sourceurl": "سرچشمه يو آر ال:",
        "destfilename": "نوم فایل مقصد:",
        "upload-maxfilesize": "بیشترونه انازه جانیا:$1",
+       "upload-description": "شرح جانیا",
+       "upload-options": "گزینه یا سوارکرد",
        "watchthisupload": "ای جانیا نه بوینیت",
        "upload-success-subj": "سوار کرد خوش سرانجوم",
        "upload-success-msg": "سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]",
        "upload-too-many-redirects": "ای یو آر ال د ورگیرنه واگردونیا فرئی هئ",
        "upload-http-error": "یه گل خطا اچ تی تی پی پیش اومائه:$1",
        "upload-copy-upload-invalid-domain": "ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.",
+       "backend-fail-stream": "نبوئه جانیا\"$1\" کل بوئه.",
+       "backend-fail-backup": "نبوئه سی \"$1\" پشتجا گرت.",
        "backend-fail-notexists": "فایل $1 وجود ناره.",
        "backend-fail-invalidpath": "\"$1\" ره خوئی سی امائیه کردن نئ.",
        "backend-fail-delete": "نبوئه جانیا $1 پاکسا بوئه",
        "backend-fail-read": "نبوئه جانیا\"$1\" حنه بوئه.",
        "backend-fail-create": "نبوئه د جانیا\"$1\" نوشته با.",
        "lockmanager-fail-closelock": "نبوئه قلف جانیا سی \"$1\" بسه بوئه.",
+       "lockmanager-fail-acquirelock": "نبوئه سی «$1» قلف وه دس اورد.",
        "lockmanager-fail-openlock": "نبوئه قلف جانیا سی \"$1\" وا بوئه.",
+       "lockmanager-fail-releaselock": "نبوئه قلف «$1» نه وا کرد .",
+       "lockmanager-fail-svr-acquire": "نبوئه سی «$1» قلف وه دس اورد.",
+       "zip-wrong-format": "جانیا تیار بیه جانیا زیپ نئ.",
        "uploadstash": "اماییه جا سوارکرد",
        "uploadstash-clear": "پاک کردن جانیایا اماییه بیه",
        "uploadstash-nofiles": "شما هیژ جانیا اماییه بیه ای ناریت.",
+       "uploadstash-errclear": "پاک کردن جانیایا د خوئی شکل نگرت.",
        "uploadstash-refresh": "نومه گه جانیایا نه د نو تازه کو",
        "invalid-chunk-offset": "جا وه جایی نامعتور برشت",
        "img-auth-accessdenied": "دسرسی منع بی",
        "img-auth-nofile": "فایل $1 وجود ناره.",
+       "img-auth-streaming": "د حال کل کردن \"$1\".",
        "http-invalid-url": "یو آر ال نامعتور:$1",
        "http-read-error": "خطا د حنن اچ تی تی پی.",
+       "http-timed-out": "گات حاستن اچ تی تی پی وه سر اوما.",
+       "http-curl-error": "خطا د اوردن تیرنشون اینترنتی: $1",
+       "http-bad-status": "د گات حاستن اچ تی تی پی  خطایی پیش اوما: $1 $2",
        "upload-curl-error6": "نبوئه د یو آر ال برسیت",
        "upload-curl-error28": "تموم بیئن مئلت سی سوار کرد",
        "license": "ليانس دار بيئن",
        "license-header": "د شكل ليسانس دار بيئن",
        "nolicense": "هیچی انتخاو نبیه",
+       "licenses-edit": "گزینه یا مجوز ویرایشت",
        "license-nopreview": "(پیش سیل د دسرس نئ)",
+       "upload_source_url": "(شما یه گل جانیا د یه گل یو آر ال د دسرس خلک و معتور ورچئ کردیته)",
        "upload_source_file": "(یه گل جانیا د انجومیار تو انتخاو بکیت)",
        "listfiles-delete": "پاکسا کردن",
        "listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
        "listfiles_name": "نوم",
        "listfiles_user": "کاریار",
        "listfiles_size": "انازه",
+       "listfiles_description": "شرح",
        "listfiles_count": "نسقیا",
        "listfiles-show-all": "شومل نسقه یا نهاتری عسگیا",
        "listfiles-latestversion": "نسقه تازه",
        "filepage-nofile": "چنو فایلی وا ای نوم نئ.",
        "uploadnewversion-linktext": "یه گل نسقه تازه د ای جانیا سوار بکید",
        "shared-repo-from": "د $1",
+       "shared-repo": "یه گنجینه هومبئر",
+       "upload-disallowed-here": "شما نمی تونیت ای جانیانه د نو سوار بکیت",
        "filerevert": "د سرگرتن سی $1",
        "filerevert-legend": "د سرگرتن جانیا",
        "filerevert-comment": "دليل:",
        "filedelete-edit-reasonlist": "دلیلیا پاک کردنه نه ویرایشت بکید",
        "filedelete-maintenance-title": "نبوئه ای فایل پاکسا بوئه",
        "mimesearch": "پی جوری ام آی ام ای",
+       "mimetype": "نوع MIME:",
        "download": "گرتن",
        "unwatchedpages": "بلگه یا ندئیه بیه",
        "listredirects": "نوم گه واگردونیا",
        "randomincategory": "بلگه بختی د ای دسه",
        "randomincategory-invalidcategory": "\"$1\"  نوم دسه معتوری نئ.",
        "randomincategory-nopages": "هیچ بلگه ای د ای  [[:دسه نئ:$1|$1]] دسه.",
-       "randomincategory-selectcategory-submit": "رو",
+       "randomincategory-category": "دسه:",
+       "randomincategory-legend": "بلگه بختی د ای دسه",
        "randomredirect": "واگردونی بختکی",
        "statistics": "آماريا",
        "statistics-header-pages": "بلگه آماریا",
        "statistics-users": "ثوت نام بیه [[ویجه:نوم گه کاریاریا|کاریاریا]]",
        "statistics-users-active": "کاروریا کارکو",
        "statistics-mostpopular": "بلگه یایی که بیشتر دیئه بینه",
+       "pageswithprop": "بلگه یایی که خاصیت صفحه ها دشو",
+       "pageswithprop-legend": "بلگه یایی که خاصیت صفحه ها دشو",
+       "pageswithprop-prop": "نوم خاصیت:",
        "pageswithprop-submit": "رو",
        "doubleredirects": "واگردونیا دوتایی",
        "double-redirect-fixed-move": "[[$1]]جا وه جا بیه .\nوه خودکارونه وه روز بیه و ایسه وه د[[$2]] واگردونی بیه.",
        "brokenredirects-edit": "ویرایشت",
        "brokenredirects-delete": "پاكسا كردن",
        "withoutinterwiki": "بلگه یایی که هوم پیوند زون نارن",
+       "withoutinterwiki-summary": "بلگه یا هاری وه زون نسقه یا زونا تر هوم پیوند نبیه.",
        "withoutinterwiki-legend": "پیشون",
        "withoutinterwiki-submit": "نشون دائن",
        "fewestrevisions": "بلگه یایی که کمتری وانئری نه دارن",
        "movethispage": "ای بگله نه جا وه جا كو",
        "pager-newer-n": "{{جمی:$1|وانها تر 1وانها تر $1}}",
        "pager-older-n": "{{جمی:$1|گپسالتر 1|گپسالتر $1}}",
+       "suppress": "پائیئن",
        "booksources": "سرچشمه يل كتاو",
        "booksources-search-legend": "پی جوری سی سرچشمه یا کتاو",
        "booksources-go": "رو",
        "allpages-hide-redirects": "واگردونیا قام بیه",
        "cachedspecial-refresh-now": "دیئن آخری.",
        "categories": "دسه يا",
+       "categoriesfrom": "دسه یایی که د شرو بینه نشو بیه:",
        "special-categories-sort-count": "سرجاخودگری د اساس شمارشت",
        "special-categories-sort-abc": "سرجاخودگری د اساس الفبا",
        "deletedcontributions": "هومیاریا پاکسا بیه کارور",
        "deletereasonotherlist": "دلیل هنی",
        "deletereason-dropdown": "* دلیلیا پاکسا کردن رسم بیه\n** اسپم\n** خراوکاری\n** رعایت نبین کپی رایت\n** درحاست نیسنه\n** نهاورگشت شکست حرده",
        "delete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
+       "rollback": "چواشه کردن ویرایشتیا",
+       "rollback_short": "چواشه کردن",
        "rollbacklink": "ورگشتن",
+       "rollbackfailed": "چواشه کردن د خوئی انجوم نبی",
+       "editcomment": "ویرایشت چکشه وه: \"''$1''\" بی.",
        "sessionfailure-title": "شکست حردن نشینگه",
        "protectlogpage": "حفاظت کردن",
        "protectedarticle": "حفاظت بيه [[$1]]",
        "restriction-move": "جاوه جا بوئيت",
        "restriction-create": "راس كردن",
        "restriction-upload": "سوار کرد",
+       "restriction-level-sysop": "کلا پر و پیم بیه",
+       "restriction-level-autoconfirmed": "نصم و نیمه پر و پیم بیه",
        "restriction-level-all": "هر ریترازی",
+       "undelete": "دیئن بلگه یا پاکسا بیه",
+       "undeletepage": "دیئن و  ؤرگشتن بلگه یا پاکسا بیه",
+       "viewdeletedpage": "دیئن بلگه یا پاکسا بیه",
        "undeletelink": "بوين/دوواره آماده با",
        "undeleteviewlink": "ديئن",
        "undeletecomment": "دليل:",
        "cannotundelete": "زنه کردن انجوم نبی:$1",
        "undelete-search-title": "بلگه یا پاکسا بیه نه پی جوری کو",
+       "undelete-search-box": "پی جوری بلگه یا پاکسا بیه",
+       "undelete-search-prefix": "بلگه یایی که وا شرو بیه نشو بیه:",
        "undelete-search-submit": "پی جوری",
        "undelete-error-short": "خطا پاک نبیئن جانیا:$1",
        "undelete-show-file-submit": "هری",
        "month": "د ما(یا زیتر)",
        "year": "د سال",
        "sp-contributions-newbies": "فقط هومیاری یایی که د حساو تازه بیه نشون بئه",
+       "sp-contributions-newbies-sub": "سی حساویا تازه",
+       "sp-contributions-newbies-title": "هومیاریا کاریار سی حساویا تازه",
        "sp-contributions-blocklog": "قلف",
+       "sp-contributions-suppresslog": "پاکساگری کردن هومیاریا کاریار",
+       "sp-contributions-deleted": "هومیاریا پاکسا بیه کاریار",
        "sp-contributions-uploads": "سواركرديا",
        "sp-contributions-logs": "نیسنن رخ ونیا",
        "sp-contributions-talk": "چك چنه",
+       "sp-contributions-userrights": "دیوونداری حقوق کاریار",
        "sp-contributions-search": "سی هومیاریا پی جور با",
        "sp-contributions-username": "نوم نشون آی پی يا نوم كاروری:",
        "sp-contributions-toponly": "فقط ویرایشتیایی که جزئه آخرین دوواره دیئن هئین نشو بیه",
        "ipboptions": "2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,بی حساو:بی حساو",
        "ipbhidename": "نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو",
        "ipb-disableusertalk": "نها ای کاریار نه اوسه که میها د بلگه چک چنه ش ویرایشت بکه و وه قلف بیه بئر",
+       "ipb-confirm": "پشت راس کردن قلف",
+       "badipaddress": "تیرنشون نامعتور آی پی",
+       "blockipsuccesssub": "قلف کردن د خوئی انجوم بی",
        "unblockip": "کارور منع نبیه",
+       "ipusubmit": "ای قلف نه ؤردار",
        "blocklist": "كاروريا منع بيه",
        "ipblocklist": "كاروريا منع بيه",
        "ipblocklist-legend": "یه گل کارور منع بیه بجوریت",
        "blocklogentry": " [[$1]] وا یه گل وخت تموم بیئن $2 و $3  قلف بیه",
        "block-log-flags-nocreate": "حساو راس کردن عاجز بیه.",
        "block-log-flags-nousertalk": "نبوئه بلگه چک چنه خوتونه ویرایشت بکید",
+       "ip_range_invalid": "پوشگر نامعتور آی پی",
        "proxyblocker": "قلف کننه پروکسی",
        "lockdb": "قلف کردن رسینه گا",
+       "unlockdb": "رسینه گا قلف نبیه",
        "unlockconfirm": "هره، مه واقعند میهام که رسینه گا وا بوئه.",
        "lockbtn": "قلف کردن رسینه گا",
        "unlockbtn": "رسینه گا قلف نبیه",
        "lockdbsuccesssub": "رسینه گا د خوئی قلف بیه",
+       "unlockdbsuccesssub": "قلف رسینه گا ؤرداشته بیه",
        "move-page": "$1 جا وه جا کو",
        "move-page-legend": "بلگه نه جا وه جا کو",
+       "movearticle": "جا وه جا کردن بلگه:",
        "movenotallowed": "شما وه جا وه جا کردن بلگه دسرسی ناریت",
        "movenotallowedfile": "شما وه جا وه جا کردن جانیایا دسرسی ناریت",
        "movepagebtn": "بلگه جا وه جا کو",
        "tooltip-n-help": "جاگه سی فهمسن",
        "tooltip-t-whatlinkshere": "سيائه تمؤم بلگيایی كه ايچه چسب ون دارن",
        "tooltip-t-recentchangeslinked": "تغيريا تازه باو مئن بلگيايي كه د ای بلگه چسب وند بيئنه",
+       "tooltip-feed-rss": "هوال حون آر اس اس سی ای بلگه",
        "tooltip-feed-atom": "تغذيه كؤچك سی ای بلگه",
        "tooltip-t-contributions": "یه نوم گه د هومیاریا ای کارور",
        "tooltip-t-emailuser": "سی ای كارور ايميل كل كو",
        "metadata": "داديا  فره گپ",
        "metadata-help": "ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه",
        "metadata-fields": "رشته یا گپ دونسمنیا که د ای پیغوم نوم ون بینه شومل بلگه عسگ ن که وختی که جدول گپ دونسمنیا وا بوئه نشون دئیه بوئن.\nچی یا هنی سی یه که پیش فرضن قام بوئن.\n*راست کو\n*مدل\n*دم وخت اصل\n*وخت آشگار\n*اف ان شماره\n*ایزو نرخ من سرعت\n*فوکالنس\n*هنرمن\n*کپی رایت\n*حالت جی پی اس \n*جی پی اس گپ حالت\n*جی پی اس همه حالت",
+       "exif-planarconfiguration": "سرجایک کردن رسینه",
        "exif-datetime": "آلشت دئن وخت و دمون جانیا",
        "exif-make": "سازنه دیربین",
        "exif-usercomment": "ویر و باوریا کارور",
        "exif-filesource": "سرچشمه جانیا",
        "exif-gpstimestamp": "وخت جی پی اس (ساعت اتمی)",
        "exif-jpegfilecomment": "ویر و باور فایل پی ان جی",
+       "exif-countrycodecreated": "رازینه سی ولاتی که عسگ د وه گرته بیه",
        "exif-citycreated": "شهری که عسگ دش گرته بیه",
+       "exif-countrycodedest": "رازینه سی ولات نمائشت دئه بیه",
        "exif-citydest": "شهر دیار بیه",
        "exif-fixtureidentifier": "نوم ثاوت",
        "exif-languagecode": "زون",
        "watchlistall2": "همه شو",
        "namespacesall": "همه شو",
        "monthsall": "همه",
+       "confirmemail_send": "کل کردن رازینه پشت راس کاری",
        "imgmultigo": "رؤ!",
        "img-lang-default": "(زون پیش زمینه)",
        "img-lang-go": "رو",
        "specialpages-group-media": "گزارشتیا رسانه و سوارکردیا",
        "specialpages-group-users": "کاروریا و حقوق",
        "specialpages-group-pages": "نوم گه بلگه یا",
+       "specialpages-group-wiki": "رسینه و اوزاریا",
        "specialpages-group-redirects": "بلگه ویجه واگردونی بیه",
        "external_image_whitelist": "یه خط نه ول بکید چی وه<pre>",
        "tag-filter": "فيلتر [[Special:Tags|Tag]]:",
        "revdelete-uname-hid": "نوم کاروری قام بیه",
        "revdelete-content-unhid": "مینونه قام نبیه",
        "revdelete-uname-unhid": "نوم کاروری قام نبیه",
+       "feedback-submit": "کل کردن نهاهوال حون",
        "feedback-close": "انجوم بی",
        "searchsuggest-search": "پی جوری",
        "api-error-badaccess-groups": "شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.",
        "api-error-mustbeloggedin": "شما سی سوارکردن فایلیا با بیایت وامین",
        "duration-days": "$1{{جمی:$1|روز|روزیا}}",
        "duration-years": "$1{{جمی:$1| سال|سالیا}}",
-       "expand_templates_remove_comments": "جا وه جا بیئن ویر و باوریا"
+       "expand_templates_remove_comments": "جا وه جا بیئن ویر و باوریا",
+       "pagelanguage": "بلگه انتخاو زون",
+       "pagelang-language": "زون",
+       "pagelang-use-default": "وه کار بسن زون پیش دیه",
+       "right-pagelang": "آلشت دئن زون بلگه",
+       "log-name-pagelang": "آلشت دئن زون پهرستنومه",
+       "log-description-pagelang": "ای پهرستنومه در بلگه زونا آلشت گرته.",
+       "default-skin-not-found-row-disabled": "* <رازینه>$1</رازینه> / $2 ('''ناکنشتگر بیه''')"
 }
index ed606d2..d883947 100644 (file)
        "talkpagelinktext": "Aptarimas",
        "specialpage": "Specialusis puslapis",
        "personaltools": "Asmeniniai įrankiai",
-       "postcomment": "Rašyti komentarą",
        "articlepage": "Rodyti turinio puslapį",
        "talk": "Aptarimas",
        "views": "Žiūrėti",
        "hidetoc": "slėpti",
        "collapsible-collapse": "Sutraukti",
        "collapsible-expand": "Išplėsti",
+       "confirmable-yes": "Taip",
+       "confirmable-no": "Ne",
        "thisisdeleted": "Žiūrėti ar atkurti $1?",
        "viewdeleted": "Rodyti $1?",
        "restorelink": "$1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
        "externaldberror": "Yra arba išorinė autorizacijos duomenų bazės klaida arba jums neleidžiama atnaujinti jūsų išorinės paskyros.",
        "login": "Prisijungti",
        "nav-login-createaccount": "Prisijungti / sukurti paskyrą",
-       "loginprompt": "Įjunkite slapukus, jei norite prisijungti prie {{SITENAME}}.",
        "userlogin": "Prisijungti / sukurti paskyrą",
        "userloginnocreate": "Prisijungti",
        "logout": "Atsijungti",
        "searchprofile-advanced-tooltip": "Ieškoti skirtingose vardų srityse",
        "search-result-size": "$1 ({{PLURAL:$2|1 žodis|$2 žodžiai|$2 žodžių}})",
        "search-result-category-size": "{{PLURAL:$1|1 narys|$1 narių}} ({{PLURAL:$2|1 subkategorijoje|$2 subkategorijų}}, {{PLURAL:$3|1 failas|$3 failų}})",
-       "search-result-score": "Tinkamumas: $1%",
        "search-redirect": "(peradresavimas $1)",
        "search-section": "(skyrius $1)",
        "search-suggest": "Galbūt norėjote $1",
        "uploadwarning": "Dėmesio",
        "uploadwarning-text": "Prašome pakeisti failo aprašymą ir bandykite dar kartą.",
        "savefile": "Išsaugoti failą",
-       "uploadedimage": "įkėlė „[[$1]]“",
-       "overwroteimage": "įkėlė naują „[[$1]]“ versiją",
        "uploaddisabled": "Įkėlimai uždrausti",
        "copyuploaddisabled": "Įkėlimas pagal URL išjungtas.",
        "uploaddisabledtext": "Failų įkėlimai yra uždrausti.",
        "unusedtemplateswlh": "kitos nuorodos",
        "randompage": "Atsitiktinis puslapis",
        "randompage-nopages": "{{PLURAL:$2|Šioje vardų srityje|Šiose vardų srityse}} nėra jokių puslapių: $1.",
-       "randomincategory-selectcategory-submit": "Pirmyn",
        "randomredirect": "Atsitiktinis peradresavimas",
        "randomredirect-nopages": "Vardų srityje „$1“ nėra jokių peradresavimų.",
        "statistics": "Statistika",
        "watchlist-details": "Stebima {{PLURAL:$1|$1 puslapis|$1 puslapiai|$1 puslapių}} neskaičiuojant aptarimų puslapių.",
        "wlheader-enotif": "El. pašto pranešimai yra įjungti.",
        "wlheader-showupdated": "Puslapiai pakeisti nuo tada, kai paskutinį kartą apsilankėte juose, yra pažymėti '''pastorintai'''",
+       "wlnote": "{{PLURAL:$1|Rodomas '''$1''' paskutinis pakeitimas, atliktas|Rodomi '''$1''' paskutiniai pakeitimai, atlikti|Rodoma '''$1''' paskutinių pakeitimų, atliktų}} per '''$2''' {{PLURAL:$2|paskutinę valandą|paskutines valandas|paskutinių valandų}}, nuo $3 $4.",
        "wlshowlast": "Rodyti paskutinių $1 valandų, $2 dienų ar $3 pakeitimus",
        "watchlist-options": "Stebimųjų sąrašo parinktys",
        "watching": "Įtraukiama į stebimųjų sąrašą...",
        "import": "Importuoti puslapius",
        "importinterwiki": "Tarpprojektinis importas",
        "import-interwiki-text": "Pasirinkite projektą ir puslapio pavadinimą importavimui.\nVersijų datos ir redaktorių vardai bus išlaikyti.\nVisi tarpprojektiniai importo veiksmai yra registruojami  [[Special:Log/import|importo istorijoje]].",
-       "import-interwiki-source": "Šaltinio wiki projektas/puslapis:",
        "import-interwiki-history": "Kopijuoti visas istorijos versijas šiam puslapiui",
        "import-interwiki-templates": "Įtraukti visus šablonus",
        "import-interwiki-submit": "Importuoti",
        "pageinfo-article-id": "Puslapio ID",
        "pageinfo-language": "Puslapio turinio kalba",
        "pageinfo-robot-policy": "Paieškos variklio būsena",
-       "pageinfo-robot-index": "Indeksuotas",
-       "pageinfo-robot-noindex": "Neindeksuotas",
+       "pageinfo-robot-index": "Leidžiama",
+       "pageinfo-robot-noindex": "Neleidžiama",
        "pageinfo-views": "Peržiūrų skaičius",
        "pageinfo-watchers": "Puslapio stebėtojų skaičius",
        "pageinfo-redirects-name": "Nukreipimai į šį puslapį",
        "duplicate-defaultsort": "Įspėjimas: Numatytasis rikiavimo raktas „$2“ pakeičia ankstesnį numatytąjį rikiavimo raktą „$1“.",
        "version": "Versija",
        "version-extensions": "Įdiegti priedai",
+       "version-skins": "Išvaizda",
        "version-specialpages": "Specialieji puslapiai",
        "version-parserhooks": "Analizatoriaus gaudliai",
        "version-variables": "Kintamieji",
        "version-antispam": "Apsauga nuo šlamšto",
-       "version-skins": "Išvaizda",
        "version-other": "Kita",
        "version-mediahandlers": "Daugialypės terpės grotuvai",
        "version-hooks": "Gaudliai",
        "version-hook-name": "Gaudlio pavadinimas",
        "version-hook-subscribedby": "Užsakyta",
        "version-version": "(Versija $1)",
-       "version-license": "Licencija",
+       "version-license": "MediaWiki licencija",
        "version-poweredby-credits": "Šis projektas naudoja '''[https://www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
        "version-poweredby-others": "kiti",
        "version-credits-summary": "Už indėlį kuriant [[Special:Version|MediaWiki]] dėkojame",
index 151cac7..717c2be 100644 (file)
        "talkpagelinktext": "sprīža",
        "specialpage": "Specialuo puslopa",
        "personaltools": "Muni reiki",
-       "postcomment": "Dalikt komentaru",
        "articlepage": "Apsavērt rakstīņu",
        "talk": "Sprīža",
        "views": "Vierīņi",
        "uploadbtn": "Īsyuteit failu",
        "uploadlogpage": "Davīnuotūs failu registrs",
        "savefile": "Izglobuot failu",
-       "uploadedimage": "davīnuots \"[[$1]]\"",
        "license": "Liceņceja:",
        "license-header": "Liceņceja",
        "imgfile": "fails",
index a133150..c4a82fa 100644 (file)
        "talkpagelinktext": "Sawihona",
        "specialpage": "Vohbik phek",
        "personaltools": "Mimal hmanruate",
-       "postcomment": "Thuhlawm thar",
        "articlepage": "A chhungthu enna",
        "talk": "Sawihona",
        "views": "Thlirna",
        "externaldberror": "Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.",
        "login": "Luhna",
        "nav-login-createaccount": "Luhna / siangchan siamna",
-       "loginprompt": "{{SITENAME}}-a lût tùrin cookie i zuah zalen a ngai.",
        "userlogin": "Luhna/Siangchan siamna",
        "userloginnocreate": "Inziah luhna",
        "logout": "Chhuahna",
        "searchprofile-advanced-tooltip": "Hminghmun thlansa-ah zawng rawh",
        "search-result-size": "$1 ({{PLURAL:$2|Thumal 1 |Thumal $2 }})",
        "search-result-category-size": "{{PLURAL:$1|Tel 1 |Tel $1 }} ({{PLURAL:$2|Pawlpéng 1 |Pawlpéng $2}}, {{PLURAL:$3|Taksa 1 |Taksa $3 f}})",
-       "search-result-score": "Intûkna: $1%",
        "search-redirect": "($1 aţanga hruailuh)",
        "search-section": "(hlawm $1)",
        "search-suggest": "$1 i tihna a ni a ni zawk em?",
        "largefileserver": "Hë taksa hi rawngbawltu phaltir zât aia ritsak 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!\nChanchin kimchang: $1",
        "upload-source": "Hnar taksa",
        "sourcefilename": "Hnar taksahming:",
index 0e6f431..defaec7 100644 (file)
        "hidetoc": "paslēpt",
        "collapsible-collapse": "paslēpt",
        "collapsible-expand": "rādīt",
+       "confirmable-yes": "Jā",
+       "confirmable-no": "Nē",
        "thisisdeleted": "Apskatīt vai atjaunot $1?",
        "viewdeleted": "Skatīt $1?",
        "restorelink": "$1 {{PLURAL:$1|dzēsto versiju|dzēstās versijas}}",
        "gotaccount": "Tev jau ir lietotājvārds? '''$1'''!",
        "gotaccountlink": "Pieslēgties",
        "userlogin-resetlink": "Esat aizmirsis savu pieslēgšanās informāciju?",
+       "userlogin-resetpassword-link": "Aizmirsi savu paroli?",
        "userlogin-helplink2": "Palīdzība ar pieslēgšanos",
        "userlogin-loggedin": "Tu esi pieslēdzies ar lietotājvārdu {{GENDER:$1|$1}}.\nLai pieslēgtos ar citu lietotājvārdu, aizpildi šo formu.",
        "userlogin-createanother": "Izveidot citu kontu",
        "powersearch-togglelabel": "Pārbaudīt:",
        "powersearch-toggleall": "Viss",
        "powersearch-togglenone": "Neviena",
+       "powersearch-remember": "Atcerēties izvēli turpmākajā meklēšanā",
        "search-external": "Ārējā meklēšana",
        "searchdisabled": "Meklēšana {{grammar:lokatīvs|{{SITENAME}}}} šobrīd ir atslēgta darbības traucējumu dēļ.\nPagaidām vari meklēt, izmantojot Google vai Yahoo.\nŅem vērā, ka meklētāju indeksētais {{grammar:ģenitīvs|{{SITENAME}}}} saturs var būt novecojis.",
        "preferences": "Izvēles",
        "rcshowhidebots": "$1 botus",
        "rcshowhideliu": "$1 reģistrētos lietotājus",
        "rcshowhideanons": "$1 anonīmos",
-       "rcshowhidepatr": "$1 pārbaudītie labojumi",
+       "rcshowhidepatr": "$1 pārbaudītos labojumus",
        "rcshowhidemine": "$1 manus",
        "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
        "diff": "izmaiņas",
        "randompage": "Nejauša lapa",
        "randomincategory": "Nejauša lapa kategorijā",
        "randomincategory-invalidcategory": "\"$1\" nav derīgs kategorijas nosaukums.",
-       "randomincategory-selectcategory-submit": "Aiziet",
        "randomredirect": "Nejauša pāradresācijas lapa",
        "statistics": "Statistika",
        "statistics-header-pages": "Lapu statistika",
        "thumbnail_image-missing": "Šķiet, ka fails ir pazudis: $1",
        "import": "Importēt lapas",
        "importinterwiki": "Starpviki importēšana",
-       "import-interwiki-source": "Avota viki/lapa:",
        "import-interwiki-history": "Nokopēt visas šīs lapas hronoloģijā atrodamās versijas",
        "import-interwiki-templates": "Iekļaut visas veidnes",
        "import-interwiki-submit": "Importēt",
index 8763b41..384b026 100644 (file)
@@ -44,7 +44,7 @@
        "tog-forceeditsummary": "漏概醒之",
        "tog-watchlisthideown": "不哨己文",
        "tog-watchlisthidebots": "不哨僕文",
-       "tog-watchlisthideminor": "不哨纂",
+       "tog-watchlisthideminor": "不哨纂",
        "tog-watchlisthideliu": "不哨有簿",
        "tog-watchlisthideanons": "不哨無簿",
        "tog-watchlisthidepatrolled": "不哨已巡",
        "youhavenewmessages": "有$1書至子書房也。($2)",
        "youhavenewmessagesfromusers": "子有 $1 自 {{PLURAL:$3|一簿戶也|$3 簿戶也}} ($2)。",
        "youhavenewmessagesmanyusers": "子有 $1 自多簿戶 ( $2 )",
-       "newmessageslinkplural": "{{PLURAL:$1|一新訊息|新訊息}}",
-       "newmessagesdifflinkplural": "新{{PLURAL:$1|易|易}}",
+       "newmessageslinkplural": "{{PLURAL:$1|一新訊|999=新訊}}",
+       "newmessagesdifflinkplural": "新",
        "youhavenewmessagesmulti": "新訊於$1",
        "editsection": "纂",
        "editold": "纂",
        "hidetoc": "藏",
        "collapsible-collapse": "摺",
        "collapsible-expand": "展",
+       "confirmable-yes": "是",
+       "confirmable-no": "否",
        "thisisdeleted": "還$1或閱之?",
        "viewdeleted": "閱$1之?",
        "restorelink": "$1已刪",
        "nospecialpagetext": "<strong>無此特查。</strong>\n\n見[[Special:SpecialPages|{{int:specialpages}}]]。",
        "error": "有誤",
        "databaseerror": "庫藏誤然",
+       "databaseerror-query": "尋:$1",
+       "databaseerror-error": "錯:$1",
        "laggedslavemode": "警示,此頁不新",
        "readonly": "鎖庫藏",
        "enterlockreason": "何以鎖之?何日啟之?",
        "yourtext": "子也",
        "storedversion": "時也",
        "nonunicodebrowser": "'''警示:覽器不識萬國碼,以十六進位數代之,以保纂可也。'''",
-       "editingold": "''''''警示'''子纂舊然。強儲之,則新易失焉。'''",
+       "editingold": "'''\"警示\"子纂舊然。強儲之,則新易失焉。'''",
        "yourdiff": "異",
        "copyrightwarning": "{{SITENAME}}全文皆循$2,詳見$1。不喜他纂,但去可矣。文務親撰,或謄公本,\n'''萬勿盜版!'''",
        "copyrightwarning2": "{{SITENAME}}全文,允眾人撰、纂、刪、校。不喜他纂,但去可矣。<br />\n文務親撰,或謄公本,如$1。'''萬勿盜版!'''",
        "revertmerge": "悔併",
        "mergelogpagetext": "下乃近頁之誌併至二頁之表也。",
        "history-title": "$1之誌",
-       "difference-title": "$1各本之",
+       "difference-title": "$1各本之",
        "difference-title-multipage": "$1、$2之异",
        "difference-multipage": "(辨頁)",
        "lineno": "第$1行:",
        "preferences": "簿註",
        "mypreferences": "簿註",
        "prefs-edits": "數計:",
+       "prefsnologintext2": "登簿以改簿註",
        "prefs-skin": "面版",
        "skin-preview": "草覽",
        "datedefault": "原註",
        "action-userrights-interwiki": "纂他wiki上之權",
        "action-siteadmin": "鎖及解鎖其庫",
        "nchanges": "$1易",
+       "enhancedrc-since-last-visit": "$1未示",
        "enhancedrc-history": "誌",
        "recentchanges": "近易",
        "recentchanges-legend": "近易項",
        "recentchanges-label-minor": "此乃細纂",
        "recentchanges-label-bot": "此乃機纂",
        "recentchanges-label-unpatrolled": "是纂未巡",
-       "recentchanges-legend-newpage": "$1 - 新頁",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}}([[Special:NewPages|新灶]])",
        "rcnotefrom": "下為自'''$2'''至'''$1'''之易也。",
        "rclistfrom": "自$3 $2起之易也",
        "rcshowhideminor": "$1校",
        "unusedtemplateswlh": "支鏈",
        "randompage": "清風翻書",
        "randompage-nopages": "下列{{PLURAL:$2|名集}}中無頁也:$1",
-       "randomincategory-selectcategory-submit": "往",
        "randomredirect": "任渡",
        "randomredirect-nopages": "「$1」名冊內無渡也。",
        "statistics": "彙統",
        "double-redirect-fixer": "修渡",
        "brokenredirects": "斷渡",
        "brokenredirectstext": "頁下斷渡。",
-       "brokenredirects-edit": "",
+       "brokenredirects-edit": "",
        "brokenredirects-delete": "刪",
        "withoutinterwiki": "孤語",
        "withoutinterwiki-summary": "頁下無鏈他語。",
        "exbeforeblank": "清文前乃為:「$1」",
        "delete-confirm": "刪\"$1\"",
        "delete-legend": "刪",
-       "historywarning": "警示,此頁有誌$1:",
+       "historywarning": "警示,此頁有誌$1:",
        "confirmdeletetext": "欲刪此物與誌,知後果、合[[{{MediaWiki:Policy-url}}]]後再為之。",
        "actioncomplete": "成矣",
        "actionfailed": "未竟",
        "import": "圖入匯",
        "importinterwiki": "維基互匯",
        "import-interwiki-text": "欲入匯,擇維基、揀題文,審時、纂者隨記也。互匯錄於[[Special:Log/import|誌入]]。",
-       "import-interwiki-source": "來源wiki/頁:",
+       "import-interwiki-sourcepage": "源頁:",
        "import-interwiki-history": "審、誌同匯",
        "import-interwiki-submit": "入匯",
        "import-interwiki-namespace": "入名集:",
        "spambot_username": "MediaWiki清濫",
        "spam_reverting": "還新審之無鏈$1者。",
        "spam_blanking": "審皆鏈$1,遂令白頁。",
+       "pageinfo-header-restrictions": "頁錮",
        "pageinfo-toolboxlink": "文訊",
        "markaspatrolleddiff": "派哨",
        "markaspatrolledtext": "哨此報",
index f6da81d..bbae542 100644 (file)
        "recentchangeslinked-to": "Na niçinen butʼkʼa yeine na niçinen butʼkʼaşa kʼontʼaktʼi meçameri na renan butʼkʼape ko3ʼiri",
        "upload": "Dosya doloxe kamaxvi",
        "uploadlogpage": "Dosya oncğonu kʼayitʼepe",
-       "uploadedimage": "Siteşa na incğonen resimi: \"[[$1]]\"",
        "license-header": "Lisans",
        "file-anchor-link": "Dosya",
        "filehist": "Dosyaşi tarixi",
index e6169e6..c81e334 100644 (file)
        "invalidtitle-knownnamespace": "\"$2\" नामस्थान आर \"$3\" नाम बला गलत शीर्षक",
        "invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 आर नाम \"$2\" वाला गलत शीर्षक",
        "exception-nologin": "सम्प्रवेशित नै",
+       "exception-nologin-text": "इ पन्ना वा काजके सक्षम करवाक लेल कृपया प्रवेश करु।",
        "exception-nologin-text-manual": "इ पन्ना वा काजके सक्षम करवाक लेल कृपया $1 करु।",
        "virus-badscanner": "खराप विन्यास: अज्ञात विषविधि बिम्बक: ''$1''",
        "virus-scanfailed": "बिम्ब विफल (विध्यादेश $1)",
        "import": "पन्ना सभकेँ आनू",
        "importinterwiki": "ट्रान्सविकी आनू",
        "import-interwiki-text": "एकटा विकी आ पन्ना शीर्षक अनबाले चुनू।\nसंशोधन तिथि आ सम्पादकक नाम सुरक्षित रहत।\nसभटा ट्रान्सविकी आयात क्रिया सम्प्रवेशित अछि [[Special:Log/import|import log]] पर।",
-       "import-interwiki-source": "मूल विकी/ पन्ना:",
        "import-interwiki-history": "अए पन्नाक सभटा इतिहास संशोधनक द्वितीयक बनाउ",
        "import-interwiki-templates": "सभटा नमूना शामिल करू",
        "import-interwiki-submit": "आनू",
index a652ff8..90ac544 100644 (file)
        "talkpagelinktext": "Dopokan",
        "specialpage": "Kaca khusus",
        "personaltools": "Piranti pribadi",
-       "postcomment": "Bagéyan anyar",
        "articlepage": "Deleng isi tulisan",
        "talk": "bahas",
        "views": "Tampilan",
        "externaldberror": "Ana kesalahan otentikasi basis data utawa Rika ora olih nglakokna pemutakhiran maring akun eksternale Rika.",
        "login": "Melebu",
        "nav-login-createaccount": "Mlebu / gawe kaca anggota (akun)",
-       "loginprompt": "Rika kudu ngaktifna ''cookies'' ben teyeng mlebu log maring {{SITENAME}}.",
        "userlogin": "Melebu / gawe kaca anggota (account)",
        "userloginnocreate": "Mlebu log",
        "logout": "Metu Log",
        "searchprofile-advanced-tooltip": "Goleti nang bilik jeneng biasa",
        "search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
-       "search-result-score": "Relevansi: $1%",
        "search-redirect": "(pangalihan $1)",
        "search-section": "(bagiyan $1)",
        "search-suggest": "Apa maksude Rika kuwe: $1",
        "ignorewarning": "Lirwakna pèngetan lan langsung simpen berkas.",
        "ignorewarnings": "Lirwakna pèngetan apa baen",
        "minlength1": "Jeneng berkas seora-orane kudu ana seaksara.",
-       "uploadedimage": "ngunggahna\"[[$1]]\"",
        "license": "Jenis lisènsi:",
        "license-header": "Jinis lisènsi",
        "listfiles_date": "Tanggal",
index 9ea3ca3..b885a3f 100644 (file)
        "searchprofile-advanced-tooltip": "Hitady ny anaran-tsehatra ho an'ny fikarohana",
        "search-result-size": "$1 ({{PLURAL:$2|teny|teny}} $2)",
        "search-result-category-size": "Mpiray sokajy $1{{PLURAL:$1}} (zana-tsokajy $2{{PLURAL:}}, rakitra $3{{PLURAL:}})",
-       "search-result-score": "Fifanarahana : $1%",
        "search-redirect": "(redirect avy amin'ny/amin'i $1)",
        "search-section": "(fizaràna $1)",
        "search-file-match": "(miady amin'ny votoatin-drakitra)",
        "uploadwarning": "Fampitandremana",
        "uploadwarning-text": "Ovay ny fanoritan' ilay rakitra ary andrao fanindroany.",
        "savefile": "Tehirizo ny rakitra",
-       "uploadedimage": "tonga ny rakitra\"[[$1]]\"",
-       "overwroteimage": "nampiditra versiona vaovao ny «[[$1]]»",
        "uploaddisabled": "Miala tsiny! Tsy azo atao ny mandefa rakitra.",
        "copyuploaddisabled": "Tsy alefa ny fandefasan-drakitra amin'ny alalan'ny URL.",
        "uploaddisabledtext": "Tsy afaka andefasana rakitra aloha eto amin'ity wiki ity.",
        "watchlist-details": "Pejy $1{{PLURAL:}} ao amin'ny lisitry ny pejy arahanao, tsy isaina ny pejin-dresaka.",
        "wlheader-enotif": "Alefa ny fampilazana amin'ny mailaka.",
        "wlheader-showupdated": "Aseho '''sorabaventy''' ny pejy niova taorian'ny famangianao azy farany.",
+       "wlnote": "Eo ambany dia ahitana ny {{PLURAL:$1|fiovana farany indrindra|ny fiovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
        "wlshowlast": "Haneho ny $1 ora farany, ny $2 andro farany na $3",
        "watchlist-options": "Safidy ny lisitry ny pejy arahana",
        "watching": "Fanarahana...",
index 99d471f..c1e5e2a 100644 (file)
        "talkpagelinktext": "Каҥашымаш",
        "specialpage": "Лӱмын ыштыме лаштык",
        "personaltools": "Паша ӱзгар",
-       "postcomment": "У ужаш",
        "articlepage": "Лаштыкыште возымым ончыкташ",
        "talk": "Каҥашымаш",
        "views": "Ончалаш",
        "yourdomainname": "Тендан домен:",
        "login": "Шке денет палдаре",
        "nav-login-createaccount": "Пураш/Регистрацийым эрте",
-       "loginprompt": "{{SITENAME}} шке денет палдарыме деч ончыч компьютерыштет «cookies»-ым чӱктыман.",
        "userlogin": "Пураш/Регистрацийым эрташ",
        "logout": "Лекташ",
        "userlogout": "Лекташ",
        "uploadlogpage": "Оптымаш-влак журнал",
        "filedesc": "Файл нерген кӱчыкын увертараш",
        "fileuploadsummary": "Тидын нерген кӱчыкын:",
-       "uploadedimage": "«[[$1]]» пуртыш",
        "watchthisupload": "Тиде файлым эскераш",
        "license-header": "Лицензирований",
        "imgfile": "файл",
index 01cd28e..2af3d81 100644 (file)
        "talkpagelinktext": "maota",
        "specialpage": "Laman istimewa",
        "personaltools": "Pakakeh pribadi",
-       "postcomment": "Bagian baru",
        "articlepage": "Lihek isi laman",
        "talk": "Rundiang",
        "views": "Caliak",
        "externaldberror": "Alah tajadi kasalahan otentikasi basis data eksternal atau Sanak indak diizinan malakuan pabaruan tahadok akun eksternal Sanak.",
        "login": "Masuak log",
        "nav-login-createaccount": "Masuak log / buek akun",
-       "loginprompt": "Sanak musti mangaktipan ''cookies'' pado paramban Sanak untuak dapek masuak log ka {{SITENAME}} ko.",
        "userlogin": "Masuak log / buek akun",
        "userloginnocreate": "Masuak log",
        "logout": "Kalua log",
        "searchprofile-advanced-tooltip": "Pacarian di ruang namo tatantu",
        "search-result-size": "$1 ({{PLURAL:$2|$2 kato}})",
        "search-result-category-size": "{{PLURAL:$1|$1 anggota}} ({{PLURAL:$2|$2 subkategori}}, {{PLURAL:$3|$3 berkas}})",
-       "search-result-score": "Relevansi: $1%",
        "search-redirect": "(pangaliahan $1)",
        "search-section": "(bagian $1)",
        "search-suggest": "Mungkin makasuiknyo: $1",
        "filetype-bad-ie-mime": "Indak dapek mamuek berkas dek Internet Explorer mandeteksinyo sabagai \"$1\", nan indak diizinkan dan marupokan tipe berkas bapotensi bahayo.",
        "fileexists-thumbnail-yes": "Berkas ko nampaknyo marupoan gambar nan ukurannyo dipaketek ''(miniatua)''. [[$1|thumb]]\nCubo pareso berkas <strong>[[:$1]]</strong> tasabuik.\nKoq berkas tu samemang marupoan gambar dalam ukuran aslinyo, Sanak indak paralu untuak mamuak baliak miniatur lainnyo.",
        "file-thumbnail-no": "Namo berkas dimulai jo <strong>$1</strong>.\nNampaknyo berkas ko marupoan gambar jo ukuran dipaketek ''(miniatua)''.\nKoq Sanak ado versi resolusi panuah dari gambar ko, cubolah muekan berkas tasabuik. Koq indak, harap ubah namo berkas ko.",
-       "uploadedimage": "mamuek \"[[$1]]\"",
        "upload-source": "Berkas sumber",
        "sourcefilename": "Namo berkas sumber:",
        "sourceurl": "URL sumber:",
        "unwatchthispage": "Batal pantau laman ko",
        "watchlist-details": "{{PLURAL:$1|$1 laman}} dalam daftar pantau Sanak, indak tamasuak laman rundiangnyo.",
        "wlheader-showupdated": "Laman nan alah barubah sajak kunjuangan tarakhia Sanak ditunjuakan jo '''hurup taba'''",
+       "wlnote": "Di bawah ko ado $1 {{PLURAL:$1|parubahan}} dalam {{PLURAL:$2|'''$2''' jam}} iko, sampai tanggal $3, pukua $4.",
        "wlshowlast": "Tunjuakan $1 jam parubahan dalam $2 hari tarakhia $3",
        "watchlist-options": "Piliahan daftar pantau",
        "watching": "Mamantau...",
        "duplicate-defaultsort": "'''Peringatan:''' Kunci panguruitan default \"$2\" sabalunnyo mangabaikan kunci panguruitan default \"$1\".",
        "version": "Versi",
        "version-extensions": "Ekstensi tarinstal",
+       "version-skins": "Kulik",
        "version-specialpages": "Laman istimewa",
        "version-parserhooks": "Kaik parser",
        "version-variables": "Variabel",
        "version-antispam": "Pancagahan spam",
-       "version-skins": "Kulik",
        "version-other": "Lain-lain",
        "version-version": "(Versi $1)",
        "version-license": "Lisensi",
index 7423a38..dd92c70 100644 (file)
        "randomincategory": "Случајна страница во категоријата",
        "randomincategory-invalidcategory": "„$1“ не претставува важечка категорија.",
        "randomincategory-nopages": "Нема страници во [[:Category:$1]].",
-       "randomincategory-selectcategory": "Дај случајна страница од категоријата: $1 $2.",
-       "randomincategory-selectcategory-submit": "Оди",
+       "randomincategory-category": "Категорија:",
+       "randomincategory-legend": "Случајна страница во категорија",
        "randomredirect": "Случајно пренасочување",
        "randomredirect-nopages": "Нема пренасочувања во именскиот простор „$1“.",
        "statistics": "Статистики",
        "exbeforeblank": "содржината пред бришењето беше: '$1'",
        "delete-confirm": "Бришење на „$1“",
        "delete-legend": "Бришење",
-       "historywarning": "'''Предупредување:''' Страницата што сакате да ја избришете има историја со околу $1 {{PLURAL:$1|преработка|преработки}}:",
+       "historywarning": "<strong>Предупредување:</strong> Страницата што сакате да ја избришете има историја со {{PLURAL:$1|една преработка|$1 преработки}}:",
        "confirmdeletetext": "На пат сте трајно да избришете страница заедно со нејзината историја.\nПотврдете дека имате намера да го направите ова, дека ги разбирате последиците од тоа и дека го правите во согласност со [[{{MediaWiki:Policy-url}}|правилата]].",
        "actioncomplete": "Дејството е извршено",
        "actionfailed": "Неуспешно дејство",
        "delete-edit-reasonlist": "Уреди причини за бришење",
        "delete-toobig": "Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.\nБришењето на ваквии страници е забрането со цел {{SITENAME}} да се заштити од оштетувања.",
        "delete-warning-toobig": "Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.\nБришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};\nпродолжете доколку сте сигруни дека треба тоа да го сторите.",
-       "delete-cantedit": "Не можете да ја избришете страницава зошто немате дозвола да ја уредувате.",
+       "deleteprotected": "Не можете да ја избришете страницава бидејќи е заштитена.",
        "deleting-backlinks-warning": "'''Предупредување:''' До страницата што сакате да ја избришете водат [[Special:WhatLinksHere/{{FULLPAGENAME}}|други страници]] или пак се превметнуваат во неа.",
        "rollback": "Отповикај промени",
        "rollback_short": "Отповикај",
        "import": "Увезување на страници",
        "importinterwiki": "Меѓувики увоз",
        "import-interwiki-text": "Избери вики и наслов на страница за увоз.\nДатумите и имињата на уредниците ќе бидат зачувани.\nСите постапки при увозот од другото вики се заведуваат во [[Special:Log/import|дневникот на увезувања]].",
-       "import-interwiki-source": "Извор вики/страница:",
+       "import-interwiki-sourcewiki": "Изворно вики:",
+       "import-interwiki-sourcepage": "Изворна страница:",
        "import-interwiki-history": "Копирај ги сите постари верзии за оваа страница",
        "import-interwiki-templates": "Вклучи ги сите шаблони",
        "import-interwiki-submit": "Увези",
index 8eb34ad..bab2aaa 100644 (file)
        "invalidtitle-knownnamespace": "നാമമേഖല \"$2\", എഴുത്ത് \"$3\" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്",
        "invalidtitle-unknownnamespace": "അപരിചിതമായ നാമമേഖലാ സംഖ്യ $1, എഴുത്ത് \"$2\" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്",
        "exception-nologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
-       "exception-nologin-text": "ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ ദയവായി [[Special:Userlogin|പ്രവേശിക്കുക]].",
+       "exception-nologin-text": "ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ ദയവായി പ്രവേശിക്കുക.",
        "exception-nologin-text-manual": "ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ഉപയോഗിക്കാൻ ദയവായി $1.",
        "virus-badscanner": "തെറ്റായ ക്രമീകരണങ്ങൾ: അപരിചിതമായ വൈറസ് തിരച്ചിൽ ഉപാധി :  ''$1''",
        "virus-scanfailed": "വൈറസ് സ്കാനിങ് പരാജയപ്പെട്ടു (code $1)",
        "parser-template-recursion-depth-warning": "ഫലകത്തിന്റെ പുനരാവർത്തന ആഴത്തിന്റെ പരിധി കഴിഞ്ഞിരിക്കുന്നു ($1)",
        "language-converter-depth-warning": "ഭാഷ മാറ്റൽ ഉപകരണത്തിന്റെ ആഴത്തിന്റെ പരിധി കവിഞ്ഞിരിക്കുന്നു ($1)",
        "node-count-exceeded-category": "നോഡ്-എണ്ണം അധികരിച്ച താളുകൾ",
-       "node-count-exceeded-category-desc": "à´¨àµ\8bà´¡àµ\8d-à´\8eà´£àµ\8dà´£à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9a à´¤à´¾à´³àµ\81à´\95ൾà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ à´µàµ¼à´\97àµ\8dà´\97à´\82.",
-       "node-count-exceeded-warning": "താൾ നോഡ്-എണ്ണം അധികരിച്ചിരിക്കുന്നു",
+       "node-count-exceeded-category-desc": "താളിൽ à´¨àµ\8bà´¡àµ\8d-à´\8eà´£àµ\8dà´£à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
+       "node-count-exceeded-warning": "താളിൽ നോഡ്-എണ്ണം അധികരിച്ചിരിക്കുന്നു",
        "expansion-depth-exceeded-category": "വികസന ആഴം അധികരിച്ച താളുകൾ",
-       "expansion-depth-exceeded-category-desc": "വിà´\95സന à´\86à´´à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9a à´¤à´¾à´³àµ\81à´\95ൾà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ à´µàµ¼à´\97àµ\8dà´\97à´\82.",
+       "expansion-depth-exceeded-category-desc": "താളിലàµ\86 à´µà´¿à´\95സന à´\86à´´à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
        "expansion-depth-exceeded-warning": "താളിന്റെ വികസന ആഴം അധികരിച്ചിരിക്കുന്നു",
        "parser-unstrip-loop-warning": "അൺസ്ട്രിപ്പ് (Unstrip) പാഴ്സർ ഫങ്ഷനിൽ കുരുക്ക് കണ്ടെത്തി",
        "parser-unstrip-recursion-limit": "അൺസ്ട്രിപ്പ് (Unstrip) പാഴ്സർ ഫങ്ഷന്റെ പുനരാവർത്തന പരിധി അധികരിച്ചിരിക്കുന്നു ($1)",
        "mergehistory-into": "ലക്ഷ്യതാൾ:",
        "mergehistory-list": "സം‌യോജിപ്പിക്കാവുന്ന തിരുത്തൽ നാൾവഴി",
        "mergehistory-merge": "[[:$1]]ന്റെ താഴെ കാണിച്ചിരിക്കുന്ന പതിപ്പുകൾ [[:$2]] ലേക്കു സം‌യോജിപ്പിക്കാവുന്നതാണ്‌‍. റേഡിയോ ബട്ടൺ കോളം ഉപയോഗിച്ച് സം‌യോജിപ്പിക്കാനുള്ള പതിപ്പുകളുടെ സമീപത്തുള്ള സമയം തിരഞ്ഞെടുക്കുക. താങ്കൾ തിരഞ്ഞെടുക്കുന്ന സമയത്തോ അതിനു മുൻപോ സൃഷ്ടിക്കപ്പെട്ട പതിപ്പുകൾ തിരഞ്ഞെടുക്കുക. നാവിഗേഷണൽ കണ്ണികൾ ഉപയോഗിക്കുന്നതു ഈ കോളത്തെ പുനഃക്രമീകരിക്കും.",
-       "mergehistory-go": "à´¸à´\82â\80\8cà´¯àµ\8bà´\9cà´¿à´ªàµ\8dപിà´\95àµ\8dà´\95ാവàµ\81à´¨àµ\8dà´¨ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´\95à´¾à´\9fàµ\8dà´\9fàµ\81à´\95",
+       "mergehistory-go": "സം‌യോജിപ്പിക്കാവുന്ന തിരുത്തുകൾ കാട്ടുക",
        "mergehistory-submit": "പതിപ്പുകൾ സം‌യോജിപ്പിക്കുക",
        "mergehistory-empty": "സം‌യോജിപ്പിക്കാവുന്ന പതിപ്പുകളൊന്നും ഇല്ല.",
        "mergehistory-success": "[[:$1]]-ന്റെ {{PLURAL:$3|പതിപ്പ്|പതിപ്പുകൾ}} [[:$2]]-ലേക്കു വിജയകരമായി സം‌യോജിപ്പിച്ചിരിക്കുന്നു.",
        "preferences": "ക്രമീകരണങ്ങൾ",
        "mypreferences": "ക്രമീകരണങ്ങൾ",
        "prefs-edits": "ആകെ തിരുത്തുകൾ:",
-       "prefsnologintext2": "താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.",
+       "prefsnologintext2": "താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി പ്രവേശിക്കുക.",
        "prefs-skin": "ദൃശ്യരൂപം",
        "skin-preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
        "datedefault": "ക്രമീകരണങ്ങൾ വേണ്ട",
        "prefs-watchlist-days": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി ദിവസങ്ങൾ:",
        "prefs-watchlist-days-max": "പരമാവധി {{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസങ്ങൾ}}",
        "prefs-watchlist-edits": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ വികസിത രൂപത്തിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി മാറ്റങ്ങൾ:",
-       "prefs-watchlist-edits-max": "പരമാവധി 1000 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ",
+       "prefs-watchlist-edits-max": "പരമാവധി 1000 തിരുത്തുകൾ",
        "prefs-watchlist-token": "ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയ്ക്കുള്ള അടയാളപദം:",
        "prefs-misc": "പലവക",
        "prefs-resetpass": "രഹസ്യവാക്ക് മാറ്റുക",
        "right-noratelimit": "പ്രവർത്തനങ്ങൾക്ക് പരിധികൾ ബാധകമല്ല",
        "right-import": "മറ്റുള്ള വിക്കികളിൽ നിന്നും താളുകൾ ഇറക്കുമതി ചെയ്യുക",
        "right-importupload": "അപ്‌‌ലോഡ് ചെയ്ത പ്രമാണത്തിൽ നിന്നും താളുകൾ ഇറക്കുമതി ചെയ്യുക",
-       "right-patrol": "മറàµ\8dà´±àµ\81à´³àµ\8dളവരàµ\81à´\9fàµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´±àµ\8bà´¨àµ\8dà´¤àµ\81à´\9aàµ\81à´±àµ\8dറിയതായി à´\85à´\9fയാളപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dà´¤àµ\81à´\95",
-       "right-autopatrol": "à´¸àµ\8dവനàµ\8dà´¤à´\82 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´±àµ\8bà´¨àµ\8dà´¤àµ\81 à´\9aàµ\81à´±àµ\8dറിയതായി à´\85à´\9fയാളപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dà´¤àµ\81à´\95",
+       "right-patrol": "മറ്റുള്ളവരുടെ തിരുത്തുകൾ റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക",
+       "right-autopatrol": "സ്വന്തം തിരുത്തുകൾ റോന്തു ചുറ്റിയതായി അടയാളപ്പെടുത്തുക",
        "right-patrolmarks": "പുതിയ മാറ്റങ്ങളിലെ റോന്തുചുറ്റൽ രേഖകൾ പരിശോധിക്കുക",
        "right-unwatchedpages": "ശ്രദ്ധിക്കാത്ത താളുകളുടെ പട്ടിക കാണുക",
        "right-mergehistory": "താളുകളുടെ നാൾവഴികൾ ലയിപ്പിക്കുക",
        "rcshowhidepatr": "റോന്തു ചുറ്റിയ മാറ്റങ്ങൾ $1",
        "rcshowhidepatr-show": "പ്രദർശിപ്പിക്കുക",
        "rcshowhidepatr-hide": "മറയ്ക്കുക",
-       "rcshowhidemine": "à´\8eà´¨àµ\8dà´±àµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ $1",
+       "rcshowhidemine": "എന്റെ തിരുത്തുകൾ $1",
        "rcshowhidemine-show": "പ്രദർശിപ്പിക്കുക",
        "rcshowhidemine-hide": "മറയ്ക്കുക",
        "rclinks": "കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക<br />$3",
        "randomincategory": "വർഗ്ഗത്തിൽ നിന്ന് ക്രമരഹിതമായി എടുക്കുന്ന താൾ",
        "randomincategory-invalidcategory": "\"$1\" സാധുതയുള്ള വർഗ്ഗത്തിന്റെ പേരല്ല.",
        "randomincategory-nopages": "[[:Category:$1|വർഗ്ഗം:$1]] എന്നതിൽ താളുകളൊന്നുമില്ല.",
-       "randomincategory-selectcategory": "ഈ വർഗ്ഗത്തിൽ നിന്നും ഏതെങ്കിലും താൾ എടുക്കുക: $1 $2.",
-       "randomincategory-selectcategory-submit": "പോകൂ",
+       "randomincategory-category": "വർഗ്ഗം:",
+       "randomincategory-legend": "വർഗ്ഗത്തിൽ നിന്ന് ക്രമരഹിതമായി എടുക്കുന്ന താൾ",
        "randomredirect": "ക്രമരഹിതമായ തിരിച്ചുവിടൽ",
        "randomredirect-nopages": "\"$1\" എന്ന നാമമേഖലയിൽ തിരിച്ചുവിടൽ താളുകളൊന്നുമില്ല.",
        "statistics": "സ്ഥിതിവിവരക്കണക്കുകൾ",
        "statistics-pages": "താളുകൾ",
        "statistics-pages-desc": "സം‌വാദത്താളുകൾ, തിരിച്ചുവിടലുകൾ തുടങ്ങിയവയടക്കം വിക്കിയിലെ എല്ലാ താളുകളും.",
        "statistics-files": "അപ്‌ലോഡ് ചെയ്തിട്ടുള്ള പ്രമാണങ്ങൾ",
-       "statistics-edits": "{{SITENAME}} à´¸à´\82â\80\8cà´°à´\82à´­à´¤àµ\8dതിനàµ\8dà´±àµ\86 à´¤àµ\81à´\9fà´\95àµ\8dà´\95à´\82 à´®àµ\81തലàµ\81à´³àµ\8dà´³ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ",
-       "statistics-edits-average": "à´\92à´°àµ\81 à´¤à´¾à´³à´¿à´²àµ\86 à´¶à´°à´¾à´¶à´°à´¿ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ",
+       "statistics-edits": "{{SITENAME}} സം‌രംഭത്തിന്റെ തുടക്കം മുതലുള്ള തിരുത്തുകൾ",
+       "statistics-edits-average": "ഒരു താളിലെ ശരാശരി തിരുത്തുകൾ",
        "statistics-views-total": "ആകെ സന്ദർശനങ്ങൾ",
        "statistics-views-total-desc": "നിലവില്ലാത്ത താളുകളിലും പ്രത്യേക താളുകളിലും ഉള്ള എടുത്തുനോക്കലുകൾ ഉൾപ്പെടുത്തിയിട്ടില്ല",
        "statistics-views-peredit": "ഓരോ തിരുത്തലിലും ഉള്ള എടുത്തുനോട്ടങ്ങൾ",
        "protectedtitles-summary": "സൃഷ്ടിക്കുന്നതിൽ നിന്നും സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ള താളുകളുടെ പട്ടിക ഇവിടെ കാണാം. സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതും എന്നാൽ നിലവിലുള്ളതുമായ താളുകൾക്കായി [[{{#special:ProtectedPages}}|{{int:protectedpages}}]] കാണുക.",
        "protectedtitlesempty": "ഈ ചരങ്ങൾ ഉപയോഗിച്ചു തലക്കെട്ടുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.",
        "listusers": "ഉപയോക്താക്കളുടെ പട്ടിക",
-       "listusers-editsonly": "തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´\9aàµ\86à´¯àµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ à´\89പയàµ\8bà´\95àµ\8dതാà´\95àµ\8dà´\95à´³àµ\86 à´®à´¾à´¤àµ\8dà´°à´\82 à´\95ാണിà´\95àµ\8dà´\95àµ\81à´\95",
+       "listusers-editsonly": "തിരുത്തുകൾ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കളെ മാത്രം കാണിക്കുക",
        "listusers-creationsort": "സൃഷ്ടിക്കപ്പെട്ട തീയതി അനുസരിച്ച് ക്രമീകരിക്കുക",
        "listusers-desc": "അവരോഹണക്രമത്തിൽ ആക്കുക",
        "usereditcount": "{{PLURAL:$1|ഒരു തിരുത്തൽ|$1 തിരുത്തലുകൾ}}",
        "post-expand-template-inclusion-category-desc": "എല്ലാ ഫലകങ്ങളും വികസിപ്പിച്ചു കഴിയുമ്പോൾ, താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലാവുമെന്നതിനാൽ, ചില ഫലകങ്ങൾ വികസിപ്പിച്ചിരുന്നില്ല.",
        "post-expand-template-argument-category-desc": "ഫലകത്തിലേയ്ക്കുള്ള ചരം വികസിപ്പിച്ച ശേഷം (<code>{{{പന}}}</code> പോലെയുള്ള മൂന്ന് കോഷ്ഠകങ്ങളിലെ എഴുത്ത്), താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലായി.",
        "expensive-parserfunction-category-desc": "നിരവധി വ്യയമേറിയ പാഴ്സർ ഫങ്ഷനുകൾ ( #എങ്കിൽ പോലെയുള്ളവ) താളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] കാണുക.",
-       "broken-file-category-desc": "താളിൽ à´¨à´¿à´²à´µà´¿à´²à´¿à´²àµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിലàµ\8bà´\9fàµ\8dà´\9fàµ\8d à´\95à´£àµ\8dണി à´\9aàµ\87ർതàµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´£àµ\8dà´\9fàµ\86à´\99àµ\8dà´\95ിൽ à´µàµ¼à´\97àµ\8dà´\97à´\82 à´\9aàµ\87ർà´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\81à´\82.",
+       "broken-file-category-desc": "താളിൽ à´¨à´¿à´²à´µà´¿à´²à´¿à´²àµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിലàµ\8bà´\9fàµ\8dà´\9fàµ\8d à´\95à´£àµ\8dണി à´\9aàµ\87ർതàµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´£àµ\8dà´\9fàµ\8d (നിലവിലിലàµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണà´\82 à´\89ൾപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതാനàµ\81à´³àµ\8dà´³ à´\95à´£àµ\8dണി).",
        "hidden-category-category-desc": "ഈ വർഗ്ഗത്തിൽ <code><nowiki>__HIDDENCAT__</nowiki></code> ഉള്ളതിനാൽ, താളുകളിലെ വർഗ്ഗങ്ങളുടെ കണ്ണികൾ കാണിക്കുന്ന പെട്ടിയിൽ സ്വതേ പ്രത്യക്ഷപ്പെടുന്നതല്ല.",
        "trackingcategories-nodesc": "വിവരണം ലഭ്യമല്ല.",
        "trackingcategories-disabled": "വർഗ്ഗം നിർജ്ജീവമാക്കിയിരിക്കുന്നു",
        "mywatchlist": "ശ്രദ്ധിക്കുന്നവ",
        "watchlistfor2": "ഉപയോക്താവ്:$1 $2",
        "nowatchlist": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ഇനങ്ങളൊന്നുമില്ല.",
-       "watchlistanontext": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുവാനോ തിരുത്തുവാനോ $1.",
+       "watchlistanontext": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുവാനോ തിരുത്തുവാനോ പ്രവേശിക്കുക.",
        "watchnologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
        "addwatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്കു ചേർക്കുക",
        "addedwatchtext": "താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്ക്]] \"[[:$1]]\" എന്ന ഈ താൾ ചേർത്തിരിക്കുന്നു. ഇനി മുതൽ ഈ താളിലും ബന്ധപ്പെട്ട സം‌വാദം താളിലും ഉണ്ടാകുന്ന മാറ്റങ്ങൾ ആ പട്ടികയിൽ ദൃശ്യമാവും.",
        "exbeforeblank": "ശൂന്യമാക്കപ്പെടുന്നതിനു മുമ്പുള്ള ഉള്ളടക്കം: '$1'",
        "delete-confirm": "\"$1\" മായ്ക്കുക",
        "delete-legend": "മായ്ക്കുക",
-       "historywarning": "'''മുന്നറിയിപ്പ്''': താങ്കൾ മായ്ക്കുവാൻ പോകുന്ന താളിനു ഏകദേശം {{PLURAL:$1|ഒരു നാൾപ്പതിപ്പ്|$1 നാൾപ്പതിപ്പുകൾ}} ഉള്ള നാൾവഴി ഉണ്ട്:",
+       "historywarning": "<strong>മുന്നറിയിപ്പ്</strong>: താങ്കൾ മായ്ക്കുവാൻ പോകുന്ന താളിനു {{PLURAL:$1|ഒരു നാൾപ്പതിപ്പ്|$1 നാൾപ്പതിപ്പുകൾ}} ഉള്ള നാൾവഴി ഉണ്ട്:",
        "confirmdeletetext": "താങ്കൾ ഒരു താൾ അതിന്റെ നാൾവഴിയടക്കം മായ്ക്കുവാൻ പോവുകയാണ്. ഈ ചെയ്തിയുടെ പരിണതഫലം താങ്കൾക്കറിയാമെന്നും, ഈ നടപടി [[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ചാണു ചെയ്യുന്നതെന്നും ഉറപ്പാക്കുക.",
        "actioncomplete": "പ്രവൃത്തി പൂർത്തിയായിരിക്കുന്നു",
        "actionfailed": "പ്രവൃത്തി പരാജയപ്പെട്ടിരിക്കുന്നു",
        "delete-edit-reasonlist": "മായ്ക്കലിന്റെ കാരണം തിരുത്തുക",
        "delete-toobig": "ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സം‌രംഭത്തിന്റെ നിലനില്പ്പിനെ തന്നെ ബാധിക്കുമെന്നതിനാൽ ഈ താൾ മായ്ക്കുന്നതിനുള്ള അവകാശം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.",
        "delete-warning-toobig": "ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. അതായത്, ഇതിനു് $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സം‌രംഭത്തിന്റെ ഡാറ്റാബേസ് ഓപ്പറേഷനെ ബാധിച്ചേക്കാം. അതിനാൽ വളരെ ശ്രദ്ധാപൂർവ്വം തുടർനടപടികളിലേക്കു നീങ്ങുക.",
+       "deleteprotected": "ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നതിനാൽ താങ്കൾക്കിത് മായ്ക്കാനാവില്ല.",
        "deleting-backlinks-warning": "'''മുന്നറിയിപ്പ്:''' മറ്റു താളുകളിൽ നിന്നും [[Special:WhatLinksHere/{{FULLPAGENAME}}|താളിലേയ്ക്കുള്ള കണ്ണികൾ]] അല്ലെങ്കിൽ ഉൾപ്പെടുത്തിയിട്ടുള്ള താളുകൾ താങ്കൾ മായ്ക്കാൻ പോവുകയാണ്.",
-       "rollback": "തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´±àµ\8bൾബാà´\95àµ\8dà´\95àµ\8d à´\9aàµ\86à´¯àµ\8dà´¯àµ\81à´\95",
+       "rollback": "തിരുത്തുകൾ റോൾബാക്ക് ചെയ്യുക",
        "rollback_short": "റോൾബാക്ക്",
        "rollbacklink": "റോൾബാക്ക്",
        "rollbacklinkcount": "{{PLURAL:$1|ഒരു തിരുത്ത്|$1 തിരുത്തുകൾ}} മുൻപ്രാപനം ചെയ്യുക",
        "uctop": "(നിലവിലുള്ളത്)",
        "month": "മാസം:",
        "year": "വർഷം:",
-       "sp-contributions-newbies": "à´ªàµ\81തിയ à´\85à´\82à´\97à´\99àµ\8dà´\99ൾ à´¨à´\9fà´¤àµ\8dതിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´¾à´¤àµ\8dà´°à´\82",
+       "sp-contributions-newbies": "പുതിയ അംഗങ്ങൾ നടത്തിയ തിരുത്തുകൾ മാത്രം",
        "sp-contributions-newbies-sub": "പുതിയ ഉപയോക്താക്കൾ ചെയ്തവ",
        "sp-contributions-newbies-title": "പുതിയ അംഗത്വമെടുത്ത ഉപയോക്താക്കളുടെ സേവനങ്ങൾ",
        "sp-contributions-blocklog": "തടയൽ രേഖ",
        "autoblockid": "സ്വയം തടയൽ #$1",
        "block": "ഉപയോക്താവിനെ തടയുക",
        "unblock": "ഉപയോക്താവിനുള്ള തടയൽ നീക്കുക",
-       "blockip": "ഉപയോക്താവിനെ തടയുക",
+       "blockip": "{{GENDER:$1|ഉപയോക്താവിനെ}} തടയുക",
        "blockip-legend": "ഉപയോക്താവിനെ തടയുക",
        "blockiptext": "ഏതെങ്കിലും ഐ.പി. വിലാസത്തേയോ ഉപയോക്താവിനേയോ തടയുവാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.\n[[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ച് നശീകരണപ്രവർത്തനം തടയാൻ മാത്രമേ ഇതു ചെയ്യാവൂ.\nതടയാനുള്ള വ്യക്തമായ കാരണം (ഏതു താളിലാണു നശീകരണപ്രവർത്തനം നടന്നത് എന്നതടക്കം) താഴെ രേഖപ്പെടുത്തിയിരിക്കണം.",
        "ipaddressorusername": "ഐ.പി. വിലാസം അല്ലെങ്കിൽ ഉപയോക്തൃനാമം:",
        "ipb-unblock-addr": "$1 അംഗത്വത്തിനുള്ള തടയൽ നീക്കുക",
        "ipb-unblock": "ഒരു ഐ.പി. വിലാസത്തിനോ ഉപയോക്താവിനോ ഉള്ള തടയൽ നീക്കംചെയ്യുക",
        "ipb-blocklist": "നിലവിലുള്ള തടയലുകൾ",
-       "ipb-blocklist-contribs": "$1 നൽകിയ സംഭാവനകൾ",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}} നൽകിയ സംഭാവനകൾ",
        "unblockip": "ഉപയോക്താവിനുള്ള തടയൽ നീക്കുക",
        "unblockiptext": "മുൻപ് തടയപ്പെട്ട ഐ.പി.യുടേയും ഉപയോക്താവിന്റേയും തിരുത്തൽ അവകാശം പുനഃസ്ഥാപിക്കാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.",
        "ipusubmit": "ഈ വിലക്ക് ഒഴിവാക്കുക",
        "import": "താളുകൾ ഇറക്കുമതി ചെയ്യുക",
        "importinterwiki": "അന്തർവിക്കി ഇറക്കുമതി",
        "import-interwiki-text": "വിക്കിയും ഇറക്കുമതി ചെയ്യാനുള്ള താളും തിരഞ്ഞെടുക്കുക.\nപുതുക്കൽ തീയതികളും തിരുത്തിയ ആളുകളുടെ പേരും സൂക്ഷിക്കപ്പെടും.\nഅന്തർവിക്കി ഇറക്കുമതിയുടെ എല്ലാ വിവരങ്ങളും [[Special:Log/import|ഇറക്കുമതി പ്രവർത്തനരേഖ]] എന്ന താളിൽ ശേഖരിക്കപ്പെടും.",
-       "import-interwiki-source": "മൂല വിക്കി/താൾ:",
+       "import-interwiki-sourcewiki": "സ്രോതസ്സ് വിക്കി:",
+       "import-interwiki-sourcepage": "സ്രോതസ്സ് താൾ:",
        "import-interwiki-history": "ഈ താളിന്റെ എല്ലാ പൂർവ്വചരിത്രവും പകർത്തുക",
        "import-interwiki-templates": "എല്ലാ ഫലകങ്ങളും ഉൾപ്പെടുത്തുക",
        "import-interwiki-submit": "ഇറക്കുമതി",
        "log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
        "log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
        "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}.",
+       "default-skin-not-found": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കളുടെ ഇൻസ്റ്റലേഷനിൽ താഴെക്കൊടുക്കുന്ന ദൃശ്യരൂപങ്ങൾ ഉണ്ടാകേണ്ടതാണ്. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.\n\n$2\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല.\n\n; മീഡിയവിക്കി താങ്കൾ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: മീഡിയവിക്കി 1.24 ഒപ്പം അതിനു ശേഷമുള്ളവയും ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സ്വതേ സജ്ജമാക്കുന്നില്ല ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery ദൃശ്യരൂപം ഓട്ടോഡിസ്കവറി സഹായം] കാണുക). ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സജ്ജമാക്കുന്നതിനായി ഇനിക്കൊടുക്കുന്ന വരികൾ <code>LocalSettings.php</code> എന്നതിലോട്ട് പകർത്തുക:\n\n<pre>$3</pre>\n\n; <code>LocalSettings.php</code> താളിൽ മാറ്റം വരുത്തിയതേയുള്ളുവെങ്കിൽ:\n: ദൃശ്യരൂപങ്ങളുടെ പേരിൽ അക്ഷരപിശകുകളുണ്ടോയെന്ന് ആവർത്തിച്ച് പരിശോധിക്കുക.",
+       "default-skin-not-found-no-skins": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കൾ ദൃശ്യരൂപങ്ങളൊന്നും ഇൻസ്റ്റോൾ ചെയ്തിട്ടില്ല.\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ അല്ലെങ്കിൽ അപ്‌ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല. ദൃശ്യരൂപങ്ങൾ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (സജ്ജം)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''സജ്ജമല്ല''')"
 }
index 67e82db..7151271 100644 (file)
        "talkpagelinktext": "Яриа",
        "specialpage": "Тусгай хуудас",
        "personaltools": "Өөрийн багаж хэрэгслүүд",
-       "postcomment": "Шинэ хэсэг",
        "articlepage": "Өгүүллийг үзэх",
        "talk": "Хэлэлцүүлэг",
        "views": "Харагдацууд",
        "hidetoc": "хумих",
        "collapsible-collapse": "хумих",
        "collapsible-expand": "дэлгэх",
+       "confirmable-confirm": "{{GENDER:$1|Та}} итгэлтэй байна уу?",
+       "confirmable-yes": "Тийм",
+       "confirmable-no": "Үгүй",
        "thisisdeleted": "$1-г харах эсвэл сэргээх үү?",
        "viewdeleted": "$1-г харах уу?",
        "restorelink": "{{PLURAL:$1|арилгасан засвар|арилгасан $1 засварууд}}",
        "externaldberror": "Нэг бол гадны баталгаажуулах мэдээллийн сангийн алдаа гарсан, эсвэл та өөрийн гадны бүртгэлээ шинэчлэх эрхгүй байна.",
        "login": "Нэвтрэх",
        "nav-login-createaccount": "Нэвтрэх / Бүртгүүлэх",
-       "loginprompt": "Та {{SITENAME}}-д нэвтрэхийн тулд күүкинүүд ашиглагдана.",
        "userlogin": "Нэвтрэх / Бүртгүүлэх",
        "userloginnocreate": "Нэвтрэх",
        "logout": "Гарах",
        "searchprofile-advanced-tooltip": "Сонгосон нэрний зайнуудаас хайх",
        "search-result-size": "$1 (нийт $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)",
        "search-suggest": "Та $1 гэж хайя гэсэн үү?",
        "preferences": "Хэрэглэгчийн тохиргоо",
        "mypreferences": "Миний тохиргоо",
        "prefs-edits": "Засваруудын тоо:",
+       "prefsnologintext2": "Өөрийн тохиргоогоо өөрчлөхийн тулд логин хийнэ үү.",
        "prefs-skin": "Арьс",
        "skin-preview": "Урьдчилж харах",
        "datedefault": "Анхны байдал",
        "uploadwarning": "Хуулах үеийн анхааруулга",
        "uploadwarning-text": "Доорх файлын тодорхойлолтыг өөрчлөөд дахин оролдоно уу.",
        "savefile": "Файлыг хадгалах",
-       "uploadedimage": "\"[[$1]]\"-г орууллаа",
-       "overwroteimage": "\"[[$1]]\"-н шинэ хувилбарыг орууллаа",
        "uploaddisabled": "Файл оруулах боломжгүй байна.",
        "copyuploaddisabled": "URL-аас оруулж болохгүй.",
        "uploaddisabledtext": "Файл оруулалтуудыг идэвхижүүлээгүй байна.",
        "unusedtemplateswlh": "бусад холбоосууд",
        "randompage": "Санамсаргүй хуудас",
        "randompage-nopages": "Дараах {{PLURAL:$2|нэрний зайнд|нэрний зайнд}} хуудас байхгүй байна : $1. \\",
+       "randomincategory-category": "Ангилал:",
+       "randomincategory-legend": "Ангилалд багтсан дурын хуудас",
        "randomredirect": "Санамсаргүй чиглүүлэгч",
        "randomredirect-nopages": "\"$1\" нэрний зайд чиглүүлэгч байхгүй байна.",
        "statistics": "Статистик мэдээлэл",
        "watchlist-details": "Хяналтын жагсаалтад {{PLURAL:$1|$1 хуудас|$1 хуудаснууд}} байна.",
        "wlheader-enotif": "И-мэйл мэдэгдэл хүчинтэй боллоо.",
        "wlheader-showupdated": "Таны хамгийн сүүлд айлчилснаас хойш өөрчлөгдсөн хуудсууд '''тодоор''' бичигдсэн байгаа",
+       "wlnote": "Энд нь {{PLURAL:$2|цагийн|'''$2''' цагийн}} өмнө хамгийн сүүлд хийсэн {{PLURAL:$1|өөрчлөлт| '''$1''' өөрчлөлтүүд}} байна.",
        "wlshowlast": "Сүүлийн $1 цагийн $2 өдрийн $3-г харуул",
        "watchlist-options": "Хянаж буй хуудсуудын жагсаалтны сонголтууд",
        "watching": "Хянаж байна...",
        "delete-edit-reasonlist": "Устгах шалтгаануудыг засварлах",
        "delete-toobig": "Уг хуудасны засварын түүх маш их, $1 {{PLURAL:$1|засвар|гаруй засвартай}} байна.\n{{SITENAME}}-н аюулгүй байдлын үүднээс дээрх хуудсыг устгахыг хорьсон байна.",
        "delete-warning-toobig": "Энэ хуудасны засварын түүх маш том байгаа бөгөөд {{PLURAL:$1| гаруй засвар| гаруй засварууд}} байна.\nУстгавал {{SITENAME}}-н мэдээллийн сангийн үйл ажиллагаанд нөлөөлж магадгүй тул та анхаарна уу.",
+       "deleteprotected": "Энэ хуудас хамгаалалттай тул устгаж болохгүй.",
        "rollback": "Засваруудыг буцаах",
        "rollback_short": "Буцаах",
        "rollbacklink": "буцаах",
        "whatlinkshere-filters": "Шүүлтүүрүүд",
        "block": "Хэрэглэгчийг блок хийх",
        "unblock": "Хэрэглэгчийг блокоос гаргах",
-       "blockip": "Хэрэглэгчийг түгжих",
+       "blockip": "{{GENDER:$1|хэрэглэгчийн}} түгжих",
        "blockip-legend": "Хэрэглэгчийг түгжих",
        "blockiptext": "Доорх маягтыг ашиглан тодорхой IP хаяг эсвэл хэрэглэгчийн нэрийг засвар хийхээс түгжинэ үү.\nЭнэ нь зөвхөн вандализм үйлдэх явдлаас сэргийлэхийн тулд, [[{{MediaWiki:Policy-url}}|бодлого, баримтлалын]] дагуу хийгдэх ёстой.\nДоор тодорхой шалтгаанаа бичнэ үү.",
        "ipaddressorusername": "IP хаяг буюу хэрэглэгчийн нэр",
        "ipb-unblock-addr": "$1-н түгжээг тайлах",
        "ipb-unblock": "Хэрэглэгчийн нэр эсвэл IP хаягийн түгжээг тайлах",
        "ipb-blocklist": "Байгаа түгжээнүүдийг харах",
-       "ipb-blocklist-contribs": "$1-н хувь нэмэр",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}}-н хувь нэмэр",
        "unblockip": "Хэрэглэгчийг идэвхижүүлэх",
        "unblockiptext": "Өмнө нь хориг тавьсан интернет хаяг юм уу хэрэглэгчийн бичих эрхийг сэргээхийн тулд дорх маягтыг ашигла.",
        "ipusubmit": "Энэ түгжээг цуцлах",
        "import": "Хуудаснуудыг импортлох",
        "importinterwiki": "Транс-викигийн импорт",
        "import-interwiki-text": "Импортлох вики болон хуудасны нэрийг сонгоно уу.\nЗасварын огноонууд болон засварлагчдын нэрс хэвээр үлдэнэ.\n[[Special:Log/import|Импортын логоос]] бүх транс-викигийн үйлдлүүд жагсаагдсан байгаа.",
-       "import-interwiki-source": "Эх үүсвэр вики/хуудас:",
+       "import-interwiki-sourcewiki": "wiki -ын эх сурвалж:",
+       "import-interwiki-sourcepage": "Эх хуудас:",
        "import-interwiki-history": "Энэ хуудсын бүх хувилбаруудын түүхийг хуулах",
        "import-interwiki-templates": "Бүх загварыг оруулах",
        "import-interwiki-submit": "Импортлох",
        "duplicate-defaultsort": "'''Анхаар:''' \"$2\" гэсэн default sort key нь \"$1\" гэсэн өмнөх key-н дээгүүр бичигдэх болж байна.",
        "version": "Хувилбар",
        "version-extensions": "Суулгасан өргөтгөлүүд",
+       "version-skins": "Арьс",
        "version-specialpages": "Тусгай хуудсууд",
        "version-parserhooks": "Парсер хүүкүүд",
        "version-variables": "Хувьсагчууд",
        "version-antispam": "Спамаас сэргийлэх",
-       "version-skins": "Арьс",
        "version-other": "Бусад",
        "version-mediahandlers": "Медиа боловсруулагч",
        "version-hooks": "Гогцоо",
index d7c946f..942ddb7 100644 (file)
        "talkpagelinktext": "चर्चा",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "वैयक्तिक साधने",
-       "postcomment": "नवीन विभाग",
        "articlepage": "लेख पृष्ठ",
        "talk": "चर्चा",
        "views": "दृष्ये",
        "externaldberror": "विदागार ’खातरजमा’ (प्रमाणितीकरण) त्रुटी होती अथवा तुम्हाला तुमचे बाह्य खाते अद्ययावत  करण्याची परवानगी नाही.",
        "login": "सनोंद-प्रवेश(लॉग-ईन)",
        "nav-login-createaccount": "सनोंद-प्रवेश / सदस्यखाते उघडा",
-       "loginprompt": "{{SITENAME}}मध्ये सनोंद-प्रवेशासाठी  स्मृतिशेष सक्षम (कुकिज एनेबल)असणे आवश्यक आहे.",
        "userlogin": "सनोंद-प्रवेश करा /सदस्यखाते उघडा",
        "userloginnocreate": "सनोंद-प्रवेश",
        "logout": "सनोंद-निर्गम",
        "searchprofile-advanced-tooltip": "निवडलेल्या नामविश्वांमध्ये शोधा:",
        "search-result-size": "$1 ({{PLURAL:$2|१ शब्द|$2 शब्द}})",
        "search-result-category-size": "{{PLURAL:$1|१ सदस्य|$1 सदस्य}} ({{PLURAL:$2|१ उपवर्ग|$2 उपवर्ग}}, {{PLURAL:$3|1 संचिका|$3 संचिका}})",
-       "search-result-score": "अन्वर्थकता: $1%",
        "search-redirect": "(पुनर्निर्देशन $1)",
        "search-section": "(विभाग $1)",
        "search-suggest": "तुम्हाला हेच म्हणायचे का: $1",
        "uploadwarning": "चढवताना सूचना",
        "uploadwarning-text": "कृपया खालील संचिका वर्णन संपादित करून पुनर्प्रयत्न करा.",
        "savefile": "संचिका जतन करा",
-       "uploadedimage": "\"[[$1]]\" चे अपभारण केले",
-       "overwroteimage": "\"[[$1]]\" या संचिकेची नवीन आवृत्ती चढविली.",
        "uploaddisabled": "संचिका चढविण्यास बंदी घालण्यात आलेली आहे.",
        "copyuploaddisabled": "आंतरजालपत्त्याद्वारे चढवणे प्रतिबंधित आहे.",
        "uploaddisabledtext": "{{SITENAME}} वर संचिका चढविण्यास बंदी घालण्यात आलेली आहे.",
        "watchlist-details": "पहाऱ्याच्या सूचीमधील {{PLURAL:$1|$1 पान|$1 पाने}}, यात चर्चा पाने मोजलेली नाहीत.",
        "wlheader-enotif": "विपत्र अधिसूचना सुविधा शक्य केली.",
        "wlheader-showupdated": "ती पाने, जी आपण दिलेल्या शेवटच्या भेटीनंतर बदललेली आहेत, '''ठळक''' दाखवली आहेत.",
+       "wlnote": "खाली $3, $4 पर्यंतचे गेल्या {{PLURAL:$2| '''१''' तासातील|'''$2''' तासातील}} {{PLURAL:$1|शेवटचा बदल दिला आहे|शेवटाचे '''$1'''बदल दिले आहेत}}.",
        "wlshowlast": "मागील $1 तास $2 दिवस $3 पहा",
        "watchlist-options": "पहाऱ्याच्या सूचीचे पर्याय",
        "watching": "पहारा देत आहे...",
        "duplicate-defaultsort": "'''ताकिद:''' डिफॉल्ट सॉर्ट की \"$2\" ओवर्राइड्स अर्लीयर डिफॉल्ट सॉर्ट की \"$1\".",
        "version": "आवृत्ती",
        "version-extensions": "स्थापित विस्तार",
+       "version-skins": "त्वचा",
        "version-specialpages": "विशेष पाने",
        "version-parserhooks": "पृथकक अंकुश",
        "version-variables": "चल",
        "version-antispam": "उत्पात प्रतिबंधन",
-       "version-skins": "त्वचा",
        "version-other": "इतर",
        "version-mediahandlers": "मिडिया हॅंडलर",
        "version-hooks": "अंकुश",
index 727e2ab..d78e552 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Amdf",
-                       "Andrijko Z."
+                       "Andrijko Z.",
+                       "아라"
                ]
        },
        "tog-underline": "Ажедмӓшвлӓм ыдыралаш",
@@ -15,7 +16,6 @@
        "tog-showtoolbar": "Текстӹм тӧрлӹмӹ годым кӱшӹл панельӹм анжыкташ (JavaScript)",
        "tog-editondblclick": "Ӹлӹшташвлӓм кок гӓнӓ темдӓл, тӧрлӓш (JavaScript)",
        "tog-editsectiononrightclick": "Секцим тӧрлӹмӹ годым артикль лӹмӹм каля доно вургымлашты темдӓлӓш (JavaScript)",
-       "tog-rememberpassword": "Мӹньӹн шотыш нӓлмӹ сирмӓшем ти компьютерӹштӹ ӓштӓш (максимум $1 {{PLURAL:$1|1=кечы|кечы}})",
        "tog-watchcreations": "Мӹньӹн ӹштӹмӹ ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
        "tog-watchdefault": "Мӹньӹн вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
        "tog-watchmoves": "Мӹньӹн лӹмӹм вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
        "navigation": "Навигаци",
        "qbfind": "Кӹчӓлӓш",
        "qbedit": "Торлӓш",
-       "vector-action-delete": "Карангдаш",
-       "vector-action-move": "Лӹмӹм вашталташ",
-       "vector-action-protect": "Ӹшӹклӓш",
-       "vector-view-create": "Ӹштӓш",
-       "vector-view-edit": "Тӧрлӹмӓш",
-       "vector-view-history": "Историм анжымаш",
-       "vector-view-view": "Лыдмаш",
-       "vector-view-viewsource": "Сек пӹтӓриш кодым анжалаш",
        "errorpagetitle": "Самынь",
        "returnto": "Мӹнгеш ӹлӹштӓшӹш $1.",
        "tagline": "гӹц материал {{grammar:genitive|{{SITENAME}}}}",
        "search-interwiki-more": "(эче)",
        "powersearch-legend": "Кымдан кӹчӓлмӓш",
        "powersearch-ns": "Кымдецвлӓштӹ лӹмвлӓм кӹчӓлмӓш:",
-       "powersearch-redir": "Ажедмӓшвлӓм анжыкташ",
        "preferences": "Настройкывлӓ",
        "mypreferences": "Настройкывлӓ",
        "group-sysop": "Администраторвлӓ",
        "recentchanges": "У тӧрлӹмӓшвлӓ",
        "recentchanges-legend": "У тӧрлӹмашвлӓн настройкышты",
        "recentchanges-feed-description": "Ти лиништӹ Викиштӹш вашталтмашвлӓм анжалаш.",
-       "rclistfrom": "$1 доно вашталтмашвлӓм анжыкташ",
+       "rclistfrom": "$3 $2 доно вашталтмашвлӓм анжыкташ",
        "rcshowhideminor": "$1 изи тӧрлӹмаш",
        "rcshowhidebots": "$1 бот",
        "rcshowhideliu": "$1 тинӓрӹн сирӓлтӹнӹт",
        "recentchangeslinked-to": "Анешлӓ, тӹ ӹлыштӓшвлӓштӹш вашталтымашвлӓм анжыкташ, кыдывлӓ ти ӹлӹштӓшӹшкӹ ажедӹт",
        "upload": "Файлым темӓш",
        "uploadlogpage": "Оптымашвлӓн журналышты",
-       "uploadedimage": "оптымы «[[$1]]»",
        "filehist": "Файлын историжӹ",
        "filehist-help": "Файл тӹнӓм махань ылын, тидӹм ужаш манын датым темдӓлдӓ.",
        "filehist-current": "кӹзӹтшӹ",
        "booksources-go": "Моаш",
        "log": "Журналвлӓ",
        "allpages": "Цилӓ ӹлӹштӓш",
-       "alphaindexline": "$1 гӹц $2 якте",
        "prevpage": "Анзыл ӹлӹштӓш ($1)",
        "allpagesfrom": "Анжыкташ тӹ ӹлӹштӓшвлӓм , кыдывлӓ тӹнгӓлӓлтӹт:",
        "allpagesto": "Лыкмашым тишӓк шагалташ:",
index 852a339..7aa480e 100644 (file)
                ]
        },
        "tog-underline": "Garis bawah pautan:",
-       "tog-hideminor": "Sembunyikan suntingan kecil dalam laman perubahan terkini",
-       "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada laman perubahan terkini",
+       "tog-hideminor": "Sembunyikan suntingan kecil dalam perubahan terkini",
+       "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada 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": "Perubahan kumpulan mengikut laman dalam perubahan terkini dan senarai pantau",
+       "tog-usenewrc": "Kumpulkan perubahan mengikut laman dalam perubahan terkini dan senarai pantau",
        "tog-numberheadings": "Nomborkan tajuk secara automatik",
-       "tog-showtoolbar": "Tunjukkan palang sunting (perlukan JavaScript)",
-       "tog-editondblclick": "Dwiklik untuk sunting laman (JavaScript)",
+       "tog-showtoolbar": "Tunjukkan palang alat sunting",
+       "tog-editondblclick": "Dwiklik untuk menyunting laman",
        "tog-editsectiononrightclick": "Bolehkan penyuntingan bahagian dengan mengklik kanan pada tajuk bahagian",
-       "tog-watchcreations": "Tambahkan laman yang saya buat dan fail yang saya muat naik ke dalam senarai pantau",
-       "tog-watchdefault": "Tambahkan laman dan fail yang saya sunting ke dalam senarai pantau",
-       "tog-watchmoves": "Tambahkan laman dan fail yang saya pindahkan ke dalam senarai pantau",
-       "tog-watchdeletion": "Tambahkan laman dan fail yang saya hapuskan ke dalam senarai pantau",
-       "tog-watchrollback": "Tambah laman-laman di mana saya telah membuat unduran ke senarai pantau saya",
-       "tog-minordefault": "Tandakan semua suntingan sebagai kecil secara asali",
+       "tog-watchcreations": "Tambahkan laman-laman yang saya mencipta dan fail-fail yang saya memuat naik ke dalam senarai pantau saya",
+       "tog-watchdefault": "Tambahkan laman-laman dan fail-fail yang saya menyunting ke dalam senarai pantau saya",
+       "tog-watchmoves": "Tambahkan laman-laman dan fail-fail yang saya memindah ke dalam senarai pantau saya",
+       "tog-watchdeletion": "Tambahkan laman-laman dan fail-fail yang saya menghapus ke dalam senarai pantau saya",
+       "tog-watchrollback": "Tambahkan laman-laman di mana saya telah membuat unduran ke senarai pantau saya",
+       "tog-minordefault": "Tandakan semua suntingan sebagai kecil secara asli",
        "tog-previewontop": "Tunjukkan pralihat di atas kotak sunting",
        "tog-previewonfirst": "Tunjukkan pralihat pada suntingan pertama",
-       "tog-enotifwatchlistpages": "E-mel kepada saya tentang perubahan pada halaman-halaman dan fail-fail dalam senarai pantau saya",
-       "tog-enotifusertalkpages": "E-melkan saya apabila berlaku perubahan pada laman perbincangan saya",
-       "tog-enotifminoredits": "Juga e-mel kepada saya tentang suntingan kecil pada halaman-halaman dan fail-fail",
+       "tog-enotifwatchlistpages": "E-melkan saya apabila sebuah laman atau fail dalam senarai pantau saya telah diubahkan",
+       "tog-enotifusertalkpages": "E-melkan saya apabila laman perbincangan saya telah diubahkan",
+       "tog-enotifminoredits": "Juga e-melkan saya untuk suntingan-suntingan laman dan fail yang kecil",
        "tog-enotifrevealaddr": "Serlahkan alamat e-mel saya dalam e-mel pemberitahuan",
        "tog-shownumberswatching": "Tunjukkan bilangan pemantau",
-       "tog-oldsig": "Tanda tangan yang sedia ada:",
+       "tog-oldsig": "Tandatangan yang sedia ada:",
        "tog-fancysig": "Anggap tandatangan sebagai teks wiki (tanpa pautan automatik)",
        "tog-uselivepreview": "Gunakan pralihat langsung (dalam percubaan)",
        "tog-forceeditsummary": "Tanya saya jika ringkasan suntingan kosong",
        "tog-watchlisthideown": "Sembunyikan suntingan saya daripada senarai pantau",
        "tog-watchlisthidebots": "Sembunyikan suntingan bot daripada senarai pantau",
        "tog-watchlisthideminor": "Sembunyikan suntingan kecil daripada senarai pantau",
-       "tog-watchlisthideliu": "Sembunyikan suntingan oleh pengguna log masuk daripada senarai pantau",
+       "tog-watchlisthideliu": "Sembunyikan suntingan oleh pengguna yang dilog masuk daripada senarai pantau",
        "tog-watchlisthideanons": "Sembunyikan suntingan oleh pengguna tanpa nama daripada senarai pantau",
-       "tog-watchlisthidepatrolled": "Sorokkan suntingan yang telah dironda daripada senarai pantau",
+       "tog-watchlisthidepatrolled": "Sembunyikan suntingan yang telah dironda daripada senarai pantau",
        "tog-ccmeonemails": "Kirimkan saya salinan e-mel yang saya hantar kepada pengguna lain",
        "tog-diffonly": "Jangan tunjukkan kandungan laman di bawah perbezaan",
        "tog-showhiddencats": "Tunjukkan kategori tersembunyi",
        "tog-norollbackdiff": "Abaikan perbezaan selepas melakukan pengunduran suntingan.",
-       "tog-useeditwarning": "Beri saya amaran apabila saya meninggalkan sesebuah laman penyuntingan tanpa menyimpan perubahan.",
+       "tog-useeditwarning": "Berikan saya amaran apabila saya meninggalkan sesebuah laman penyuntingan tanpa menyimpan perubahan",
        "tog-prefershttps": "Sentiasa gunakan sambungan terlindung apabila log masuk",
        "underline-always": "Sentiasa",
        "underline-never": "Jangan",
        "pool-timeout": "Menunggu sebentar untuk dikunci",
        "pool-queuefull": "Giliran kolam telah penuh",
        "pool-errorunknown": "Ralat tak diketahui",
+       "pool-servererror": "Perkhidmatan kaunter tabung tidak disediakan ($1).",
        "aboutsite": "Perihal {{SITENAME}}",
        "aboutpage": "Project:Perihal",
        "copyright": "Kandungan disediakan di bawah $1 melainkan dinyatakan sebaliknya.",
        "laggedslavemode": "Amaran: Laman ini mungkin bukan yang terkini.",
        "readonly": "Pangkalan data dikunci",
        "enterlockreason": "Sila nyatakan sebab penguncian dan jangkaan\nbila kunci ini akan dibuka.",
-       "readonlytext": "Pangkalan data sedang dikunci. Hal ini mungkin disebabkan oleh penyenggaraan rutin, dan akan dibuka semula selepas proses penyenggaraan ini siap.\n\nPentadbir yang menguncinya memberi penjelasan ini: $1",
-       "missing-article": "Teks bagi laman \"$1\" $2 tidak dijumpai dalam pangkalan data.\n\nPerkara ini biasanya disebabkan oleh perbuatan mengikuti pautan perbezaan yang lama atau pautan ke laman yang telah dihapuskan.\n\nJika bukan ini sebabnya, anda mungkin telah menjumpai pepijat dalam perisian ini.\nSila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:ListUsers/sysop|pentadbir]].",
+       "readonlytext": "Pangkalan data telah dikunci daripada penyertaan baru dan perubahan-perubahan lain, mungkin untuk penyenggaraan pangkalan data yang rutin, dan akan dibuka semula selepas ia disiapkan.\n\nPenyelia yang menguncinya telah memberi penjelasan ini: $1",
+       "missing-article": "Teks bagi laman \"$1\" $2 tidak dijumpai dalam pangkalan data.\n\nPerkara ini biasanya disebabkan oleh perbuatan mengikuti pautan perbezaan yang lama atau pautan ke sejarah laman yang telah dihapuskan.\n\nJika ini bukan sebabnya, anda mungkin telah menjumpai pepijat dalam perisian ini.\nSila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:ListUsers/sysop|penyelia]].",
        "missingarticle-rev": "(semakan $1)",
        "missingarticle-diff": "(Beza: $1, $2)",
        "readonly_lag": "Pangkalan data telah dikunci secara automatik sementara semua pelayan pangkalan data diselaraskan.",
        "mypreferencesprotected": "Anda tidak mempunyai kebenaran untuk menyunting tetapan keutamaan anda.",
        "ns-specialprotected": "Laman khas tidak boleh disunting.",
        "titleprotected": "Tajuk ini telah dilindungi oleh [[User:$1|$1]] daripada dicipta. Sebab yang diberikan ialah ''$2''.",
-       "filereadonlyerror": "Fail \"$1\" tidak dapat diubah suai kerana repositori fail \"$2\" berada dalam ragam baca sahaja.\n\nPentadbir yang menguncinya memberikan penjelasan yang berikut: \"$3\".",
+       "filereadonlyerror": "Fail \"$1\" tidak dapat diubah suai kerana repositori fail \"$2\" berada dalam mod baca sahaja.\n\nPenyelia yang telah menguncinya memberikan penjelasan berikut: \"$3\".",
        "invalidtitle-knownnamespace": "Tajuk tidak sah dengan ruang nama \"$2\" dan teks \"$3\"",
        "invalidtitle-unknownnamespace": "Tajuk tidak sah dengan nombor ruang nama tidak dikenali $1 dan teks \"$2\"",
        "exception-nologin": "Belum log masuk",
        "summary-preview": "Pralihat ringkasan:",
        "subject-preview": "Pralihat tajuk:",
        "blockedtitle": "Pengguna disekat",
-       "blockedtext": "'''Nama pengguna atau alamat IP anda telah disekat.'''\n\nSekatan ini dilakukan oleh $1 dengan sebab ''$2''.\n\n* Mula: $8\n* Tamat: $6\n* Pengguna sasaran: $7\n\nSila hubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|pentadbir]] yang lain untuk untuk berunding mengenai sekatan ini.\n\nAnda tidak boleh menggunakan ciri \"e-melkan pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5. Sila sertakan maklumat-maklumat ini dalam pertanyaan nanti.",
-       "autoblockedtext": "Alamat IP anda telah disekat secara automatik kerana ia digunakan oleh pengguna lain yang disekat oleh $1.\nYang berikut ialah sebab yang dinyatakan:\n\n:''$2''\n\n* Mula: $8\n* Tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh menghubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|pentadbir]] lain untuk berunding mengenai sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"e-melkan pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|laman keutamaan]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5. Sila sertakan maklumat-maklumat ini dalam pertanyaan nanti.",
+       "blockedtext": "<strong>Nama pengguna atau alamat IP anda telah disekat.</strong>\n\nSekatan ini dilakukan oleh $1.\nSebab yang telah diberikan ialah <em>$2</em>.\n\n* Sekatan mula: $8\n* Sekatan tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh hubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|penyelia]] yang lain untuk membincangkan sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"kirim e-mel kepada pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan pengguna]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5.\nSila sertakan maklumat-maklumat di atas dalam sebarang pertanyaan yang anda membuat.",
+       "autoblockedtext": "Alamat IP anda telah disekat secara automatik kerana ia digunakan oleh pengguna lain yang disekat oleh $1.\nSebab yang dinyatakan ialah:\n\n:<em>$2</em>\n\n* Sekatan mula: $8\n* Sekatan tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh menghubungi $1 atau seorang [[{{MediaWiki:Grouppage-sysop}}|penyelia]] yang lain untuk membincangkan sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"kirim e-mel kepada pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan pengguna]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5.\nSila sertakan maklumat-maklumat di atas dalam sebarang pertanyaan yang anda membuat.",
        "blockednoreason": "tiada sebab diberikan",
        "whitelistedittext": "Anda hendaklah $1 terlebih dahulu untuk menyunting laman.",
        "confirmedittext": "Anda perlu mengesahkan alamat e-mel anda terlebih dahulu untuk menyunting mana-mana laman. Sila tetapkan dan sahkan alamat e-mel anda melalui [[Special:Preferences|laman keutamaan]].",
        "token_suffix_mismatch": "'''Suntingan anda telah ditolak kerana pelanggan anda memusnahkan aksara tanda baca\ndalam token suntingan. Suntingan tersebut telah ditolak untuk menghalang kerosakan teks laman.\nHal ini kadangkala berlaku apabila anda menggunakan khidmat proksi tanpa nama berdasarkan web yang bermasalah.'''",
        "edit_form_incomplete": "'''Beberapa bahagian dari bentuk edit tidak mencapai pelayan, periksa bahawa suntingan anda utuh dan cuba lagi'.'''",
        "editing": "Menyunting $1",
-       "creating": "Membuat $1",
+       "creating": "Mencipta $1",
        "editingsection": "Menyunting $1 (bahagian)",
        "editingcomment": "Menyunting $1 (bahagian baru)",
        "editconflict": "Percanggahan penyuntingan: $1",
        "parser-template-recursion-depth-warning": "Had pengulangan templat dilebihi ($1)",
        "language-converter-depth-warning": "Had kedalaman penukar bahasa dilepasi ($1)",
        "node-count-exceeded-category": "Laman yang melebihi had kiraan nod",
+       "node-count-exceeded-category-desc": "Laman telah melebihi kiraan kod maksimum.",
        "node-count-exceeded-warning": "Laman telah melebihi bilangan nod",
        "expansion-depth-exceeded-category": "Laman yang melebihi had kedalaman peluasan",
+       "expansion-depth-exceeded-category-desc": "Laman telah melebihi kedalaman peluasan maksimum.",
        "expansion-depth-exceeded-warning": "Laman terlebih dalam peluasan",
        "parser-unstrip-loop-warning": "Gelung unstrip dikesan",
        "parser-unstrip-recursion-limit": "Had rekursi unstrip dilampaui ($1)",
        "rev-suppressed-no-diff": "Anda tidak boleh melihat perbezaan ini kerana salah satu semakannya telah '''dihapuskan'''.",
        "rev-deleted-unhide-diff": "Salah satu semakan perbezaan ini telah '''dihapuskan'''.\nButiran lanjut boleh didapati dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].\nAnda masih boleh [$1 melihat semakan ini] jika anda ingin teruskan.",
        "rev-suppressed-unhide-diff": "Salah satu semakan perbezaan ini telah '''diselindungkan'''.\nButiran lanjut boleh didapati dalam [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penyelindungan].\nAnda masih boleh [$1 melihat perbezaan ini] jika anda ingin teruskan.",
-       "rev-deleted-diff-view": "Salah satu semakan perbezaan ini telah '''dihapuskan'''.\nSebagai pentadbir anda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+       "rev-deleted-diff-view": "Salah satu semakan perbezaan ini telah <strong>dihapuskan</strong>.\nAnda boleh melihat perbezaan ini; butiran boleh didapati di dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
        "rev-suppressed-diff-view": "Salah satu semakan perbezaan ini telah '''dipendam'''.\nAnda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penyelindungan].",
        "rev-delundel": "tunjukkan/sorokkan",
        "rev-showdeleted": "tunjukkan",
        "revdelete-edit-reasonlist": "Ubah sebab-sebab hapus",
        "revdelete-offender": "Pengarang semakan:",
        "suppressionlog": "Log penahanan",
-       "suppressionlogtext": "Berikut adalah daftar penghapusan dan sekatan yang melibatkan kandungan yang disembunyikan daripada pentadbir.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.",
+       "suppressionlogtext": "Berikut adalah senarai penghapusan dan sekatan yang melibatkan kandungan yang telah disembunyikan daripada penyelia.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.",
        "mergehistory": "Gabungkan sejarah laman",
        "mergehistory-header": "Anda boleh menggabungkan semua semakan dalam sejarah bagi sesebuah laman sumber ke dalam laman lain.\nSila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.\n\n'''Setidak-tidaknya semakan semasa bagi laman sumber akan ditinggalkan.'''",
        "mergehistory-box": "Gabungkan semakan bagi dua laman:",
        "prefs-advancedwatchlist": "Pilihan lanjutan",
        "prefs-displayrc": "Pilihan paparan",
        "prefs-displaywatchlist": "Pilihan paparan",
+       "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Beza",
        "prefs-help-prefershttps": "Keutamaan inu akan berkuatkuasa pada lain kali anda log masuk.",
        "prefs-tabs-navigation-hint": "Petua: Anda boleh menggunakan kekunci anak panah kiri atau kanan untuk beralihan dari tab ke tab pada senarai tab.",
        "userrights-reason": "Sebab:",
        "userrights-no-interwiki": "Anda tidak mempunyai keizinan untuk mengubah hak-hak pengguna di wiki lain.",
        "userrights-nodatabase": "Pangkalan data $1 tiada atau bukan tempatan.",
-       "userrights-nologin": "Anda mesti [[Special:UserLogin|log masuk]] dengan akaun pentadbir terlebih dahulu untuk memperuntukkan hak-hak pengguna.",
+       "userrights-nologin": "Anda mesti [[Special:UserLogin|log masuk]] dengan akaun penyelia terlebih dahulu untuk memperuntukkan hak-hak pengguna.",
        "userrights-notallowed": "Akuan anda tidak dibenarkan untuk menambah atau membuang hak pengguna.",
        "userrights-changeable-col": "Kumpulan yang anda boleh ubah",
        "userrights-unchangeable-col": "Kumpulan yang anda tak boleh ubah",
        "upload-proto-error": "Protokol salah",
        "upload-proto-error-text": "Muat naik jauh memerlukan URL yang dimulakan dengan <code>http://</code> atau <code>ftp://</code>.",
        "upload-file-error": "Ralat dalaman",
-       "upload-file-error-text": "Ralat dalaman telah berlaku ketika cuba mencipta fail sementara pada komputer pelayan.\nSila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].",
+       "upload-file-error-text": "Ralat dalaman telah berlaku ketika mencubai menciptakan fail sementara pada komputer pelayan.\nSila hubungi seorang [[Special:ListUsers/sysop|penyelia]].",
        "upload-misc-error": "Ralat muat naik yang tidak diketahui",
-       "upload-misc-error-text": "Ralat yang tidak diketahui telah berlaku ketika muat naik. Sila pastikan bahawa URL tersebut sah dan boleh dicapai kemudian cuba lagi. Jika masalah ini berterusan, sila hubungi pentadbir sistem.",
+       "upload-misc-error-text": "Ralat yang tidak diketahui telah berlaku ketika muat naik.\nSila pastikan bahawa URL tersebut sah dan boleh dicapai, kemudian cuba lagi.\nJika masalah ini berterusan, sila hubungi seorang [[Special:ListUsers/sysop|penyelia]].",
        "upload-too-many-redirects": "URL ini mengandungi terlalu banyak lencongan",
        "upload-http-error": "Berlaku ralat HTTP: $1",
        "upload-copy-upload-invalid-domain": "Muat naik salin tidak terdapat dari domain ini.",
        "randomincategory": "Laman rawak dalam kategori",
        "randomincategory-invalidcategory": "\"$1\" bukan nama kategori yang sah.",
        "randomincategory-nopages": "Tiada halaman di [[:Category:$1]].",
-       "randomincategory-selectcategory": "Dapatkan halaman pilihan rawak dari kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Pergi",
+       "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Laman rawak dalam kategori",
        "randomredirect": "Lencongan rawak",
        "randomredirect-nopages": "Tiada lencongan dalam ruang nama \"$1\".",
        "statistics": "Statistik",
        "trackingcategories-msg": "Kategori penjejak",
        "trackingcategories-name": "Nama pesanan",
        "trackingcategories-desc": "Kriteria kemasukan kategori",
+       "noindex-category-desc": "Laman tidak didaftar oleh robot kerana ia mempunyai kata ajaib <code><nowiki>__NOINDEX__</nowiki></code> padanya dan terdapat dalam ruang nama di mana tanda tersebut adalah dibenarkan.",
+       "index-category-desc": "Laman mempunyai <code><nowiki>__INDEX__</nowiki></code> padanya (dan terdapat dalam ruang nama di mana tanda tersebut dibenarkan), dan oleh itu adalah didaftar oleh robot di mana ia biasanya tidak akan.",
+       "post-expand-template-inclusion-category-desc": "Saiz laman melebihi <code>$wgMaxArticleSize</code> setelah semua templat telah dikembangkan; oleh itu beberapa templat tidak dikembangkan.",
+       "post-expand-template-argument-category-desc": "Laman menjadi lebih besar daripada <code>$wgMaxArticleSize</code> setelah mengembangkan sebuah hujah templat (sebarang dalam tiga kurungan, seperti <code>{{{Foo}}}</code>.)",
+       "expensive-parserfunction-category-desc": "Laman menggunakan terlalu banyak fungsi parser yang mahal (seperti <code>#ifexist</code>). Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Laman mempunyai pautan fail yang putus (pautan untuk membenam sebuah fail apabila fail tersebut tidak wujud).",
+       "hidden-category-category-desc": "Kategori mengandungi <code><nowiki>__HIDDENCAT__</nowiki></code> dalam kandungan laman, menghalangkannya daripada paparan dalam kotak pautan kategori pada laman-laman secara asli.",
        "trackingcategories-nodesc": "Tiada keterangan tersedia.",
        "trackingcategories-disabled": "Kategori telah dimatikan",
        "mailnologin": "Tiada alamat e-mel",
        "exbeforeblank": "kandungan sebelum pengosongan ialah: '$1'",
        "delete-confirm": "Hapus \"$1\"",
        "delete-legend": "Hapuskan",
-       "historywarning": "'''Amaran:''' Laman yang ingin anda hapuskan mengandungi sejarah dengan kira-kira $1 {{PLURAL:$1|semakan|semakan}}:",
+       "historywarning": "<strong>Amaran:</strong> Laman yang ingin anda hapuskan mempunyai sejarah dengan $1 semakan:",
        "confirmdeletetext": "Anda sudah hendak menghapuskan sebuah laman berserta semua sejarahnya.\nSila sahkan bahawa anda memang hendak berbuat demikian, anda faham akan\nakibatnya, dan perbuatan anda mematuhi [[{{MediaWiki:Policy-url}}|dasar kami]].",
        "actioncomplete": "Tindakan berjaya",
        "actionfailed": "Tindakan gagal",
        "delete-edit-reasonlist": "Ubah sebab-sebab hapus",
        "delete-toobig": "Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.",
        "delete-warning-toobig": "Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.",
+       "deleteprotected": "Anda tidak boleh menghapuskan laman ini kerana ia telah dilindungi.",
        "deleting-backlinks-warning": "'''Amaran:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Terdapat laman lain]] yang berpaut atau bertransklusi dengan laman yang hendak anda hapus ini.",
        "rollback": "Undurkan suntingan.",
        "rollback_short": "Undur",
        "undeleterevisions": "$1 semakan telah diarkibkan.",
        "undeletehistory": "Jika anda memulihkan laman tersebut, semua semakan akan dipulihkan kepada sejarahnya. Jika sebuah laman baru yang mempunyai nama yang sama telah dicipta sejak penghapusan, semakan yang dipulihkan akan muncul dalam sejarah terdahulu.",
        "undeleterevdel": "Penyahhapusan tidak akan dilaksanakan sekiranya ia menyebabkan sebahagian semakan puncak dihapuskan.\nDalam hal tersebut, anda perlu membuang semak atau menyemak semakan yang baru dihapuskan. Semakan fail\nyang anda tidak dibenarkan melihatnya tidak akan dipulihkan.",
-       "undeletehistorynoadmin": "Rencana ini telah dihapuskan. Sebab penghapusan\nditunjukkan dalam ringkasan di bawah, berserta butiran bagi pengguna-pengguna yang telah menyunting laman ini\nsebelum penghapusan. Teks sebenar bagi semua semakan yang dihapuskan hanya boleh dilihat oleh para pentadbir.",
+       "undeletehistorynoadmin": "Laman ini telah dihapuskan.\nSebab penghapusan ditunjukkan dalam ringkasan di bawah, berserta butiran pengguna-pengguna yang telah menyunting laman ini sebelum penghapusan.\nTeks sebenar bagi semakan yang dihapuskan berikut hanya boleh dilihat oleh para penyelia.",
        "undelete-revision": "Menghapuskan semakan bagi $1 (pada $4, $5) oleh $3:",
        "undeleterevision-missing": "Semakan tersebut tidak sah atau tidak dijumpai. Mungkin anda telah mengikuti pautan yang rosak\natau semakan tersebut telah dipulihkan atau dibuang daripada arkib.",
        "undelete-nodiff": "Tiada semakan sebelumnya.",
        "sp-contributions-newbies-sub": "Bagi akaun-akaun baru",
        "sp-contributions-newbies-title": "Sumbangan oleh pengguna baru",
        "sp-contributions-blocklog": "log sekatan",
+       "sp-contributions-suppresslog": "sumbangan pengguna tersembunyi",
        "sp-contributions-deleted": "sumbangan dihapuskan",
        "sp-contributions-uploads": "muat naik",
        "sp-contributions-logs": "log",
        "movepagetalktext": "Laman perbincangan yang berkaitan, jika ada, akan dipindahkan bersama-sama laman ini secara automatik '''kecuali''':\n* Sebuah laman perbincangan dengan nama baru telah pun wujud, atau\n* Anda membuang tanda kotak di bawah.\n\nDalam kes tersebut, anda terpaksa melencongkan atau menggabungkan laman secara manual, jika perlu.",
        "movearticle": "Pindahkan laman:",
        "moveuserpage-warning": "'''Amaran:''' Anda sudah hendak memindahkan suatu laman pengguna. Sila ambil perhatian bahawa hanya laman tersebut akan dipindahkan dan nama pengguna yang berkenaan ''tidak'' berubah.",
+       "movecategorypage-warning": "<strong>Amaran:</strong> Anda hendak memindahkan sebuah laman kategori. Sila ambil perhatian bahawa hanya laman akan dipindahkan dan sebarang laman dalam kategori laman <em>tidak</em> akan dikategorikan semula ke dalam yang baru.",
        "movenologintext": "Anda mesti [[Special:UserLogin|log masuk]] terlebih dahulu untuk memindahkan laman.",
        "movenotallowed": "Anda tidak mempunyai keizinan untuk memindahkan laman.",
        "movenotallowedfile": "Anda tidak mempunyai keizinan untuk memindahkan fail.",
        "thumbnail_image-type": "Jenis imej tidak disokong",
        "thumbnail_gd-library": "Tatarajah perpustakaan GD tidak lengkap: kehilangan fungsi $1",
        "thumbnail_image-missing": "Fail ini nampaknya hilang: $1",
+       "thumbnail_image-failure-limit": "Terdapat terlalu banyak percubaan yang gagal ($1 atau lebih) untuk memaparkan thumbnail ini. Sila cuba lagi kemudian.",
        "import": "Import laman",
        "importinterwiki": "Import transwiki",
        "import-interwiki-text": "Sila pilih wiki dan tajuk laman yang ingin diimport.\nSemua tarikh semakan dan nama penyunting akan dikekalkan.\nSemua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import]].",
-       "import-interwiki-source": "Sumber wiki/halaman:",
+       "import-interwiki-sourcewiki": "Wiki sumber:",
+       "import-interwiki-sourcepage": "Laman sumber:",
        "import-interwiki-history": "Salin semua versi sejarah bagi laman ini",
        "import-interwiki-templates": "Sertakan semua templat",
        "import-interwiki-submit": "Import",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|bincang]])",
        "unknown_extension_tag": "Tag penyambung \"$1\" tidak dikenali",
        "duplicate-defaultsort": "'''Amaran''': Kunci susunan asali \"$2\" membatalkan kunci susunan asali \"$1\" yang sebelumnya.",
+       "duplicate-displaytitle": "<strong>Amaran:</strong> Tajuk paparan \"$2\" mengatasi tajuk paparan awal \"$1\".",
        "version": "Versi",
        "version-extensions": "Penyambung yang dipasang",
        "version-skins": "Rupa-rupa yang telah dipasangkan",
        "tags": "Label perubahan yang sah",
        "tag-filter": "Tapis [[Special:Tags|label]]:",
        "tag-filter-submit": "Tapis",
-       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Teg}}]]: $2)",
+       "tag-list-wrapper": "([[Special:Tags|Label]]: $2)",
        "tags-title": "Label",
        "tags-intro": "Yang berikut ialah senarai label yang digunakan untuk menanda suntingan, berserta maknanya.",
        "tags-tag": "Nama label",
        "action-pagelang": "mengubah bahasa laman",
        "log-name-pagelang": "Log perubahan bahasa",
        "log-description-pagelang": "Ini adalah log untuk perubahan-perubahan bahasa laman.",
-       "logentry-pagelang-pagelang": "$1 telah {{GENDER:$2|mengubahkan}} bahasa untuk laman $3 dari $4 ke $5."
+       "logentry-pagelang-pagelang": "$1 telah {{GENDER:$2|mengubahkan}} bahasa untuk laman $3 dari $4 ke $5.",
+       "default-skin-not-found": "Whoops! Rupa asli untuk wiki anda (<code>$wgDefaultSkin</code>), <code>$1</code>, tidak disediakan.\n\nPasangan anda kelihatan untuk mempunyai rupa-rupa berikut. Lihat [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] untuk maklumat cara membolehkan mereka dan memilih yang asli.\n\n$2\n\n; Jika anda baru sahaja memasang MediaWiki:\n: Anda kemungkinan memasang dari git, atau terus dari kod sumber melalui cara lain. Ini adalah dijangka. Cubalah memasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins panduan rupa mediawiki.org], dengan:\n:* Memuat turun [https://www.mediawiki.org/wiki/Download pemasang tarball] yang terlengkap dengan beberapa rupa dan sambungan. Anda boleh menyalin dan menampal direktori <code>skins/</code> terus darinya.\n:* Mengeklon salah satu repositori <code>mediawiki/skins/*</code> melalui git ke dalam direktori <code>skins/</code> pasangan MediaWiki anda.\n: Perbuatan ini tidak patut mengganggu repositori git anda jika anda seorang pembangun MediaWiki.\n\n; Jika anda baru sahaja menaik taraf MediaWiki:\n: MediaWiki 1.24 dan ke atas tidak lagi membolehkan rupa-rupa yang dipasang secara automatik (lihat [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:Skin autodiscovery]). Anda boleh menampalkan baris-baris berikut ke dalam <code>LocalSettings.php</code> untuk membolehkan semua rupa yang semasa dipasang:\n\n<pre>$3</pre>\n\n; Jika anda baru sahaja mengubah <code>LocalSettings.php</code>:\n: Semakkan lagi nama-nama rupa untuk kesalahan ejaan.",
+       "default-skin-not-found-no-skins": "Whoops! Rupa asli untuk wiki anda (<code>$wgDefaultSkin</code>), <code>$1</code>, tidak disediakan.\n\nAnda tidak mempunyai rupa-rupa yang dipasang.\n\n; Jika anda baru sahaja memasang atau menaik taraf MediaWiki:\n: Anda kemungkinan memasang dari git, atau terus dari kod sumber melalui cara lain. Ini adalah dijangka. MediaWiki 1.24 dan ke atas tidak memasuki sebarang rupa dalam repositori utama. Cubalah memasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins panduan rupa mediawiki.org], dengan:\n:* Memuat turun [https://www.mediawiki.org/wiki/Download pemasang tarball] yang terlengkap dengan beberapa rupa dan sambungan. Anda boleh menyalin dan menampal direktori <code>skins/</code> terus darinya.\n:* Mengeklon salah satu repositori <code>mediawiki/skins/*</code> melalui git ke dalam direktori <code>skins/</code> pasangan MediaWiki anda.\n: Perbuatan ini tidak patut mengganggu repositori git anda jika anda seorang pembangun MediaWiki. Lihat [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] untuk maklumat cara membolehkan mereka dan memilih yang asli.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (dibolehkan)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''dimatikan''')"
 }
index edff6ba..3983159 100644 (file)
        "searchprofile-advanced-tooltip": "Fittex fi spazji tal-isem personalizzati",
        "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 kliem}})",
        "search-result-category-size": "{{PLURAL:$1|membru wieħed|$1 membri}} ({{PLURAL:$2|sottokategorija waħda|$2 sottokategoriji}}, {{PLURAL:$3|fajl wieħed|$3 fajls}})",
-       "search-result-score": "Relevanza: $1%",
        "search-redirect": "(rindirizza $1)",
        "search-section": "(sezzjoni $1)",
        "search-suggest": "Trid tfisser: $1",
        "uploadwarning": "Twissija dwar it-tlugħ tal-fajls",
        "uploadwarning-text": "Jekk jogħġbok immodifika hawn taħt id-deskrizzjoni tal-fajl u pprova mill-ġdid.",
        "savefile": "Salva l-fajl",
-       "uploadedimage": "tella' \"[[$1]]\"",
-       "overwroteimage": "Verżjoni ġdida ġiet imtella' \"[[$1]]\"",
        "uploaddisabled": "Skuzana, però ''uploads'' ta' fajls huwa temporalment sospiż.",
        "copyuploaddisabled": "It-tlugħ mill-URL huwa diżattivat.",
        "uploaddisabledtext": "It-tlugħ ta' fajls mhuwiex attiv.",
        "watchlist-details": "Il-lista ta' osservazzjoni fiha {{PLURAL:$1|paġna waħda (u l-paġna ta' diskussjoni tagħha)|$1 paġni (u l-paġni ta' diskussjoni tagħhom)}}.",
        "wlheader-enotif": "In-notifikazzjoni bl-użu tal-posta elettronika hija attivata.",
        "wlheader-showupdated": "Il-paġni li ġew editjati wara l-aħħar żjara tiegħek qed jiġu murija b'tipa '''ħoxna'''",
+       "wlnote": "Hawn taħt hawn {{PLURAL:$1|l-aħħar modifika|l-aħħar '''$1''' modifiki}} fl-aħħar {{PLURAL:$2|siegħa|'''$2''' siegħat}}, sal-$3, fil-$4.",
        "wlshowlast": "Uri l-aħħar $1 siegħat $2 ġranet $3",
        "watchlist-options": "Opzjonijiet tal-lista ta' osservazzjoni",
        "watching": "Imsegwi...",
index 7ad868f..3e81d22 100644 (file)
        "talkpagelinktext": "Cumbersar",
        "specialpage": "Páigina special",
        "personaltools": "Ferramientas pessonales",
-       "postcomment": "Nuobo cacho",
        "articlepage": "Ber páigina de cuntenido",
        "talk": "Çcusson",
        "views": "Besitas",
        "yourdomainname": "L tou domínio",
        "login": "Antrar",
        "nav-login-createaccount": "Antrar / criar cuonta",
-       "loginprompt": "Tenes que tener ls <i>cookies</i> atibos para te outenticares an{{SITENAME}}.",
        "userlogin": "Antrar / criar cuonta",
        "logout": "Salir",
        "userlogout": "Salir",
        "filesource": "Fuonte:",
        "ignorewarnings": "Eignorar qualquiera abiso",
        "savefile": "Grabar fexeiro",
-       "uploadedimage": "cargou \"[[$1]]\"",
        "watchthisupload": "Begiar este fexeiro",
        "upload-curl-error28": "Ultrapassado l tiempo lhemite pa l ambio de l fexeiro",
        "license": "Lhicença:",
index ed24060..6620607 100644 (file)
        "talkpagelinktext": "ဆွေးနွေးရန်",
        "specialpage": "အထူး စာမျက်နှာ",
        "personaltools": "ကိုယ်ပိုင် ကိရိယာများ",
-       "postcomment": "အပိုင်းသစ်",
        "articlepage": "မာတိကာ ကြည့်ရန်",
        "talk": "ဆွေးနွေးချက်များ",
        "views": "ပုံပန်းသွင်ပြင်",
        "yourdomainname": "သင့်ဒိုမိန်း -",
        "login": "Log in ဝင်ရန်",
        "nav-login-createaccount": "Log in ဝင်ရန်/ အကောင့် လုပ်ရန်",
-       "loginprompt": "{{SITENAME}} သို့ လော့အင်ဝင်ရန် ကွတ်ကီးသုံးနိုင်ရန် ပြုလုပ်ပေးထားရမည်။",
        "userlogin": "Log in ဝင်ရန်/ အကောင့် လုပ်ရန်",
        "userloginnocreate": "Log in ဝင်ရန်",
        "logout": "ထွက်ရန်",
        "searchprofile-advanced-tooltip": "စိတ်ကြိုက်အမည်ညွှန်းများတွင် ရှာရန်",
        "search-result-size": "$1 ({{PLURAL:$2|စကားလုံး 1 လုံး|စကားလုံး $2 လုံး}})",
        "search-result-category-size": "{{PLURAL:$1|အသင်းဝင်တစ်ခု|အသင်းဝင် $1 ခု}} ({{PLURAL:$2|ကဏ္ဍခွဲတစ်ခု|ကဏ္ဍခွဲ $2 ခု}}, {{PLURAL:$3|ဖိုင်တစ်ခု|ဖိုင် $3 ခု}})",
-       "search-result-score": "ကိုက်ညီမှုရာနှုန်း - $1%",
        "search-redirect": "($1 သို့ ပြန်ညွှန်းသည်)",
        "search-section": "(အပိုင်း $1)",
        "search-suggest": "$1 ဟု ဆိုလိုပါသလား။",
        "largefileserver": "ဤဖိုင်သည် ဆာဗာတွင် ခွင့်ပြုရန်သတ်မှတ်ထားသော ဖိုင်အရွယ်အစားထက် ကြီးနေသည်။",
        "uploadwarning": "Upload တင်ရာတွင် သတ်ပေးချက်",
        "savefile": "ဖိုင်သိမ်းရန်",
-       "uploadedimage": "\"[[$1]]\" ပုံကို တင်ပြီးပြီဖြစ်သည်",
-       "overwroteimage": "\"[[$1]]\" ၏ မူသစ်ကို upload တင်လိုက်ပြီ",
        "uploaddisabled": "Upload တင်ခြင်း ပိတ်ထားသည်။",
        "copyuploaddisabled": "URL လင့်မှ Upload တင်ခြင်း ပိတ်ထားသည်။",
        "uploaddisabledtext": "ဖိုင်တင်ခြင်းများကို ပိတ်ထားသည်။",
index 4c29381..917536a 100644 (file)
        "returnto": "Велявтомс $1 лопантень.",
        "tagline": "{{SITENAME}} -нь пельде",
        "help": "Лезкс",
-       "search": "Вешнэмс",
-       "searchbutton": "Вешнэк",
+       "search": "Вешнемс",
+       "searchbutton": "Вешнек",
        "go": "Адя",
        "searcharticle": "Адя",
        "history": "Лопань полавтнемат - витнемат",
        "delete": "Нардамс",
        "deletethispage": "Нардамс те лопанть",
        "undeletethispage": "Вельмевтемс мекев те лопанть",
-       "undelete_short": "Велявтомс нардазенть {{PLURAL:$1|1=вейке витнема-петнема|$1 витнемат-петнемат}}",
-       "viewdeleted_short": "Ваномс {{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}",
+       "undelete_short": "Велявтомс нардазенть {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}",
+       "viewdeleted_short": "Ваномс нардазь {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}",
        "protect": "Аравтомс прянь ванстомас",
        "protect_change": "полавтомс",
        "protectthispage": "Аравтомс те лопанть ванстомас",
        "talkpagelinktext": "Кортнеме",
        "specialpage": "Башка тевень лопа",
        "personaltools": "Эсень кедьёнкст",
-       "postcomment": "Од явкс",
        "articlepage": "Ваномс потмокслопанть",
        "talk": "Кортнеме",
        "views": "Ваномкат",
        "redirectedfrom": "(Ютавтозь $1 вельде)",
        "redirectpagesub": "Лиясто ютавтозь лопа",
        "lastmodifiedat": "Те лопанть меельседе витнезь-петнезь $2, $1.",
-       "viewcount": "Те лопантень совасть {{PLURAL:$1|1=весть|$1-ксть}}.",
+       "viewcount": "Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.",
        "protectedpage": "Те лопась ванстомасо",
        "jumpto": "Тёкадемс тей:",
        "jumptonavigation": "Новигациясь-лездамось",
        "collapsible-expand": "Келейгавтомс",
        "thisisdeleted": "$1-нть ваномс эли велявтомс мекев?",
        "viewdeleted": "Ванномс $1?",
-       "restorelink": "{{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}",
+       "restorelink": "{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}",
        "feedlinks": "Максовкс:",
        "feed-invalid": "А маштови сёрмадстома каналонть сортозо.",
        "site-rss-feed": "RSS-нть максовкс $1 -нть кисэ",
        "laggedslavemode": "Ванок: Кизды, лопасонть материалось таштомсь.",
        "readonly": "Датабазась панжома экшсэ",
        "enterlockreason": "Сёрмадт мейс сёлгамс эряви, ды ёвтак, зярдо таго арьсят панжови",
-       "missing-article": "Дата йуртсто а муеви эрявикс текстэсь, сонзэ лемезэ \"$1\" $2.\n\nСеде сеедьстэ истя лиси, зярдо таштомозь diff эли историянь сюлмавома песь вети нардань лопас.\n\nЛисиндерясь аволь истя, можок муить программа керьксстэнть (тапавкс тарка) сийне.\nПачтта сёрмине теде [[Special:ListUsers/sysop|системань ветийнень]] URL адресэнть тештязь.",
+       "missing-article": "Дата юртсто а муеви эрявикс текстэсь, сонзэ лемезэ \"$1\" $2.\n\nСеде сеедьстэ истя лиси, зярдо таштомозь diff эли историянь сюлмавома песь вети нардань лопас.\n\nЛисиндерясь аволь истя, можок муить программа керьксстэнть (тапавкс тарка) сийне.\nПачтта сёрмине теде [[Special:ListUsers/sysop|системань ветийнень]] URL адресэнть тештязь.",
        "missingarticle-rev": "(лиякстомтома#: $1)",
        "missingarticle-diff": "(Мейсэ явовить: $1, $2)",
        "internalerror": "Потмоильведькс",
        "password-change-forbidden": "Те викисэнть а полавтсак салававалот.",
        "login": "Совамо",
        "nav-login-createaccount": "Совамо / тейть совамотарка",
-       "loginprompt": "{{SITENAME}} сайтэнтень совамга эряви нолдамс тевс cookies.",
        "userlogin": "Совамо / тейть совамотарка",
        "userloginnocreate": "Совамо",
        "logout": "Лисеме",
        "createacct-submit": "Шкик совамотаркат",
        "createacct-another-submit": "Шкак од совамотарка",
        "createacct-benefit-heading": "«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.",
-       "createacct-benefit-body2": "{{PLURAL:$1|1=лопа|лопат}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|лопа|лопат}}",
        "badretype": "Сёрмадыть салава валот кавксть: сынь аволь вейкеть.",
        "userexists": "Те лемесь уш саезь.\nАрсека эстеть лия, инеськеть.",
        "loginerror": "Совамсто ильведькс",
        "login-userblocked": "Те теицясь аравтозь саймас. Совамонзо а мерить.",
        "wrongpassword": "Аволь истя сёрмадык совамо валот. Варчыка одов.",
        "wrongpasswordempty": "Салавань валот кадовсь апак сёрмадо. Сёрмадыка одов.",
-       "passwordtooshort": "Совамо Ð²Ð°Ð»Ð¾Ð½Ñ\82Ñ\8c ÐºÑ\83валмозо  {{PLURAL:$1|1=улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.",
+       "passwordtooshort": "СалававалонÑ\82Ñ\8c ÐºÑ\83валмозо  {{PLURAL:$1|улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.",
        "password-name-match": "Салава валонтень эряви явовомс теицянь леметь эйстэ.",
        "password-login-forbidden": "Те теицянь лемесь ды салававалось а мерить нолдамс тевс.",
        "mailmypassword": "Одов ладямс салававал",
        "passwordremindertitle": "{{SITENAME}} туртов акуватень од совамо вал",
-       "passwordremindertext": "Кие-бути (кода неяви тон IP-тешксстэнть $1) вешсь,<br />\nкедьстэнек кучомс теицянь од совамо вал {{SITENAME}} ($4) сайтс совамга.<br />\nТеицянтень \"$2\" кучозь нурькине шкань совамо вал, конась  ней \"$3\".<br />\nБути те тон ульнить, сави ней совамс ды кочкамс од совамо вал эстеть.<br />\nНурькине шкань совамо валот нолдави тевс {{PLURAL:$5|1=вейке чи|$5 чить}}.\n\nБути аволь тон вешицясь, эли мелезэть ледстик совамо валонть, иля яво мель те пачтямнэнтень. Нолдык тевс мельсэ аштицянть - мельс ледстязенть.",
+       "passwordremindertext": "Кие-бути (кода неяви тон, IP-тешксстэнть $1) вешсь,<br />\nкедьстэнек кучомс теицянь од салававал {{SITENAME}} ($4) сайтс совамга.<br />\nТеицянтень \"$2\" кучозь нурькине шкань салававал, конась  ней \"$3\".<br />\nБути те тон ульнить, сави ней совамс ды кочкамс од салававал эстеть.<br />\nНурькине шкань салававалот нолдави тевс {{PLURAL:$5|вейке чи|$5 чить}}.\n\nБути аволь тон вешицяселить, эли мелезэть ледстик салававалонть, иля яво мель те пачтямнэнтень. Нолдык тевс мельсэ аштицянть - мельс ледстязенть.",
        "noemail": "\"$1\" теицянть арась е-сёрмапаргозо.",
        "noemailcreate": "Эряви максомс е-сёрмапарго, конась маштови",
        "passwordsent": "$1 -нь е-сёрмань адресэнтень кучозь од совамо вал.<br />\nИнеськеть, кодак валось пачкоди, совака одов.",
        "eauthentsent": "Электрононь сёрмапаргозот кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, сёрмапаргось алкукс эсеть, карматано кучомо лия сёрмат.",
        "mailerror": "Е-сёрма кучомсто ильведькс: $1",
-       "acct_creation_throttle_hit": "Те Ð²Ð¸ÐºÐ¸Ñ\81Ñ\8d Ñ\82онÑ\8c IP Ð°Ð´Ñ\80еÑ\81Ñ\81Ñ\82Ñ\8dÑ\82Ñ\8c Ñ\81оваÑ\81Ñ\82Ñ\8c Ñ\82еиÑ\86Ñ\8fÑ\82, ÐºÐ¾Ð½Ð°Ñ\82 Ñ\82еиÑ\81Ñ\82Ñ\8c {{PLURAL:$1|1=1 Ñ\81Ñ\91Ñ\80мадовкÑ\81|$1 Ñ\81Ñ\91Ñ\80мадовкÑ\81Ñ\82}} Ð¼ÐµÐµÐ»Ñ\8cÑ\81е Ñ\87Ñ\8bнÑ\82Ñ\8c Ð¿ÐµÑ\80Ñ\82Ñ\8c, Ñ\81еде Ð»Ð°Ð¼Ð¾ Ð¿Ð¾Ð»Ð°Ð²Ñ\82омаÑ\82 Ð° Ð¼ÐµÑ\80иÑ\82Ñ\8c Ñ\82еемÑ\81 Ð¸Ñ\81Ñ\82Ñ\8f Ð·Ð½Ñ\8fÑ\80онÑ\8c Ñ\88канÑ\8c Ð¿ÐµÑ\80Ñ\82Ñ\8c.\nТенÑ\8c ÐºÐ¸Ñ\81Ñ\8d, Ñ\82е   IP Ð°Ð´Ñ\80еÑ\81Ñ\8dнÑ\82Ñ\8c ÐºÐ¾Ñ\80Ñ\8fÑ\81 Ñ\81еде Ñ\82ов Ð° Ð¼Ð°Ñ\88Ñ\82ови Ñ\82еемÑ\81\88камÑ\81 Ð¾Ð´ Ñ\81Ñ\91Ñ\80мадовкÑ\81т, зярс.",
+       "acct_creation_throttle_hit": "Те Ð²Ð¸ÐºÐ¸Ñ\81Ñ\8d Ñ\82онÑ\8c IP Ð°Ð´Ñ\80еÑ\81Ñ\81Ñ\82Ñ\8dÑ\82Ñ\8c Ñ\81оваÑ\81Ñ\82Ñ\8c Ñ\82еиÑ\86Ñ\8fÑ\82, ÐºÐ¾Ð½Ð°Ñ\82 Ñ\82ейÑ\81Ñ\82Ñ\8c {{PLURAL:$1|1 Ñ\81овамо Ñ\82аÑ\80ка|$1 Ñ\81овамо Ñ\82аÑ\80каÑ\82}} Ð¼ÐµÐµÐ»Ñ\8cÑ\86е Ñ\87инÑ\82Ñ\8c Ð¿ÐµÑ\80Ñ\82Ñ\8c, Ñ\81еде Ð»Ð°Ð¼Ð¾ Ð¿Ð¾Ð»Ð°Ð²Ñ\82омаÑ\82 Ð° Ð¼ÐµÑ\80иÑ\82Ñ\8c Ñ\82еемÑ\81 Ð¸Ñ\81Ñ\82Ñ\8fнÑ\8c Ð·Ð½Ñ\8fÑ\80онÑ\8c Ñ\88канÑ\8c Ð¿ÐµÑ\80Ñ\82Ñ\8c.\nТенÑ\8c ÐºÐ¸Ñ\81Ñ\8d, Ñ\82е   IP Ð°Ð´Ñ\80еÑ\81Ñ\8dнÑ\82Ñ\8c ÐºÐ¾Ñ\80Ñ\8fÑ\81 Ñ\81еде Ñ\82ов Ð° Ð¼Ð°Ñ\88Ñ\82ови Ñ\82еемÑ\81\88камÑ\81 Ð¾Ð´ Ñ\81овамо Ñ\82аÑ\80кат, зярс.",
        "emailauthenticated": "Е-сёрмапаргот кемекстазель $2 чистэ $3 цяссто.",
        "emailconfirmlink": "Кемекстык е-сёрмапаргот",
        "accountcreated": "Совамо таркась теезь",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|кортнема]]) совицянь таркась теевсь-шкавсь.",
        "loginlanguagelabel": "Кель: $1",
+       "pt-login": "Совамс",
+       "pt-userlogout": "Лисемс",
        "user-mail-no-addy": "Терявтыть кучомс е-сёрма е-сёрмапарговтомо.",
        "changepassword": "Салавань валонь полавтома",
-       "resetpass_announce": "СовавиÑ\82Ñ\8c Ð½Ñ\83Ñ\80Ñ\8cка Ñ\88канÑ\8c Ñ\81алававалÑ\81о, ÐºÐ¾Ð½Ð° ÐºÑ\83Ñ\87озелÑ\8c ÐºÑ\83лÑ\8fпаÑ\80гозоÑ\82. Ð¡Ð¾Ð²Ð°Ð¼Ð¾Ñ\82 Ð¿Ñ\80Ñ\8fдомга Ñ\8dÑ\80Ñ\8fви Ð¿Ñ\83Ñ\82омÑ\81 Ð¾Ð´ Ñ\81алававал Ð²Ð°Ð½Ð° Ñ\82езÑ\8dенÑ\8c:",
+       "resetpass_announce": "СовамоÑ\82 Ñ\82опавÑ\82омга Ñ\8dÑ\80Ñ\8fви Ð¿Ñ\83Ñ\82омÑ\81 Ð¾Ð´ Ñ\81алававал.",
        "resetpass_header": "Полавтомс совамо валот",
        "oldpassword": "Ташто совамо валот:",
        "newpassword": "Од совамо валот:",
        "resetpass-submit-loggedin": "Полавтомс совамо валот",
        "resetpass-submit-cancel": "Саемс мекев",
        "resetpass-temp-password": "А куватень совамо валось:",
+       "resetpass-expired": "Салававалот таштомсь. Аравтт од салававал, мейле совават.",
        "passwordreset": "Совамо валонь лиялгавтома",
        "passwordreset-legend": "Полавтык совамо валонть",
        "passwordreset-username": "Теиця леметь:",
        "copyrightwarning": "Инескеть кирдть мельсэ {{SITENAME}}-сэ весе путовкстнэнь, лововить нолдазекс ало $2  конёвонть коряс (вант $1 педе пес). Арась мелеть витневтемс-петневтемс сёрмадовксот педе пес, иляк сестэ путо сонзэ тезэнь.<br />\nИстяжо тезэнь материалонь максомсот, кемекстат тон тонсь сёрмадык сонзэ, али саик сонзэ вейсэнь ёнксто али олячинь порталсто.\n'''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
        "titleprotectedwarning": "'''ВАНОК:  Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''\nЖурналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
        "templatesused": "Те лопасонть тевс нолдазь {{PLURAL:$1|лопапарцун|лопапарцунт}}:",
-       "templatesusedpreview": "Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:",
-       "templatesusedsection": "Те пелькссэнть тевс нолдазь {{PLURAL:$1|1=лопа парцунось|лопа парцунтнэ}}:",
+       "templatesusedpreview": "Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|лопа парцун|лопа парцунт}}:",
+       "templatesusedsection": "Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:",
        "template-protected": "(ванстозь)",
        "template-semiprotected": "(пельс ванстозь)",
        "hiddencategories": "Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:",
        "nocreatetext": "Те {{SITENAME}} лопасонть пирязь од лопань теемась. Тонь ули мелеть велявтомс удалов ды  питнемензе-витнемензе улиця лопанть, али [[Special:UserLogin|совамс али теемс од совама]].",
        "nocreate-loggedin": "Тонеть а мерить теемс-шкамс од лопат.",
-       "permissionserrorstext": "ТонеÑ\82Ñ\8c Ð° Ð¼ÐµÑ\80иÑ\82Ñ\8c Ñ\82еемÑ\81 Ñ\82енÑ\8c, Ð²Ð°Ð½Ð° {{PLURAL:$1|1=Ñ\82Ñ\83вÑ\82алоÑ\81Ñ\8c\82Ñ\83вÑ\82алÑ\82нÑ\8d}}:",
-       "permissionserrorstext-withaction": "Тонеть а мерить теемс $2, {{PLURAL:$1|1=тувталось|тувталтнэ}} вана:",
+       "permissionserrorstext": "ТонеÑ\82Ñ\8c Ð° Ð¼ÐµÑ\80еви Ñ\82еемÑ\81 Ñ\82енÑ\8c, Ð²Ð°Ð½Ð° {{PLURAL:$1|Ñ\82Ñ\83вÑ\82алонÑ\82Ñ\8c\82Ñ\83вÑ\82алÑ\82нÑ\8dнÑ\8c}} ÐºÐ¸Ñ\81Ñ\8d:",
+       "permissionserrorstext-withaction": "Тонеть а мерить $2, {{PLURAL:$1|тувталось|тувталтнэ}} вана:",
        "recreate-moveddeleted-warn": "'''Ванок: Вельмевтят лопа, кона нардазель.'''\n\nВасня арьсек, эряви - а эряви полалемс ды витнемс-петнемс те лопанть.\nТе лопанть нардамодо ды печтевтемадо путовкстнэ одов максозь тесэ, улезт шожда ванстнемс:",
        "moveddeleted-notice": "Те лопась нардазь.\nЛопанть нардамодо сёрмадовксось максозь вана ало.",
        "log-fulllog": "Ванномс журналонть весемензэ",
        "currentrev": "Тевате лиякстомтома",
        "currentrev-asof": "Неень верзиясь истямо шкань $1",
        "revisionasof": "$1-це версиясь",
-       "revision-info": "$1 -нь лиякстомтома, конань теизе $2",
+       "revision-info": "$1 -нь лиякстомтома, конань теизе {{GENDER:$6|$2}}$7",
        "previousrevision": "←Седе икелень лиякстомтома",
        "nextrevision": "Седе од вановкс→",
        "currentrevisionlink": "Тевате лиякстомтома",
        "history-show-deleted": "Ансяк нардазь",
        "histfirst": "весемеде умонь",
        "histlast": "Меельце",
-       "historysize": "({{PLURAL:$1|1=1 байт|$1 байтт}})",
+       "historysize": "({{PLURAL:$1|1 байт|$1 байтт}})",
        "historyempty": "(чаво)",
        "history-feed-title": "Лиякстомтомань тевде",
        "history-feed-description": "Викинь тевате лопанть лиякстомтомань тевдензэ",
        "revdelete-show-file-confirm": "Алкукс ули мелеть ваномс «<nowiki>$1</nowiki>» керьмазонть нардазь ревизиянзо, конась саезь $2-нть эйстэ ды ашти тесэ $3?",
        "revdelete-show-file-submit": "Ули",
        "revdelete-legend": "Аравтомс неявомачынь петне",
-       "revdelete-hide-text": "Ð\9aекÑ\88емÑ\81 Ð»Ð¸Ñ\8fкÑ\81Ñ\82омÑ\82оманÑ\8c Ñ\82екÑ\81Ñ\82Ñ\8dнÑ\82ь",
+       "revdelete-hide-text": "Ð\9bиÑ\8fкÑ\81Ñ\82омÑ\82оманÑ\8c Ñ\82екÑ\81Ñ\82Ñ\8dÑ\81ь",
        "revdelete-hide-image": "Кекшемс мезе файлатнесэ",
        "revdelete-hide-name": "Кекшемс тев тееманть ды норовамо тарканзо",
-       "revdelete-hide-comment": "Ð\9aекÑ\88емÑ\81 Ð²Ð¸Ñ\82немадо-пеÑ\82немадо Ð°Ñ\80Ñ\81емаÑ\82ненÑ\8c",
-       "revdelete-hide-user": "Ð\9aекÑ\88емÑ\81 Ð²Ð¸Ñ\82ниÑ\86Ñ\8fнÑ\82Ñ\8c-пеÑ\82ниÑ\86Ñ\8fнÑ\82Ñ\8c Ñ\82еиÑ\86Ñ\8f Ð»ÐµÐ¼ÐµÐ½Ð·Ñ\8d/IP-нзÑ\8d",
+       "revdelete-hide-comment": "Ð\92иÑ\82немÑ\81-пеÑ\82немÑ\81 Ñ\81Ñ\91Ñ\80мадовкÑ\81онÑ\82Ñ\8c Ð·Ñ\8dмензÑ\8d.",
+       "revdelete-hide-user": "Ð\92иÑ\82ниÑ\86Ñ\8fнÑ\82Ñ\8c-пеÑ\82ниÑ\86Ñ\8fнÑ\82Ñ\8c Ñ\81овамолемезÑ\8d/IP Ñ\81Ñ\91Ñ\80мапаÑ\80гозо",
        "revdelete-radio-same": "(иляк лиякстомто)",
        "revdelete-log": "Тувталось:",
-       "revdelete-submit": "Аравтомс кочказь {{PLURAL:$1|1=лиякстомтомантень|лиякстомтоматненень}}",
+       "revdelete-submit": "Аравтомс кочказь {{PLURAL:$1|лиякстомтомантень|лиякстомтоматненень}}",
        "revdel-restore": "Полавтомс неявомачынзэ",
        "pagehist": "Лопанть икелькс умазо",
        "deletedhist": "Нардань икелькс умазо",
        "mergehistory-box": "Совавтомс кавто лопатнень лиякстомтомадо сёрмадовкстнэнь ве лувс:",
        "mergehistory-from": "Лисьмапря лопа:",
        "mergehistory-into": "Совавтома лопа:",
-       "mergehistory-list": "Ð\92ейÑ\82Ñ\8cÑ\81Ñ\8dндÑ\8fвиÑ\86Ñ\8f Ñ\8eÑ\80онзо-пÑ\83Ñ\82овкÑ\81онзо",
+       "mergehistory-list": "Вейсэндявиця юронзо-путовксонзо",
        "mergehistory-go": "Невтемс вейтьс совавтомкс витнемат-петнемат",
        "mergehistory-submit": "Совавтомс лиякстомтоматнень вейтьс",
        "mergehistory-empty": "Вейкеяк лиякстомтома а совавтови вейтьс лия марто.",
        "mergehistory-invalid-destination": "Совавтомкс лопанть улезэ маштовикс лем.",
        "mergehistory-autocomment": "Совавтомс [[:$1]] [[:$2]]-с",
        "mergehistory-reason": "Тувталось:",
-       "mergelog": "Ð\92ейÑ\82Ñ\8cÑ\81Ñ\8dндÑ\8fмÑ\81 Ð»Ð¾Ð³Ð¾Ð½Ñ\82Ñ\8c",
-       "revertmerge": "ЯвомÑ\81 Ð»Ð¾Ð³Ð¾Ð½Ñ\82Ñ\8c Ð¼ÐµÐºÐµÐ², ÐºÐ¾Ð´Ð° Ñ\83лÑ\8cнеÑ\81Ñ\8c Ð²ÐµÐ¹Ñ\82Ñ\8cÑ\81Ñ\8dндÑ\8fмодо Ð¸ÐºÐµÐ»Ðµ",
-       "history-title": "\"$1\"ь полавтнемань историязо",
+       "mergelog": "Вейсэндямс логонть",
+       "revertmerge": "Явомс логонть мекев, кода ульнесь вейсэндямодо икеле",
+       "history-title": "\"$1\" лопанть полавтнемань историязо",
        "difference-multipage": "(Мейсэ лопатне явовить)",
        "lineno": "Киксэсь $1:",
        "compareselectedversions": "Кочказь версиятнень аравтомс карадо-каршо",
        "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|1=1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1=1 файла|$3 файлат}})",
+       "search-result-category-size": "{{PLURAL:$1|1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1 файла|$3 файлат}})",
        "search-redirect": "(йутавтт $1-с)",
        "search-section": "(пелькс $1)",
        "search-suggest": "Истя мерикскелить: $1",
        "search-interwiki-caption": "Дугакс проектт",
-       "search-interwiki-default": "$1 савкс:",
+       "search-interwiki-default": "«$1» викинть эйстэ савкст:",
        "search-interwiki-more": "(седе ламо)",
        "search-relatedarticle": "Малавикс",
        "searchrelated": "малавикс",
        "prefs-personal": "Теицядо",
        "prefs-rc": "Чиень полавтнемат-лиякстомтомат",
        "prefs-watchlist": "Ванома лемрисьме",
-       "prefs-watchlist-days-max": "Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}",
+       "prefs-watchlist-days-max": "Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}",
        "prefs-watchlist-edits-max": "Весемеде покш цётось: 1000",
        "prefs-misc": "Минеть-сюнот",
        "prefs-resetpass": "Салавань валонь полавтома",
        "prefs-email": "Е-сёрмат-мезть",
        "prefs-rendering": "Тюсозо-лангозо",
        "saveprefs": "Ванстомс",
-       "restoreprefs": "Велявтомс мекев весе ушодкс ладсематнень",
+       "restoreprefs": "Велявтомс мекев весе ушодкс ладсематнень (весе явкстнэва)",
        "prefs-editing": "Витнема-петнема",
        "rows": "Валчилькстнэ (строкатне):",
        "columns": "Палманть:",
        "searchresultshead": "Вешнема",
        "recentchangesdays": "Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:",
-       "recentchangesdays-max": "Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}",
+       "recentchangesdays-max": "Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}",
        "recentchangescount": "Васень аравтоматнень коряс зяро витнемат-петнемат невтемс:",
        "prefs-help-recentchangescount": "Тезэнь совавтозь чиень полавтнемат-лиякстомтомат, лопань лувт-путовкст, журналт.",
        "timezonelegend": "Шкань зонась:",
        "timezoneregion-pacific": "Сэтьме иневедь",
        "prefs-searchoptions": "Вешнем",
        "prefs-namespaces": "Лем потмот",
-       "default": "зярдо лиякс апак йовта",
+       "default": "зярдо лиякс апак ёвта",
        "prefs-files": "Файлат",
        "youremail": "Е-сёрма:",
        "username": "Теицянь леметь:",
        "yourrealname": "Алкуксонь леметь:",
        "yourlanguage": "Келесь:",
        "yournick": "Кедень путома:",
-       "badsiglength": "Кедень путомат пек кувака.\nЭйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|1=тешкст|тешкст}}.",
-       "yourgender": "СÑ\8bмеÑ\82Ñ\8c (Ñ\86Ñ\91Ñ\80анÑ\8c\82ейÑ\82еÑ\80енÑ\8c):",
+       "badsiglength": "Кедень путомат пек кувака.\nЭйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.",
+       "yourgender": "ТонÑ\81Ñ\8c ÐºÐ¾Ð´Ð° Ð¼ÐµÑ\80евлиÑ\82Ñ\8c Ñ\8dÑ\81Ñ\8c Ð¿Ñ\80Ñ\8fдоÑ\82?",
        "gender-unknown": "А меревлинь",
        "gender-male": "Сон витни-петни викилопатнесэ",
        "gender-female": "Сон витни-петни викилопатнесэ",
        "right-undelete": "Вельмевтемс нардань лопа",
        "right-block": "Кардамс лия совийтнень-лисийтнень витнемадо-петнемадо",
        "right-blockemail": "Кардамс лия лисийтнень-совийтнень е-сёрмань кучомадо",
-       "right-editinterface": "Витнемс-петнемс теицянь интерчаманть (васодема йожонть)",
+       "right-editinterface": "Витнемс-петнемс теицянь интерчаманть (васодема ёжонть)",
        "right-editusercssjs": "Витнемс-петнемс лия теицятнень CSS ды JS файласт",
        "right-editusercss": "Витнемс-петнемс лия теицятнень CSS файласт",
        "right-edituserjs": "Витнемс-петнемс лия теицятнень JS файласт",
        "right-import": "Ёвкстамс лия Викистэ лопат",
        "right-patrol": "Тешкстамс лиянь витнематнень-петнематнень лувонь кирдиеньсекс",
-       "right-mergehistory": "Ð\92ейÑ\82Ñ\8cÑ\81Ñ\8dндÑ\8fмÑ\81 Ð»Ð¾Ð¿Ð°Ñ\82ненÑ\8c Ñ\8eÑ\80оÑ\81Ñ\82-пÑ\83Ñ\82овкÑ\81оÑ\81Ñ\82",
+       "right-mergehistory": "Вейсэндямс лопатнень юрост-путовксост",
        "right-userrights": "Витнемс-петнемс совицянь весе видечитнень",
        "right-siteadmin": "Датабазань сёлгомо ды панжомо",
        "right-passwordreset": "Ваномс теицянь салава валонь полавтома е-сёрмат",
        "action-move-subpages": "печтевтемс те лопанть, ды алонзо весе лопатнень",
        "action-move-rootuserpages": "печтевтемс теицянь юрт лопатнень",
        "action-movefile": "печтевтемс те файланть",
-       "action-upload": "йовкстамс те файланть",
+       "action-upload": "ёвкстамс те файланть",
        "action-reupload": "уликс файланть полавтомс одонть марто",
        "action-upload_by_url": "ёвкстамс те файланть URL адресстэ",
        "action-writeapi": "нолдамс тевс сёрмадома API-нть",
        "action-block": "кардамс те совицянть витнемадо-петнемадо",
        "action-import": "совавтомс тезэнь лопат лия Викистэ",
        "action-importupload": "совавтомс тезэнь лопат файлань путома юртсто",
-       "action-mergehistory": "вейÑ\82Ñ\8cÑ\81Ñ\8dндÑ\8fмÑ\81 Ñ\82е Ð»Ð¾Ð¿Ð°Ð½Ñ\82Ñ\8c Ñ\8eÑ\80онзо-пÑ\83Ñ\82овкÑ\81онзо",
+       "action-mergehistory": "вейсэндямс те лопанть юронзо-путовксонзо",
        "action-userrights": "витнемс-петнемс совицянь весе видечитнень",
        "action-userrights-interwiki": "витнемс-петнемс лия викитнесэ теицянь видечитнень",
        "action-sendemail": "кучомс е-сёрмат",
        "recentchanges-label-bot": "Те витнеманть-петнеманть теизе кона-кона бот",
        "recentchanges-label-unpatrolled": "",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (вантаять [[Special:NewPages|од лопань лемрисьме]])",
-       "rcnotefrom": "Ð\90ло Ð½ÐµÐ²Ñ\82езÑ\8c  '''$2''' Ð»Ð¸Ñ\8fкÑ\81Ñ\82омÑ\82омаÑ\81Ñ\82о Ñ\81аезÑ\8c ('''$1''' Ð²Ð¸Ð´Ñ\81).",
+       "rcnotefrom": "Ð\90ло Ð¼Ð°ÐºÑ\81озÑ\8c {{PLURAL:$5|лиÑ\8fкÑ\81Ñ\82омÑ\82омаÑ\81Ñ\8c, ÐºÐ¾Ð½Ð°Ñ\81Ñ\8c|лиÑ\8fкÑ\81Ñ\82омÑ\82омаÑ\82не, ÐºÐ¾Ð½Ð°Ñ\82не}} Ñ\82еезÑ\8c <strong>$3, $4</strong> Ñ\88каÑ\81Ñ\82о Ñ\81аезÑ\8c (веÑ\81емеде Ð»Ð°Ð¼Ð¾ Ð½ÐµÐ²Ñ\82езÑ\8c <strong>$1</strong>).",
        "rclistfrom": "Невтемс од витьнематнень $3 $2-нть эйстэ саезь.",
        "rcshowhideminor": "$1 апокшкэ витнемат-петнемат",
        "rcshowhidebots": "$1 ботт",
        "recentchangeslinked-page": "Лопанть лемезэ:",
        "recentchangeslinked-to": "Тень таркас невтить те лопанть марто сюлмазь лопатнесэ полавтнематнень",
        "upload": "Ёкстамс файла",
-       "uploadbtn": "Ð\99овкÑ\81амÑ\81 Ñ\84айланÑ\82Ñ\8c",
+       "uploadbtn": "Ð\81вкÑ\81Ñ\82амÑ\81 Ñ\84айла",
        "uploadnologin": "Эзить сова",
-       "uploaderror": "Ð\99овкстамсто манявома",
+       "uploaderror": "Ð\81вкстамсто манявома",
        "upload-permitted": "Файлань форматт, конат меревить: $1.",
        "upload-preferred": "Файлань типт, конатне паро мельсэ учовить: $1.",
        "upload-prohibited": "Файлань типт, конатне кардазь: $1.",
-       "uploadlogpage": "Файлань йовкстамодо журнал",
+       "uploadlogpage": "Файлань ёвкстамодо журнал",
        "filename": "Файлань лем",
        "filedesc": "Нурькинестэ",
        "fileuploadsummary": "Нурькинестэ:",
        "filename-tooshort": "Файлань лементь а саты кувалмозо.",
        "unknown-error": "А содавикс манявкс лиссь.",
        "file-thumbnail-no": "Файланть лемезэ ушодови  <strong>$1</strong>.\nСонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.\nУлиндеряй файланть покш верзиязо, йовкстыка сонзэ  - арась, полавтыка тетень лемензэ.",
-       "file-exists-duplicate": "Те кавонзавкс файла вана {{PLURAL:$1|1=те файланть|неть файлатнень}} эйстэ:",
+       "file-exists-duplicate": "Те кавонзавкс файла вана {{PLURAL:$1|те файланть|неть файлатнень}} эйстэ:",
        "uploadwarning": "Совавтомадо кардамонь пачтямо",
        "savefile": "Ванстомс файланть",
-       "uploadedimage": "йовкстазь \"[[$1]]\"",
-       "overwroteimage": "Ёвкстамс \"[[$1]]\" файлань од версия",
        "uploaddisabled": "Совавтомась лоткавтозь",
        "uploadvirus": "Те файласонть вирус програм! Информация: $1",
        "upload-source": "Лисьмапрякс файла",
        "license-header": "Лицензиянь теема:",
        "nolicense": "Лицензия арась",
        "license-nopreview": "(Васнянь невтевкс арась)",
-       "upload_source_file": " (арси машинасот файла)",
+       "upload_source_file": " (арсимашинастот файла, конань тонсь кочкик)",
        "listfiles_search_for": "Вешнемс медиа лементь:",
        "imgfile": "файл",
        "listfiles": "Файлат-мезть",
        "filepage-nofile": "Истямо лем марто файла арась.",
        "uploadnewversion-linktext": "Йовкстак од версия те файластонть",
        "shared-repo-from": "вана теньстэ $1",
-       "shared-repo": "вейÑ\82Ñ\8cÑ\81Ñ\8dнÑ\8c Ð²Ð°Ð½Ñ\81Ñ\82ома Ñ\82аÑ\80ка",
+       "shared-repo": "вейсэнь ванстома тарка",
        "filerevert": "Велявтомс $1 мекев",
        "filerevert-legend": "Велявтомс файланть",
        "filerevert-comment": "Тувталось:",
        "linksearch": "Ушо ёндонь сюлмавомапенень вешнема",
        "linksearch-pat": "Вешнемкс парцун:",
        "linksearch-ns": "Лем потмозо:",
-       "linksearch-ok": "Вешнэмс",
+       "linksearch-ok": "Вешнемс",
        "linksearch-line": "$1-в сюлмавома песь моли вана тестэ $2",
        "listusers-submit": "Невтемс",
        "listusers-noresult": "Совицязо а муеви",
        "protect-default": "Весе теицятненень маштови",
        "protect-fallback": "Вешеви ве мельс прамось «$1»-нть",
        "protect-level-autoconfirmed": "Саймас аравтомс од ды апак сёрмадстово теицятнень",
-       "protect-level-sysop": "Ансяк администраторт",
+       "protect-level-sysop": "Ансяк администратортнэнень мереви",
        "protect-summary-cascade": "каскадонь ладсо",
        "protect-expiring": "прядови $1 (UTC)",
        "protect-expiry-indefinite": "певтема",
        "undeleteviewlink": "ваномс",
        "undeleteinvert": "Кочказень таркас апаконь кочкамо",
        "undeletecomment": "Тувталось:",
-       "undeletedrevisions": "{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь",
+       "undeletedrevisions": "{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь",
        "undeletedrevisions-files": "{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1=1 файла|$2 файлат}} вельмевтезь",
        "undeletedfiles": "{{PLURAL:$1|1=1 файла|$1 файлат}} вельмевтезь",
-       "undelete-search-box": "Ð\92еÑ\88немÑ\81 Ð½Ð°Ñ\80данÑ\8c Ð»Ð¾Ð¿Ð°Ñ\82ненÑ\8c Ð¹Ñ\83тксто",
+       "undelete-search-box": "Ð\92еÑ\88немÑ\81 Ð½Ð°Ñ\80дазÑ\8c Ð»Ð¾Ð¿Ð°Ñ\82ненÑ\8c Ñ\8eтксто",
        "undelete-search-prefix": "Невтемс лопат тестэ саезь:",
-       "undelete-search-submit": "Вешнэмс",
+       "undelete-search-submit": "Вешнемс",
        "undelete-error-short": "\"$1\" файлань вельмевтемстэ лиссь ильведевкс",
        "undelete-show-file-submit": "Истя",
        "namespace": "Лем потмозо:",
        "sp-contributions-search": "Путовксонь вешнеме",
        "sp-contributions-username": "IP адрес эли теицянь лем:",
        "sp-contributions-toponly": "Невтемс ансяк не витнематнень-петнематнень, конат совавтовить меельце верзиятнень юткс",
-       "sp-contributions-submit": "Вешнэмс",
+       "sp-contributions-submit": "Вешнемс",
        "whatlinkshere": "Мезе тезэнь сюлмави",
        "whatlinkshere-title": "$1 марто сюлмазь лопатне",
        "whatlinkshere-page": "Лопась:",
        "whatlinkshere-prev": "{{PLURAL:$1|1=икеле|седе икелень $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|1=сыця|сы $1}}",
        "whatlinkshere-links": "← сюлмавомапеть",
-       "whatlinkshere-hideredirs": "$1 {{PLURAL:$1|1=тарка йутавты|таркат йутавтыть}} тей",
+       "whatlinkshere-hideredirs": "$1 ютавты козонь-козонь",
        "whatlinkshere-hidetrans": "$1 сюлмавозь пелькстнэнь",
        "whatlinkshere-hidelinks": "$1 сюлмавома петь",
        "whatlinkshere-hideimages": "$1 файланть сюлмавомапензэ",
        "blocklist-target": "Норовамо тарка",
        "blocklist-expiry": "Прядови",
        "blocklist-reason": "Тувтал",
-       "ipblocklist-submit": "Вешнэме",
+       "ipblocklist-submit": "Вешнеме",
        "infiniteblock": "певтеме",
        "expiringblock": "саймас саемась прядови $1 $2 цяссто",
        "anononlyblock": "ансяк лемтеме",
        "filemissing": "Файлась а муеви",
        "thumbnail_error": "Миниатюрань теемстэ ильведькс: $1",
        "import": "Таргамс лопатнень",
-       "import-interwiki-source": "Вики лисьмапрякс/лопась:",
        "import-interwiki-templates": "Совавтомс весе лопа парцунтнэнь",
        "import-interwiki-submit": "Таргамс",
        "import-interwiki-namespace": "Норовазь лемпотмось:",
        "tooltip-ca-edit": "Те лопаськак витневи-петневи. Ансяк, ванстомадо икеле яла васнянь невтевкс повнэнть лепштика.",
        "tooltip-ca-addsection": "Ушодомс од явкс.",
        "tooltip-ca-viewsource": "Те лопась ванстозь. Ули меленк ваномонзо сонзе лисмапрянть.",
-       "tooltip-ca-history": "Те лопанть йутазь версиянзо.",
+       "tooltip-ca-history": "Те лопанть ютазь версиянзо.",
        "tooltip-ca-protect": "Аравтомс те лопанть прянь ванстомас",
        "tooltip-ca-delete": "Нардамс те лопанть, илязо улеяк",
        "tooltip-ca-move": "Ютавтык те лопанть лияв",
        "newimages-legend": "Сувтеме",
        "newimages-label": "Файлалем (эли пельксэзэ):",
        "noimages": "Арась мезе ваномс.",
-       "ilsubmit": "Вешнэмс",
+       "ilsubmit": "Вешнемс",
        "bydate": "чинь коряс",
        "ago": "$1-до икеле",
        "bad_image_list": "Лувось-форматось вана истямо:\n\nТесэ ансяк потмонть пакшкетне (рисьметне, конат ушодовить * тешкстсэ) лововить. Рисьмень васень сюлмавома пентень эряви невтемс амаштовикс файла лангс. Секе рисьминентень понгиндеряйть лия сюлмавома петь, сынь лововить башка, лиякс меремс сынь лопат, косо файлат маштовить невтемс.",
        "watchlisttools-raw": "Витнеме-петнеме верек ваномалопанть",
        "duplicate-defaultsort": "'''Ванок!''' Рядс аравтомань те \"$2\" панжомась саеви те \"$1\" панжомадо икеле.",
        "version": "Версия",
+       "version-skins": "Лангт",
        "version-specialpages": "Башка тевень лопат",
        "version-variables": "Полавтневикс тевть",
-       "version-skins": "Лангт",
        "version-other": "Лия",
        "version-hooks": "Кечказт",
        "version-hook-name": "Кечказонть лемезэ",
        "version-software": "Нолдань программат",
        "version-software-product": "Шкавкс-нолдавкс",
        "version-software-version": "Верзия",
-       "fileduplicatesearch": "Вешнэмс кавтаське файлат",
-       "fileduplicatesearch-legend": "Вешнэмс кавтаське",
+       "fileduplicatesearch": "Вешнемс кавтаське файлат",
+       "fileduplicatesearch-legend": "Вешнемс кавтаське",
        "fileduplicatesearch-filename": "Файла лем:",
-       "fileduplicatesearch-submit": "Вешнэмс",
+       "fileduplicatesearch-submit": "Вешнемс",
        "specialpages": "Башка тевень лопат",
        "specialpages-group-other": "Лия башка тевень лопат",
        "specialpages-group-login": "Совамс / шкамс совамотарка",
index 71e6514..6426b3a 100644 (file)
        "talkpagelinktext": "Tèìxnàmikilistli",
        "specialpage": "Nònkuâkìskàtlaìxtlapalli",
        "personaltools": "In tlein nitēquitiltilia",
-       "postcomment": "Yancuīc xeliuhcāyōtl",
        "articlepage": "Xiquittaz in tlahcuilōlli",
        "talk": "tēixnāmiquiliztli",
        "views": "Tlachiyaliztli",
        "yourdomainname": "Moāxcāyō",
        "login": "Ximomachiyōmaca/Ximocalaqui",
        "nav-login-createaccount": "Ximocalaqui / ximomachiyōmaca",
-       "loginprompt": "Tihuīquilia tiquimpiyāz cookies ic ticalaquīz {{SITENAME}}.",
        "userlogin": "Ximomachiyōmaca/Ximocalaqui",
        "userloginnocreate": "Ximocalaqui",
        "logout": "Tiquīzāz",
        "large-file": "Mā tlahcuilōlli ahmo achi huēiyac $1; inīn cah $2.",
        "fileexists-extension": "Tlahcuilōlli zan iuh tōcātica ia: [[$2|thumb]]\n* Tlahcuilōlli moquetzacah: <strong>[[:$1]]</strong>\n* Tlahcuilōlli tlein ia ītōca: <strong>[[:$2]]</strong>\nTimitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
        "savefile": "Quipiyāz tlahcuilōlli",
-       "uploadedimage": "ōmoquetz \"[[$1]]\"",
-       "overwroteimage": "ōmoquetz yancuīc \"[[$1]]\" iuhcāyōtl",
        "uploaddisabled": "Ahmo mohuelīti tlahcuilōlquetzā",
        "uploaddisabledtext": "Ahmo huelīti moquetzazqueh tlahcuilōlli.",
        "sourcefilename": "Tōcāhuīcpa:",
index 7a2d8f4..01faf1a 100644 (file)
        "moredotdotdot": "Iáu-ū",
        "morenotlisted": "這毋是完整的表",
        "mypage": "Ia̍h",
-       "mytalk": "Góa ê thó-lūn",
+       "mytalk": "Thó-lūn",
        "anontalk": "Chit ê IP ê thó-lūn-ia̍h",
        "navigation": "Se̍h chām",
        "and": "&#32;kap",
        "unprotectthispage": "kái chit ia̍h ê pó-hō͘",
        "newpage": "Sin ia̍h",
        "talkpage": "Thó-lūn chit ia̍h",
-       "talkpagelinktext": "thó-lūn",
+       "talkpagelinktext": "Thó-lūn",
        "specialpage": "Te̍k-sû-ia̍h",
        "personaltools": "Kò-jîn kang-khū",
        "articlepage": "Khoàⁿ loē-iông ia̍h",
        "unwatch": "Mài kàm-sī",
        "unwatchthispage": "Mài koh kàm-sī",
        "watchlist-details": "Kàm-sī-toaⁿ ū {{PLURAL:$1|$1 ia̍h|$1 ia̍h}}, thó-lūn-ia̍h bô sǹg chāi-lāi.",
-       "wlnote": "Ē-kha sī '''$2''' tiám-cheng í-lāi siōng sin ê $1 ê kái-piàn.",
+       "wlnote": "$3 $4: Ē-kha sī <strong>$2</strong> tiám-cheng í-lāi siōng sin ê <strong>$1</strong> ê kái-piàn.",
        "wlshowlast": "Hián-sī chêng $1 tiám-cheng $2 ji̍t $3",
        "deletepage": "Thâi ia̍h",
        "confirm": "Khak-tēng",
        "watchlistedit-normal-submit": "Mài kàm-sī",
        "watchlistedit-normal-done": "Í-keng ū $1 ia̍h ùi lí ê kám-sī-toaⁿ soá cháu:",
        "watchlisttools-edit": "Khoàⁿ koh kái kàm-sī-toaⁿ",
-       "watchlisttools-raw": "Kái tshing-chheng ê kàm-sī-toaⁿ",
+       "watchlisttools-raw": "Kái chhiⁿ ê kàm-sī-toaⁿ",
        "duplicate-defaultsort": "'''Thê-chhíⁿ lí:'''Siat-piān ê pâi-lia̍t hong-sek \"$2\" thè-oāⁿ chìn-chêng ê siat-piān ê pâi-lia̍t hong-sek \"$1\".",
        "version": "Pán-pún",
        "specialpages": "Te̍k-sû-ia̍h",
index 17a3128..2cefbf5 100644 (file)
        "tog-underline": "Sottolinia 'e jonte:",
        "tog-hideminor": "Annascunne 'e cagne piccirille  'int'a ll'úrdeme cagne",
        "tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
+       "tog-newpageshidepatrolled": "Annascunne 'e paggene cuntrullate 'a ll'elenco 'e ppaggene",
        "tog-extendwatchlist": "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
        "tog-usenewrc": "Urdeme càgnamiente avanzate (JavaScript)",
        "tog-numberheadings": "Annúmmera automatecamente 'e títule",
        "tog-showtoolbar": "Aspone 'a barra d''e stromiente 'e cagno",
        "tog-editondblclick": "Cagna 'e pàggene cliccanno ddoje vote",
        "tog-editsectiononrightclick": "Permette 'e cangne 'e sezzione cliccanno p''o tasto destro ncopp 'e titule 'e sezzione",
+       "tog-watchcreations": "Azzecca 'e ppaggene criate e li files carrecate ncopp'â l'elenco 'e cuntrollo",
+       "tog-watchdefault": "Azzecca 'e paggene e li files cagnàte a l'elenco 'e cuntrollo",
+       "tog-watchmoves": "Azzecca 'e paggene e li files spustate a l'elenco 'e cuntrollo",
+       "tog-watchdeletion": "Azzecca 'e paggene e li files scancellate a l'elenco 'e cuntrollo",
+       "tog-watchrollback": "Azzecca 'e paggene addò aggio fatto nu rollback a l'elenco 'e cuntrollo",
+       "tog-minordefault": "Indica ogne cagnamento comme piccerillo (predefinito)",
+       "tog-previewontop": "Vide previsióne primma d&#39;'a casella 'e modifica",
+       "tog-previewonfirst": "Vide previsióne 'a primma vota",
+       "tog-enotifwatchlistpages": "Famme na mmasciata mail quanno na paggena o nu file dint'a l'elenco 'e cuntrollo se fosse cagnàta",
+       "tog-enotifusertalkpages": "Famme na masciata mail quanno 'a paggena 'e cchiacchiera mmia se fosse cagnàta",
+       "tog-enotifminoredits": "Famme na masciata mail pure quanno se fanno cagnamiente piccerille 'e paggene e files",
+       "tog-enotifrevealaddr": "Fa' vedé 'o ndirizzo mail ncopp'e mmasciate 'e notifica",
+       "tog-shownumberswatching": "Fa' vedé 'o nummero d'utente che teneno 'a paggena cuntrullata",
+       "tog-oldsig": "Firma 'e mmo:",
+       "tog-fancysig": "Piglia 'a firma comme fosse nu wikitesto (senza fà link automatico)",
+       "tog-uselivepreview": "Abilita 'o \"Live preview\" (sperimentale)",
+       "tog-forceeditsummary": "Chiere a mme quanno se sta azzeccanno nu campo oggetto abbacante",
+       "tog-watchlisthideown": "Annascunne 'e cagnamiente d&#39;'a lista 'e cuntrollo mia",
+       "tog-watchlisthidebots": "Annasconne 'e cagnamiènte d&#39;'e bot ncopp'a l'elenco 'e cuntrollo",
+       "tog-watchlisthideminor": "Annascunne 'e cagnamiente piccerille d&#39;'a lista 'e cuntrollo mia",
+       "tog-watchlisthideliu": "Annascunne 'e cagnamiénte 'e l'utente riggistrate 'a l'elenco 'e cuntrollo",
+       "tog-watchlisthideanons": "Annascunne 'e cagnamiente fatte d'anonime 'a l'elenco 'e cuntrollo",
+       "tog-watchlisthidepatrolled": "Annascunne 'e modifiche cuntrullate 'a l'elenco 'e cuntrollo",
+       "tog-ccmeonemails": "Famme na masciata pùre c&#39;'a copia 'e le mail mannate a l'ati utente",
+       "tog-diffonly": "Nun me fà vedé cuntenute aropp'o cunfronto nfra verziune",
+       "tog-showhiddencats": "Fa' vedé 'e categurie annascunnute",
+       "tog-norollbackdiff": "Nun fà vedé 'o cunfronto nfra verziune quanno se fà nu rollback",
+       "tog-useeditwarning": "Famme sapé quanno lasso na paggena 'e mudifeca senza sarvà 'e cagnamiente",
+       "tog-prefershttps": "Usa sempe na connessione sicura quanno s'accummincia sessione",
        "underline-always": "Sèmpe",
        "underline-never": "Màje",
+       "underline-default": "Tiene sempe le mpostazzione d' 'o navigatóre",
+       "editfont-style": "Stile 'e carattere dint' 'a casella 'e testo",
+       "editfont-default": "Predefinito d' 'o navigatóre",
+       "editfont-monospace": "Carattere a larghezza fissa",
+       "editfont-sansserif": "Carattere sans-serif",
+       "editfont-serif": "Carattere Serif",
        "sunday": "dumméneca",
        "monday": "lunnerì",
        "tuesday": "marterì",
        "category_header": "Paggene rìnt'a categurìa \"$1\"",
        "subcategories": "Categurìe secunnarie",
        "category-media-header": "File 'int'â categuría \"$1\"",
+       "category-empty": "<em>Chista categurìa p' 'o mumento nun tene pàggene o media.</em>",
        "hidden-categories": "{{PLURAL:$1|Categurìa annascusa|Categuríe annascuse}}",
+       "hidden-category-category": "Categurìe annascuse",
        "category-subcat-count": "{{PLURAL:$2|Chesta categurìa cuntene n'unneca sottocategurìa, nzignata 'e seguito.|Chesta categurìa cuntene {{PLURAL:$1|'a sottocategurìa nzignata|'e $1 sottocategurìe nzignate}} 'e seguito, 'a nu totale 'e $2.}}",
+       "category-subcat-count-limited": "Chista categurìa tene sti {{PLURAL:$1|sottocategurìa|$1 sottocategurìe}}.",
        "category-article-count": "{{PLURAL:$2|Chesta categurìa cuntiene un'unneca paggena, nzignata ccà sotto.|Chesta categurìa cuntiene {{PLURAL:$1|'a paggena nzignata|'e $1 paggene nzignate}} ccà sotto, faccenno nu totale 'e $2.}}",
+       "category-article-count-limited": "Chista categurìa téne {{PLURAL:$1|sta pàggena|sti $1 pàggene}} dinto.",
+       "category-file-count": "{{PLURAL:$2|Chista categurìa cunténe nu file solo, nzignato ccà sotto.|Chista categurìa cunténe {{PLURAL:$1|nu file, nzignato|$1 file nzignate}} ccà sotto, faccenno nu totale 'e $2.}}",
+       "category-file-count-limited": "Chista categurìa téne {{PLURAL:$1|sta pàggena|sti $1 pàggene}} dinto.",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Paggene ennecezzate",
        "noindex-category": "Paggene nun ennecezzate",
        "moredotdotdot": "Cchiù...",
        "morenotlisted": "Chisto elenco nun è cumpreto.",
        "mypage": "Paggena",
-       "mytalk": "'E mmie chiàcchieriate",
+       "mytalk": "'E chiàcchieriate mmie",
        "anontalk": "Chiacchierate pe chisto IP",
        "navigation": "Navigazzione",
        "and": "&#32;e",
        "permalink": "Jonta permanente",
        "print": "Stampà",
        "view": "Vere",
+       "view-foreign": "Vide ncopp'a $1",
        "edit": "Càgna",
+       "edit-local": "Càgna descrizione lucale",
        "create": "Cria",
+       "create-local": "Azzecca descrizione lucale",
        "editthispage": "Càgna chesta paggena",
        "create-this-page": "Cria sta paggena",
        "delete": "Scancèlla",
        "deletethispage": "Scancèlla chésta paggena",
        "undeletethispage": "Ripristina chista paggena",
+       "undelete_short": "Arremedia {{PLURAL:$1|na verziona|$1 vverziune}}",
+       "viewdeleted_short": "Vide {{PLURAL:$1|nu cagnamiénto scancellato|$1 cagnamiénte scancellate}}",
        "protect": "Prutegge",
        "protect_change": "càgna",
        "protectthispage": "Ferma chesta paggena",
        "redirectedfrom": "(Redirect 'a $1)",
        "redirectpagesub": "Paggena 'e redirect",
        "lastmodifiedat": "Urdema cagnamiénto pe' a paggena: $2, $1.",
-       "viewcount": "Chesta paggena è stata lètta {{PLURAL:$1|una vòta|$1 vòte}}.",
+       "viewcount": "Chesta paggena è stata liggiùta {{PLURAL:$1|una vòta|$1 vòte}}.",
        "protectedpage": "Paggena prutetta",
        "jumpto": "Vaje a:",
        "jumptonavigation": "navigazione",
        "jumptosearch": "truova",
+       "view-pool-error": "Te cercammo scusa, 'e servers téneno troppo carico mo'.\nTroppe utente stanno cercanno 'e veré sta paggena.\nPe' piacere, aspetta nu poco primma 'e turnà a caricà sta paggena.\n\n$1",
+       "generic-pool-error": "Te cercammo scusa, 'e servers téneno troppo carico mo'.\nTroppe utente stanno cercanno 'e veré sta risorsa.\nPe' piacere, aspetta nu poco primma 'e turnà a caricà sta risorsa.",
+       "pool-timeout": "Tiempo pe' s'aspettà ô blocco",
+       "pool-queuefull": "A córa 'e fatiche è chiena",
        "pool-errorunknown": "Errore scanusciuto",
+       "pool-servererror": "'O servizio contatore d''e fatiche nun è a disposizióne ($1).",
        "aboutsite": "'Nfrummazione ncòpp'a {{SITENAME}}",
        "aboutpage": "Project:'Nfrummazione",
        "copyright": "Cuntenute suggiette a licienza 'e auso $1 se nun fuje ritto atro.",
        "privacy": "'Nformazzione ppe a privacy",
        "privacypage": "Project:'Nfrummazione ncopp'â privacy",
        "badaccess": "Nun haje 'e premmesse abbastante.",
+       "badaccess-group0": "Nun t'è permesso 'a ffà l'azione richiesta.",
+       "badaccess-groups": "L'azione ch'ê richiesto è permessa sulamente all'utente ca ce stanno dint'a {{PLURAL:$2|'o gruppo|uno d' 'e gruppe}}: $1.",
+       "versionrequired": "Ce vò 'a verziona $1 'e MediaWiki",
+       "versionrequiredtext": "Pe' usà sta paggena ce vò 'a verziona $1 'e MediaWiki. Vide [[Special:Version|'a paggena 'e verzione]].",
        "ok": "OK",
        "retrievedfrom": "Estratto 'e \"$1\"",
        "youhavenewmessages": "Haje $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Tiene}} $1 'a {{PLURAL:$3|n'atu utente|$3 utente}} ($2).",
+       "youhavenewmessagesmanyusers": "Tiene $1 'a tant'utente ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|na mmasciata nova|999=mmasciate nnove}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|urdemo cagnamiento|999=urdeme cagnamiente}}",
        "youhavenewmessagesmulti": "Tiene nuove mmasciate $1",
        "editsection": "càgna",
        "editold": "càgna",
        "toc": "Énnece",
        "showtoc": "faje vedé",
        "hidetoc": "annascunne",
+       "collapsible-collapse": "Annascunne",
        "collapsible-expand": "faje vede",
+       "confirmable-confirm": "Sì {{GENDER:$1|sicuro|sicura}}?",
+       "confirmable-yes": "Sì",
+       "confirmable-no": "No",
        "thisisdeleted": "Vere o ripristina $1?",
        "viewdeleted": "Vire $1?",
+       "restorelink": "{{PLURAL:$1|nu cagnamiénto scancellato|$1 cagnamiénte scancellate}}",
        "feedlinks": "Feed:",
+       "feed-invalid": "'O tipo 'e sottoscrizione p' 'o feed nun è buono",
+       "feed-unavailable": "Nun ce stanno 'e feed sinnecaziona",
+       "site-rss-feed": "Feed 'e sinnecaziona RSS 'e $1",
        "site-atom-feed": "Feed Atom 'e $1",
+       "page-rss-feed": "Feed RSS pe' \"$1\"",
        "page-atom-feed": "Feed Atom ppe \"$1\"",
        "red-link-title": "$1 ('a paggena nun esiste)",
+       "sort-descending": "Urdinamento dicriscente",
+       "sort-ascending": "Urdinamento criscente",
        "nstab-main": "Articulo",
        "nstab-user": "Paggena utente",
+       "nstab-media": "File multimediale",
        "nstab-special": "Paggena speciale",
        "nstab-project": "Paggena 'e servizio",
        "nstab-image": "Fiùra",
        "nstab-template": "Modello",
        "nstab-help": "Ajùto",
        "nstab-category": "Categurìa",
+       "nosuchaction": "Operazione nun ricanusciuta",
+       "nosuchactiontext": "L'azione specificata dint'a l'URL nun è bbona.\nPuò darse ca l'URL fosse stata digitata 'n modo sbagliàto o che fosse stato seguito nu link sbagliàto.\nChesto putesse innecà pùre nu bug dint'a {{SITENAME}}.",
+       "nosuchspecialpage": "Chista paggena speciale nun ce sta",
+       "nospecialpagetext": "<strong>'A paggena speciale richiesta nun è ricanusciuta.</strong>\n\nL'alenco d' 'e paggene valide spiciale 'o truove int'a [[Special:SpecialPages|l'Elenco d' 'e paggine spiciale]].",
+       "error": "Sbaglio",
+       "databaseerror": "Sbaglio dint'a database",
+       "databaseerror-text": "C'è stato nu sbaglio dint'a na richiesta â database.\nPuò darse ca ce sta nu bug int' 'o software",
+       "databaseerror-textcl": "C'è stato nu sbaglio dint'a na richiesta â database.",
+       "databaseerror-query": "Richiesta: $1",
+       "databaseerror-function": "Funzione: $1",
+       "databaseerror-error": "Sbaglio: $1",
+       "laggedslavemode": "'''Attenziò:''' 'a paggena putesse nun fà vedé ll'aggiornamente cchiù ricente.",
+       "readonly": "Database bloccato",
+       "enterlockreason": "Miette 'o mutivo 'e blocco, nzieme a 'o mumento quanno se penza ca 'o blocco se sarrà fernuto",
+       "readonlytext": "Mo' mo' 'o database è bloccato e nun se ponno azzeccà cagnamiente o pàggene. 'O blocco è normalmente azzeccato a n'operazione semprice 'e manutenzione, e quanno s'è fernuta allora 'a paggena addeventa nurmale.\n\nL'ammenistratore d' 'o sistema ch'a fatto 'o blocco ce dà sta spiegazione: $1",
+       "missing-article": "'O database nun trova 'o testo 'e na paggena c'adda stà, c' 'o nomme \"$1\" $2.\n\nNormalmente, chesto succere quanno s'è richiamato, a partire d' 'a cronologgia o pùre a 'o confronto tra verzione, nu cullegamento a na paggena scancellata, a nu confronto tra verziune inesistente o a nu confronto tra verziune re-pulezzate d' 'a cronologgia.\n\n'N caso cuntrario, può darse pure nu sbaglio dint'o software.\nPer piacere, mannate na mmasciata ccà all'[[Special:ListUsers/sysop|amministratore]] annummenanno l'URL 'n quistiona.",
        "missingarticle-rev": "(nummero 'e verzione: $1)",
+       "missingarticle-diff": "(Diff: $1, $2)",
+       "readonly_lag": "'O database s'è bloccato automaticamente pe' tramente ca 'e servers 'e database schiave sincronizzano c' 'o server masto.",
        "internalerror": "Errore 'nterno",
        "internalerror_info": "Errore 'nterno: $1",
+       "filecopyerror": "Nun se può copiare 'o file \"$1\" into \"$2\".",
+       "filerenameerror": "Nun se può rinnummenare 'o file \"$1\" into \"$2\".",
        "filedeleteerror": "Nun se pô scancellà 'o file \"$1\"",
+       "directorycreateerror": "Nun se può crià 'a cartella \"$1\".",
+       "filenotfound": "Nun se può truvà 'o file \"$1\".",
+       "unexpected": "Valore imprevisto: \"$1\"=\"$2\".",
+       "formerror": "Sbàglio: nun se può mannà 'o modulo",
+       "badarticleerror": "Chest'azione nun se può fà int'a sta paggena.",
        "cannotdelete": "Nun è possibbele scassà 'a paggena o 'a fiura $1 addamannata. Putria éssere stato già scancellato.",
+       "cannotdelete-title": "Nun se può scancellà 'a paggena \"$1\"",
+       "delete-hook-aborted": "'O scancellamiento è stato annullato 'a 'o «hook».\nNun dette spiegazione nisciuna.",
+       "no-null-revision": "Nun se può crià na nnova revisione nulla p' 'a paggena \"$1\"",
        "badtitle": "'O nnomme nun è jùsto",
+       "badtitletext": "'O titolo d' 'a paggena richiesta è abbacante, sbagliato o pure nun è linkato buono a 'o titolo inter-lengua o inter-wiki.\nPutesse pure tené uno o cchiù carattere ca nun se ponno usà dint'e titule.",
+       "perfcached": "Può darse, ch' 'e ddate ca stanno ccà (\"ncache\") nun song'agghiurnate. Nu massimo 'e {{PLURAL:$1|unu risultato è|$1 risultate songhe}} a disposizione 'n \"cache\".",
+       "perfcachedts": "'E ddate ca stanno ccà songhe asciute 'a na copia \"cache\" d' 'o database, 'o cuale tene l'úrdemo agghiurnamento 'o $1. Nu massimo 'e {{PLURAL:$4|unu risultato è|$4 risultate songhe}} a disposizione dint'a \"cache\".",
+       "querypage-no-updates": "Ll'agghiurnamente pe' sta paggena songo sospese mmo'. 'E ddate cuntenute ccà nun s'agghiurnarranno.",
        "viewsource": "Vere sorgente",
        "viewsource-title": "Vere surgente 'e $1",
+       "actionthrottled": "Azione ritardata",
+       "actionthrottledtext": "Comme misura anti-spam, sì lemmetato 'a ffà st'azione troppe vote dint'a nu curto spazio 'e tiempo, e mò stu lèmmeto è stato superato.\nPe' piacere prova n'ata vota dint'a cocche minuto.",
+       "protectedpagetext": "Sta paggena s'è prutetta pe' ne bloccà 'a mudifeca o n'ata azione.",
+       "viewsourcetext": "Putisse vedé e copià 'o codece surgiva 'e sta paggena:",
+       "viewyourtext": "Putisse vedé e copià 'o codice surgiva d' 'e <strong>cagnamiénte tuoje</strong> a sta paggena:",
+       "protectedinterface": "Sta paggena nce appruviggióna 'e n'interfaccia testo p' 'o software dint'a sta wiki, e s'è prutetta pe' nce scanzà 'e cocch'abbuso.\nSi se buò azzeccà o cagnà traduzzione ncopp'a tutte 'e wiki, pe piacere usa [//translatewiki.net/ translatewiki.net], 'o pruggetto Mediawiki p'a localizzaziona dint'a l'ate llengue",
+       "editinginterface": "'''Attenziò:''' 'O testo 'e sta paggena ffà parte 'e ll'interfaccia utente d' 'o sito.\nTutt' 'e cagnamiénte fatte a sta paggena cumpareno dint' 'e mmasciate 'e ll'interfaccia veduta 'a tutte ll'utente dint'a sta wiki.\nSi se buò azzeccà o cagnà traduzzione ncopp'a tutte 'e wiki, pe piacere usa [//translatewiki.net/ translatewiki.net], 'o pruggetto Mediawiki p'a localizzaziona dint'a l'ate llengue",
+       "cascadeprotected": "Sta paggena è stata prutetta 'a 'o cangamento pecché sta dint'a {{PLURAL:$1|sta paggena, che è prutetta|sti paggene, che songo prutette}} quann' 'a l'ozione \"ricurziva\" è attiva:\n$2",
+       "namespaceprotected": "Nun hè permesso a cagnà 'e paggene dint'a stu namespace '''$1'''.",
+       "customcssprotected": "Nun t'è permesso 'a cagnà sta paggena CSS, pecché cuntene 'e mpustaziune perzunale 'e n'at'utente.",
+       "customjsprotected": "Nun t'è permesso 'a cagnà sta paggena JavaScript, pecché cuntene 'e mpustaziune perzunale 'e n'at'utente.",
+       "mycustomcssprotected": "Nun t'è permesso 'a cagnà sta paggena CSS.",
+       "mycustomjsprotected": "Nun t'è permesso 'a cagnà sta paggena JavaScript.",
+       "myprivateinfoprotected": "Nun t'è permesso a cagnà 'a nfurmaziona privata toja.",
+       "mypreferencesprotected": "Nun t'è permesso 'a cagnà 'e preferenze tuoje.",
+       "ns-specialprotected": "'E paggene spiciale nun se ponno cagnà.",
+       "titleprotected": "'A criazione 'e stu titolo è stata bloccata 'a ll'utente [[User:$1|$1]].\n'A ragione è chesta: ''$2''.",
+       "filereadonlyerror": "Nun se può cagnà 'o file \"$1\" pecché 'o repository 'e file \"$2\" sta 'n modo sulo-lettura.\n\nL'ammenistratore che l'ha bloccato ha dato sta ragione: \"$3\".",
+       "invalidtitle-knownnamespace": "Titolo nun buono c' 'o namespace \"$2\" e testo \"$3\"",
+       "invalidtitle-unknownnamespace": "Titolo nun buono c' 'o namespace scanusciuto \"$1\" e testo \"$2\"",
        "exception-nologin": "Acciesso nun affettuato",
+       "exception-nologin-text": "Pe' piacere fa ll'accieso pe putè accedere a sta paggena o azione.",
+       "exception-nologin-text-manual": "Pe' piacere $1 pe putè trasì dint'a sta paggena o azione.",
+       "virus-badscanner": "Sbaglio 'e configurazione: antivirus scanusciuto: ''$1''",
+       "virus-scanfailed": "scanziona fallita (codece $1)",
+       "virus-unknownscanner": "antivirus scanusciuto:",
        "logouttext": "'''Site asciùte.'''\n\nNota ca arcune paggene potrebbero cuntinuà ad apparire comme se 'o logout nun fosse avvenuto finché nun venne pulita 'a cache d\"o proprio browser.",
        "welcomeuser": "Bemmenuto, $1!",
+       "welcomecreation-msg": "'O cunto tuo è stato criato.\nMo' può cagnà 'e [[Special:Preferences|preferenze 'e {{SITENAME}}]].",
        "yourname": "Nomme utente",
        "userlogin-yourname": "Nomme utente",
        "userlogin-yourname-ph": "'Nserisce 'o tujo nomme utente",
        "createacct-yourpasswordagain-ph": "'Nserisce 'e novo 'a password",
        "remembermypassword": "Allicuordate d\"a password (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "userlogin-remembermypassword": "Mantienime cullegato",
+       "userlogin-signwithsecure": "Usa na conessione sicura",
        "yourdomainname": "Spiecà 'o dumminio",
+       "password-change-forbidden": "Nun se ponno cagnà 'e password ncopp'a sta wiki.",
+       "externaldberror": "Ce sta n'errore ch' 'e server d'autenticazione esterno, o pure nun t'è permesso accedere all'aghiurnamento d' 'o cunto sterno tujo.",
        "login": "Tràse",
        "nav-login-createaccount": "Tràse o cria n'acciesso novo",
        "userlogin": "Tràse o cria n'acciesso novo",
        "userlogout": "Jèsce",
        "notloggedin": "Acciesso nun affettuato",
        "userlogin-noaccount": "Nun haje ancora n'acciesso?",
+       "userlogin-joinproject": "Fà 'o riggistro ncopp'a {{SITENAME}}",
        "nologin": "Nun haje ancora n'acciesso? '''$1'''.",
        "nologinlink": "Crialo mmo",
        "createaccount": "Cria nu cunto novo",
        "gotaccount": "Tiene già nu cunto? '''$1'''.",
        "gotaccountlink": "Tràse",
        "userlogin-resetlink": "Haje dimenticato 'e toje date 'e acciesso?",
+       "userlogin-resetpassword-link": "Te sì scurdat' 'a password?",
+       "userlogin-helplink2": "Aiuto cu l'accieso",
+       "userlogin-loggedin": "Sì già connesso comme {{GENDER:$1|$1}}.\nUsa 'o modulo ccà abbascio pe trasì com'a n'atu utente.",
+       "userlogin-createanother": "Cria n'at'account",
+       "createacct-emailrequired": "Indirizzo email",
+       "createacct-emailoptional": "Indirizzo 'e posta elettronica (ozzionale)",
+       "createacct-email-ph": "Scrive 'o nderizzo mail tuo",
+       "createacct-another-email-ph": "Scrive nderizzo mail",
+       "createaccountmail": "Usa na password qualunque temporanea e manna sta password a l'indirizzo 'e posta e-mail specificato",
+       "createacct-realname": "Nomme riale (ozzionale)",
        "createaccountreason": "Mutivo:",
        "createacct-reason": "Mutivo",
+       "createacct-reason-ph": "Pecché staje crianno n'at'utenza",
+       "createacct-captcha": "Cuntrollo 'e sicurezza",
+       "createacct-imgcaptcha-ph": "Scrive 'o testo ca vire ncoppa",
        "createacct-submit": "Cria 'a toja utenza",
        "createacct-another-submit": "Cria 'n atro account",
        "createacct-benefit-heading": "{{SITENAME}} è fatta 'e perzone comme te.",
        "createacct-benefit-body1": "{{PLURAL:$1|càgnamiento|càgnamiente}}",
        "createacct-benefit-body2": "{{PLURAL:$1|paggena|paggene}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|contribbutòre ricente|contribbutture ricente}}",
+       "badretype": "'E passwords ch'è mis nun songe eguale.",
+       "userexists": "'O nomme utente ch'è mis è già ausàto.\nPe' piacere scigliete n'atu nomme.",
        "loginerror": "Probblema 'e accièsso",
+       "createacct-error": "Errore 'e criazione 'e cunto",
+       "createaccounterror": "Nun se può crià nu cunto: $1",
+       "nocookiesnew": "'A riggistrazione è stata completata, ma nun se può accedere a {{SITENAME}} pecché 'e cookie songo disattivate. Prova n'ata vota c' 'o nomme e 'a password quanno 'e cookie sarrann'attivate dint'o navigatore stesso.",
+       "nocookieslogin": "{{SITENAME}} usa cookies pe' putè dà accies'a ll'utente.\n'E cookies tuoje songo stutate.\nPe' piacere appiccia 'e cookies dint'o navigatóre e prova n'ata vota.",
+       "nocookiesfornew": "'O cunto utente nu s'è criato, pecché nun s'è potuto confirmà d' 'a fonte suja.\nVide si 'e cookies song'appicciate, ricarreca 'a paggena e prova n'ata vota.",
+       "noname": "Nun hè specificato nu nomme valido d'utente.",
        "loginsuccesstitle": "Acciesso affettuato",
        "loginsuccess": "'''Si stato cunnesso ô server 'e {{SITENAME}} cu 'o nomme utente 'e \"$1\".'''",
+       "nosuchuser": "Nun è riggistrato nisciuno utente c' 'o nomme \"$1\".\n'E nomme utente songo sensibbele a 'e maiuscole.\nCuntrolla 'o nomme nzertàto, o [[Special:UserLogin/signup|crìa n'utenza nova]].",
        "nosuchusershort": "Nun ce stanno utente cu o nòmme \"$1\". Cuntrolla si scrivìste buòno.",
        "nouserspecified": "Tiene 'a dìcere nu nomme pricìso.",
+       "login-userblocked": "Chist'utente è bloccato. Nun se può effettuà 'o login.",
+       "wrongpassword": "'A password nzertàta nun è bbona.\nPe' piacere prova n'ata vota.",
+       "wrongpasswordempty": "'A passwort nzertàta è bbacante.\nPe' piacere prova n'ata vota.",
+       "passwordtooshort": "'E password hann'avé minimo {{PLURAL:$1|nu carattere|$1 carattere}}.",
+       "password-name-match": "'A password adda essere diverza 'a 'o nomme utente.",
+       "password-login-forbidden": "L'uso 'e stu nomme utente e password è stato proibito.",
+       "mailmypassword": "Riabbìa 'a password",
+       "passwordremindertitle": "Nnova password temporale pe' {{SITENAME}}",
+       "passwordremindertext": "Cocche perzona (pussibbilmente tu, cu n'innerizzo IP $1) ha dimmannato l'invio 'e na password d'accieso nova pe' {{SITENAME}} ($4).\nNa password temporanea e' l'utente \"$2\" s'è abbiata comme \"$3\".\nSi chest'è stata l'intenzione toja, allora hè a trasì dint'o sito e cagnà 'a password mò. 'A password temporanea scade aropp'a {{PLURAL:$5|nu juorno|$5 ghiuorne}}.\n\nSi nun sì stato tu a dimannà 'a password, o pure hè truvat'a password e nun 'a bbuò cagnà cchiù, allora nun fà niente e continua a usare 'a password viecchia.",
+       "noemail": "Nun ce sta indirizzo e-mail pe' l'utente \"$1\".",
+       "noemailcreate": "S'add'appruviggiunà n'indirizzo e-mail buono.",
+       "passwordsent": "Na password nova è stata inviata a l'innerizzo e-mail riggistrato 'a ll'utente \"$1\".\nPe' piacere, tràse appena hè ricevuta sta password.",
+       "blocked-mailpassword": "Ll'IP tuoja è bloccata pe' scrivere, picciò nun se ponno usà 'e ffunzione pe te mannà na password nova.",
+       "eauthentsent": "Na mmasciata 'e conferma t'è stata mannata a l'indirizzo e-mail nzignàto.\nApprimm' 'e te mannà n'atu mail, hè 'a stà 'a ffà 'e struzione dint'a l'e-mail, pe' cunfermà ca 'o cunto fosse d' 'o tujo overo.",
+       "throttled-mailpassword": "S'è mannata na mail pe te' riabbià 'a password 'a meno 'e {{PLURAL:$1|n'ora|$1 ore}}.\nPe' ce sparagnà abbuse, 'a funzione 'e riabbiamento d' 'a password se può usa sulamente na vota ogne {{PLURAL:$1|ora|$1 ore}}.",
+       "mailerror": "Errore pe' tramente ca se mannava na mmasciata: $1",
        "acct_creation_throttle_hit": "{{PLURAL:$1|1 registrazzione è già stata effettuata|$1 registrazzione song già state effettuate}} 'e qualcuno cu 'o tujo stisso innerezzo IP dint'ô urdemo juorno: è 'o massimo cunsentito 'n chisto periodo 'e tiempo.\nPerciò, 'e utente ca ausano chisto innerezzo IP nun possono registrarse ppe 'o mumiento.",
+       "emailauthenticated": "'O ndirizzo email è stato cunfermato 'o $2 a 'e $3.",
+       "emailnotauthenticated": "'O ndirizzo 'e posta elettronica nun è stat'ancora cunfermato.\nNun se mannarranno mmasciate e-mail p' ' funzione ccà abbascio.",
+       "noemailprefs": "Hè 'a specificà nu ndirizzo e-mail pe ll'attivà sti funzione.",
+       "emailconfirmlink": "Cunferma 'o nderizzo mail d' 'o tujo.",
+       "invalidemailaddress": "'O nderizzo e-mail scritto nun se può accettà pecché nun tene nu furmatto buono.\nScrive n'ata vota nu nderizzo bbuono o abbacanta 'a casella.",
+       "cannotchangeemail": "'E ccunte mail nun se ponno cagnà dint'a sta wiki.",
+       "emaildisabled": "Chistu sito nun può mannà mmasciate e-mail.",
        "accountcreated": "Cunto criato",
+       "accountcreatedtext": "È stata criata n'utenza pe' [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|mmasciata]]).",
+       "createaccount-title": "Criazione 'e nu cunto pe' {{SITENAME}}",
+       "createaccount-text": "Coccherun ave fatto nu cunto ncoppa {{SITENAME}} ($4) a nomme 'e $2, associato a st'indirizzo 'e posta elettronica. 'A password pe l'utente \"$2\" è abbiàta a comme \"$3\".\nFosse buono 'e trasì ampressa e cagnà 'a password subbeto.\n\nSi 'a criazione d' 'o cunto è stata nu sbaglio, allora putite lassà perde sta mmasciata.",
+       "login-throttled": "Songo state fatte troppe tentative 'a trasì dint'a nu periodo troppo curto.\nAspetta nu $1 e prova aròppo.",
+       "login-abort-generic": "'O login tujo nun ha avuto succiesso - Annullato",
        "loginlanguagelabel": "Lengua: $1",
+       "suspicious-userlogout": "'A richiesta 'e disconnessione d' 'a toja è stata negate pecché pare ca fosse mannata 'a nu navigatóre rutto o nu proxy 'e \"caching\".",
+       "createacct-another-realname-tip": "'O nomme overo vuosto è ozzionale.\nSi scigliete 'e nzertà 'o nomme overo, chesto s'ausarrà pe' dà l'utente l'attribuzione d' 'a fatica fatta.",
+       "pt-login": "Tràse",
+       "pt-login-button": "Tràse",
+       "pt-createaccount": "Cria nu cunto nuovo",
+       "pt-userlogout": "Jèsce",
+       "php-mail-error-unknown": "Errore scanusciuto dint'a funzione PHP mail()",
+       "user-mail-no-addy": "Hè cercato 'e mannà na mmasciata e-mail senza indirizzo.",
+       "user-mail-no-body": "Hè cercato 'e mannà na mmasciata e-mail c' 'o testo abbacante o troppo curto.",
        "changepassword": "Cagna password",
+       "resetpass_announce": "Pe' trasì finalmente, hè 'a abbià na password nova.",
+       "resetpass_header": "Cagna 'a password d' 'o cunto",
+       "oldpassword": "Password viecchia:",
+       "newpassword": "Password nova:",
+       "retypenew": "Ripete 'a password:",
+       "resetpass_submit": "Stabbelisce 'a password e tràse",
+       "changepassword-success": "'A password è stata cagnata currettamente!",
+       "changepassword-throttled": "Songo state fatte troppe tentative 'a trasì.\nAspetta nu $1 apprimma 'e pruvà n'ata vota.",
+       "resetpass_forbidden": "'E password nun se ponno cagnà",
+       "resetpass-no-info": "Hè 'a trasì ('o login) pe ffà l'acciesso a sta paggena direttamente.",
+       "resetpass-submit-loggedin": "Cagna password",
        "resetpass-submit-cancel": "Canciella",
+       "resetpass-wrong-oldpass": "'A password temporanea o attuale nun è bbona.\n'A password putesse avé cagnato, o pure s'è addimannata na password temporanea nova.",
+       "resetpass-recycled": "Pe piacere riabbìa 'a password e miette na password differénte a chella 'e mmò.",
+       "resetpass-temp-emailed": "Sì {{GENDER:$1|trasuto|trasuta}} cu nu codece temporaneo, mannato via e-mail. Pe' fà cumpleta 'a riggistraziona, avite 'e abbià na password nova ccà:",
+       "resetpass-temp-password": "Password temporanea:",
+       "resetpass-abort-generic": "'O cagnamiento d' 'a password s'è spezzato 'a na stensione.",
+       "resetpass-expired": "'A pasword è ammaturata. Avite 'e ffà na password nova pe putè trasì.",
+       "resetpass-expired-soft": "'A pasword toja è ammaturata e s'adda riabbià. Avite 'e scegliere na password nova mò, o ffà click ncopp'a \"{{int:resetpass-submit-cancel}}\" p' 'a riabbià aroppo.",
+       "resetpass-validity-soft": "'A password toja nun è bbona: $1\n\nAvite 'e scegliere na password nova mò, o ffà click ncopp'a \"{{int:resetpass-submit-cancel}}\" p' 'a riabbià aròppo.",
+       "passwordreset": "Riabbìa 'a password",
+       "passwordreset-text-one": "Ghienche stu modulo pe' ricevere na mmasciata e-mail c' 'a password temporanea.",
+       "passwordreset-text-many": "{{PLURAL:$1|Ghienche uno d' 'e campe pe' ricevere na password temporanea cu na mmasciata e-mail.}}",
+       "passwordreset-legend": "Riabbìa 'a password",
+       "passwordreset-disabled": "'A funzione 'e riabbìo d' 'e password è stata stutata dint'a sta wiki.",
+       "passwordreset-emaildisabled": "'E funzione e-mail songo state stutate dint'a sta wiki.",
        "passwordreset-username": "Nomme utente:",
        "passwordreset-domain": "Duminio:",
+       "passwordreset-capture": "Vulite vedé 'e cuntenute d' 'a mmasciata mail?",
+       "passwordreset-capture-help": "Si se seleziona sta cascia, 'a mmasciata e-mail (c' 'a password temporanea), se mmustarrà a vuje e poi pure se mannarrà a l'utente.",
+       "passwordreset-email": "Indirizzo e-mail:",
+       "passwordreset-emailtitle": "Dettaglie d' 'o cunto pe' {{SITENAME}}",
+       "passwordreset-emailtext-ip": "Coccherun (può darse ca sì tu, cu n'indirizzo IP $1) ha addimannato na mmasciata c' 'a password nova pe' putè trasì a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|L'utente associate}} a st'indirizze e-mail songo:\n\n$2\n\n{{PLURAL:$3|Sta password temporanea ammaturarrà|Sti password temporanee ammaturarranno}} aropp'a {{PLURAL:$5|nu juorno|$5 ghiuorne}}.\nHè 'a trasì e scegliere na password nova mò. \n\nSi nun sì stato tu a fà sta richiesta, o te sì scurdat' 'a password origginale e nun 'a buò cagnà cchiù, lassa perde sta mmasciata e usa 'a password viecchia.",
+       "passwordreset-emailtext-user": "L'utente $1 di {{SITENAME}} ha addimannato na mmasciata c' 'a password nova pe' putè trasì a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|L'utente associate}} a st'indirizze e-mail songo:\n\n$2\n\n{{PLURAL:$3|Sta password temporanea ammaturarrà|Sti password temporanee ammaturarranno}} aropp'a {{PLURAL:$5|nu juorno|$5 ghiuorne}}.\nHè 'a trasì e scegliere na password nova mò. \n\nSi nun sì stato tu a fà sta richiesta, o te sì scurdat' 'a password origginale e nun 'a buò cagnà cchiù, lassa perde sta mmasciata e usa 'a password viecchia.",
+       "passwordreset-emailelement": "Nomme utente: $1\nPassword temporanea: $2",
+       "passwordreset-emailsent": "Na mmasciata e-mail pe' riabbià 'a password è stata mannata.",
+       "passwordreset-emailsent-capture": "Na mmasciata e-mail pe' riabbià 'a password è stata mannata, chista mmasciata 'a putite vedé ccà abbascio.",
+       "passwordreset-emailerror-capture": "Na mmasciata e-mail pe' riabbià 'a password è stata mannata, 'a putite vedé ccà abbascio, ma aita sapé ca nun s'è mannata a {{GENDER:$2|l'utente}} pecché c'è stato cocch'errore: $1",
+       "changeemail": "Cagna l'indirizzo e-mail",
+       "changeemail-header": "Cagna l'indirizzo e-mail d' 'o cunto",
+       "changeemail-text": "Ghienche stu modulo pe' cangà l'indirizzo mail d' 'o tuojo. Sarrà necessario nzertà 'a password tuja pe' puté cunfermà stu cagnamiento.",
+       "changeemail-no-info": "Hè 'a trasì ('o login) pe ffà l'acciesso a sta paggena direttamente.",
+       "changeemail-oldemail": "Indirizzo email 'e mmò:",
+       "changeemail-newemail": "Indirizzo e-mail nuovo:",
        "changeemail-none": "(nisciuno)",
+       "changeemail-password": "'A password tuja pe' {{SITENAME}}:",
+       "changeemail-submit": "Cagna e-mail",
        "changeemail-cancel": "Canciella",
+       "changeemail-throttled": "Hè fatto troppe tentative 'a trasì.\nAspetta nu $1 apprimma 'e pruvà n'ata vota.",
+       "resettokens": "Riabbìa 'e token",
+       "resettokens-text": "Ccà se ponno riabbià 'e chiave ca permetessero l'acciesso a determinate date private associate a 'o cunto tuojo.\n\nL'avisse 'e ffà quanno l'hè spartuto pe' sbaglio cu cocche perzona o pure quanno 'o cunto d' 'o tuojo è stato compromesso.",
+       "resettokens-no-tokens": "Nun ce stanno token 'a riabbià.",
+       "resettokens-legend": "Riabbìa 'e token",
+       "resettokens-tokens": "Token:",
+       "resettokens-token-label": "$1 (valore 'e mmò: $2)",
+       "resettokens-watchlist-token": "Token p' 'o feed web (Atom/RSS) d' 'e [[Special:Watchlist|cagnamiente a 'e paggene dint'a l'osservate spiciale tuoje]]",
+       "resettokens-done": "Token riabbiate.",
+       "resettokens-resetbutton": "Riabbìa 'e token scigliute",
        "bold_sample": "Grassetto",
        "bold_tip": "Grassetto",
        "italic_sample": "Corsivo",
        "link_sample": "Titulo ddo cullegamente",
        "link_tip": "Jonte nterne",
        "extlink_sample": "http://www.example.com titulo ddo cullegamente",
+       "extlink_tip": "Link esterno (arricuordate 'o prefisso http:// )",
        "headline_sample": "Testate",
        "headline_tip": "Testate 'e 2° livello",
+       "nowiki_sample": "Azzeccà 'o testo nun-furmattato ccà",
+       "nowiki_tip": "Lassa perde' 'a furmattazione wiki",
        "image_sample": "Essempio.jpg",
        "image_tip": "Fiùra ncuorporata",
        "media_tip": "Cullegamente a file multimediale",
+       "sig_tip": "Firma cu data e ora",
+       "hr_tip": "Linea orizzontale (ausà cu gedizzio)",
        "summary": "Énnece",
+       "subject": "Argomiento/titolo:",
        "minoredit": "Chisto è nu cagnamiénto piccerillo",
        "watchthis": "Tiene d'uocchio chesta paggena",
        "savearticle": "Sarva 'a paggena",
        "preview": "Anteprimma",
        "showpreview": "Vere anteprimma",
        "showdiff": "Fa veré 'e cagnamiente",
+       "blankarticle": "<strong>Attenziò:</strong> 'a paggena ca staje crianno è abbacante.\nFà click ncopp'a \"{{int:savearticle}}\" n'ata vota, 'a paggena sarrà criata senza cuntenute.",
+       "anoneditwarning": "'''Attenziò:''' Nun hè fatto l'acciesso.\nDint'a cronologgia d' 'a paggena sarrà riggistrato l'indirizzo IP d' 'o tuojo.",
+       "anonpreviewwarning": "''Nun hè fatto 'o login. Sarvann' 'a paggena, l'indirizzo IP d' 'o tuojo sarrà riggistrato dint'a cronologgia.''",
+       "missingsummary": "'''Attenziò:''' nun s'è specificato l'oggetto 'e stu cagnamiento. Clicann' 'a \"{{int:savearticle}}\" n'ata vota 'o cagnamiento sarrà sarvato cu l'oggetto abbacante.",
+       "missingcommenttext": "Pe' piacere scrivete nu commento ccà abbascio.",
+       "missingcommentheader": "'''Attenziò:''' nun s'è specificato l'oggetto/titolo 'e stu commento. Clicann' 'a \"{{int:savearticle}}\" n'ata vota 'o cagnamiento sarrà sarvato c' 'o titolo abbacante.",
+       "summary-preview": "Anteprimma'e l'oggetto:",
+       "subject-preview": "Anteprima 'e l'oggetto/intestazione:",
+       "blockedtitle": "Utente bloccato.",
+       "blockedtext": "<strong>'O nomme utente o ll'IP tuojo è stato bloccato.</strong>\n\n'O blocco è stato imposlocco è stato mpustato 'a $1. 'O mutivo d' 'o blocco è chesto: ''$2''\n\n* Abbiàta d' 'o blocco: $8\n* Ammaturità d' 'o blocco: $6\n* Tiempo 'e blocco: $7\n\nPuò cuntattà $1 o n'atu [[{{MediaWiki:Grouppage-sysop}}|ammenistratore]] pe' discutere 'o blocco.\n\nVide c' 'a funzione 'Scrive a ll'utente' nun è attiva si nun s'è riggistrato 'o ndirizzo e-mail buono dint' 'e [[Special:Preferences|preferenze]] o pùre si ll'uso 'e tale funzione è stato bloccato.\n\n'O ndirizzo IP attuale è $3, 'o nummero ID d' 'o blocco è #$5.\nPe' piacere avite 'e specificà tutte sti dettaglie ccà ncoppa quanno facite cocche dumanna.",
+       "autoblockedtext": "Ll'IP tuojo è stato bloccato pecché 'o steva piglianno n'atu utente, ch'è stato bloccato pe' $1.\n\n'O mutivo d' 'o blocco è chesto:\n\n:''$2''\n\n* Abbiàta d' 'o blocco: $8\n* Ammaturità d' 'o blocco: $6\n* Tiempo 'e blocco: $7\n\nPuò cuntattà $1 o n'atu [[{{MediaWiki:Grouppage-sysop}}|ammenistratore]] pe' discutere 'o blocco.\n\nVide c' 'a funzione 'Scrive a ll'utente' nun è attiva si nun s'è riggistrato 'o ndirizzo e-mail buono dint' 'e [[Special:Preferences|preferenze]] o pùre si ll'uso 'e tale funzione è stato bloccato.\n\n'O ndirizzo IP attuale è $3, 'o nummero ID d' 'o blocco è #$5.\nPe' piacere avite 'e specificà tutte sti dettaglie ccà ncoppa quanno facite cocche dumanna.",
+       "blockednoreason": "nisciuna ragione è stata indicata",
+       "whitelistedittext": "Pe' cagnà 'e ppaggene è necessario $1.",
+       "confirmedittext": "Pe puté cagnà paggene hè 'a cunfermà l'indirizzo e-mail.\nPe' piacere abbìa e ffà 'a validazione d' 'o ndirizzo e-mail pe' bbìa d' 'e [[Special:Preferences|preferenze d'utente]].",
+       "nosuchsectiontitle": "Nun se può truvà 'a sezziona",
+       "nosuchsectiontext": "Hè pruvat' 'a cagnà na sezziona ca nun ce sta.\nPuò darse ch'è stata spustata o scancellata pe' tramente ca stive vedenno sta paggena.",
        "loginreqtitle": "Pe' cagnà chesta paggena abbesognate aseguì ll'acciesso ô sito.",
        "loginreqlink": "aseguì ll'acciesso",
        "loginreqpagetext": "Pe' veré ate ppaggene abbesognate $1.",
        "accmailtitle": "'O password è stato mannato.",
        "accmailtext": "'Na password gennerata casualmente ppe [[User talk:$1|$1]] è stata mannata a $2. Chista password può essere càgnata dint'â paggena ppe ''[[Special:ChangePassword|càgna 'a password]]'' subbeto doppo l'acciesso.",
        "newarticle": "(Novo)",
+       "newarticletext": "Sì ghiuto addò nu link 'e na paggena ca nun esiste ancora.\nP' 'a crià sta paggena, accummencia a scirvere dint'a cascia cà abbascio (vide 'a [$1 paggena d'aiuto] pe liegge cchiù nfurmazziune).\nSi sì venuto ccà pe' sbaglio, vide 'e sprémmere 'o buttòne '''Arreto''' d' 'o navigatóre.",
+       "anontalkpagetext": "----\n''Chest'è 'a paggena 'e discussione 'e n'utente anonimo, ca nun ave criàt' 'ancora n'utenza o ca nun sta ausanno. Pe' l'identificà avite 'e truvà 'o nummero d' 'o ndirizzo IP d' 'o sujo. L'indirizze IP se ponno spartì però a cchiù 'e n'utente. Si sì n'utente anonimo e pienze ca 'e commente ccà dint'a sta paggena nun parlano 'e tte, allora [[Special:UserLogin/signup|crìa n'utenza nnova]] o [[Special:UserLogin|tràse cu chella ca tiene già]] pe' nun sta' mmescato mmiez'a l'ati utente anonime n futuro.''",
+       "noarticletext": "Mo' mo' 'a paggena richiesta è abbacante. Se pò [[Special:Search/{{PAGENAME}}|ascià stu titolo]] dint'a l'ati paggene d' 'o sito, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ascià dint'e riggistre azzeccate] o pure [{{fullurl:{{FULLPAGENAME}}|action=edit}} cagnà 'a paggena mo']</span>.",
+       "noarticletext-nopermission": "Mo' mo' 'a paggena richiesta è abbacante. Se pò [[Special:Search/{{PAGENAME}}|ascià stu titolo]] dint'a l'ati paggene d' 'o sito, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ascià dint'e riggistre azzeccate]</span>, però nun tiene 'o permesso 'a crià sta paggena.",
+       "missing-revision": "'A verziona #$1 d' 'a paggena \"{{FULLPAGENAME}}\" nun esiste.\n\nChest'è causato quanno se và dint'a nu link a na paggena ch'è stata scancellata.\n'E dettaglie se ponno truvà dint'a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 'o riggistro 'e scancellaziune].",
+       "userpage-userdoesnotexist": "'O cunto utente \"<nowiki>$1</nowiki>\" nun è riggistrato. Cuntrolla ca si buò overo crià o cagnà sta paggena.",
+       "userpage-userdoesnotexist-view": "'O cunto utente \"$1\" nun è riggistrato.",
+       "blocked-notice-logextract": "St'utente è bloccato mò.\nL'urdemo elemento d' 'o riggistro 'e blocche è ripurtato ccà abbascio p'avé nu riferimento:",
+       "clearyourcache": "'''Nota:''' aropo sarvate putisse necessità 'e pulezzà 'a caché d' 'o navigatóre pe' vedé 'e cagnamiente. \n*'''Firefox / Safari''': sprémme 'o buttóne maiuscole e ffà clic ncopp'a ''Recarreca'', o pure spremme ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' ncopp'a Mac)\n*'''Google Chrome''': spremme ''Ctrl-Shift-R'' (''⌘-Shift-R'' ncopp'a nu Mac)\n*'''Internet Explorer''': spremme 'o buttóne ''Ctrl'' pe' tramente ca faie click ncopp'a ''Refresh'', o pure spremmere ''Ctrl-F5''\n*'''Opera''': abbacanta tutt' 'a cache addò menu ''Strumiente → Preferenze''",
+       "usercssyoucanpreview": "'''Cunziglio:''' spremme 'o buttone 'Vide anteprimma' pe' pruvà 'o CSS nuovo apprimma d' 'o sarvà.",
+       "userjsyoucanpreview": "'''Cunziglio:''' spremme 'o buttone 'Vide anteprimma' pe' pruvà 'o JavaScript nuovo apprimma d' 'o sarvà.",
+       "usercsspreview": "'''Arricuordate ca chest'è sulamente n'anteprimma p' 'o CSS perzunale. 'E cagnamiente nun so' state ancora sarvate!'''",
+       "userjspreview": "'''Arricuordate ca chest'è sulamente n'anteprimma p' 'o JavaScript perzunale. 'E cagnamiente nun so' state ancora sarvate!'''",
+       "sitecsspreview": "'''Arricuordate ca chest'è sulamente n'anteprimma p' 'o CSS. 'E cagnamiente nun so' state ancora sarvate!'''",
+       "sitejspreview": "'''Arricuordate ca chest'è sulamente n'anteprimma p' 'o codece JavaScript. 'E cagnamiente nun so' state ancora sarvate!'''",
+       "userinvalidcssjstitle": "'''Attenziò:''' Nun esiste nisciuna skin c' 'o nomme \"$1\". Vide ch' 'e paggene .css e .js personalezzate teneno nu titolo n minucola, p'esempio {{ns:user}}:Esempio/vector.css e nun {{ns:user}}:Esempio/Vector.css.",
+       "updated": "(Agghiurnato)",
+       "note": "'''Nota:'''",
        "previewnote": "'''Chesta è sola n'anteprimma; 'e cagnamiénte â paggena nun songo ancora sarvate!'''",
+       "continue-editing": "Tràse int'a l'area 'e modifica",
+       "previewconflict": "L'anteprimma currisponne a 'o testo presente dint'a cascia 'e modifica ccà ncoppa e rappresentasse 'a paggena comme cumpare si scigliete 'e Sarvà ind'a stu mumento.",
+       "session_fail_preview": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.\nSi nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
+       "session_fail_preview_html": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.'''\n''Siccome dint' 'o {{SITENAME}} è abilitato l'uso 'e l'HTML cruro, 'o buttone d'anteprimma nun è abbiàto comme misura 'e sicurezza annanza cocch'attacco JavaScript''\n'''Si chest'era nu tentativo legittimo 'e cagnamiento, prova n'ata vota. Si nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
+       "token_suffix_mismatch": "'''Stu cagnamiento nun è stato sarvato pecché 'o client ave mmustato nu sbaglio dint'o scrivere d' 'e carattere d' 'a punteggiatura token. Pe luvà na possibbile corruzione d' 'o testo dint'a paggena, s'è rifiutat' 'a modifeca.\n\nSta situazione se può truvà, quanno staje ausanno nu servizio 'e proxy anonime via web cu d' 'e bug.'''",
+       "edit_form_incomplete": "'''Cocche parte d' 'o modulo 'e cagnamiento nun ha arrivato a 'o server; cuntrolla ch' 'e cagnamiente songo intatte e prova n'ata vota.'''",
        "editing": "Cagnamiento 'e $1",
+       "creating": "Staje crianno $1",
        "editingsection": "Cagnamiénto 'e $1 (sezzione)",
+       "editingcomment": "Cagnamiénto 'e $1 (nova sezzione)",
+       "editconflict": "Conflitto d'edizzione: $1",
+       "explainconflict": "N'at'utente ave sarvato na nova verziona d' 'a paggena pe' tramente ca stive a fà 'e cagnamiente.\n'A cascia 'e mudifeca ncoppa cuntene 'o testo d' 'a paggena ca mò sta online, accussì comme è stato agghiurnato a l'at'utente.\n'A verziona ch' 'e cagnamiente tuoje è stata mmece riportata dint'a cascia 'e mudifeca abbascio.\nSi 'e bbuò cunfermà hè 'a ripurtà 'e cagnamiente d' 'e tuoje dint'o testo ca esiste (dint'a cascia ncoppa).\nSpremmendo 'o buttón '{{int:savearticle}}', sarrà sarvato '''sulamente''' 'o testo cuntenuto dint'a cascia 'e cagnamiento ncoppa.",
+       "yourtext": "'O testo tuojo",
+       "storedversion": "A verziona 'n memoria",
+       "nonunicodebrowser": "'''Attenziò: staje ausanno nu navigatóre ca nun è compatibbele ch' 'e carattere Unicode. Pe' te permettere 'o cagnamiento d' 'e paggene senza crià ncunveniente, 'e carattere nun ASCII veneno viste dint' 'a cascia 'e cagnamiento sotto forma 'e codece esadecimale.'''",
+       "editingold": "'''Attenziò: staje cagnanno na verziona nun agghiurnata d' 'a paggena. Si 'a sarve accussì, tutte 'e cagnamiente fatte aropp'a sta verziona sarranno sperdute.'''",
+       "yourdiff": "Differenze",
+       "copyrightwarning": "Pe' piacere tiena a mmente ca tutte 'e contribbute a {{SITENAME}} songo cunziderate pubbrecate dint'e térmene d'uso d' 'a licienza $2 (vide $1 pe n'avé cchiù dettaglie).\nSi nun buò ca 'e testi tuoje fossero cagnate e distribuite 'a uno qualunque senza lémmeto, nun 'e mannà ccà.<br />\nMannanno stu testo dichiare pùre, sott'a responsabilità tua, ch'è stato scritto 'a te perzunalmente o pure ca è stato copiato 'a na fonte n pubblico dominio o similarmente libbera.\n'''Nun mannà materiale prutetto 'a copyright senz'avé autorizzaziona!'''",
+       "copyrightwarning2": "Pe' piacere tiena a mmente ca tutte 'e contribbute a {{SITENAME}} se ponno cagnà, alterà, o distribbuì pe l'ati cuntribbuttòre.\n\nSi nun buò ca 'e teste tuoje fossero cagnàte spenzieratamente, nun 'e mannà ccà.<br />\nMannanno stu testo dichiare pùre, sott'a responsabilità tua, ch'è stato scritto 'a te perzunalmente o pure ca è stato copiato 'a na fonte n pubblico dominio o similarmente libbera (vide $1 pe' n'avé dettaglie).\n'''Nun mannà materiale prutetto 'a copyright senz'avé autorizzaziona!'''",
+       "longpageerror": "'''Errore: 'o testo mannato è luongo {{PLURAL:$1|1|$1}} kilobyte, ch'è cchiù grosso d' 'a diminziona massima cunzentita ({{PLURAL:$2|1|$2}} kilobyte).'''\n'O testo nun se pò sarvà.",
+       "readonlywarning": "<strong>Attenziò</strong>: 'o database è bloccato pe se ffà 'a manutenzione. P' 'o mumento nun se ponno sarvà 'e cagnamiente fatte.\nPe' nun 'e sperdere, copia sti cuntenute dint'a nu file 'e testo e sarvatillo pe' tramente c'aspiette 'o sblocco d' 'o database.\n\nL'ammenistratore ca mpustaje 'o blocco ave scritto sta spiegazione: $1.",
+       "protectedpagewarning": "'''Attenziò: sta paggena è stata bloccata 'n modo tale ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà.'''\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe' n'avé riferimento:",
+       "semiprotectedpagewarning": "'''Nota:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente riggistrate 'a ponno cagnà.\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe n'avé nfurmazione:",
+       "cascadeprotectedwarning": "'''Attenziò:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà. Chesto succiere pecché 'a paggena è dint'a {{PLURAL:$1|la paggena innecata ccà abbascio, ch'è stata prutetta|'e paggene innecate ccà abbascio, che so' state prutette}} sciglienno 'a prutezione \"ricurziva\":",
+       "titleprotectedwarning": "'''Attenziò: sta paggena è stata bloccata 'n modo ca fossero necessarie [[Special:ListGroupRights|deritte specifici]] p' 'a crià.'''\nL'urdemo elemento d' 'o riggistro è riportato ccà abbascio pe nfurmazione:",
        "templatesused": "{{PLURAL:$1|Template|Templates}} ausate 'a chesta paggena:",
+       "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} ausate dint'a st'anteprimma:",
+       "templatesusedsection": "{{PLURAL:$1|Template|Templates}} ausate dint'a sta sezziona:",
        "template-protected": "(prutetto)",
        "template-semiprotected": "(semi-prutetto)",
+       "hiddencategories": "Sta paggena attócca a {{PLURAL:$1|na categurìa annascunnuta|$1 categurìe annascunnute}}:",
+       "nocreatetext": "{{SITENAME}} ha limitato 'a possibilità 'e crià paggene nnove. Può turnà e cagnà na paggena ch'esiste già, o pure [[Special:UserLogin|trasì o te riggistrà]].",
+       "nocreate-loggedin": "Nun t'è permesso 'e crià paggene nnove.",
+       "sectioneditnotsupported-title": "Cagnamiento 'e sezziune nun suppurtato",
+       "sectioneditnotsupported-text": "'O cagnamiento d' 'e sezziune nun è suppurtato dint'a sta paggena.",
+       "permissionserrors": "Nun haje 'e premmesse abbastante.",
+       "permissionserrorstext": "Nun haje premmesse pe lle ffà st'azziune, {{PLURAL:$1|'o mutivo è chesto|'e mutive so' chiste}}:",
+       "permissionserrorstext-withaction": "Nun haje premmesse abbastante pe' $2, {{PLURAL:$1|'o mutivo è chesto|'e mutive so' chiste}}:",
+       "recreate-moveddeleted-warn": "'''Attenziò: staje a crià na paggena scancellata già.'''\n\nVire si è bbuono 'e cuntinuà a cagnà sta paggena. L'alenco ch' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' ffà comodo:",
+       "moveddeleted-notice": "Sta paggena è stata scancellata.\nL'alenco d' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' n'avé nfurmazione.",
+       "log-fulllog": "Vide log sano",
+       "edit-hook-aborted": "'O cagnamiento è stato annullato 'a 'o «hook».\nNun dette spiegazione nisciuna.",
+       "edit-gone-missing": "Nun se può agghiurnà 'a paggena.\nPare ch' 'è stata scancellata.",
+       "edit-conflict": "Conflitto d'edizziona.",
+       "edit-no-change": "'O cagnamiento è stato ignorato pecché nun s'è cagnato niente dint' 'o testo.",
+       "postedit-confirmation-created": "'A paggena è stata criata.",
+       "postedit-confirmation-restored": "'A paggena è stata arripigliata.",
+       "postedit-confirmation-saved": "'O cagnamiento è stato sarvato.",
+       "edit-already-exists": "Nun se può crià na paggena nova.\nEsiste già.",
+       "defaultmessagetext": "Mmasciata 'e testo predefinita",
+       "content-failed-to-parse": "Nun se può analizzare $2 p' 'o mudello $1: $3",
+       "invalid-content-data": "Date cuntenute nun buone",
+       "content-not-allowed-here": "'O cuntenuto \"$1\" nun è permesso dint'a paggena [[$2]]",
+       "editwarning-warning": "Ascenno 'e sta paggena putisse ffà sperdere 'e cagnamiente fatte.\nSi sì trasuto, allora può stutà st'avviso dint'a sezziona \"{{int:prefs-editing}}\" d' 'e preferenze.",
+       "editpage-notsupportedcontentformat-title": "Furmatto d' 'o cuntenuto nun suppurtato",
+       "editpage-notsupportedcontentformat-text": "'O furmatto d' 'o cuntenuto $1 nun è suppurtato d' 'o mudello 'e cuntenuto $2.",
+       "content-model-wikitext": "wikitesto",
+       "content-model-text": "testo nurmale",
+       "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "expensive-parserfunction-warning": "'''Attenziò:''' Sta paggena cuntene troppe chiammate a 'e funzione parser.\n\nN'avesse 'a tené meno 'e $2, p' 'o mumento ce ne {{PLURAL:$1|stà $1|stanno $1}}.",
+       "expensive-parserfunction-category": "Paggene cu troppe chiammate a 'e funzione parser",
+       "post-expand-template-inclusion-warning": "'''Attenziò:''' 'a diminsiona d' 'e template ionte ccà è troppo grossa.\nCocche template se lassarrà fore.",
+       "post-expand-template-inclusion-category": "Paggene addò 'a diminsiona d' 'o template è fore 'o lémmeto",
+       "post-expand-template-argument-warning": "'''Attenziò:''' sta paggena cuntene uno o cchiù argumente 'e template troppo gruosse pe' 'a spannere. Sti argumente se lassarranno fore.",
+       "post-expand-template-argument-category": "Paggene ca cunteneno argumente nun cunziderate",
+       "parser-template-loop-warning": "È stato scummigliato n'aniello d' 'o template: [[$1]]",
+       "parser-template-recursion-depth-warning": "È arrivato 'o lemmeto 'e ricurzione d' 'o template ($1)",
        "undo-summary": "Canciella 'o cagnamiento $1 'e [[Special:Contributions/$2|$2]] ([[User talk:$2|Chiàcchiera]])",
        "currentrev": "Verzione 'e mmo",
        "currentrev-asof": "Vversione attuale dde $1",
        "recentchangeslinked-page": "Nomme dda paggena",
        "upload": "Careca file",
        "filedesc": "Énnece",
-       "uploadedimage": "ha carecato \"[[$1]]\"",
        "license": "Licenze:",
        "license-header": "Licenza",
        "licenses-edit": "Càgna opzziune 'e licenza",
index 2efb817..9085481 100644 (file)
        "invalidtitle-knownnamespace": "Ugyldig tittel med navnerommet «$2» og teksten «$3»",
        "invalidtitle-unknownnamespace": "Ugyldig tittel med ukjent navneromsnummer $1 og teksten «$2»",
        "exception-nologin": "Ikke innlogget",
-       "exception-nologin-text": "[[Special:Userlogin|Logg inn]] for å kunne se siden eller utføre denne handlingen.",
+       "exception-nologin-text": "Logg inn for å kunne se siden eller utføre denne handlingen.",
        "exception-nologin-text-manual": "Du må $1 for å få tilgang til denne siden eller handlingen.",
        "virus-badscanner": "Feilkonfigurasjon: Ukjent virusskanner: ''$1''",
        "virus-scanfailed": "skanning mislyktes (kode $1)",
        "parser-template-recursion-depth-warning": "Mal er brukt for mange ganger ($1)",
        "language-converter-depth-warning": "Dybdegrense for språkkonvertering overskredet ($1)",
        "node-count-exceeded-category": "Sider hvor antallet noder er overskredet",
-       "node-count-exceeded-category-desc": "En kategori for sider der antallet noder er overskredet.",
-       "node-count-exceeded-warning": "Siden har overskredet antallet noder",
+       "node-count-exceeded-category-desc": "Siden overskriver maksimalt nodeantall.",
+       "node-count-exceeded-warning": "Siden overskred nodeantallet",
        "expansion-depth-exceeded-category": "Sider hvor ekspansjonsdybden er overskredet",
-       "expansion-depth-exceeded-category-desc": "Dette er en kategori for sider hvor ekspansjonsdybden er overskredet.",
+       "expansion-depth-exceeded-category-desc": "Siden overskrider maksimal utvidingsdybde.",
        "expansion-depth-exceeded-warning": "Sida har overskredet ekspansjonsdybden",
        "parser-unstrip-loop-warning": "«Unstrip»-loop påvist",
        "parser-unstrip-recursion-limit": "Rekursjonsgrense for taggfjerning overskredet ($1)",
        "showhideselectedversions": "Vis/skjul valgte versjoner",
        "editundo": "fjern",
        "diff-empty": "(Ingen forskjell)",
-       "diff-multi-sameuser": "({{PLURAL:$1|En midlertidig revisjon|$1 midlertidige revisjoner}} av samme bruker vises ikke)",
-       "diff-multi-otherusers": "({{PLURAL:$1|En midlertidig revisjon|$1 midlertidige revisjoner}} av {{PLURAL:$2|en annen bruker|$2 brukere}} er ikke vist)",
+       "diff-multi-sameuser": "({{PLURAL:$1|En mellomliggende revisjon|$1 mellomliggende revisjoner}} av samme bruker vises ikke)",
+       "diff-multi-otherusers": "({{PLURAL:$1|En mellomliggende revisjon|$1 mellomliggende revisjoner}} av {{PLURAL:$2|en annen bruker|$2 brukere}} er ikke vist)",
        "diff-multi-manyusers": "({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av mer enn $2 {{PLURAL:$2|bruker|brukere}} vises ikke)",
        "difference-missing-revision": "{{PLURAL:$2|En revisjon|$2 revisjoner}} av denne forskjellen ($1) {{PLURAL:$2|ble|ble}} ikke funnet.\n\nDette skyldes som regel at en gammel forskjell-lenke er fulgt til en side som er slettet.\nDetaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
        "searchresults": "Søkeresultater",
        "preferences": "Innstillinger",
        "mypreferences": "Innstillinger",
        "prefs-edits": "Antall redigeringer:",
-       "prefsnologintext2": "Vennligst $1 å endre dine preferanser.",
+       "prefsnologintext2": "Logg inn for å endre innstillingene dine.",
        "prefs-skin": "Utseende",
        "skin-preview": "Forhåndsvisning",
        "datedefault": "Ingen foretrukket",
        "randomincategory": "Tilfeldig side innenfor kategorien",
        "randomincategory-invalidcategory": "«$1» er ikke et gyldig kategorinavn.",
        "randomincategory-nopages": "Det finnes ingen sider i [[:Category:$1|$1]]-kategorien.",
-       "randomincategory-selectcategory": "Hent en tilfeldig side fra kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Start",
+       "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Tilfeldig side i kategori",
        "randomredirect": "Tilfeldig omdirigering",
        "randomredirect-nopages": "Det er ingen omdirigeringer i navnerommet $1.",
        "statistics": "Statistikk",
        "trackingcategories-desc": "Kategori-inklusjonskriterium",
        "noindex-category-desc": "Denne siden indekseres ikke av roboter fordi den er merket med det magiske ordet <code><nowiki>__NOINDEX__</nowiki></code> og er i navnerom der dette flagget tillates.",
        "index-category-desc": "Denne siden er påført det magiske ordet <code><nowiki>__INDEX__</nowiki></code> (og er i et navnerom hvor flagget er tillatt), og vil derfor bli indeksert av roboter selv når det normalt ikke ville skjedd.",
-       "post-expand-template-inclusion-category-desc": "Etter ekspandering av alle malene ble siden større enn <code>$wgMaxArticleSize</code>, så noen maler kunne ikke ekspanderes.",
-       "post-expand-template-argument-category-desc": "Etter ekspandering av et malargument (noe i trippel krøllparentes, slik som <code>{{{Foo}}})</code>, så er siden større en <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "For mange kostbare parserfunksjoner (som <code>#ifexist</code>) er inkludert på en side. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Kategorien blir lagt til hvis siden inneholder en brutt fil-lenke (en lenke for å bygge inn en fil når filen selv ikke eksisterer).",
-       "hidden-category-category-desc": "Dette er en kategori merket med <code><nowiki>__HIDDENCAT__</nowiki></code>, som hindrer den fra å vises i siders kategorioversikt som standard.",
+       "post-expand-template-inclusion-category-desc": "Sidestørrelsen er større enn <code>$wgMaxArticleSize</code> etter at alle maler er utvidet, så noen maler ble ikke utvidet.",
+       "post-expand-template-argument-category-desc": "Siden er større enn <code>$wgMaxArticleSize</code> etter utvidelse av et malargument (noe i tre krøllparenteser, som <code>{{{foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "Siden bruker for mange dyre parserfunksjoner (som <code>#ifexist</code>). Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Siden inneholder en ødelagt lenkefil (en lenke for å bygge inn en fil når filen ikke eksisterer).",
+       "hidden-category-category-desc": "Kategorien inneholder <code><nowiki>__HIDDENCAT__</code></nowiki> i sideinnholdet, hvilket gjør at den som standard ikke vises i kategorilisten på sider.",
        "trackingcategories-nodesc": "Ingen beskrivelse er tilgjengelig",
        "trackingcategories-disabled": "Kategorien er deaktivert",
        "mailnologin": "Ingen avsenderadresse",
        "mywatchlist": "Overvåkningsliste",
        "watchlistfor2": "For $1 $2",
        "nowatchlist": "Du har ingenting i overvåkningslisten.",
-       "watchlistanontext": "Vennligst $1 for å vise eller redigere sider på overvåkningslisten din.",
+       "watchlistanontext": "Logg inn for å vise eller redigere elementer på overvåkningslisten din.",
        "watchnologin": "Ikke logget inn",
        "addwatch": "Legg til i overvåkningslisten",
        "addedwatchtext": "Siden «[[:$1]]» er lagt til [[Special:Watchlist|overvåkningslisten]] din.\nFremtidige endringer til denne siden og den tilhørende diskusjonssiden blir listet opp der.",
        "exbeforeblank": "innholdet før siden ble tømt var: «$1»",
        "delete-confirm": "Slett «$1»",
        "delete-legend": "Slett",
-       "historywarning": "Advarsel: Siden du er i ferd med å slette har en historikk med omtrent {{PLURAL:$1|én revisjon|$1 revisjoner}}:",
+       "historywarning": "<strong>Advarsel:</strong> Siden du er i ferd med å slete har en historikk med $1 {{PLURAL:$1|revisjon|revisjoner}}:",
        "confirmdeletetext": "Du holder på å slette en side sammen med historikken.\nBekreft at du virkelig vil slette denne siden, at du forstår konsekvensene og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].",
        "actioncomplete": "Gjennomført",
        "actionfailed": "Handling mislyktes",
        "delete-edit-reasonlist": "Rediger begrunnelser for sletting",
        "delete-toobig": "Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Muligheten til å slette slike sider er begrenset for å unngå utilsiktet forstyrring av {{SITENAME}}.",
        "delete-warning-toobig": "Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.",
+       "deleteprotected": "Du kan ikke slette denne siden fordi den er beskyttet.",
        "deleting-backlinks-warning": "'''Advarsel:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] lenker til eller inkluderer siden du er i ferd med å slette.",
        "rollback": "Fjern redigeringer",
        "rollback_short": "Tilbakestill",
        "autoblockid": "Autoblokker #$1",
        "block": "Blokker bruker",
        "unblock": "Fjern blokkering av bruker",
-       "blockip": "Blokker bruker",
+       "blockip": "Blokker {{GENDER:$1|bruker}}",
        "blockip-legend": "Blokker bruker",
        "blockiptext": "Bruk skjemaet under for å blokkere en IP-adresses tilgang til å redigere artikler. Dette må kun gjøres for å forhindre hærverk, og i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjene]]. Fyll ut en spesiell begrunnelse under.",
        "ipaddressorusername": "IP-adresse eller brukernavn",
        "ipb-unblock-addr": "Avblokker $1",
        "ipb-unblock": "Avblokker et brukernavn eller en IP-adresse",
        "ipb-blocklist": "Vis gjeldende blokkeringer",
-       "ipb-blocklist-contribs": "Bidrag fra $1",
+       "ipb-blocklist-contribs": "Bidrag fra {{GENDER:$1|$1}}",
        "unblockip": "Opphev blokkering",
        "unblockiptext": "Bruk skjemaet under for å gjenopprette skriveadgangen for en tidligere blokkert adresse eller bruker.",
        "ipusubmit": "Opphev blokkering",
        "import": "Importer sider",
        "importinterwiki": "Transwiki-importering",
        "import-interwiki-text": "Velg en wiki og en side å importere. Revisjonsdatoer og bidragsyteres navn blir bevart. Alle transwiki-importeringer listes i [[Special:Log/import|importloggen]].",
-       "import-interwiki-source": "Kildewiki/side:",
+       "import-interwiki-sourcewiki": "Kildewiki:",
+       "import-interwiki-sourcepage": "Kildeside:",
        "import-interwiki-history": "Kopier all historikk for denne siden",
        "import-interwiki-templates": "Inkluder alle maler",
        "import-interwiki-submit": "Importer",
        "log-name-pagelang": "Endre språklogg",
        "log-description-pagelang": "Dette er en logg som viser endringer i sidespråk",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|endret}} sidespråk for $3 fra $4 til $5.",
-       "default-skin-not-found": "Ops! Standarddrakten for wikien din (<code>$wgDefaultSkin</code>), <code>$1</code>, er ikke tilgjengelig.\n\nInstallasjonen din inkluderer følgende drakter. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for informasjon om hvordan du an slå det på og velge en standarddrakt.\n\n$2\n\n; Om du nettopp har installert MediaWiki:\n: Du har trolig installert fra git, eller direkte fra kildekoden med en annen metode. Dette er forventet.\n:* Prøv å installere flere drakter fra [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.orgs draktbase]\n:* Last ned [https://www.mediawiki.org/wiki/Download tarball-installereren], som kommer med flere drakter og utvidelser. Du kan kopiere og lime inn <code>skins/</code>-mappen fra denne.\n: Å gjøre dette skal ikke forstyrre git-mappen din om du er en MediaWiki-utvikler.\n\n; Om du nettopp har oppgradert MediaWiki:\n: MediaWiki 1.24 og nyere slår ikke lenger automatisk på installerte drakter (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). du kan lime inn følgende linjer i <code>LocalSettings.php</code> for å slå på alle installerte drakter:\n\n<pre>$3</pre>\n\n; Om du nettopp har endret <code>LocalSettings.php</code>:\n: Dobbeltsjekk draktnavnene for skrivefeil.",
+       "default-skin-not-found": "Ops! Standarddrakten for wikien din (<code>$wgDefaultSkin</code>), <code>$1</code>, er ikke tilgjengelig.\n\nInstallasjonen din ser ut til å inneholde følgende drakter. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for informasjon om hvordan du kan slå disse på eller heller velge en standarddrakt.\n\n$2\n\n; Om du nettopp har installert MediaWiki:\n: Du har trolig installert fra git, eller direkte fra kildekoden med en annen metode. Dette er forventet. Prøv å installere noen drakter fra [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org sin draktbase] ved å\n:* laste ned [https://www.mediawiki.org/wiki/Download tarball-installereren], som kommer med flere drakter og utvidelser. Du kan kopiere og lime inn <code>skins/</code>-mappen fra denne.\n:* klone en av <code>mediawiki/skins/*</code>-lagrene via git inn i <code>skins/</code> -mappen av din MediaWiki-installasjon.\n: Å gjøre dette skal ikke forstyrre git-mappen din om du er en MediaWiki-utvikler.\n\n; Om du nettopp har oppgradert MediaWiki:\n: MediaWiki 1.24 og nyere slår ikke lenger på automatisk installerte drakter (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Du kan lime inn følgende linjer i <code>LocalSettings.php</code> for å slå på alle installerte drakter:\n\n<pre>$3</pre>\n\n; Om du nettopp har endret <code>LocalSettings.php</code>:\n: Dobbelsjekk draktnavnene for skrivefeil.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (slått på)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''slått av''')"
 }
index 8811cd0..109f0ff 100644 (file)
        "talkpagelinktext": "Diskuschoon",
        "specialpage": "Spezialsiet",
        "personaltools": "Persönliche Warktüüch",
-       "postcomment": "Afsnidd tofögen",
        "articlepage": "Artikel",
        "talk": "Diskuschoon",
        "views": "Ansichten",
        "externaldberror": "Dat geev en Fehler bi de externe Authentifizerungsdatenbank oder du dröffst dien extern Brukerkonto nich ännern.",
        "login": "Anmellen",
        "nav-login-createaccount": "Nee Konto anleggen oder anmellen",
-       "loginprompt": "Dat du di bi {{SITENAME}} anmellen kannst, musst du Cookies anstellt hebben.",
        "userlogin": "Nee Konto anleggen oder anmellen",
        "userloginnocreate": "Anmellen",
        "logout": "Afmellen",
        "searchprofile-advanced-tooltip": "Söök in angevene Naamrüüm",
        "search-result-size": "$1 ({{PLURAL:$2|een Woort|$2 Wöör}})",
        "search-result-category-size": "{{PLURAL:$1|1 Sied|$1 Sieden}} ({{PLURAL:$2|1 Ünnerkategorie|$2 Ünnerkategorien}}, {{PLURAL:$3|1 Datei|$3 Datein}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Redirect $1)",
        "search-section": "(Afsnitt $1)",
        "search-suggest": "Hest du „$1“ meent?",
        "file-deleted-duplicate": "Jüst disse Datei ([[:$1]]) is al mal löscht worrn. Kiek man eerst, wat in dat Löschlogbook steiht, ehrdat du ehr noch wedder hoochlaadst.",
        "uploadwarning": "Wohrschau",
        "savefile": "Datei spiekern",
-       "uploadedimage": "„$1“ hoochladen",
-       "overwroteimage": "Ne’e Version vun „[[$1]]“ hoochlaadt",
        "uploaddisabled": "Dat Hoochladen is deaktiveert.",
        "uploaddisabledtext": "Dat Hoochladen vun Datein is utschalt.",
        "php-uploaddisabledtext": "Dat Hoochladen vun Datein is in PHP utstellt. Kiek de file_uploads-Instellungen na.",
        "watchlist-details": "{{PLURAL:$1|Ene Siet is|$1 Sieden sünd}} op dien Oppasslist (ahn Diskuschoonssieden).",
        "wlheader-enotif": "Benarichtigen per E-Mail is anstellt.",
        "wlheader-showupdated": "Sieden, de siet dien letzten Besöök ännert worrn sünd, warrt '''fett''' wiest.",
+       "wlnote": "Ünnen {{PLURAL:$1|steiht de letzte Ännern|staht de letzten $1 Ännern}} vun de {{PLURAL:$2|letzte Stünn|letzten '''$2''' Stünnen}}.",
        "wlshowlast": "Wies de letzten $1 Stünnen $2 Daag $3",
        "watchlist-options": "Optionen för de Oppasslist",
        "watching": "warrt op de Oppasslist ropsett...",
index c36559c..b2a960c 100644 (file)
        "randomincategory": "Willekeurige pagina in de categorie",
        "randomincategory-invalidcategory": "\"$1\" is geen geldige categorienaam.",
        "randomincategory-nopages": "Er zijn geen pagina's in de categorie [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Geef een willekeurige pagina uit de categorie $1 weer. $2",
-       "randomincategory-selectcategory-submit": "OK",
+       "randomincategory-category": "Categorie:",
+       "randomincategory-legend": "Willekeurige pagina in een categorie",
        "randomredirect": "Willekeurige doorverwijzing",
        "randomredirect-nopages": "Er zijn geen doorverwijzingen in de naamruimte \"$1\".",
        "statistics": "Statistieken",
        "wantedpages-badtitle": "Ongeldige paginanaam in resultaat: $1",
        "wantedfiles": "Niet-bestaande bestanden met koppelingen",
        "wantedfiletext-cat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>. Pagina's die niet-bestaande bestanden insluiten staan op de pagina [[:$1]].",
+       "wantedfiletext-cat-noforeign": "De volgende bestanden zijn in gebruik maar bestaan niet. Daarnaast staan pagina's met niet-bestaande bestanden op [[:$1]].",
        "wantedfiletext-nocat": "De volgende bestanden worden gebruikt maar bestaan niet. Bestanden van externe repositories kunnen zijn opgenomen in de lijst, ondanks dat ze bestaan. Dergelijke vals positieven worden <del>doorgehaald weergegeven</del>.",
        "wantedfiletext-nocat-noforeign": "De volgende bestanden zijn in gebruik maar bestaan niet.",
        "wantedtemplates": "Niet-bestaande sjablonen met koppelingen",
        "linksearch-pat": "Zoekpatroon:",
        "linksearch-ns": "Naamruimte:",
        "linksearch-ok": "Zoeken",
-       "linksearch-text": "Wildcards zoals \"*.wikipedia.org\" of \"*.org\" zijn toegestaan.\nHeeft tenminste een topleveldomein nodig, zoals bijvoorbeeld \"*.org\".<br />\n{{PLURAL:$2|Ondersteund protocol|Ondersteunde protocollen}}: <code>$1</code> (wordt \"http://\"als er geen protocol wordt opgegeven).",
+       "linksearch-text": "Wildcards zoals \"*.wikipedia.org\" of \"*.org\" zijn toegestaan.\nHeeft tenminste een topleveldomein nodig, zoals bijvoorbeeld \"*.org\".<br />\n{{PLURAL:$2|Ondersteund protocol|Ondersteunde protocollen}}: <code>$1</code> (wordt \"http://\" als er geen protocol wordt opgegeven).",
        "linksearch-line": "$1 heeft een koppeling in $2",
        "linksearch-error": "Wildcards zijn alleen toegestaan aan het begin van een hostnaam.",
        "listusersfrom": "Gebruikers bekijken vanaf:",
        "exbeforeblank": "De inhoud was: \"$1\"",
        "delete-confirm": "\"$1\" verwijderen",
        "delete-legend": "Verwijderen",
-       "historywarning": "'''Waarschuwing:''' de pagina die u wilt verwijderen heeft ongeveer $1 {{PLURAL:$1|versie|versies}}:",
+       "historywarning": "<strong>Waarschuwing:</strong> de pagina die u wilt verwijderen heeft ongeveer $1 {{PLURAL:$1|versie|versies}}:",
        "confirmdeletetext": "U staat op het punt een pagina te verwijderen, inclusief de geschiedenis.\nBevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt en dat de verwijdering overeenstemt met het [[{{MediaWiki:Policy-url}}|beleid]].",
        "actioncomplete": "Handeling voltooid",
        "actionfailed": "De handeling is mislukt.",
        "delete-edit-reasonlist": "Redenen voor verwijderen bewerken",
        "delete-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van dit soort pagina's is met rechten beperkt om het per ongeluk verstoren van de werking van {{SITENAME}} te voorkomen.",
        "delete-warning-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.\nWees voorzichtig.",
+       "deleteprotected": "U kunt deze pagina niet verwijderen omdat hij is beveiligd.",
        "deleting-backlinks-warning": "'''Waarschuwing:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
        "rollback": "Wijzigingen ongedaan maken",
        "rollback_short": "Terugdraaien",
        "import": "Pagina's importeren",
        "importinterwiki": "Transwiki-import",
        "import-interwiki-text": "Selecteer een wiki en paginanaam om te importeren.\nVersie- en auteursgegevens blijven hierbij bewaard.\nAlle transwiki-importhandelingen worden opgeslagen in het [[Special:Log/import|importlogboek]].",
-       "import-interwiki-source": "Bronwiki/pagina:",
+       "import-interwiki-sourcewiki": "Bronwiki:",
+       "import-interwiki-sourcepage": "Bronpagina:",
        "import-interwiki-history": "Volledige geschiedenis van deze pagina ook kopiëren",
        "import-interwiki-templates": "Alle sjablonen opnemen",
        "import-interwiki-submit": "Importeren",
index 8e77368..fa563b2 100644 (file)
        "talkpagelinktext": "Bolela",
        "specialpage": "Matlaka a itšeng",
        "personaltools": "Dithulusu tša gago (''personal'')",
-       "postcomment": "Sekgao se sempsha",
        "articlepage": "Nyakoretša letlakala la mateng",
        "talk": "Poledišano",
        "views": "Dinyakorêtšo",
        "remembermypassword": "Gopola sedi yaka ya go tsena khomphutha ye (bogolo bja  $1 ya {{PLURAL:$1| letšatši le|matšatši a}})",
        "login": "Tsena",
        "nav-login-createaccount": "Tsena / Tlhola tšhupaleloko (''account'')",
-       "loginprompt": "O swanela ke go dumella ''cookies'' go ''browser'' go tsena go {{SITENAME}}.",
        "userlogin": "Tsena / tlhola tšhupaleloko (''account'')",
        "logout": "Etšwa/Tswalela",
        "userlogout": "Etšwa/Tswalela",
        "fileuploadsummary": "Kakaretšo:",
        "filesource": "Mothopo:",
        "savefile": "Boloka faele",
-       "uploadedimage": "\"[[$1]]\" e loketšwe",
        "watchthisupload": "Tlhapetša ''faele'' ye",
        "license": "Laesense/Tumello:",
        "license-header": "Laesense",
index 800f321..0f26891 100644 (file)
@@ -94,7 +94,7 @@
        "may-gen": "Mai",
        "june-gen": "Junh",
        "july-gen": "Julhet",
-       "august-gen": "Agost",
+       "august-gen": "d'agost",
        "september-gen": "Setembre",
        "october-gen": "Octobre",
        "november-gen": "Novembre",
        "hidetoc": "amagar",
        "collapsible-collapse": "Rebatre",
        "collapsible-expand": "Desplegar",
+       "confirmable-yes": "Òc",
+       "confirmable-no": "Non",
        "thisisdeleted": "Desiratz afichar o restablir $1?",
        "viewdeleted": "Veire $1?",
        "restorelink": "{{PLURAL:$1|una edicion escafada|$1 edicions escafadas}}",
        "searchprofile-advanced-tooltip": "Recercar dins d'espacis de noms personalizats",
        "search-result-size": "$1 ({{PLURAL:$2|1 mot|$2 mots}})",
        "search-result-category-size": "$1 membre{{PLURAL:$1||s}} ($2 soscategoria{{PLURAL:$2||s}}, $3 fichièr{{PLURAL:$3||s}})",
-       "search-result-score": "Pertinéncia : $1%",
        "search-redirect": "(redireccion cap a $1)",
        "search-section": "(seccion $1)",
        "search-file-match": "(correspond al contengut del fichièr)",
        "uploadwarning": "Atencion !",
        "uploadwarning-text": "Modificatz la descripcion del fichièr e ensajatz tornarmai.",
        "savefile": "Salvar lo fichièr",
-       "uploadedimage": "«[[$1]]» copiat sul servidor",
-       "overwroteimage": "a importat una version novèla de « [[$1]] »",
        "uploaddisabled": "O planhèm, lo mandadís de fichièr es desactivat.",
        "copyuploaddisabled": "Mandadís de fichièr per URL desactivat.",
        "uploaddisabledtext": "L'impòrt de fichièrs cap al servidor es desactivat.",
        "randomincategory": "Pagina a l'azard dins la categoria",
        "randomincategory-invalidcategory": "« $1 » es pas un nom de categoria valid.",
        "randomincategory-nopages": "I a pas cap de pagina dins [[:Category:$1]].",
-       "randomincategory-selectcategory": "Prene una pagina a l'azard dins la categoria : $1 $2.",
-       "randomincategory-selectcategory-submit": "Anar",
        "randomredirect": "Una pagina de redireccion a l'azard",
        "randomredirect-nopages": "I a pas cap de redireccion dins l'espaci de nom « $1 ».",
        "statistics": "Estatisticas",
        "watchlist-details": "I a {{PLURAL:$1|$1 pagina|$1 paginas}} dins vòstra lista de seguiment, sens comptar las paginas de discussion.",
        "wlheader-enotif": "La notificacion per corrièr electronic es activada.",
        "wlheader-showupdated": "Las paginas que son estadas modificadas dempuèi vòstra darrièra visita son afichadas en '''gras'''.",
+       "wlnote": "Çaijós {{PLURAL:$1|se tròba la darrièra modificacion efectuada|se tròban las $1 darrièras modificacions efectuadas}} pendent {{PLURAL:$2|la darrièra ora|las '''$2''' darrièras oras}} dempuèi $3, $4.",
        "wlshowlast": "Far veire las darrièras $1 oras, los darrièrs $2 jorns, o $3.",
        "watchlist-options": "Opcions de la lista de seguiment",
        "watching": "Seguit...",
        "import": "Importar de paginas",
        "importinterwiki": "Impòrt interwiki",
        "import-interwiki-text": "Seleccionatz un wiki e un títol de pagina d'importar.\nLas datas de las versions e los noms dels editors seràn preservats.\nTotas las accions d’importacion interwiki son conservadas dins lo [[Special:Log/import|jornal d’impòrt]].",
-       "import-interwiki-source": "Wiki e pagina font :",
        "import-interwiki-history": "Copiar totas las versions de l'istoric d'aquesta pagina",
        "import-interwiki-templates": "Enclure totes los modèls",
        "import-interwiki-submit": "Importar",
index b64b5e6..074b9c7 100644 (file)
        "talkpagelinktext": "କଥାଭାଷା",
        "specialpage": "ବିଶେଷ ପୃଷ୍ଠା",
        "personaltools": "ନିଜର ଟୁଲ",
-       "postcomment": "ନୂଆ ଭାଗ",
        "articlepage": "ସୂଚୀ ପୃଷ୍ଠାଟି ଦେଖାଇବେ",
        "talk": "ଆଲୋଚନା",
        "views": "ଦେଖା",
        "externaldberror": "ବୋଧ ହୁଏ ଚିହ୍ନଟ ଡାଟାବେସ ଭୁଲଟିଏ ହୋଇଥିଲା ବା ଆପଣଙ୍କୁ ନିଜର ବାହାର ଖାତା ଅପଡେଟ କରିବା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ ।",
        "login": "ଲଗ-ଇନ (Log in)",
        "nav-login-createaccount": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
-       "loginprompt": "{{SITENAME}}ରେ ଲଗ ଇନ କରିବାପାଇଁ ଆପଣଙ୍କୁ '''କୁକି''' ସଚଳ କରିବାକୁ ପଡ଼ିବ ।",
        "userlogin": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
        "userloginnocreate": "ଲଗ-ଇନ (Log in)",
        "logout": "ଲଗଆଉଟ",
        "searchprofile-advanced-tooltip": "ନିଜେ ତିଆରିକରିହେବା ଭଳି ନେମସ୍ପେସରେ ଖୋଜିବେ",
        "search-result-size": "$1 ({{PLURAL:$2|1 ଶବ୍ଦ|$2 ଶବ୍ଦ}})",
        "search-result-category-size": "{{PLURAL:$1|ଜଣେ ସଭ୍ୟ|$1 ଜଣ ସଭ୍ୟ}} ({{PLURAL:$2|ଗୋଟିଏ ଶ୍ରେଣୀy|$2ଟି ଶ୍ରେଣୀ ସମୂହ}}, {{PLURAL:$3|ଗୋଟିଏ ଫାଇଲ|$3ଟି ଫାଇଲ}})",
-       "search-result-score": "ପ୍ରାସଙ୍ଗିକତା: $1%",
        "search-redirect": "($1 କୁ ଆଗକୁ ବଢେଇନିଅ )",
        "search-section": "(ଭାଗ $1)",
        "search-suggest": "ଆପଣ $1 ଭାବି ଖୋଜିଥିଲେ କି?",
        "rcshowhideminor": "ଛୋଟମୋଟ ବଦଳ $1",
        "rcshowhideminor-show": "ଦେଖାଇବେ",
        "rcshowhideminor-hide": "ଲୁଚାଇବେ",
-       "rcshowhidebots": "ସà­\8dà­±à­\9fà¬\82à¬\9aାଳà¬\95&nbsp;(Bot)&nbsp;ଦà­\8dୱାରା&nbsp;ସମ୍ପାଦନା $1",
+       "rcshowhidebots": "ସà­\8dà­±à­\9fà¬\82à¬\9aାଳà¬\95&nbsp;(Bot)&nbsp;ର&nbsp;ସମ୍ପାଦନା $1",
        "rcshowhidebots-show": "ଦେଖାଇବେ",
        "rcshowhidebots-hide": "ଲୁଚାଇବେ",
        "rcshowhideliu": "ପଞ୍ଜୀକୃତ ସଭ୍ୟ $1",
        "uploadwarning": "ଅପଲୋଡ଼ ଚେତାବନୀ",
        "uploadwarning-text": "ତଳେ ଥିବା ଫାଇଲର ବିବରଣୀ ବଦଳାଇ ଆଉ ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
        "savefile": "ଫାଇଲ ସାଇତିବା",
-       "uploadedimage": "\"[[$1]]\" ଅପଲୋଡ କରାଗଲା",
-       "overwroteimage": "\"[[$1]]\"ର ନୂଆ ସଙ୍କଳନଟିଏ ଅପଲୋଡ଼ କରାଗଲା",
        "uploaddisabled": "ଅପଲୋଡ଼ କରିବା ଅଚଳ କରାଯାଇଅଛି ।",
        "copyuploaddisabled": "URL ଦେଇ ଅପଲୋଡ଼ କରିବାକୁ ଅଚଳ କରାଯାଇଅଛି ।",
        "uploaddisabledtext": "ଫାଇଲ ଅପଲୋଡ଼  ଅଚଳ କରାଯାଇଅଛି ।",
        "unusedtemplateswlh": "ଅନ୍ୟ ସଂଯୋଗ",
        "randompage": "ଯାହିତାହି ପୃଷ୍ଠା",
        "randompage-nopages": "ତଳେ ଥିବା {{PLURAL:$2|ନେମସ୍ପେସ|ନେମସ୍ପେସ}}: $1ରେ ଗୋଟିଏ ବି ପୃଷ୍ଠା ନାହିଁ ।",
-       "randomincategory-selectcategory-submit": "ଯାଆନ୍ତୁ",
        "randomredirect": "ଯାହିତାହି ପୁନପ୍ରେରଣ",
        "randomredirect-nopages": "\"$1\" ନାମରେ ଗୋଟିଏ ବି ପୁନପ୍ରେରଣ ନାହିଁ ।",
        "statistics": "ହିସାବ",
        "watchlist-details": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ {{PLURAL:$1|$1 ଟି ପୃଷ୍ଠା|$1 ଟି ପୃଷ୍ଠା}} ଅଛି, ଆଲୋଚନା ପୃଷ୍ଠାମାନଙ୍କୁ ଅଲଗା ଗଣାଯାଇନାହିଁ ।",
        "wlheader-enotif": "ଇମେଲ ସୂଚନା ସଚଳ କରାଗଲା ।",
        "wlheader-showupdated": "ଆପଣ ଶେଷଥର ଦେଖିଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ '''ମୋଟା ଅକ୍ଷର'''ରେ ଦେଖାଯାଉଅଛି ।",
+       "wlnote": "$3, $4 ସୁଦ୍ଧା ବିଗତ {{PLURAL:$2|ଘଣ୍ଟେ ଭିତରେ|'''$2''' ଘଣ୍ଟା ଭିତରେ}} ଘଟିଥିବା {{PLURAL:$1|ଶେଷ ବଦଳଟି ଅଛି|ଶେଷ '''$1''' ଟି ବଦଳ}} ତଳେ ଦିଆଯାଇଛି ।",
        "wlshowlast": "ଶେଷ $1 ଘଣ୍ଟା $2 ଦିନ $3 ଦେଖାଇବେ",
        "watchlist-options": "ଦେଖଣା ବିକଳ୍ପସବୁ",
        "watching": "ଦେଖୁଛି...",
        "import": "ପୃଷ୍ଠା ଆମଦାନି କରିବେ",
        "importinterwiki": "ଟ୍ରାନ୍ସଉଇକି ଈମ୍ପୋର୍ଟ",
        "import-interwiki-text": "ଏକ ଉଇକି ଓ ପୃଷ୍ଠା ନାମ ଆମଦାନି କରିବା ନିମନ୍ତେ ଦିଅନ୍ତୁ ।\nସଂସ୍କରଣ ତାରିଖ ଓ ସମ୍ପାଦକଙ୍କ ନାମ ସାଇତା ହୋଇ ରହିବ ।\nଅନ୍ତଉଇକି ଆମଦାନି କାମସବୁ [[Special:Log/import|ଆମଦାନି ଇତିହାସ]]ରେ ସାଇଟ ହୋଇ ରହିଛି ।",
-       "import-interwiki-source": "ମୂଳ ଉଇକି/ପୃଷ୍ଠା",
        "import-interwiki-history": "ଏହି ପୃଷ୍ଠା ନିମନ୍ତେ ସବୁଯାକ ସଂସ୍କରଣ ଇତିହାସ ନକଲ କରିନିଅନ୍ତୁ",
        "import-interwiki-templates": "ସବୁଯାକ ଛାଞ୍ଚ ଏହା ଭିତରେ ରଖିବେ",
        "import-interwiki-submit": "ଆମଦାନୀ",
        "pageinfo-length": "ପୃଷ୍ଠା ଲମ୍ବ(ବାଇଟରେ)",
        "pageinfo-article-id": "ପୃଷ୍ଠା ଆଇଡ଼ି",
        "pageinfo-language": "ପୃଷ୍ଠା ବିଷୟବସ୍ତୁର ଭାଷା",
-       "pageinfo-robot-policy": "ସ୍ୱୟଂଚାଳକ (bot) ଦ୍ୱାରା ସୂଚୀ ନିର୍ମିତ",
+       "pageinfo-robot-policy": "ସ୍ୱୟଂଚାଳକ&nbsp;(Bot) ଦ୍ୱାରା ସୂଚୀ ନିର୍ମାଣ",
        "pageinfo-robot-index": "ଅନୁମୋଦିତ",
        "pageinfo-robot-noindex": "ଅନୁନମୋଦିତ",
        "pageinfo-views": "ଦେଖଣା ସଂଖ୍ୟା",
        "duplicate-defaultsort": "'''ସୂଚନା:''' ଆପେଆପେ କାମକରୁଥିବା \"$2\" ଆଗରୁ ଆପେ ଆପେ ସଜାଡୁଥିବା \"$1\"କୁ ବନ୍ଦ କରିଦେଇଛି ।",
        "version": "ସଂସ୍କରଣ",
        "version-extensions": "ଇନଷ୍ଟଲ କରାହୋଇଥିବା ଏକ୍ସଟେନସନସବୁ",
+       "version-skins": "ବହିରାବରଣ",
        "version-specialpages": "ବିଶେଷ ପୃଷ୍ଠା",
        "version-parserhooks": "ପାର୍ସର ହୁକ",
        "version-variables": "ଚଳ",
        "version-antispam": "ଅଦରକାରୀ ମେଲ ଅଟକ",
-       "version-skins": "ବହିରାବରଣ",
        "version-other": "ବାକି",
        "version-mediahandlers": "ମିଡ଼ିଆ ହ୍ୟାଣ୍ଡଲର",
        "version-hooks": "ହୁକ",
index 492a1f4..9ff15c2 100644 (file)
        "talkpagelinktext": "Ныхас",
        "specialpage": "Сæрмагонд фарс",
        "personaltools": "Хион фæрæзтæ",
-       "postcomment": "Ног хай",
        "articlepage": "Фенын уац",
        "talk": "Тæрхон",
        "views": "Æркæстытæ",
        "externaldberror": "Кæнæ аутентификацийы рарддоны рæдыд æрцыдис, кæнæ та дæуæн нæй бар снæуæг кæнын дæ æддаг аккаунт.",
        "login": "Бахизын",
        "nav-login-createaccount": "Бахизын / срегистраци кæнын",
-       "loginprompt": "Дæ cookies хъуамæ иу уой цæмæй дæ бон уа бахизын {{grammar:allative|{{SITENAME}}}}.",
        "userlogin": "Бахизын / регистраци кæнын",
        "userloginnocreate": "Бахизын",
        "logout": "Рахизын",
        "minlength1": "Файлы номы хъуамæ æппынкъаддæр иу дамгъæ уа.",
        "badfilename": "Файлы ном ивд æрцыд {{grammar:allative|«$1»}}.",
        "savefile": "Файл бавæрын",
-       "uploadedimage": "бавгæдта \"[[$1]]\"",
        "uploadvirus": "Файлы ис вирус! \nЛæмбынæг: $1",
        "watchthisupload": "Ацы файлмæ цæст æрдарын",
        "upload-success-subj": "Æвгæд æрцыд",
        "watchthispage": "Цæст дарын ацы фарсмæ",
        "unwatch": "Нал дарын цæст",
        "watchlist-details": "{{PLURAL:$1|$1 фарсмæ|$1 фарсмæ}} дæ цæст дарыс, тæрхоны фæрстæ нæ нымайгæйæ.",
+       "wlnote": "Дæлæ афæстаг '''$2 сахаты дæргъы''' цы $1 {{PLURAL:$1|ивддзинад|ивддзинады}} æрцыди.",
        "wlshowlast": "Фæстæг $1 сахаты, $2 боны дæргъы; $3.",
        "watchlist-options": "Цæстдард рæгъы фадæттæ",
        "watching": "Цæстдард фæрсты номхыгъдмæ афтауын...",
index ec41ac6..868b4e2 100644 (file)
        "permalink": "ਪੱਕੀ ਲਿੰਕ",
        "print": "ਛਾਪੋ",
        "view": "ਵੇਖੋ",
+       "view-foreign": "$1 ਉੱਤੇ ਵੇਖੋ",
        "edit": "ਸੋਧੋ",
+       "edit-local": "ਲੋਕਲ ਵੇਰਵਾ ਸੋਧੋ",
        "create": "ਬਣਾਓ",
        "editthispage": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
        "create-this-page": "ਇਹ ਸਫ਼ਾ ਬਣਾਓ",
        "hidetoc": "ਓਹਲੇ",
        "collapsible-collapse": "ਸਮੇਟੋ",
        "collapsible-expand": "ਫੈਲਾਓ",
+       "confirmable-yes": "ਹਾਂ",
+       "confirmable-no": "ਨਹੀਂ",
        "thisisdeleted": "$1 ਵੇਖੋ ਜਾਂ ਮੁੜ ਸਟੋਰ ਕਰੋ",
        "viewdeleted": "$1 ਵੇਖਣੀਆਂ ਹਨ?",
        "restorelink": "{{PLURAL:$1|ਇਕ ਮਿਟਾਈ ਹੋਈ ਸੋਧ|$1 ਮਿਟਾਈਆਂ ਹੋਈਆਂ ਸੋਧਾਂ}}",
        "edit-gone-missing": "ਇਹ ਸਫ਼ਾ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਸਕਿਆ।\nਜਾਪਦਾ ਹੈ ਕਿ ਇਹ ਹਟਾਇਆ ਜਾ ਚੁੱਕਾ ਹੈ।",
        "edit-conflict": "ਸੋਧ ਤਕਰਾਰ",
        "edit-no-change": "ਤੁਹਾਡੀ ਸੋਧ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਲਿਖਤ ਵਿਚ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਕੀਤੀ ਗਈ।",
+       "postedit-confirmation-created": "ਸਫ਼ਾ ਬਣਾਇਆ ਗਿਆ।",
+       "postedit-confirmation-restored": "ਸਫ਼ੇ ਨੂੰ ਮੁੜ-ਸਟੋਰ ਕੀਤਾ ਗਿਆ।",
        "postedit-confirmation-saved": "ਤੁਹਾਡੀ ਸੋਧ ਸਾਂਭੀ ਗਈ ਹੈ।",
        "edit-already-exists": "ਨਵਾਂ ਸਫ਼ਾ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਿਆ।\nਇਹ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।",
        "defaultmessagetext": "ਮੂਲ ਸੰਦੇਸ਼ ਲਿਖਤ",
        "searchprofile-advanced-tooltip": "ਆਪਣੀਆਂ ਬਣਾਈਆਂ ਨਾਂ-ਥਾਂਵਾਂ ਵਿੱਚ ਖੋਜੋ",
        "search-result-size": "$1 ({{PLURAL:$2|1 ਸ਼ਬਦ|$2 ਸ਼ਬਦ}})",
        "search-result-category-size": "{{PLURAL:$1|1 ਮੈਂਬਰ|$1 ਮੈਂਬਰ}} ({{PLURAL:$2|1 ਉਪਸ਼੍ਰੇਣੀ|$2 ਉਪਸ਼੍ਰੇਣੀਆਂ}}, {{PLURAL:$3|1 ਫ਼ਾਈਲ|$3 ਫ਼ਾਈਲਾਂ}})",
-       "search-result-score": "ਸਹੀ: $1%",
        "search-redirect": "($1 ਰੀਡਿਰੈਕਟ)",
        "search-section": "(ਹਿੱਸਾ $1)",
        "search-suggest": "ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ: $1",
        "rcnotefrom": "'''$2''' ਤੱਕ ('''$1''' ਤੱਕ ਦਿੱਸਦੇ) ਬਦਲਾਵ ਹੇਠ ਦਿੱਤੀਆਂ ਹਨ।",
        "rclistfrom": "$3 $2 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ",
        "rcshowhideminor": "ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ $1",
+       "rcshowhideminor-show": "ਵੇਖੋ",
+       "rcshowhideminor-hide": "ਓਹਲੇ",
        "rcshowhidebots": "$1 ਬੌਟ",
+       "rcshowhidebots-show": "ਵੇਖੋ",
+       "rcshowhidebots-hide": "ਓਹਲੇ",
        "rcshowhideliu": "$1 ਦਾਖ਼ਲ ਹੋਏ ਵਰਤੋਂਕਾਰ",
+       "rcshowhideliu-show": "ਵੇਖੋ",
+       "rcshowhideliu-hide": "ਓਹਲੇ",
        "rcshowhideanons": "$1 ਗੁਮਨਾਮ ਵਰਤੋਂਕਾਰ",
+       "rcshowhideanons-show": "ਵੇਖੋ",
+       "rcshowhideanons-hide": "ਓਹਲੇ",
        "rcshowhidepatr": "ਜਾਂਚੀਆਂ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ $1",
+       "rcshowhidepatr-show": "ਵੇਖੋ",
+       "rcshowhidepatr-hide": "ਓਹਲੇ",
        "rcshowhidemine": "ਮੇਰੀਆਂ ਤਬਦੀਲੀਆਂ  $1",
+       "rcshowhidemine-show": "ਵੇਖੋ",
+       "rcshowhidemine-hide": "ਓਹਲੇ",
        "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਖਾਓ<br /> $3",
        "diff": "ਫ਼ਰਕ",
        "hist": "ਅਤੀਤ",
        "uploadwarning": "ਅੱਪਲੋਡ ਚਿਤਾਵਨੀ",
        "uploadwarning-text": "ਕਿਰਪਾ ਕਰਕੇ ਹੇਠ ਦਿੱਤਾ ਫ਼ਾਈਲ ਵੇਰਵਾ ਬਦਲੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
        "savefile": "ਫ਼ਾਈਲ ਸਾਂਭੋ",
-       "uploadedimage": "\"[[$1]]\" ਅੱਪਲੋਡ ਕੀਤੀ",
-       "overwroteimage": "\"[[$1]]\" ਦਾ ਨਵਾਂ ਰੂਪ ਅੱਪਲੋਡ ਕਰੋ",
        "uploaddisabled": "ਅੱਪਲੋਡ ਆਯੋਗ ਹੈ",
        "copyuploaddisabled": "URL ਰਾਹੀਂ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।",
        "uploaddisabledtext": "ਫ਼ਾਈਲਾਂ ਦੇ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।",
        "nolicense": "ਕੁਝ ਵੀ ਚੁਣਿਆ",
        "license-nopreview": "(ਝਲਕ ਉਪਲੱਬਧ ਨਹੀਂ)",
        "upload_source_file": " (ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਇੱਕ ਫਾਇਲ)",
+       "listfiles-delete": "ਹਟਾਓ",
        "listfiles_search_for": "ਇਸ ਮੀਡੀਆ ਨਾਂ ਨੂੰ ਖੋਜੋ:",
        "imgfile": "ਫ਼ਾਈਲ",
        "listfiles": "ਫ਼ਾਈਲਾਂ ਦੀ ਸੂਚੀ",
        "listfiles_size": "ਆਕਾਰ",
        "listfiles_description": "ਵੇਰਵਾ",
        "listfiles_count": "ਵਰਜਨ",
+       "listfiles-latestversion": "ਮੌਜੂਦਾ ਵਰਜਨ",
        "listfiles-latestversion-yes": "ਹਾਂ",
        "listfiles-latestversion-no": "ਨਹੀਂ",
        "file-anchor-link": "ਫ਼ਾਈਲ",
        "randomincategory": "ਸ਼੍ਰੇਣੀ ਵਿਚਲਾ ਰਲ਼ਵਾਂ ਸਫ਼ਾ",
        "randomincategory-invalidcategory": "\"$1\" ਕੋਈ ਸਹੀ ਸ਼੍ਰੇਣੀ ਦਾ ਨਾਂ ਨਹੀਂ ਹੈ।",
        "randomincategory-nopages": "[[:Category:$1|$1]] ਸ਼੍ਰੇਣੀ ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ।",
-       "randomincategory-selectcategory-submit": "ਜਾਓ",
        "randomredirect": "ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ",
        "statistics": "ਅੰਕੜੇ",
        "statistics-header-pages": "ਸਫ਼ਾ ਅੰਕੜੇ",
        "shortpages": "ਛੋਟੇ ਸਫ਼ੇ",
        "longpages": "ਲੰਮੇ ਸਫ਼ੇ",
        "protectedpages": "ਸੁਰੱਖਿਅਤ ਸਫ਼ੇ",
+       "protectedpages-page": "ਸਫ਼ਾ",
+       "protectedpages-expiry": "ਮਿਆਦ",
+       "protectedpages-reason": "ਕਾਰਨ",
+       "protectedpages-unknown-timestamp": "ਅਣਜਾਣ",
+       "protectedpages-unknown-performer": "ਅਣਜਾਣ ਯੂਜ਼ਰ",
        "protectedtitles": "ਸੁਰੱਖਿਅਤ ਸਿਰਲੇਖ",
        "listusers": "ਯੂਜ਼ਰ ਲਿਸਟ",
        "listusers-editsonly": "ਸਿਰਫ਼ ਸੋਧਾਂ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵਿਖਾਓ",
        "listgrouprights-removegroup-all": "ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
        "listgrouprights-addgroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਵਿਚ ਸਾਰੇ ਸਮੂਹ ਜੋੜੋ",
        "listgrouprights-removegroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਤੋਂ ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
+       "trackingcategories-nodesc": "ਕੋਈ  ਵੇਰਵਾ ਉਪਲੱਬਧ ਨਹੀਂ।",
        "mailnologin": "ਭੇਜਣ ਲਈ ਕੋਈ ਪਤਾ ਨਹੀਂ",
        "mailnologintext": "ਦੂਜੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਈ-ਮੇਲ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ [[Special:UserLogin|ਦਾਖ਼ਲ]] ਹੋਣਾ ਪਵੇਗਾ ਅਤੇ ਆਪਣੀਆਂ [[Special:Preferences|ਪਸੰਦਾਂ]] ਵਿਚ ਇੱਕ ਸਹੀ ਈ-ਮੇਲ ਪਤਾ ਦੇਣਾ ਪਵੇਗਾ।",
        "emailuser": "ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ",
        "notanarticle": "ਕੋਈ ਸਮੱਗਰੀ ਸਫ਼ਾ ਨਹੀਂ ਹੈ",
        "notvisiblerev": "ਇੱਕ ਵੱਖਰੇ ਮੈਂਬਰ ਦੀ ਬਣਾਈ ਆਖ਼ਰੀ ਰੀਵਿਜ਼ਨ ਮਿਟਾਈ ਜਾ ਚੁੱਕੀ ਹੈ",
        "watchlist-details": "ਗੱਲ-ਬਾਤ ਸਫ਼ੇ ਨਾ ਗਿਣਦੇ ਹੋਏ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵਿਚ{{PLURAL:$1|$1 ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।",
+       "wlnote": "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|'''$2''' ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:\n$1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
        "wlshowlast": "ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ $3 ਵਖਾਓ",
        "watchlist-options": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਦੀਆਂ ਚੋਣਾਂ",
        "watching": "ਨਿਗ੍ਹਾ (ਵਾਚ) ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ...",
        "allmessages-prefix": "ਇਸ ਅਗੇਤਰ ਨਾਲ਼ ਛਾਣੋ:",
        "allmessages-language": "ਭਾਸ਼ਾ:",
        "allmessages-filter-submit": "ਜਾਓ",
+       "allmessages-filter-translate": "ਤਰਜਮਾ ਕਰੋ",
        "thumbnail-more": "ਵਧਾਓ",
        "filemissing": "ਫ਼ਾਈਲ ਗੁੰਮ ਹੈ",
        "thumbnail_error": "ਨਮੂਨਾ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ ਹੋਈ ਹੈ: $1",
        "import": "ਸਫ਼ੇ ਮੰਗਾਓ",
        "importinterwiki": "ਅੰਤਰ-ਵਿਕੀ ਮੰਗ",
-       "import-interwiki-source": "ਸਰੋਤ ਵਿਕੀ/ਸਫ਼ਾ:",
        "import-interwiki-templates": "ਸਾਰੇ ਫਰਮੇ ਸ਼ਾਮਲ ਕਰੋ",
        "import-interwiki-submit": "ਮੰਗਾਓ",
        "import-upload-filename": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ:",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|ਵਰਤੋਂਕਾਰ|ਵਰਤੋਂਕਾਰਾਂ}} $1",
        "creditspage": "ਸਫ਼ੇ ਬਾਬਤ ਕਰਜ਼",
        "spamprotectiontitle": "Spam ਸੁਰੱਖਿਆ ਫਿਲਟਰ",
+       "pageinfo-header-basic": "ਮੁੱਢਲੀ ਜਾਣਕਾਰੀ",
        "pageinfo-header-edits": "ਸੋਧਾਂ ਦਾ ਅਤੀਤ",
        "pageinfo-header-restrictions": "ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ",
+       "pageinfo-header-properties": "ਸਫ਼ਾ ਵਿਸ਼ੇਸ਼ਤਾ",
        "pageinfo-length": "ਸਫ਼ੇ ਦੀ ਲੰਬਾਈ (ਬਾਈਟਾਂ ਵਿਚ)",
        "pageinfo-article-id": "ਸਫ਼ੇ ਦੀ ਸ਼ਨਾਖ਼ਤ",
        "pageinfo-language": "ਸਫ਼ੇ ਦੀ ਸਮੱਗਰੀ ਦੀ ਭਾਸ਼ਾ",
        "file-nohires": "ਇਸ ਤੋਂ ਵੱਡੀ ਤਸਵੀਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
        "svg-long-desc": "SVG ਫ਼ਾਈਲ, ਆਮ ਤੌਰ ’ਤੇ $1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਦਾ ਅਕਾਰ: $3",
        "show-big-image": "ਅਸਲ ਫਾਈਲ",
+       "show-big-image-size": "$1 × $2 ਪਿਕਸਲ",
        "newimages": "ਨਵੀਆਂ ਫ਼ਾਈਲਾਂ ਦੀ ਗੈਲਰੀ",
+       "newimages-legend": "ਫਿਲਟਰ",
        "noimages": "ਵੇਖਣ ਲਈ ਕੁਝ ਨਹੀਂ",
        "ilsubmit": "ਖੋਜ",
        "bydate": "ਮਿਤੀ ਨਾਲ",
        "exif-unknowndate": "ਅਣਪਛਾਤੀ ਮਿਤੀ",
        "exif-orientation-1": "ਸਧਾਰਨ",
        "exif-orientation-3": "੧੮੦° ਘੁਮਾਇਆ ਗਿਆ",
+       "exif-orientation-6": "90° ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਇਆ",
+       "exif-orientation-7": "90° ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਇਆ ਅਤੇ ਖੜ੍ਹਵੇਂ ਰੂਪ ਵਿੱਚ ਪਲਟਿਆ",
+       "exif-orientation-8": "90° ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਇਆ",
        "exif-componentsconfiguration-0": "ਮੌਜੂਦ ਨਹੀਂ ਹੈ",
        "exif-exposureprogram-0": "ਪਰਿਭਾਸ਼ਤ ਨਹੀਂ",
        "exif-exposureprogram-1": "ਦਸਤੀ",
        "confirm-watch-top": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਜੋੜਨਾ ਹੈ?",
        "confirm-unwatch-button": "ਠੀਕ ਹੈ",
        "confirm-unwatch-top": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਤੋਂ ਹਟਾਉਣਾ ਹੈ?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← ਪਿਛਲਾ ਸਫ਼ਾ",
        "imgmultipagenext": "ਅਗਲਾ ਸਫ਼ਾ →",
        "imgmultigo": "ਜਾਓ!",
        "imgmultigoto": "$1 ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ",
+       "img-lang-default": "(ਮੂਲ ਭਾਸ਼ਾ)",
+       "img-lang-go": "ਜਾਓ",
        "ascending_abbrev": "ਵਧਦਾ",
        "descending_abbrev": "ਘਟਦਾ",
        "table_pager_next": "ਅਗਲਾ ਸਫ਼ਾ",
        "version-hooks": "ਹੁੱਕਾਂ",
        "version-hook-name": "ਹੁੱਕ ਦਾ ਨਾਂ",
        "version-license": "ਲਸੰਸ",
+       "version-ext-license": "ਲਸੰਸ",
+       "version-ext-colheader-name": "ਇਕਸਟੈਨਸ਼ਨ",
+       "version-skin-colheader-name": "ਸਕਿਨ",
+       "version-ext-colheader-version": "ਵਰਜਨ",
+       "version-ext-colheader-license": "ਲਸੰਸ",
+       "version-ext-colheader-description": "ਵੇਰਵਾ",
+       "version-ext-colheader-credits": "ਲੇਖਕ",
+       "version-license-title": "$1 ਲਈ ਲਸੰਸ",
+       "version-credits-title": "$1 ਲਈ ਮਾਣ",
        "version-poweredby-others": "ਹੋਰ",
+       "version-poweredby-translators": "translatewiki.net ਅਨੁਵਾਦਕ",
        "version-software": "ਇਨਸਟਾਲ ਕੀਤਾ ਸਾਫ਼ਟਵੇਅਰ",
        "version-software-product": "ਉਤਪਾਦ",
        "version-software-version": "ਵਰਜਨ",
        "fileduplicatesearch-submit": "ਖੋਜ",
        "fileduplicatesearch-noresults": "\"$1\" ਨਾਂ ਦੀ ਕੋਈ ਫ਼ਾਈਲ ਨਹੀਂ ਲੱਭੀ।",
        "specialpages": "ਖ਼ਾਸ ਸਫ਼ੇ",
+       "specialpages-note-top": "ਸੰਕੇਤ",
        "specialpages-group-maintenance": "ਪ੍ਰਬੰਧਕੀ ਰਪਟਾਂ",
        "specialpages-group-other": "ਹੋਰ ਖ਼ਾਸ ਸਫ਼ੇ",
        "specialpages-group-login": "ਲਾਗਇਨ / ਖਾਤਾ ਬਣਾਓ",
        "tags-title": "ਟੈਗ",
        "tags-tag": "ਟੈਗ ਦਾ ਨਾਮ",
        "tags-description-header": "ਅਰਥ ਦਾ ਪੂਰਾ ਬਿਓਰਾ",
+       "tags-active-header": "ਸਰਗਰਮ?",
        "tags-hitcount-header": "ਟੈਗ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ",
+       "tags-active-yes": "ਹਾਂ",
+       "tags-active-no": "ਨਹੀਂ",
        "tags-edit": "ਸੋਧੋ",
        "tags-hitcount": "$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}",
        "comparepages": "ਸਫ਼ੇ ਮਿਲਾਓ",
        "htmlform-no": "ਨਹੀਂ",
        "htmlform-yes": "ਹਾਂ",
        "htmlform-chosen-placeholder": "ਕੋਈ ਚੋਣ ਚੁਣੋ",
+       "htmlform-cloner-create": "ਹੋਰ ਜੋੜੋ",
+       "htmlform-cloner-delete": "ਹਟਾਓ",
        "logentry-delete-delete": "$1 ਨੇ ਸਫ਼ਾ $3 ਮਿਟਾਇਆ",
        "revdelete-content-hid": "ਸਮੱਗਰੀ ਲੁਕਾਈ ਹੋਈ",
        "revdelete-summary-hid": "ਸੋਧ ਸਾਰ ਲੁਕਾਈ ਹੋਈ",
        "duration-centuries": "$1 {{PLURAL:$1|ਸਦੀ|ਸਦੀਆਂ}}",
        "duration-millennia": "$1 {{PLURAL:$1|ਸਾਹਸ਼ਤਾਬਦੀ|ਸਾਹਸ਼ਤਾਬਦੀਆਂ}}",
        "rotate-comment": "ਤਸਵੀਰ ਨੂੰ ਘੜੀ ਦੇ ਰੁਖ ਵਿਚ $1 {{PLURAL:$1|ਡਿਗਰੀ|ਡਿਗਰੀਆਂ}} ਨਾਲ਼ ਘੁਮਾਇਆ ਗਿਆ",
-       "expand_templates_preview": "ਝਲਕ"
+       "expand_templates_ok": "ਠੀਕ ਹੈ",
+       "expand_templates_remove_comments": "ਟਿੱਪਣੀਆਂ ਹਟਾਓ",
+       "expand_templates_preview": "ਝਲਕ",
+       "pagelang-name": "ਸਫ਼ਾ",
+       "pagelang-language": "ਭਾਸ਼ਾ",
+       "pagelang-use-default": "ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ",
+       "pagelang-select-lang": "ਭਾਸ਼ਾ ਚੁਣੋ"
 }
index 3dd109b..010179a 100644 (file)
        "talkpagelinktext": "Pisasabian",
        "specialpage": "Bulung a Makabukud",
        "personaltools": "Sariling kasangkapan",
-       "postcomment": "Magpaskil kang komentu o puna",
        "articlepage": "Lawen me ing kalamnan ning bulung",
        "talk": "Pamisabi-sabi",
        "views": "Pamaglawe",
        "externaldberror": "Mapalyaring mika pamagkamali king external authentication (pamagpatutung panlual) ning database, o ala kang paintulut a i-update ya ing kekang account a panlual (external account).",
        "login": "Mag log in",
        "nav-login-createaccount": "Mag-login / maglalang account",
-       "loginprompt": "Kailangan mo reng cookie a makasalangi (enabled) ba kang makapag log in king {{SITENAME}}.",
        "userlogin": "Mag-login / maglalang account",
        "logout": "Mag-log out",
        "userlogout": "Mag logout",
        "searchprofile-images-tooltip": "Manintun makasimpan",
        "searchprofile-everything-tooltip": "Manintun karing eganaganang laman (kayabe no reng bulung pamisabi-sabi)",
        "search-result-size": "$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})",
-       "search-result-score": "Kaugnayan (relevance): $1%",
        "search-redirect": "(pamanalis direksiun $1)",
        "search-section": "(seksion $1)",
        "search-suggest": "Ing buri mung sabian: $1",
        "fileexists-shared-forbidden": "Atin nang simpan (file) a maki lagyung anti kaniti king abe-abeng simpanan (shared file repository);\nmibalik ka at ilulan (upload) me king lalam ning bayung lagyu. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Babala king pamaglulan",
        "savefile": "I-save ya ing simpan (file)",
-       "uploadedimage": "milulan ya ing \"[[$1]]\"",
-       "overwroteimage": "milulan ya ing bayung bersion ning \"[[$1]]\"",
        "uploaddisabled": "Makapatda ing pamag-upload",
        "uploaddisabledtext": "Makapatda ing pamag-upload king {{SITENAME}}.",
        "uploadscripted": "Atin yang HTML o script code ing simpan a ini, at maliaring magkamali ya ing web browser king pamamasa kaniti.",
        "watchlist-details": "{{PLURAL:$1|$1 bulung|$1 bulung}} king kekang watchlist, e la kayabe deng ''talk pages''.",
        "wlheader-enotif": "Makasalangi (enabled) ing pamipabalu kapamilatan ning e-mail.",
        "wlheader-showupdated": "'''Makapal''' la pangasulat deng bulung a miyalilan manibat aniang tauli mu lang pintalan.",
+       "wlnote": "{{PLURAL:$1|Ing makatuki ing tauling|Ding makatuki ring tauling '''$1''' miyalilan}} kilub {{PLURAL:$2|ning tauling metung a oras|ding tauling '''$2''' oras}}.",
        "wlshowlast": "Pakit la reng tauling $1 oras $2 aldo $3",
        "watchlist-options": "Deng maliaring gawan kareng listaan da reng babanten (''watchlist'')",
        "watching": "Babanten...",
index f780a0a..2c50096 100644 (file)
        "talkpagelinktext": "Dviser",
        "specialpage": "Pache éspéchiale",
        "personaltools": "Otis dech uzeu",
-       "postcomment": "Nouvèle sekchion",
        "articlepage": "Vir el pache ed ches étnus",
        "talk": "distchuter",
        "views": "Vues",
        "yourdomainname": "Vote donmène:",
        "login": "Intrer",
        "nav-login-createaccount": "Intrer / créer vote conpte",
-       "loginprompt": "I feut avoèr dés coukies pou pouvoèr intrer din {{SITENAME}}.",
        "userlogin": "Intrer / créer vote conpte",
        "logout": "Sortir",
        "userlogout": "Sortir",
        "upload": "Quértcher chés fichiés",
        "uploadlogpage": "Jornal éd chés quértchémints",
        "filedesc": "Résumè",
-       "uploadedimage": "\"[[$1]]\" quértchée",
        "license": "Licince",
        "license-header": "Licince",
        "listfiles": "Lisse des fichiés",
index 036d5c4..caf85e5 100644 (file)
        "filename": "Feilnaame",
        "badfilename": "Daer Feilnaame iss gennert warre nooch „$1“.",
        "savefile": "Feil beilege",
-       "uploadedimage": "hot „[[$1]]“ uffglaade",
-       "overwroteimage": "hot e neie Version vun „[[$1]]“ uffglaade",
        "uploaddisabled": "Ufflaade verbodde",
        "uploaddisabledtext": "Es Ufflaade vun Feils iss verbodde.",
        "watchthisupload": "Watsch des Blatt",
index c5b47ac..f60e1dc 100644 (file)
        "talkpagelinktext": "Dischbediere",
        "specialpage": "Schbezielli Said",
        "personaltools": "Persenlischs Wergzaisch",
-       "postcomment": "Naije Abschnidd",
        "articlepage": "Inhald õgugge",
        "talk": "Dischbediere",
        "views": "Uffruf",
        "remembermypassword": "Moi Kennword uffm Brausa merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})",
        "login": "Õmelde",
        "nav-login-createaccount": "Õmelde / Kondo õleesche",
-       "loginprompt": "Cookies mugschd fa {{SITENAME}} schun õhawe.",
        "userlogin": "Õmelde / Kondo õleesche",
        "userloginnocreate": "Oilogge",
        "logout": "Uffhere",
        "searchprofile-advanced-tooltip": "Gugg in õnnare Nõmensreum",
        "search-result-size": "$1 ({{PLURAL:$2|1 Word|$2 Wärda}})",
        "search-result-category-size": "{{PLURAL:$1|1 Said|$1 Saide}} ({{PLURAL:$2|1 Sachgrubb|$2 Sachgrubbe}}, {{PLURAL:$3|1 Dadai|$3 Dadaije}})",
-       "search-result-score": "Bdaidung: $1%",
        "search-redirect": "(Waidalaidung $1)",
        "search-section": "(Abschnidd $1)",
        "search-suggest": "Hoschd gemäänd: $1",
        "filedesc": "Iwwabligg",
        "fileuploadsummary": "Iwwabligg:",
        "savefile": "Dadai schbaischere",
-       "uploadedimage": "hodd „[[$1]]“ nuffglade",
        "lockmanager-notlocked": "„$1“ hod ned uffgmachd were kenne, s'isch ganed gschberd gwesd.",
        "lockmanager-fail-closelock": "Die gbscherd Dadai „$1“ hod ned gschlosse were kenne.",
        "lockmanager-fail-deletelock": "Die gbscherd Dadai „$1“ hod ned gleschd were kenne.",
index f446d7d..b655ba0 100644 (file)
        "media_tip": "Link do pliku",
        "sig_tip": "Twój podpis wraz z datą i czasem",
        "hr_tip": "Linia pozioma (nie nadużywaj)",
-       "summary": "Opis zmian ",
+       "summary": "Opis zmian:",
        "subject": "Temat/nagłówek:",
        "minoredit": "To jest drobna zmiana",
        "watchthis": "Obserwuj",
        "randomincategory": "Losowa strona w kategorii",
        "randomincategory-invalidcategory": "\"$1\" nie jest prawidłową nazwą kategorii.",
        "randomincategory-nopages": "Nie ma żadnych stron w [[:Category:$1]].",
-       "randomincategory-selectcategory": "Pobierz losową stronę z kategorii: $1 $2.",
-       "randomincategory-selectcategory-submit": "Dalej",
+       "randomincategory-category": "Kategoria:",
+       "randomincategory-legend": "Losowa strona w kategorii",
        "randomredirect": "Losowe przekierowanie",
        "randomredirect-nopages": "Brak jakichkolwiek przekierowań w przestrzeni nazw „$1”.",
        "statistics": "Statystyki",
        "noindex-category-desc": "Ta strona nie jest indeksowana przez roboty, ponieważ ma wpisane magiczne słowo <code><nowiki>__NOINDEX__</nowiki></code> i znajduje się w przestrzeni nazw, w której ta flaga jest dozwolona.",
        "index-category-desc": "Na stronie znajduje się magiczne słowo <code><nowiki>__INDEX__</nowiki></code> (i strona znajduje się w przestrzeni nazw, w której jest ono dozwolone), więc jest indeksowana przez wyszukiwarki nawet wtedy, gdy normalnie by się to nie działo.",
        "post-expand-template-inclusion-category-desc": "Rozmiar tej strony jest większy niż <code>$wgMaxArticleSize</code> po rozszerzeniu wszystkich szablonów, więc część szablonów nie jest rozszerzonych.",
-       "post-expand-template-argument-category-desc": "Po rozwinięciu argumentu szablonu (coś w potrójnych nawiasach, np. <code>{{{Foo}}}</code>) długość strony przekracza <code>$wgMaxArticleSize</code>.",
+       "post-expand-template-argument-category-desc": "Długość strony przekracza <code>$wgMaxArticleSize</code> po rozwinięciu argumentu szablonu (coś w potrójnych nawiasach, np. <code>{{{Foo}}}</code>).",
        "expensive-parserfunction-category-desc": "Na stronie używanych jest zbyt wiele wymagających funkcji parsera (takich jak <code>#ifexist</code>). Więcej informacji na stronie [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Strona zawiera nieprawidłowe odwołania do plików (odwołania do nieistniejących plików).",
        "hidden-category-category-desc": "To jest kategoria z <code><nowiki>__HIDDENCAT__</nowiki></code>, co zapobiega wyświetlaniu jej w sekcji z kategoriami na stronie.",
        "exbeforeblank": "poprzednia zawartość, obecnie pustej strony: „$1”",
        "delete-confirm": "Usuwanie „$1”",
        "delete-legend": "Usuń",
-       "historywarning": "'''Uwaga!''' Strona, którą chcesz usunąć, ma w przybliżeniu {{PLURAL:$1|jedną starszą wersję|$1 starsze wersje|$1 starszych wersji}}:",
+       "historywarning": "<strong>Uwaga:</strong> Strona, którą chcesz usunąć, ma {{PLURAL:$1|jedną starszą wersję|$1 starsze wersje|$1 starszych wersji}}:",
        "confirmdeletetext": "Zamierzasz usunąć stronę razem z całą dotyczącą jej historią.\nUpewnij się, czy na pewno chcesz to zrobić, że rozumiesz konsekwencje i że robisz to w zgodzie z [[{{MediaWiki:Policy-url}}|zasadami]].",
        "actioncomplete": "Operacja wykonana",
        "actionfailed": "Działanie nie powiodło się",
        "delete-edit-reasonlist": "Edytuj listę przyczyn usunięcia",
        "delete-toobig": "Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.<br />\nUsuwanie jej zostało ograniczone ze względu na możliwość zakłócenia pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.",
        "delete-warning-toobig": "Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.<br />\nBądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.",
-       "delete-cantedit": "Nie możesz usunąć tej strony, ponieważ nie masz uprawnienia do jej edycji.",
+       "deleteprotected": "Nie możesz usunąć tej strony, ponieważ została zabezpieczona.",
        "deleting-backlinks-warning": "''' Uwaga:''' Do strony, którą masz zamiar usunąć, odwołują się [[Special:WhatLinksHere/{{FULLPAGENAME}}|inne strony]].",
        "rollback": "Cofnij edycję",
        "rollback_short": "Cofnij",
        "import": "Import stron",
        "importinterwiki": "Import transwiki",
        "import-interwiki-text": "Wybierz wiki i nazwę strony do importowania.\nDaty oraz nazwy autorów zostaną zachowane.\nWszystkie operacje importu transwiki są odnotowywane w [[Special:Log/import|rejestrze importu]].",
-       "import-interwiki-source": "Źródło wiki/strony:",
+       "import-interwiki-sourcewiki": "Źródłowa wiki:",
+       "import-interwiki-sourcepage": "Strona źródłowa:",
        "import-interwiki-history": "Kopiuj całą historię edycji tej strony",
        "import-interwiki-templates": "Załącz wszystkie szablony",
        "import-interwiki-submit": "Importuj",
        "api-error-invalid-file-key": "Błąd wewnętrzny – nie można odnaleźć pliku w wśród plików tymczasowych.",
        "api-error-missingparam": "Błąd wewnętrzny –  brak jest niektórych wymaganych informacji do realizacji przesłania.",
        "api-error-missingresult": "Błąd wewnętrzny – nie można określić czy kopiowanie się udało.",
-       "api-error-mustbeloggedin": "Musisz się zalogować aby przesyłać pliki.",
+       "api-error-mustbeloggedin": "Aby przesyłać pliki, musisz się zalogować.",
        "api-error-mustbeposted": "Wystąpił błąd w oprogramowaniu. Nie użyto właściwej metody HTTP.",
        "api-error-noimageinfo": "Plik przesłano, ale serwer nie zwrócił informacji na jego temat.",
        "api-error-nomodule": "Błąd wewnętrzny – nie określono modułu przesyłania plików.",
index 6e4bcf4..ffad648 100644 (file)
        "hidetoc": "stërmé",
        "collapsible-collapse": "Saré",
        "collapsible-expand": "deurbe",
+       "confirmable-confirm": "{{GENDER:$1|É-lo}} sigur?",
+       "confirmable-yes": "É",
+       "confirmable-no": "Nò",
        "thisisdeleted": "Veul-lo vardé ò ripristiné $1?",
        "viewdeleted": "Veul-lo vardé $1?",
        "restorelink": "{{PLURAL:$1|na modìfica scancelà|$1 modìfiche scancelà}}",
        "invalidtitle-knownnamespace": "Tìtol ch'a va nen bin con lë spassi nominal «$2» e ël test «$3»",
        "invalidtitle-unknownnamespace": "Tìtol pa bon con nùmer dë spassi nominal $1 e test «$2» sconossù",
        "exception-nologin": "Nen rintrà ant ël sistema",
-       "exception-nologin-text": "Për piasì, [[Special:Userlogin|ch'a rintra ant ël sistema]] për podèj acede a costa pàgina o a costa assion.",
+       "exception-nologin-text": "Për piasì, ch'a rintra ant ël sistema për podèj acede a costa pàgina o a costa assion.",
        "exception-nologin-text-manual": "Për piasì, ch'a $1 për podèj acede a costa pàgina o costa assion.",
        "virus-badscanner": "Configurassion falà: antivìrus nen conossù: ''$1''",
        "virus-scanfailed": "scansion falìa (còdes $1)",
        "parser-template-recursion-depth-warning": "Passà ël lìmit ëd ricorsion dlë stamp ($1)",
        "language-converter-depth-warning": "Lìmit ëd profondità dël convertidor ëd lenga sorpassà ($1)",
        "node-count-exceeded-category": "Pàgine anté che ël nùmer ëd neu a l'é sorpassà",
-       "node-count-exceeded-category-desc": "Na categorìa për le pàgine andoa ël nùmer dij neud a l'é tròp grand.",
+       "node-count-exceeded-category-desc": "La pàgina a sorpassa ël nùmer màssim dij neu.",
        "node-count-exceeded-warning": "La pàgina a l'ha sorpassà ël nùmer ëd neu",
        "expansion-depth-exceeded-category": "Pàgine anté che la profondeur d'espansion a l'é sorpassà",
-       "expansion-depth-exceeded-category-desc": "Costa-sì a l'é na categorìa për le pàgine andoa la profondità d'espansion a l'é tròpa.",
+       "expansion-depth-exceeded-category-desc": "La pàgina a l'ha passà la profondità d'espansion.",
        "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",
        "preferences": "Mè gust",
        "mypreferences": "Gust",
        "prefs-edits": "Nùmer ëd modìfiche fàite:",
-       "prefsnologintext2": "Për piasì, ch'a $1 për definì ij gust d'utent.",
+       "prefsnologintext2": "Për piasì, ch'a rintra ant ël sistema për modifiché ij sò gust d'utent.",
        "prefs-skin": "Facia",
        "skin-preview": "Preuva",
        "datedefault": "Franch l'istess",
        "windows-nonascii-filename": "Sta wiki-sì a manten pa ij nòm d'archivi con caràter speciaj.",
        "fileexists": "N'archivi con ës nòm-sì a-i é già, për piasì che a contròla <strong>[[:$1]]</strong> se {{GENDER|a}} l'é pa sigur dë vorèj cangelo.\n[[$1|thumb]]",
        "filepageexists": "La pàgina ëd descrission për st'archivi-sì a l'é già stàita creà an <strong>[[:$1]]</strong>, mach ch'a-i é gnun archivi ch'as ciama parèj.\nLòn ch'a buta për somari as ës-ciairerà nen ant la pàgina ëd descrission.\nPër podèj buté sò somari a l'ha da modifichesse la pàgina a man.\n[[$1|thumb]]",
-       "fileexists-extension": "N'archivi con ës nòm-sì a-i é già: [[$2|thumb]]\n* Nòm dl'archivi ch'as carìa: <strong>[[:$1]]</strong>\n* Nòm dl'archivi ch'a-i é già: <strong>[[:$2]]</strong>\nPër piasì, ch'a serna un nòm diferent.",
+       "fileexists-extension": "N'archivi con ës nòm-sì a-i é già: [[$2|thumb]]\n* Nòm dl'archivi ch'as carìa: <strong>[[:$1]]</strong>\n* Nòm dl'archivi ch'a-i é già: <strong>[[:$2]]</strong>\nVeul-lo dle vire dovré un nòm pi esplìssit?",
        "fileexists-thumbnail-yes": "L'archivi a jë smija a na ''figurin-a''. [[$1|thumb]]\nPër piasì, ch'a contròla l'archivi <strong>[[:$1]]</strong>.\nS'a l'é la midema figura a amzura pijn-a, a veul dì ch'a fa nen dë manca dë carié na figurin-a.",
        "file-thumbnail-no": "Ël nòm dl'archivi as anandia con <strong>$1</strong>.\nA jë smija a na ''figurin-a''.\nSe a l'ha na figura a amzura pijn-a a l'é mej ch'a carìa cola-lì, dësnò ch'a-j cangia nòm a l'archivi, për piasì.",
        "fileexists-forbidden": "Belavans n'archivi con ës nòm-sì a-i é già, donca ël nòm as peul pa pì dovresse.\nSe a veul ancó cariè sò archivi, për piasì ch'a torna andré e ch'a deuvra n'àutr nòm. [[File:$1|thumb|center|$1]]",
        "license": "Licensa:",
        "license-header": "Licensa",
        "nolicense": "Gnun-a selession fàita",
+       "licenses-edit": "Modifiché j'opsion Ëd licensa",
        "license-nopreview": "(Gnun-a preuva ch'as peula smon-se)",
-       "upload_source_url": "(n'anliura bon-a e che as peula dovresse)",
-       "upload_source_file": "(n'archivi da sò ordinator)",
+       "upload_source_url": "(l'archivi ch'a l'ha sernù da n'adrëssa an s'Aragnà bon-a e ch'as peula acede ëd fasson pùblica)",
+       "upload_source_file": "(sò archivi sernù da sò ordinator)",
+       "listfiles-delete": "scancelé",
        "listfiles-summary": "Sta pàgina special-sì a smon tuti j'archivi ch'a son ëstàit carià.",
        "listfiles_search_for": "Arserché un nòm d'archivi multimojen:",
        "imgfile": "archivi",
        "randomincategory": "Pàgina a l'ancàpit ant la categorìa",
        "randomincategory-invalidcategory": "«$1» a l'é pa un nòm ëd categorìa bon.",
        "randomincategory-nopages": "A-i é gnun-e pàgine ant la categorìa [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Pijé na pàgina a l'ancàpit da 'nt la categorìa: $1 $2.",
-       "randomincategory-selectcategory-submit": "Andé",
        "randomredirect": "Na ridiression qualsëssìa",
        "randomredirect-nopages": "A-i é pa gnun-a ridiression ant lë spassi nominal \"$1\".",
        "statistics": "Statìstiche",
        "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é.\nDate dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.\nTute 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é",
index 3029c96..edf2a8e 100644 (file)
        "talkpagelinktext": "گل بات",
        "specialpage": "خاص صفحہ",
        "personaltools": "ذاتی اوزار",
-       "postcomment": "نویں ونڈ",
        "articlepage": "مضمون آلا صفحہ",
        "talk": "گل بات",
        "views": "وکھالے",
        "externaldberror": "ڈیٹابیس چ توانوں پہچاننے چ کوئی مسئلہ ہویا اے یا فیر تسی اپنا بارلا کھاتا نئیں بدل سکدے۔",
        "login": "اندر آؤ جی",
        "nav-login-createaccount": "اندر آؤ / کھاتہ کھولو",
-       "loginprompt": "اندر آنے آستے تواڈیاں کوکیز آن ہونیاں چائیدیاں نے {{SITENAME}}.",
        "userlogin": "اندر آؤ / کھاتہ کھولو",
        "userloginnocreate": "اندر آؤ جی",
        "logout": "لاگ توں باہر",
        "searchprofile-advanced-tooltip": "کسٹم ناواں چ لبو",
        "search-result-size": "$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})",
        "search-result-category-size": "{{PLURAL:$1|1 سنگی|$1 سنگی}} ({{PLURAL:$2|1 نکیاں گٹھاں|$2 نکیاں گٹھاں}}, {{PLURAL:$3|1 فائل|$3 فائلاں}})",
-       "search-result-score": "مہاندرا:  $1%",
        "search-redirect": "($1 ریڈائریکٹ)",
        "search-section": "($1 ٹوٹا)",
        "search-suggest": "تسی $1 دی گل تے نئیں کر رۓ:",
        "uploadwarning": "فائل چڑانے توں خبردار",
        "uploadwarning-text": "تھلے فائل بارے دس بدلو تے فیر کوشش کرو۔",
        "savefile": "فائل بچاؤ",
-       "uploadedimage": "چڑھائی گئی\"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" دا اک نواں ورین چڑھاؤ",
        "uploaddisabled": "فائل چڑانا بند اے",
        "copyuploaddisabled": "یو آر این لے چڑھانا نکارہ کیتا۔",
        "uploaddisabledtext": "فائل چڑانے چ رکاوٹ اے۔",
        "watchlist-details": "{{PLURAL:$1|$1 صفحہ|$1 صفحہ}} تواڈی اکھ تھلے گلاں باتاں شامل نہیں۔",
        "wlheader-enotif": "ای-میل نوٹیفیکیشن قابل",
        "wlheader-showupdated": " صفے جیہڑے بدلے کۓ تھواڈے آخری وار آن مکرون  اونان نوں موٹا کرکے دسیا گیا اے۔",
+       "wlnote": "تھلے {{PLURAL:$1|آخری تبدیلی|آخری تبدیلیاں '''1$''' }} آخر تے {{PLURAL:$2|کینٹہ|'''2$''' کینٹے}} 3$، 4$.",
        "wlshowlast": "آخری $1 گھنٹے $2 دن $3 وکھاؤ",
        "watchlist-options": "نظر تھلے رکھن دیاں راہواں",
        "watching": "نظر تھلے۔۔۔۔",
        "duplicate-defaultsort": "'''خبردار:''' ڈیفالٹ چابی \"$2\" پہلی ڈیفالٹ چابی \"$1\" دے اتے لگ گئی اے۔",
        "version": "ورژن",
        "version-extensions": "انسٹالڈ کیتیاں گیاں ایکسٹنشن",
+       "version-skins": "کھل",
        "version-specialpages": "خاص صفے",
        "version-parserhooks": "پارسر ہکز",
        "version-variables": "ویریایبلز",
        "version-antispam": "سپام بچاؤ",
-       "version-skins": "کھل",
        "version-other": "دوجے",
        "version-mediahandlers": "میڈیا ہینڈلرز",
        "version-hooks": "ہکز",
index eb0d128..b51b871 100644 (file)
        "talkpagelinktext": "Καλάτσεμαν",
        "specialpage": "Ειδικόν σελίδαν",
        "personaltools": "Προσωπικά εργαλεία",
-       "postcomment": "Νέον κομμάτ'",
        "articlepage": "Σελίδα",
        "talk": "Καλάτσεμαν",
        "views": "Τερέματα",
        "yourdomainname": "Το domain εσούν:",
        "login": "Εμπάτε",
        "nav-login-createaccount": "Εμπάτεν / ποισέστεν λογαρίαν",
-       "loginprompt": "Πρέπ' ν' άφτετε τα cookies για εμπείτε σο {{SITENAME}}.",
        "userlogin": "Εμπάτεν / ποισέστεν λογαρίαν",
        "userloginnocreate": "Εμπάτεν",
        "logout": "οξουκά",
        "badfilename": "Τόνεμαν ταρχείου ελλάγεν κιεγέντον \"$1\".",
        "filetype-missing": "Τ' αρχείον τιδέν 'κ έχ' κατάληξην (άμον \".jpg\").",
        "savefile": "Αποθήκεψον τ' αρχείον",
-       "uploadedimage": "Εγέντον το φόρτωμαν τη \"[[$1]]\"",
-       "overwroteimage": "Εφορτώθεν καινούρεον μορφή τη \"[[$1]]\"",
        "watchthisupload": "Ωρίαγμαν τη αρχείου",
        "upload-file-error": "Σφάλμαν απές μερέαν",
        "upload-misc-error": "Αναγνώριμον λάθος φορτωματί",
index 258bdc9..f4f403e 100644 (file)
        "talkpagelinktext": "Diskusiōni",
        "specialpage": "Speciālin pāusan",
        "personaltools": "Persōniskas pagaptis",
-       "postcomment": "Naunā sekciōni",
        "articlepage": "Wīdais ēnturas pāusan",
        "talk": "Diskusiōni",
        "views": "Pawīda",
        "externaldberror": "Tikka izwinaīnas autentikāntin dātanbazin blānda, anga ni assei enwarīntan kāi etnaunīnlai twajjan izwinaīnan rekkenan.",
        "login": "Enjaīs",
        "nav-login-createaccount": "Enjaīs / teīkeis rekkenan",
-       "loginprompt": "Tu turri turītun <i>cookies</i> enklaūtan, kāi enēilai en {{SITENAME}}.",
        "userlogin": "Enjaīs / teīkeis rekkenan",
        "userloginnocreate": "Enjaīs",
        "logout": "Izjaīs",
        "searchprofile-everything-tooltip": "Laukīs en pastippai ēnturan (dīgi en diskusiōnis pāusamans)",
        "searchprofile-advanced-tooltip": "Laukīs en etrinktammans tītelin plattibins",
        "search-result-size": "$1 ({{PLURAL:$2|1 wīrds|$2 wīrdai}})",
-       "search-result-score": "Ebtikewīngisku $1%",
        "search-redirect": "(prawessenis $1)",
        "search-section": "(sekciōni $1)",
        "search-suggest": "Mīriwuns(si) tū ezze: $1",
        "uploadwarning": "Ēmpirsergīsenis ezze enkraūsnan",
        "uploadwarning-text": "Madli kitawīdinais zūrbukes ebpeisāsenis be bandais etkūmps",
        "savefile": "Enpeisāis zūrbrukin",
-       "uploadedimage": "ast enkraūwuns(si) \"[[$1]]\"",
-       "overwroteimage": "ast enkraūwuns(si) nāunan wersiōnin stesse \"[[$1]]\"",
        "uploaddisabled": "Zūrbrukin enkrausnā izklaūtan",
        "uploaddisabledtext": "Zūrbrukin enkrausnā pastāi izklaūtan.",
        "php-uploaddisabledtext": "Zūrbrukin enkrausnā ast drēuditan en PHP.\nIzbandais ensadīnsenin „file_uploads”.",
        "watchlist-details": "Ast {{PLURAL:$1|$1 pāusan|$1 pāusai}} en twajjai listin stēisan nadirītan, ni gīrbawintei diskusiōnis pāusans.",
        "wlheader-enotif": "E-mail pawakīsenei ast enklaūtan.",
        "wlheader-showupdated": "Pastāi '''pastarīntan''' pāusai,  kawīdai bēi kitawīdintan ezze Twajjai panzdauman tenēisan kāimalukisnan..",
+       "wlnote": "Zemmais pawaidinnā di {{PLURAL:$1|panzdauman kitawīdinsnan|panzdaumans '''$1''' kitawīdinsnans}} en {{PLURAL:$2|panzdauman stundin|'''$2''' panzdaumans stundins}}.",
        "wlshowlast": "Waidinnais panzdaumans $1 stūndins, $2 dēinans ($3)",
        "watchlist-options": "Nadirītan listis mazīngiskwas",
        "watching": "As nadirēi...",
index 7ca0e55..dc00401 100644 (file)
        "talkpagelinktext": "خبرې اترې",
        "specialpage": "ځانگړې پاڼه",
        "personaltools": "شخصي اوزار",
-       "postcomment": "نوې برخه",
        "articlepage": "د مخ مېنځپانگه ښکاره کول",
        "talk": "خبرې اترې",
        "views": "کتنې",
        "password-change-forbidden": "تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.",
        "login": "ننوتل",
        "nav-login-createaccount": "ننوتل / گڼون جوړول",
-       "loginprompt": "ددې لپاره چې {{SITENAME}} کې ننوځۍ نو بايد ستاسې د کمپيوټر کوکيز چارن وي.",
        "userlogin": "ننوتل / گڼون جوړول",
        "userloginnocreate": "ننوتل",
        "logout": "وتل",
        "searchprofile-advanced-tooltip": "د خپل خوښې په نوم-تشيالونو کې پلټل",
        "search-result-size": "$1 ({{PLURAL:$2|1 ويی|$2 وييونه}})",
        "search-result-category-size": "{{PLURAL:$1|1 غړی|$1 غړي}} ({{PLURAL:$2|1 څېرمه وېشنيزه|$2 څېرمه وېشنيزې}}، {{PLURAL:$3|1 دوتنه|$3 دوتنې}})",
-       "search-result-score": "اړوندتوب: $1%",
        "search-redirect": "(د $1 مخ ګرځونه)",
        "search-section": "(برخه $1)",
        "search-suggest": "آيا همدا مو موخه وه: $1",
        "file-exists-duplicate": "همدا دوتنه د {{PLURAL:$1|لاندينۍ دوتنې|لاندينيو دوتنو}} غبرگه لمېسه ده:",
        "uploadwarning": "د پورته کولو گواښ",
        "savefile": "دوتنه خوندي کړه",
-       "uploadedimage": "\"[[$1]]\" پورته شوه",
        "uploaddisabled": "پورته کول ناچارن شوي",
        "uploaddisabledtext": "د دوتنې پورته کولو آسانتياوې ناچارن شوي.",
        "uploadvirus": "دا دوتنه ويروس لري! تفصيل: $1",
        "watchlist-details": "ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو بېل نه دي شمېرلي.",
        "wlheader-enotif": "برېښليک خبرونه چارنه شوې.",
        "wlheader-showupdated": "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
+       "wlnote": "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
        "wlshowlast": "وروستي $1 ساعتونه $2 ورځې $3 ښکاره کړه",
        "watchlist-options": "د کتنلړ خوښنې",
        "watching": "د کتلو په حال کې...",
        "duplicate-defaultsort": "'''گواښنه:'''د \"$2\" تلواليزه اوډون تڼۍ تر دې پخوا ټاکلې تلواليزه اوډون تڼۍ \"$1\" پر ځای چارنه کېږي.",
        "version": "بڼه",
        "version-extensions": "لگېدلي شاتاړي",
-       "version-specialpages": "ځانگړي مخونه",
        "version-skins": "پوښۍ",
+       "version-specialpages": "ځانگړي مخونه",
        "version-other": "بل",
        "version-hooks": "کونډۍ",
        "version-hook-name": "کونډۍ نوم",
index 3d7a4a5..9af3177 100644 (file)
@@ -88,6 +88,7 @@
        "tog-watchdefault": "Adicionar as páginas e arquivos que eu editar à minha lista de páginas vigiadas",
        "tog-watchmoves": "Adicionar as páginas e arquivos que eu mover à minha lista de páginas vigiadas",
        "tog-watchdeletion": "Adicionar as páginas e arquivos que eu eliminar à minha lista de páginas vigiadas",
+       "tog-watchrollback": "Adicionar páginas onde fiz uma reversão às minhas páginas vigiadas",
        "tog-minordefault": "Marcar todas as edições como menores por padrão",
        "tog-previewontop": "Mostrar previsão antes da caixa de edição",
        "tog-previewonfirst": "Mostrar previsão na primeira edição",
        "hidetoc": "ocultar",
        "collapsible-collapse": "Ocultar",
        "collapsible-expand": "Expandir",
+       "confirmable-confirm": "{{GENDER:$1|Tem}} a certeza?",
+       "confirmable-yes": "Sim",
+       "confirmable-no": "Não",
        "thisisdeleted": "Ver ou restaurar $1?",
        "viewdeleted": "Ver $1?",
        "restorelink": "{{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "sort-descending": "Ordenar por ordem descendente",
        "sort-ascending": "Ordenar por ordem ascendente",
        "nstab-main": "Página",
-       "nstab-user": "Página d{{GENDER:{{#titleparts:{{PAGENAME}}|1|1}}|o usuário|a usuária|e usuário(a)}}",
+       "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o usuário|a usuária|e usuário(a)}}",
        "nstab-media": "Página de mídia",
        "nstab-special": "Página especial",
        "nstab-project": "Página do projeto",
        "invalidtitle-knownnamespace": "Título inválido para o espaço nominal \"$2\" e texto \"$3\"",
        "invalidtitle-unknownnamespace": "Título inválido para o espaço nominal de número desconhecido ($1) e texto \"$2\"",
        "exception-nologin": "Não está autenticado",
-       "exception-nologin-text": "Por favor clique [[Special:Userlogin|log in]] para poder acessar esta página ou ação",
+       "exception-nologin-text": "Por favor clique $1 para poder acessar essa página ou ação.",
        "exception-nologin-text-manual": "Por favor clique $1 para poder acessar essa página ou ação.",
        "virus-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
        "virus-scanfailed": "a verificação falhou (código $1)",
        "pt-login": "Entrar",
        "pt-login-button": "Entrar",
        "pt-createaccount": "Crie uma conta",
+       "pt-userlogout": "Sair",
        "php-mail-error-unknown": "Erro desconhecido na função mail() do PHP",
        "user-mail-no-addy": "Tentou enviar uma mensagem sem um endereço de e-mail.",
        "user-mail-no-body": "Você tentou enviar com o campo de e-mail vazio ou com poucos caracteres.",
        "preview": "Pré-visualização",
        "showpreview": "Mostrar previsão",
        "showdiff": "Mostrar alterações",
+       "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"{{int:savearticle}}\" outra vez, a página será criada sem qualquer conteúdo.",
        "anoneditwarning": "'''Atenção''': Você não se encontra autenticado.\nO seu endereço de IP será registrado no histórico de edições desta página.",
        "anonpreviewwarning": "''Você não está logado. Gravar registará o seu endereço IP no histórico de edições desta página.''",
        "missingsummary": "'''Lembrete:''' Você não introduziu um sumário de edição. Se clicar novamente em Salvar, a sua edição será salva sem um sumário.",
        "edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.",
        "edit-conflict": "Conflito de edição.",
        "edit-no-change": "A sua edição foi ignorada, uma vez que o texto não sofreu alterações.",
+       "postedit-confirmation-created": "A página foi criada.",
        "postedit-confirmation-restored": "Esta página foi restaurada.",
        "postedit-confirmation-saved": "Sua edição foi salva",
        "edit-already-exists": "Não foi possível criar uma nova página.\nEla já existia.",
        "parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
        "language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)",
        "node-count-exceeded-category": "Páginas em que o total de nós é excedido",
-       "node-count-exceeded-category-desc": "Uma categoria para páginas onde a contagem de nós é ultrapassada.",
+       "node-count-exceeded-category-desc": "A página excede a contagem de nós permitida.",
        "node-count-exceeded-warning": "A página excedeu o total de nós",
        "expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida",
-       "expansion-depth-exceeded-category-desc": "Esta é uma categoria para as páginas onde a profundidade de expansão é ultrapassada.",
+       "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.",
        "expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
        "parser-unstrip-loop-warning": "Foi detectado um ciclo infinito unstrip",
        "parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)",
        "rev-deleted-event": "(entrada removida)",
        "rev-deleted-user-contribs": "[nome de usuário ou endereço de IP eliminado - edição ocultada das contribuições]",
        "rev-deleted-text-permission": "Esta revisão desta página foi '''eliminada'''.\nPodem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminações].",
+       "rev-suppressed-text-permission": "A revisão desta página foi '''eliminada'''.\nVocê pode visualizá-la; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de eliminação].",
        "rev-deleted-text-unhide": "Esta revisão desta página foi '''removida'''.\nPoderá haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].\nVocê ainda pode [$1 ver esta revisão] se deseja prosseguir.",
        "rev-suppressed-text-unhide": "Esta revisão desta página foi '''removida'''.\nPoderá haver detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de eliminação].\nVocê ainda pode [$1 ver esta revisão] se deseja prosseguir.",
        "rev-deleted-text-view": "A revisão desta página foi '''eliminada'''.\nVocê pode visualizá-la; pode haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
        "prefs-dateformat": "Formato de data",
        "prefs-timeoffset": "Desvio horário",
        "prefs-advancedediting": "Opções gerais",
+       "prefs-editor": "Editor",
        "prefs-preview": "Pré-visualizar",
        "prefs-advancedrc": "Opções avançadas",
        "prefs-advancedrendering": "Opções avançadas",
        "license": "Licenciamento:",
        "license-header": "Licenciamento",
        "nolicense": "Nenhuma selecionada",
+       "licenses-edit": "Editar opções de licença",
        "license-nopreview": "(Previsão não disponível)",
        "upload_source_url": " (um URL válido, publicamente acessível)",
        "upload_source_file": " (um arquivo no seu computador)",
+       "listfiles-delete": "apagar",
        "listfiles-summary": "Esta página especial mostra todos os arquivos carregados.",
        "listfiles_search_for": "Pesquisar por nome de mídia:",
        "imgfile": "arquivo",
        "randomincategory": "Página aleatória na categoria",
        "randomincategory-invalidcategory": "\"$1\" não é um nome de categoria válido.",
        "randomincategory-nopages": "Não há paginas em [[:Category:$1]].",
-       "randomincategory-selectcategory": "Obter página aleatória da categoria: $1 $2.",
-       "randomincategory-selectcategory-submit": "Avançar",
        "randomredirect": "Redirecionamento aleatório",
        "randomredirect-nopages": "Não há redirecionamentos no espaço nominal \"$1\".",
        "statistics": "Estatísticas",
        "trackingcategories": "Categorias de rastreamento",
        "trackingcategories-summary": "Esta página lista categorias de monitoramento que são preenchidas automaticamente pelo software MediaWiki. Seus nomes podem ser alterados através da alteração das mensagens de sistema relevantes no namespace {{ns: 8}}.",
        "trackingcategories-msg": "Categoria de monitoramento",
+       "trackingcategories-name": "Nome da mensagem",
        "trackingcategories-desc": "Critérios de inclusão de categoria",
        "noindex-category-desc": "A página não é indexada por robôs, porque possui a palavra mágica <code><nowiki>__NOINDEX__</nowiki></code> e está em um namespace onde a flag é permitida.",
-       "post-expand-template-inclusion-category-desc": "Após expandir todos as predefinições, o tamanho da página é maior que o valor permitido na variável <code>$wgMaxArticleSize</code>, por isso algumas predefinições não foram expandidas.",
+       "post-expand-template-inclusion-category-desc": "O tamanho da página é superior a <code>$wgMaxArticleSize</code>, após a expansão de todas as predefinições, pelo que algumas predefinições não foram expandidas.",
        "trackingcategories-disabled": "A categoria está desabilitada",
        "mailnologin": "Nenhum endereço de envio",
        "mailnologintext": "Necessita de estar [[Special:UserLogin|autenticado]] e de possuir um endereço de e-mail válido nas suas [[Special:Preferences|preferências]] para poder enviar um e-mail a outros usuários.",
        "delete-edit-reasonlist": "Editar motivos de eliminação",
        "delete-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de tais páginas foi restrita, a fim de se evitarem problemas acidentais em {{SITENAME}}.",
        "delete-warning-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados de {{SITENAME}};\nprossiga com cuidado.",
-       "delete-cantedit": "Você não pode deletar essa paginá por que você não tem permissão de edita-la",
        "deleting-backlinks-warning": "'''Cuidado:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páginas]] se ligam ou redirecionam para a página que você está prestes a deletar.",
        "rollback": "Reverter edições",
        "rollback_short": "Reverter",
        "autoblockid": "Autobloqueio #$1",
        "block": "Bloquear usuário",
        "unblock": "Desbloquear usuário",
-       "blockip": "Bloquear usuário",
+       "blockip": "Bloquear {{GENDER:$1|utilizador|utilizadora}}",
        "blockip-legend": "Bloquear usuário",
        "blockiptext": "Utilize o formulário abaixo para bloquear o acesso à escrita de um endereço específico de IP ou nome de usuário.\nIsto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Preencha com um motivo específico a seguir (por exemplo, citando páginas que sofreram vandalismo).",
        "ipaddressorusername": "Endereço de IP ou nome de usuário:",
        "import": "Importar páginas",
        "importinterwiki": "Importação transwiki",
        "import-interwiki-text": "Selecione um wiki e um título de página para importar.\nAs datas das edições e os seus editores serão mantidos.\nTodas as ações de importação transwiki são registradas no [[Special:Log/import|Registro de importações]].",
-       "import-interwiki-source": "Wiki/página fonte:",
        "import-interwiki-history": "Copiar todas as edições para esta página",
        "import-interwiki-templates": "Incluir todas as predefinições",
        "import-interwiki-submit": "Importar",
        "version-license": "Licença do MediaWiki",
        "version-ext-license": "Licença",
        "version-ext-colheader-name": "Extensão",
+       "version-skin-colheader-name": "Skin",
        "version-ext-colheader-version": "Versão",
        "version-ext-colheader-license": "Licença",
        "version-ext-colheader-description": "Descrição",
        "htmlform-no": "Não",
        "htmlform-yes": "Sim",
        "htmlform-chosen-placeholder": "Selecione uma opção",
+       "htmlform-cloner-create": "Adicionar mais",
+       "htmlform-cloner-delete": "Remover",
        "htmlform-cloner-required": "Pelo menos um valor é requerido",
        "sqlite-has-fts": "$1 com suporte de pesquisa de texto completo",
        "sqlite-no-fts": "$1 sem suporte de pesquisa de texto completo",
        "expand_templates_generate_xml": "Mostrar árvore de análise (parse) do XML",
        "expand_templates_generate_rawhtml": "Mostrar HTML puro",
        "expand_templates_preview": "Pré-visualização",
+       "pagelang-name": "Página",
+       "pagelang-language": "Idioma",
+       "pagelang-use-default": "Idioma padrão de uso",
        "pagelang-select-lang": "Selecionar idioma",
        "right-pagelang": "Mudar idioma da página",
        "action-pagelang": "mudar idioma da página",
index be23b11..4bce31a 100644 (file)
        "sort-descending": "Ordenar por ordem descendente",
        "sort-ascending": "Ordenar por ordem ascendente",
        "nstab-main": "Página",
-       "nstab-user": "Página d{{GENDER:{{#titleparts:{{PAGENAME}}|1|1}}|o utilizador|a utilizadora|e utilizador(a)}}",
+       "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o utilizador|a utilizadora|e utilizador(a)}}",
        "nstab-media": "Multimédia",
        "nstab-special": "Página especial",
        "nstab-project": "Página de projeto",
        "randomincategory": "Página aleatória na categoria",
        "randomincategory-invalidcategory": "\"$1\" não é um nome de categoria válido",
        "randomincategory-nopages": "Não há páginas na categoria [[:Category:$1|$1]].",
-       "randomincategory-selectcategory": "Obter página aleatória da categoria: $1 $2",
-       "randomincategory-selectcategory-submit": "Ir",
+       "randomincategory-category": "Categoria:",
+       "randomincategory-legend": "Página aleatória na categoria",
        "randomredirect": "Redirecionamento aleatório",
        "randomredirect-nopages": "Não há redirecionamentos no domínio \"$1\".",
        "statistics": "Estatísticas",
        "exbeforeblank": "o conteúdo antes de esvaziar era: \"$1\"",
        "delete-confirm": "Eliminar \"$1\"",
        "delete-legend": "Eliminar",
-       "historywarning": "'''Aviso:''' A página que está prestes a eliminar tem um histórico com aproximadamente $1 {{PLURAL:$1|revisão|revisões}}:",
+       "historywarning": "<strong>Aviso:</strong> A página que está prestes a eliminar tem um histórico com aproximadamente $1 {{PLURAL:$1|revisão|revisões}}:",
        "confirmdeletetext": "Está prestes a eliminar permanentemente uma página ou uma imagem e todo o seu histórico.\nConfirme que é realmente esta a sua intenção, que compreende as consequências e que o faz de acordo com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]] do projeto, por favor.",
        "actioncomplete": "Operação executada",
        "actionfailed": "Operação falhou",
        "delete-edit-reasonlist": "Editar motivos de eliminação",
        "delete-toobig": "Esta página tem um histórico longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de páginas como esta foi restringida na {{SITENAME}}, para evitar problemas acidentais.",
        "delete-warning-toobig": "Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados da {{SITENAME}};\nprossiga com precaução.",
-       "delete-cantedit": "Não é possível eliminar esta página porque não possui os privilégios necessários para a editar.",
+       "deleteprotected": "Não é possível eliminar esta página porque foi protegida.",
        "deleting-backlinks-warning": "'''Aviso:''' Existem [[Special:WhatLinksHere/{{FULLPAGENAME}}|páginas]] que contêm ligações para a página que está prestes a eliminar ou que a transcluem.",
        "rollback": "Reverter edições",
        "rollback_short": "Reverter",
        "import": "Importar páginas",
        "importinterwiki": "Importação transwikis",
        "import-interwiki-text": "Selecione uma wiki e um título de página a importar.\nAs datas das edições e os seus editores serão mantidos.\nTodas as ações de importação transwikis são registadas no [[Special:Log/import|Registo de importações]].",
-       "import-interwiki-source": "Wiki ou página de origem:",
+       "import-interwiki-sourcewiki": "Wiki de origem:",
+       "import-interwiki-sourcepage": "Página de origem:",
        "import-interwiki-history": "Copiar todo o histórico de revisões desta página",
        "import-interwiki-templates": "Incluir todas as predefinições",
        "import-interwiki-submit": "Importar",
index e135277..d75b8cd 100644 (file)
        "october-date": "A date in the Gregorian month of October. $1 is the numerical date, for example \"23\".",
        "november-date": "A date in the Gregorian month of November. $1 is the numerical date, for example \"23\".\n{{Identical|November}}",
        "december-date": "A date in the Gregorian month of December. $1 is the numerical date, for example \"23\".",
-       "pagecategories": "Used in the categories section of pages.\n\nFollowed by a colon and a list of categories.\n\nParameters:\n* $1 - number of categories",
+       "pagecategories": "Used in the categories section of pages.\n\nFollowed by a colon and a list of categories.\n\nParameters:\n* $1 - number of categories\n{{Identical|Category}}",
        "pagecategorieslink": "{{notranslate}}",
        "category_header": "In category description page. Parameters:\n* $1 - category name\nSee also:\n* {{msg-mw|Category-media-header}}",
        "subcategories": "Used as a header on category pages that have subcategories.\n{{Identical|Subcategory}}",
        "hidetoc": "This is the link used to hide the table of contents\n\n{{Identical|Hide}}",
        "collapsible-collapse": "{{Doc-actionlink}}\nThis is the link used to collapse a collapsible element. (used as plaintext. No wikitext or html is parsed.)\n\nSee also:\n* {{msg-mw|Collapsible-expand}}\n{{Identical|Collapse}}",
        "collapsible-expand": "{{Doc-actionlink}}\nThis is the link used to expand a collapsible element (used as plaintext. No wikitext or html is parsed.)\n\nSee also:\n* {{msg-mw|Collapsible-collapse}}\n\nSee the following example:\n{{Identical|Expand}}",
-       "confirmable-confirm": "Question asking the user to confirm a potentially uncancellable action.\n\"Yes\" and \"No\" buttons are displayed beside it.\n\nSee also:\n* {{msg-mw|confirmable-yes}}\n* {{msg-mw|confirmable-no}}",
+       "confirmable-confirm": "Question asking the user to confirm a potentially uncancellable action.\n\"Yes\" and \"No\" buttons are displayed beside it.\n\nSee also:\n* {{msg-mw|confirmable-yes}}\n* {{msg-mw|confirmable-no}}\n{{Identical|Are you sure?}}",
        "confirmable-yes": "{{Doc-actionlink}}\nText of a button that will confirm triggering of a potentially uncancellable action.\n\nSee also:\n* {{msg-mw|confirmable-confirm}}\n* {{msg-mw|confirmable-no}}\n{{Identical|Yes}}",
        "confirmable-no": "{{Doc-actionlink}}\nText of a button that will cancel triggering of a potentially uncancellable action.\n\nSee also:\n* {{msg-mw|confirmable-confirm}}\n* {{msg-mw|confirmable-yes}}\n{{Identical|No}}",
        "thisisdeleted": "Message shown on a deleted page when the user has the undelete right. Parameters:\n* $1 - a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text\nSee also:\n* {{msg-mw|viewdeleted}}",
        "viewsource-title": "Page title shown when trying to edit a protected page. Parameters:\n* $1 - the name of the page",
        "actionthrottled": "This is the title of an error page. Read it in combination with {{msg-mw|actionthrottledtext}}.",
        "actionthrottledtext": "Used as error message. Read it in combination with {{msg-mw|actionthrottled}}.",
-       "protectedpagetext": "This message is displayed when trying to edit a page you can't edit because it has been protected.\n\nThe title for this message is {{msg-mw|Protectedpage}}.\n\nParameters:\n* $1 - (Unused) the raw name of the right which is needed to edit the page",
+       "protectedpagetext": "This message is displayed when trying to edit a page you can't edit because it has been protected.\n\nThe title for this message is {{msg-mw|Protectedpage}}.\n\nParameters:\n* $1 - (Unused) the raw name of the right which is needed to edit the page\n* $2 - (Unused) the action the user attempted to perform",
        "viewsourcetext": "The text shown when displaying the source of a page that the user has no permission to edit",
        "viewyourtext": "Same as {{msg-mw|viewsourcetext}} but when showing the text submitted by the user, this happens e.g. when the user was blocked while he is editing the page",
-       "protectedinterface": "Message shown if a user without the \"editinterface\" right tries to edit a page in the MediaWiki namespace.\n\nSee also {{msg-mw|editinginterface}}.",
+       "protectedinterface": "Message shown if a user without the \"editinterface\" right tries to edit a page in the MediaWiki namespace.\n\nSee also {{msg-mw|editinginterface}}. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "editinginterface": "A message shown when editing pages in the namespace MediaWiki:.\n\nSee also {{msg-mw|protectedinterface}}.",
-       "cascadeprotected": "Parameters:\n* $1 - number of cascade-protected pages, used for PLURAL\n* $2 - list of cascade-protected pages",
-       "namespaceprotected": "Parameters:\n* $1 - namespace name",
-       "customcssprotected": "Used as error message.",
-       "customjsprotected": "Used as error message.",
-       "mycustomcssprotected": "Used as error message.",
-       "mycustomjsprotected": "Used as error message.",
+       "cascadeprotected": "Parameters:\n* $1 - number of cascade-protected pages, used for PLURAL\n* $2 - list of cascade-protected pages\n* $3 - (Unused) the action the user attempted to perform",
+       "namespaceprotected": "Parameters:\n* $1 - namespace name\n* $2 - (Unused) the action the user attempted to perform",
+       "customcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+       "customjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+       "mycustomcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+       "mycustomjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
        "myprivateinfoprotected": "Used as error message.",
        "mypreferencesprotected": "Used as error message.",
        "ns-specialprotected": "Error message displayed when trying to edit a page in the Special namespace",
        "session_fail_preview_html": "Used as error message in Preview page.",
        "token_suffix_mismatch": "Error message in Preview page.\n\nSee also:\n* {{msg-mw|Token suffix mismatch}}\n* {{msg-mw|Session fail preview}}\n* {{msg-mw|Edit form incomplete}}",
        "edit_form_incomplete": "Error message in Preview page.\n\nSee also:\n* {{msg-mw|Token suffix mismatch}}\n* {{msg-mw|Session fail preview}}\n* {{msg-mw|Edit form incomplete}}",
-       "editing": "Shown as page title when editing a page. Parameters:\n* $1 - the name of the page that is being edited. e.g. \"Editing Main Page\"\n{{Related|Editing}}",
-       "creating": "Shown as page title when creating a page. Parameters:\n* $1 - the name of the page that is being created. Example: \"Creating Main Page\".\n{{Related|Editing}}",
+       "editing": "Shown as page title when editing a page. Parameters:\n* $1 - the name of the page that is being edited. e.g. \"Editing Main Page\"\n{{Related|Editing}}\n{{Identical|Editing}}",
+       "creating": "Shown as page title when creating a page. Parameters:\n* $1 - the name of the page that is being created. Example: \"Creating Main Page\".\n{{Related|Editing}}\n{{Identical|Creating}}",
        "editingsection": "This message displays at the top of the page when a user is editing a page section. Parameters:\n* $1 - page name\n{{Related|Editing}}",
        "editingcomment": "This message displays at the top of the page when a user is creating a new section. Parameters:\n* $1 - page name\n{{Related|Editing}}",
        "editconflict": "Used as title of error message. Parameters:\n* $1 - page title",
        "preferences": "Title of the [[Special:Preferences]] page.\n{{Identical|Preferences}}",
        "preferences-summary": "{{doc-specialpagesummary|preferences}}",
        "mypreferences": "Action link label that leads to [[Special:Preferences]]; appears in the top menu (e.g. \"Username Talk Preferences Watchlist Contributions Log out\").\n\nSee also:\n* {{msg-mw|Mypreferences}}\n* {{msg-mw|Accesskey-pt-preferences}}\n* {{msg-mw|Tooltip-pt-preferences}}\n{{Identical|Preferences}}",
-       "prefs-edits": "In user preferences.",
+       "prefs-edits": "In user preferences.\n{{Identical|Number of edits}}",
        "prefsnologintext2": "Showed on Special:Userlogin when user tries to access their preferences before logging in",
        "prefs-skin": "Used in user preferences.\n{{Identical|Skin}}",
        "skin-preview": "{{doc-actionlink}}\nThe link beside each skin name in [[Special:Preferences|your user preferences]], tab \"skin\".\n{{Identical|Preview}}",
        "timezoneregion-pacific": "Used in \"Time zone\" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], \"date and time\" tab.\n{{Related|Timezoneregion}}",
        "allowemail": "Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.",
        "prefs-searchoptions": "{{Identical|Search}}",
-       "prefs-namespaces": "Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]\n{{Identical|Namespaces}}",
+       "prefs-namespaces": "Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]\n{{Identical|Namespace}}",
        "default": "{{Identical|Default}}",
        "prefs-files": "Title of a tab in [[Special:Preferences]].\n{{Identical|File}}",
        "prefs-custom-css": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom CSS}}",
        "prefs-custom-js": "visible on [[Special:Preferences]] -[Skins].\n{{Identical|Custom JavaScript}}",
-       "prefs-common-css-js": "Used as label in [[Special:Preferences#mw-prefsection-rendering|preferences]], tab \"Appearance\", section \"Skin\".",
+       "prefs-common-css-js": "Used as label in [[Special:Preferences#mw-prefsection-rendering|preferences]], tab \"Appearance\", section \"Skin\".\n\nSee also:\n* {{msg-mw|Globalcssjs-custom-css-js}}",
        "prefs-reset-intro": "Used in [[Special:Preferences/reset]].",
        "prefs-emailconfirm-label": "Sub-heading in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.",
        "youremail": "Label of the e-mail text box of the \"E-mail options\" section of [[Special:Preferences]].\nAlso used on create account form.\n\n{{Identical|E-mail}}",
        "randompage": "{{doc-special|RandomPage}}\nSee also:\n* {{msg-mw|Randompage}}\n* {{msg-mw|Accesskey-n-randompage}}\n* {{msg-mw|Tooltip-n-randompage}}\n{{Identical|Random page}}",
        "randompage-nopages": "Parameters:\n* $1 - list of namespaces\n* $2 - number of namespaces, for PLURAL support\nSee also:\n* {{msg-mw|Randomredirect-nopages}}",
        "randompage-url": "{{notranslate}}",
-       "randomincategory": "{{doc-special|RandomInCategory}}",
+       "randomincategory": "{{doc-special|RandomInCategory}}\n{{Identical|Random page in category}}",
        "randomincategory-invalidcategory": "Message shown if an invalid category is specified.\n\nParameters:\n* $1 - the invalid category name given\n\n(Note, if the category is simply empty, but could possibly exist, {{msg-mw|randomincategory-nopages}} is shown instead)",
        "randomincategory-nopages": "Message shown from [[Special:RandomInCategory]] if the category is empty.\n\nParameters:\n* $1 - the category name (without the namespace prefix)",
-       "randomincategory-selectcategory": "Shown on [[Special:RandomInCategory]] if no category is selected.\n\nDisplays a form allowing the user to input a category name.\n\nParameters:\n* $1 - the text field input box\n* $2 - the go button which has the label {{msg-mw|randomincategory-selectcategory-submit}}.",
-       "randomincategory-selectcategory-submit": "Used as label for the Submit button which is used as <code>$2</code> in {{msg-mw|Randomincategory-selectcategory}}.\n{{Identical|Go}}",
+       "randomincategory-category": "Shown on [[Special:RandomInCategory]] as a label for a text box allowing the user to input a category name.\n{{Identical|Category}}",
+       "randomincategory-legend": "Used as fieldset label for the form on [[Special:RandomInCategory]].",
        "randomredirect": "{{doc-special|RandomRedirect}}",
        "randomredirect-nopages": "Parameters:\n* $1 - list of namespaces\n* $2 - (Unused) number of namespaces\nSee also:\n* {{msg-mw|Randompage-nopages}}",
        "statistics": "{{doc-special|Statistics}}\n{{Identical|Statistics}}",
        "exbeforeblank": "Automated deletion reason when deleting a page for admins providing that the page was blanked before deletion.\n\nParameters:\n* $1 - content before blanking",
        "delete-confirm": "Used as page title. Parameters:\n* $1 - the page title\n{{Identical|Delete}}",
        "delete-legend": "{{Identical|Delete}}",
-       "historywarning": "Warning when about to delete a page that has history.\n\nFollowed by a link which points to the history page.\n\nParameters:\n* $1 - the <b>approximate</b> number of revisions that the page has, the message should not claim to give an exact count",
+       "historywarning": "Warning when about to delete a page that has history.\n\nFollowed by a link which points to the history page.\n\nParameters:\n* $1 - the number of revisions that the page has",
        "confirmdeletetext": "Introduction shown when deleting a page.\n\nRefers to {{msg-mw|Policy-url}}.",
        "actioncomplete": "Used in several situations, for example when a page has been deleted.\n\nSee also:\n* {{msg-mw|Actionfailed|page title}}",
        "actionfailed": "Used as page title when the submit operation failed, in [[Special:RevisionDelete]].\n\nSee also:\n* {{msg-mw|Actioncomplete|page title}}",
        "delete-edit-reasonlist": "Shown beneath the page deletion form on the right side. It is a link to {{msg-mw|Deletereason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Ipb-edit-dropdown}}\n* {{msg-mw|Protect-edit-reasonlist}}.\n{{Identical|Edit delete reasons}}",
        "delete-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-warning-toobig}}",
        "delete-warning-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-toobig}}",
-       "delete-cantedit": "Used as error message when deleting the page.",
+       "deleteprotected": "Used as error message when deleting the page.\n\n\"If protection keeps them from editing, they shouldn't be able to delete.\"",
        "deleting-backlinks-warning": "A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.",
        "rollback": "{{Identical|Rollback}}",
        "rollback_short": "{{Identical|Rollback}}",
        "protect-summary-cascade": "Used in edit summary when cascade protecting a page. Appears in protection log. See [[Special:Log]] and [[m:Special:Log]].\n\nAlso used in [[Special:ProtectedPages]] when a page is cascade protected. See example: [[m:Special:ProtectedPages]].<br />\nSee also:\n*{{msg-mw|Restriction-level-sysop}}\n*{{msg-mw|Restriction-level-autoconfirmed}}",
        "protect-expiring": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n* $1 - a date and time\n* $2 - a date (optional)\n* $3 - a time (optional)\nIf the expiry is indefinite, {{msg-mw|protect-expiry-indefinite}} is used.\n{{Identical|Expires $1 (UTC)}}",
        "protect-expiring-local": "Parameter:\n* $1 - a timestamp like \"22:51, 23 July 2011 (UTC)\" depending on the wiki content language.\n{{Identical|Expire}}",
-       "protect-expiry-indefinite": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n\nIf the expiry is definite, {{msg-mw|protect-expiring}} is used.",
+       "protect-expiry-indefinite": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n\nIf the expiry is definite, {{msg-mw|protect-expiring}} is used.\n{{Identical|Indefinite}}",
        "protect-cascade": "See [[meta:Protect]] for more information.",
        "protect-cantedit": "Used as error message when changing the protection levels of the page.",
        "protect-othertime": "Used on the page protection form as label for the following input field (text)\n{{Identical|Other time}}",
        "sp-contributions-suppresslog": "Used as a display name for a link to log entries of suppressed edits made by that user.\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also {{msg-mw|sp-contributions-deleted}}, {{msg-mw|sp-deletedcontributions-contribs}}, {{msg-mw|contributions}}, {{msg-mw|deletedcontributions-title}}.",
        "sp-contributions-deleted": "This is a link anchor used in [[Special:Contributions]]/''name'', when user viewing the page has the right to delete pages, or to restore deleted pages.\n\nUsed as link title in [[Special:Contributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-userrights}}",
        "sp-contributions-uploads": "Used as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}\n{{Identical|Upload}}",
-       "sp-contributions-logs": "Appears as an action link in the header of the Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}",
+       "sp-contributions-logs": "Appears as an action link in the header of the Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-deleted}}\n* {{msg-mw|Sp-contributions-userrights}}\n{{Identical|Log}}",
        "sp-contributions-talk": "This is a link anchor used in the [[Special:Contributions]]/''usernamename'' pages.\nThe link appears in a list of similar ones separated by {{msg-mw|pipe-separator}}, e.g. like this:<br />\n( talk | block log | logs | deleted contributions | rights management )\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|change-blocklink}}\n* {{msg-mw|unblocklink}}\n* {{msg-mw|blocklink}}\n* {{msg-mw|sp-contributions-blocklog}}\n* {{msg-mw|sp-contributions-uploads}}\n* {{msg-mw|sp-contributions-logs}}\n* {{msg-mw|sp-contributions-deleted}}\n* {{msg-mw|sp-contributions-userrights}}\n{{Identical|Talk}}",
        "sp-contributions-userrights": "This is a link anchor used in [[Special:Contributions]]/''name'', if the user viewing the page has the right to set or alter user rights.\n\nUsed as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].\n\nSee also:\n* {{msg-mw|Sp-contributions-talk}}\n* {{msg-mw|Change-blocklink}}\n* {{msg-mw|Unblocklink}}\n* {{msg-mw|Blocklink}}\n* {{msg-mw|Sp-contributions-blocklog}}\n* {{msg-mw|Sp-contributions-uploads}}\n* {{msg-mw|Sp-contributions-logs}}\n* {{msg-mw|Sp-contributions-deleted}}",
        "sp-contributions-blocked-notice": "Shown on top of contributions special page of currently blocked users.\n\nParameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER\nAnon version:\n* {{msg-mw|Sp-contributions-blocked-notice-anon}}",
        "whatlinkshere-prev": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the first argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Prevn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-next}}\n{{Identical|Previous}}",
        "whatlinkshere-next": "This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the second argument of {{msg-mw|Viewprevnext}}.\n\nParameters:\n* $1 - the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.\nSpecial pages use {{msg-mw|Nextn}} instead (still as an argument to {{msg-mw|Viewprevnext}}).\n\nSee also:\n* {{msg-mw|Whatlinkshere-prev}}\n{{Identical|Next}}",
        "whatlinkshere-links": "Used on [[Special:WhatLinksHere]]. It is a link to the WhatLinksHere page of that page.\n\nExample line:\n* [[Main Page]] ([[Special:WhatLinksHere/Main Page|{{int:whatlinkshere-links}}]])\n{{Identical|Link}}",
-       "whatlinkshere-hideredirs": "Filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}",
-       "whatlinkshere-hidetrans": "First filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}",
-       "whatlinkshere-hidelinks": "Filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}",
+       "whatlinkshere-hideredirs": "Filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}\n{{Identical|Redirect}}",
+       "whatlinkshere-hidetrans": "First filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}\n{{Identical|Transclusion}}",
+       "whatlinkshere-hidelinks": "Filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}\n{{Identical|Link}}",
        "whatlinkshere-hideimages": "Filter option in [[Special:WhatLinksHere]]. Parameters:\n* $1 - the {{msg-mw|Hide}} or {{msg-mw|Show}}\n\nSee also:\n*{{msg-mw|Isimage}}\n*{{msg-mw|Media tip}}",
        "whatlinkshere-filters": "{{Identical|Filter}}",
        "autoblockid": "Used as name of autoblock, instead of autoblocked IPs. Parameters:\n* $1 - autoblock ID",
        "block": "{{doc-special|Block}}\n{{Identical|Block user}}",
        "unblock": "{{doc-special|Unblock}}",
        "unblock-summary": "{{doc-specialpagesummary|unblock}}",
-       "blockip": "Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. \"Username\" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.\n\n{{Identical|Block user}}",
+       "blockip": "Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. \"Username\" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.\n\nParameters:\n* $1 - username, for GENDER support\n{{Identical|Block user}}",
        "blockip-legend": "Legend/Header for the fieldset around the input form of [[Special:Block]].\n\n{{Identical|Block user}}",
        "blockiptext": "Used in the {{msg-mw|Blockip}} form in [[Special:Block]].\n\nRefers to {{msg-mw|Policy-url}}.\n\nThis message may follow the message {{msg-mw|Ipb-otherblocks-header}} and other block messages.\n\nSee also:\n* {{msg-mw|Unblockiptext}}",
        "ipaddressorusername": "{{Identical|IP address or username}}",
        "ipb-confirmhideuser": "Used as confirmation message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Ipb-blockingself}}",
        "ipb-confirmaction": "Confirmation message displayed to users asking them to think again before really blocking someone.",
        "ipb-edit-dropdown": "Shown beneath the user block form on the right side. It is a link to {{msg-mw|Ipbreason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Delete-edit-reasonlist}}\n* {{msg-mw|Protect-edit-reasonlist}}",
-       "ipb-unblock-addr": "Used as page title in [[Special:Block]], if the target user is specified.\n\nParameters:\n* $1 - target username\n\nSee also:\n* {{msg-mw|Ipb-unblock}}",
+       "ipb-unblock-addr": "Used as page title in [[Special:Block]], if the target user is specified.\n\nParameters:\n* $1 - target username\n\nSee also:\n* {{msg-mw|Ipb-unblock}}\n{{Identical|Unblock}}",
        "ipb-unblock": "Used as page title in [[Special:Block]], if the target user is not specified.\n\nSee also:\n* {{msg-mw|Ipb-unblock-addr}}",
        "ipb-blocklist": "Used as link text in [[Special:Block]].\n\nThe link points to Specil:BlockList.",
        "ipb-blocklist-contribs": "Used in [[Special:Block]].\n* $1 - target username",
        "blocklist-addressblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
        "blocklist-rangeblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n\nFor an explanation of \"range blocks\", see [[mw:Help:Range_blocks]]\n{{Related|Blocklist-blocks}}",
        "blocklist-timestamp": "This is a column header for dates and times in the table on the page [[Special:BlockList]].\n{{Identical|Timestamp}}",
-       "blocklist-target": "The table header for the column containing the block targets, that is user names or IP-addresses linked to their respective user pages, in the table on the page [[Special:BlockList]].",
+       "blocklist-target": "The table header for the column containing the block targets, that is user names or IP-addresses linked to their respective user pages, in the table on the page [[Special:BlockList]].\n{{Identical|Target}}",
        "blocklist-expiry": "This is a column header in the table on the page [[Special:BlockList]].\n{{Identical|Expire}}",
        "blocklist-by": "This is a column header in the table on the page [[Special:BlockList]].",
        "blocklist-params": "This is a column header in the table on the page [[Special:BlockList]].",
        "import-summary": "{{doc-specialpagesummary|import}}",
        "importinterwiki": "Used as legend for the Import form in [[Special:Import]].",
        "import-interwiki-text": "Used as summary for the Import form in [[Special:Import]].",
-       "import-interwiki-source": "Used as label for input box in [[Special:Import]].",
+       "import-interwiki-sourcewiki": "Used as label for dropdown box in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-sourcepage}}",
+       "import-interwiki-sourcepage": "Used as label for input box in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-sourcewiki}}",
        "import-interwiki-history": "This is an option on [[Special:Import]]. Usually, when unchecked, only the first version of a page is imported. When you check the option, all versions are imported. This is important often to check for licensing reasons.\n\nSee also:\n* {{msg-mw|Import-interwiki-templates}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n* {{msg-mw|Import-interwiki-submit}}",
        "import-interwiki-templates": "Used as label for the checkbox in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-history}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n* {{msg-mw|Import-interwiki-submit}}",
        "import-interwiki-submit": "Used as Submit button text in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-history}}\n* {{msg-mw|Import-interwiki-templates}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n{{Identical|Import}}",
        "pageinfo-protect-cascading-yes": "Yes, protections are cascading from here\n*{{msg-mw|Pageinfo-protect-cascading}}\n*{{msg-mw|Pageinfo-protect-cascading-yes}}\n{{Identical|Yes}}",
        "pageinfo-protect-cascading-from": "Key for a list of pages where protections are cascading from",
        "pageinfo-category-info": "Showed on the page displaying information about the current page (add \"?action=info\" to the URL)",
-       "pageinfo-category-pages": "See also:\n* {{msg-mw|Pageinfo-category-subcats}}\n* {{msg-mw|Pageinfo-category-files}}",
+       "pageinfo-category-pages": "See also:\n* {{msg-mw|Pageinfo-category-subcats}}\n* {{msg-mw|Pageinfo-category-files}}\n{{Identical|Number of pages}}",
        "pageinfo-category-subcats": "See also:\n* {{msg-mw|Pageinfo-category-pages}}\n* {{msg-mw|Pageinfo-category-files}}",
        "pageinfo-category-files": "See also:\n* {{msg-mw|Pageinfo-category-pages}}\n* {{msg-mw|Pageinfo-category-subcats}}",
        "markaspatrolleddiff": "{{doc-actionlink}}\nSee also:\n* {{msg-mw|Markaspatrolledtext}}\n{{Identical|Mark as patrolled}}",
        "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)",
        "default-skin-not-found": "Message shown when the default skin for this MediaWiki installation can not be found.\n\nParameters:\n* $1: skin identifier for the default skin\n* $2: list of installed skins, composed using {{msg-mw|default-skin-not-found-row-enabled}} and {{msg-mw|default-skin-not-found-row-disabled}}\n* $3: code snippet to use to enable installed skins",
        "default-skin-not-found-no-skins": "Message shown when the default skin for this MediaWiki installation can not be found and the installation has no skins at all.\n\nParameters:\n* $1: name of the default skin",
-       "default-skin-not-found-row-enabled": "One row of the list of installed skins shown as a part of {{msg-mw|default-skin-not-found}}, for an enabled skin.\n\nParameters:\n* $1: skin identifier\n$2: human-readable skin name",
-       "default-skin-not-found-row-disabled": "One row of the list of installed skins shown as a part of {{msg-mw|default-skin-not-found}}, for a disabled skin.\n\nParameters:\n* $1: skin identifier\n$2: human-readable skin name"
+       "default-skin-not-found-row-enabled": "One row of the list of installed skins shown as a part of the following message (for an enabled skin):\n* {{msg-mw|default-skin-not-found}}\n----\nParameters:\n* $1 - skin identifier\n* $2 - human-readable skin name\nSee also:\n* {{msg-mw|Default-skin-not-found-row-disabled}}",
+       "default-skin-not-found-row-disabled": "One row of the list of installed skins shown as a part of the following message (for a disabled skin):\n* {{msg-mw|default-skin-not-found}}\n----\nParameters:\n* $1 - skin identifier\n* $2 - human-readable skin name\nSee also:\n* {{msg-mw|Default-skin-not-found-row-enabled}}"
 }
index e219034..b55a995 100644 (file)
        "searchprofile-advanced-tooltip": "Akllasqa suti k'itikunapi maskay",
        "search-result-size": "$1 ({{PLURAL:$2|1 rima|$2 rimakuna}})",
        "search-result-category-size": "{{PLURAL:$1|1 wankurisqa|$1 wankurisqa}} ({{PLURAL:$2|1 urin katiguriya|$2 urin katiguriya}}, {{PLURAL:$3|1 willañiqi|$3 willañiqi}})",
-       "search-result-score": "Chaniyuq kaynin: $1%",
        "search-redirect": "(pusapuna $1)",
        "search-section": "(raki $1)",
        "search-file-match": "(willañiqip samiqninta taripan)",
        "uploadwarning": "Willañiqi churkuymanta paqtataq niy",
        "uploadwarning-text": "Ama hina kaspa, kay qatiqpi kaq willañiqimanta willaykunata hukchaspa musuqmanta ruraykachay.",
        "savefile": "Willañiqita waqaychay",
-       "uploadedimage": "«[[$1]]» churkusqa.",
-       "overwroteimage": "\"[[$1]]\" musuqmanta churkusqa",
        "uploaddisabled": "Willañiqi churkuyman ama nisqa",
        "copyuploaddisabled": "URL-pa churkunanqa manam atinchu.",
        "uploaddisabledtext": "Willañiqi churkuyqa manam saqillasqachu.",
        "watchlist-details": "Watiqana sutisuyuykipiqa {{PLURAL:$1|$1 p'anqam|$1 p'anqakunam}}, rimanakuna p'anqakunata mana yupaspa.",
        "wlheader-enotif": "E-chaskimanta musyachinaman arí nisqañam.",
        "wlheader-showupdated": "Qayna watukamusqaykimantapacha hukchasqa p'anqakunataqa '''yanasapa''' nisqapim rikunki.",
+       "wlnote": "Kay qatiqpiqa {{PLURAL:$1|qhipaq hukchasqam|'''$1''' qhipaq hukchasqakunam}} qhipaq {{PLURAL:$2|urapim|'''$2''' urakunapim}}, musuqchasqa $3, $4.",
        "wlshowlast": "$1 ura, $2 p'unchaw $3-mantapacha hukchasqakunata rikuchiy",
        "watchlist-options": "Watiqana sutisuyupaq allinkachinakuna",
        "watching": "Watiqasqakunaman yapaspa...",
index 337f61e..6c78c09 100644 (file)
        "talkpagelinktext": "Rimanakuy",
        "specialpage": "Mana shukkunashina panka",
        "personaltools": "Kikinpak llankanaman yanapanakuna",
-       "postcomment": "Mushuk raki",
        "articlepage": "Pankata rikuna",
        "talk": "Rimanakuna",
        "views": "Rikunakuna",
        "remembermypassword": "Kay Internet-wampunapi {{PLURAL:$1|shuk punchata|$1 punchakunata}} ñuka rurak shutiwan yaykushkami katichiwapay.",
        "login": "Yaykuna",
        "nav-login-createaccount": "Yaykuna",
-       "loginprompt": "{{SITENAME}}man yaykunkapak <i>cookies</i>-man ari ninami kapanki.",
        "userlogin": "Yaykuna",
        "logout": "Llukshina",
        "userlogout": "Llukshina",
        "upload": "Archivuta apamuna",
        "uploadlogpage": "Apamushka archiwukunapa kamu",
        "filedesc": "Uchilla rimay",
-       "uploadedimage": "«[[$1]]» apakushka.",
        "license": "Licencia:",
        "license-header": "Licencia",
        "file-anchor-link": "Archiwu",
index 7b001f2..3e6c421 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "Reedy",
-                       "Sentruper"
+                       "Sentruper",
+                       "아라"
                ]
        },
        "tog-underline": "Link cun la sotliniadura",
@@ -15,7 +16,6 @@
        "tog-showtoolbar": "Fam avdé la bara d'j strumént (u j vó JavaScript)",
        "tog-editondblclick": "Mudèfiga al pàgin scjazènd do volt (u j vò JavaScript)",
        "tog-editsectiononrightclick": "S't'vù l'abilitaziòn ad cambié al seziòn <br />scjazénd e tast a dèstra sora e titul (u j vò JavaScript)",
-       "tog-rememberpassword": "Arcurdam la parola d'ordin, par piasé (fèn a un masum $1 {{PLURAL:$1|dè|dè}})",
        "tog-watchcreations": "Mett insèn al pàgin ch't'e' fat adès, intla lèsta da tní sot'occ",
        "tog-watchdefault": "Mett insèn al pàgin ch'a j ò lavurè sora int la lèsta dal pàgin da tnì sot'òcc",
        "tog-watchmoves": "Mett insèn al pàgin ch'a j ò spustè int la lèsta dal pàgin da tnì sot'òcc",
        "qbmyoptions": "Al mi pàgin",
        "faq": "Question frequenti",
        "faqpage": "Prugèt:Question frequenti",
-       "vector-action-addsection": "Zonta una cjacarèda",
-       "vector-action-delete": "Scanzèla",
-       "vector-action-move": "Chèmbia nòm",
-       "vector-action-protect": "Metti-j una pruteziò",
-       "vector-action-undelete": "Armett a post",
-       "vector-action-unprotect": "Sbloca",
        "errorpagetitle": "Oci! T'ê fat una capèla",
        "returnto": "Torna indrì a $1.",
        "tagline": "Da {{SITENAME}}",
        "search-interwiki-more": "(ad piò)",
        "powersearch-legend": "Scandaja a fònd",
        "powersearch-ns": "Zerca int'j spàzi d'nom:",
-       "powersearch-redir": "Fà una lèsta d'al ri-direziòn",
        "preferences": "I mì gost",
        "mypreferences": "I mi gòst",
        "group-sysop": "Aministradór",
        "recentchanges": "I ultum cambiamént",
        "recentchanges-legend": "Upziòn d'j ultum cambiamént",
        "recentchanges-feed-description": "Ste canël e' fa avdè i cambiamént piò rezent aj artècul d'sta wiki.",
-       "rclistfrom": "Fam avdè i cambiamént növ a cminzipiè da $1",
+       "rclistfrom": "Fam avdè i cambiamént növ a cminzipiè da $3 $2",
        "rcshowhideminor": "$1 al mudèfghi znini",
        "rcshowhidebots": "$1 i bot",
        "rcshowhideliu": "$1 i patàca registrè",
        "recentchangeslinked-to": "Fam avdé sol i cambiamént al pàgin ch'j va impèt a quèla ch'la m'interèsa a me.",
        "upload": "Carga so un file",
        "uploadlogpage": "Regèstar d'j file carghé",
-       "uploadedimage": "l'à carghé \"[[$1]]\"",
        "filehist": "Stória d'e' file",
        "filehist-help": "Fà clic sora un gròp dèda/ora par avdé cun cl'éra e' file in ch'ë mumént.",
        "filehist-current": "d'adès",
        "booksources-go": "Và pu",
        "log": "Regèstar",
        "allpages": "Tot al pàgin",
-       "alphaindexline": "Da $1 a $2",
        "prevpage": "Pàgina prèma d'questa ($1)",
        "allpagesfrom": "Fam avdè al pàgin cminzipiènd da:",
        "allpagesto": "Fam avdé al pàgin infèn a:",
index 26c258a..98f2951 100644 (file)
@@ -7,7 +7,8 @@
                        "Jose77",
                        "Mmistmurt",
                        "MoubarikBelkasim",
-                       "Urhixidur"
+                       "Urhixidur",
+                       "아라"
                ]
        },
        "sunday": "Asamas (Eřḥedd)",
        "navigation": "Tagriwa",
        "qbfind": "Af",
        "qbedit": "Ẓṛeg",
-       "vector-action-move": "Smuṭṭi",
-       "vector-view-create": "Seɣnu",
-       "vector-view-edit": "Ẓṛeg",
-       "vector-view-history": "Ẓeṛ amezruy",
-       "vector-view-view": "Ɣeṛ",
        "actions": "Timegga",
        "errorpagetitle": "Anezri",
        "returnto": "Dwl ghar $1.",
        "remembermypassword": "ejj (login) inu deg uselkim a (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "login": "Adf",
        "nav-login-createaccount": "Adef / egg amiḍan",
-       "loginprompt": "itxessa ad-teṭfed (''cookies'') bac ad tadfed ɣar {{SITENAME}}.",
        "userlogin": "Adf / egg amiḍan",
        "logout": "Ufugh",
        "userlogout": "Ufugh",
        "viewprevnext": "Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)",
        "searchprofile-everything": "Marra",
        "searchprofile-articles-tooltip": "Rzu di $1",
-       "searchprofile-project-tooltip": "Rzu di $1",
        "search-result-size": "$1 ({{PLURAL:$2|1 tawalt|$2 tiwalin}})",
        "search-redirect": "(awi $1)",
        "search-suggest": "Ttugha txsd a tinid: $1",
        "recentchanges": "Tiẓṛigin tineggura",
        "recentchanges-feed-description": "Bbar tiẓṛigin timayutin n wiki deg usudem(feed) a .",
        "rcnotefrom": "ɣar wadday d tiẓṛigin zi '''$2''' (ar '''$1''' ).",
-       "rclistfrom": "Ẓar tiẓṛigin timaynutin ig ibeddan zi $1",
+       "rclistfrom": "Ẓar tiẓṛigin timaynutin ig ibeddan zi $3 $2",
        "rcshowhideminor": "$1 tiẓṛigin d-timeẓyanin",
        "rcshowhidebots": "$1 iroboten(robots)",
        "rcshowhideliu": "$1 users ig yudeffen",
        "uploadlogpage": "Zdem-d aɣmis",
        "filedesc": "Asgbr",
        "fileuploadsummary": "Asgbr:",
-       "uploadedimage": "itwazdem-d \"[[$1]]\"",
        "watchthisupload": "Xm tasbtirt a",
        "listfiles": "Tabdart n ifayluten",
        "file-anchor-link": "Afaylu",
        "log": "Aɣmis",
        "all-logs-page": "Maṛṛa iɣmisen",
        "allpages": "Marra tasniwin",
-       "alphaindexline": "$1 ɣa $2",
        "nextpage": "Tasna zzat ($1)",
        "prevpage": "Tasna zzat ($1)",
        "allpagesfrom": "Scan-d Tasniwin beddant zi:",
index e9b0e3d..65c753c 100644 (file)
        "category-empty": "''Questa categoria cuntegna actualmain nagins artitgels e naginas datotecas.''",
        "hidden-categories": "{{PLURAL:$1|Categoria zuppentada|Categorias zuppentadas}}",
        "hidden-category-category": "Categorias zuppentadas",
-       "category-subcat-count": "{{PLURAL:$2|Questa categoria cuntegna be suandanta sutcategoria.|Questa categoria cuntegna {{PLURAL:$1|la suandanta sutcategoria|las $1 suandantas sutcategorias}} da totalmain $2 sutcategoria.}}",
+       "category-subcat-count": "{{PLURAL:$2|Questa categoria cuntegna be suandanta sutcategoria.|Questa categoria cuntegna {{PLURAL:$1|la suandanta sutcategoria|las $1 suandantas sutcategorias}} da totalmain $2 sutcategorias.}}",
        "category-subcat-count-limited": "Questa categoria cuntegna {{PLURAL:$1|suandanta subcategoria|suandantas $1 subcategorias}}:",
        "category-article-count": "{{PLURAL:$2|Questa categoria cuntegna be la suandanta pagina.|{{PLURAL:$1|La suandanta pagina è|Las $1 suandantas paginas èn}} en questa categoria che cuntegna totalmain $2 paginas.}}",
        "category-article-count-limited": "{{PLURAL:$1|La suandanta pagina è|Las suandantas $1 paginas èn}} actualmain en la categoria.",
        "talkpagelinktext": "Discussiun",
        "specialpage": "Pagina speziala",
        "personaltools": "Utensils persunals",
-       "postcomment": "Nova secziun",
        "articlepage": "Mussar la pagina da cuntegn",
        "talk": "Discussiun",
        "views": "Questa pagina",
        "externaldberror": "U ch'i è capità ina errur cun l'autentificaziun externa u che ti na dastgas betg actualisar tes conto extern.",
        "login": "T'annunziar",
        "nav-login-createaccount": "T'annunziar / crear in conto",
-       "loginprompt": "Ti stos avair '''activà ils cookies''' per pudair t'annunziar tar {{SITENAME}}.",
        "userlogin": "T'annunziar / crear in conto",
        "userloginnocreate": "T'annunziar",
        "logout": "Sortir",
        "searchprofile-advanced-tooltip": "Tschertgar en ulteriurs tips da pagina",
        "search-result-size": "$1 ({{PLURAL:$2|in pled|$2 pleds}})",
        "search-result-category-size": "{{PLURAL:$1|1 commember|$1 commembers}} ({{PLURAL:$2|1 sutcategoria|$2 sutcategorias}}, {{PLURAL:$3|1 datoteca|$3 datotecas}})",
-       "search-result-score": "Relevanza: $1 %",
        "search-redirect": "(renvià da $1)",
        "search-section": "(chapitel $1)",
        "search-suggest": "Has ti manegià: $1",
        "uploadwarning": "Attenziun",
        "uploadwarning-text": "Mida per plaschair la descripziun da la datoteca sutvart ed emprova danovamain.",
        "savefile": "Memorisar la datoteca",
-       "uploadedimage": "\"[[$1]]\" è vengì chargià si",
-       "overwroteimage": "ha chargià si ina nova versiun da \"[[$1]]\"",
        "uploaddisabled": "Chargiar si è deactivà.",
        "copyuploaddisabled": "Il transferir per URL è deactivà.",
        "uploaddisabledtext": "La funcziun da chargiar si datotecas è deactivada.",
        "watchlist-details": "Ti has {{PLURAL:$1|$1 pagina|$1 paginas}} sin tia glista d'observaziun, paginas da discussiun exclusas.",
        "wlheader-enotif": "Il servetsch d'infurmaziun per e-mail è activà.",
        "wlheader-showupdated": "Paginas ch'èn vegnidas modifitgadas suenter che ti has vis els la davosa giada èn mussads '''grass'''",
+       "wlnote": "Sutvart {{PLURAL:$1|è l'ultima midada|èn las ultimas '''$1''' midadas}} entaifer {{PLURAL:$2|l'ultima ura|las ultimas '''$2''' uras}}. Actualisà ils $3 las $4.",
        "wlshowlast": "Mussar: las ultimas $1 uras, ils ultims $2 dis u $3.",
        "watchlist-options": "Opziuns per la glista d'observaziun",
        "watching": "observ...",
        "import": "Impurtar paginas",
        "importinterwiki": "Import transwiki",
        "import-interwiki-text": "Tscherna in wiki ed in titel da pagina per importar.\nLas datas da las versiuns ed ils nums dals contribuents vegnan mantegnids.\nTut ils imports transwiki vegnan registrads en il [[Special:Log/import|protocol d'imports]].",
-       "import-interwiki-source": "Wiki/pagina da funtauna:",
        "import-interwiki-history": "Copiar l'entira cronologia da questa pagina",
        "import-interwiki-templates": "Includer tut ils models",
        "import-interwiki-submit": "Importar",
        "duplicate-defaultsort": "'''Attenziun:''' La clav da zavrar da standard \"$2\" remplazza la clav da zavrar da standard veglia \"$1\".",
        "version": "Versiun",
        "version-extensions": "Extensiuns installadas",
+       "version-skins": "Skins",
        "version-specialpages": "Paginas spezialas",
        "version-parserhooks": "Hooks dal parser",
        "version-variables": "Variablas",
        "version-antispam": "Prevenziun da spam",
-       "version-skins": "Skins",
        "version-other": "Auter",
        "version-mediahandlers": "Manipulaturs da meds",
        "version-hooks": "Hooks",
index a668d7d..ec60308 100644 (file)
        "randomincategory": "Pagină aleatorie din categorie",
        "randomincategory-invalidcategory": "„$1” nu este un nume de categorie valid.",
        "randomincategory-nopages": "Nu există pagini în [[:Category:$1]].",
-       "randomincategory-selectcategory": "Obțineți, aleatoriu, o pagină din categoria: $1 $2.",
-       "randomincategory-selectcategory-submit": "Du-te",
+       "randomincategory-category": "Categorie:",
+       "randomincategory-legend": "Pagină aleatorie din categoria",
        "randomredirect": "Redirecționare aleatorie",
        "randomredirect-nopages": "Nu există redirecționări în spațiul de nume \"$1\".",
        "statistics": "Statistici",
        "exbeforeblank": "conținutul înainte de golire era: '$1'",
        "delete-confirm": "Şterge \"$1\"",
        "delete-legend": "Şterge",
-       "historywarning": "'''Atenție:''' istoricul paginii pe care o ștergeți conține aproximativ $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}:",
+       "historywarning": "<strong>Atenție:</strong> istoricul paginii pe care o ștergeți conține $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}:",
        "confirmdeletetext": "Sunteți pe cale să ștergeți permanent o pagină sau imagine din baza de date, împreună cu istoria asociată acesteia. Vă rugăm să confirmați alegerea făcută de dvs., faptul că înțelegeți consecințele acestei acțiuni și faptul că o faceți în conformitate cu [[{{MediaWiki:Policy-url}}|Politica oficială]].",
        "actioncomplete": "Acțiune completă",
        "actionfailed": "Acțiunea a eșuat",
        "delete-edit-reasonlist": "Modifică motivele ștergerii",
        "delete-toobig": "Această pagină are un istoric al modificărilor important, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.\nȘtergerea unei astfel de pagini a fost restricționată pentru a preveni apariția unor erori în {{SITENAME}}.",
        "delete-warning-toobig": "Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.\nȘtergerea sa poate afecta baza de date a sitului {{SITENAME}};\nacționați cu precauție.",
-       "delete-cantedit": "Nu puteți șterge această pagină, deoarece nu aveți permisiunea de a o modifica.",
+       "deleteprotected": "Nu puteți șterge această pagină, deoarece este protejată.",
        "deleting-backlinks-warning": "'''Atenție:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Alte pagini]] se leagă sau transclud pagina pe care doriți să o ștergeți.",
        "rollback": "Editări de revenire",
        "rollback_short": "Revenire",
        "import": "Importare pagini",
        "importinterwiki": "Import transwiki",
        "import-interwiki-text": "Selectează un wiki și titlul paginii care trebuie importate. Datele reviziilor și numele editorilor vor fi salvate. Toate acțiunile de import transwiki pot fi găsite la [[Special:Log/import|log import]]",
-       "import-interwiki-source": "Wiki/pagină sursă:",
+       "import-interwiki-sourcewiki": "Wikiul sursă:",
+       "import-interwiki-sourcepage": "Pagina sursă:",
        "import-interwiki-history": "Copiază toate versiunile istoricului acestei pagini",
        "import-interwiki-templates": "Includeți toate formatele",
        "import-interwiki-submit": "Importă",
index 5004182..6bdaff5 100644 (file)
        "talkpagelinktext": "Parle",
        "specialpage": "Pàgene Speciele",
        "personaltools": "Struminde personele",
-       "postcomment": "Seziona nove",
        "articlepage": "Vide 'a pàgene de le condenute",
        "talk": "'Ngazzaminde",
        "views": "Visite",
        "externaldberror": "Vide bbuene, o stè 'n'errore de autendicazione a 'u database oppure tu non ge puè aggiorna 'u cunde tue esterne.",
        "login": "Tràse",
        "nav-login-createaccount": "Tràse / Reggistrete",
-       "loginprompt": "Tu a tenè le cookies abilitate pe tràse jndr'à {{SITENAME}}.",
        "userlogin": "Tràse / Reggistrete",
        "userloginnocreate": "Tràse",
        "logout": "Isse",
        "searchprofile-advanced-tooltip": "Cirche jndr'à le namespace personalizzete",
        "search-result-size": "$1 ({{PLURAL:$2|1 parole|$2 parole}})",
        "search-result-category-size": "{{PLURAL:$1|1 membre|$1 membre}} ({{PLURAL:$2|1 sottecategorije|$2 sottecategorije}}, {{PLURAL:$3|1 file|$3 file}})",
-       "search-result-score": "'Mbortanze: $1%",
        "search-redirect": "(Redirette $1)",
        "search-section": "(sezione $1)",
        "search-suggest": "Ce signifeche: $1",
        "uploadwarning": "Avvise de carecamende",
        "uploadwarning-text": "Pe piacere cange 'a descrizione d'u file sotte e pruève 'notra vote.",
        "savefile": "Reggistre 'u file",
-       "uploadedimage": "carechete \"[[$1]]\"",
-       "overwroteimage": "ha state carechete 'na versiona nove de \"[[$1]]\"",
        "uploaddisabled": "Carecaminde disabbilitete",
        "copyuploaddisabled": "Carecamende da l'URL disabbilitate.",
        "uploaddisabledtext": "Le carecaminde de le file sonde disabbilitete.",
        "watchlist-details": "{{PLURAL:$1|$1 pàgene|$1 pàggene}} jndr'à liste de le pàggene condrollete, scartanne le pàggene de le 'ngazzaminde.",
        "wlheader-enotif": "* Notifiche pe email abbilitate.",
        "wlheader-showupdated": "* Le pàggene ca onne state cangiate da l'urtema visite avènene fatte vedè in '''grascette'''",
+       "wlnote": "Aqquà sotte {{PLURAL:$1|ste l'urteme cangiamende|stonne l'urteme '''$1''' cangiaminde}} jndr'à {{PLURAL:$2|l'urtema ore|l'urteme '''$2''' ore}}, jndr'à $3, $4.",
        "wlshowlast": "Vide l'urteme $1 ore $2 sciurne $3",
        "watchlist-options": "Opzione d'a liste de le pàggene condrollete",
        "watching": "Fà vedè...",
index 65507bf..40b9db1 100644 (file)
@@ -68,7 +68,8 @@
                        "Eroha",
                        "Niklem",
                        "Agilight",
-                       "Oleg3280"
+                       "Oleg3280",
+                       "Nirovulf"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "recentchanges-label-bot": "Эта правка сделана ботом",
        "recentchanges-label-unpatrolled": "Эта правка ещё никем не патрулировалась",
        "recentchanges-label-plusminus": "Размер страницы изменился на данное количество байт",
-       "recentchanges-legend-heading": "'''Легенда:'''",
+       "recentchanges-legend-heading": "'''Легенда:&nbsp;'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (см. также [[Special:NewPages|список новых страниц]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).",
        "randomincategory": "Случайная страница в категории",
        "randomincategory-invalidcategory": "Категории «$1» не существует.",
        "randomincategory-nopages": "Нет страниц в категории [[:Category:$1]].",
-       "randomincategory-selectcategory": "Перейти на случайную страницу из категории: $1 $2.",
-       "randomincategory-selectcategory-submit": "Перейти",
+       "randomincategory-category": "Категория:",
+       "randomincategory-legend": "Случайная страница в категории",
        "randomredirect": "Случайное перенаправление",
        "randomredirect-nopages": "Пространство имён «$1» не содержит перенаправлений.",
        "statistics": "Статистика",
        "exbeforeblank": "содержимое до очистки: «$1»",
        "delete-confirm": "$1 — удаление",
        "delete-legend": "Удаление",
-       "historywarning": "'''Внимание:''' эта страница имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий}}:",
+       "historywarning": "<strong>Внимание:</strong> У страницы, которую вы собираетесь удалить, есть история правок, содержащая $1 {{PLURAL:$1|версию|версий}}:",
        "confirmdeletetext": "Вы запросили полное удаление страницы (или изображения) и всей её истории изменений. Пожалуйста, подтвердите, что вы действительно желаете это сделать, понимаете последствия своих действий, и делаете это в соответствии [[{{MediaWiki:Policy-url}}|с правилами]].",
        "actioncomplete": "Действие выполнено",
        "actionfailed": "Действие не выполнено",
        "delete-edit-reasonlist": "Править список причин",
        "delete-toobig": "У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.\nУдаление таких страниц было запрещено во избежание нарушений в работе сайта «{{SITENAME}}».",
        "delete-warning-toobig": "У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.\nЕё удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;\nдействуйте с осторожностью.",
-       "delete-cantedit": "Вы не можете удалить эту страницу, так как у вас нет разрешения на её редактирование.",
+       "deleteprotected": "Вы не можете удалить эту страницу, поскольку она защищена.",
        "deleting-backlinks-warning": "'''Предупреждение.''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Другие страницы]] ссылаются на страницу, которую вы собираетесь удалить, или содержат её.",
        "rollback": "Откатить изменения",
        "rollback_short": "Откат",
        "import": "Импортирование страниц",
        "importinterwiki": "Межвики импорт",
        "import-interwiki-text": "Укажите вики и название импортируемой страницы.\nДаты изменений и имена авторов будут сохранены.\nВсе операции межвики импорта регистрируются в [[Special:Log/import|соответствующем журнале]].",
-       "import-interwiki-source": "Вики-источник/страница:",
+       "import-interwiki-sourcewiki": "Исходный вики-проект:",
+       "import-interwiki-sourcepage": "Исходная страница:",
        "import-interwiki-history": "Копировать всю историю изменений этой страницы",
        "import-interwiki-templates": "Включить все шаблоны",
        "import-interwiki-submit": "Импортировать",
index f89f060..84d0b22 100644 (file)
        "talkpagelinktext": "діскузія",
        "specialpage": "Шпеціална сторінка",
        "personaltools": "Особны інштрументы",
-       "postcomment": "Нова секція",
        "articlepage": "Посмотрити сторінку",
        "talk": "Діскузія",
        "views": "Перегляды",
        "externaldberror": "Або ся стала хыба екстерной автентіфікачной датабазы, або не маєте дозволено мінити своє екстерне конто.",
        "login": "Приголошіня",
        "nav-login-createaccount": "Приголошіня / створїня конта",
-       "loginprompt": "К приголошіню до {{grammar:2sg|{{SITENAME}}}} мусите мати актівованы cookies.",
        "userlogin": "Приголошіня / створїня конта",
        "userloginnocreate": "Приголошіня",
        "logout": "Одголосити",
        "searchprofile-advanced-tooltip": "Задати просторы назв, де ся мать глядати",
        "search-result-size": "$1 ({{PLURAL:$2|слово|слова|слов}})",
        "search-result-category-size": "{{PLURAL:$1|1 член|$1 члена|$1 членів}} ({{PLURAL:$2|1 підкатеґорія|$2 підкатеґорії|$2 підкатеґорії}}, {{PLURAL:$3|1 файл|$3 файлы|$3 файлів}})",
-       "search-result-score": "Одповідность: $1 %",
        "search-redirect": "(напрямити $1)",
        "search-section": "(секція $1)",
        "search-suggest": "Може сьте мали на мыслї: $1",
        "uploadwarning": "Позірь к наладованю",
        "uploadwarning-text": "Просиме, зміньте опис файлу ниже і спробуйте то знову.",
        "savefile": "Уложыти файл",
-       "uploadedimage": "наладовав \"[[$1]]\"",
-       "overwroteimage": "наладована нова верзія \"[[$1]]\"",
        "uploaddisabled": "Наладовованя файлів заборонене.",
        "copyuploaddisabled": "Наладовованя файлів через URL є выпнуте.",
        "uploaddisabledtext": "Наладовованя файлів є выпнуте.",
        "watchlist-details": "{{PLURAL:$1|Єдна слїдована сторінка|слїдованы сторінкы|слїдованых сторінок}} (не рахувчі діскузны сторінкы).",
        "wlheader-enotif": "Упозорнїня  ел. поштов є запнуте.",
        "wlheader-showupdated": "Сторінкы, котры ся змінили од вашой послїднёй навщівы суть вказаны '''грубо'''",
+       "wlnote": "Ниже є {{PLURAL:$1|остатня зміна|остатнї $1 зміны|остатнїх $1 змін}} за {{PLURAL:$2|остатнїй|остатнї|остатнїх}} <b>$2</b> {{PLURAL:$2|годину|годины|годин}} до do $4, $3.",
        "wlshowlast": "Вказати зміны за послїднїх $1 годин $2 днїв $3",
        "watchlist-options": "Наставлїна списку слїдованых",
        "watching": "Придаваня до списку слїдованя...",
        "duplicate-defaultsort": "Увага: Імпліцітный ключ сортованя (DEFAULTSORTKEY) „$2“ переписує скоре наставлену годноту „$1“.",
        "version": "Верзія",
        "version-extensions": "Наіншталованы росшырїня",
+       "version-skins": "Взгляды",
        "version-specialpages": "Шпеціалны сторінкы",
        "version-parserhooks": "Припойны пункты парсера",
        "version-variables": "Перемінны",
        "version-antispam": "Охрана перед спамом",
-       "version-skins": "Взгляды",
        "version-other": "Інше",
        "version-mediahandlers": "Обслуга медії",
        "version-hooks": "Припойны пункты",
index 37206aa..daff7f8 100644 (file)
 {
-    "@metadata": {
-        "authors": [
-            "D'AroemenenZullenNiVergaan",
-            "Dumitrachi T. Fundu",
-            "Hakka"
-        ]
-    },
-    "tog-underline": "Subliniaḑă ligâtura:",
-    "tog-hideminor": "Ascundeari a alâxiriloru ńiți di-tu nalili alâxiri",
-    "tog-numberheadings": "Numirari automatâ a secțiuniloru",
-    "tog-editondblclick": "Aravdă alâxirea frundzâl'ei ti dublu click (caftă JavaScript)",
-    "underline-always": "Totna",
-    "underline-never": "Vârâoarâ",
-    "sunday": "dumânicâ",
-    "monday": "luni",
-    "tuesday": "marțâ",
-    "wednesday": "ńiercuri",
-    "thursday": "gioi",
-    "friday": "viniri",
-    "saturday": "sâmbâtâ",
-    "january": "Yinaru",
-    "february": "Șcurtu",
-    "march": "Marțu",
-    "april": "Apriiru",
-    "may_long": "Maiu",
-    "june": "Cirișaru",
-    "july": "Alunaru",
-    "august": "Avgustu",
-    "september": "Yizmâciunu",
-    "october": "Sumedru",
-    "november": "Brumaru",
-    "december": "Andreu",
-    "january-gen": "Yinaru",
-    "february-gen": "Șcurtu",
-    "march-gen": "Marțu",
-    "april-gen": "Apriiru",
-    "may-gen": "Maiu",
-    "june-gen": "Cirișaru",
-    "july-gen": "Alunaru",
-    "august-gen": "Avgustu",
-    "september-gen": "Yizmâciunu",
-    "october-gen": "Sumedru",
-    "november-gen": "Brumaru",
-    "december-gen": "Andreu",
-    "jan": "yin",
-    "feb": "șcur",
-    "mar": "mar",
-    "apr": "apr",
-    "may": "mai",
-    "jun": "cir",
-    "jul": "alun",
-    "aug": "avg",
-    "sep": "yiz",
-    "oct": "sum",
-    "nov": "brum",
-    "dec": "andr",
-    "pagecategories": "{{PLURAL:$1|Categorie|Categorii}}",
-    "category_header": "Frânḑâ tu categoria \"$1\"",
-    "hidden-categories": "{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}",
-    "article": "Articolu",
-    "newwindow": "(si discľidi tu unâ nauâ fireastrâ)",
-    "cancel": "Alasã",
-    "moredotdotdot": "Ma multu...",
-    "mytalk": "Zburare-a mea",
-    "navigation": "Navigație",
-    "qbfind": "Caftâ",
-    "qbedit": "Alâxiri",
-    "qbpageoptions": "Aestă frânḑă",
-    "qbmyoptions": "Frânḑili a meali",
-    "vector-action-addsection": "Dimândari nauâ",
-    "vector-view-history": "Veḑ istoricu",
-    "namespaces": "Spațiu di numi",
-    "variants": "Varianti",
-    "tagline": "Di-tu {{SITENAME}}",
-    "help": "Agiutoru",
-    "search": "Câftari",
-    "searchbutton": "Câftari",
-    "go": "Du-vâ",
-    "searcharticle": "Du-vâ",
-    "history_short": "Istoricu",
-    "printableversion": "Verzia ti tipuseare",
-    "permalink": "Ligâturâ permanentâ",
-    "edit": "Alâxire",
-    "delete": "Așcirḑire",
-    "protect": "Apurã",
-    "newpage": "Frânḑâ nauâ",
-    "talkpagelinktext": "Zburari",
-    "talk": "Discusiur",
-    "views": "Videri",
-    "toolbox": "Cutia di hãlate",
-    "otherlanguages": "Pi alte limbe",
-    "jumptonavigation": "Navigatsia",
-    "jumptosearch": "Câftare",
-    "aboutsite": "Tu {{SITENAME}}",
-    "currentevents": "Evenimente di tora",
-    "disclaimers": "Nipricunuschire",
-    "edithelp": "Agiutor ti alãxire",
-    "mainpage": "Prota frânḑâ",
-    "mainpage-description": "Prota frânḑâ",
-    "portal": "Portalu a comunitatiľei",
-    "portal-url": "Proiectu:Portalu a comunitatiľei",
-    "privacy": "Politică di confidențialitate",
-    "youhavenewmessagesmulti": "Aveț năi dimândări pi $1",
-    "editsection": "alâxire",
-    "editold": "Alâxiri",
-    "viewsourceold": "videari izvor",
-    "viewsourcelink": "videari izvor",
-    "editsectionhint": "Alâxire parti: $1",
-    "site-atom-feed": "$1 Atom feed",
-    "red-link-title": "$1 (frânḑa nu easti)",
-    "nstab-main": "Frânḑâ",
-    "nstab-user": "Frânḑâ a utilizatorului",
-    "nstab-special": "Frândzâ specialâ",
-    "nstab-template": "Formatu",
-    "nstab-category": "Categorie",
-    "viewsource": "Videț-u fântânâ",
-    "yourname": "Numa di ufilizitor:",
-    "yourpassword": "Cljao:",
-    "yourpasswordagain": "Bãgats-u cljao iara:",
-    "remembermypassword": "Apurã-u ligãtura-a mea pi compiuterlu aistu (for a maximum of $1 {{PLURAL:$1|day|days}})",
-    "login": "Ligats-vã",
-    "userlogin": "Ligats-vã / Fãtsets Isape",
-    "logout": "Disligats-vã",
-    "userlogout": "Disligats-vã",
-    "notloggedin": "Nu hits ligats",
-    "createaccount": "Fãtsets Isape",
-    "gotaccountlink": "Ligats-vã",
-    "summary": "Rezime:",
-    "minoredit": "Aistã easte alãxire njicã",
-    "watchthis": "Mutrits-u frãndzã aistã",
-    "savearticle": "Avigljats-u frãndzã",
-    "showpreview": "Spuni u-privideare",
-    "showdiff": "Spuni le-alãxirle",
-    "loginreqlink": "Ligats-vã",
-    "lineno": "Linia $1:",
-    "editundo": "arisire",
-    "searchresults": "Rezultate di câftare",
-    "searchresults-title": "Rezultate di câftare ti \"$1\"",
-    "shown-title": "Vedz $1 {{PLURAL:$1|rezultat|rezultate}} pi frândză",
-    "searchprofile-everything": "Tuti",
-    "searchprofile-project-tooltip": "Câftare ti $1",
-    "search-result-size": "$1 ({{PLURAL:$2|1 zbor|$2 zboarâ}})",
-    "search-section": "(partea $1)",
-    "searchall": "tuti",
-    "preferences": "Alidzerle-a meale",
-    "mypreferences": "Alidzerle-a meale",
-    "searchresultshead": "Caftã",
-    "youremail": "E-mail:",
-    "username": "Numa di ufilizitor:",
-    "recentchanges": "Alâxiri",
-    "diff": "dif",
-    "hist": "ist",
-    "show": "Vedz",
-    "recentchangeslinked": "Alãxiri ligate",
-    "recentchangeslinked-feed": "Alãxiri ligate",
-    "recentchangeslinked-toolbox": "Alâxiri ligate",
-    "upload": "Pitritsets file",
-    "uploadbtn": "Pitritsets file",
-    "uploadnologin": "Nu hits ligats",
-    "filedesc": "Rezime",
-    "watchthisupload": "Mutrits-u frãndzã aistã",
-    "file-anchor-link": "Fișier",
-    "randompage": "Frândză di nipandică",
-    "brokenredirects-edit": "Alãxiri",
-    "brokenredirects-delete": "Ashcirdzire",
-    "nbytes": "$1 {{PLURAL:$1|octet|octeți}}",
-    "newpages-username": "Numa di ufilizitor:",
-    "move": "Tradzets",
-    "movethispage": "Tradzets-u frãndza aistã",
-    "booksources-go": "Du-vã",
-    "allpagessubmit": "Du-vã",
-    "watchlist": "Lista-a mea di videare",
-    "mywatchlist": "Lista-a mea di videare",
-    "watchnologin": "Nu hits ligats",
-    "watch": "Videts",
-    "watchthispage": "Mutrits-u frãndzã aistã",
-    "unwatch": "Azãptãsits videare",
-    "prot_1movedto2": "[[$1]] s-trãdzi tu [[$2]]",
-    "restriction-edit": "Alãxiri",
-    "restriction-move": "Tradzets",
-    "undelete-search-submit": "Caftã",
-    "blanknamespace": "(Prota)",
-    "contributions": "Ufilizitor:Contributsiur",
-    "mycontris": "Contributsiile-a meale",
-    "sp-contributions-submit": "Caftã",
-    "whatlinkshere": "Tsi s-leadze cu aistu",
-    "whatlinkshere-page": "Frândză:",
-    "ipbreason": "Itia:",
-    "ipblocklist-submit": "Caftã",
-    "contribslink": "contribuții",
-    "move-page-legend": "Tradzets-u frãndzã",
-    "movearticle": "Tradzets-u frãndzã:",
-    "move-watch": "Mutrits-u frãndzã aistã",
-    "movepagebtn": "Tradzets-u frãndzã",
-    "movereason": "Itia:",
-    "allmessages": "Dimãndãri systemitse",
-    "tooltip-pt-preferences": "Alidzerle-a meale",
-    "tooltip-pt-logout": "Disligats-vã",
-    "tooltip-search": "Câftare tru {{SITENAME}}",
-    "tooltip-p-logo": "Prota frãndzã",
-    "tooltip-n-mainpage": "Vedz prota frândză",
-    "tooltip-t-specialpages": "Unâ listâ di tuti frândzele",
-    "tooltip-ca-nstab-category": "Veḑ categoria",
-    "ilsubmit": "Caftâ",
-    "imgmultigo": "Du-vã!",
-    "table_pager_limit_submit": "Du-vã",
-    "specialpages": "Frândzâ speciale"
+       "@metadata": {
+               "authors": [
+                       "D'AroemenenZullenNiVergaan",
+                       "Dumitrachi T. Fundu",
+                       "Hakka"
+               ]
+       },
+       "tog-underline": "Subliniadzâ ligâtura:",
+       "tog-hideminor": "Ascundi alâxirili minori tu alâxirile proaspite",
+       "tog-hidepatrolled": "Ascundi alâxirili patrulati tu alâxirile proaspite",
+       "tog-newpageshidepatrolled": "Ascundi frândzâli patrulati di-tu lista di frândzâ noi",
+       "tog-extendwatchlist": "Ntindi lista di articoli avinati ca s-u li vedz toati alâxirili adrate, nu mași pe ațeali ma noi",
+       "tog-usenewrc": "Adunâ alâxirili dupu frândzâ anamisa a alâxiriloru proaspite și a listâľei frândzâlor avinati",
+       "tog-numberheadings": "Numirâ automatu secțiunili",
+       "tog-showtoolbar": "Aratâ bara di halati trâ alâxiri",
+       "tog-editondblclick": "Alâxeaști frândzâli pri-tu click duplo",
+       "tog-editsectiononrightclick": "Activeadzâ alâxirea a secțiuniloru pri-tu click ndreapta pi titlu a secțiunâľei",
+       "tog-watchcreations": "Adavgâ frândzâli pi cari li adar și fișierele pi cari li ncari la lista a ńia di frândzâ avinati",
+       "tog-watchdefault": "Adavgâ frândzâli și fișierili pi cari li alâxescu la lista a ńia di avinari",
+       "tog-watchmoves": "Adavgâ frândzâli și fișierili pi cari li dau numâ noao la lista a ńia di avinari",
+       "tog-watchdeletion": "Adavgâ frândzâli și fișierili pi cari li aștergu la lista a ńia di avinari",
+       "tog-watchrollback": "Adavgâ tu lista a ńia di frândzâ avinati ațeali frândzâ cari li turnai la unâ versiuni ma veacľie",
+       "tog-minordefault": "Simneadzâ di-tu ahurhita toati alâxirili câ suntu minori (ńiți)",
+       "tog-previewontop": "Aratâ previzualizarea disuprâ di câsica di alâxiri",
+       "tog-previewonfirst": "Aratâ previzualizarea la prota alâxiri",
+       "tog-enotifwatchlistpages": "Pitreați-ńi unâ carti electronicâ atumțea anda unâ frândzâ icâ unu fișieru di-tu lista a ńia di frândzâ avinati easti alâxitâ",
+       "tog-enotifusertalkpages": "Pitreați-ńi unâ carti electronicâ anda frândza a ńia di muabeț easti alâxitâ",
+       "tog-enotifminoredits": "Pitreați-ńi unâ carti electronicâ ș-canda frândzâ icâ fișieri ľa alâxiri",
+       "tog-enotifrevealaddr": "Lingușeaști-ńi adresa a ńia di carti electronicâ tu mesagili di noauâ",
+       "tog-shownumberswatching": "Aratâ numiru a utilizatorloru cari ti avinu",
+       "tog-oldsig": "Cundiľeauâ di tora:",
+       "tog-fancysig": "Saidiseaști cundiľeaua ca wikitext (fârâ unâ ligâturâ automatâ)",
+       "tog-uselivepreview": "Ufiliseaști previzualizarea tu chiro realu (experimentalu)",
+       "tog-forceeditsummary": "Dzâ-ńi anda mi agârșescu s-fânirusescu alâxirili",
+       "tog-watchlisthideown": "Ascundi alâxirili a meali la lista a ńia di avinari",
+       "tog-watchlisthidebots": "Ascundi alâxirili a boțloru la lista a ńia di avinari",
+       "tog-watchlisthideminor": "Ascundi alâxirili minori (ńiți) a meali la lista a ńia di avinari",
+       "tog-watchlisthideliu": "Ascundi alâxirili adrati di utilizatori ligaț di-tu lista di frândzâ avinati",
+       "tog-watchlisthideanons": "Ascundi alâxirili adrati di utilizatoriľi anonimi di-tu lista di frândzâ avinati",
+       "tog-watchlisthidepatrolled": "Ascundi alâxirili patrulati di-tu lista di frândzâ avinati",
+       "tog-ccmeonemails": "Voi s-așteptu unâ copie a mesagiloru di carti electronicâ pi cari li pitrecu",
+       "tog-diffonly": "Ascundi conținutlu a frândzei sumu dif",
+       "tog-showhiddencats": "Aratâ categoriľi ascumsi",
+       "tog-norollbackdiff": "Ascundi diferența dupu ți s-toarnâ unâ frândzâ",
+       "tog-useeditwarning": "Dzâ-ńi anda alasu unâ frândzâ fârâ s-li pitrecu alâxirili",
+       "tog-prefershttps": "Ufiliseaști daima unâ conexiuni sigurâ anda hiu ligat(â)",
+       "underline-always": "Totna",
+       "underline-never": "Vârnâoarâ",
+       "underline-default": "Standardulu a themâľei icâ a navigatorlui",
+       "editfont-style": "Soea a fontului tu câsica di alâxiri:",
+       "editfont-default": "Standardulu a navigatorlui",
+       "editfont-monospace": "Fontu dipârtatu isea",
+       "editfont-sansserif": "Fontu fârâ serife",
+       "editfont-serif": "Fontu cu serife",
+       "sunday": "dumânicâ",
+       "monday": "luni",
+       "tuesday": "marțâ",
+       "wednesday": "ńiercuri",
+       "thursday": "gioi",
+       "friday": "viniri",
+       "saturday": "sâmbâtâ",
+       "sun": "dum",
+       "mon": "lun",
+       "tue": "mar",
+       "wed": "ńie",
+       "thu": "gio",
+       "fri": "vin",
+       "sat": "sâm",
+       "january": "Yinaru",
+       "february": "Șcurtu",
+       "march": "Marțu",
+       "april": "Apriiru",
+       "may_long": "Maiu",
+       "june": "Cirișaru",
+       "july": "Alunaru",
+       "august": "Avgustu",
+       "september": "Yizmâciunu",
+       "october": "Sumedru",
+       "november": "Brumaru",
+       "december": "Andreu",
+       "january-gen": "Yinaru",
+       "february-gen": "Șcurtu",
+       "march-gen": "Marțu",
+       "april-gen": "Apriiru",
+       "may-gen": "Maiu",
+       "june-gen": "Cirișaru",
+       "july-gen": "Alunaru",
+       "august-gen": "Avgustu",
+       "september-gen": "Yizmâciunu",
+       "october-gen": "Sumedru",
+       "november-gen": "Brumaru",
+       "december-gen": "Andreu",
+       "jan": "Yin",
+       "feb": "Șcur",
+       "mar": "Mar",
+       "apr": "Apr",
+       "may": "Mai",
+       "jun": "Cir",
+       "jul": "Alun",
+       "aug": "Avg",
+       "sep": "Yiz",
+       "oct": "Sum",
+       "nov": "Brum",
+       "dec": "Andr",
+       "january-date": "$1-li di Yinaru",
+       "february-date": "$1-li di Șcurtu",
+       "march-date": "$1-li di Marțu",
+       "april-date": "$1-li di Apriiru",
+       "may-date": "$1-li di Marțu",
+       "june-date": "$1-li di Cirișaru",
+       "july-date": "$1-li di Alunaru",
+       "august-date": "$1-li di Avgustu",
+       "september-date": "$1-li di Yizmâciunu",
+       "october-date": "$1-li di Sumedru",
+       "november-date": "$1-li di Brumaru",
+       "december-date": "$1-li di Andreu",
+       "pagecategories": "{{PLURAL:$1|Categorie|Categorii}}",
+       "category_header": "Frândzâ tu categoria \"$1\"",
+       "subcategories": "Subcategorii",
+       "category-media-header": "Media tu categoria \"$1\"",
+       "category-empty": "<em>Aestâ categorie nu ari tora nițiunu articolu icâ fișieru media.</em>",
+       "hidden-categories": "{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}",
+       "hidden-category-category": "Categorii ascumsi",
+       "category-subcat-count": "{{PLURAL:$2|Categoria conține mași subcategoria aestâ.|Categoria conțini {{PLURAL:$1|aestâ subcategorie|aesti $1 subcategorii}}, di-tu $2.}}",
+       "category-subcat-count-limited": "Această categorie conțini {{PLURAL:$1|subcategorie|$1 subcategorii}}.",
+       "listingcontinuesabbrev": "cont.",
+       "index-category": "Frândzâ indexati",
+       "noindex-category": "Frândzâ neindexati",
+       "broken-file-category": "Frândzâ cu ligâturi invalidi câtră fișieri",
+       "about": "Trâ aestâ",
+       "article": "Articolu",
+       "newwindow": "(si discľidi tu unâ noauâ fireastrâ)",
+       "cancel": "Alasâ",
+       "moredotdotdot": "Ma multu…",
+       "morenotlisted": "Aestâ listâ nu easti completâ (ntreagâ).",
+       "mypage": "Frândzâ",
+       "mytalk": "Muabeț",
+       "anontalk": "Muabeti trâ aestâ adresâ di IP",
+       "navigation": "Navigari",
+       "and": "&#32;și",
+       "qbfind": "Caftâ",
+       "qbbrowse": "Calcâ",
+       "qbedit": "Alâxiri",
+       "qbpageoptions": "Aestâ frândzâ",
+       "qbmyoptions": "Frândzâli a meali",
+       "faq": "Ntribări frecventi",
+       "faqpage": "Proectu:Ntribări frecventi",
+       "actions": "Acțiuni",
+       "namespaces": "Spațiu di numi",
+       "variants": "Varianti",
+       "navigation-heading": "Meniu di navigari",
+       "errorpagetitle": "Eroari (alatus)",
+       "returnto": "Toarnâ-ti $1.",
+       "tagline": "Di-tu {{SITENAME}}",
+       "help": "Agiutoru",
+       "search": "Caftâ",
+       "searchbutton": "Caftâ",
+       "go": "Du-ti",
+       "searcharticle": "Du-ti",
+       "history": "Isturia a frândzâľei",
+       "history_short": "Isturie",
+       "updatedmarker": "alâxitu di canda yinii tu soni",
+       "printableversion": "Versiuni ti tipuseari",
+       "permalink": "Ligâturâ permanentâ",
+       "print": "Tipuseari",
+       "view": "Videari",
+       "view-foreign": "Vedz la $1",
+       "edit": "Alâxire",
+       "edit-local": "Alâxeaști descrierea localâ",
+       "delete": "Așcirḑire",
+       "deletethispage": "Așteardzi frândza",
+       "undeletethispage": "Aflâ frundza aștearsâ",
+       "undelete_short": "Aflâ {{PLURAL:$1|unâ alâxiri aștearsâ|a $1 alâxiri aștearsi|a $1 di alâxiri aștearsi}}",
+       "viewdeleted_short": "Vedz {{PLURAL:$1|unâ alâxiri aștearsâ|$1 (di) alâxiri aștearsi}}",
+       "protect": "Apârâ",
+       "protect_change": "alâxeaști",
+       "protectthispage": "Protejați aestâ frândzâ",
+       "unprotect": "Alâxeaști protecția",
+       "unprotectthispage": "Alâxeaști nivellu di protejari a frândzâľei",
+       "newpage": "Frânḑâ nauâ",
+       "talkpage": "Muabeti trâ aestâ frândzâ",
+       "talkpagelinktext": "Zburari",
+       "specialpage": "Frândzâ specialâ",
+       "personaltools": "Halatili a meali",
+       "articlepage": "Vedz articolu",
+       "talk": "Muabeț",
+       "views": "Videri",
+       "toolbox": "Hâlati",
+       "userpage": "Vedz frândza a utilizatorlui",
+       "projectpage": "Vedz frândza a proectului",
+       "imagepage": "Vedz frândza fișierlui",
+       "mediawikipage": "Vedz frândza dimândăriľei",
+       "templatepage": "Vedz frândza formatlui",
+       "viewhelppage": "Vedz frânzda di agiutoru",
+       "categorypage": "Vedz-u frândza categoriľei",
+       "viewtalkpage": "Vedz muabetea",
+       "otherlanguages": "Pi alanti limbi",
+       "redirectedfrom": "(yinitâ di la $1)",
+       "redirectpagesub": "Frândzâ di redirecționari",
+       "lastmodifiedat": "Aestâ frândzâ fu alâxitâ di-tu soni pi $1, la $2.",
+       "viewcount": "Aestâ frândzâ fu mutritâ di {{PLURAL:$1|mași unâ oarâ|$1 ori}}.",
+       "protectedpage": "Frândzâ protejatâ",
+       "jumpto": "Ansari la:",
+       "jumptonavigation": "navigari",
+       "jumptosearch": "câftari",
+       "view-pool-error": "Ti jali serverili a noastri suntu xanaufilisiti tu aestu chiro.\nCama mulțâ utilizatori câtâpâtsescu s-veadâ aestâ frândzâ.\nVâ pâlâcârsimu s-așteptați unu momentu nainti s-ncârcați aestâ frândzâ diznou.\n\n$1",
+       "generic-pool-error": "Ti jali serverili a noastri suntu xanaufilisiti tu aestu chiro.\nCama mulțâ utilizatori câtâpâtsescu s-veadâ aestâ resursâ.\nVâ pâlâcârsimu s-așteptați unu momentu nainti s-ncârcați aestâ resursâ diznou.",
+       "pool-timeout": "Chirolu trâ aștiptăriľei trâ blocari (ncľideari) d-dusi",
+       "pool-queuefull": "Coada di aștiptari easti mplinâ",
+       "pool-errorunknown": "Eroari (alatusu) nicunuscutâ",
+       "pool-servererror": "Serviciulu di contorizari a rezervâľei nu ma easti disponibilu ($1).",
+       "aboutsite": "Trâ {{SITENAME}}",
+       "aboutpage": "Project:Trâ aestâ",
+       "copyright": "Conținutlu easti disponibilu sum $1, fârâ chirolu tu cari s-specificâ altâ.",
+       "copyrightpage": "{{ns:project}}:Ndirepturi di autoru",
+       "currentevents": "Evenimenti di tora",
+       "currentevents-url": "Project:Cafine",
+       "disclaimers": "Termeni",
+       "disclaimerpage": "Project:Termeni",
+       "edithelp": "Agiutoru trâ alâxiri",
+       "mainpage": "Prota frândzâ",
+       "mainpage-description": "Prota frândzâ",
+       "policy-url": "Project:Politicâ",
+       "portal": "Portalu a comunitatiľei",
+       "portal-url": "Project:Portalu a comunitatiľei",
+       "privacy": "Politicâ di confidențialitati",
+       "privacypage": "Project:Politicâ di confidențialitati",
+       "badaccess": "Eroare (alatusu) permisiuni",
+       "badaccess-group0": "Execuția a acțiuniľei țiruti nu easti permisâ.",
+       "badaccess-groups": "Acțiunea țerută easte mași trâ utilizatorii di-tu {{PLURAL:$2|gruplu|unlu di-tu grupurili}}: $1.",
+       "versionrequired": "Caftâ versiunea $1 MediaWiki",
+       "versionrequiredtext": "Versiunea $1 MediWiki easti câftatâ trâ aestâ frândzâ.\nCaftâ [[Special:Version|versiunea frândzâľei]].",
+       "ok": "Ghini",
+       "retrievedfrom": "Yinitâ di la „$1”",
+       "youhavenewmessages": "Ai $1 ($2).",
+       "youhavenewmessagesfromusers": "Ai $1 di la {{PLURAL:$3|unu altu utilizatoru|$3 utilizatori}} ($2).",
+       "youhavenewmessagesmanyusers": "Ai $1 di la cama mulțâ utilizatori ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|unâ dimândari noao|999=dimândări noi}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|alâxirea di-tu soni|999=alâxirili proaspiti}}",
+       "youhavenewmessagesmulti": "Aveț dimândări noi la $1",
+       "editsection": "alâxire",
+       "editold": "alâxire",
+       "viewsourceold": "vez-u textu",
+       "editlink": "alâxire",
+       "viewsourcelink": "vez-u textu",
+       "editsectionhint": "Alâxeaști secțiunea: $1",
+       "toc": "Conținutu",
+       "showtoc": "aratâ",
+       "hidetoc": "ascundi",
+       "collapsible-collapse": "Apreadunâ",
+       "collapsible-expand": "Tindi",
+       "confirmable-confirm": "Hii sigur{{GENDER:$1||â}}?",
+       "confirmable-yes": "E",
+       "confirmable-no": "Nu",
+       "thisisdeleted": "Vedz icâ adu napoea $1?",
+       "viewdeleted": "Vedz $1?",
+       "restorelink": "Vedz {{PLURAL:$1|unâ alâxiri aștearsâ|$1 (di) alâxiri aștearsi}}",
+       "site-rss-feed": "$1 Abonari RSS",
+       "site-atom-feed": "$1 Abonari Atomu",
+       "page-rss-feed": "„$1” Abonari RSS",
+       "page-atom-feed": "$1 Abonari Atomu",
+       "red-link-title": "$1 (frândza nu easti)",
+       "sort-descending": "Aratâ di la nai ma marli",
+       "sort-ascending": "Aratâ di la nai ma ńițli",
+       "nstab-main": "Frândzâ",
+       "nstab-user": "Frândzâ di utilizatoru",
+       "nstab-media": "Frândzâ media",
+       "nstab-special": "Frândzâ specialâ",
+       "nstab-project": "Proectu",
+       "nstab-image": "Fișieru",
+       "nstab-mediawiki": "Dimândari",
+       "nstab-template": "Formatu",
+       "nstab-help": "Agiutoru",
+       "nstab-category": "Categorie",
+       "nosuchaction": "Aeastâ acțiuni nu easti",
+       "databaseerror-error": "Eroari (alutusu): $1",
+       "readonly": "Baza di dati easti blocatâ (ncľisâ) la nyrâpseari",
+       "viewsource": "Vez-u textu",
+       "yourname": "Numa di utilizatoru:",
+       "userlogin-yourname": "Numa di utilizatoru:",
+       "userlogin-yourname-ph": "Bagâ-u numa a ta di utilizatoru",
+       "createacct-another-username-ph": "Bagâ-u numa di utilizatoru",
+       "yourpassword": "Zboru cľeae:",
+       "yourpasswordagain": "Bagâ-u cľeae diznou:",
+       "remembermypassword": "Țâni minti ligâtura a mea pi browserlu aestu (cheari dupu $1 {{PLURAL:$1|dzuuâ|dzâli}})",
+       "login": "Leagâ-ti",
+       "nav-login-createaccount": "Leagâ-ti / Fă contu (isape)",
+       "userlogin": "Leagâ-ti / Fă contu (isape)",
+       "userloginnocreate": "Leagâ-ti",
+       "logout": "Dizleagâ-ti",
+       "userlogout": "Dizleagâ-ti",
+       "notloggedin": "Nu hii ligatu",
+       "userlogin-noaccount": "N-ai nicâ contu (isape)?",
+       "nologin": "N-ai nicâ contu (isape)? $1.",
+       "nologinlink": "Fă unu utilizatoru a tău tora",
+       "createaccount": "Fă contu (isape)",
+       "gotaccountlink": "Leagâ-ti",
+       "createacct-emailrequired": "Adresâ di carti electronicâ",
+       "createacct-emailoptional": "Adresâ di carti electronicâ (opționalu)",
+       "createacct-email-ph": "Bagâ-u adresa a ta di carti electronicâ",
+       "createacct-another-email-ph": "Bagâ-u adresa di carti electronicâ",
+       "createacct-realname": "Numa realâ (opționalu)",
+       "createaccountreason": "Furńie:",
+       "createacct-reason": "Furńie",
+       "summary": "Rezumatu:",
+       "minoredit": "Aestâ easti unâ alâxiri minorâ (ńicâ)",
+       "watchthis": "Mutrea-u frândzâ aestâ",
+       "savearticle": "Avigľea-u frândzâ",
+       "showpreview": "Previzualizare",
+       "showdiff": "Aratâ alâxirile",
+       "loginreqlink": "leagâ-ti",
+       "lineno": "Linia $1:",
+       "editundo": "turnari",
+       "searchresults": "Rezultatili câftăriľei",
+       "searchresults-title": "Rezultatili câftăriľei trâ „$1”",
+       "shown-title": "Aratâ $1 {{PLURAL:$1|rezultatu|rezultati}} pi frândzâ",
+       "searchprofile-everything": "Tutu",
+       "search-result-size": "$1 ({{PLURAL:$2|1 zboru|$2 zboarâ}})",
+       "search-section": "(secțiunea $1)",
+       "searchall": "tuti",
+       "preferences": "Prutimisiri",
+       "mypreferences": "Prutimisiri",
+       "searchresultshead": "Caftâ",
+       "youremail": "Adresâ di carti electronicâ:",
+       "username": "{{GENDER:$1|Numa di utilizatoru}}:",
+       "recentchanges": "Alâxiri",
+       "diff": "dif",
+       "hist": "ist",
+       "show": "Vedz",
+       "recentchangeslinked": "Alâxiri ligate",
+       "recentchangeslinked-feed": "Alâxiri ligate",
+       "recentchangeslinked-toolbox": "Alâxiri ligate",
+       "upload": "Pitreați fișieru",
+       "uploadbtn": "Pitreați fișieru",
+       "uploadnologin": "Nu hii ligatu",
+       "filedesc": "Rezumatu:",
+       "watchthisupload": "Mutreaști fișierlu aestu",
+       "file-anchor-link": "Fișieru",
+       "randompage": "Frândzâ di nipandicâ",
+       "brokenredirects-edit": "alâxire",
+       "brokenredirects-delete": "așteardziri",
+       "nbytes": "$1 {{PLURAL:$1|octetu|octeți}}",
+       "newpages-username": "Numa di utilizatoru:",
+       "move": "Mutari",
+       "movethispage": "Mutâ frândza aestâ",
+       "booksources-go": "Du-ti",
+       "allpagessubmit": "Du-ti",
+       "watchlist": "Frândzâ avinati",
+       "mywatchlist": "Frândzâ avinati",
+       "watchnologin": "Nu hii ligatu",
+       "watch": "Avinari",
+       "watchthispage": "Mutrea-u frândzâ aestâ",
+       "unwatch": "Scoati di-tu lista di avinari",
+       "prot_1movedto2": "[[$1]] s-mutâ tu [[$2]]",
+       "restriction-edit": "Alâxire",
+       "restriction-move": "Mutari",
+       "undelete-search-submit": "Caftâ",
+       "blanknamespace": "(Prota)",
+       "contributions": "Contribuții {{GENDER:$1|utilizatoru}}",
+       "mycontris": "Contribuții",
+       "sp-contributions-submit": "Caftâ",
+       "whatlinkshere": "Ți s-leadzi cu aestu",
+       "whatlinkshere-page": "Frândzâ:",
+       "ipbreason": "Furńie:",
+       "ipblocklist-submit": "Caftâ",
+       "contribslink": "contribuții",
+       "move-page-legend": "Mutari frândzâ",
+       "movearticle": "Mutari frândzâ",
+       "move-watch": "Mutrea-u frândzâ aestâ",
+       "movepagebtn": "Mutari frândzâ",
+       "movereason": "Furńie:",
+       "allmessages": "Mesagi di systemu",
+       "tooltip-pt-preferences": "Prutimisirili a meali",
+       "tooltip-pt-logout": "Dizleagâ-ti",
+       "tooltip-search": "Câftari tu {{SITENAME}}",
+       "tooltip-p-logo": "Vedz prota frândzâ",
+       "tooltip-n-mainpage": "Vedz prota frândzâ",
+       "tooltip-t-specialpages": "Unâ listâ cu toati frândzili speciali (di soe)",
+       "tooltip-ca-nstab-category": "Vedz-u categoria",
+       "ilsubmit": "Caftâ",
+       "imgmultigo": "Du-ti!",
+       "table_pager_limit_submit": "Du-ti",
+       "specialpages": "Frândzâ speciali"
 }
index c2d4562..3fb3add 100644 (file)
        "talkpagelinktext": "सम्भाषणम्",
        "specialpage": "विशेषपृष्ठम्",
        "personaltools": "वैयक्तिकोपकरणानि",
-       "postcomment": "नवीनः विभागः",
        "articlepage": "लेखः दृश्यताम्",
        "talk": "सम्भाषणम्",
        "views": "मतानि",
        "externaldberror": "दत्तांशे प्रामाणिकताविषयकः (authentication database) दोषः  स्यात् । अथवा स्वस्य बाह्यसदस्यतायां  (external account) परिवर्तनं कर्तुम् अनुमतिः न भवेत् ।",
        "login": "प्रविश्यताम्",
        "nav-login-createaccount": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
-       "loginprompt": "{{SITENAME}} इत्यत्र प्रवेष्टुं ज्ञापकानि (cookies)  समर्थीकरणीयानि ।",
        "userlogin": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
        "userloginnocreate": "प्रविश्यताम्",
        "logout": "निर्गमनम्",
        "searchprofile-advanced-tooltip": "नामाकाशेषु अन्विष्यताम्",
        "search-result-size": "$1 ({{PLURAL:$2|1 शब्दः|$2 शब्दाः}})",
        "search-result-category-size": "{{PLURAL:$1|1 योजकः|$1 योजकाः}} ({{PLURAL:$2|1 उपवर्गः|$2 उपवर्गाः}}, {{PLURAL:$3|1 सञ्चिका|$3 सञ्चिकाः}})",
-       "search-result-score": "सम्बन्धः : $1%",
        "search-redirect": "($1 तः अनुप्रेषितम्)",
        "search-section": "(विभागः $1)",
        "search-file-match": "(सञ्चिकापाठेन सह मेलः अस्ति)",
        "uploadwarning": "उत्तारणस्य पूर्वसूचना ।",
        "uploadwarning-text": "अधो दत्तं सञ्चिकाविवरणं संस्कृत्य पुनः यतताम् ।",
        "savefile": "सञ्चिकां संरक्षतु ।",
-       "uploadedimage": "\"[[$1]]\" उपारोहितानि (uploaded)",
-       "overwroteimage": "\"[[$1]]\" इत्यस्य नूतनावतरणम् उत्तारयतु ।",
        "uploaddisabled": "सक्रियम् उत्तारयतु ।",
        "copyuploaddisabled": "निष्क्रियतः यु.आर्.एल् तः उत्तारयतु  ।",
        "uploaddisabledtext": "उत्तारितसञ्चिकाः निष्क्रियाः ।",
        "watchlist-details": "सम्भाषणपृष्ठानि विहाय {{PLURAL:$1|$1 पृष्ठं|$1 पृष्ठानि}} भवतः/भवत्याः अवेक्षणाऽऽवलिः ।",
        "wlheader-enotif": "विद्युन्मानपत्रस्य सूचनाः सक्रियाः ।",
        "wlheader-showupdated": "भवतः सन्दर्शनस्य पश्चात् परिवर्तितानि पुटानि स्थूलाक्षरैः निर्दिष्टानि ।",
+       "wlnote": "अधस्तात् {{PLURAL:$1|'''1''' परिवर्तनमस्ति|अन्तिमानि '''$1''' परिवर्तनानि सन्ति}},{{PLURAL:$2|गते दिवसे|'''$2''' गतेषु दिवसेषु}}, , $3, $4. इति",
        "wlshowlast": "अन्तिमाः $1 होराः, अन्तिमानि $2 दिनानि $3 दृश्यन्ताम्",
        "watchlist-options": "अवेक्षणाऽऽवलेः विकल्पाः",
        "watching": "निरीक्षते...",
        "import": "पृष्ठानां निर्यातं करोतु",
        "importinterwiki": "ट्रान्स् विकि आयातकाः",
        "import-interwiki-text": "आयातं कर्तुं एकां विकिं एकं पुटं चिनोतु ।  \nपुनरावृत्तीनां दिनाङ्कानि, सम्पादनानि च सुरक्षितानि भविष्यन्ति। \nसर्वाः ट्रान्सविक्यायातक्रियाः नामाभिलेखिताः [[Special:Log/import|आयातसूचिकासु]] स्थापिताः ।",
-       "import-interwiki-source": "स्रोतविकि/पुटम्",
        "import-interwiki-history": "एतत्पुटार्थं सर्वेतिहासान् पुनरावृत्तीः च प्रकृतीः करोतु ।",
        "import-interwiki-templates": "प्राकृतीः अनर्भावयतु ।",
        "import-interwiki-submit": "आयातं करोतु ।",
        "watchlisttools-view": "योग्यपरिवर्तनानि दृश्यन्ताम्",
        "watchlisttools-edit": "अवेक्षणाऽऽवलिः दृश्यतां, सम्पाद्यतां च",
        "watchlisttools-raw": "विवरणरहिता अवलोकनावलिः सम्पाद्यताम्",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|à¤\85म्भाषणम्]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|सम्भाषणम्]])",
        "unknown_extension_tag": "अज्ञातं वर्तमानसूत्रम् $1",
        "duplicate-defaultsort": "'''पूर्वसूचना''' \"$1\" इति पुरातनं मूलक्रमाङ्कनकुड्मलं विहाय  \"$2\" इति नवीनं मूलक्रमाङ्कनकुण्डलत्वेन स्वयमेव नयति एतत् ।",
        "version": "आवृत्तिः",
        "version-extensions": "अनुस्थापितानि विस्तरणानि ।",
+       "version-skins": "छादन",
        "version-specialpages": "विशेषपृष्ठानि",
        "version-parserhooks": "विन्यासस्य आलम्बः ।",
        "version-variables": "भङ्गुरम्",
        "version-antispam": "अनिष्टस्य अवरोधः ।",
-       "version-skins": "छादन",
        "version-other": "अन्यत्",
        "version-mediahandlers": "माध्यनिर्वाहकाः ।",
        "version-hooks": "आलम्बाः ।",
index 7ffcdeb..f643b26 100644 (file)
@@ -26,6 +26,7 @@
        "tog-watchdefault": "Уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-watchmoves": "Аатын уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-watchdeletion": "Соппут сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
+       "tog-watchrollback": "Төннөрбүт сирэйдэрбин кэтэбилим тиһигэр киллэрэн ис",
        "tog-minordefault": "Уларытыылары атын этиллибэтэҕинэ кыра уларытыы курдук бэлиэтээ",
        "tog-previewontop": "Хайдах буоларын уларытар түннүк үрдүнэн (иннигэр) көрдөр",
        "tog-previewonfirst": "Хайдах буоларын тута көрдөр",
        "talkpagelinktext": "Ырытыы",
        "specialpage": "Анал сирэй",
        "personaltools": "Тус бэйэ туттар тэриллэрэ",
-       "postcomment": "Саҥа түһүмэх",
        "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
        "views": "Көрүү",
        "hidetoc": "көрдөрүмэ",
        "collapsible-collapse": "Сабыы",
        "collapsible-expand": "Тэнитии",
+       "confirmable-confirm": "{{GENDER:$1|Бигэргэтэҕин}} дуо?",
+       "confirmable-yes": "Сөп",
+       "confirmable-no": "Суох",
        "thisisdeleted": "$1 көрдөрөбүн эбэтэр хостуубун дуу?",
        "viewdeleted": "$1 көрдөрөбүн?",
        "restorelink": "{{PLURAL:$1|биир сотторуллубут көннөрүү|$1 сотторуллубут көннөрүүлэр}}",
        "databaseerror-text": "Билии олоҕор алҕас таҕыста.\nБырагыраамма алҕаһа буолуон сөп.",
        "databaseerror-textcl": "Билии олоҕор алҕас таҕыста.",
        "databaseerror-query": "Ыйытык: $1",
+       "databaseerror-function": "Функция: $1",
        "databaseerror-error": "Алҕас: $1",
        "laggedslavemode": "Болҕой: Бу сирэй бүтэһик уларытыылара суох буолуон сөп",
        "readonly": "Билии олоҕун уларытар бобуллубут",
        "invalidtitle-knownnamespace": "«$2» аат далыгар маннык тиэкистээх «$3» сатаммат аат",
        "invalidtitle-unknownnamespace": "Биллибэт аат дала $1 нүөмэрдээх, \"$2\" тиэкистээх сатаммат аат",
        "exception-nologin": "Ааккын билиһиннэрбэтэххин",
-       "exception-nologin-text": "Маны көрөргө эбэтэр оҥорорго [[Special:Userlogin|ааккын билиһиннэриэхтээххин]].",
+       "exception-nologin-text": "Маны көрөргө эбэтэр оҥорорго ааккын билиһиннэриэхтээххин.",
        "exception-nologin-text-manual": "Көрөргө эбэтэр оҥорорго маны гыныахтааххын: $1.",
        "virus-badscanner": "Сатаммата. Вирус сканера биллибэтэ: ''$1''",
        "virus-scanfailed": "скан сыыһата (куода $1)",
        "externaldberror": "Тас киирии билиитин олоҕун сыыһата буолла, эбэтэр тас киирии билииҥ олоҕун саҥардар кыаҕыҥ суох.",
        "login": "Киир",
        "nav-login-createaccount": "Киир / бэлиэтэн",
-       "loginprompt": "{{SITENAME}} саайтыгар киирэргэ «cookies» туттары көҥүллээ.",
        "userlogin": "Киир / бэлиэтэн",
        "userloginnocreate": "Киир",
        "logout": "Тахсыы",
        "preview": "Холоон көрүү",
        "showpreview": "Уларытыах иннинэ көрүү",
        "showdiff": "Уларытыылар",
+       "blankarticle": "<strong>Сэрэтии:</strong> Оҥорор сирэйиҥ кураанах.\nБу тимэҕи «{{int:savearticle}}» хос баттаатаххына кураанах сирэй оҥоһуллуо.",
        "anoneditwarning": "'''Болҕой:''' Системаҕа киирбэтэххин. Онон аатыҥ оннугар IP аадаырыһыҥ бу сирэй историятыгар киириэ.",
        "anonpreviewwarning": "''Эн тиһиккэ ааккын эппэттэххин. Уларытыыгын бигэргэттэххинэ IP-аадырыһыҥ сирэй устуоруйатыгар суруллуо.''",
        "missingsummary": "'''Санатыы:''' Уларыппытыҥ кылгас быһаарыытын суруйбатаххын. Уларытыыны бигэргэттэххинэ улартытыыҥ хос быһаарыыта суох барыа.",
        "parser-template-recursion-depth-warning": "($1) халыып рекурсиятын муҥура бүппүт (Превышен предел глубины рекурсии)",
        "language-converter-depth-warning": "Тыл конвертерын дириҥин хааччаҕа куоһарыллыбыт ($1)",
        "node-count-exceeded-category": "Түмүктэрин ахсаана аһара барбыт сирэйдэр",
+       "node-count-exceeded-category-desc": "Сирэй түмүгүн ахсаана сиэри таһынан барбыт.",
        "node-count-exceeded-warning": "Сирэй түмүгүн ахсаана таһынан барбыт",
        "expansion-depth-exceeded-category": "Аһыллыытын дириҥэ куоһарыллыбыт сирэйдэр",
+       "expansion-depth-exceeded-category-desc": "Сирэй аһыллыытын дириҥэ куоһарыллыбыт.",
        "expansion-depth-exceeded-warning": "Сирэйгэ угуллубут билэлэр аһара элбээбиттэр",
        "parser-unstrip-loop-warning": "Сабыллыбатах pre көһүннэ",
        "parser-unstrip-recursion-limit": "Рекурсия ахсаана таһынан барбыт ($1)",
        "currentrev": "Билиҥҥи барыл",
        "currentrev-asof": "Билиҥҥи торум манна: $1",
        "revisionasof": "$1 барыл",
-       "revision-info": "Ð\92еÑ\80Ñ\81иÑ\8f Ð¾Ñ\82 $1; $2",
+       "revision-info": "Ð\91аÑ\80Ñ\8bл $1; {{GENDER:$6|$2}}$7",
        "previousrevision": "←Инники барыл",
        "nextrevision": "Аныгыскы барыл→",
        "currentrevisionlink": "Билиҥҥи барыл",
        "rev-deleted-event": "(бэлиэтээһин дьайыыта сотулунна)",
        "rev-deleted-user-contribs": "[кыттааччы аата эбэтэр IP-аадырыһа сотуллубуттар — уларытыы көстүбэт оҥоһуллубут]",
        "rev-deleted-text-permission": "Сирэй бу барыла '''сотуллубут'''.\nБыһаарыыта  [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
+       "rev-suppressed-text-permission": "Сирэй бу барыла <strong>кистэммит</strong>.\nБыһаарыы [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баар.",
        "rev-deleted-text-unhide": "Сирэй ити барыла '''сотуллубут'''.\nБаҕар ол туһунан [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} сотуу сурунаалыгар] баара буолуо.\nОл да буоллар эн дьаһабыл буоларыҥ быһыытынан [$1 барылы көрүөххүн сөп].",
        "rev-suppressed-text-unhide": "Сирэй бу барыла '''кистэммит'''.\nБыһаарыы баҕара [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} кистээһин сурунаалыгар] баара буолуо.\nЭн дьаһабыл буоларыҥ быһыытынан [ол барылы көрүөххүн $1] сөп.",
        "rev-deleted-text-view": "Ыстатыйа бу барыла '''сотуллубут'''.\nОл эрэн ону көрүөххүн сөп.\nТоҕо сотуллубутун быһаарыыта [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} манна] баар буолуон сөп.",
        "revdelete-text-text": "Сотуллубут барыллар уруккутун курдук сирэй устуоруйатыгар көстүөхтэрэ, ол эрэн иһинээҕитэ сорҕото киэҥ эйгэҕэ көрдөрүллүө суоҕа.",
        "revdelete-text-file": "Билэ сотуллубут барыллара уруккутун курдук сирэй устуоруйатыгар көстүөхтэрэ, ол эрэн иһинээҕитэ сорҕото киэҥ эйгэҕэ көрдөрүллүө суоҕа.",
        "logdelete-text": "Сурунаалтан сотуллубут уруккутун курдук сурунаал устуоруйатыгар көстүөҕэ, ол эрэн иһинээҕитин сорҕото киэҥ эйгэҕэ көрдөрүллүө суоҕа.",
-       "revdelete-text-others": "Өскөтүн эбии хааччах турбатах буоллаҕына, {{grammar:genitive|{{SITENAME}}}} атын дьаһабыллара урукку курдук кистэммити көрөр уонна чөлүгэр түһэрэр кыахтаахтар.",
+       "revdelete-text-others": "Өскөтүн эбии хааччах турбатах буоллаҕына, атын дьаһабыллар урукку курдук кистэммити көрөр уонна чөлүгэр түһэрэр кыахтаахтар.",
        "revdelete-confirm": "Бука диэн кырдьык бу дьайыыны онороргун, содула туох буоларын өйдүүргүн уонна [[{{MediaWiki:Policy-url}}|сиэри]] тутуһаргын бигэргэт.",
        "revdelete-suppress-text": "Кистээһин маннык түбэлтэлэргэ '''эрэ''' оҥоһуллар:\n* Баһааҕырдар буолуон сөптөөҕү суруйуу\n* Киһи бэйэтин туһунан тоҕооһо суохтук суруллубут буоллаҕына\n*: <em>дьиэтин аадырыһа, төлөппүөннэрин нүөмэрэ, пааспарын нүөмэрэ уо.д.а.</em>",
        "revdelete-legend": "Хааччахтары туруоруу:",
        "searchprofile-advanced-tooltip": "Этиллибит аат далларыгар көрдөөһүн",
        "search-result-size": "$1 ({{PLURAL:$2|1 тыл|$2 тыл}})",
        "search-result-category-size": "{{PLURAL:$1|$1 элэмиэн|$1 элэмиэннэр}} ({{PLURAL:$2|$2 субкатегория|$2 субкатегориялар}}, {{PLURAL:$3|$3 билэ|$3 билэлэр}})",
-       "search-result-score": "Релевантноһа: $1%",
        "search-redirect": "(утаарыы $1)",
        "search-section": "($1 сиэксийэ)",
        "search-file-match": "(билэ иһинээҕитин кытта сөп түбэһэр)",
        "uploadwarning": "Сэрэтии",
        "uploadwarning-text": "Бука диэн аллара баар билэ туһунан суругу уларыт уонна өссө хатылаа.",
        "savefile": "Билэни суруттарыы",
-       "uploadedimage": "суруттарылынна \"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" киллэриллибит саҥа торума",
        "uploaddisabled": "Суруттарыы бобуллубут",
        "copyuploaddisabled": "URL көмөтүнэн хачайдыыр кыах араарыллыбыт.",
        "uploaddisabledtext": "Билэлэри суруттарар көҥүллэммэт.",
        "randomincategory": "Категория түбэспиччэ ыстатыйата",
        "randomincategory-invalidcategory": "\"$1\" диэн категория суох эбит.",
        "randomincategory-nopages": "Бу категорияҕа [[:Category:$1]] киирэр ыстатыйалар суохтар.",
-       "randomincategory-selectcategory": "Категория түбэспиччэ сирэйигэр көс: $1 $2.",
-       "randomincategory-selectcategory-submit": "Көс",
        "randomredirect": "Түбэспиччэ утаарыы",
        "randomredirect-nopages": "Бу аат далыгар($1) көһөрөр ыйынньыктар суохтар.",
        "statistics": "Статистика",
        "watchlist-details": "Ырытыы сирэйдэрин аахпатахха {{PLURAL:$1|$1 сирэйи кэтиигин|$1 сирэй эн кэтэбилгэр сылдьар}}.",
        "wlheader-enotif": "Эл. почтанан биллэрии холбоммут.",
        "wlheader-showupdated": "Бүтэһик киирииҥ кэннэ уларыйбыт сирэйдэр '''модьу''' бичигинэн бэлиэтэннилэр.",
-       "wlnote2": "Манна {{PLURAL:$1|кэнники чааска|кэнники <strong>$1</strong> чааска}} оҥоһуллубут уларытыылар көстөллөр, $2 $3.",
+       "wlnote": "Манна кэлиҥҥи {{PLURAL:$2|чаас|'''$2''' чаас}} иһигэр оҥоһуллубут бүтэһик $1 уларытыы көрдөрүлүннэ, бу кэмҥэ туругунан $3 $4.",
        "wlshowlast": "бүтэһик $1 чааска $2 күҥҥэ $3 көрдөр",
        "watchlist-options": "Кэтээн көрүү туруоруутун уларытыы",
        "watching": "Кэтээ...",
        "import": "Сирэйдэри импортааһын",
        "importinterwiki": "Биики ыккардынааҕы импорт",
        "import-interwiki-text": "Биикини уонна импортанар сирэй аатын киллэр.\nУларытыылар күннэрэ-ыйдара уонна аапптардар ааттара оннуларынан хаалыахтара.\nБиики ыккардынааҕы импорт дьайыылара [[Special:Log/import|аналлаах сурунаалга]] суруллаллар.",
-       "import-interwiki-source": "Ылыллыбыт биикитэ/сирэйэ:",
        "import-interwiki-history": "Сирэй туох баар историятын көһөрөргө",
        "import-interwiki-templates": "Бары халыыптары киллэр",
        "import-interwiki-submit": "Импортаа",
        "duplicate-defaultsort": "Болҕой: Наардааһын «$2» күлүүһэ урукку «$1» күлүүһү сабар (Ключ сортировки переопределяет прежний ключ).",
        "version": "MediaWiki барыла (биэрсийэтэ)",
        "version-extensions": "Туруоруллубут расширениялар",
+       "version-skins": "Тас көстүү барыллара",
        "version-specialpages": "Аналлаах сирэйдэр",
        "version-parserhooks": "синтаксическай анализатор перехватчиктара",
        "version-variables": "Уларыйар дааннайдар (переменнайдар)",
        "version-antispam": "Спаамтан көмүскэнии",
-       "version-skins": "Тас көстүү барыллара",
        "version-other": "Атын",
        "version-mediahandlers": "Медиа уларытааччылар",
        "version-hooks": "Перехватчиктар",
index dc1661a..0811190 100644 (file)
        "talkpagelinktext": "Ro̠ṛme",
        "specialpage": "Osokayteaḱ sakam",
        "personaltools": "Nijaḱ jontropạti",
-       "postcomment": "Nãwã pahaṭa",
        "articlepage": "Menaḱ sakam uduḱme",
        "talk": "Galmarao",
        "views": "Ñel koyoḱ",
        "externaldberror": "Hoe daṛeyaḱa jahan bahre reaḱ jacaeaḱ ḍaṭabes vul hoeakana se amaḱ bahre reaḱ ekaunṭ do nahaḱ halot aguire ạidạri bạnuḱa.",
        "login": "bolok' duar",
        "nav-login-createaccount": "Boloḱ́ duạr / ekaunt tearme",
-       "loginprompt": "{{SITENAME}}-re boloḱem meneḱ khan amaḱ sendrare kuki kạmi ehoṕ hoyoḱtama.",
        "userlogin": "Bhitri bolon / ekaunṭ tear",
        "userloginnocreate": "Bhitri bolo",
        "logout": "Bahre oḍoń",
        "filedesc": "Guṭ katha",
        "fileuploadsummary": "Guṭ katha",
        "savefile": "Rẽt rukhiyaymẽ",
-       "uploadedimage": "\"[[$1]]\" rakaṕ huyena",
        "upload-description": "Rẽt reaḱ jạṛ",
        "watchthisupload": "Noa rẽt ńelmẽ",
        "upload-file-error": "Bhitri reaḱ bhul",
index a1ce286..61ae8f9 100644 (file)
@@ -8,12 +8,13 @@
                        "לערי ריינהארט",
                        "아라",
                        "Via maxima",
-                       "Uharteko"
+                       "Uharteko",
+                       "Taxandru"
                ]
        },
-       "tog-underline": "Sutalìnia sos ligàmenes",
-       "tog-hideminor": "Cua sos càmbios minores in sa pàgina de sos ùrtimas càmbios",
-       "tog-hidepatrolled": "Cua sos càmbios verificados in sos ùrtimos càmbios",
+       "tog-underline": "Sutalìnia sos ligòngios",
+       "tog-hideminor": "Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias",
+       "tog-hidepatrolled": "Cua is mudas verificadas in is ùrtimos càmbios",
        "tog-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
        "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totu sos càmbios, non sos prus reghentes ebbia",
        "tog-usenewrc": "Pone in pare sos càmbios de cada pàgina in sos ùrtimos càmbios e in sa watchlist",
@@ -27,7 +28,7 @@
        "tog-watchdeletion": "Agiunghe pàginas e documentos chi apo fuliadu in sa watchlist mea",
        "tog-minordefault": "Marca comente minores pro difetu totu sos càmbios",
        "tog-previewontop": "Ammustra s'anteprima in subra de sa casella de càmbiu e no in suta",
-       "tog-previewonfirst": "Ammustra s'anteprima pro su primu càmbiu",
+       "tog-previewonfirst": "Ammustra s'anteprima pro sa prima muda",
        "tog-enotifwatchlistpages": "Imbia·mi una post.el. cando b'at àpidu unu càmbiu in una pàgina o in unu documentu de sa watchlist mea",
        "tog-enotifusertalkpages": "Imbia·mi una post.el. cando sa pàgina de sas cuntierras meas est cambiada",
        "tog-enotifminoredits": "Imbia·mi una post.el. fintzas pro sos càmbios minores de sas pàginas e documentos",
        "tog-fancysig": "Trata sa firma comente unu testu wiki (sena ligàmenes automàticos)",
        "tog-uselivepreview": "Imprea sa funtzione \"anteprima bia\" (isperimentale)",
        "tog-forceeditsummary": "Averte·mi si su campu ogetu est bòidu",
-       "tog-watchlisthideown": "Cua sos càmbios meos dae sa watclist",
-       "tog-watchlisthidebots": "Cua sos càmbios de sos bots dae sa watchlist",
+       "tog-watchlisthideown": "Cua sas mudas meas dae sa watclist",
+       "tog-watchlisthidebots": "Cua sas mudas de sos bots dae sa watchlist",
        "tog-watchlisthideminor": "Cua sos càmbios minores dae sa watchlist",
        "tog-watchlisthideliu": "Cua sos càmbios de sos utentes intrados dae sa watchlist",
        "tog-watchlisthideanons": "Cua sos càmbios de sos utentes anònimos dae sa watchlist",
-       "tog-watchlisthidepatrolled": "Cua càmbios verificados dae sa watchlist",
+       "tog-watchlisthidepatrolled": "Cua mudas verificadas dae sa watchlist",
        "tog-ccmeonemails": "Imbia·mi sas còpias de sas post.els chi imbio a sos àteros utentes",
        "tog-showhiddencats": "Ammustra sas categorias cuadas",
        "tog-useeditwarning": "Amonestamì si lassu una pagina cun mudantzias chena de sarvai.",
        "retrievedfrom": "Bogadu dae  \"$1\"",
        "youhavenewmessages": "Tenes $1 ($2).",
        "youhavenewmessagesmanyusers": "Tenes $1 dae utentes ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|unu messàggiu nou|999=messàggios noos}}",
        "youhavenewmessagesmulti": "Tenes messàgios noos in $1",
        "editsection": "càmbia",
        "editold": "càmbia",
        "hidetoc": "cua",
        "collapsible-collapse": "Serra e istringhe",
        "collapsible-expand": "Aberi",
+       "confirmable-yes": "Eja",
+       "confirmable-no": "No",
        "thisisdeleted": "Càstiare o recuperare $1?",
        "viewdeleted": "Vista $1?",
        "restorelink": "{{PLURAL:$1|unu càmbiu burradu|$1 càmbios burrados}}",
        "nstab-project": "Pàgina de servìtziu",
        "nstab-image": "Documentu",
        "nstab-mediawiki": "Messàgiu",
-       "nstab-template": "Modellu",
+       "nstab-template": "Template",
        "nstab-help": "Agiudu",
        "nstab-category": "Categoria",
        "nosuchaction": "No esistit custa atzione",
        "nosuchactiontext": "S'atzione ispetzificada in sa URL no est vàlida.\nEst possìbile chi sa URL siat istada carcada male, o si siat sighidu unu ligàmene non vàlidu.\nCustu diat pòdere èssere unu \"bug\" de {{SITENAME}}.",
        "nosuchspecialpage": "Custa pàgina ispetziale no esistit",
-       "nospecialpagetext": "<strong>As pedidu una pàgina ispetziale non vàlida.</strong>\n\nUna lista de pàginas ispetziales vàlidas l'agatas in [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>As pedidu una pàgina ispetziale non vàlida.</strong>\n\nUna lista de pàginas ispetziales vàlidas dd'agatas in [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Faddina",
-       "databaseerror": "Faddina de sa base de datos",
-       "readonly": "Base de datos blocada",
-       "enterlockreason": "Inserta su motivu de su blocu, ispetzifichende su momentu probàbile chi su blocu at a agabbare",
+       "databaseerror": "Faddina de su database",
+       "databaseerror-query": "Rechesta: $1",
+       "databaseerror-function": "Funtzione: $1",
+       "databaseerror-error": "Faddina: $1",
+       "readonly": "Database bloccadu",
+       "enterlockreason": "Inserta su motivu de su blocu, ispetzifichende su momentu probàbile chi su blocu at a acabbare",
        "readonlytext": "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.\n\nS'aministradore chi dd'at bloccadu at donadu custa ispiegatzione: $1",
        "missing-article": "Su database no at agatadu su testu de una pàgina ki diat àer agatadu a suta de su nùmene \"$1\" $2.\n\nCustu a su sòlitu si verìficat cando bi est unu ligàmine in sa stòria o in unu cunfrontu intre revisiones de una pàgina ki est stada fuliada.\n\nSi no est custu su casu, s'est agatada una faddina de su software.\nPro praxere signa s'acuntèssidu a unu [[Special:ListUsers/sysop|amministradore]] spetzifichende su URL de sa faddina.",
        "missingarticle-rev": "(revisione nùmeru: $1)",
        "cannotdelete": "No est stadu possìbile burrare sa pàgina o su file \"$1\".\nPodet èsser stadu burradu dae calicunu àteru.",
        "badtitle": "Tìtulu malu",
        "badtitletext": "Su tìtulu de sa pàgina ch'as pediu est bùidu, isballiau, o iscritu in is cullegamentus inter-wiki in manera non currègia o cun caràteres no amìtius.",
-       "viewsource": "Càstia testu codificadu",
+       "viewsource": "Càstia mitza",
+       "viewsource-title": "Càstia sa mitza de $1",
        "actionthrottled": "Atzione rimandada",
-       "namespaceprotected": "Non tenes su permissu de acontzare is pàginas in su nùmene-lugu '''$1'''.",
+       "namespaceprotected": "Non tenes su permissu de cambiare is pàginas in su nùmene-lugu '''$1'''.",
        "ns-specialprotected": "Is pàginas ispetziales non podent èssere acontzadas.",
        "exception-nologin": "Non ses intrau",
        "virus-scanfailed": "scansione faddida (còdixe $1)",
        "virus-unknownscanner": "antivirus disconnotu:",
-       "logouttext": "'''As acabadu sa sessione.'''\n\nImmoe podes sighire a impreare {{SITENAME}} in forma anònima, o ti podes <span class='plainlinks'>[$1 identificare torra]</span> comente su de prima o comente usuàriu diferente.\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas.",
-       "yourname": "Nùmene utente",
-       "yourpassword": "Paràula de òrdine:",
-       "yourpasswordagain": "Repiti sa paràula de òrdine:",
+       "logouttext": "<strong>As acabadu sa sessione.</strong>\n\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas dae su browser tuo.",
+       "welcomeuser": "Benénnidu, $1!",
+       "welcomecreation-msg": "Su contu tuo est istadu creadu.\nSi boles podes cambiare is [[Special:Preferences|prefèntzias tuas]] pro {{SITENAME}}",
+       "yourname": "Nùmene usuàriu",
+       "userlogin-yourname": "Nùmene usuàriu",
+       "userlogin-yourname-ph": "Inserta su nùmene usuàriu tuo",
+       "createacct-another-username-ph": "Inserta su nùmene usuàriu:",
+       "yourpassword": "Password:",
+       "userlogin-yourpassword": "Password",
+       "userlogin-yourpassword-ph": "Inserta sa password tua",
+       "createacct-yourpassword-ph": "Inserta una password",
+       "yourpasswordagain": "Repiti sa password:",
+       "createacct-yourpasswordagain": "Cunfirma sa password",
+       "createacct-yourpasswordagain-ph": "Inserta sa password torra",
        "remembermypassword": "Ammenta sa paràula de òrdine in custu carculadore (pro unu màssimu de $1 {{PLURAL:$1|die|dies}})",
        "yourdomainname": "Ispetzìfica su domìniu",
        "login": "Intra",
        "logout": "Serra sessione",
        "userlogout": "Essida",
        "notloggedin": "Non ses intradu",
+       "userlogin-noaccount": "Non tenes unu contu?",
+       "userlogin-joinproject": "Registra⋅ti a {{SITENAME}}",
        "nologin": "Non tenes unu contu? '''$1'''.",
        "nologinlink": "Crea unu contu",
        "createaccount": "Crea contu",
        "gotaccount": "Tenes giai unu contu? $1.",
        "gotaccountlink": "Identìfica·ti",
-       "createaccountmail": "via e-mail",
+       "userlogin-createanother": "Crea un àteru contu",
+       "createacct-emailrequired": "Indirutzu Email",
+       "createacct-emailoptional": "Indiritzu email (optzionale)",
+       "createacct-email-ph": "Inserta s'indiritzu email tuo",
+       "createacct-another-email-ph": "Inserta s'indiritzu email",
+       "createaccountmail": "Imprea una password a sorte e ispedidda a su indiritzu email ispetzificadu",
+       "createacct-realname": "Nùmene beru (optzionale)",
        "createaccountreason": "Motivu:",
-       "badretype": "Sas paràulas de òrdine chi as insertadu non currispondent.",
+       "createacct-reason": "Motivu",
+       "createacct-reason-ph": "Proite ses creande un àteru contu",
+       "createacct-captcha": "Còmpudu de siguresa",
+       "createacct-imgcaptcha-ph": "Inserta su testu chi bides aissusu",
+       "createacct-submit": "Crea su contu tuo",
+       "createacct-another-submit": "Crea un àteru contu",
+       "createacct-benefit-heading": "{{SITENAME}} est òpera de gente che tue.",
+       "createacct-benefit-body1": "{{PLURAL:$1|acontzu|acontzos}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|pàgina|pàginas}}",
+       "badretype": "Is passwords chi as insertadu non currispondent.",
        "userexists": "Su nùmene usuàriu insertadu est giai impreadu.\nSèbera unu nùmene diferente.",
        "loginerror": "Faddina de identificatzione",
-       "noname": "Su nùmene utente insertadu no est vàlidu.",
+       "createacct-error": "Faddina in sa creatzione de su contu",
+       "noname": "Su nùmene usuàriu insertadu no est vàlidu.",
        "loginsuccesstitle": "Ti ses identificadu",
-       "loginsuccess": "'''Immoe ses intradu in {{SITENAME}} cun su nùmene utente \"$1\".'''",
-       "nosuchuser": "Non b'at un'utente cun su nùmene \"$1\".\nSos nùmenes utente sunt sensìbiles a sas lìteras mannas.\nVerìfica su nùmene insertadu o [[Special:UserLogin/signup|crea unu contu nou]].",
-       "nouserspecified": "Deves ispetzificare unu nùmene utente.",
+       "loginsuccess": "'''Immoe ses intradu in {{SITENAME}} cun su nùmene usuàriu \"$1\".'''",
+       "nosuchuser": "Non b'at usuàriu cun su nùmene \"$1\".\nIs nùmenes usuàriu sunt sensìbiles a is lìteras mannas.\nVerìfica su nùmene insertadu o [[Special:UserLogin/signup|crea unu contu nou]].",
+       "nouserspecified": "Deves ispetzificare unu nùmene usuàriu.",
        "wrongpassword": "Sa paràula de òrdine insertada no est bona. Prova torra.",
        "wrongpasswordempty": "No as iscritu sa paràula de òrdine.\nProva torra.",
-       "passwordtooshort": "Sas paràulas de òrdine devent tènnere a su mancu {{PLURAL:$1|1 caràtere|$1 caràteres}}.",
-       "password-name-match": "Sa paràula de òrdine tua devet èssere diferente dae su nùmene utente tuo.",
-       "mailmypassword": "Ispedi una password noa a s'indiritzu e-mail miu",
-       "passwordremindertitle": "Servìtziu Password Reminder di {{SITENAME}}",
+       "passwordtooshort": "Is passwords depent tènner a su mancu {{PLURAL:$1|1 caràtere|$1 caràteres}}.",
+       "password-name-match": "Sa password tua depet èsser diferente dae su nùmene usuàriu tuo.",
+       "mailmypassword": "Resetta sa password",
+       "passwordremindertitle": "Servìtziu Password Reminder de {{SITENAME}}",
        "passwordremindertext": "Calicunu (probabilmenti tue, cun s'indiritzu IP $1) at pediu de arritziri una password noa pro intrare a {{SITENAME}} ($4).\nUna password temporanea pro s'usuàriu \"$2\" est istada impostada a \"$3\".\nChi custu fiat ne is intentziones tuas, depis intrare (log in) e scioberari una password noa.\nSa password temporanea tua at a iscadiri in {{PLURAL:$5|una die|$5 dies}}.\n\nChi non ses istadu a pediri sa password, o chi as torrau a agatare sa password torra e non da depis cambiari prus, non cunsideras custu messagiu e sighi a impreare sa password beccia.",
-       "noemail": "Peruna post.el. resurtat registrada pro s'utente \"$1\".",
-       "passwordsent": "Una paràula de òrdine noa est istada imbiada a s'indiritzu post.el. de s'utente \"$1\".\nPro praghere, cando la retzis identìfica·ti torra.",
+       "noemail": "Peruna e-mail resurtat registrada pro s'usuàriu \"$1\".",
+       "passwordsent": "Una password noa est stada mandada a s'indiritzu e-mail de s'usuàriu \"$1\".\nPro praxere, cando dda retzis identìfica·ti torra.",
        "mailerror": "Faddina imbiende su messàgiu: $1",
        "emailauthenticated": "S'indiritzu e-mail tuo est istadu autenticau su $2 a is $3.",
        "emailconfirmlink": "Cunfirma s'indiritzu e-mail tuo",
        "accountcreated": "Contu creadu",
-       "accountcreatedtext": "S'account usuàriu pro $1 est stadu creadu.",
+       "accountcreatedtext": "Su contu de s'usuàriu [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) est stadu creadu.",
        "createaccount-title": "Creatzione de unu contu pro {{SITENAME}}",
        "loginlanguagelabel": "Limba: $1",
        "createacct-another-realname-tip": "Su nomini beru pois fai de mancu de ddu ponni.\nSi sceberas de du ponni, at a essi imperau po arreconnosci a tui su traballu tuu.",
        "pt-createaccount": "Registra·ti",
        "pt-userlogout": "Essida",
        "changepassword": "Càmbia password",
-       "resetpass_header": "Càmbia sa paràula de òrdine de su contu",
-       "oldpassword": "Paràula de òrdine betza:",
-       "newpassword": "Paràula de òrdine noa:",
-       "retypenew": "Torra a iscrìere sa paràula de òrdine noa:",
-       "resetpass_submit": "Càmbia sa paràula de òrdine e identìfica·ti",
-       "resetpass_forbidden": "Non faghet a cambiare sas paràulas de òrdine",
-       "resetpass-no-info": "Deves èssere identificadu pro abèrrere custa pàgina deretu.",
-       "resetpass-submit-loggedin": "Càmbia paràula de òrdine",
+       "resetpass_header": "Càmbia sa password de su contu",
+       "oldpassword": "Password betza:",
+       "newpassword": "Password noa:",
+       "retypenew": "Torra a iscrìere sa password noa:",
+       "resetpass_submit": "Càmbia sa password e identifica·ti",
+       "resetpass_forbidden": "Non faghet a cambiare sa password",
+       "resetpass-no-info": "Depes èsser identificadu pro abèrrer custa pàgina deretu.",
+       "resetpass-submit-loggedin": "Càmbia password",
        "resetpass-submit-cancel": "Burra",
-       "resetpass-temp-password": "Paràula de òrdine temporànea:",
+       "resetpass-temp-password": "Password temporànea:",
+       "passwordreset": "Reseta sa password",
+       "passwordreset-legend": "Reseta sa password",
+       "passwordreset-username": "Nùmene usuàriu",
+       "passwordreset-domain": "Domìniu:",
+       "passwordreset-email": "Indiritzu email:",
+       "passwordreset-emailtitle": "Particulares de s'usuàriu in {{SITENAME}}",
+       "changeemail": "Càmbia indiritzu email",
+       "changeemail-header": "Càmbia s'indirìtzu email de su contu",
+       "changeemail-oldemail": "Indiritzu email atuale:",
+       "changeemail-newemail": "Indiritzu email nou:",
+       "changeemail-none": "(nudda)",
+       "changeemail-password": "Sa password tua pro {{SITENAME}}:",
+       "changeemail-submit": "Càmbia email",
+       "changeemail-cancel": "Annudda",
+       "resettokens": "Reseta tokens",
        "bold_sample": "Testu Grassu",
        "bold_tip": "Testu Grassu",
        "italic_sample": "Testu Cursivu",
        "link_sample": "Tìtulu ligàmene",
        "link_tip": "Ligàmene internu",
        "extlink_sample": "http://www.example.com tìtulu de su ligàmene",
-       "extlink_tip": "Ligàmene esternu (ammenta su prefissu http://)",
+       "extlink_tip": "Ligàmene a foras (amenta su prefissu http://)",
        "headline_sample": "Testu de su tìtulu",
        "headline_tip": "Tìtulu de su segundu livellu",
        "nowiki_sample": "Inserta su testu non-formatadu inoghe",
        "image_sample": "Esèmpiu.jpg",
        "image_tip": "Incòrpora una pintura",
        "media_sample": "Esèmpiu.ogg",
-       "media_tip": "Ligàmene a unu documentu",
+       "media_tip": "Ligàmene a unu file multimediale",
        "sig_tip": "Firma cun data e ora",
        "hr_tip": "Lìnia orizontale (de impreare cun critèriu)",
        "summary": "Ogetu:",
        "subject": "Tema/tìtulu:",
-       "minoredit": "Custu est unu càmbiu minore:",
+       "minoredit": "Custu est unu càmbiu minore",
        "watchthis": "Pone custa pàgina in sa watchlist mea",
        "savearticle": "Sarva sa pàgina",
-       "preview": "Anteprima",
-       "showpreview": "Ammustra s'anteprima",
-       "showdiff": "Ammustra sos càmbios",
+       "preview": "Antiprima",
+       "showpreview": "Amosta s'antiprima",
+       "showdiff": "Amosta is càmbios",
        "anoneditwarning": "'''Dae cara:''' Non ses identificadu (log in).\nS'indiritzu IP tuo at a èssere registradu in s'istòria de custa pàgina.",
        "anonpreviewwarning": "''Non ses identificadu. Sarvende s'indiritzu IP tuo at a èssere registradu in s'istòria de sa pàgina.''",
        "missingcommenttext": "Inserta unu cummentu inoghe suta.",
-       "summary-preview": "Anteprima ogetu:",
-       "subject-preview": "Anteprima tema/tìtulu:",
-       "blockedtitle": "S'utente est istadu blocadu",
+       "summary-preview": "Antiprima ogetu:",
+       "subject-preview": "Antiprima tema/tìtulu:",
+       "blockedtitle": "S'usuàriu est istadu bloccadu",
        "blockedtext": "'''Custu nùmene usuàriu o indiritzu IP est stadu bloccadu.'''\n\nSu bloccu est stadu postu dae $1. Su motivu de su bloccu est: ''$2''\n\n* Su bloccu incumentzat: $8\n* Su bloccu scadit: $6\n* Intervallu de bloccu: $7\n\nSi boles, podes tzerriare $1 o un'àteru [[{{MediaWiki:Grouppage-sysop}}|amministradore]] pro faeddare de su bloccu.\n\nNota ca sa funtzione 'Ispedi un'e-mail a custu usuàriu' no est ativa ki no est stadu registradu un'indiritzu e-mail vàlidu in is [[Special:Preferences|preferèntzias]] tuas o ki s'usu de custa funtzione est stadu bloccadu.\n\nS'indiritzu IP atuale est $3, su nùmeru ID de su bloccu est #$5.\nPro praxere spetzìfica totu is particulares in antis in carche siat pregunta de acrarimentu.",
        "blockednoreason": "perunu motivu inditadu",
        "loginreqtitle": "Identificatzione rechesta",
        "loginreqlink": "identìfica·ti",
-       "loginreqpagetext": "Deves èssere $1 pro bìdere àteras pàginas.",
-       "accmailtitle": "Paràula de òrdine imbiada.",
+       "loginreqpagetext": "Depes èsser $1 pro bìer àteras pàginas.",
+       "accmailtitle": "Password ispedida.",
        "newarticle": "(Nou)",
        "newarticletext": "Custa pàgina no esistit galu.\nPro creare sa pàgina, scrie in su box inoghe in bàsciu (abbàida sa [$1 pàgina de agiudu] pro àteras informatziones).\nSi ses intradu inoghe pro sbàlliu, carca in su browser tuo su butone '''back/indietro'''.",
-       "anontalkpagetext": "----''Custa est sa pàgina de cuntierra de unu usuàriu anònimu ki no at creadu unu account galu, o ki non dd'usat. Pro custu impreamus su nùmeru de indiritzos IP pro ddu identificare. Is indiritzos IP podent però èsser cundivìdidos dae unos cantos usuàrios. Si ses unu usuàriu anònimu e ritenes ki custos cummentos non sunt diretos a tue, pro praxere [[Special:UserLogin/signup|crea unu account]] o [[Special:UserLogin|identifica·ti (log in)]] pro evitare cunfusione cun àteros usuàrios anònimos.''",
-       "noarticletext": "In custu momentu sa pàgina est bùida.\nPodes [[Special:Search/{{PAGENAME}}|chircare custu tìtulu]] in àteras pàginas, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chircare in is registros ligados] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} acontzare sa pàgina]</span>.",
-       "userpage-userdoesnotexist": "S'account de s'usuàriu \"<nowiki>$1</nowiki>\" no est stadu registradu.\nPro praxere abbàida si boles creare/acontzare custa pàgina.",
-       "userpage-userdoesnotexist-view": "S'account de s'usuàriu \"$1\" no est stadu registradu.",
+       "anontalkpagetext": "----''Custa est sa pàgina de cuntierra de unu usuàriu anònimu ki no at creadu unu account galu, o ki non dd'usat. Pro custu impreamus su nùmeru de indiritzos IP pro ddu identificare. Is indiritzos IP podent però èsser cundivìdidos dae unos cantos usuàrios. Si ses unu usuàriu anònimu e ritenes ki custos cummentos non sunt diretos a tue, pro praxere [[Special:UserLogin/signup|crea unu contu]] o [[Special:UserLogin|identifica·ti (log in)]] pro evitare cunfusione cun àteros usuàrios anònimos.''",
+       "noarticletext": "In custu momentu sa pàgina est bùida.\nPodes [[Special:Search/{{PAGENAME}}|chircare custu tìtulu]] in àteras pàginas, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chircare in is registros ligados] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} cambiare sa pàgina como]</span>.",
+       "userpage-userdoesnotexist": "Su contu de s'usuàriu \"<nowiki>$1</nowiki>\" no est stadu registradu.\nPro praxere abbàida si boles a sèriu creare/cambiare custa pàgina.",
+       "userpage-userdoesnotexist-view": "Su contu de s'usuàriu \"$1\" no est stadu registradu.",
        "updated": "(Atualizadu)",
        "note": "'''Nota:'''",
-       "previewnote": "'''Regorda·ti ca custa est feti una ANTIPRIMA. Is mudàntzias tuas non sunt galu sarbadas!'''",
+       "previewnote": "<strong>Regorda·ti ca custa est feti una ANTIPRIMA.</strong>\nIs mudàntzias tuas non sunt galu sarbadas!",
+       "continue-editing": "Bae a s'àrea de acontzu",
        "previewconflict": "Custa antiprima rapresentat su testu in s'àrea acontzu testu de susu comente at a pàrrer si dda sarbas.",
-       "editing": "Càmbiu de $1",
+       "editing": "Cambiende $1",
+       "creating": "Creande $1",
        "editingsection": "Cambiende $1 (setzione)",
        "editingcomment": "Acontzu de $1 (setzione noa)",
        "editconflict": "Cunflitu de editzione: $1",
        "moveddeleted-notice": "Custa pàgina est istada fuliada.\nSu registru de is fuliaduras e moviduras de sa pàgina est ammustradu pro informatzione.",
        "log-fulllog": "Abbista su registru intreu",
        "edit-conflict": "Cunflitu de editzione.",
+       "postedit-confirmation-created": "Sa pàgina est stada creada",
+       "postedit-confirmation-restored": "Sa pàgina est stada restaurada",
+       "postedit-confirmation-saved": "S'acontzu tuo est stadu sarbadu",
+       "content-model-wikitext": "wikitestu",
+       "content-model-text": "testu normale",
+       "content-model-javascript": "JavaScript",
+       "content-model-css": "CSS",
        "viewpagelogs": "Càstia sos registros de custa pàgina",
        "nohistory": "Non b'est sa stòria de is acontzos pro custa pàgina.",
        "currentrev": "Revisione currente",
        "currentrev-asof": "Versione currente de is $1",
        "revisionasof": "Revisione de is $1",
-       "revision-info": "Revisione de is $1 dae $2",
+       "revision-info": "Revisione de su $4 a is $5 de {{GENDER:$6|$2}}$7",
        "previousrevision": "← Acontzu in antis",
        "nextrevision": "Acontzu in fatu →",
        "currentrevisionlink": "Revisione currente",
        "histlegend": "Cunfrontu intre versiones: sebera sa casella de sa versione ki boles e carca \"Invio\" o su butone in bàsciu.<br />\nCosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente,\n'''({{int:last}})''' = diferèntzias cun sa versione in antis, '''{{int:minoreditletter}}''' = acontzu minore.",
        "history-fieldset-title": "Sfògia sa stòria",
        "history-show-deleted": "Petzi borrados",
-       "histfirst": "Prima",
-       "histlast": "Ã\99rtima",
+       "histfirst": "prima",
+       "histlast": "ùrtima",
        "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
        "historyempty": "(bùida)",
        "history-feed-item-nocomment": "$1 su $2",
        "rev-delundel": "ammustra/cua",
        "rev-showdeleted": "ammustra",
+       "revdelete-no-file": "Su documentu ispetzuficadu no esistit",
        "revdelete-show-file-submit": "Eja",
-       "revdelete-radio-set": "Eja",
+       "revdelete-radio-set": "Cua",
+       "revdelete-log": "Motivu:",
        "revdel-restore": "Muda sa visibilidade",
        "pagehist": "Istòria de sa pàgina",
        "deletedhist": "Istòria fuliada",
+       "revdelete-otherreason": "Motivu diversu o agiuntivu:",
        "revdelete-reasonotherlist": "Àteru motivu",
        "mergehistory-from": "Pàgina de orìgine:",
        "mergehistory-into": "Pàgina de destinatzione:",
        "mergehistory-no-source": "Sa pàgina de orìgine $1 no esistit.",
        "mergehistory-reason": "Motivu:",
        "revertmerge": "Iscontza s'unione",
-       "history-title": "Istòria de is revisiones de \"$1\"",
+       "history-title": "$1: Istòria de is revisiones",
+       "difference-multipage": "(Diferèntzias intre pàginas)",
        "lineno": "Lìnia $1:",
        "compareselectedversions": "Cumpara versiones scioberadas",
        "editundo": "annulla",
        "search-section": "(setzione $1)",
        "search-suggest": "Fortzis fias chirchende: $1",
        "search-interwiki-caption": "Progetos frades",
-       "search-interwiki-default": "$1 resurtados:",
+       "search-interwiki-default": "Resurtados dae $1:",
        "search-interwiki-more": "(àteru)",
        "searchall": "totu",
        "showingresults": "Inoghe sighende {{PLURAL:$1|benit ammustradu '''1''' resurtadu|benint ammustrados '''$1''' resurtados}} incumentzende dae su nùmeru '''$2'''.",
        "prefs-personal": "Datos personales",
        "prefs-rc": "Ùrtimas mudàntzias",
        "prefs-watchlist": "Watchlist",
+       "prefs-watchlist-edits-max": "Cantidade màssima: 1000",
        "prefs-misc": "Àteras preferèntzias",
        "prefs-resetpass": "Càmbia password",
+       "prefs-email": "Sèberos pro sa email",
        "saveprefs": "Sarva preferèntzias",
        "prefs-editing": "Box de acontzadura",
        "rows": "Lìnias:",
        "timezoneregion-asia": "Àsia",
        "timezoneregion-australia": "Austràlia",
        "timezoneregion-europe": "Europa",
-       "prefs-searchoptions": "Possibilidades a subra de sa chirca",
+       "prefs-searchoptions": "Chirca",
        "prefs-namespaces": "Nùmene-logos",
        "prefs-files": "Files",
        "youremail": "E-mail:",
-       "username": "Nùmene usuàriu:",
+       "username": "{{GENDER:$1|Nùmene usuàriu}}:Nùmene usuàriu",
        "prefs-registration": "Ora de registratzione:",
        "yourrealname": "Nùmene beru:",
        "yourlanguage": "Limba:",
        "prefs-info": "Informatzione bàsica",
        "prefs-signature": "Firma",
        "prefs-dateformat": "Formadu data",
-       "prefs-advancedediting": "Sèberos avantzados",
+       "prefs-advancedediting": "Sèberos generales",
+       "prefs-preview": "Antiprima",
        "prefs-advancedrc": "Sèberos avantzados",
        "prefs-advancedrendering": "Sèberos avantzados",
        "prefs-advancedsearchoptions": "Sèberos avantzados",
        "prefs-advancedwatchlist": "Sèberos avantzados",
+       "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Diferèntzias",
        "userrights-user-editname": "Inserta unu nùmene usuàriu:",
-       "editinguser": "Cambiamentu de is deretos usuàriu de s'usuàriu '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+       "editinguser": "Cambiamentu de is deretos usuàriu de s'usuàriu <strong>[[User:$1|$1]]</strong> $2",
        "userrights-reason": "Motivu:",
        "userrights-irreversible-marker": "$1*",
        "group": "Grupu:",
        "group-sysop": "Amministradores",
        "group-bureaucrat": "Buròcrates",
        "group-all": "(totus)",
-       "group-user-member": "Usuàriu",
-       "group-autoconfirmed-member": "Autocunfirmados usuàrios",
-       "group-bot-member": "Bot",
-       "group-sysop-member": "Amministradore",
-       "group-bureaucrat-member": "burocrate",
+       "group-user-member": "{{GENDER:$1|usuàriu}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|usuàrios autocunfirmados}}",
+       "group-bot-member": "{{GENDER:$1|bot}}",
+       "group-sysop-member": "{{GENDER:$1|aministradore}}",
+       "group-bureaucrat-member": "{{GENDER:$1|buròcrate}}",
        "grouppage-user": "{{ns:project}}:Usuàrios",
        "grouppage-autoconfirmed": "{{ns:project}}:Usuàrios autocunfirmadus",
        "grouppage-bot": "{{ns:project}}:Bots",
        "grouppage-sysop": "{{ns:project}}:Amministradores",
        "grouppage-bureaucrat": "{{ns:project}}:Burocrates",
        "right-read": "Lègere pàginas",
-       "right-edit": "Acontzare pàginas",
+       "right-edit": "Cambiare pàginas",
        "right-move": "Mòver pàginas",
        "right-move-subpages": "Mòvere pàginas cun is suta-pàginas issoru",
        "right-move-rootuserpages": "Mòvere is pàginas base de is usuàrios",
        "right-reupload": "Subra-iscrìere files esistentes",
        "right-reupload-own": "Subra-iscrìere files esistentes carrigados dae issetotu",
        "right-upload_by_url": "Carrigare files dae unu URL",
-       "right-autoconfirmed": "Acontzare pàginas mesu-amparadas",
+       "right-autoconfirmed": "No tenet lìmite de atziones pro indiritzos IP",
        "right-delete": "Fuliare pàginas",
        "right-browsearchive": "Chircare pàginas fuliadas",
        "right-undelete": "Restaurare una pàgina",
        "newuserlogpage": "Usuàrios nous",
        "rightslog": "Deretos de is usuàrios",
        "action-read": "lègher custa pàgina",
-       "action-edit": "acontzare custa pàgina",
+       "action-edit": "cambiare custa pàgina",
        "action-createpage": "creare pàginas",
        "action-move": "mòvere custa pàgina",
        "action-movefile": "mòvere custu file",
+       "action-upload": "carriga custu archìviu",
        "action-delete": "burrare custa pàgina",
        "action-browsearchive": "chircare pàginas fuliadas",
        "nchanges": "$1 {{PLURAL:$1|mudàntzia|mudàntzias}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|dae s'ùrtima bisita}}",
+       "enhancedrc-history": "istòria",
        "recentchanges": "Ùrtimas mudàntzias",
        "recentchanges-legend": "Possibilidades subra ùrtimas mudàntzias",
+       "recentchanges-summary": "Sighi is ùrtimas mudàntzias a sa wiki in custa pàgina.",
        "recentchanges-feed-description": "Custu feed riportada is ùrtimas mudàntzias a is cuntènnidos de su giassu.",
        "recentchanges-label-newpage": "Custu acontzu at creadu una pàgina noa",
        "recentchanges-label-minor": "Custu est unu acontzu minore",
        "recentchanges-label-bot": "Custu acontzu est stadu fatu dae unu bot",
-       "recentchanges-legend-newpage": "$1 - pàgina noa",
-       "rcnotefrom": "Sas chi sighint sunt sas mudàntzias dae '''$2''' (fintzas a '''$1''').",
+       "recentchanges-label-unpatrolled": "Custu càmbiu no est istadu cumprobadu",
+       "recentchanges-label-plusminus": "Sa muda de sa mannesa de sa pàgina dae su nùmeru de bytes",
+       "recentchanges-legend-heading": "'''Legenda:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (càstia [[Special:NewPages|is pàginas noas]])",
+       "rcnotefrom": "{{PLURAL:$5|Sa chi sighit est sa mudàntzia|Sas chi sighint sunt sas mudàntzias}} dae <strong>$3, $4</strong> (amostadas fintzas a <strong>$1</strong>).",
        "rclistfrom": "Ammustra mudàntzias dae $3 $2",
        "rcshowhideminor": "$1 acontzos minores",
        "rcshowhideminor-show": "Amosta",
        "rcshowhidebots": "$1 bots",
        "rcshowhidebots-show": "Amosta",
        "rcshowhidebots-hide": "Cua",
-       "rcshowhideliu": "$1 usuàrios intraus",
+       "rcshowhideliu": "$1 usuàrios registrados",
        "rcshowhideliu-show": "Amosta",
        "rcshowhideliu-hide": "Cua",
        "rcshowhideanons": "$1 usuàrios anònimos",
        "rc_categories_any": "Calesisiat",
        "rc-change-size": "$1",
        "newsectionsummary": "/* $1 */ setzione noa",
-       "rc-enhanced-expand": "Ammustra particulares (esigit JavaScript)",
+       "rc-enhanced-expand": "Amosta particulares",
        "rc-enhanced-hide": "Cua particulares",
        "recentchangeslinked": "Mudàntzias ligadas",
        "recentchangeslinked-feed": "Mudàntzias ligadas",
        "uploadbtn": "Càrriga file",
        "reuploaddesc": "Torra a su mòdulu pro su carrigamentu.",
        "uploadnologin": "Non ses intrau",
-       "uploadnologintext": "Depes èsser [[Special:UserLogin|identificadu (log in)]] pro carrigare files.",
+       "uploadnologintext": "Depes èsser $1 pro carrigare files.",
        "uploaderror": "Faddina de carrigamentu",
        "uploadtext": "Imprea su modulu a suta pro carrigare files nous.\nPro castiare o chircare is files giai carrigaus, bae a sa [[Special:FileList|lista de is files carrigaus]]. Carrigamentos de files e de noas versiones de files sunt registradas in su [[Special:Log/upload|registru de carrigamentu]], is burraduras in su [[Special:Log/delete|registru burraduras]].\n\nPro insertare unu file aintru de una pàgina, tocat a faghere unu cullegamentu tipu custu:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' pro impreare sa versione cumpleta de su file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|testo alternativo]]</nowiki></code>''' pro impreare una versione lada 200 pixel insertada in d'unu box, allinniada a manca e cun 'testu alternativu' comente didascalia\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' pro ingenerare unu cullegamentu a su file chentza de du biri",
        "uploadlogpage": "Carrigadas",
        "upload-description": "Descritzione de su file",
        "upload-success-subj": "Carrigamentu acabau",
        "upload-file-error": "Faddina a intru",
+       "img-auth-nofile": "Su File \"$1\" no esistit.",
        "license": "Licèntzia:",
        "license-header": "Licèntzia",
-       "upload_source_file": " (unu file in su computer tuo)",
+       "upload_source_file": "(su file seberadu in su computer tuo)",
        "imgfile": "file",
        "listfiles": "Lista de is files",
        "listfiles_date": "Data",
        "listfiles_size": "Mannesa in byte",
        "listfiles_description": "Descritzione",
        "listfiles_count": "Versiones",
+       "listfiles-latestversion-yes": "Eja",
+       "listfiles-latestversion-no": "No",
        "file-anchor-link": "File",
        "filehist": "Stòria de su file",
        "filehist-help": "Carca unu grupu data/ora pro castiare su file comente si presentada in su tempus indicadu.",
        "imagelinks": "Ligant a custu file",
        "linkstoimage": "{{PLURAL:$1|Sa pàgina ki sighit ligat|Is $1 pàginas ki sighint ligant}} a custu file:",
        "nolinkstoimage": "Peruna pàgina ligat a custu file.",
+       "linkstoimage-redirect": "$1 (reindiritzamentu file) $2",
        "sharedupload": "Custu file benit dae $1 e podet èssere impreau in àteros progetos.",
        "uploadnewversion-linktext": "Carriga una versione noa de custu file",
        "shared-repo-from": "dae $1",
        "filerevert-comment": "Motivu:",
        "filedelete": "Cantzella $1",
        "filedelete-legend": "Cantzella su file",
+       "filedelete-comment": "Motivu:",
        "filedelete-submit": "Cantzella",
        "filedelete-success": "Su file '''$1''' est istadu fuliau.",
+       "filedelete-otherreason": "Motivu diversu o agiuntivu:",
        "filedelete-reason-otherlist": "Àteru motivu",
        "download": "scàrriga",
        "listredirects": "Lista de totu is redirects",
        "randompage": "Pàgina a sa tzurpa",
+       "randomincategory-category": "Categoria:",
        "statistics": "Statìsticas",
        "statistics-header-users": "Statìsticas subra is usuàrios",
        "statistics-pages": "Pàginas",
+       "pageswithprop-submit": "Bae",
        "doubleredirects": "Redirects dòpios",
        "doubleredirectstext": "Custa pàgina cuntenet una lista de pàginas ki re-indiritzant a àteras pàginas de re-indiritzamentu.\nOgni lìnia cuntenet ligàmines a su primu e a su de duos re-indiritzamentu, aici comente sa prima lìnia de sa de duos re-indiritzamentos, chi de sòlitu adòbiat s'artìculu \"beru\", a sa cale fintzas su primu re-indiritzamentu dia depet puntare.\nIs re-indiritzamentos <del>cantzellados</del> sunt stados curretos.",
        "brokenredirects": "Redirects isballiaus",
        "brokenredirectstext": "Custus redirects ligant cun pàginas chi no esistint.",
-       "brokenredirects-edit": "acontza",
+       "brokenredirects-edit": "càmbia",
        "brokenredirects-delete": "cantzella",
        "withoutinterwiki-legend": "Prefissu",
        "withoutinterwiki-submit": "Ammustra",
        "nrevisions": "$1 {{PLURAL:$1|revisione|revisiones}}",
        "nviews": "$1 {{PLURAL:$1|bisura|bisuras}}",
        "lonelypages": "Pàginas burdas",
+       "uncategorizedpages": "Pàginas chentza categoria",
+       "uncategorizedcategories": "Categorias chentza categoria",
+       "uncategorizedimages": "Documentos chentza categoria",
+       "uncategorizedtemplates": "Templates chentza categoria",
+       "unusedcategories": "Categorias no impreadas",
        "unusedimages": "Files no impreaus",
        "popularpages": "Pàginas populares",
+       "wantedcategories": "Categorias chircadas",
        "wantedpages": "Artìculos prus chircados",
+       "wantedfiles": "Documentos chircados",
+       "wantedtemplates": "Templates chircados",
+       "mostlinked": "Pàginas su prus ligadas",
+       "mostlinkedcategories": "Categorias su prus ligadas",
+       "mostimages": "Documentos su prus ligados",
        "mostrevisions": "Pàginas cun prus revisiones",
        "prefixindex": "Ìndighe de is pàginas pro initziales",
        "shortpages": "Pàginas crutzas",
        "longpages": "Pàginas longas",
        "deadendpages": "Pàginas chentza bessida",
        "protectedpages": "Pàginas amparadas",
+       "protectedpages-page": "Pàgina",
+       "protectedpages-expiry": "Iscadit",
+       "protectedpages-reason": "Motivu",
+       "protectedpages-unknown-timestamp": "Isconnottu",
        "protectedtitles": "Tìtulus amparadus",
        "listusers": "Lista usuàrios",
        "usereditcount": "$1 {{PLURAL:$1|acontzu|acontzos}}",
-       "usercreated": "Creadu su $1 a is $2",
+       "usercreated": "{{GENDER:$3|Creadu}} su $1 a is $2",
        "newpages": "Pàginas noas",
        "newpages-username": "Nùmene usuàriu:",
        "move": "Movi",
        "booksources-search-legend": "Chirca fontes libràrias",
        "booksources-isbn": "ISBN:",
        "booksources-go": "Bae",
-       "specialloguserlabel": "Usuàriu:",
-       "speciallogtitlelabel": "Tìtulu:",
+       "specialloguserlabel": "Atzione fata dae:",
+       "speciallogtitlelabel": "Atzione fata subra:",
        "log": "Registros",
        "allpages": "Totu is pàginas",
        "prevpage": "Pàgina in antis ($1)",
        "allpages-bad-ns": "Su nùmene-logu \"$1\" non esistit in {{SITENAME}}.",
        "categories": "Categorias",
        "sp-deletedcontributions-contribs": "contributziones",
-       "linksearch": "Acàpios a foras",
+       "linksearch": "Chirca acàpios de foras",
        "linksearch-ns": "Nùmene-logu:",
        "linksearch-ok": "Chirca",
        "listusers-submit": "Ammustra",
+       "listusers-blocked": "(blocadu)",
        "activeusers-hidebots": "Cua bots",
        "activeusers-hidesysops": "Cua amministradores",
        "listgrouprights-group": "Grupu",
+       "listgrouprights-rights": "Deretos",
        "listgrouprights-members": "(lista de is cumponentes)",
        "mailnologintext": "Depes èsser [[Special:UserLogin|identificadu (login)]] e àer registradu un'indiritzu e-mail vàlidu in is [[Special:Preferences|preferèntzias tuas]] pro imbiare e-mail a àteros usuàrios.",
        "emailuser": "E-mail a custu usuàriu",
        "emailpage": "Ispedi una missada a s'usuàriu",
        "emailpagetext": "Imprea su mòdulu a suta pro ispedire una missada eletrònica a custu usuàriu.\nS'indiritzu chi as insertadu in is [[Special:Preferences|preferèntzias usuàriu tuas]] at a pàrrere comente su chi at ispedidu sa e-mail, pro fàghere sa manera chi su destinatàriu ti respundat deretu.",
-       "defemailsubject": "Missada dae {{SITENAME}}",
+       "defemailsubject": "Missada dae s'usuàriu \"$1\" de {{SITENAME}}",
        "noemailtitle": "Perunu indiritzu e-mail",
        "noemailtext": "Custu usuàriu no at ispetzificadu un indiritzu e-mail vàlidu.",
        "email-legend": "Imbia una missada e-mail a un àteru usuàriu de {{SITENAME}}",
        "usermessage-editor": "Missu de su sistema",
        "watchlist": "Sa watchlist mea",
        "mywatchlist": "Pàginas annotadas",
+       "watchlistfor2": "Pro $1 $2",
        "nowatchlist": "No as indicadu pàginas in sa watchlist tua.",
        "watchnologin": "No intrau (log in)",
-       "addedwatchtext": "Sa pàgina \"[[:$1]]\" est istada aciunta a sa [[Special:Watchlist|watchlist]] tua.\nIs mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere elencadas inoe, e su tìtulu at a aparire in '''grassetto''' in sa pàgina de is [[Special:RecentChanges|ùrtimas mudàntzias]] pro du bidere mengius.",
+       "addedwatchtext": "Sa pàgina \"[[:$1]]\" est istada aciunta a sa [[Special:Watchlist|watchlist]] tua.\nIs mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a benner elencadas inoe.",
        "removedwatchtext": "Sa pàgina  \"[[:$1]]\" est istada tirada dae sa [[Special:Watchlist|watchlist tua]].",
        "watch": "Pone in sa watchlist",
        "watchthispage": "Pone ogru a custu artìculu",
        "protectlogpage": "Amparaduras",
        "protectedarticle": "at amparau \"[[$1]]\"",
        "modifiedarticleprotection": "at cambiau su livellu de amparadura pro \"[[$1]]\"",
+       "prot_1movedto2": "[[$1]] est istada mòvida a [[$2]]",
+       "protect-legend": "Cunfirma amparadura",
        "protectcomment": "Motivu:",
        "protectexpiry": "Iscadèntzia:",
        "protect_expiry_invalid": "S'iscadèntzia est imbàlida.",
        "protect-level-sysop": "Isceti aministradores",
        "protect-summary-cascade": "ricorsiva",
        "protect-expiring": "iscadèntzia: $1 (UTC)",
+       "protect-expiring-local": "iscadit su $1",
        "protect-cascade": "Ampara totu is pàginas inclùdias in custa (amparadura ricorsiva)",
-       "protect-cantedit": "Non podes cambiare is livellus de amparadura pro sa pàgina, pro ite non tenes su permissu de acontzare sa pàgina etotu.",
+       "protect-cantedit": "Non podes cambiare is livellus de amparadura pro sa pàgina, pro ite non tenes su permissu de cambiare sa pàgina etotu.",
        "protect-othertime": "Àteru perìodu:",
+       "protect-otherreason-op": "Àteru motivu",
        "protect-expiry-options": "1 ora:1 hour,1 die:1 day,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite",
        "restriction-type": "Permissu:",
        "restriction-level": "Livellu de restritzioni:",
        "namespace": "Nùmene-logu:",
        "invert": "Fùrria sa seletzione",
        "blanknamespace": "(Printzipale)",
-       "contributions": "Contributziones usuàriu",
+       "contributions": "Contributziones {{GENDER:$1|usuàriu}}",
        "contributions-title": "Contributziones de $1",
        "mycontris": "Contributziones meas",
-       "contribsub2": "Pro $1 ($2)",
+       "contribsub2": "Pro {{GENDER:$3|$1}} ($2)",
        "nocontribs": "Nessuna modifica trovata conformemente a questi criteri.",
-       "uctop": "(ùrtimu de sa pàgina)",
+       "uctop": "(atuale)",
        "month": "Dae su mese (e in antis):",
        "year": "Dae s'annu (e in antis):",
-       "sp-contributions-newbies": "Ammustra feti is contributziones de is accounts noos",
+       "sp-contributions-newbies": "Ammustra feti is contributziones de is contos noos",
        "sp-contributions-blocklog": "registru de is bloccos",
+       "sp-contributions-uploads": "carrigamentos",
+       "sp-contributions-logs": "registros",
        "sp-contributions-talk": "cuntierra",
        "sp-contributions-search": "Chirca contributziones",
        "sp-contributions-username": "Indiritzu IP o nùmene usuàriu:",
        "nolinkshere-ns": "Peruna pàgina ligat a '''[[:$1]]''' in su nùmene-logu seberadu.",
        "isredirect": "redirect",
        "istemplate": "inclusione",
-       "isimage": "acàpiu pintura",
+       "isimage": "acàpiu a file",
        "whatlinkshere-prev": "{{PLURAL:$1|cabudianu|cabudianos $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|imbeniente|imbenientes $1}}",
        "whatlinkshere-links": "← acàpius",
        "whatlinkshere-hidetrans": "$1 inclusionis",
        "whatlinkshere-hidelinks": "$1 acàpius",
        "whatlinkshere-filters": "Filtros",
-       "blockip": "Blocca usuàriu",
+       "blockip": "Blocca {{GENDER:$1|usuàriu}}",
        "blockip-legend": "Blocca usuàriu",
        "blockiptext": "Usa il modulo sottostante per bloccare l'accesso con diritto di scrittura da uno specifico indirizzo IP. Questo blocco deve essere operato SOLO per prevenire atti di vandalismo, ed in stretta osservanza dei principi tutti della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]]. Il blocco non può in nessun caso essere applicato per motivi ideologici.\nScrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avviso essere bloccato (per esempio, cita i titoli di pagine eventualmente già oggetto di vandalismo editoriale).",
        "ipaddressorusername": "Indiritzu IP o nùmene usuàriu:",
        "ipboptions": "2 oras:2 hours,1 die:1 day,3 dies:3 days,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite",
        "badipaddress": "S'indiritzu IP indicadu non est currègidu.",
        "blockipsuccesssub": "Bloccu esecutivu",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] è stadu bloccadu. <br />\nAbbàida sa [[Special:BlockList|lista de IP bloccados]] pro bìder sas bloccaduras.",
-       "ipb-edit-dropdown": "Acontza su motivu de su bloccu",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] è stadu bloccadu. <br />\nCàstia sa [[Special:BlockList|lista de bloccados]] pro bìder sas bloccaduras.",
+       "ipb-edit-dropdown": "Càmbia su motivu de su bloccu",
        "ipb-unblock-addr": "Sblocca $1",
-       "ipb-blocklist-contribs": "Contributziones de $1",
+       "ipb-blocklist-contribs": "Contributziones de {{GENDER:$1|$1}}",
        "unblockip": "Sblocca s'usuàriu",
        "unblockiptext": "Usa il modulo sottostante per restituire il diritto di scrittura ad un indirizzo IP precedentemente bloccato.",
        "ipusubmit": "Boga custu bloccu",
-       "ipblocklist": "Usuàrios e indiritzos bloccados",
+       "ipblocklist": "Usuàrios bloccados",
+       "blocklist-expiry": "Iscadit",
+       "blocklist-reason": "Motivu",
        "ipblocklist-submit": "Chirca",
        "infiniteblock": "infinitu",
        "expiringblock": "scadit su $1 a is $2",
        "blocklogpage": "Bloccos de usuàrios",
        "blocklogentry": "bloccau [[$1]] pro unu tempu de $2 $3",
        "unblocklogentry": "at sbloccau $1",
-       "block-log-flags-nocreate": "creatzione account bloccada",
+       "block-log-flags-nocreate": "creatzione de contu bloccada est",
        "sorbs": "DNSBL",
        "lockdb": "Blocca su database",
        "unlockdb": "Sblocca su database",
        "databasenotlocked": "Su database no est bloccadu.",
        "move-page": "Movimentu de $1",
        "move-page-legend": "Movimentu pàgina",
-       "movepagetext": "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.\nSu tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.\nPodes agiornare automaticamente is redirects ca ligant a su tìtulu originàriu.\nSi sèberas de no, assicura·ti de controllare pro [[Special:DoubleRedirects| reindiritzaduras dòpias]] o [[Special:BrokenRedirects|sballiadas]].\nSes responsàbile de t'assigurare ca is cullegamentos sighint a puntare  a ue depent puntare.\n\nAnnota ca sa pàgina '''non''' s'at a mòver si nde esistit giai un'àtera a su tìtulu nou, si no est ki siat bùida o cun sceti unu reindiritzamentu a sa bècia e siat chentza acontzos in antis. In casu de movimentu sballiadu, duncas, si podet torrare a su tìtulu bèciu, ma non podes subrascrìer una pàgina chi giai esistit.\n\n'''ATENTZIONE:'''\nUnu cambiamentu dràsticu podet creare problemas, mescamente a is pàginas prus populares;\npro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sighire a in antis.",
+       "movepagetext": "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.\nSu tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.\nPodes agiornare automaticamente is redirects ca ligant a su tìtulu originàriu.\nSi sèberas de no, assicura·ti de controllare pro [[Special:DoubleRedirects| reindiritzaduras dòpias]] o [[Special:BrokenRedirects|sballiadas]].\nSes responsàbile de t'assigurare ca is cullegamentos sighint a puntare  a ue depent puntare.\n\nAnnota ca sa pàgina <strong>non</strong> s'at a mòver si nde esistit giai un'àtera a su tìtulu nou, si no est ki siat bùida o cun sceti unu reindiritzamentu a sa bècia e siat chentza acontzos in antis. In casu de movimentu sballiadu, duncas, si podet torrare a su tìtulu bèciu, ma non podes subrascrìer una pàgina chi giai esistit.\n\n<strong>ATENTZIONE!</strong>\nUnu cambiamentu dràsticu podet creare problemas, mescamente a is pàginas prus populares;\npro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sighire a in antis.",
        "movepagetalktext": "Sa pàgina cuntierras asotziada, chi esistit, at a èssere movida automaticamenti impare a sa pàgina base, '''a parte in custos casos''':\n* su movimentu de sa pàgina est intre namespaces diversos;\n* in currispondèntzia de su tìtulu nou esistit giai una pàgina de cuntierras (non bùida);\n* sa casella inoe in bàsciu no est istata sceberada.\n\nIn custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
        "movearticle": "Move sa pàgina",
        "movenologintext": "Depes èsser unu usuàriu registradu e [[Special:UserLogin|identificadu]] pro pòder mòver una pàgina",
        "tooltip-pt-login": "Si cunsìgiat sa registratzione; mancari non siat obligatoria",
        "tooltip-pt-logout": "Essida (log out)",
        "tooltip-ca-talk": "Cuntierras a propositu de su cuntestu de sa pàgina",
-       "tooltip-ca-edit": "Podes acontzare custa pàgina.\nPro praxere, prima de sarbare càstia s'antiprima",
+       "tooltip-ca-edit": "Podes cambiare custa pàgina.\nPro praxere, prima de sarbare càstia s'antiprima",
        "tooltip-ca-addsection": "Incumintza una setzione noa",
        "tooltip-ca-viewsource": "Sa pàgina est amparada.\nPodes castiare sa mitza sua",
        "tooltip-ca-history": "Versiones coladas de custa pàgina",
        "tooltip-t-permalink": "Cullegamentu permanente a custa versione de sa pàgina",
        "tooltip-ca-nstab-main": "Càstia su cuntènnidu de sa pàgina",
        "tooltip-ca-nstab-user": "Càstia sa pàgina usuàriu",
-       "tooltip-ca-nstab-special": "Custa est una pàgina ispetziale, non dda podes acontzare",
+       "tooltip-ca-nstab-special": "Custa est una pàgina ispetziale, non dda podes cambiare",
        "tooltip-ca-nstab-project": "Càstia sa pàgina de servìtziu",
        "tooltip-ca-nstab-image": "Càstia sa pàgina de su file",
        "tooltip-ca-nstab-template": "Càstia su template",
        "metadata-help": "Custu file cuntènnit informatziones aciuntivas, probabilmente aciuntas dae sa fotocamera o dae su scannerizadori impreaus pro ddu creare o ddu digitalizare. Si su file est istadu acontzau, unos particolares podent non currispundere a sa realtade.",
        "metadata-expand": "Ammustra particulares",
        "metadata-collapse": "Cua particulares",
-       "metadata-fields": "Is campus de is metadatos EXIF listaus in custu messàgiu ant a èssere amostaus in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinia, is àteros campus ant a èssere cuaus.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Is campus de is metadatos de imàgine listadus in custu messàgiu ant a èssere amostadus in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinia, is àteros campus ant a èssere cuaus.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-artist": "Autore",
        "exif-exposuretime-format": "$1 s ($2)",
        "exif-fnumber-format": "f/$1",
        "exif-xyresolution-i": "$1 dpi",
        "exif-xyresolution-c": "$1 dpc",
        "exif-colorspace-1": "sRGB",
-       "exif-colorspace-65535": "FFFF.H",
+       "exif-colorspace-65535": "Chentza calibradura",
        "exif-componentsconfiguration-1": "Y",
        "exif-componentsconfiguration-2": "Cb",
        "exif-componentsconfiguration-3": "Cr",
        "size-kilobytes": "$1 KB",
        "size-megabytes": "$1 MB",
        "size-gigabytes": "$1 GB",
-       "watchlistedit-normal-title": "Acontza sa watchlist",
+       "watchlistedit-normal-title": "Càmbia sa lista de annotadas",
        "watchlistedit-raw-titles": "Tìtulos:",
        "watchlisttools-view": "Càstia mudàntzias de importu",
        "watchlisttools-edit": "Càstia e acontza sa watchlist",
        "version-specialpages": "Pàginas ispetziales",
        "version-other": "Àteru",
        "version-version": "(Versione $1)",
-       "version-license": "Licèntzia",
+       "version-license": "Licèntzia MediaWiki",
        "version-software-version": "Versione",
        "fileduplicatesearch-submit": "Chirca",
        "specialpages": "Pàginas ispetziales",
+       "specialpages-note-top": "Legenda",
+       "specialpages-group-login": "Intra / crea contu",
        "specialpages-group-pages": "Listas de is pàginas",
-       "tags-edit": "acontza",
+       "tags-edit": "càmbia",
        "htmlform-selectorother-other": "Àteru",
        "rightsnone": "(nisciunu)",
        "searchsuggest-search": "Chirca",
index 62f3650..b527a83 100644 (file)
        "talkpagelinktext": "Discussioni",
        "specialpage": "Pàggina spiciali",
        "personaltools": "Strumenta pirsunali",
-       "postcomment": "Nova sizzioni",
        "articlepage": "artìculu",
        "talk": "discussioni",
        "views": "Vìsiti",
        "externaldberror": "S'havi virificatu n'erruri cû server d'autinticazzioni sternu, oppuru nun si disponi di l'auturizzazzioni nicissari p'aggiurnari lu propiu accessu sternu.",
        "login": "Trasi",
        "nav-login-createaccount": "Riggìstrati o trasi",
-       "loginprompt": "Tu hai a abbilitari li ''cookies'' pi tràsiri ntâ {{SITENAME}}.",
        "userlogin": "Riggìstrati o trasi",
        "userloginnocreate": "Trasi",
        "logout": "Nesci",
        "edit-conflict": "Cunflittu di edizzioni.",
        "edit-no-change": "La mudifica fu ignurata pirchì nu foru appurtati canci ntô testu.",
        "postedit-confirmation-saved": "Lu canciamentu fu sarbatu.",
-       "edit-already-exists": "Mpussìbbili criari na nova pàggina.\nEsisti ggià.",
+       "edit-already-exists": "Mpussìbbili criari na pàggina nova.\nEsisti ggià.",
        "expensive-parserfunction-warning": "Accura: Sta pàggina cunteni troppi chiamati ê parser functions.\n\nAvissi a èssiri menu di $2, ô mumentu ci {{PLURAL:$1|nn'è $1|nni sunnu $1}}.",
        "expensive-parserfunction-category": "Pàggini cu troppi chiamati ê parser functions",
        "post-expand-template-inclusion-warning": "Accura: la diminzioni di li template nziriti è troppu granni.\nArcuni template non vènunu nziriti.",
        "searchprofile-advanced-tooltip": "Cerca ntê namespace pirsunalizzati",
        "search-result-size": "$1 ({{PLURAL:$2|na parola|$2 paroli}})",
        "search-result-category-size": "{{PLURAL:$1|1 utenti|$1 utenti}} ({{PLURAL:$2|1 suttacatigurìa|$2 suttacatigurìi}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Rilivanza: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(sizzioni $1)",
        "search-suggest": "Forsi circavutu: $1",
        "recentchanges-label-bot": "Stu canciamentu fu fattu dû bot",
        "recentchanges-label-unpatrolled": "Stu canciamentu nun havi ancora statu virificatu",
        "recentchanges-label-plusminus": "La diminsioni dâ pàggina canciau di stu nùmmuru di bytes",
-       "recentchanges-legend-newpage": "$1 - pàggina nova",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (talìa [[Special:NewPages|li pàggini novi]])",
        "rcnotefrom": "Ccà sutta cci sunnu li canciamenti a pàrtiri dû <b>$2</b> (ammustrati nzinu ô <b>$1</b>).",
        "rclistfrom": "Ammustra li canciamenti novi a pàrtiri di $3 $2",
        "rcshowhideminor": "$1 li canciamenti nichi",
        "uploadwarning": "Avvisu di Upload",
        "uploadwarning-text": "Cancia cà sutta la discrizzioni di lu file e prova arré",
        "savefile": "Sarva file",
-       "uploadedimage": "hà carricatu \"[[$1]]\"",
-       "overwroteimage": "carricata na nova virsioni di \"[[$1]]\"",
        "uploaddisabled": "Semu spiacenti, ma lu carricamentu di file è timpuraniamenti suspisu.",
        "uploaddisabledtext": "Lu carricamentu dî file nun è attivu supra a stu situ.",
        "php-uploaddisabledtext": "Li file PHP non sunnu abbilitati. Pi favuri cuntrolla li mpustazzioni dû file_uploads.",
        "watchlist-details": "La lista dê pàggini taliati cunteni {{PLURAL:$1|na pàggina (cu la rispittiva pàggina di discussioni)|$1 pàggini (cu li rispittivi pàggini di discussioni)}}.",
        "wlheader-enotif": "La nutìfica via e-mail è attivata.",
        "wlheader-showupdated": "Li pàggini ca hannu statu canciati dâ tò ùrtima vìsita sunnu evidinziati 'n '''grassettu'''",
+       "wlnote": "Sutta attrovi l'ùrtim{{PLURAL:$1|u canciamentu|i $1 canciamenti}}, nta l'ùrtim{{PLURAL:$1|a ura|i '''$2''' uri}}.",
        "wlshowlast": "Ammustra l'ùrtimi $1 uri $2 jorna $3",
        "watchlist-options": "Opzioni ussirvati spiciali",
        "watching": "Junta a l'ussirvati spiciali...",
        "import": "Mporta pàggini",
        "importinterwiki": "Mpurtazzioni transwiki",
        "import-interwiki-text": "Silizziunari un pruggettu wiki e lu tìtulu dâ pàggina a mpurtari. Li dati di pubbricazzioni e li noma di l'autura dî vari virsioni sunnu sarvati. Tutti l'opirazzioni di mpurtazzioni trans-wiki sunnu riggistrati ntô [[Special:Log/import|log di mpurtazzioni]].",
-       "import-interwiki-source": "Surgenti wiki/pàggina:",
        "import-interwiki-history": "Copia la ntera cronoluggìa di sta pàggina",
        "import-interwiki-templates": "Includi tutti li template",
        "import-interwiki-submit": "Mporta",
index 628e67f..caf7d13 100644 (file)
        "searchprofile-advanced-tooltip": "Rake in custom namespaces",
        "search-result-size": "$1 ({{PLURAL:$2|1 waird|$2 wairds}})",
        "search-result-category-size": "{{PLURAL:$1|1 memmer|$1 memmers}} ({{PLURAL:$2|1 subcategerie|$2 subcategeries}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Relevanc: $1%",
        "search-redirect": "(reguide $1)",
        "search-section": "(section $1)",
        "search-file-match": "(matches file content.)",
        "uploadwarning": "Uplaid warnishment",
        "uploadwarning-text": "Please modeefie the file descreeption ablo n gie it anither gae.",
        "savefile": "Hain file",
-       "uploadedimage": "uplaidit \"[[$1]]\"",
-       "overwroteimage": "uplaided ae new version o \"[[$1]]\"",
        "uploaddisabled": "Sarrie, uplaidin is disablit.",
        "copyuploaddisabled": "Uplaid bi URL disabled.",
        "uploaddisabledtext": "File uplaids ar disabled.",
index 9884302..c6d69e9 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Aursani"
+                       "Aursani",
+                       "아라"
                ]
        },
        "tog-showtoolbar": "سنوارپ اوزار دٻي ڏيکاريو (جاوا اسڪرپٽ)",
        "qbmyoptions": "منهنجا صفحا",
        "faq": "ڪپوس",
        "faqpage": "Project:ڪپوس",
-       "vector-action-delete": "ڊاھيو",
-       "vector-action-move": "چوريو",
-       "vector-action-protect": "تحفظيو",
-       "vector-action-unprotect": "اڻتحفظيو",
-       "vector-view-create": "سرجيو",
-       "vector-view-edit": "سنواريو",
-       "vector-view-viewsource": "ڪوڊ ڏسو",
        "errorpagetitle": "چُڪَ",
        "returnto": "$1 ڏانهن وَرو.",
        "tagline": "{{SITENAME}} طرفان",
        "talkpagelinktext": "بحث",
        "specialpage": "خاص صفحو",
        "personaltools": "ذاتي اوزار",
-       "postcomment": "تاثرات درج ڪريو",
        "articlepage": "مسودو ڏسو",
        "talk": "بحث",
        "views": "ڏيٺون",
        "remembermypassword": "هن ڳڻپيوڪر تي مون کي ياد رکو (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "login": "لاگ اِن",
        "nav-login-createaccount": "لاگ اِن ٿيو / کاتو کوليو",
-       "loginprompt": "{{SITENAME}} ۾ لاگ اِن ٿيڻ لاءِ ڪوڪيز جي قبوليت لازمي آهي.",
        "userlogin": "لاگ اِن ٿيو / کاتو کوليو",
        "logout": "لاگ آئوٽ",
        "userlogout": "لاگ آئوٽ",
        "prevn": "پويان {{PLURAL:$1|$1}}",
        "nextn": "اڳيان {{PLURAL:$1|$1}}",
        "viewprevnext": "ڏسو ($1 {{int:pipe-separator}} $2) ($3)",
-       "powersearch-redir": "چورڻن جي فهرست ڏيکاريو",
        "preferences": "ترجيحات",
        "mypreferences": "منهنجون ترجيحات",
        "skin-preview": "پيش نگاهه",
        "recentchanges": "تازيون تبديليون",
        "recentchanges-feed-description": "ۡهن روان رسد ۾ آيل تازيون تبديليون لهو",
        "rcnotefrom": "هيٺ '''$2''' کان ٿيندڙ تبديليون پيش ڪجن ٿيون ('''$1''' تائين ڏيکارجن ٿيون).",
-       "rclistfrom": "$1 کان شروع ٿيندڙ نيون تبديليون",
+       "rclistfrom": "$3 $2 کان شروع ٿيندڙ نيون تبديليون",
        "rcshowhideminor": "$1 معمولي ترميمون",
        "rcshowhidebots": "$1 بوٽس",
        "rcshowhideliu": "$1 لاگ اِن ٿيل يوزرس",
        "upload": "فائيل چاڙهيو",
        "uploadbtn": "فائيل چاڙهيو",
        "uploadlogpage": "چاڙهه لاگ",
-       "uploadedimage": "\"[[$1]]\" چاڙهيو ويو",
        "listfiles": "فائيل فهرست",
        "file-anchor-link": "فائيل",
        "filehist": "فائيل جي سوانح",
        "log": "لاگس",
        "all-logs-page": "سڀئي لاگس",
        "allpages": "سڀ صفحا",
-       "alphaindexline": "$1 کان $2",
        "nextpage": "اڳيون صفحو ($1)",
        "prevpage": "پويون صفحو ($1)",
        "allpagesfrom": "ھتان شروع ٿيندڙ صفحا نمايو",
index a934d02..57e7818 100644 (file)
        "talkpagelinktext": "Dischussioni",
        "specialpage": "Pagina ippiziari",
        "personaltools": "Isthrumenti passunari",
-       "postcomment": "Noba sezzioni",
        "articlepage": "Vedi la bozi",
        "talk": "Dischussioni",
        "views": "Vìsiti",
        "externaldberror": "S'è verifiggaddu un errori cu lu server di autentificazioni esthernu, oppuru nò si diponi di l'autorizazioni nezzessàri pa aggiornà la propria registhrazioni estherna.",
        "login": "Intra",
        "nav-login-createaccount": "Intra / registhrazioni",
-       "loginprompt": "Pa intrà a {{SITENAME}} è nezzessàriu abirità li cookie.",
        "userlogin": "Intra o cria una noba registhrazioni",
        "userloginnocreate": "Intra",
        "logout": "Esci",
        "fileexists-shared-forbidden": "Un file cun chisthu innòmmu isisthi già i l'archìbiu di li risuzzi mùrthimediari cundibisi. Turrà indareddu e mudìfiggà l'innòmmu cu' lu quari carriggà lu file. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Avvisu di carriggamentu",
        "savefile": "Saivva file",
-       "uploadedimage": "ha carriggaddu \"[[$1]]\"",
-       "overwroteimage": "ha carriggaddu una nóba versioni di \"[[$1]]\"",
        "uploaddisabled": "Semmu dipiazuddi, ma lu carriggamentu di file è timpuraniamenti suippesu.",
        "uploaddisabledtext": "Lu carriggamentu di file nò è attibu i' {{SITENAME}}.",
        "uploadscripted": "Chistu file cunteni còdizi HTML o script, chi pudia assé interpretaddu mari da lu nabiggadori.",
        "watchlist-details": "La listha di l'abbaidaddi ippiziari cunteni {{PLURAL:$1|una pagina (e la rippettiba pagina di dischussioni)|$1 pagini (e li rippettibi pagini di dischussioni)}}.",
        "wlheader-enotif": "La nutìfica via postha erettrònica è attiba.",
        "wlheader-showupdated": "Li pàgini chi so isthaddi mudìfiggaddi daboi l'ulthima vìsita so evidenziaddi in '''grasseddu'''",
+       "wlnote": "Inogghi {{PLURAL:$1|è erencadda la mudìfigga più rizzenti arriggadda|so erencaddi li '''$1''' mudìfigghi più rizzenti arriggaddi}} {{PLURAL:$2|i' la ulthima ora|i' li ulthimi '''$2''' ori}}.",
        "wlshowlast": "Musthra li ulthimi $1 ori $2 dì $3",
        "watchlist-options": "Opzioni abbaidaddi ippiziari",
        "watching": "Aggiunta a l'abbaidaddi ippiziari...",
index d079543..85bf781 100644 (file)
        "talkpagelinktext": "Ságastallan",
        "specialpage": "Sierrasiidu",
        "personaltools": "Persovnnalaš bargoneavvu",
-       "postcomment": "Ođđa sekšuvdna",
        "articlepage": "Geahča sisdoalu",
        "talk": "Ságastallan",
        "views": "Čájáhusat",
        "yourdomainname": "Fierbmenamma",
        "login": "Čálligoađe sisa",
        "nav-login-createaccount": "Daga ođđa geavaheaddjidovddaldaga dahje čálligoađe sisa",
-       "loginprompt": "Sisačállimii dárbbašuvvojit geavssat (cookies).",
        "userlogin": "Logge sisa dahje ráhkat dovddaldaga",
        "logout": "Čálligoađe olggos",
        "userlogout": "Logge olggos",
        "largefileserver": "Dát fiila lea menddo stuoris.",
        "uploadwarning": "Lasihanvaruhus",
        "savefile": "Vurke",
-       "uploadedimage": "vurkii fiilla [[$1]]",
-       "overwroteimage": "vurkii ođđa veršuvnna fiillas «[[$1]]»",
        "uploaddisabled": "{{GRAMMAR:genitive|{{SITENAME}}}} ii sáhte lasihit fiillaid.",
        "uploaddisabledtext": "Fiillaid vurken lea váldojuvvon eret anus.",
        "uploadscripted": "Dát fiila sisdisdoalla HTML-koda dahje skriptaid, maid neahttabláđejeaddji sáhttá vahagis dahkat.",
        "watchlist-details": "Du čuovvunlisttus {{PLURAL:$1|lea $1 siidu|leat $1 siiddu}}. Lohkui eai leat váldojuvvon ságastallansiidduid.",
        "wlheader-enotif": "E-poastaalmmuhusat leat anus.",
        "wlheader-showupdated": "Siiddut, mat leat rievdaduvvon du maŋimus geavahangearddi maŋŋá leat merkojuvvon '''buoiddes teavsttain'''",
+       "wlnote": "Vuolábealde lea '''$1''' {{PLURAL:$1|rievdadus|rievdadusa}} maŋimus {{PLURAL:$2||'''$2'''}} diimma siste.",
        "wlshowlast": "Čájet maŋimus $1 diimmu dahje $2 beaivvi $3",
        "watching": "Lasihuvvo čuovvunlistui...",
        "unwatching": "Sihkojuvvo čuovvunlisttus...",
index 0ff91b7..813f64b 100644 (file)
        "talkpagelinktext": "Czaxö",
        "specialpage": "Páhina extrava",
        "personaltools": "Cui personalui",
-       "postcomment": "Iitom pte queeet",
        "articlepage": "Cohuatlöx contentua páhina",
        "talk": "Czaxö",
        "views": "Cohuatlöxám",
        "externaldberror": "Pos-römjde authenticacionde database extername jöx me necoccebj permiccionde updatan mecaitom externom.",
        "login": "Caápo",
        "nav-login-createaccount": "Caápo / xuatl",
-       "loginprompt": "Henáabliicookám caápo {{SITENAME}}.",
        "userlogin": "Caápo / xuatl",
        "logout": "Cuípo",
        "userlogout": "Cuípo",
        "filetype-missing": "Ciúchan zo necoccebj extencion (pac' \".jpg\").",
        "uploadwarning": "Attencionde uploadan",
        "savefile": "Xuniim ciúchan",
-       "uploadedimage": "uploadöx \"[[$1]]\"",
-       "overwroteimage": "uploadöx hunvercion zode \"[[$1]]\"",
        "uploadvirus": "Jan ciúchan coccebj virusde PC zo! Detailám: $1",
        "sourcefilename": "Sourcenam IDde ciúchan:",
        "destfilename": "Destinacion IDde ciúchan:",
index 6ad3c21..ba7af45 100644 (file)
        "talkpagelinktext": "Aptarėms",
        "specialpage": "Specēlosis poslapis",
        "personaltools": "Persuonalėnē rakondā",
-       "postcomment": "Rašītė kuomentara",
        "articlepage": "Veizietė straipsnė",
        "talk": "Aptarėms",
        "views": "Parveizėtė",
        "yourdomainname": "Tamstas domens:",
        "login": "Prisėjongtė",
        "nav-login-createaccount": "Prėsėjongtė / sokortė paskīra",
-       "loginprompt": "Ijonkėt pakavukus, jēgo nuorėt prisėjongtė pri {{SITENAME}}.",
        "userlogin": "Prėsėjongtė / sokortė paskīra",
        "userloginnocreate": "Prisėjongtė",
        "logout": "Atsėjongtė",
        "searchprofile-advanced-tooltip": "Ėiškoutė skėrtingūsė vardū sėtīsė",
        "search-result-size": "$1 ({{PLURAL:$2|1 žuodis|$2 žuodē|$2 žuodiu}})",
        "search-result-category-size": "{{PLURAL:$1|1 narīs|$1 nariū}} ({{PLURAL:$2|1 subkateguorėjuo|$2 subkateguorėju}}, {{PLURAL:$3|1 fails|$3 failu}})",
-       "search-result-score": "Tėnkamoms: $1%",
        "search-redirect": "(paradresavėms $1)",
        "search-section": "(skīrios $1)",
        "search-suggest": "Mažo nuoriejot $1",
        "file-exists-duplicate": "Tas fails īr {{PLURAL:$1|šėta faila|šėtū failu}} doblėkats:",
        "uploadwarning": "Diemesė",
        "savefile": "Ėšsauguotė faila",
-       "uploadedimage": "ikielė „[[$1]]“",
-       "overwroteimage": "ikruovė nauja „[[$1]]“ versėjė",
        "uploaddisabledtext": "Failu ikielėmā oždraustė īr.",
        "uploadscripted": "Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.",
        "uploadvirus": "Šėtom faile īr virosas! Ėšsamiau: $1",
        "watchlist-details": "Keravuojama $1 {{PLURAL:$1|poslapis|$1 poslapē|$1 poslapiu}} neskaitlioujant aptarėmu poslapiu.",
        "wlheader-enotif": "El. pašta primėnėmā ijongtė īr.",
        "wlheader-showupdated": "Poslapē, katrėi pakeistė nu Tamstas paskotėnė apsėlonkėma čiesa anūs, īr pažīmietė '''pastuorintā'''",
+       "wlnote": "Ruoduoma '''$1''' paskotėniu pakeitėmu, atlėktū par '''$2''' paskotėniu adīnu.",
        "wlshowlast": "Ruodītė paskotėniu $1 adīnu, $2 dėinū a $3 pakeitėmus",
        "watchlist-options": "Keravuojamu sāroša pasėrinkėmā",
        "watching": "Itraukiama i keravuojamu sāraša...",
index d2a285b..6b4ac69 100644 (file)
        "talkpagelinktext": "Sgdl (mdiwil)",
        "specialpage": "Tasna izlin",
        "personaltools": "Imasn inu",
-       "postcomment": "Ayyaw amaynu",
        "articlepage": "Mel mayllan ɣ tasna",
        "talk": "Amsgdal",
        "views": "Ẓr.. (Mel)",
        "externaldberror": "Imma tlla ɣin kra lafut ɣu ukcumnk ulla urak ittuyskar at tsbddelt lkontnk nbrra.",
        "login": "Kcm ɣid",
        "nav-login-createaccount": "kcm / murzm Amidan",
-       "loginprompt": "You must have cookies enabled to log in to {{SITENAME}}.",
        "userlogin": "kchem / qiyd amskhdam amaynu",
        "userloginnocreate": "Kcm ɣid",
        "logout": "Fuɣ",
        "searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin",
        "search-result-size": "$1 ({{PLURAL:$2|1 taguri|$2 tiguriwin}})",
        "search-result-category-size": "$1 amdan{{PLURAL:$1||i-n}} ($2 ddu talɣa{{PLURAL:$2||i-s}}, $3 asdaw{{PLURAL:$3||i-n}})",
-       "search-result-score": "Tazdayt: $1%",
        "search-redirect": "(Asmmati $1)",
        "search-section": "Ayyaw $1",
        "search-suggest": "Is trit att nnit: $1",
        "filereuploadsummary": "Imbddln n usdaw",
        "filestatus": "Izrfan ḥbanin",
        "filesource": "Aɣbalu",
-       "uploadedimage": "Issrba \"[[$1]]\"",
        "upload-source": "Aɣbalu n usdaw",
        "sourcefilename": "Aɣbalu n ussaɣ n usdaw",
        "license": "Tlla s izrfan",
index 3b582a5..7290105 100644 (file)
@@ -22,7 +22,9 @@
                        "රොමානිස් සැමුවෙල්",
                        "ශ්වෙත",
                        "සුරනිමල",
-                       "아라"
+                       "아라",
+                       "හරිත",
+                       "Indunil Chamara"
                ]
        },
        "tog-underline": "සබැඳි යටීර කිරීම:",
        "thursday": "බ්‍රහස්පතින්දා",
        "friday": "සිකුරාදා",
        "saturday": "සෙනසුරාදා",
-       "sun": "ඉරිදා",
-       "mon": "සඳුදා",
-       "tue": "අඟ",
-       "wed": "බදාදා",
-       "thu": "බ්‍රහස්",
-       "fri": "සිකු",
-       "sat": "සෙන",
+       "sun": "ඉරි:",
+       "mon": "සඳු:",
+       "tue": "අඟ:",
+       "wed": "බදා:",
+       "thu": "බ්‍රහ:",
+       "fri": "සිකු:",
+       "sat": "සෙන:",
        "january": "ජනවාරි",
        "february": "පෙබරවාරි",
        "march": "මාර්තු",
        "december-gen": "දෙසැම්බර්",
        "jan": "ජන",
        "feb": "පෙබ",
-       "mar": "මාර්තු",
-       "apr": "අප්‍රේල්",
+       "mar": "මාර්",
+       "apr": "අප්‍රේ",
        "may": "මැයි",
        "jun": "ජූනි",
        "jul": "ජූලි",
        "talkpagelinktext": "කතාබහ",
        "specialpage": "විශේෂ පිටුව",
        "personaltools": "පුද්ගලික මෙවලම්",
-       "postcomment": "නව ඡේදයක්",
        "articlepage": "අන්තර්ගත පිටුව නරඹන්න",
        "talk": "සාකච්ඡාව",
        "views": "දෘෂ්ටි",
        "hidetoc": "සඟවන්න",
        "collapsible-collapse": "හකුලන්න",
        "collapsible-expand": "විදහන්න",
+       "confirmable-confirm": "{{GENDER:$1|ඔබට}} විශ්වාස ද?",
+       "confirmable-yes": "ඔව්",
+       "confirmable-no": "නැත",
        "thisisdeleted": "අවශ්‍යතාවය $1 නැරඹීමද නැතහොත් ප්‍රතිෂ්ඨාපනයද?",
        "viewdeleted": "$1 නැරඹීම අවශ්‍යයද?",
        "restorelink": "මකා දමනු ලැබූ {{PLURAL:$1| එක් සංස්කරණයක්| සංස්කරණ $1  ක්}}",
        "externaldberror": "එක්කෝ සත්‍යාවත් දත්ත-ගබඩා දෝෂයක් පැවතුනි නැතිනම් ඔබගේ බාහිර ගිණුම යාවත්කාලීන කිරීමට ඔබ හට අවසර දී නොමැත.",
        "login": "පිවිසෙන්න",
        "nav-login-createaccount": "පිවිසෙන්න / නව ගිණුමක් තනන්න",
-       "loginprompt": "{{SITENAME}} වෙත ප්‍රවිෂ්ට වීම සඳහා ඔබ විසින් කුකීස් සක්‍රීය කොට තිබිය යුතුය.",
        "userlogin": "පිවිසෙන්න / නව ගිණුමක් තනන්න",
        "userloginnocreate": "ප්‍රවිෂ්ට වන්න",
        "logout": "නික්මීම",
        "suspicious-userlogout": "නිෂ්ක්‍රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්‍රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්‍රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්‍රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.",
        "createacct-another-realname-tip": "සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.\nඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහා ඔබහට කතෘ-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.",
        "pt-login": "පිවිසෙන්න",
+       "pt-login-button": "පිවිසෙන්න",
        "pt-createaccount": "ගිණුමක් තනන්න",
        "pt-userlogout": "නික්මීම",
        "php-mail-error-unknown": "php mail() ශ්‍රිතයේ හඳුනානොගත් ගැටළුවකි",
        "resetpass-temp-password": "තාවකාලික මුර-පදය:",
        "resetpass-abort-generic": "මුරපදය වෙනස් කිරීම විස්තීරණය මඟින් වලකා ඇත.",
        "resetpass-expired": "ඔබගේ මුරපදය කල් ඉකුත්වී ඇත.කරුණාකර නව මුරපදයක් සකස් කරන්න.",
-       "resetpass-expired-soft": "ඔබගේ මුරපදය කල් ඉකුත්වී ඇති අතර එය නැවත සකස් කල යුතුය.කරුණාකර දැන් මුරපදයක් තෝරන්න.නවත්තන්න click කිරීමෙන් එය පසුව සකස් කල හැකිය.",
+       "resetpass-expired-soft": "ඔබගේ මුරපදය කල් ඉකුත් වී ඇති අතර එය නැවත සකස් කල යුතුය. කරුණාකර දැන් නව මුරපදයක් තෝරන්න, නැතහොත් එය පසුව නැවත සැකසීමට \"{{int:resetpass-submit-cancel}}\" ඉටු කරන්න.",
+       "resetpass-validity-soft": "ඔබේ මුරපදය වලංගු නැත: $1\n\nකරුණාකර දැන් නව මුරපදයක් තෝරන්න, නැතහොත් එය පසුව සැකසීමට \"{{int:resetpass-submit-cancel}}\" ඉටු කරන්න.",
        "passwordreset": "මුරපදය වෙනස් කරන්න",
        "passwordreset-text-one": "තාවකාලික මුර-පදයක් විද්‍යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.",
        "passwordreset-text-many": "{{PLURAL:$1|තාවකාලික මුරපදයක් ඊ-තැපෑල හරහා ගෙන්වා ගැනීමට එක් ක්ෂේත්‍රයක් පුරවන්න}}",
        "changeemail-submit": "විද්‍යුත් තැපෑල  වෙනස් කරන්න",
        "changeemail-cancel": "අවලංගු කරන්න",
        "changeemail-throttled": "ඔබ විසින් මෑතදී  පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.\nයළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.",
+       "resettokens": "සංකේත නැවත සකසන්න",
+       "resettokens-legend": "සංකේත නැවත සකසන්න",
+       "resettokens-tokens": "සංකේත:",
        "bold_sample": "තදකුරු පෙළ",
        "bold_tip": "තදකුරු පෙළ",
        "italic_sample": "ඇලකුරු පෙළ",
        "currentrev": "නවතම සංශෝධනය",
        "currentrev-asof": "$1 වන විට නවතම සංශෝධනය",
        "revisionasof": "$1 තෙක් සංශෝධනය",
-       "revision-info": "$1 වන විට $2 විසින් සිදු කර ඇති සංශෝධන",
+       "revision-info": "$1 වන විට {{GENDER:$6|$2}}$7 විසින් සිදු කර ඇති සංශෝධන",
        "previousrevision": "← පැරණි සංශෝධනය",
        "nextrevision": "නව සංශෝධනය →",
        "currentrevisionlink": "වත්මන් සංශෝධනය",
        "revdelete-confirm": "කරුණාකර ඔබ මෙය කිරීමට අදහස් කරන බවත්,එහි ප්‍රතිඵලය අවබෝධ කර ගන්නා බවත්,මෙය සිදු කරනුයේ [[{{MediaWiki:Policy-url}}| ප්‍රතිපත්තියට]] අනුකූලව බවත් තහවුරු කරන්න.",
        "revdelete-suppress-text": "යටපත්කිරීම පහත අවස්ථාවන්හිදී  '''පමණක්''' භාවිතා කල යුතුය:\n* නුසුදුසු පෞද්ගලික තොරතුරු\n*: ''නිවසෙහි ලිපින හා දුරකතන අංක ආදිය.''",
        "revdelete-legend": "දෘශ්‍ය අවහිරකිරීම් සකසන්න",
-       "revdelete-hide-text": "සංශෝධන පෙළ සඟවන්න",
+       "revdelete-hide-text": "සංශෝධන පෙළ",
        "revdelete-hide-image": "ගොනු අන්තර්ගතය සඟවන්න",
        "revdelete-hide-name": "ක්‍රියාව හා ඉලක්කය සඟවන්න",
        "revdelete-hide-comment": "සංස්කරණ පරිකථනය",
        "searchprofile-advanced-tooltip": "අභිරුචි නාමඅවකාශයන්හි ගවේෂණය කරන්න",
        "search-result-size": "$1 ({{PLURAL:$2|වචන 1 ක්|වචන $2 ක්}})",
        "search-result-category-size": "{{PLURAL:$1|එක් සාමාජීකයෙන්|සාමාජීකයන් $1 ක්}} ({{PLURAL:$2|එක් උප-ප්‍රවර්ගයක්|උප-ප්‍රවර්ග $2 ක්}}, {{PLURAL:$3|එක් ගොනුවක්|ගොනු $3 ක්}})",
-       "search-result-score": "අදාළතාව: $1%",
        "search-redirect": "($1 යළි-යොමු කරන්න)",
        "search-section": "($1 ඡේදය)",
        "search-file-match": "(ගොනු දත්ත සැසදේ)",
        "userrights-no-interwiki": "අනෙකුත් විකියන්හි පරිශීලක හිමිකම් සංස්කරණය කිරීමට ඔබහට අවසර නොමැත.",
        "userrights-nodatabase": "$1 දත්ත-ගබඩාව නොපවතියි හෝ ස්ථානීක නොවෙයි.",
        "userrights-nologin": "පරිශීලක හිමිකම් ප්‍රදානය කරනු වස්, ඔබ පරිපාලක ගිණුමකින්  [[Special:UserLogin|පුවිෂ්ට විය]] යුතුය.",
-       "userrights-notallowed": "පරà·\92à·\81à·\93ලà¶\9a à·\84à·\92මà·\92à¶\9aමà·\8a à¶\91à¶\9aà·\8a à¶\9aà·\92රà·\93මට à·\84à·\9d à¶\89à·\80තà·\8a à¶\9aà·\92රà·\93මට à¶\94බà¶\9cà·\9a à¶\9cà·\92ණà·\94මට à¶\85à·\80à·\83ර à¶±à·\90ත.",
+       "userrights-notallowed": "පරිශීලක හිමිකම් එක් කිරීමට හෝ ඉවත් කිරීමට ඔබට අවසර නැත.",
        "userrights-changeable-col": "ඔබට වෙනස් කල හැකි කණ්ඩායම්",
        "userrights-unchangeable-col": "ඔබට වෙනස් කල නොහැකි කණ්ඩායම්",
        "userrights-irreversible-marker": "$1*",
        "uploadwarning": "උඩුගත කිරීම් අවවාදයකි",
        "uploadwarning-text": "කරුණාකර පහත ගොනු විස්තරය වෙනස් කර නැවත උත්සාහ කරන්න.",
        "savefile": "ගොනුව සුරකින්න",
-       "uploadedimage": "\"[[$1]]\" උඩුගත කරන ලදි",
-       "overwroteimage": " \"[[$1]]\" හි නව අනුවාදයක් උඩුගත කරන ලදි",
        "uploaddisabled": "උඩුගත කිරීම් අක්‍රීය කර ඇත",
        "copyuploaddisabled": "URL මගින් උඩුගත කිරීම අක්‍රීය කොට ඇත.",
        "uploaddisabledtext": " {{SITENAME}} හි ගොනු උඩුගත කිරීම් අක්‍රීය කර ඇත.",
        "randomincategory": "ප්‍රවර්ගයේ අහඹු පිටු",
        "randomincategory-invalidcategory": "\"$1\" වලංගු ප්‍රවර්ග නාමයක් නොවේ.",
        "randomincategory-nopages": " [[:ප්‍රවර්ගය:$1|$1]] ප්‍රවර්ගයේ පිටු නොමැත.",
-       "randomincategory-selectcategory-submit": "යන්න",
+       "randomincategory-legend": "ප්‍රවර්ගයේ අහඹු පිටු",
        "randomredirect": "අහුඹු යළි-යොමුකිරීම",
        "randomredirect-nopages": "\"$1\" නාම-අවකාශයෙහි යළි-යොමුවීම් නොමැත.",
        "statistics": "සංඛ්‍යාන දත්ත",
        "notanarticle": "අන්තර්ගත පිටුවක් නොවේ",
        "notvisiblerev": "සංශෝධනය මකාදමා ඇත",
        "watchlist-details": "සාකච්ඡා පිටු නොගිණුනු කල, ඔබගේ මුර ලැයිස්තුවෙහි {{PLURAL:$1|එක් පිටුවක්|පිටු $1 ක්}} ඇත.",
-       "wlheader-enotif": "විද්‍යුත්-තැපැල් දැනුම්දීම සක්‍රීය කෙරිණි.",
-       "wlheader-showupdated": "ඔබ විසින් ඒවාට අවසන් වරට පිවිසුනු පසුව වෙනස්කෙරුනු පිටු  '''තදකුරු''' වලින් පෙන්වා ඇත",
+       "wlheader-enotif": "විද්‍යුත් තැපැල් දැනුම්දීම සක්‍රීයයි.",
+       "wlheader-showupdated": "ඔබ විසින් ඒවාට අවසන් වරට පිවිසුනු පසුව වෙනස්ව තිබෙන පිටු <strong>තදකුරු</strong> වලින් පෙන්වා ඇත.",
+       "wlnote": "පහත දැක්වෙන්නේ $3, $4 මෙන්, අවසන් {{PLURAL:$2|පැය|පැය '''$2''' }} තුලදී සිදු කෙරී ඇති {{PLURAL:$1|අවසන් වෙනස්වීම්යි |අවසන් වෙනස්වීම්  '''$1''' යි}}.",
        "wlshowlast": "පසුගිය පැය $1 දින $2 $3 පෙන්වන්න",
        "watchlist-options": "තෝරාගතහැකි මුර ලැයිස්තු සැකසුම්",
        "watching": "මුර කරමින්...",
        "import": "පිටු ආයාත කරන්න",
        "importinterwiki": "අන්තර්විකී ආයාතය",
        "import-interwiki-text": "ආයාත කිරීම සඳහා විකියක් හා පිටු ශීර්ෂයක් තෝරාගන්න.\nසංශෝධන දිනයන් හා සංස්කාරකවරුන්ගේ නම් සංරක්‍ෂණය කෙරෙනු ඇත.\nසියළු අන්තර්විකි ආ‍යාත ක්‍රියාවන් [[Special:Log/import|ආයාත ලඝු-සටහනෙහි]] සටහන් වනු ඇත.",
-       "import-interwiki-source": "මූලාශ්‍ර විකිය/පිටුව:",
+       "import-interwiki-sourcepage": "මූලාශ්‍ර පිටුව:",
        "import-interwiki-history": "මෙම පිටුව සඳහා සියළු ඉතිහාස අනුවාදයන් පිටපත් කරන්න",
        "import-interwiki-templates": "සියළු සැකිලි අන්තර්ගත කරන්න",
        "import-interwiki-submit": "ආයාත කරන්න",
        "duplicate-defaultsort": "'''අවවාදයයි:''' \"$2\" පෙරනිමි සුබෙදුම් යතුර විසින් ‍පූර්ව පෙරනිමි සුබෙදුම් යතුර වූ \"$1\" අතික්‍රමණය කරයි.",
        "version": "අනුවාදය",
        "version-extensions": "ස්ථාපිත ප්‍රසර්ජනයන්",
+       "version-skins": "ඡවිය",
        "version-specialpages": "විශේෂ පිටු",
        "version-parserhooks": "ව්‍යාකරණ විග්‍රහක හසුරු",
        "version-variables": "විචල්‍යයන්",
        "version-antispam": "ස්පෑම වැලැක්වුම",
-       "version-skins": "ඡවිය",
        "version-other": "වෙනත්",
        "version-mediahandlers": "මාධ්‍ය හසුරුවනය",
        "version-hooks": "හසුරු",
index a27497b..4bacc61 100644 (file)
        "talkpagelinktext": "Diskusia",
        "specialpage": "Špeciálna stránka",
        "personaltools": "Osobné nástroje",
-       "postcomment": "Nová sekcia",
        "articlepage": "Zobraziť stránku",
        "talk": "Diskusia",
        "views": "Zobrazení",
        "externaldberror": "Buď nastala chyba externej autentifikačnej databázy alebo vám nie je povolené aktualizovať váš externý účet.",
        "login": "Prihlásiť",
        "nav-login-createaccount": "Prihlásenie / vytvorenie účtu",
-       "loginprompt": "Na prihlásenie do {{GRAMMAR:genitív|{{SITENAME}}}} musíte mať zapnuté koláčiky (cookies).",
        "userlogin": "Prihlásenie / vytvorenie účtu",
        "userloginnocreate": "Prihlásiť",
        "logout": "Odhlásiť",
        "searchprofile-advanced-tooltip": "Hľadať vo vymenovaných menných priestoroch",
        "search-result-size": "$1 ({{PLURAL:$2|1 slovo|$2 slová|$2 slov}})",
        "search-result-category-size": "{{PLURAL:$1|1 člen|$1 členovia|$1 členov}} ({{PLURAL:$2|1 podkategória|$2 podkategórie|$2 podkategórií}}, {{PLURAL:$3|1 súbor|$3 súbory|$3 súborov}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(presmerovanie $1)",
        "search-section": "(sekcia $1)",
        "search-suggest": "Mali ste na mysli „$1“?",
        "uploadwarning": "Varovanie pri nahrávaní",
        "uploadwarning-text": "Prosím, zmeňte popis súboru nižšie a skúste to znova.",
        "savefile": "Uložiť súbor",
-       "uploadedimage": "nahraný „[[$1]]“",
-       "overwroteimage": "bola nahraná nová verzia „[[$1]]“",
        "uploaddisabled": "Prepáčte, nahrávanie je vypnuté.",
        "copyuploaddisabled": "Nahrávanie prostredníctvom URL nie je povolené.",
        "uploaddisabledtext": "Nahrávanie súborov je vypnuté.",
        "watchlist-details": "{{PLURAL:$1|Jedna sledovaná stránka|$1 sledované stránky|$1 sledovaných stránok}}, nepočítajúc diskusné stránky.",
        "wlheader-enotif": "Upozorňovanie e-mailom je zapnuté.",
        "wlheader-showupdated": "Stránky, ktoré boli zmenené od vašej poslednej návštevy sú zobrazené '''tučne'''.",
+       "wlnote": "Nižšie {{PLURAL:$1|je posledná jedna zmena|sú posledné '''$1''' zmeny|je posledných '''$1''' zmien}} za {{PLURAL:$2|poslednú hodinu|posledné '''$2''' hodiny|posledných '''$2''' hodín}} do $4, $3.",
        "wlshowlast": "Zobraziť posledných $1 hodín $2 dní $3",
        "watchlist-options": "Nastavenia zoznamu sledovaných",
        "watching": "Pridávam do zoznamu sledovaných...",
        "duplicate-defaultsort": "Upozornenie: Štandardný kláves na zoraďovanie „$2“ nahrádza starý kláves „$1“.",
        "version": "Verzia",
        "version-extensions": "Nainštalované rozšírenia",
+       "version-skins": "Témy vzhľadu",
        "version-specialpages": "Špeciálne stránky",
        "version-parserhooks": "Prípojné body syntaktického analyzátora",
        "version-variables": "Premenné",
        "version-antispam": "Ochranu proti spamu",
-       "version-skins": "Témy vzhľadu",
        "version-other": "Iné",
        "version-mediahandlers": "Obsluha multimédií",
        "version-hooks": "Prípojné body",
index fb31594..923e8b2 100644 (file)
        "randomincategory": "Naključna stran v kategoriji",
        "randomincategory-invalidcategory": "»$1« ni veljavno ime kategorije.",
        "randomincategory-nopages": "V kategoriji [[:Category:$1]] ni nobene strani.",
-       "randomincategory-selectcategory": "Dobi naključno stran iz kategorije: $1 $2.",
-       "randomincategory-selectcategory-submit": "Pojdi",
+       "randomincategory-category": "Kategorija:",
+       "randomincategory-legend": "Naključna stran v kategoriji",
        "randomredirect": "Naključna preusmeritev",
        "randomredirect-nopages": "V imenskem prostoru »$1« ni preusmeritev.",
        "statistics": "Statistika",
        "exbeforeblank": "vsebina pred brisanjem: '$1'",
        "delete-confirm": "Brisanje »$1«",
        "delete-legend": "Izbriši",
-       "historywarning": "'''Opozorilo:''' Stran, ki jo želite izbrisati, ima zgodovino s približno $1 {{PLURAL:$1|redakcijo|redakcijama|redakcijami}}:",
+       "historywarning": "<strong>Opozorilo:</strong> Stran, ki jo nameravate izbrisati, ima zgodovino s približno $1 {{PLURAL:$1|redakcijo|redakcijama|redakcijami}}:",
        "confirmdeletetext": "Iz zbirke podatkov boste izbrisali stran ali sliko skupaj z vso njeno zgodovino.\nProsimo, '''potrdite''', da to resnično želite, da razumete posledice dejanja in da se ravnate po [[{{MediaWiki:Policy-url}}|pravilih]].",
        "actioncomplete": "Poseg je končan",
        "actionfailed": "Dejanje spodletelo",
        "delete-edit-reasonlist": "Uredi razloge za brisanje",
        "delete-toobig": "Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.\nIzbris takšnih strani je bil omejen v izogib neželenim motnjam {{GRAMMAR:dative|{{SITENAME}}}}.",
        "delete-warning-toobig": "Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.\nNjeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENAME}}}};\nnadaljujte s previdnostjo.",
-       "delete-cantedit": "Strani ne morete izbrisati, ker je nimate dovoljenja urejati.",
+       "deleteprotected": "Strani ne morete izbrisati, ker jo je nekdo zaščitil.",
        "deleting-backlinks-warning": "'''Opozorilo:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge strani]] se povezujejo na ali vključujejo stran, ki jo nameravate izbrisati.",
        "rollback": "Vrni spremembe",
        "rollback_short": "Vrni",
        "import": "Uvoz strani",
        "importinterwiki": "Uvoz transwiki",
        "import-interwiki-text": "Izberite wiki in naslov strani za uvoz.\nDatumi in imena urejevalcev redakcij bodo ohranjena.\nVsi uvozi med wikiji so zabeleženi v [[Special:Log/import|dnevniku uvozov]].",
-       "import-interwiki-source": "Izvorni wiki/stran:",
+       "import-interwiki-sourcewiki": "Izvorni wiki:",
+       "import-interwiki-sourcepage": "Izvorna stran:",
        "import-interwiki-history": "Kopiraj vse dosedanje redakcije te strani",
        "import-interwiki-templates": "Vključi vse predloge",
        "import-interwiki-submit": "Uvozi",
        "log-name-pagelang": "Dnevnik spreminjanja jezika",
        "log-description-pagelang": "Dnevnik sprememb jezika strani.",
        "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5.",
+       "default-skin-not-found": "Ups! Privzeta koža vašega wikija (<code>$wgDefaultSkin</code>), <code>$1</code>, ni na voljo.\n\nKot kaže, vaša namestitev vsebuje kože, navedene spodaj. Oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_configuration Priročnik: Konfiguracija kož] za več informacij, kako jih omogočiti in nastaviti kot privzete.\n\n$2\n\n; Če ste MediaWiki pravkar namestili:\n: Verjetno ste ga namestili z git ali neposredno iz izvorne kode na kakšen drug način. To je pričakovano. Poskusite namestiti nekaj kož z [https://www.mediawiki.org/wiki/Category:All_skins imenika kož mediawiki.org] tako:\n:* Prenesite [https://www.mediawiki.org/wiki/Download namestitveni program tarball], ki vsebuje nekaj kož in razširitev. Iz njega lahko kopirate in prilepite mapo <code>skins/</code>.\n:* Klonirajte enega od repozitorijev <code>mediawiki/skins/*</code> z git v mapo <code>skins/</code> vaše namestitve MediaWiki.\n: Če ste razvijalec MediaWiki, to ne sme poseči v vaš repozitorij git.\n\n; Če ste MediaWiki pravkar posodobili:\n: MediaWiki 1.24 in novejši nameščenih kož več ne omogočijo samodejno (oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Priročnik: Samodejno odkrivanje kož]). V <code>LocalSettings.php</code> lahko prilepite naslednje vrstice, da omogočite trenutno nameščene kože:\n\n<pre>$3</pre>\n\n; Če ste pravkar spremenili <code>LocalSettings.php</code>:\n: Ponovno preverite imena kož, če ste se morda zatipkali.",
+       "default-skin-not-found-no-skins": "Ups! Privzeta koža vašega wikija (<code>$wgDefaultSkin</code>), <code>$1</code>, ni na voljo.\n\nNimate nameščenih kož.\n\n; Če ste MediaWiki pravkar namestili ali posodobili:\n: Verjetno ste ga namestili z git ali neposredno iz izvorne kode na kakšen drug način. To je pričakovano. MediaWiki 1.24 in novejši nimajo vključene nobene kože v glavnem repozitoriju. Poskusite namestiti nekaj kož z [https://www.mediawiki.org/wiki/Category:All_skins imenika kož mediawiki.org] tako:\n:* Prenesite [https://www.mediawiki.org/wiki/Download namestitveni program tarball], ki vsebuje nekaj kož in razširitev. Iz njega lahko kopirate in prilepite mapo <code>skins/</code>.\n:* Klonirajte enega od repozitorijev <code>mediawiki/skins/*</code> z git v mapo <code>skins/</code> vaše namestitve MediaWiki.\n: Če ste razvijalec MediaWiki, to ne sme poseči v vaš repozitorij git. Oglejte si [https://www.mediawiki.org/wiki/Manual:Skin_configuration Priročnik: Konfiguracija kož] za več informacij, kako jih omogočiti in nastaviti kot privzete.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (omogočeno)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''onemogočeno''')"
 }
index 28e64ee..3c0729d 100644 (file)
        "talkpagelinktext": "Dischkur",
        "specialpage": "Spezialseyte",
        "personaltools": "Meine Werkzeuge",
-       "postcomment": "Neuer Obschnitt",
        "articlepage": "Inhaltsseite oazeiga",
        "talk": "Dischkur",
        "views": "Oansichta",
        "externaldberror": "Entweder is leit a Fahler bei der externa Authentifizierung vur, oder du darfst dei externes Benutzerkonto ne aktualisiera.",
        "login": "Oanmelda",
        "nav-login-createaccount": "Oamelda / a Konto oalega",
-       "loginprompt": "Zer Oameldung missa Cookies aktiviert sei.",
        "userlogin": "Oanmelda / Nutzerkonto erstella",
        "logout": "Oabmelda",
        "userlogout": "Oabmelda",
        "file-thumbnail-no": "Dar Dateinoame beginnt miet <strong>$1</strong>. Dies deutet uff a Bild verringerter Griße ''(thumbnail)'' hin.\nBitte priefe, ob du doas Bild ei voller Ufflesung vorliegen host und loade dieses under damm Originalnoama huch.",
        "file-exists-duplicate": "Diese Datei ies a Duplikat dar fulgenda {{PLURAL:$1|Datei|$1 Dateien}}:",
        "file-deleted-duplicate": "Anne identische Datei dieser Datei ([[:$1]]) wurde frieher geläscht. Ieberpriefe doas Läsch-Logbuch, bevor du se huchlädst.",
-       "uploadedimage": "hoot „[[$1]]“ huchgeloada",
-       "overwroteimage": "hoot anne neue Version vu „[[$1]]“ huchgeloada",
        "uploaddisabled": "Huchlada deaktiviert",
        "uploaddisabledtext": "Doas Huchloada vu Dateien ies deaktiviert.",
        "uploadscripted": "Diese Datei enthält HTML- oder Scriptcode, dar irrtiemlich vu a'm Webbrowser ausgefiehrt waan kennte.",
        "watchlist-details": "Du beobachtest {{PLURAL:$1|1 Seite|$1 Seita}}.",
        "wlheader-enotif": "Dar E-Mail-Benoachrichtigungsdienst ies aktiviert.",
        "wlheader-showupdated": "Seyta miet noo ne gesehenen Änderunga waan '''fett''' dargestellt.",
+       "wlnote": "Is {{PLURAL:$1|folgt de letzte Änderung|folga de letzta '''$1''' Änderunga}} dar letzta {{PLURAL:$2|Stunde|'''$2''' Stunda}}.",
        "wlshowlast": "Zeige de Änneronga dar letzta $1 Stonda, $2 Taage oder $3.",
        "watchlist-options": "Oazeegeoptiona",
        "watching": "Beobachta …",
index aaa8f1a..7587cea 100644 (file)
        "talkpagelinktext": "Wadahadal",
        "specialpage": "Bogaga qaaska ah",
        "personaltools": "Qalabkaaga",
-       "postcomment": "Maqaal cusub",
        "articlepage": "Fiiri bogga qoraalka",
        "talk": "Wadahadal",
        "views": "Muuqaalka",
        "password-change-forbidden": "Ma badali kartid Eraysir ee wiki.",
        "login": "Gudaha gal",
        "nav-login-createaccount": "Gudaha gal / sameyso akoon",
-       "loginprompt": "Waa in aad shidaa cookies'ka hadii aad rabto in aad soo gasho {{SITENAME}}.",
        "userlogin": "Gudaha gal / sameyso akoon",
        "userloginnocreate": "Gudaha gal",
        "logout": "Ka bax",
        "large-file": "waxaa loo baahanyahay in ay san file'yada ka weynaan $1;\nfile'kaan waa  $2.",
        "uploadwarning": "Digniin waxa aad soo gelineesid",
        "savefile": "Faylka kaydi",
-       "uploadedimage": "la soo galiyay \"[[$1]]\"",
-       "overwroteimage": "waxaa la soo galiyay nuuc cusub oo ah \"[[$1]]\"",
        "uploaddisabled": "wax soo gelinta waa la xiray.",
        "copyuploaddisabled": "wax soo gelinta dhinaca URL:ka waa la xiray",
        "uploaddisabledtext": "soo gelinta faylyada waa la xiray",
index 31a2dba..cda9eba 100644 (file)
        "searchprofile-advanced-tooltip": "Kërkimi në hapësina",
        "search-result-size": "$1 ({{PLURAL:$2|1 fjalë|$2 fjalë}})",
        "search-result-category-size": "{{PLURAL:$1|1 anëtar|$1 anëtarë}} ({{PLURAL:$2|1 nën-kategori|$2 nën-kategori}}, {{PLURAL:$3|1 skedë|$3 skeda}})",
-       "search-result-score": "Përkatësia: $1%",
        "search-redirect": "(përcjellim $1)",
        "search-section": "(seksioni $1)",
        "search-suggest": "Mos kishit në mendje: $1",
        "uploadwarning": "Kujdes dhënie",
        "uploadwarning-text": "Ju lutemi modifikoni përshkrimin e skedës dhe provojen përsëri.",
        "savefile": "Ruaj skedën",
-       "uploadedimage": "dha \"[[$1]]\"",
-       "overwroteimage": "dha dhe zëvendësoi me një version të ri të \"[[$1]]\"",
        "uploaddisabled": "Ndjesë, dhëniet janë bllokuar në këtë shërbyes dhe nuk është gabimi juaj.",
        "copyuploaddisabled": "Ngarkimi nga URL-ja u çaktivizua.",
        "uploaddisabledtext": "Ngarkimi i skedave është i ndaluar.",
        "watchlist-details": "{{PLURAL:$1|$1 faqe|$1 faqe}} nën mbikqyrje duke mos numëruar faqet e diskutimit.",
        "wlheader-enotif": "Njoftimi me email është lejuar.",
        "wlheader-showupdated": "Faqet që kanë ndryshuar nga vizita juaj e fundit do të tregohen të '''trasha'''",
+       "wlnote": "Më poshtë {{PLURAL:$1|është ndryshimi i fundit|janë '''$1''' ndryshimet e fundit}} në {{PLUARAL:$2:orën e fundit|'''$2''' orët e fundit}}, që nga $3, $4.",
        "wlshowlast": "Trego $1 orët $2 ditët $3",
        "watchlist-options": "Mundësitë e listës mbikqyrëse",
        "watching": "Duke mbikqyrur...",
index 4a54ea5..153cf07 100644 (file)
        "createacct-another-submit": "Отвори још један налог",
        "createacct-benefit-heading": "{{SITENAME}} је направљен од стране људи као што сте ви.",
        "createacct-benefit-body1": "{{PLURAL:$1|измена}}",
-       "createacct-benefit-body2": "{{PLURAL:$1|страница}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|страница|странице}}",
        "createacct-benefit-body3": "скорашњих {{PLURAL:$1|доприноса}}",
        "badretype": "Унете лозинке се не поклапају.",
        "userexists": "Корисничко име је заузето. Изаберите друго.",
        "mergehistory-same-destination": "Изворна и одредишна страница не могу бити исте",
        "mergehistory-reason": "Разлог:",
        "mergelog": "Дневник спајања",
-       "pagemerge-logentry": "Ñ\81Ñ\82Ñ\80аниÑ\86а [[$1]] Ñ\98е Ñ\81поÑ\98ена у [[$2]] (све до измене $3)",
+       "pagemerge-logentry": "Ñ\98е Ñ\81поÑ\98ио [[$1]] у [[$2]] (све до измене $3)",
        "revertmerge": "растави",
        "mergelogpagetext": "Испод је списак најскоријих спајања историја двеју страница.",
        "history-title": "Историја измена странице „$1“",
        "preferences": "Подешавања",
        "mypreferences": "Подешавања",
        "prefs-edits": "Број измена:",
-       "prefsnologintext2": "Морате бити $1 да бисте мењали своја подешавања.",
+       "prefsnologintext2": "Морате бити пријављени да бисте мењали своја подешавања.",
        "prefs-skin": "Тема",
        "skin-preview": "Прегледај",
        "datedefault": "Свеједно",
        "action-move": "премештање ове странице",
        "action-move-subpages": "премештање ове странице и њених подстраница",
        "action-move-rootuserpages": "премештање основних корисничких страница",
+       "action-move-categorypages": "премештање категорија",
        "action-movefile": "премештање ове датотеке",
        "action-upload": "слање ове датотеке",
        "action-reupload": "замењивање постојеће датотеке",
        "randomincategory": "Случајна страница у категорији",
        "randomincategory-invalidcategory": "„$1“ није ваљано име категорије",
        "randomincategory-nopages": "Нема страница у категорији [[:Category:$1|$1]].",
-       "randomincategory-selectcategory-submit": "Иди",
+       "randomincategory-category": "Категорија:",
        "randomredirect": "Случајно преусмерење",
        "randomredirect-nopages": "Нема преусмерења у именском простору „$1”.",
        "statistics": "Статистике",
        "listgrouprights-namespaceprotection-namespace": "Именски простор",
        "trackingcategories-name": "Име поруке",
        "trackingcategories-nodesc": "Опис није доступан.",
+       "trackingcategories-disabled": "Категорија је онемогућена",
        "mailnologin": "Нема адресе за слање",
        "mailnologintext": "Морате бити [[Special:UserLogin|пријављени]] и имати исправну е-адресу у [[Special:Preferences|подешавањима]] да бисте слали е-поруке другим корисницима.",
        "emailuser": "Пошаљи е-поруку",
        "mywatchlist": "Списак надгледања",
        "watchlistfor2": "За $1 $2",
        "nowatchlist": "Ваш списак надгледања је празан.",
-       "watchlistanontext": "Морате бити $1 да бисте гледали и уређивали ставке на вашем списку надгледања.",
+       "watchlistanontext": "Морате бити пријављени да бисте гледали и уређивали ставке на вашем списку надгледања.",
        "watchnologin": "Нисте пријављени",
        "addwatch": "Додај на списак надгледања",
        "addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене тамо.",
        "delete-edit-reasonlist": "Уреди разлоге брисања",
        "delete-toobig": "Ова страница има велику историју, преко $1 {{PLURAL:$1|измене|измене|измена}}.\nБрисање таквих страница је ограничено да би се спречило случајно оптерећење сервера.",
        "delete-warning-toobig": "Ова страница има велику историју, преко $1 {{PLURAL:$1|измене|изменe|измена}}.\nЊено брисање може пореметити базу података, стога поступајте с опрезом.",
+       "deleteprotected": "Не можете обрисати ову страницу зато што је заштићена.",
        "deleting-backlinks-warning": "'''Упозорење:''' бришете страницу која је укључена у [[Special:WhatLinksHere/{{FULLPAGENAME}}|друге странице]] или друге странице воде на њу.",
        "rollback": "Врати измене",
        "rollback_short": "Врати",
        "autoblockid": "Аутоматско блокирање #$1",
        "block": "Блокирај корисника",
        "unblock": "Деблокирај корисника",
-       "blockip": "Блокирај корисника",
+       "blockip": "Блокирај {{GENDER:$1|корисника|корисницу}}",
        "blockip-legend": "Блокирај корисника",
        "blockiptext": "Користите доњи образац да бисте забранили приступ за писање с одређене ИП адресе или корисничког имена.\nОво би требало да вршите само ради спречавања вандализма, у складу са [[{{MediaWiki:Policy-url}}|смерницама]].\nИзаберите конкретан разлог испод (пример: навођење конкретних страница које су вандализоване).",
        "ipaddressorusername": "ИП адреса или корисничко име:",
        "import": "Увоз страница",
        "importinterwiki": "Међувики увоз",
        "import-interwiki-text": "Изаберите вики и наслов странице за увоз.\nДатуми и имена уредника ће бити сачувани.\nСве радње при увозу с других викија су забележене у [[Special:Log/import|дневнику увоза]].",
-       "import-interwiki-source": "Извор викија/странице:",
        "import-interwiki-history": "Копирај све верзије историје за ову страницу",
        "import-interwiki-templates": "Укључи све шаблоне",
        "import-interwiki-submit": "Увези",
        "import-rootpage-nosubpage": "Именски простор „$1“ основне странице не дозвољава подстранице.",
        "importlogpage": "Дневник увоза",
        "importlogpagetext": "Административни увози страница с историјама измена с других викија.",
-       "import-logentry-upload": "Ñ\83везено [[$1]] отпремањем датотеке",
+       "import-logentry-upload": "Ñ\98е Ñ\83везао [[$1]] отпремањем датотеке",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|измена увезена|измене увезене|измена увезено}}",
-       "import-logentry-interwiki": "премештено с другог викија: $1",
+       "import-logentry-interwiki": "је увезао $1 с другог викија",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|измена увезена|измене увезене|измена увезено}} из $2",
        "javascripttest": "Јаваскрипт тест",
        "javascripttest-title": "Извршавање тестова за $1",
        "logentry-rights-rights": "$1 је {{GENDER:$2|променио|променила}} чланство групе за $3 из $4 у $5",
        "logentry-rights-rights-legacy": "$1 је {{GENDER:$2|променио|променила}} чланство групе за $3",
        "logentry-rights-autopromote": "$1 је аутоматски {{GENDER:$2|унапређен|унапређена}} из $4 у $5",
+       "logentry-upload-upload": "$1 је {{GENDER:$2|послао|послала}} $3",
+       "logentry-upload-overwrite": "$1 је {{GENDER:$2|послао|послала}} нову верзију $3",
+       "logentry-upload-revert": "$1 је {{GENDER:$2|послао|послала}} $3",
        "rightsnone": "(нема)",
        "feedback-bugornote": "Ако сте спремни да детаљно опишете технички проблем, онда [$1 пријавите грешку].\nУ супротном, послужите се једноставним обрасцем испод. Ваш коментар ће стајати на страници „[$3 $2]“, заједно с корисничким именом и прегледачем који користите.",
        "feedback-subject": "Наслов:",
index b386295..4bca5d6 100644 (file)
        "mergehistory-same-destination": "Izvorna i odredišna stranica ne mogu biti iste",
        "mergehistory-reason": "Razlog:",
        "mergelog": "Dnevnik spajanja",
-       "pagemerge-logentry": "stranica [[$1]] je spojena u [[$2]] (sve do izmene $3)",
+       "pagemerge-logentry": "je spojio [[$1]] u [[$2]] (sve do izmene $3)",
        "revertmerge": "rastavi",
        "mergelogpagetext": "Ispod je spisak najskorijih spajanja istorija dveju stranica.",
        "history-title": "Istorija izmena stranice „$1“",
        "randomincategory": "Slučajna stranica u kategoriji",
        "randomincategory-invalidcategory": "„$1“ nije valjano ime kategorije",
        "randomincategory-nopages": "Nema stranica u kategoriji [[:Category:$1|$1]].",
-       "randomincategory-selectcategory-submit": "Idi",
        "randomredirect": "Slučajno preusmerenje",
        "randomredirect-nopages": "Nema preusmerenja u imenskom prostoru „$1”.",
        "statistics": "Statistike",
        "import": "Uvoz stranica",
        "importinterwiki": "Međuviki uvoz",
        "import-interwiki-text": "Izaberite viki i naslov stranice za uvoz.\nDatumi i imena urednika će biti sačuvani.\nSve radnje pri uvozu s drugih vikija su zabeležene u [[Special:Log/import|dnevniku uvoza]].",
-       "import-interwiki-source": "Izvor vikija/stranice:",
        "import-interwiki-history": "Kopiraj sve verzije istorije za ovu stranicu",
        "import-interwiki-templates": "Uključi sve šablone",
        "import-interwiki-submit": "Uvezi",
        "import-rootpage-nosubpage": "Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.",
        "importlogpage": "Dnevnik uvoza",
        "importlogpagetext": "Administrativni uvozi stranica s istorijama izmena s drugih vikija.",
-       "import-logentry-upload": "uvezeno [[$1]] otpremanjem datoteke",
+       "import-logentry-upload": "je uvezao [[$1]] otpremanjem datoteke",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|izmena uvezena|izmene uvezene|izmena uvezeno}}",
-       "import-logentry-interwiki": "premešteno s drugog vikija: $1",
+       "import-logentry-interwiki": "je uvezao $1 s drugog vikija",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|izmena uvezena|izmene uvezene|izmena uvezeno}} iz $2",
        "javascripttest": "Javaskript test",
        "javascripttest-title": "Izvršavanje testova za $1",
index 6178e4c..8cc2bbd 100644 (file)
        "talkpagelinktext": "Taki",
        "specialpage": "Spesrutu papira",
        "personaltools": "Mi eigi wrokosani",
-       "postcomment": "Poti wan boskopu",
        "articlepage": "Luku a papira",
        "talk": "Taki",
        "views": "Views",
        "yourdomainname": "Yu domein:",
        "login": "Psa kon",
        "nav-login-createaccount": "Psa kon / meki wan account",
-       "loginprompt": "Yu musu man kisi cookies fu man psa kon na {{SITENAME}}.",
        "userlogin": "Psa kon / meki wan account",
        "logout": "Psa gwe",
        "userlogout": "Psa gwe",
        "fileuploadsummary": "Infrumasi:",
        "uploadwarning": "Atessi fu uploti",
        "savefile": "Gefre oponaki",
-       "uploadedimage": "lai \"[[$1]]\" poti",
-       "overwroteimage": "abi wan nyun si fu \"[[$1]]\" e uploti",
        "watchthisupload": "Disi papira si",
        "license-nopreview": "(No fusi)",
        "listfiles_search_for": "Suku na gefre:",
index d229fba..edfbeb0 100644 (file)
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezioalsiede",
        "personaltools": "Persöönelke Reewen",
-       "postcomment": "Näi Stuk",
        "articlepage": "Siede",
        "talk": "Diskussion",
        "views": "Anwiesengen",
        "externaldberror": "Äntweeder deer lait n Failer bie ju externe Authentifizierenge foar, of du duurst din extern Benutzerkonto nit aktualisierje.",
        "login": "Anmäldje",
        "nav-login-createaccount": "Anmäldje",
-       "loginprompt": "Uum sik bie {{SITENAME}} anmäldje tou konnen, mouten Cookies aktivierd weese.",
        "userlogin": "Anmäldje / Benutserkonto moakje",
        "userloginnocreate": "Anmäldje",
        "logout": "Oumäldje",
        "searchprofile-advanced-tooltip": "Säik in wiedere Noomensruume",
        "search-result-size": "$1 ({{PLURAL:$2|1 Woud|$2 Woude}})",
        "search-result-category-size": "{{PLURAL:$1|1 Siede|$1 Sieden}} ({{PLURAL:$2|1 Unnerkategorie|$2 Unnerkategorien}}, {{PLURAL:$3|1 Doatäi|$3 Doatäie}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Wiederlaitenge $1)",
        "search-section": "(Apsnit $1)",
        "search-suggest": "Meendest du $1?",
        "uploadwarning": "Woarskauenge",
        "uploadwarning-text": "Annerje hierunner ju Doatäibeskrieuwenge un fersäik dät nochmoal.",
        "savefile": "Doatäi spiekerje",
-       "uploadedimage": "\"[[$1]]\" hoochleeden",
-       "overwroteimage": "häd ne näie Version fon „[[$1]]“ hoochleeden",
        "uploaddisabled": "Äntskeeldigenge, dät Hoochleeden is apstuuns deaktivierd.",
        "copyuploaddisabled": "Dät Hoochleeden fon URLs is deaktivierd",
        "uploaddisabledtext": "Dät Hoochleeden fon Doatäie is nit muugelk.",
        "watchlist-details": "Jie beooboachtje {{PLURAL:$1|1 Siede|$1 Sieden}} (Diskussionssieden wuuden hier nit meetäld).",
        "wlheader-enotif": "E-Mail-Beskeed is aktivierd.",
        "wlheader-showupdated": "Sieden, do ätter dien lääste Besäik annerd wuuden sunt, wäide '''fat''' deerstoald.",
+       "wlnote": "Hier {{PLURAL:$1|foulget do lääste Annerenge|foulgje do lääste '''$1''' Annerengen}} fon do lääste {{PLURAL:$2|Uur|'''$2''' Uuren}}.",
        "wlshowlast": "Wies do lääste $1 Uuren, $2 Deege, of $3 (in do lääste 30 Deege).",
        "watchlist-options": "Anwiesoptione",
        "watching": "Beooboachtje …",
        "duplicate-defaultsort": "Paas ap: Die Sortierengskoai „$2“ uurskrift dän toufoarne ferwoanden Koai „$1“.",
        "version": "Version",
        "version-extensions": "Installierde Ärwiederengen",
+       "version-skins": "Benutseruurflächen",
        "version-specialpages": "Spezioalsieden",
        "version-parserhooks": "Parser-Hooks",
        "version-variables": "Variablen",
        "version-antispam": "Spamskuts",
-       "version-skins": "Benutseruurflächen",
        "version-other": "Uurswät",
        "version-mediahandlers": "Medien-Handlere",
        "version-hooks": "Snitsteeden ''(Hooks)''",
index 265dfe8..0002de3 100644 (file)
        "talkpagelinktext": "Obrolan",
        "specialpage": "Kaca Husus",
        "personaltools": "Parabot pribadi",
-       "postcomment": "Bagéan anyar",
        "articlepage": "Témbongkeun kaca eusi",
        "talk": "Sawala",
        "views": "Témbongan",
        "externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa rekening luar anjeun.",
        "login": "Asup log",
        "nav-login-createaccount": "Nyieun akun/asup log",
-       "loginprompt": "Anjeun kudu boga ''cookies'' sangkan bisa asup log ka {{SITENAME}}.",
        "userlogin": "Asup log / jieun akun",
        "userloginnocreate": "Asup log",
        "logout": "Kaluar log",
        "searchprofile-advanced-tooltip": "Paluruh di rohang ngaran anu tangtu",
        "search-result-size": "$1 ({{PLURAL:$2|1 kecap|$2 kecap}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
-       "search-result-score": "Kacocogan: $1%",
        "search-redirect": "(alihan $1)",
        "search-section": "(bagean $1)",
        "search-suggest": "Meureun maksud Anjeun nyaéta: $1",
        "uploadwarning": "Pépéling ngamuat",
        "uploadwarning-text": "Ropéa pedaran berkas di handap terus cobaan deui.",
        "savefile": "Simpen koropak",
-       "uploadedimage": "ngunggah \"[[$1]]\"",
-       "overwroteimage": "Muatkeun koropak nu anyar ti \"[[$1]]\"",
        "uploaddisabled": "Punten, ngamuat ayeuna ditumpurkeun.",
        "uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.",
        "uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
        "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} nu ku anjeun diawaskeun, teu kaasup kaca obrolan/sawala.",
        "wlheader-enotif": "Pangémbar surélék difungsikeun.",
        "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
+       "wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.",
        "wlshowlast": "Témbongkeun $1 jam $2 poé $3 ahir",
        "watchlist-options": "Pilihan awaskeuneun",
        "watching": "Ngawaskeun...",
index d4aa3c9..075690c 100644 (file)
        "randomincategory": "Slumpsida i kategori",
        "randomincategory-invalidcategory": "\"$1\" är inte ett giltigt kategorinamn.",
        "randomincategory-nopages": "Det finns inga sidor i kategorin [[:Category:$1]].",
-       "randomincategory-selectcategory": "Få slumpsida från kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Gå",
+       "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Slumpsida i kategori",
        "randomredirect": "Slumpmässig omdirigering",
        "randomredirect-nopages": "Det finns inte några omdirigeringar i namnrymden \"$1\".",
        "statistics": "Statistik",
        "exbeforeblank": "innehåll före tömning var: \"$1\"",
        "delete-confirm": "Radera \"$1\"",
        "delete-legend": "Radera",
-       "historywarning": "'''Varning:''' Sidan du håller på att radera har en historik med ungefär $1 {{PLURAL:$1|version|versioner}}:",
+       "historywarning": "<strong>Varning:</strong> Sidan du håller på att radera har en historik med ungefär $1 {{PLURAL:$1|version|versioner}}:",
        "confirmdeletetext": "Du håller på att ta bort en sida med hela dess historik.\nBekräfta att du förstår vad du håller på med och vilka konsekvenser detta leder till, och att du följer [[{{MediaWiki:Policy-url}}|riktlinjerna]].",
        "actioncomplete": "Genomfört",
        "actionfailed": "Handlingen misslyckades",
        "delete-edit-reasonlist": "Redigera anledningar för radering",
        "delete-toobig": "Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Borttagning av sådana sidor har begränsats för att förhindra oavsiktliga driftstörningar på {{SITENAME}}.",
        "delete-warning-toobig": "Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.",
-       "delete-cantedit": "Du kan inte ta radera denna sida eftersom du inte har behörighet att redigera den.",
+       "deleteprotected": "Du kan inte radera denna sida eftersom den är skyddad.",
        "deleting-backlinks-warning": "'''Varning:'''\n[[Special:WhatLinksHere/{{FULLPAGENAME}}|Andra sidor]] länkar till eller inkluderar sidan som du är på väg att radera.",
        "rollback": "Rulla tillbaka ändringar",
        "rollback_short": "Tillbakarullning",
        "movepagetalktext": "Diskussionssidan kommer att även den automatiskt flyttas '''om inte''':\n*Det redan finns en diskussionssida som inte är tom med det nya namnet, eller\n*Du avmarkerar rutan nedan.\n\nI de fallen måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
        "movearticle": "Flytta sidan:",
        "moveuserpage-warning": "'''Varning:''' Du håller på att flytta en användarsida. Observera att endast sidan kommer att flyttas och att användaren ''inte'' kommer att byta namn.",
-       "movecategorypage-warning": "<strong>Varning:</strong> Du är på väg att flytta ebn kategorisida. Observera att endast sidan kommer att flyttas och eventuella sidor i den gamla kategorin kommer <em>inte</em> att kategoriseras om till den nya kategorin.",
+       "movecategorypage-warning": "<strong>Varning:</strong> Du är på väg att flytta en kategorisida. Observera att endast sidan kommer att flyttas och eventuella sidor i den gamla kategorin kommer <em>inte</em> att kategoriseras om till den nya kategorin.",
        "movenologintext": "För att flytta en sida måste du vara registrerad användare och [[Special:UserLogin|inloggad]].",
        "movenotallowed": "Du har inte behörighet att flytta sidor på den här wikin.",
        "movenotallowedfile": "Du har inte tillåtelse att flytta filer.",
        "import": "Importera sidor",
        "importinterwiki": "Transwiki-import",
        "import-interwiki-text": "Välj en wiki och sidtitel att importera.\nVersionshistorik (datum och redaktörer) kommer att bevaras.\nAll överföring mellan wikier (transwiki) listas i  [[Special:Log/import|importloggen]].",
-       "import-interwiki-source": "Källwiki/sida:",
+       "import-interwiki-sourcewiki": "Källwiki:",
+       "import-interwiki-sourcepage": "Källsida:",
        "import-interwiki-history": "Kopiera hela versionshistoriken för denna sida",
        "import-interwiki-templates": "Inkludera alla mallar",
        "import-interwiki-submit": "Importera",
index 2d064c7..04b8a9b 100644 (file)
@@ -13,7 +13,8 @@
                        "Stephenwanjau",
                        "לערי ריינהארט",
                        "아라",
-                       "Baba Tabita"
+                       "Baba Tabita",
+                       "Rich Farmbrough"
                ]
        },
        "tog-underline": "Wekea mstari viungo:",
        "talkpagelinktext": "Majadiliano",
        "specialpage": "Ukurasa maalumu",
        "personaltools": "Vifaa binafsi",
-       "postcomment": "Fungu jipya",
        "articlepage": "Onyesha kurasa zilizopo",
        "talk": "Majadiliano",
        "views": "Mitazamo",
        "hidetoc": "ficha",
        "collapsible-collapse": "Kunja",
        "collapsible-expand": "Tanua",
+       "confirmable-yes": "Ndio",
+       "confirmable-no": "Habana",
        "thisisdeleted": "Tazama au rudisha $1?",
        "viewdeleted": "Tazama $1?",
        "restorelink": "{{PLURAL:$1|sahihisho lililofutwa moja|masahihisho yaliyofutwa $1}}",
        "externaldberror": "Huenda kulikuwa na hitilafu ya database au labda hauruhusiwi kubadilisha akaunti yako ya nje.",
        "login": "Ingia",
        "nav-login-createaccount": "Ingia/ sajili akaunti",
-       "loginprompt": "Lazima tarakalishi yako ipokee kuki ili uweze kuingia kwenye {{SITENAME}}.",
        "userlogin": "Ingia/ sajili akaunti",
        "userloginnocreate": "Ingia",
        "logout": "Toka",
        "searchprofile-advanced-tooltip": "Tafuta katika maeneo ya wiki utakayoyachagua",
        "search-result-size": "$1 ({{PLURAL:$2|neno 1|maneno $2}})",
        "search-result-category-size": "{{PLURAL:$1|ukurasa 1|kurasa $1}} ({{PLURAL:$2|kijamii 1|vijamii $2}}, {{PLURAL:$3|faili 1|mafaili $3}})",
-       "search-result-score": "Kiwango cha ulinganisho na ulizo: $1%",
        "search-redirect": "(elekezo toka kwa $1)",
        "search-section": "(fungu $1)",
        "search-suggest": "Je, ulitaka kutafuta: $1",
        "uploadwarning": "Ilani kuhusu kupakia",
        "uploadwarning-text": "Tafadhali ubadilishe maelezo ya faili hapo chini, halafu jaribu tena.",
        "savefile": "Hifadhi faili",
-       "uploadedimage": "ameipakia \"[[$1]]\"",
-       "overwroteimage": "alipakia toleo jipya la \"[[$1]]\"",
        "uploaddisabled": "Upakiaji umelemazwa.",
        "copyuploaddisabled": "Kupakia kwa kupitia URL kumelemazwa.",
        "uploaddisabledtext": "Upakiaji wa mafaili umelemazwa.",
        "unusedtemplateswlh": "viungo vingine",
        "randompage": "Ukurasa wa bahati",
        "randompage-nopages": "Hakuna kurasa katika {{PLURAL:$2|eneo la wiki lifuatalo|maeneo ya wiki yafuatayo}}: $1.",
-       "randomincategory-selectcategory-submit": "Nenda",
        "randomredirect": "Elekezo la bahati",
        "randomredirect-nopages": "Hakuna maelekezo katika eneo la wiki la \"$1\".",
        "statistics": "Takwimu",
        "protectedpages-cascade": "Mpangilio wa ulindaji tu",
        "protectedpagesempty": "Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.",
        "protectedpages-page": "Ukurasa",
+       "protectedpages-reason": "Sababu",
        "protectedpages-unknown-timestamp": "Haijulikani",
        "protectedpages-unknown-performer": "Mtumiaji asiyejulikana",
        "protectedtitles": "Majina yanayozuluiwa",
        "watchlist-details": "Unafuatilia {{PLURAL:$1|ukurasa $1|kurasa $1}} bila kuzingatia kurasa za majadiliano.",
        "wlheader-enotif": "Huduma ya kuarifu kwa barua pepe imewezeshwa.",
        "wlheader-showupdated": "Kurasa zilizobadilika tangu ulivyotembelea mara ya mwisho zinaonyeshwa katika hali ya '''kukooza'''",
+       "wlnote": "{{PLURAL:$1|is the last change|Mabadiliko '''$1''' ya}} mwisho katika {{PLURAL:$2|hour|masaa '''$2''' yaliyopita yanaonyeshwa}} chini, ilivyokuwa saa $4, tarehe $3.",
        "wlshowlast": "Onyesha kutoka masaa $1 siku $2 $3",
        "watchlist-options": "Hitiari za maangalizi",
        "watching": "Unafuatilia...",
        "allmessages-prefix": "Zichujwe kwa kiambishi awali:",
        "allmessages-language": "Lugha:",
        "allmessages-filter-submit": "Uende",
+       "allmessages-filter-translate": "Kufasiri",
        "thumbnail-more": "Kuza",
        "filemissing": "Faili halipo",
        "thumbnail_error": "Hitilafu kutengeneza picha ndogo: $1",
        "import": "Kuleta kurasa",
        "importinterwiki": "Kuleta kutoka wiki nyingine",
        "import-interwiki-text": "Chagua wiki na jina la ukurasa unaotaka kuuleta.\nTarehe za mapitio na majina ya wahariri zitaletwa pia.\nVitendo vyote vya kuleta kutoka wiki nyingine vinaandikwa katika [[Special:Log/import|kumbukumbu za kuleta]].",
-       "import-interwiki-source": "Wiki/ukurasa wa chanzo:",
        "import-interwiki-history": "Leta pamoja na mapitio yote ya ukurasa huu",
        "import-interwiki-templates": "Leta pamoja na vigezo vyote",
        "import-interwiki-submit": "Leta",
        "pageinfo-display-title": "Onyesha mada",
        "pageinfo-article-id": "ID ya ukurasa",
        "pageinfo-language": "Lugha ya maudhui ya ukurasa",
+       "pageinfo-robot-index": "Halali",
+       "pageinfo-robot-noindex": "Marufuku",
        "pageinfo-watchers": "Idadi ya wanaofuatilia",
        "pageinfo-edits": "Idadi ya maharirio",
        "pageinfo-toolboxlink": "Maelezo ya ukurasa",
+       "pageinfo-redirectsto-info": "habari",
        "pageinfo-contentpage-yes": "Ndiyo",
        "pageinfo-protect-cascading-yes": "Ndiyo",
        "pageinfo-category-info": "Maelezo ya jamii",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|majadiliano]])",
        "duplicate-defaultsort": "!'''Ilani:''' Neno msingi la kupanga \"$2\" linafunika neno msingi la kupanga la awali \"$1\".",
        "version": "Toleo",
+       "version-skins": "Maumbo",
        "version-specialpages": "Kurasa maalum",
        "version-variables": "Vibadili",
-       "version-skins": "Maumbo",
        "version-other": "Zingine",
        "version-version": "(Toleo $1)",
        "version-license": "Ruhusa",
index 8aa5a8b..2a0f494 100644 (file)
        "searchprofile-advanced-tooltip": "Sznupańy we uobranych raumach mjan",
        "search-result-size": "$1 ({{PLURAL:$2|1 słowo|$2 słowa|$2 słůw}})",
        "search-result-category-size": "{{PLURAL:$1|1 element|$1 elementy|$1 elementów}} ({{PLURAL:$2|1 kategoryjo|$2 kategoryje|$2 kategoryje}}, {{PLURAL:$3|1 uobrozek|$3 uobrozki|$3 uobrozkow}})",
-       "search-result-score": "Akuratność: $1%",
        "search-redirect": "(půnkńyńćy $1)",
        "search-section": "(tajla $1)",
        "search-suggest": "Myśloł żeś: $1 ?",
index 9063d93..051e05d 100644 (file)
@@ -34,7 +34,8 @@
                        "බිඟුවා",
                        "Thamiziniyan",
                        "아라",
-                       "Kalyanasundar"
+                       "Kalyanasundar",
+                       "தமிழ்த்தம்பி"
                ]
        },
        "tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
        "hidetoc": "மறை",
        "collapsible-collapse": "சுருக்கு",
        "collapsible-expand": "விரிவாக்கு",
+       "confirmable-yes": "ஆம்",
+       "confirmable-no": "இல்லை",
        "thisisdeleted": "$1 பார்க்கவா அல்லது மீள்விக்கவா?",
        "viewdeleted": "$1 பார்?",
        "restorelink": "{{PLURAL:$1|ஒரு நீக்கப்பட்ட தொகுப்பை|$1 நீக்கப்பட்ட தொகுப்புகளை}}",
        "invalidtitle-knownnamespace": "பெயரிடைவெளி ' $2 '' மற்றும் உரை '' $3 '' கொன்ட தலைப்பு செல்லாது",
        "invalidtitle-unknownnamespace": "அறியப்படாத பெயரிடைவெளி $1 மற்றும் உரை $2 கொண்ட தலைப்பு செல்லாது",
        "exception-nologin": "புகுபதிகை செய்யப்படவில்லை.",
-       "exception-nologin-text": "à®\87நà¯\8dத à®ªà®\95à¯\8dà®\95à®®à¯\8d / à®\9aà¯\86யà¯\8dà®\95à¯\88 à®\87நà¯\8dத à®µà®¿à®\95à¯\8dà®\95ியிலà¯\8d à®\89à®\99à¯\8dà®\95ளதà¯\81 à®ªà¯\81à®\95à¯\81பதிà®\95à¯\88யà¯\88 à®\8eதிரà¯\8dபாரà¯\8dà®\95à¯\8dà®\95ிறதà¯\81.",
+       "exception-nologin-text": "à®\87நà¯\8dத à®ªà®\95à¯\8dà®\95à®®à¯\8d / à®\9aà¯\86யà¯\8dà®\95à¯\88 à®\9aà¯\86யà¯\8dய à®\85à®°à¯\81ளà¯\8dà®\95à¯\82à®°à¯\8dநà¯\8dதà¯\81 à®ªà¯\81à®\95à¯\81பதிà®\95à¯\88 à®\9aà¯\86யà¯\8dயவà¯\81à®®à¯\8d.",
        "virus-badscanner": "சரியற்ற உள்ளமைவு: அறியப்படாத வைரஸ் வருடி: '' $1 ''",
        "virus-scanfailed": "வருடல் நடைபெறவில்லை (குறியீடு $1)",
        "virus-unknownscanner": "அறியப்படாத வைரசெதிர்ப்பு:",
        "searchprofile-advanced-tooltip": "தனிப்பட்ட பெயர்வெளிகளில் தேடவும்",
        "search-result-size": "$1 ({{PLURAL:$2|1 சொல்|$2 சொற்கள்}})",
        "search-result-category-size": "{{PLURAL:$1|1 உறுப்பினர்|$1 உறுப்பினர்கள்}} ({{PLURAL:$2|1 துணைப்பகுப்பு|$2 துணைப்பகுப்புகள்}}, {{PLURAL:$3|1 கோப்பு|$3 கோப்புகள்}})",
-       "search-result-score": "பொருத்தம்: $1%",
        "search-redirect": "(பக்க வழிமாற்றம் $1)",
        "search-section": "(பிரிவு $1)",
        "search-suggest": "நீங்கள் கருதியது இதையா: $1",
        "license-header": "அனுமதி",
        "nolicense": "தெரிவுச் செய்யப்படவில்லை",
        "license-nopreview": "(முன்தோற்றம் கையிலிருப்பில் இல்லை)",
-       "upload_source_url": " (à®\9aà¯\86லà¯\8dலà¯\81பà®\9fியான, à®\87ணà¯\88ய à®®à¯\81à®\95வரி)",
+       "upload_source_url": " (நà¯\80à®\99à¯\8dà®\95ளà¯\8d à®¤à¯\86ரிவà¯\81 à®\9aà¯\86யà¯\8dத, à®ªà¯\8aதà¯\81விலà¯\8d à®\85ணà¯\81à®\95à¯\8dà®\95à¯\82à®\9fிய à®\9aà¯\86லà¯\8dலதà¯\8dதà®\95à¯\8dà®\95 à®\87ணà¯\88ய à®®à¯\81à®\95வரியிலà¯\8d à®\89ளà¯\8dள à®\95à¯\8bபà¯\8dபà¯\81)",
        "upload_source_file": "(தங்களி்ன் கணினியிலிருந்து தங்களால் தேர்ந்தெடுக்கப்பட்ட கோப்பு)",
        "listfiles-summary": "இச்சிறப்புப் பக்கம் பதிவேற்றப்பட்ட கோப்புகளைப் பட்டியலிடுகிறது.",
        "listfiles_search_for": "பின்வரும் பெயருள்ள ஊடகக் கோப்பைத் தேடு:",
        "mywatchlist": "கவனிப்புப் பட்டியல்",
        "watchlistfor2": "$1 பயனரின் ($2)",
        "nowatchlist": "உங்களுடைய கவனிப்புப் பட்டியலில் ஒரு விடயமும் இல்லை.",
-       "watchlistanontext": "உங்கள் கவனிப்புப் பட்டியலைப் பார்க்க அல்லது தொகுக்க அருள் கூர்ந்து $1 செய்யுங்கள்.",
+       "watchlistanontext": "உங்கள் கவனிப்புப் பட்டியலைப் பார்க்க அல்லது தொகுக்க அருள் கூர்ந்து புகுபதிகை செய்யுங்கள்.",
        "watchnologin": "புகுபதிகை செய்யப்படவில்லை.",
        "addwatch": "கவனிப்புப் பட்டியலில் சேர்",
        "addedwatchtext": "\"[[:$1]]\" பக்கம் உங்கள் [[Special:Watchlist|கவனிப்புப் பக்கத்தில்]] சேர்க்கப்பட்டுள்ளது. இந்தப் பக்கத்துக்கு எதிர்காலத்தில் செய்யப்படவுள்ள மாற்றங்களும், அதனோடிணைந்த பேச்சுப் பக்கமும், அங்கே பட்டியலிடப்படும். அத்துடன் தெரிந்தெடுக்க வசதியாக [[Special:RecentChanges|அண்மைய மாற்றங்களின் பட்டியலில்]] இது தடித்த எழுத்துக்களில் காட்டப்படும். பின்னர், இப் பக்கத்தை உங்கள் கவனிப்புப் பட்டியலிலிருந்து நீக்க விரும்பினால், பக்கச் சட்டத்திலுள்ள ''கவனிப்பு நீக்கு'' என்ற இணைப்பைச் சொடுக்கவும்.",
        "exbeforeblank": "வெறுமைப்படுத்த முன்னிருந்த உள்ளடக்கம்: '$1'",
        "delete-confirm": "\"$1\" பக்கத்தை நீக்கு",
        "delete-legend": "நீக்கவும்",
-       "historywarning": "'''எச்சரிக்கை:''' தாங்கள் நீக்கவுள்ள பக்கத்திற்கு சுமார் $1 {{PLURAL:$1|திருத்தம்|திருத்தங்களின்}} வரலாறு உண்டு:",
+       "historywarning": "<strong>எச்சரிக்கை:</strong> தாங்கள் நீக்கவுள்ள பக்கத்திற்கு $1 {{PLURAL:$1|திருத்தம்|திருத்தங்களின்}} வரலாறு உண்டு:",
        "confirmdeletetext": "நீங்கள் இப்பக்கத்தை அதன் வரலாற்றுடன் சேர்த்து நீக்க விழைகிறீர்கள்.\nஅருள் கூர்ந்து உங்கள் செய்கையின் விளைவுகளை நீங்கள் விளங்கிக் கொண்டீர்கள் என்பதையும் இது [[{{MediaWiki:Policy-url}}|கொள்கைகளுடன்]] ஒத்துப்போவதையும் உறுதிப் படுத்தவும்.",
        "actioncomplete": "செயற்பாடு நிறைவுற்றது",
        "actionfailed": "செயல் வெற்றியடையவில்லை",
        "autoblockid": "தானியங்கி தடை #$1",
        "block": "பயனரைத் தடைசெய்",
        "unblock": "பயனர் தடையை நீக்கு",
-       "blockip": "பயனரà¯\88தà¯\8d à®¤à®\9fà¯\81",
+       "blockip": "தà®\9fà¯\81à®\95à¯\8dà®\95வà¯\81à®®à¯\8d {{GENDER:$1|பயனரà¯\8d}}",
        "blockip-legend": "பயனரைத் தடு",
        "blockiptext": "ஒரு குறிப்பிட்ட ஐபி முகவரி அல்லது பயனரிடமிருந்து எழுத்து அணுக்கத்தைத் தடுப்பதற்குக் கீழேயுள்ள படிவத்தை உபயோகிக்கவும். இது விசமத்தனத்தைத் தடுப்பதற்கும் [[{{MediaWiki:Policy-url}}|{{SITENAME}} கொள்கை]]க்கு எற்புடைய வகையிலும் மட்டுமே பயன்படுத்தப்பட வேண்டும்.\nகுறிப்பிட்ட காரணமொன்றைக் கீழே நிரப்புக (எடுத்துக்காட்டாக, விசமத்தனம் செய்யப்பட்ட பக்கங்களை எடுத்துக் காட்டவும்).",
        "ipaddressorusername": "ஐ.பி. அல்லது பயனர் பெயர்:",
        "ipb-unblock-addr": "$1 இன் தடையை நீக்கு",
        "ipb-unblock": "ஐ.பி. அல்லது பயனருக்கான தடையை நீக்கு",
        "ipb-blocklist": "தற்போதுள்ள தடுப்புகளைப் பார்",
-       "ipb-blocklist-contribs": "$1 யின் பங்களிப்புகள்",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}}க்கு பங்களிப்புகள்",
        "unblockip": "பயனர் தடையை நீக்கு",
        "unblockiptext": "முன்னர் தடுக்கப்பட்ட ஐ.பி. முகவரி அல்லது பயனர்பெயரின் எழுத்து அணுக்கத்தை மீழ்விப்பதற்கு கீழேயுள்ள படிவத்தை பயன்படுத்தவும்.",
        "ipusubmit": "இந்தத் தடையை நீக்கு",
        "import": "பக்கங்களை இறக்கு",
        "importinterwiki": "விக்கியிடை இறக்குமதி",
        "import-interwiki-text": "இறக்குமதிக்கான விக்கியையும் பக்கத்தையும் தெரிவுச் செய்க.\nதிருத்த நாட்கள், தொகுத்தவர்களின் பெயர்கள் என்பன பேனப்படும்.\nஎல்லா விக்கியிடை இறக்குமதிகளும் [[Special:Log/import|இறக்குமதிப் பதிகையில்]] பதியப்படும்.",
-       "import-interwiki-source": "மூல விக்கி/பக்கம்:",
+       "import-interwiki-sourcepage": "மூலப் பக்கம்:",
        "import-interwiki-history": "இப்பக்கத்தின் அனைத்து வரலாற்றுப் பதிப்புகளையும் நகலெடு",
        "import-interwiki-templates": "அனைத்து வார்ப்புருக்களையும் சேர்",
        "import-interwiki-submit": "இறக்கு",
index 9df1372..4b6eb59 100644 (file)
        "talkpagelinktext": "ಪಾತೆರ",
        "specialpage": "ವಿಶೇಷ ಪುಟ",
        "personaltools": "ವೈಯಕ್ತಿಕ ಉಪಕರಣಲು",
-       "postcomment": "ಕಮೆಂಟ್ ಬರೆಲೆ",
        "articlepage": "ಲೇಖನ ಪುಟೊನು ತೂಲೆ",
        "talk": "ಚರ್ಚೆ",
        "views": "ನೋಟಲು",
        "filedesc": "ಸಾರಾಂಶ",
        "filesource": "ಮೂಲ",
        "savefile": "ಕಡತನ್ ಒರಿಪಾಲೆ",
-       "uploadedimage": "\"[[$1]]\" ಅಪ್ಲೋಡ್ ಆಂಡ್",
        "upload-source": "ಮೂಲ ಕಡತ",
        "license-header": "ಲೈಸೆನ್ಸಿಂಗ್",
        "imgfile": "ಫೈಲ್",
index 92528f5..35f166b 100644 (file)
        "talkpagelinktext": "చర్చ",
        "specialpage": "ప్రత్యేక పేజీ",
        "personaltools": "వ్యక్తిగత పనిముట్లు",
-       "postcomment": "కొత్త విభాగం",
        "articlepage": "విషయపు పేజీని చూడండి",
        "talk": "చర్చ",
        "views": "చూపులు",
        "externaldberror": "డేటాబేసు అధీకరణలో లోపం జరిగింది లేదా మీ బయటి ఖాతాను తాజాకరించడానికి మీకు అనుమతి లేదు.",
        "login": "లాగినవండి",
        "nav-login-createaccount": "లాగినవండి / ఖాతాని సృష్టించుకోండి",
-       "loginprompt": "{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.",
        "userlogin": "లాగినవండి / ఖాతాను సృష్టించుకోండి",
        "userloginnocreate": "లాగినవండి",
        "logout": "నిష్క్రమించు",
        "searchprofile-advanced-tooltip": "కస్టం నేంస్పేసులలో వెదుకు",
        "search-result-size": "$1 ({{PLURAL:$2|1 పదం|$2 పదాలు}})",
        "search-result-category-size": "{{PLURAL:$1|1 సభ్యుడు|$1 సభ్యులు}} ({{PLURAL:$2|1 ఉవవర్గం|$2 ఉపవర్గాలు}}, {{PLURAL:$3|1 దస్త్రం|$3 దస్త్రాలు}})",
-       "search-result-score": "సంబంధం: $1%",
        "search-redirect": "(దారిమార్పు $1)",
        "search-section": "(విభాగం $1)",
        "search-file-match": "(ఫైలు విషయంతో సరిపోలుతోంది)",
        "uploadwarning": "ఎక్కింపు హెచ్చరిక",
        "uploadwarning-text": "కింద ఈ ఫైలు వివరణను మార్చి, మళ్ళీ ప్రయత్నించండి.",
        "savefile": "దస్త్రాన్ని భద్రపరచు",
-       "uploadedimage": "\"[[$1]]\"ని ఎక్కించారు",
-       "overwroteimage": "\"[[$1]]\" యొక్క కొత్త కూర్పును ఎక్కించారు",
        "uploaddisabled": "ఎక్కింపులు అచేతనం చెయ్యబడ్డాయి.",
        "copyuploaddisabled": "URL ద్వారా ఎక్కింపుని అశక్తం చేసారు.",
        "uploaddisabledtext": "ఫైళ్ళ ఎక్కింపులను అచేతనం చేసారు.",
        "randomincategory": "వర్గంలోని యాదృచ్చిక పేజీ",
        "randomincategory-invalidcategory": "\"$1\" అనేది సరైన పర్గం పేరు కాదు.",
        "randomincategory-nopages": "[[:Category:$1|$1]] వర్గంలో పేజీలేమీ లేవు.",
-       "randomincategory-selectcategory": "ఈ వర్గం నుంచి ఒక యాదృచ్ఛిక పేజీని చూడండి: $1 $2.",
-       "randomincategory-selectcategory-submit": "వెళ్ళు",
        "randomredirect": "యాదృచ్చిక దారిమార్పు",
        "randomredirect-nopages": "\"$1\" పేరుబరిలో దారిమార్పులేమీ లేవు.",
        "statistics": "గణాంకాలు",
        "watchlist-details": "మీ వీక్షణ జాబితాలో {{PLURAL:$1|ఒక పేజీ ఉంది|$1 పేజీలు ఉన్నాయి}}, చర్చా పేజీలని వదిలేసి.",
        "wlheader-enotif": "ఈ-మెయిలు గమనికలు పంపబడతాయి.",
        "wlheader-showupdated": "మీ గత సందర్శన తరువాత మారిన పేజీలు <strong>బొద్దు</strong>గా చూపించబడ్డాయి.",
-       "wlnote2": "$2, $3 సమయానికి, గత {{PLURAL:$1|గంటలో|<strong>$1</strong> గంటల్లో}}, జరిగిన మార్పులు కింద ఇవ్వబడ్డాయి.",
+       "wlnote": "$3 నాడు $4 సమయానికి, గడచిన {{PLURAL:$2|గంటలో|'''$2''' గంటలలో}} జరిగిన {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
        "wlshowlast": "గత $1 గంటల $2 రోజుల $3 చూపించు",
        "watchlist-options": "వీక్షణ జాబితా ఎంపికలు",
        "watching": "గమనిస్తున్నారు...",
        "import": "పేజీలను దిగుమతి చేసుకోండి",
        "importinterwiki": "ఇంకోవికీ నుండి దిగుమతి",
        "import-interwiki-text": "దిగుమతి చేసుకోవడానికి ఒక వికీని మరియు అందులోని పేజీని ఎంచుకోండి.\nకూర్పుల తేదీలు మరియు మార్పులు చేసిన వారి పేర్లు భద్రపరచబడతాయి.\nఇతర వికీలనుండి చేస్తున్న దిగుమతుల చర్యలన్నీ [[Special:Log/import|దిగుమతుల చిట్టా]]లో నమోదవుతాయి.",
-       "import-interwiki-source": "మూల వికీ/పేజీ:",
        "import-interwiki-history": "ఈ పేజీ యొక్క అన్ని చారిత్రక కూర్పులను కాపీ చెయ్యి",
        "import-interwiki-templates": "అన్ని మూసలను ఉంచు",
        "import-interwiki-submit": "దిగుమతించు",
        "duplicate-defaultsort": "హెచ్చరిక: డిఫాల్టు పేర్చు కీ \"$2\", గత డిఫాల్టు పేర్చు కీ \"$1\" ని అతిక్రమిస్తుంది.",
        "version": "సంచిక",
        "version-extensions": "స్థాపించిన పొడగింతలు",
+       "version-skins": "అలంకారాలు",
        "version-specialpages": "ప్రత్యేక పేజీలు",
        "version-parserhooks": "పార్సరు కొక్కాలు",
        "version-variables": "చరరాశులు",
        "version-antispam": "స్పాము నివారణ",
-       "version-skins": "అలంకారాలు",
        "version-other": "ఇతర",
        "version-mediahandlers": "మీడియాను ఫైళ్లను నడిపించే పొడిగింపులు",
        "version-hooks": "కొక్కాలు",
index 423f1e3..cbb282c 100644 (file)
        "talkpage": "Diskusaun kona-ba pájina ne'e",
        "talkpagelinktext": "Diskusaun",
        "specialpage": "Pájina espesiál",
-       "postcomment": "Seksaun foun",
        "talk": "Diskusaun",
        "toolbox": "Kaixa besi nian",
        "userpage": "Haree pájina uza-na'in",
        "historyempty": "(mamuk)",
        "history-feed-item-nocomment": "$1 iha $2",
        "rev-delundel": "hatudu/subar",
+       "rev-showdeleted": "hatudu",
        "revisiondelete": "Halakon/restaurar versaun",
        "revdelete-show-file-submit": "Sin",
        "revdelete-hide-user": "Subar naran edita-na'in/IP",
        "recentchanges-label-minor": "Ne'e mudansa ki'ik",
        "recentchanges-label-bot": "Edita husi prosesu automátiku (\"bot\")",
        "rcshowhideminor": "$1 muda ki-ki'ik",
+       "rcshowhideminor-show": "Hatudu",
        "rcshowhidebots": "$1 bot sira",
+       "rcshowhidebots-show": "Hatudu",
        "rcshowhideliu": "$1 ema rejista",
+       "rcshowhideliu-show": "Hatudu",
        "rcshowhideanons": "$1 ema anónimu",
+       "rcshowhideanons-show": "Hatudu",
+       "rcshowhideanons-hide": "Subar",
+       "rcshowhidepatr-show": "Hatudu",
        "rcshowhidemine": "$1 ha'u-nia edita",
+       "rcshowhidemine-show": "Hatudu",
        "diff": "diferensa",
        "hist": "istória",
        "hide": "Hamsumik",
index 50eecf7..20e7d0e 100644 (file)
        "talkpagelinktext": "Баҳс",
        "specialpage": "Саҳифаи вижа",
        "personaltools": "Абзорҳои шахсӣ",
-       "postcomment": "Бахши нав",
        "articlepage": "Намоиши мақола",
        "talk": "Баҳс",
        "views": "Назарот",
        "externaldberror": "Хатое дар иртибот бо пойгоҳи дода рух дода аст ё ин ки шумо иҷозат ба рӯзрасонии ҳисоби берунии худро надоред.",
        "login": "Вуруд",
        "nav-login-createaccount": "Вуруд / Сохтани ҳисоби ҷадид",
-       "loginprompt": "Барои вуруд ба {{SITENAME}} бояд кукиҳоро фаъол кунед.",
        "userlogin": "Вуруд / Сохтани ҳисоби ҷадид",
        "userloginnocreate": "Вуруд",
        "logout": "Хуруҷ аз систем",
        "searchprofile-everything-tooltip": "Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)",
        "searchprofile-advanced-tooltip": "Ҷустуҷӯ дар фазоҳои номи дилхоҳ",
        "search-result-size": "$1 ({{PLURAL:$2|1 калима|$2 калимаҳо}})",
-       "search-result-score": "Иртибот: $1%",
        "search-redirect": "(тағйири масир $1)",
        "search-section": "(қисмат $1)",
        "search-suggest": "Оё шумо инро дар назар доред: $1",
        "fileexists-shared-forbidden": "Дар ҳоли ҳозир парванде бо ҳамин ном дар анбори муштараки парвандаҳо вуҷуд дорад; лутфан бар гардед ва парвандаи мавриди назари худро бо номи дигар бо кунед. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Огоҳии фиристодан",
        "savefile": "Захираи парванда",
-       "uploadedimage": "боршуда \"[[$1]]\"",
-       "overwroteimage": "нусхаи ҷадиди \"[[$1]]\" боргузорӣ шуд",
        "uploaddisabled": "Бор кордан ғайрифаъол аст",
        "copyuploaddisabled": "Боркунӣ тавассути нишонаи интернетӣ ғайрифаъол аст.",
        "uploaddisabledtext": "Боркунии парванда ғайрифаъол аст.",
        "watchlist-details": "{{PLURAL:$1|$1 саҳифа|$1 саҳифаҳо}} дар феҳристи пайгириҳои шумо, бидуни ҳисоби саҳифаҳои баҳс.",
        "wlheader-enotif": "Иттилоорасонии тариқи почтаи электронӣ (E-mail) фаъол шудааст.",
        "wlheader-showupdated": "Саҳифаҳое, ки пас аз охирин сар заданатон ба онҳо тағйир кардаанд '''пурранг''' нишон дода шудаанд",
+       "wlnote": "Дар зер {{PLURAL:$1|охирин тағйир|'''$1''' охирин тағйирот}} дар $2 соати охир {{PLURAL:омадааст|омадаанд}}.",
        "wlshowlast": "Намоиши охирин $1 соат $2 рӯзҳо $3",
        "watchlist-options": "Ихтиёроти феҳристи пайгириҳо",
        "watching": "Пайгири...",
index 780bc24..ec2df52 100644 (file)
        "talkpagelinktext": "Bahs",
        "specialpage": "Sahifai viƶa",
        "personaltools": "Abzorhoi şaxsī",
-       "postcomment": "Baxşi nav",
        "articlepage": "Namoişi maqola",
        "talk": "Bahs",
        "views": "Nazarot",
        "externaldberror": "Xatoe dar irtibot bo pojgohi doda rux doda ast jo in ki şumo içozat ba rūzrasoniji hisobi beruniji xudro nadored.",
        "login": "Vurud",
        "nav-login-createaccount": "Vurud / Soxtani hisobi çadid",
-       "loginprompt": "Baroi vurud ba {{SITENAME}} bojad kukihoro fa'ol kuned.",
        "userlogin": "Vurud / Soxtani hisobi çadid",
        "userloginnocreate": "Vurud",
        "logout": "Xuruç az sistem",
        "searchprofile-images-tooltip": "Çustuçūi parvandaho",
        "searchprofile-everything-tooltip": "Çustuçūi hamai mūhtavo (bo hisobi sahifahoi bahs)",
        "search-result-size": "$1 ({{PLURAL:$2|1 kalima|$2 kalimaho}})",
-       "search-result-score": "Irtibot: $1%",
        "search-redirect": "(taƣjiri masir $1)",
        "search-section": "(qismat $1)",
        "search-suggest": "Ojo şumo inro dar nazar dored: $1",
        "fileexists-thumbnail-yes": "Az aks ba nazar merasad, ki aksi andozaaş xurd ''(anguştdona)''. [[$1|thumb]]\nLutan parvandaro <strong>[[:$1]]</strong> barrasī kuned.\nAgar parvandai barrasişuda aksi xurd karda şudai on parvandai aslī ast, nijoze ba borguzoriji aksi xurd nest.",
        "uploadwarning": "Ogohiji firistodan",
        "savefile": "Zaxirai parvanda",
-       "uploadedimage": "borşuda \"[[$1]]\"",
-       "overwroteimage": "nusxai çadidi \"[[$1]]\" borguzorī şud",
        "uploaddisabled": "Bor kordan ƣajrifa'ol ast",
        "uploadscripted": "In parvanda kodi skriptī jo HTML dorad, ki metavonad dar mururgarī veb nodurust namojon şavad.",
        "uploadvirus": "In parvanda virus dorad! Çuz'ijot: $1",
        "watchlist-details": "{{PLURAL:$1|$1 sahifai|$1 sahifahoi}} dar fehristi pajgirihoi şumo, biduni hisobi sahifahoi bahs.",
        "wlheader-enotif": "Ittiloorasoniji tariqi poctai elektronī (E-mail) imkonpazir ast.",
        "wlheader-showupdated": "Sahifahoe, ki pas az oxirin sar zadanaton ba onho taƣjir kardaand '''purrang''' nişon doda şudaand",
+       "wlnote": "Dar zer {{PLURAL:$1|oxirin taƣjir|'''$1''' oxirin taƣjirot}} dar $2 soati oxir {{PLURAL:omadaast|omadaand}}.",
        "wlshowlast": "Namoişi oxirin $1 soat $2 rūzho $3",
        "watchlist-options": "Ixtijoroti fehristi pajgiriho",
        "watching": "Pajgiri...",
index c9f1b95..7c5dd9e 100644 (file)
@@ -29,7 +29,7 @@
        "tog-newpageshidepatrolled": "ซ่อนหน้าที่ตรวจแล้วจากรายการหน้าใหม่",
        "tog-extendwatchlist": "ขยายรายการเฝ้าดูให้แสดงการเปลี่ยนแปลงทั้งหมด ไม่เพียงการเปลี่ยนแปลงล่าสุด",
        "tog-usenewrc": "จัดกลุ่มการเปลี่ยนแปลงแบ่งตามหน้าในรายการปรับปรุงล่าสุดและรายการเฝ้าดู",
-       "tog-numberheadings": "à¹\83สà¹\88à¹\80ลà¸\82หัวà¸\82à¹\89อà¹\83à¸\99สารà¸\9aัà¸\8dอัตโนมัติ",
+       "tog-numberheadings": "à¹\83สà¹\88à¹\80ลà¸\82หัวà¹\80รืà¹\88อà¸\87อัตโนมัติ",
        "tog-showtoolbar": "แสดงแถบเครื่องมือแก้ไข",
        "tog-editondblclick": "แก้ไขหน้าเมื่อดับเบิลคลิก",
        "tog-editsectiononrightclick": "เปิดใช้งานการแก้ไขเฉพาะส่วนโดยคลิกขวาที่ชื่อเรื่องของส่วนนั้น",
@@ -40,9 +40,9 @@
        "tog-watchrollback": "เพิ่มหน้าที่ฉันย้อนกลับฉุกเฉินเข้ารายการเฝ้าดู",
        "tog-minordefault": "กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
        "tog-previewontop": "ให้ตัวอย่างการแก้ไขแสดงก่อนกล่องแก้ไข",
-       "tog-previewonfirst": "à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82สำหรัà¸\9aการแก้ไขครั้งแรก",
-       "tog-enotifwatchlistpages": "อีà¹\80มลหาà¹\80มืà¹\88อหà¸\99à¹\89าหรือà¹\84à¸\9fลà¹\8cà¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูมีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87",
-       "tog-enotifusertalkpages": "อีà¹\80มลหาà¹\80มืà¹\88อหà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\89ัà¸\99มีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87",
+       "tog-previewonfirst": "à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¹\83à¸\99การแก้ไขครั้งแรก",
+       "tog-enotifwatchlistpages": "อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูเปลี่ยนแปลง",
+       "tog-enotifusertalkpages": "อีà¹\80มลหาà¹\80มืà¹\88อมีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87à¸\89ัà¸\99",
        "tog-enotifminoredits": "อีเมลหาเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย",
        "tog-enotifrevealaddr": "เปิดเผยที่อยู่อีเมลของฉันในอีเมลแจ้งเตือน",
        "tog-shownumberswatching": "แสดงจำนวนผู้ใช้ที่เฝ้าดู",
@@ -57,9 +57,9 @@
        "tog-watchlisthideanons": "ซ่อนการแก้ไขโดยผู้ใช้นิรนามจากรายการเฝ้าดู",
        "tog-watchlisthidepatrolled": "ซ่อนการแก้ไขที่ตรวจแล้วจากรายการเฝ้าดู",
        "tog-ccmeonemails": "ส่งสำเนาอีเมลที่ฉันส่งหาผู้อื่นให้ฉัน",
-       "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89อหาà¹\83à¸\95à¹\89สà¹\88วà¸\99à¸\95à¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82",
+       "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89อหาหà¸\99à¹\89าà¹\83à¸\95à¹\89à¸\9cลà¸\95à¹\88าà¸\87",
        "tog-showhiddencats": "แสดงหมวดหมู่ที่ซ่อนอยู่",
-       "tog-norollbackdiff": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลงหลังดำเนินการย้อนกลับฉุกเฉิน",
+       "tog-norollbackdiff": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¸\9cลà¸\95à¹\88างหลังดำเนินการย้อนกลับฉุกเฉิน",
        "tog-useeditwarning": "เตือนฉันเมื่อออกหน้าแก้ไขโดยมีการเปลี่ยนแปลงที่ยังไม่บันทึก",
        "tog-prefershttps": "ใช้การเชื่อมต่อปลอดภัยทุกครั้งเมื่อล็อกอิน",
        "underline-always": "ทุกครั้ง",
        "category-subcat-count": "{{PLURAL:$2|หมวดหมู่นี้มีหมวดหมู่ย่อยเพียงหมวดหมู่เดียว|หมวดหมู่นี้มี {{PLURAL:$1|หมวดหมู่ย่อย|$1 หมวดหมู่ย่อย}} จากทั้งหมด $2 หมวดหมู่}}",
        "category-subcat-count-limited": "หมวดหมู่นี้มี $1 หมวดหมู่ย่อย",
        "category-article-count": "{{PLURAL:$2|หมวดหมู่นี้มีอยู่เพียงหน้าเดียว|ในหมวดหมู่นี้มี {{PLURAL:$1|หน้าเดียว|$1 หน้า}} จากทั้งหมด $2 หน้า}}",
-       "category-article-count-limited": "มี $1 หน้าในหมวดหมู่นี้",
-       "category-file-count": "{{PLURAL:$2|หมวà¸\94หมูà¹\88à¸\99ีà¹\89มีà¹\80à¸\9eียà¸\87à¹\84à¸\9fลà¹\8cà¹\80à¸\94ียว|à¹\83à¸\99หมวดหมู่นี้มี $1 ไฟล์ จากทั้งหมด $2 ไฟล์}}",
+       "category-article-count-limited": "$1 หน้าต่อไปนี้อยู่ในหมวดหมู่นี้",
+       "category-file-count": "{{PLURAL:$2|หมวà¸\94หมูà¹\88à¸\99ีà¹\89มีà¹\80à¸\9eียà¸\87à¹\84à¸\9fลà¹\8cà¸\99ีà¹\89|หมวดหมู่นี้มี $1 ไฟล์ จากทั้งหมด $2 ไฟล์}}",
        "category-file-count-limited": "{{PLURAL:$1|ไฟล์|ไฟล์}}ต่อไปนี้อยู่ในหมวดหมู่นี้",
        "listingcontinuesabbrev": "ต่อ",
        "index-category": "หน้าที่มีดัชนี",
        "history_short": "ประวัติ",
        "updatedmarker": "ถูกปรับตั้งแต่การเข้าชมครั้งล่าสุดของฉัน",
        "printableversion": "รุ่นพร้อมพิมพ์",
-       "permalink": "ลิà¸\87à¸\81à¹\8cถาวร",
+       "permalink": "à¸\81ารà¹\82ยà¸\87ถาวร",
        "print": "พิมพ์",
        "view": "ดู",
        "view-foreign": "ดูบน $1",
        "viewcount": "หน้านี้มีการเข้าชม $1 ครั้ง",
        "protectedpage": "หน้าถูกล็อก",
        "jumpto": "ข้ามไปยัง:",
-       "jumptonavigation": "à¸\99ำทาง",
+       "jumptonavigation": "à¸\9aอà¸\81ทาง",
        "jumptosearch": "ค้นหา",
        "view-pool-error": "ขออภัย ขณะนี้เซิร์ฟเวอร์มีภาระเกิน\nผู้ใช้พยายามดูหน้านี้มากเกินไป\nกรุณารอสักครู่ก่อนเข้าหน้านี้อีกครั้ง\n\n$1",
        "generic-pool-error": "ขออภัย ขณะนี้เซิร์ฟเวอร์โหลดเกิน\nมีผู้ใช้พยายามดูทรัพยากรนี้มากเกินไป\nโปรดรอสักครู่ก่อนลองเข้าถึงทรัพยากรนี้อีกครั้ง",
        "portal-url": "Project:ศูนย์รวมชุมชน",
        "privacy": "นโยบายสิทธิส่วนบุคคล",
        "privacypage": "Project:นโยบายสิทธิส่วนบุคคล",
-       "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
+       "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
        "badaccess-group0": "คุณไม่ได้รับอนุญาตให้ดำเนินการตามที่ขอ",
-       "badaccess-groups": "ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่ม}}: $1",
+       "badaccess-groups": "ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่มเหล่านี้}}: $1",
        "versionrequired": "ต้องการมีเดียวิกิรุ่น $1",
        "versionrequiredtext": "การใช้หน้านี้ต้องการมีเดียวิกิรุ่น $1  ดู[[Special:Version|หน้ารุ่น]]",
        "ok": "ตกลง",
        "thisisdeleted": "ดูหรือกู้คืน $1 หรือไม่",
        "viewdeleted": "ดู $1 หรือไม่",
        "restorelink": "$1 การแก้ไขที่ถูกลบ",
-       "feedlinks": "ฟีด",
+       "feedlinks": "ฟีด:",
        "feed-invalid": "ฟีดที่สมัครไม่ถูกชนิด",
        "feed-unavailable": "ฟีดไม่ถูกเปิดการใช้งาน",
        "site-rss-feed": "ฟีดอาร์เอสเอส $1",
        "nosuchactiontext": "การกระทำที่กำหนดผ่านยูอาร์แอลดังกล่าวไม่สามารถใช้ได้\nคุณอาจกรอกยูอาร์แอลผิด หรือมาตามลิงก์ที่ไม่ถูกต้อง\nหรืออาจเกิดจากข้อผิดพลาดในซอฟต์แวร์ซึ่ง {{SITENAME}} ใช้อยู่",
        "nosuchspecialpage": "ไม่มีหน้าพิเศษดังกล่าว",
        "nospecialpagetext": "<strong>คุณขอหน้าพิเศษไม่ถูกต้อง</strong>\n\nรายการหน้าพิเศษที่ถูกต้องดูได้ที่ [[Special:SpecialPages|รายการหน้าพิเศษ]]",
-       "error": "ผิดพลาด",
-       "databaseerror": "ผิดพลาดที่ฐานข้อมูล",
+       "error": "à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94",
+       "databaseerror": "à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\97ีà¹\88à¸\90าà¸\99à¸\82à¹\89อมูล",
        "databaseerror-text": "เกิดความผิดพลาดข้อคำถามของฐานข้อมูล\nซึ่งอาจบ่งชี้ว่ามีจุดบกพร่องในซอฟต์แวร์",
        "databaseerror-textcl": "เกิดความผิดพลาดข้อคำถามของฐานข้อมูล",
        "databaseerror-query": "ข้อคำถาม: $1",
        "databaseerror-function": "ฟังก์ชัน: $1",
-       "databaseerror-error": "à¸\84วามผิดพลาด: $1",
-       "laggedslavemode": "'''คำเตือน:''' ข้อมูลในหน้าอาจไม่ใช่ข้อมูลล่าสุด",
+       "databaseerror-error": "à¸\82à¹\89อผิดพลาด: $1",
+       "laggedslavemode": "<strong>คำเตือน:</strong> หน้านี้อาจไม่มีการปรับล่าสุด",
        "readonly": "ฐานข้อมูลถูกล็อก",
        "enterlockreason": "ใส่เหตุแห่งการล็อก ทั้งเวลาที่คาดว่าจะปลดล็อก",
-       "readonlytext": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\90าà¸\99à¸\82à¹\89อมูลà¸\96ูà¸\81ลà¹\87อà¸\81มิà¹\83หà¹\89รัà¸\9aà¸\82à¹\89อมูลà¹\83หมà¹\88à¹\81ละà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87อื่น อาจเป็นเพราะการบำรุงรักษาฐานข้อมูลรูทีน หลังแล้วเสร็จจะกลับมาใช้งานได้ตามปกติ\n\nผู้ดูแลระบบที่ล็อกได้ให้คำอธิบายดังนี้: $1",
-       "missing-article": "à¸\90าà¸\99à¸\82à¹\89อมูลà¹\84มà¹\88à¸\9eà¸\9aà¹\80à¸\99ืà¹\89อหาà¸\82อà¸\87หà¸\99à¹\89าà¸\97ีà¹\88à¸\84วรà¸\88ะมี à¹\83à¸\99à¸\8aืà¹\88อ \"$1\" $2\n\nสาà¹\80หà¸\95ุมัà¸\81à¹\80à¸\81ิà¸\94à¸\88าà¸\81à¸\81ารà¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aà¸\97ีà¹\88ลà¹\89าสมัย à¸«à¸£à¸·à¸­à¸\81ารà¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¸\9bระวัà¸\95ิà¹\84à¸\9bยัà¸\87หà¸\99à¹\89าà¸\99ัà¹\89à¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว\n\nหาà¸\81à¹\84มà¹\88à¹\83à¸\8aà¹\88à¸\81รà¸\93ีà¸\94ัà¸\87à¸\81ลà¹\88าว à¸\84ุà¸\93อาà¸\88à¸\9eà¸\9aà¸\9aัà¹\8aà¸\81ในซอฟต์แวร์ กรุณารายงานต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]] พร้อมระบุยูอาร์แอล",
-       "missingarticle-rev": "(รุ่น#: $1)",
+       "readonlytext": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\90าà¸\99à¸\82à¹\89อมูลà¸\96ูà¸\81ลà¹\87อà¸\81มิà¹\83หà¹\89รัà¸\9aà¸\82à¹\89อมูลà¹\83หมà¹\88à¹\81ละà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\9eิà¹\88มà¹\80à¸\95ิมอื่น อาจเป็นเพราะการบำรุงรักษาฐานข้อมูลรูทีน หลังแล้วเสร็จจะกลับมาใช้งานได้ตามปกติ\n\nผู้ดูแลระบบที่ล็อกได้ให้คำอธิบายดังนี้: $1",
+       "missing-article": "à¸\90าà¸\99à¸\82à¹\89อมูลà¹\84มà¹\88à¸\9eà¸\9aà¸\82à¹\89อà¸\84วามà¸\82อà¸\87หà¸\99à¹\89าà¸\97ีà¹\88à¸\84วรมี à¸\8aืà¹\88อ \"$1\" $2\n\nสาà¹\80หà¸\95ุมัà¸\81à¹\80à¸\81ิà¸\94à¸\88าà¸\81à¸\9cลà¸\95à¹\88าà¸\87à¸\97ีà¹\88ลà¹\89าสมัย à¸«à¸£à¸·à¸­à¸\81ารà¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87à¸\9bระวัà¸\95ิà¹\84à¸\9bยัà¸\87หà¸\99à¹\89าà¸\99ัà¹\89à¸\99à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว\n\nหาà¸\81à¹\84มà¹\88à¹\83à¸\8aà¹\88à¸\81รà¸\93ีà¸\94ัà¸\87à¸\81ลà¹\88าว à¸\84ุà¸\93อาà¸\88à¸\9eà¸\9aà¸\88ุà¸\94à¸\9aà¸\81à¸\9eรà¹\88อà¸\87ในซอฟต์แวร์ กรุณารายงานต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]] พร้อมระบุยูอาร์แอล",
+       "missingarticle-rev": "(รุ่นปรับปรุง#: $1)",
        "missingarticle-diff": "(ต่าง: $1, $2)",
        "readonly_lag": "ฐานข้อมูลถูกล็อกอัตโนมัติขณะที่เซิร์ฟเวอร์ฐานข้อมูลรองกำลังปรับปรุงตามฐานข้อมูลหลัก",
-       "internalerror": "à¹\80à¸\81ิà¸\94à¸\84วามผิดพลาดภายใน",
-       "internalerror_info": "à¹\80à¸\81ิà¸\94à¸\84วามผิดพลาดภายใน: $1",
+       "internalerror": "à¸\82à¹\89อผิดพลาดภายใน",
+       "internalerror_info": "à¹\80à¸\81ิà¸\94à¸\82à¹\89อผิดพลาดภายใน: $1",
        "filecopyerror": "ไม่สามารถคัดลอกไฟล์ \"$1\" ไปที่ \"$2\"",
        "filerenameerror": "ไม่สามารถเปลี่ยนชื่อไฟล์ \"$1\" เป็น \"$2\"",
        "filedeleteerror": "ไม่สามารถลบไฟล์ \"$1\"",
        "directorycreateerror": "ไม่สามารถสร้างไดเรกทอรี \"$1\"",
        "filenotfound": "ไม่พบไฟล์ \"$1\"",
        "unexpected": "ผลที่ไม่คาดคิด: \"$1\"=\"$2\"",
-       "formerror": "à¸\9cิà¸\94à¸\9eลาà¸\94: à¹\84มà¹\88สามารà¸\96สà¹\88à¸\87à¹\81à¸\9aà¸\9aได้",
-       "badarticleerror": "à¸\81ารà¸\81ระà¸\97ำà¸\99ีà¹\89à¹\84มà¹\88สามารà¸\96à¸\97ำà¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94้",
+       "formerror": "à¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94: à¸ªà¹\88à¸\87à¹\81à¸\9aà¸\9aà¹\84มà¹\88ได้",
+       "badarticleerror": "à¹\84มà¹\88สามารà¸\96à¸\94ำà¹\80à¸\99ิà¸\99à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\99ีà¹\89à¹\83à¸\99หà¸\99à¹\89าà¸\99ี้",
        "cannotdelete": "ไม่สามารถลบหน้าหรือไฟล์ \"$1\" \nอาจมีผู้อื่นลบไปแล้ว",
        "cannotdelete-title": "ไม่สามารถลบหน้า ''$1''",
-       "delete-hook-aborted": "à¸\81ารลà¸\9aà¸\96ูà¸\81ฮุà¸\81ยà¸\81à¹\80ลิà¸\81\nà¹\82à¸\94ยà¹\84มà¹\88มีà¸\84ำอà¸\98ิà¸\9aาย",
+       "delete-hook-aborted": "à¸\81ารลà¸\9aà¸\96ูà¸\81ฮุà¸\81ยà¸\81à¹\80ลิà¸\81\nà¹\82à¸\94ยà¹\84มà¹\88มีà¸\84ำà¸\8aีà¹\89à¹\81à¸\88à¸\87",
        "no-null-revision": "ไม่สามารถสร้างรุ่นว่างใหม่ของหน้า \"$1\"",
        "badtitle": "ใช้ชื่อเรื่องนี้ไม่ได้",
        "badtitletext": "ชื่อหน้าที่ขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อข้ามภาษาหรือข้ามวิกิที่เชื่อมโยงไม่ถูกต้อง\nอาจมีอักขระที่ไม่สามารถใช้ในชื่อเรื่องได้",
        "perfcached": "ข้อมูลต่อไปนี้ถูกเก็บในแคช และอาจล้าสมัย มีผลการค้นหาสูงสุด $1 รายการในแคช",
        "perfcachedts": "ข้อมูลต่อไปนี้ถูกเก็บในแคช และได้รับการปรับล่าสุดเมื่อ $1 ผลลัพธ์สูงสุด $4 รายการสามารถเก็บในแคชได้",
-       "querypage-no-updates": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9a ข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน",
+       "querypage-no-updates": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¸\9bรัà¸\9aหà¸\99à¹\89าà¸\99ีà¹\89 \nข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน",
        "viewsource": "ดูโค้ด",
        "viewsource-title": "ดูโค้ดสำหรับ $1",
-       "actionthrottled": "à¸\81ารà¸\81ระà¸\97ำà¸\99ีà¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9aà¹\84วà¹\89à¸\8aัà¹\88วà¸\84ราว",
-       "actionthrottledtext": "à¹\80à¸\9eืà¹\88อà¹\80à¸\9bà¹\87à¸\99มาà¸\95รà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99สà¹\81à¸\9bม à¸\84ุà¸\93à¸\88ึà¸\87à¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94มิà¹\83หà¹\89à¸\81ระà¸\97ำสิà¹\88à¸\87à¸\99ีà¹\89à¹\84มà¹\88à¹\83หà¹\89à¸\95ิà¸\94à¸\95à¹\88อà¸\81ัà¸\99หลายà¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9bà¹\83à¸\99à¸\8aà¹\88วà¸\87ระยะà¹\80วลาสัà¹\89à¸\99 à¹\86 à¸\8bึà¹\88à¸\87à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\93à¹\84à¸\94à¹\89à¸\81ระà¸\97ำà¹\80à¸\81ิà¸\99à¸\82ีà¸\94à¸\88ำà¸\81ัà¸\94à¹\81ลà¹\89ว กรุณารอสักครู่แล้วลองอีกครั้ง",
-       "protectedpagetext": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87อà¸\81à¹\80à¸\9eืà¹\88อà¸\9bà¹\89อà¸\87à¸\81ัà¸\99มิà¹\83หà¹\89แก้ไขหรือปฏิบัติการอื่น",
+       "actionthrottled": "à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94",
+       "actionthrottledtext": "à¹\80à¸\9eืà¹\88อà¹\80à¸\9bà¹\87à¸\99มาà¸\95รà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99สà¹\81à¸\9bม à¸\84ุà¸\93à¸\88ึà¸\87à¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94มิà¹\83หà¹\89à¸\81ระà¸\97ำสิà¹\88à¸\87à¸\99ีà¹\89à¹\84มà¹\88à¹\83หà¹\89à¸\95ิà¸\94à¸\95à¹\88อà¸\81ัà¸\99หลายà¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9bà¹\83à¸\99à¸\8aà¹\88วà¸\87ระยะà¹\80วลาสัà¹\89à¸\99 à¹\86 à¸\8bึà¹\88à¸\87à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\93à¹\80ลยà¸\82ีà¸\94à¸\88ำà¸\81ัà¸\94à¸\99ีà¹\89à¹\81ลà¹\89ว \nกรุณารอสักครู่แล้วลองอีกครั้ง",
+       "protectedpagetext": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87อà¸\81à¹\80à¸\9eืà¹\88อà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¸\81ารแก้ไขหรือปฏิบัติการอื่น",
        "viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้:",
-       "viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ'''การแก้ไขของคุณ'''ในหน้านี้ได้",
+       "viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ<strong>การแก้ไขของคุณ</strong>มายังหน้านี้ได้:",
        "protectedinterface": "หน้านี้เป็นข้อความอินเตอร์เฟซสำหรับซอฟต์แวร์บนวิกินี้ และถูกป้องกันเพื่อมิให้มีการกระทำผิด\nในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
        "editinginterface": "'''คำเตือน:''' คุณกำลังแก้ไขหน้าที่ใช้เพื่อให้ข้อความอินเตอร์เฟซแก่ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะกระทบต่อลักษณะของอินเตอร์เฟซผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้\nในการเพิ่มหรือเปลี่ยนแปลงคำแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
-       "cascadeprotected": "หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¸\88าà¸\81à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¹\83à¸\8aà¹\89à¹\80à¸\9bà¹\87à¸\99สà¹\88วà¸\99หà¸\99ึà¹\88à¸\87à¹\83à¸\99{{PLURAL:$1|หà¸\99à¹\89า $2 à¸\8bึà¹\88à¸\87à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¹\81à¸\9aà¸\9a \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\"|หà¸\99à¹\89าà¸\8bึà¹\88à¸\87à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¹\81à¸\9aà¸\9a \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\" à¸\94ัà¸\87à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89: $2}}",
+       "cascadeprotected": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¸\9bà¹\89อà¸\87à¸\81ัà¸\99มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¹\80à¸\9eราะà¸\96ูà¸\81รวมอยูà¹\88à¹\83à¸\99หà¸\99à¹\89าà¸\8bึà¹\88à¸\87à¸\96ูà¸\81ลà¹\87อà¸\81à¹\82à¸\94ยà¹\80à¸\9bิà¸\94à¸\95ัวà¹\80ลือà¸\81 \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\":\n$2",
        "namespaceprotected": "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ <strong>$1</strong>",
-       "customcssprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าสà¹\84à¸\95ลà¹\8c CSS à¸\99ีà¹\89 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81หà¸\99à¹\89าà¸\99ีà¹\89มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
-       "customjsprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¸\99ีà¹\89 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81หน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
+       "customcssprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าสà¹\84à¸\95ลà¹\8c CSS à¸\99ีà¹\89 à¹\80à¸\9eราะมีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
+       "customjsprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¸\99ีà¹\89 à¹\80à¸\9eราะหน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
        "mycustomcssprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขหน้าซีเอสเอสนี้",
        "mycustomjsprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขหน้าจาวาสคริปต์นี้",
        "myprivateinfoprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขข้อมูลส่วนตัวของคุณ",
        "mypreferencesprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขการตั้งค่าของคุณ",
-       "ns-specialprotected": "หà¸\99à¹\89าà¸\9eิà¹\80ศษà¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82à¹\84à¸\94à¹\89",
-       "titleprotected": "ชื่อเรื่องนี้ถูกป้องกันมิให้สร้างโดย [[User:$1|$1]] \nเหตุผลที่ให้ไว้คือ ''<em>$2</em>''",
-       "filereadonlyerror": "ไม่สามารถแก้ไขไฟล์ \"$1\" เพราะที่เก็บไฟล์ \"$2\" อยู่ในภาวะอ่านอย่างเดียว\nผู้ดูแลระบบที่ล็อกให้คำอธิบายว่า: \"$3\"",
+       "ns-specialprotected": "à¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\9eิà¹\80ศษ",
+       "titleprotected": "ชื่อเรื่องนี้ถูก [[User:$1|$1]] ป้องกันมิให้สร้าง\nเหตุผลที่ให้ไว้คือ ''<em>$2</em>''",
+       "filereadonlyerror": "ไม่สามารถแก้ไขไฟล์ \"$1\" เพราะที่เก็บไฟล์ \"$2\" อยู่ในภาวะอ่านอย่างเดียว\n\nผู้ดูแลระบบที่ล็อกให้คำอธิบายว่า: \"$3\"",
        "invalidtitle-knownnamespace": "ชื่อเรื่องที่มีเนมสเปซ \"$2\" กับข้อความ \"$3\" ไม่ถูกต้อง",
        "invalidtitle-unknownnamespace": "ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ \"$2\" ไม่ถูกต้อง",
        "exception-nologin": "ไม่ได้ล็อกอิน",
-       "exception-nologin-text": "โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
+       "exception-nologin-text": "โปรดล็อกอินเพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
        "exception-nologin-text-manual": "โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
-       "virus-badscanner": "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
+       "virus-badscanner": "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: <em>$1</em>",
        "virus-scanfailed": "การสแกนล้มเหลว (โค้ด $1)",
        "virus-unknownscanner": "ไม่รู้จักโปรแกรมป้องกันไวรัสตัวนี้:",
-       "logouttext": "'''ขณะนี้คุณได้ล็อกเอาต์แล้ว'''\n\nหมายเหตุว่า บางหน้าอาจยังแสดงผลเสมือนว่าคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
+       "logouttext": "<strong>คุณล็อกเอาต์แล้ว</strong>\n\nหมายเหตุว่า บางหน้าอาจยังแสดงผลเสมือนว่าคุณยังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
        "welcomeuser": "ยินดีต้อนรับ $1!",
-       "welcomecreation-msg": "à¸\9aัà¸\8dà¸\8aีà¸\82อà¸\87à¸\84ุà¸\93à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¹\81ลà¹\89ว\nอยà¹\88าลืมà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\83à¸\99 {{SITENAME}}]] à¸\82อà¸\87à¸\84ุà¸\93",
-       "yourname": "ชื่อผู้ใช้",
+       "welcomecreation-msg": "สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\82อà¸\87à¸\84ุà¸\93à¹\81ลà¹\89ว\nà¸\84ุà¸\93สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า]] {{SITENAME}} à¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89หาà¸\81à¸\95à¹\89อà¸\87à¸\81าร",
+       "yourname": "ชื่อผู้ใช้:",
        "userlogin-yourname": "ชื่อผู้ใช้",
        "userlogin-yourname-ph": "กรอกชื่อผู้ใช้",
        "createacct-another-username-ph": "กรอกชื่อผู้ใช้",
-       "yourpassword": "รหัสผ่าน",
+       "yourpassword": "รหัสผ่าน:",
        "userlogin-yourpassword": "รหัสผ่าน",
        "userlogin-yourpassword-ph": "กรอกรหัสผ่าน",
        "createacct-yourpassword-ph": "กรอกรหัสผ่าน",
        "userlogin-signwithsecure": "ใช้การเชื่อมต่อที่ปลอดภัย",
        "yourdomainname": "โดเมนของคุณ:",
        "password-change-forbidden": "คุณไม่สามารถเปลี่ยนรหัสผ่านบนวิกินี้",
-       "externaldberror": "มีà¸\82à¹\89อà¸\9cิà¸\94à¸\9eลาà¸\94à¸\82อà¸\87à¸\90าà¸\99à¸\82à¹\89อมูลà¹\83à¸\99à¸\81ารà¸\9eิสูà¸\88à¸\99à¹\8cà¸\95ัวà¸\88ริà¸\87 à¸«à¸£à¸·à¸­à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aอà¸\99ุà¸\8dาà¸\95à¹\83หà¹\89à¸\9bรัà¸\9aà¸\9aัà¸\8dà¸\8aีภายà¸\99อà¸\81à¸\82อà¸\87à¸\84ุà¸\93",
+       "externaldberror": "มีข้อผิดพลาดของฐานข้อมูลการพิสูจน์ตัวจริง หรือคุณไม่ได้รับอนุญาตให้ปรับบัญชีภายนอกของคุณ",
        "login": "ล็อกอิน",
        "nav-login-createaccount": "ล็อกอิน / สร้างบัญชี",
        "userlogin": "ล็อกอิน / สร้างบัญชี",
        "createacct-benefit-body1": "$1 การแก้ไข",
        "createacct-benefit-body2": "$1 หน้า",
        "createacct-benefit-body3": "$1 ผู้ร่วมเขียน",
-       "badretype": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¹\83สà¹\88ไม่ตรงกัน",
-       "userexists": "à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\81รอà¸\81มีà¸\9cูà¹\89อืà¹\88à¸\99à¹\83à¸\8aà¹\89à¹\84à¸\9bà¹\81ลà¹\89ว กรุณาเลือกชื่ออื่น",
+       "badretype": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รอà¸\81ไม่ตรงกัน",
+       "userexists": "à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\81รอà¸\81มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ลà¹\89ว \nกรุณาเลือกชื่ออื่น",
        "loginerror": "ล็อกอินผิดพลาด",
        "createacct-error": "การสร้างบัญชีผิดพลาด",
-       "createaccounterror": "ไม่สามารถสร้างบัญชีผู้ใช้: $1",
-       "nocookiesnew": "à¸\8aืà¹\88อà¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¹\81ลà¹\89ว à¹\81à¸\95à¹\88ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99à¹\80à¸\82à¹\89าสูà¹\88 {{SITENAME}} à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81วà¹\88าà¹\84มà¹\88à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89 à¸\96à¹\89าà¸\95à¹\89อà¸\87à¸\81ารลà¹\87อà¸\81อิà¸\99à¹\83หà¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89à¹\81ละà¸\97ำà¸\81ารลà¹\87อà¸\81อิà¸\99à¹\82à¸\94ยà¹\83สà¹\88à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\9eรà¹\89อมรหัสà¸\9cà¹\88าà¸\99",
-       "nocookieslogin": "{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89สำหรัà¸\9aà¸\81ารลà¹\87อà¸\81อิà¸\99 à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¸\82อà¸\87à¸\84ุà¸\93à¹\84มà¹\88à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99 กรุณาเปิดใช้งานและลองอีกครั้ง",
-       "nocookiesfornew": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84มà¹\88à¸\96ูà¸\81สรà¹\89าà¸\87 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81à¹\80ราà¹\84มà¹\88สามารà¸\96ยืà¸\99ยัà¸\99à¹\81หลà¹\88à¸\87à¸\97ีà¹\88มา\nà¸\81รุà¸\93าà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89คุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง",
+       "createaccounterror": "ไม่สามารถสร้างบัญชี: $1",
+       "nocookiesnew": "สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ลà¹\89ว à¹\81à¸\95à¹\88ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99 \n{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¹\80à¸\9eืà¹\88อลà¹\87อà¸\81อิà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89\nà¸\84ุà¸\93à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89\nà¹\82à¸\9bรà¸\94à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99 à¹\81ลà¹\89วลà¹\87อà¸\81อิà¸\99à¸\9eรà¹\89อมà¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ละรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82อà¸\87à¸\84ุà¸\93",
+       "nocookieslogin": "{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¹\80à¸\9eืà¹\88อลà¹\87อà¸\81อิà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89\nà¸\84ุà¸\93à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89\nกรุณาเปิดใช้งานและลองอีกครั้ง",
+       "nocookiesfornew": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84มà¹\88à¸\96ูà¸\81สรà¹\89าà¸\87 à¹\80à¸\99ืà¹\88อà¸\87à¸\88าà¸\81à¹\80ราà¹\84มà¹\88สามารà¸\96ยืà¸\99ยัà¸\99à¸\95à¹\89à¸\99à¸\97าà¸\87\nà¸\81รุà¸\93าà¸\97ำà¹\83หà¹\89à¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99คุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง",
        "noname": "คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง",
        "loginsuccesstitle": "ล็อกอินสำเร็จ",
-       "loginsuccess": "'''ขณะนี้คุณล็อกอินเข้าสู่ {{SITENAME}} ด้วยชื่อ \"$1\"'''",
+       "loginsuccess": "<strong>ขณะนี้คุณล็อกอินเข้าสู่ {{SITENAME}} ด้วยชื่อ \"$1\"</strong>",
        "nosuchuser": "ไม่มีผู้ใช้ชื่อ \"$1\"\nชื่อผู้ใช้นั้นไวต่ออักษรใหญ่เล็ก\nกรุณาตรวจการสะกดอีกครั้ง หรือ[[Special:UserLogin/signup|สร้างบัญชีใหม่]]",
-       "nosuchusershort": "ไม่มีผู้ใช้ชื่อ \"$1\" กรุณาตรวจสอบการสะกด",
+       "nosuchusershort": "ไม่มีผู้ใช้ชื่อ \"$1\" \nกรุณาตรวจสอบการสะกด",
        "nouserspecified": "คุณต้องระบุชื่อผู้ใช้",
        "login-userblocked": "ผู้ใช้นี้ถูกบล็อก ไม่อนุญาตให้ล็อกอิน",
-       "wrongpassword": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¹\83สà¹\88à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87 โปรดลองอีกครั้ง",
-       "wrongpasswordempty": "ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ระà¸\9aุรหัสà¸\9cà¹\88าà¸\99 โปรดลองอีกครั้ง",
-       "passwordtooshort": "รหัสà¸\9cà¹\88าà¸\99à¸\95à¹\89อà¸\87มีà¸\84วามยาวอยà¹\88าà¸\87à¸\99à¹\89อย $1 à¸­à¸±à¸\81à¸\82ระ",
+       "wrongpassword": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\81รอà¸\81à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87 \nโปรดลองอีกครั้ง",
+       "wrongpasswordempty": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\81รอà¸\81วà¹\88าà¸\87\nโปรดลองอีกครั้ง",
+       "passwordtooshort": "รหัสผ่านต้องมีอย่างน้อย $1 อักขระ",
        "password-name-match": "รหัสผ่านต้องต่างจากชื่อผู้ใช้",
        "password-login-forbidden": "ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้",
        "mailmypassword": "ตั้งรหัสผ่านใหม่",
        "passwordremindertitle": "รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}",
-       "passwordremindertext": "à¸\9cูà¹\89à¹\83à¸\94à¸\9cูà¹\89หà¸\99ึà¹\88à¸\87 (à¸\8bึà¹\88à¸\87อาà¸\88à¹\80à¸\9bà¹\87à¸\99à¸\84ุà¸\93 à¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eี $1) à¸\82อà¹\83หà¹\89สà¹\88à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82อà¸\87 {{SITENAME}} ($4) à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวสำหรัà¸\9aà¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89 \"$2\" à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99 à¹\81ละà¸\81ำหà¸\99à¸\94à¹\80à¸\9bà¹\87à¸\99 \"$3\" à¸«à¸²à¸\81à¸\81ารà¸\82อรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99à¹\80à¸\88à¸\95à¸\99าà¸\82อà¸\87à¸\84ุà¸\93 à¸\84ุà¸\93à¸\88ำà¸\95à¹\89อà¸\87ลà¹\87อà¸\81อิà¸\99à¹\81ละà¹\80ลือà¸\81รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 à¸\93 à¸\82à¸\93ะà¸\99ีà¹\89 à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\82อà¸\87à¸\84ุà¸\93à¸\88ะหมà¸\94อายุà¹\83à¸\99 $5 à¸§à¸±à¸\99\n\nหาà¸\81à¹\80à¸\9bà¹\87à¸\99à¸\9aุà¸\84à¸\84ลอืà¹\88à¸\99à¸\97ีà¹\88à¸\82อรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 à¸«à¸£à¸·à¸­à¸«à¸²à¸\81à¸\84ุà¸\93à¸\88ำรหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\81ลà¹\89ว à¹\81ละà¹\84มà¹\88à¸\95à¹\89อà¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88อีà¸\81à¸\95à¹\88อà¹\84à¸\9b คุณอาจละเลยข้อความนี้และใช้รหัสผ่านเดิมของคุณต่อไป",
-       "noemail": "à¹\84มà¹\88มีà¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\9aัà¸\99à¸\97ึà¸\81à¹\84วà¹\89สำหรับผู้ใช้ \"$1\"",
+       "passwordremindertext": "à¸\9cูà¹\89à¹\83à¸\94à¸\9cูà¹\89หà¸\99ึà¹\88à¸\87 (à¸\8bึà¹\88à¸\87อาà¸\88à¹\80à¸\9bà¹\87à¸\99à¸\84ุà¸\93 à¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eี $1) à¸\82อà¹\83หà¹\89สà¹\88à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82อà¸\87 {{SITENAME}} ($4) à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวสำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89 \"$2\" à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99 à¹\81ละà¸\81ำหà¸\99à¸\94à¹\80à¸\9bà¹\87à¸\99 \"$3\" à¸«à¸²à¸\81à¹\80à¸\9bà¹\87à¸\99à¹\80à¸\88à¸\95à¸\99าà¸\82อà¸\87à¸\84ุà¸\93 à¸\84ุà¸\93à¸\88ำà¸\95à¹\89อà¸\87ลà¹\87อà¸\81อิà¸\99à¹\81ละà¹\80ลือà¸\81รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¹\83à¸\99à¸\82à¸\93ะà¸\99ีà¹\89 \nรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\82อà¸\87à¸\84ุà¸\93à¸\88ะหมà¸\94อายุà¹\83à¸\99 $5 à¸§à¸±à¸\99\n\nหาà¸\81à¹\80à¸\9bà¹\87à¸\99à¸\9aุà¸\84à¸\84ลอืà¹\88à¸\99à¸\97ีà¹\88à¸\82อรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 à¸«à¸£à¸·à¸­à¸«à¸²à¸\81à¸\84ุà¸\93à¸\88ำรหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\81ลà¹\89ว à¹\81ละà¹\84มà¹\88à¸\95à¹\89อà¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88อีà¸\81 คุณอาจละเลยข้อความนี้และใช้รหัสผ่านเดิมของคุณต่อไป",
+       "noemail": "à¹\84มà¹\88มีà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81à¸\97ีà¹\88อยูà¹\88อีà¹\80มลสำหรับผู้ใช้ \"$1\"",
        "noemailcreate": "คุณจำต้องใส่ที่อยู่อีเมลให้ถูกต้อง",
        "passwordsent": "รหัสผ่านใหม่ถูกส่งไปยังที่อยู่อีเมลที่ลงทะเบียนไว้ของ \"$1\"\nกรุณาล็อกอินอีกครั้งหลังได้รับอีเมล",
-       "blocked-mailpassword": "à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¸\97ำà¹\83หà¹\89à¹\84มà¹\88สามารà¸\96à¸\97ำà¹\80รืà¹\88อà¸\87à¸\82อรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¹\84à¸\94à¹\89 เพื่อป้องกันการใช้ในทางที่ผิด",
-       "eauthentsent": "อีà¹\80มลยืà¸\99ยัà¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\97ีà¹\88à¹\80สà¸\99อ à¸\81à¹\88อà¸\99à¸\97ีà¹\88อีà¹\80มลà¸\88ะà¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¸\97ีà¹\88à¸\8aืà¹\88อà¸\9aัà¸\8dà¸\8aีà¸\99ัà¹\89à¸\99 à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\95ามà¸\84ำà¹\81à¸\99ะà¸\99ำในอีเมลเพื่อยืนยันว่าบัญชีนั้นเป็นของคุณจริง ๆ",
-       "throttled-mailpassword": "อีà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¹\81ลà¹\89วà¹\83à¸\99 $1 à¸\8aัà¹\88วà¹\82มà¸\87à¸\97ีà¹\88à¸\9cà¹\88าà¸\99มา \nอีà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\88ะสà¹\88à¸\87à¹\84à¸\9bหà¸\99ึà¹\88à¸\87à¸\84รัà¹\89à¸\87à¸\95à¹\88อ $1 à¸\8aัà¹\88วà¹\82มà¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 à¹\80à¸\9eืà¹\88อà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¸\81ารà¸\81ระà¸\97ำà¸\97ีà¹\88à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87",
+       "blocked-mailpassword": "à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\82อà¸\87à¸\84ุà¸\93à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¸\97ำà¹\83หà¹\89à¹\84มà¹\88สามารà¸\96à¹\83à¸\8aà¹\89à¸\9fัà¸\87à¸\81à¹\8cà¸\8aัà¸\99à¸\81ูà¹\89รหัสà¸\9cà¹\88าà¸\99 เพื่อป้องกันการใช้ในทางที่ผิด",
+       "eauthentsent": "อีà¹\80มลยืà¸\99ยัà¸\99à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bยัà¸\87à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\97ีà¹\88ระà¸\9aุà¹\84วà¹\89à¹\81ลà¹\89ว \nà¸\81à¹\88อà¸\99à¸\97ีà¹\88อีà¹\80มลอืà¹\88à¸\99à¸\88ะà¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bยัà¸\87à¸\9aัà¸\8dà¸\8aีà¸\99ัà¹\89à¸\99 à¸\84ุà¸\93à¸\95à¹\89อà¸\87à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\95ามà¸\84ำสัà¹\88à¸\87ในอีเมลเพื่อยืนยันว่าบัญชีนั้นเป็นของคุณจริง ๆ",
+       "throttled-mailpassword": "อีà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¹\81ลà¹\89วà¹\83à¸\99 $1 à¸\8aัà¹\88วà¹\82มà¸\87à¸\97ีà¹\88à¸\9cà¹\88าà¸\99มา \nอีà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\88ะสà¹\88à¸\87à¹\84à¸\9bหà¸\99ึà¹\88à¸\87à¸\84รัà¹\89à¸\87à¸\95à¹\88อ $1 à¸\8aัà¹\88วà¹\82มà¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 à¹\80à¸\9eืà¹\88อà¸\9bà¹\89อà¸\87à¸\81ัà¸\99à¸\81ารà¸\81ระà¸\97ำà¸\9cิà¸\94",
        "mailerror": "ข้อผิดพลาดในการส่งเมล: $1",
-       "acct_creation_throttle_hit": "ผู้เข้าชมวิกินี้ที่ใช้เลขที่อยู่ไอพีของคุณ ได้สร้างบัญชีแล้ว $1 บัญชีในวันที่ผ่านมา ซึ่งเป็นจำนวนสูงสุดที่อนุญาตในช่วงเวลาดังกล่าว\nจึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้",
-       "emailauthenticated": "à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารยืà¸\99ยัà¸\99เมื่อวันที่ $2 เวลา $3",
+       "acct_creation_throttle_hit": "ผู้เข้าชมวิกินี้ที่ใช้เลขที่อยู่ไอพีของคุณ ได้สร้าง $1 บัญชีแล้วในวันที่ผ่านมา ซึ่งเป็นจำนวนสูงสุดที่อนุญาตในช่วงเวลาดังกล่าว\nจึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้",
+       "emailauthenticated": "ยืà¸\99ยัà¸\99à¸\97ีà¹\88อยูà¹\88อีà¹\80มลà¸\82อà¸\87à¸\84ุà¸\93เมื่อวันที่ $2 เวลา $3",
        "emailnotauthenticated": "ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน \nจะไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้",
        "noemailprefs": "ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้",
        "emailconfirmlink": "ยืนยันที่อยู่อีเมลของคุณ",
        "cannotchangeemail": "ไม่สามารถเปลี่ยนที่อยู่อีเมลบนวิกินี้",
        "emaildisabled": "เว็บไซต์นี้ไม่สามารถส่งอีเมล",
        "accountcreated": "สร้างบัญชีแล้ว",
-       "accountcreatedtext": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¹\84à¸\94à¹\89สร้างขึ้นแล้ว",
-       "createaccount-title": "สร้างบัญชีสำหรับ {{SITENAME}}",
-       "createaccount-text": "มีบางคนสร้างบัญชีโดยใช้ที่อยู่อีเมลของคุณบน {{SITENAME}} ($4) โดยใช้ชื่อ \"$2\" และรหัสผ่าน \"$3\" คุณควรล็อกอินเพื่อเปลี่ยนรหัสผ่านทันที\n\nคุณอาจเพิกเฉยข้อความนี้ หากการสร้างบัญชีนี้เกิดจากความผิดพลาด",
+       "accountcreatedtext": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¸\96ูà¸\81สร้างขึ้นแล้ว",
+       "createaccount-title": "à¸\81ารสรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีสำหรัà¸\9a {{SITENAME}}",
+       "createaccount-text": "มีบางคนสร้างบัญชีโดยใช้ที่อยู่อีเมลของคุณบน {{SITENAME}} ($4) โดยใช้ชื่อ \"$2\" และรหัสผ่าน \"$3\" \nคุณควรล็อกอินและเปลี่ยนรหัสผ่านทันที\n\nคุณอาจเพิกเฉยข้อความนี้ หากการสร้างบัญชีนี้เป็นความผิดพลาด",
        "login-throttled": "ที่ผ่านมาคุณพยายามล็อกอินมากครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง",
-       "login-abort-generic": "à¸\81ารà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aà¸\82อà¸\87à¸\84ุà¸\93à¹\84มà¹\88à¸\9bระสà¸\9aà¸\84วามสำเร็จ - ล้มเลิกแล้ว",
+       "login-abort-generic": "à¸\81ารลà¹\87อà¸\81อิà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¹\84มà¹\88สำเร็จ - ล้มเลิกแล้ว",
        "loginlanguagelabel": "ภาษา: $1",
        "suspicious-userlogout": "คำขอล็อกเอาต์ของคุณถูกปฏิเสธเพราะดูเหมือนส่งมาจากเบราว์เซอร์หรือพร็อกซีแคชที่เสีย",
        "createacct-another-realname-tip": "ไม่จำเป็นต้องใส่ชื่อจริง\nหากคุณเลือกใส่ชื่อจริง จะใช้เพื่อแสดงที่มาสำหรับงานของตน",
        "changepassword": "เปลี่ยนรหัสผ่าน",
        "resetpass_announce": "คุณต้องตั้งรหัสผ่านใหม่จึงจะเสร็จสิ้นการล็อกอิน",
        "resetpass_text": "<!-- เพิ่มข้อความที่นี่ -->",
-       "resetpass_header": "เปลี่ยนรหัสผ่าน",
+       "resetpass_header": "เปลี่ยนรหัสผ่านบัญชี",
        "oldpassword": "รหัสผ่านเดิม:",
        "newpassword": "รหัสผ่านใหม่:",
        "retypenew": "พิมพ์รหัสผ่านใหม่อีกครั้ง:",
        "resetpass_submit": "ตั้งรหัสผ่านและล็อกอิน",
-       "changepassword-success": "à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¹\80รียà¸\9aรà¹\89อย",
-       "changepassword-throttled": "à¸\84ุà¸\93à¹\84à¸\94à¹\89à¸\9eยายามลà¹\87อà¸\81อิà¸\99มาà¸\81à¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9b\nà¸\81รุà¸\93ารอ $1 à¸\81à¹\88อà¸\99ลอà¸\87อีà¸\81à¸\84รัà¹\89à¸\87",
+       "changepassword-success": "à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93สำà¹\80รà¹\87à¸\88",
+       "changepassword-throttled": "คุณพยายามล็อกอินมากครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง",
        "resetpass_forbidden": "ไม่สามารถเปลี่ยนรหัสผ่านได้",
        "resetpass-no-info": "คุณต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง",
        "resetpass-submit-loggedin": "เปลี่ยนรหัสผ่าน",
        "resetpass-submit-cancel": "ยกเลิก",
-       "resetpass-wrong-oldpass": "รหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวหรือà¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89อà¸\87\nà¸\84ุà¸\93อาà¸\88à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93à¹\84à¸\9bà¹\81ลà¹\89ว à¸«à¸£à¸·à¸­à¸\82อรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¹\83หมà¹\88à¹\81ลà¹\89ว",
+       "resetpass-wrong-oldpass": "รหัสผ่านชั่วคราวหรือปัจจุบันไม่ถูกต้อง\nคุณอาจเปลี่ยนรหัสผ่านของคุณแล้ว หรือขอรหัสผ่านชั่วคราวใหม่แล้ว",
        "resetpass-recycled": "โปรดตั้งรหัสผ่านใหม่ให้ต่างจากรหัสผ่านปัจจุบัน",
        "resetpass-temp-emailed": "คุณล็อกอินด้วยรหัสผ่านชั่วคราวที่ส่งทางอีเมล\nคุณต้องตั้งรหัสผ่านใหม่ที่นี่จึงจะเสร็จสิ้นการล็อกอิน:",
        "resetpass-temp-password": "รหัสผ่านชั่วคราว:",
        "passwordreset-text-one": "กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่",
        "passwordreset-text-many": "{{PLURAL:$1|กรอกเขตข้อมูลหนึ่งเพื่อรับรหัสผ่านชั่วคราวทางอีเมล}}",
        "passwordreset-legend": "เปลี่ยนรหัสผ่าน",
-       "passwordreset-disabled": "à¸\81ารà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89",
-       "passwordreset-emaildisabled": "à¸\84ุà¸\93ลัà¸\81ษà¸\93ะอีà¹\80มลà¸\96ูà¸\81à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89",
+       "passwordreset-disabled": "วิà¸\81ิà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88",
+       "passwordreset-emaildisabled": "วิà¸\81ิà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\93ลัà¸\81ษà¸\93ะอีà¹\80มล",
        "passwordreset-username": "ชื่อผู้ใช้:",
        "passwordreset-domain": "โดเมน:",
        "passwordreset-capture": "ดูอีเมลที่ได้หรือไม่",
        "bold_tip": "ทำตัวหนา",
        "italic_sample": "ข้อความตัวเอน",
        "italic_tip": "ทำตัวเอน",
-       "link_sample": "ลิà¸\87à¸\81à¹\8cà¹\80à¸\8aืà¹\88อมà¹\82ยง",
+       "link_sample": "à¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87หัวà¹\80รืà¹\88อง",
        "link_tip": "ลิงก์ภายใน",
-       "extlink_sample": "http://www.example.com à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¸\82อà¸\87ลิà¸\87à¸\81à¹\8c",
+       "extlink_sample": "http://www.example.com à¸\8aืà¹\88อà¹\80รืà¹\88อà¸\87à¹\80à¸\8aืà¹\88อมà¹\82ยà¸\87",
        "extlink_tip": "ลิงก์ภายนอก (อย่าลืมใส่ http:// นำหน้าเสมอ)",
        "headline_sample": "ข้อความพาดหัว",
        "headline_tip": "พาดหัวระดับ 2",
        "missingcommentheader": "'''ประกาศเตือน:''' คุณยังไม่ได้ใส่หัวข้อ/จ่าหัวสำหรับความเห็นนี้ ถ้าคุณกด \"{{int:savearticle}}\" อีกครั้ง การแก้ไขของคุณจะถูกบันทึกโดยไม่มีหัวข้อ",
        "summary-preview": "ตัวอย่างคำอธิบายการแก้ไข:",
        "subject-preview": "ตัวอย่างหัวข้อ/พาดหัว:",
-       "blockedtitle": "ผู้ใช้ถูกบล็อกอยู่",
+       "blockedtitle": "ผู้ใช้ถูกบล็อก",
        "blockedtext": "<strong>ชื่อผู้ใช้หรือเลขที่อยู่ไอพีของคุณถูกบล็อก</strong>\n\nการบล็อกนี้ดำเนินการโดย $1\nซึ่งให้เหตุผลว่า ''$2''\n\n* เริ่มการบล็อก: $8\n* หมดเขตการบล็อก: $6\n* ผู้ถูกบล็อก: $7\n\nคุณสามารถติดต่อ $1 หรือ[[{{MediaWiki:Grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่ออภิปรายการบล็อกนี้ได้\nคุณไม่สามารถใช้คุณลักษณะ \"ส่งอีเมลหาผู้ใช้รายนี้ได้\" จนกว่าจะระบุที่อยู่อีเมลให้ถูกต้องใน[[Special:Preferences|การตั้งค่าบัญชี]]ของคุณ และคุณมิได้ถูกห้ามใช้ความสามารถนี้\nเลขที่อยู่ไอพีปัจจุบันของคุณคือ $3 และหมายเลขการบล็อกคือ #$5 \nโปรดแสดงรายละเอียดข้างต้นทั้งหมดในการสอบถามใด ๆ",
        "autoblockedtext": "เลขที่อยู่ไอพีของคุณถูกบล็อกอัตโนมัติ เพราะมีผู้ใช้อื่นใช้มาก่อน ซึ่งถูกบล็อกโดย $1\nโดยให้เหตุผลว่า\n\n:<em>$2</em>\n\n* เริ่มการบล็อก: $8\n* สิ้นสุดการบล็อก: $6\n* ผู้ถูกบล็อก: $7\n\nคุณสามารถติดต่อ $1 หรือ[[{{MediaWiki:Grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่อหารือการบล็อกนี้ \nคุณไม่สามารถใช้คุณลักษณะ \"ส่งอีเมลหาผู้ใช้รายนี้ได้\" จนกว่าจะระบุที่อยู่อีเมลที่ถูกต้องใน[[Special:Preferences|การตั้งค่าบัญชี]]ของคุณ และคุณมิได้ถูกห้ามใช้\nเลขที่อยู่ไอพีปัจจุบันของคุณคือ $3 และหมายเลขการบล็อกคือ #$5 \nโปรดรวมรายละเอียดข้างต้นทั้งหมดในการสอบถามใด ๆ",
-       "blockednoreason": "ไม่ได้ให้เหตุผลไว้",
+       "blockednoreason": "ไม่ได้ให้เหตุผล",
        "whitelistedittext": "คุณต้อง$1เพื่อแก้ไขหน้า",
        "confirmedittext": "คุณต้องยืนยันที่อยู่อีเมลของคุณก่อนแก้ไขหน้า โปรดกำหนดที่อยู่อีเมลของคุณและทำให้ถูกต้องผ่าน[[Special:Preferences|การตั้งค่าผู้ใช้]]",
        "nosuchsectiontitle": "ไม่พบส่วน",
        "accmailtext": "รหัสผ่านแบบสุ่มของ [[User talk:$1|$1]] ถูกส่งไปยัง $2 แล้ว สามารถเปลี่ยนรหัสผ่านในหน้า''[[Special:ChangePassword|เปลี่ยนรหัสผ่าน]]'' หลังล็อกอิน",
        "newarticle": "(ใหม่)",
        "newarticletext": "คุณตามลิงก์ไปยังหน้าที่ยังไม่มีในขณะนี้\nในการสร้างหน้า เริ่มพิมพ์ในกล่องด้านล่าง (ดูข้อมูลเพิ่มเติมใน[$1 หน้าคำอธิบาย])\nถ้าคุณเข้ามาหน้านี้โดยผิดพลาด ให้กดปุ่ม'''ถอยหลัง''' (back) ของเบราว์เซอร์",
-       "anontalkpagetext": "----\n<em>หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99ามà¸\8bึà¹\88à¸\87ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีหรือà¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99</em>\nà¸\94ัà¸\87à¸\99ัà¹\89à¸\99à¹\80ราà¸\88ึà¸\87ระà¸\9aุà¸\95ัวà¸\95à¸\99à¹\82à¸\94ยà¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¹\81à¸\97à¸\99\nà¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\99ีà¹\89อาà¸\88มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89รà¹\88วมà¸\81ัà¸\99หลายà¸\84à¸\99\nà¸\96à¹\89าà¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99าม à¹\81ละรูà¹\89สึà¸\81วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¸\97ีà¹\88à¹\84มà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89อà¸\87 กรุณา[[Special:UserLogin/signup|สร้างบัญชี]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่นในอนาคต",
-       "noarticletext": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
+       "anontalkpagetext": "----\n<em>หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99ามà¸\8bึà¹\88à¸\87ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีหรือà¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83à¸\8aà¹\89</em>\nà¸\94ัà¸\87à¸\99ัà¹\89à¸\99à¹\80ราà¸\88ึà¸\87ระà¸\9aุà¸\95ัวà¸\95à¸\99à¹\82à¸\94ยà¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¹\81à¸\97à¸\99\nà¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\99ีà¹\89อาà¸\88มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89รà¹\88วมà¸\81ัà¸\99หลายà¸\84à¸\99\nà¸\96à¹\89าà¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99าม à¹\81ละรูà¹\89สึà¸\81วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¸\97ีà¹\88à¹\84มà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89อà¸\87สà¹\88à¸\87หาà¸\84ุà¸\93 กรุณา[[Special:UserLogin/signup|สร้างบัญชี]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่นในอนาคต",
+       "noarticletext": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
        "noarticletext-nopermission": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span> แต่คุณไม่มีสิทธิสร้างหน้านี้",
-       "missing-revision": "ไม่มีรุ่น #$1 ของหน้าชื่อ \"{{FULLPAGENAME}}\" \n\nโดยปกติเกิดจากการเข้าลิงก์ประวัติเก่าของหน้าที่ถูกลบไปแล้ว\nดูรายละเอียดได้ที่[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ปูมการลบ]",
+       "missing-revision": "ไม่มีรุ่นปรับปรุง #$1 ของหน้าชื่อ \"{{FULLPAGENAME}}\" \n\nปกติเกิดจากการตามการโยงประวัติเก่าไปยังหน้าที่ถูกลบแล้ว\nดูรายละเอียดได้ที่[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ปูมการลบ]",
        "userpage-userdoesnotexist": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน \nกรุณาตรวจสอบหากคุณต้องการสร้าง/แก้ไขหน้านี้",
        "userpage-userdoesnotexist-view": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน",
-       "blocked-notice-logextract": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\99ีà¹\89à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81\nหà¸\99à¹\88วยบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
+       "blocked-notice-logextract": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89à¸\96ูà¸\81à¸\9aลà¹\87อà¸\81\nหà¸\99à¹\88วยà¸\9bูมà¸\81ารบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
        "clearyourcache": "'''หมายเหตุ:''' หลังจากบันทึก คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง\n* '''ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะคลิก ''Reload'' หรือกด ''Ctrl-F5'' หรือ ''Ctrl-R'' (''⌘-R'' บนแมค)\n* '''กูเกิล โครม:''' กดปุ่ม ''Ctrl-Shift-R'' (''⌘-Shift-R'' บนแมค)\n* '''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กดปุ่ม ''Ctrl'' ค้างไว้ขณะคลิก ''Refresh'' หรือกด ''Ctrl-F5''\n* '''โอเปร่า:''' ล้างแคชใน ''Tools → Preferences''",
        "usercssyoucanpreview": "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบ CSS ใหม่ของคุณก่อนบันทึก",
        "userjsyoucanpreview": "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบจาวาสคริปต์ใหม่ของคุณก่อนบันทึก",
        "preferences": "ตั้งค่าส่วนตัว",
        "mypreferences": "การตั้งค่า",
        "prefs-edits": "จำนวนการแก้ไข:",
-       "prefsnologintext2": "โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ",
+       "prefsnologintext2": "โปรดล็อกอินเพื่อเปลี่ยนการตั้งค่าของคุณ",
        "prefs-skin": "หน้าตา",
        "skin-preview": "แสดงตัวอย่าง",
        "datedefault": "ไม่มีการตั้งค่า",
        "randomincategory": "สุ่มหน้าในหมวดหมู่",
        "randomincategory-invalidcategory": "\"$1\" มิใช่ชื่อหมวดหมู่ที่ถูกต้อง",
        "randomincategory-nopages": "ไม่มีหน้าใน[[:Category:$1]]",
-       "randomincategory-selectcategory": "ดึงหน้าแบบสุ่มจากหมวดหมู่: $1 $2",
-       "randomincategory-selectcategory-submit": "ไป",
        "randomredirect": "สุ่มหน้าเปลี่ยนทาง",
        "randomredirect-nopages": "ไม่มีหน้าเปลี่ยนทางในเนมสเปซ \"$1\"",
        "statistics": "สถิติ",
        "wantedpages-badtitle": "ชื่อเรื่องไม่สมเหตุสมผลในเซตผลลัพธ์: $1",
        "wantedfiles": "ไฟล์ที่ต้องการ",
        "wantedfiletext-cat": "ไฟล์ต่อไปนี้มีการเรียกใช้แต่ไม่มีอยู่ ไฟล์จากคลังเก็บภาษาอื่นอาจแสดงรายการแม้จะมีอยู่ ผลบวกลวงใด ๆ จะถูก<del>ขีดฆ่า</del> ยิ่งไปกว่านั้น หน้าที่ฝังตัวไฟล์ที่ไม่มีอยู่จะแสดงรายการใน [[:$1]]",
+       "wantedfiletext-cat-noforeign": "ไฟล์ต่อไปนี้ถูกใช้แต่ไม่มีไฟล์ นอกเหนือจากนี้ หน้าที่ฝังตัวไฟล์ที่ไม่มีอยู่แสดงรายการใน [[:$1]]",
        "wantedfiletext-nocat": "ไฟล์ต่อไปนี้มีการเรียกใช้แต่ไม่มีอยู่ ไฟล์จากคลังเก็บภาษาอื่นอาจแสดงรายการแม้จะมีอยู่ ผลบวกลวงใด ๆ จะถูก<del>ขีดฆ่า</del>",
+       "wantedfiletext-nocat-noforeign": "ไฟล์ต่อไปนี้ถูกใช้แต่ไม่มีไฟล์",
        "wantedtemplates": "แม่แบบที่ต้องการ",
        "mostlinked": "หน้าที่มีการเชื่อมโยงหามากที่สุด",
        "mostlinkedcategories": "หมวดหมู่ที่มีการเชื่อมโยงหามากที่สุด",
        "mywatchlist": "รายการเฝ้าดู",
        "watchlistfor2": "สำหรับ $1 $2",
        "nowatchlist": "ไม่มีรายการในรายการเฝ้าดูของคุณ",
-       "watchlistanontext": "กรุณา$1เพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
+       "watchlistanontext": "กรุณาล็อกอินเพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
        "watchnologin": "ยังไม่ได้ล็อกอิน",
        "addwatch": "เพิ่มเข้ารายการเฝ้าดู",
        "addedwatchtext": "หน้า \"[[:$1]]\" ได้เพิ่มลงใน[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว การเปลี่ยนแปลงในหน้านี้หรือหน้าพูดคุยที่เกี่ยวข้องจะแสดงในรายการดังกล่าว",
        "watchlist-details": "มี $1 หน้าในรายการเฝ้าดูของคุณ ไม่นับแยกหน้าอภิปราย",
        "wlheader-enotif": "การแจ้งเตือนผ่านอีเมลถูกเปิดใช้งาน",
        "wlheader-showupdated": "หน้าที่มีการเปลี่ยนแปลงตั้งแต่คุณเข้าชมล่าสุดแสดงใน'''ตัวหนา'''",
-       "wlnote": "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|ล่าสุด|ล่าสุด '''$1''' รายการ}} ใน{{PLURAL:$2|ชั่วโมง|ช่วง '''$2''' ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
+       "wlnote": "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|ล่าสุด|ล่าสุด <strong>$1</strong> รายการ}} ใน{{PLURAL:$2|ชั่วโมง| <strong>$2</strong> ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
        "wlshowlast": "แสดง $1 ชั่วโมง $2 วันล่าสุด $3",
        "watchlist-options": "ตัวเลือกรายการเฝ้าดู",
        "watching": "เฝ้าดู...",
        "import": "หน้านำเข้า",
        "importinterwiki": "นำเข้าข้ามวิกิ",
        "import-interwiki-text": "เลือกวิกิและชื่อหัวข้อที่ต้องการนำเข้า วันที่และชื่อผู้เขียนทั้งหมดจะถูกเก็บไว้ โดยการนำเข้าทุกส่วนจะถูกเก็บไว้ใน [[Special:Log/import|ปูมการนำเข้า]]",
-       "import-interwiki-source": "หน้า/วิกิต้นทาง:",
        "import-interwiki-history": "คัดลอกประวัติทั้งหมดในหน้านี้",
        "import-interwiki-templates": "รวมแม่แบบทั้งหมด",
        "import-interwiki-submit": "นำเข้า",
index c6b21c3..07d5212 100644 (file)
        "talkpagelinktext": "Pikir alyşma",
        "specialpage": "Ýörite Sahypa",
        "personaltools": "Şahsy gurallar",
-       "postcomment": "Täze bölüm",
        "articlepage": "Makalany görkez",
        "talk": "Çekişme",
        "views": "Görnüşler",
        "externaldberror": "Ýa tassyklama maglumat bazasynyň säwligi bar ýa-da öz ulanyjy hasabyňyzy täzelemegiňize rugsat berilmeýär.",
        "login": "Hasaba gir",
        "nav-login-createaccount": "Hasaba gir / Hasap döret",
-       "loginprompt": "{{SITENAME}} saýtynda sessiýa açmak üçin kukileri işletmegiňiz zerurdyr.",
        "userlogin": "Hasaba gir / täze hasap aç",
        "userloginnocreate": "Sessiýa aç",
        "logout": "Hasapdan çyk",
        "searchprofile-advanced-tooltip": "Laýyk at giňişliklerinde gözle",
        "search-result-size": "$1 ({{PLURAL:$2|1 söz|$2 söz}})",
        "search-result-category-size": "{{PLURAL:$1|1 agza|$1 agza}} ({{PLURAL:$2|1 kiçi kategoriýa|$2 kiçi kategoriýa}}, {{PLURAL:$3|1 faýl|$3 faýl}})",
-       "search-result-score": "Kybapdaşlyk: $1%",
        "search-redirect": "(gönükdirme $1)",
        "search-section": "(bölüm $1)",
        "search-suggest": "Şeýle diýjek bolduňyzmy: $1",
        "uploadwarning": "Ýükleme duýduryşy",
        "uploadwarning-text": "Aşakdaky faýl düşündirişini üýtgediň we gaýtadan synanyşyň.",
        "savefile": "Faýly ýazdyr",
-       "uploadedimage": "Ýüklenen: \"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" faýlynyň täze wersiýasy ýüklendi",
        "uploaddisabled": "Ýüklemeklik ýapyk",
        "copyuploaddisabled": "URL arkaly ýüklemek ýapyk.",
        "uploaddisabledtext": "Faýl ýüklemeklik ýapyk.",
        "watchlist-details": "Çekişme sahypalaryny hasap etmäniňde, gözegçilik sanawyňyzda {{PLURAL:$1|$1 sahypa|$1 sahypa}} bar.",
        "wlheader-enotif": "E-poçta bilen habar beriş açyk.",
        "wlheader-showupdated": "Soňky gezek baryp görenizden soňra üýtgedilen sahypalar '''goýy şrift''' bilen görkezilýär.",
+       "wlnote": "Aşakda soňky {{PLURAL:$2|bir sagatda|'''$2''' sagatda}} edilen {{PLURAL:$1|soňky üýtgeşme|soňky '''$1''' üýtgeşme}} görkezilýär.",
        "wlshowlast": "Soňky $1 sagady $2 güni görkez $3",
        "watchlist-options": "Gözegçilik sanawynyň opsiýalary",
        "watching": "Gözegçilige alynýar...",
index c589b01..cbb0891 100644 (file)
        "talkpagelinktext": "Usapan",
        "specialpage": "Natatanging pahina",
        "personaltools": "Mga kagamitang pansarili",
-       "postcomment": "Bagong seksiyon",
        "articlepage": "Tingnan ang pahina ng nilalaman",
        "talk": "Usapan",
        "views": "Mga anyo",
        "externaldberror": "Maaaring may kamalian sa pagpapatotoo ng database o kaya hindi ka pinahintulutang isapanahon ng iyong panlabas na account.",
        "login": "Lumagda",
        "nav-login-createaccount": "Lumagda / lumikha ng account",
-       "loginprompt": "Dapat na pinapahintulutan mo ang mga kuki (''cookie'') upang makalagda sa {{SITENAME}}.",
        "userlogin": "Lumagda / lumikha ng account",
        "userloginnocreate": "Lumagda",
        "logout": "Umalis sa pagkaka-login",
        "searchprofile-advanced-tooltip": "Hanapin sa pinasadyang mga espasyo ng pangalan",
        "search-result-size": "$1 ({{PLURAL:$2|1 salita|$2 salita}})",
        "search-result-category-size": "{{PLURAL:$1|isang kasapi|$1 kasapi}} ({{PLURAL:$2|isang subkategorya|$2 subkategorya}}, {{PLURAL:$3|isang talaksan|$3 talaksan}})",
-       "search-result-score": "Kaugnayan: $1%",
        "search-redirect": "(ipanuto/ituro ang $1)",
        "search-section": "(seksyong $1)",
        "search-suggest": "Ito ba ang ibig mong sabihin: $1",
        "uploadwarning": "Babala sa pagkakarga",
        "uploadwarning-text": "Pakibago ang nasa ibabang paglalarawan ng talaksan at subukan muli.",
        "savefile": "Sagipin ang talaksan",
-       "uploadedimage": "ikinarga ang \"[[$1]]\"",
-       "overwroteimage": "nagkarga ng isang bagong bersyon ng \"[[$1]]\"",
        "uploaddisabled": "Hindi pinagana ang mga pagkarga",
        "copyuploaddisabled": "Ikargang paitaas ayon sa hindi pinaganang URL.",
        "uploaddisabledtext": "Hindi pinagana ang mga pagkakarga ng talaksan.",
        "watchlist-details": "{{PLURAL:$1|$1 pahinang|$1 mga pahinang}} nasa iyong talaan ng mga binabantayan, hindi binibilang ang mga pahina ng usapan.",
        "wlheader-enotif": "Umiiral ang pagpapahayag sa pamamagitan ng e-liham.",
        "wlheader-showupdated": "Ipinapakitang may '''makakapal na mga panitik''' ang nabagong/binagong mga pahina mula pa noong huli mong pagdalaw sa kanila",
-       "wlnote2": "Nasa ibaba ang mga pagbabago sa nakaraang <strong>$1</strong> oras, noon pang $2, $3.",
+       "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",
        "watching": "Isinasama sa mga binabantayan...",
index 2f9d67a..79b7b31 100644 (file)
        "talkpagelinktext": "Mızokirə",
        "specialpage": "Хысусијә сәһифә",
        "personaltools": "Шәхси диләгон",
-       "postcomment": "Нујә ғысм",
        "articlepage": "Мәғолә дијә кардеј",
        "talk": "Mızokirə",
        "views": "Тәмшо кардеј",
        "remembermypassword": "Мыни ым компутерәдә јодәдә огәт (максимум $1 {{PLURAL:$1|руж|руж}})",
        "login": "Ыштәни едаштеј",
        "nav-login-createaccount": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
-       "loginprompt": "{{SITENAME}}-әдә ыштәни едәште горнә, шымә бәбе бә «cookies» иҹозә быдән.",
        "userlogin": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
        "userloginnocreate": "Ыштәни едаштеј",
        "logout": "Системәдә кој орохнијеј",
        "upload": "Фајли бо жәј",
        "uploadlogpage": "Бо кардә быә чијон журнал",
        "filedesc": "Кыртә тәсвир",
-       "uploadedimage": "бо жәше \"[[$1]]\"",
        "license": "Лисензијә:",
        "license-header": "Лисензијә",
        "imgfile": "фајл",
index 58e73ab..1aed46c 100644 (file)
        "talkpagelinktext": "Alea",
        "specialpage": "Peesi makehe",
        "personaltools": "Puha haʻate meʻangāue",
-       "postcomment": "Fokotuʻu ha fakamatala",
        "articlepage": "Vakai ki he peesi kakano",
        "talk": "Alea",
        "views": "Ngaahi vakai",
        "yourdomainname": "ho ngāueʻanga",
        "login": "Kau ki ai",
        "nav-login-createaccount": "Kau ki ai",
-       "loginprompt": "ʻOku pau te ke fakamafeia ʻa e ngaahi foʻi keke kapau te ke fie kau-ki-ai ki he {{SITENAME}}.",
        "userlogin": "Kau ki ai",
        "logout": "ʻAlu mamaʻo",
        "userlogout": "ʻAlu mamaʻo",
        "fileexists-shared-forbidden": "ʻOku toka ʻi ai ha peesi mo e hingoa ē ʻi he kalasi vahevahe; fakamolemole ʻe foki pea hiki hake ʻa e failé ni mo e ha hingoa foʻou. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Tokanga hiki hake",
        "savefile": "Haofaki faitaá ni",
-       "uploadedimage": "\"[[$1]]\" ʻosi hiki hake",
        "uploaddisabled": "ʻOku fakataʻeʻaongaʻi ʻa e ngaahi hiki hake",
        "uploaddisabledtext": "ʻOku fakataʻeʻaongaʻi ha ngaahi hiki hake ʻi heni.",
        "uploadvirus": "ʻOku ʻi ai ha vailasi ʻi he failé ni! ʻŪ kiʻi meʻa: $1",
        "watchlist-details": "ʻOku leʻoʻi ʻa e peesi ʻe $1, ʻikai kau ki ai ʻa e ngaahi peesi alea.",
        "wlheader-enotif": "Kuo fakamafeiaʻi tala mei he tohila",
        "wlheader-showupdated": "*Ko e ngaahi peesi kuo liliu talu he taimi hoʻo ʻaʻahi ki ai, ʻoku ʻasi mai fakasinolahi",
+       "wlnote": "ʻOku ʻasi ʻi lalo ʻa e liliu fakamuimui ʻe $1 ʻi he houa fakamuimui ʻe <b>$2</b>.",
        "wlshowlast": "ʻAsi mai houa fakamuimui ʻe $1, ʻaho ʻe $2, $3",
        "watching": "ʻOku leʻo...",
        "unwatching": "ʻOku taʻeleʻo...",
index 347e836..62e90fc 100644 (file)
        "talkpagelinktext": "Toktok",
        "specialpage": "Sipesol pes",
        "personaltools": "Ol pes bilong mi",
-       "postcomment": "Nupela hap bilong pes",
        "talk": "Toktok",
        "views": "Ol lukluk",
        "toolbox": "Sipesol bokis",
index 2f0bb2c..34a58bd 100644 (file)
@@ -60,7 +60,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Arystanbek",
-                       "Sayginer"
+                       "Sayginer",
+                       "Sucsuzz"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "randomincategory": "Kategoriye göre rastgele sayfa",
        "randomincategory-invalidcategory": "\"$1\" geçerli bir kategori adı değil.",
        "randomincategory-nopages": "[[:Category:$1|$1]] kategorisinde hiç sayfa yok.",
-       "randomincategory-selectcategory": "Rastgele sayfa alınacak kategori: $1 $2.",
-       "randomincategory-selectcategory-submit": "Getir",
+       "randomincategory-category": "Kategori:",
+       "randomincategory-legend": "Kategoriden rastgele sayfa",
        "randomredirect": "Rastgele yönlendirme",
        "randomredirect-nopages": "\"$1\" ad alanında hiç bir yönlendirme yok.",
        "statistics": "İstatistikler",
        "exbeforeblank": "Silinmeden önceki içerik: '$1'",
        "delete-confirm": "\"$1\" sil",
        "delete-legend": "sil",
-       "historywarning": "'''Uyarı:''' Silmek üzere olduğunuz sayfanın yaklaşık olarak $1 {{PLURAL:$1|sürüme|sürüme}} sahip bir geçmişi var:",
+       "historywarning": "<strong>Uyarı:</strong> Silmek üzere olduğunuz sayfanın yaklaşık olarak $1 sürüme sahip bir geçmişi var:",
        "confirmdeletetext": "Bu sayfayı veya dosyayı tüm geçmişi ile birlikte veritabanından kalıcı olarak silmek üzeresiniz.\nBu işlemden kaynaklı doğabilecek sonuçların farkında iseniz ve işlemin [[{{MediaWiki:Policy-url}}|Silme kurallarına]] uygun olduğuna eminseniz, işlemi onaylayın.",
        "actioncomplete": "İşlem tamamlandı",
        "actionfailed": "İşlem başarısız oldu",
        "delete-edit-reasonlist": "Silme nedenlerini değiştir",
        "delete-toobig": "Bu sayfa, $1 {{PLURAL:$1|tane değişiklik|tane değişiklik}} ile çok uzun bir geçmişe sahiptir.\nBöyle sayfaların silinmesi, {{SITENAME}} sitesini bozmamak için sınırlanmaktadır.",
        "delete-warning-toobig": "Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.\nBunu silmek {{SITENAME}} işlemlerini aksatabilir;\ndikkatle devam edin.",
+       "deleteprotected": "Bu sayfayı silemezsiniz çünkü sayfa korumaya alınmış.",
        "deleting-backlinks-warning": "'''Uyarı:''' Silmek üzere olduğunuz sayfaya [[Özel:SayfayaBağlantılar/{{FULLPAGENAME}}|başka sayfalardan]] bağlantılar var veya sayfanın bazı bölümleri başka sayfalar tarafından alıntı olarak kullanılıyor.",
        "rollback": "değişiklikleri geri al",
        "rollback_short": "geri al",
        "autoblockid": "Otomatik engelleme #$1",
        "block": "Kullanıcıyı engelle",
        "unblock": "Kullanıcının engelini kaldır",
-       "blockip": "Kullanıcıyı engelle",
+       "blockip": "{{GENDER:$1|Kullanıcıyı}} engelle",
        "blockip-legend": "Kullanıcıyı engelle",
        "blockiptext": "Aşağıdaki formu kullanarak belli bir IP'nin veya kayıtlı kullanıcının değişiklik yapmasını engelleyebilirsiniz. Bu sadece vandalizmi engellemek için ve [[{{MediaWiki:Policy-url}}|kurallara]] uygun olarak yapılmalı. Aşağıya mutlaka engelleme ile ilgili bir açıklama yazınız. (örnek: -Şu- sayfalarda vandalizm yapmıştır).",
        "ipaddressorusername": "IP adresi veya kullanıcı adı",
        "ipb-unblock-addr": "$1 için engellemeyi kaldır",
        "ipb-unblock": "Engellemeyi kaldır",
        "ipb-blocklist": "Mevcut olan engellemeleri göster",
-       "ipb-blocklist-contribs": "$1 için katkılar",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}} için katkılar",
        "unblockip": "Kullanıcının engellemesini kaldır",
        "unblockiptext": "Daha önceden engellenmiş bir IP adresine ya da kullanıcı adına yazma erişimini geri vermek için aşağıdaki formu kullanın.",
        "ipusubmit": "Bu engellemeyi kaldır",
        "import": "Sayfaları aktar",
        "importinterwiki": "Vikilerarası içe aktarım",
        "import-interwiki-text": "İçe aktarmak için bir viki ve sayfa başlığı seçin.\nRevizyon tarihleri ve yazarların isimleri korunacaktır.\nBütün vikilerarası içe aktarım eylemleri [[Special:Log/import|içe aktarım günlüğünde]] kaydedilmektedir.",
-       "import-interwiki-source": "Kaynak viki/sayfa:",
+       "import-interwiki-sourcewiki": "Kaynak viki:",
+       "import-interwiki-sourcepage": "Kaynak sayfa:",
        "import-interwiki-history": "Sayfanın tüm geçmiş sürümlerini kopyala",
        "import-interwiki-templates": "Tüm şablonları içer",
        "import-interwiki-submit": "Import",
index 77efb97..fbb3d9b 100644 (file)
        "talkpagelinktext": "Mamlo",
        "specialpage": "Faṭo dilonoyto",
        "personaltools": "aMonayḍi",
-       "postcomment": "Fusoqo ḥaṭo",
        "articlepage": "Ḥur baḤbişoṭo",
        "talk": "Droşo",
        "views": "Ḥzayoṭo",
        "remembermypassword": "Dxar uQliḍayḍi buBrowser (buSowudo $1 {{PLURAL:$1|Yawmo|Yawme}})",
        "login": "3bar",
        "nav-login-createaccount": "3bar / Hway Hadomo",
-       "loginprompt": "Glozım maqablat Cookies qanna dqudrat fıtḥat {{SITENAME}}.",
        "userlogin": "3bar / Hway Hadomo",
        "userloginnocreate": "3bar",
        "logout": "Nfoqo",
        "upload": "Mosaq Fayl",
        "uploadlogpage": "Upload log",
        "filedesc": "Sfiquṭo",
-       "uploadedimage": "mosaq \"[[$1]]\"",
        "license": "Fsoso",
        "license-header": "Fsoso",
        "file-anchor-link": "Fayl",
index 1833d18..91da0bb 100644 (file)
        "talkpagelinktext": "Mbulavulo",
        "specialpage": "Tluka ro hlawuleka",
        "personaltools": "Switirhisi swa n'wini",
-       "postcomment": "Xiyenge xintswa",
        "articlepage": "Langutisa tluka ra matsalwa",
        "talk": "Mbulavuriswano",
        "views": "Kulanguteka",
        "remembermypassword": "Tsundzuka ku nghena eka Khompuyuta leyi (kufikela eka $1 {{PLURAL:$1|siku|masiku}})",
        "login": "Pfula u nghena",
        "nav-login-createaccount": "Pfula unghena / Tumbuluxa akhawunti",
-       "loginprompt": "U fanele ku pfumelela swipfuneti leswaku u pfula unghena eka {{SITENAME}}.",
        "userlogin": "Pfula unghena / Tumbuluxa akhawunti",
        "userloginnocreate": "Pfula unghena",
        "logout": "Pfala u famba",
        "upload": "Khandziyisa fayili",
        "uploadlogpage": "Ngula ya nxaxamelo wa swilo leswi hoxiweke",
        "filedesc": "Nkomiso",
-       "uploadedimage": "kuhoxiwe fayili ya \"[[$1]]\"",
        "license": "Nawu wo pfumelela",
        "license-header": "Nawu wo pfumelela",
        "imgfile": "fayili",
index 0fa99e0..57d4c06 100644 (file)
        "searchprofile-advanced-tooltip": "Бирелгән исемнәр мәйданында эзләү",
        "search-result-size": "$1 ({{PLURAL:$2|$2 сүз}})",
        "search-result-category-size": "{{PLURAL:$1|1=1 әгъза|$1 әгъза}} ({{PLURAL:$2|1=1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1=1 файл|$3 файл}})",
-       "search-result-score": "Релевантлыгы: $1 %",
        "search-redirect": "(юнәлтү $1)",
        "search-section": "($1 бүлеге)",
        "search-suggest": "Бәлки, сез моны эзлисез: $1",
        "verification-error": "Бу файл әлегә тикшерү узмаган.",
        "illegal-filename": "Мондый файл исеменә рөхсәт юк",
        "savefile": "Файлны саклау",
-       "uploadedimage": "«[[$1]]» йөкләнгән",
-       "overwroteimage": "«[[$1]]» файлының яңа юрамасы йөкләнелде",
        "uploaddisabled": "Йөкләү тыелган",
        "copyuploaddisabled": "URL адресы буенча йөкләү ябылган.",
        "uploaddisabledtext": "Файлларны йөкләү ябылган.",
index 95cb788..a7f86ed 100644 (file)
        "talkpagelinktext": "Bäxäs",
        "specialpage": "Maxsus bit",
        "personaltools": "Şäxsi qorallar",
-       "postcomment": "Yaña bülek",
        "articlepage": "Mäqäläne qaraw",
        "talk": "Bäxäs",
        "views": "Qarawlar",
        "externaldberror": "Tışqı mäğlümat bazası yärdämendä awtentifikatsiä ütkändä xata çıqtı, yäisä tışqı xisap yazmağızğa üzgäreşlär kertü xoquqığız yuq.",
        "login": "Kerü",
        "nav-login-createaccount": "Kerü / terkälü",
-       "loginprompt": "{{SITENAME}} proyektına kerü öçen «cookies» röxsät itelgän bulırğa tieş.",
        "userlogin": "Kerü / terkälü",
        "userloginnocreate": "Kerü",
        "logout": "Çığu",
        "searchprofile-everything-tooltip": "Barlıq bitlärdä dä ezläw",
        "searchprofile-advanced-tooltip": "Birelgän isemnär mäydanında ezläw",
        "search-result-size": "$1 ({{PLURAL:$2|$2 süz}})",
-       "search-result-score": "Relevantlığı: $1 %",
        "search-redirect": "(yünältü $1)",
        "search-section": "($1 bülege)",
        "search-suggest": "Bälki, sez monı ezlisez: $1",
        "verification-error": "Bu fayl älegä tikşerü uzmağan.",
        "uploadwarning": "Yökläw kisätmäse",
        "savefile": "Faylnı saqlaw",
-       "uploadedimage": "«[[$1]]» yöklängän",
-       "overwroteimage": "«[[$1]]» faylınıñ yaña yuraması yöklänelde",
        "uploaddisabled": "Yökläw tıyılğan",
        "copyuploaddisabled": "URL adresı buyınça yökläw yabılğan.",
        "uploaddisabledtext": "Fayllarnı yökläw yabılğan.",
index 6d2d010..0fb063a 100644 (file)
        "talkpagelinktext": "Чугаа",
        "specialpage": "Тускай арын",
        "personaltools": "Хууда херекселдер",
-       "postcomment": "Чаа салбыр",
        "articlepage": "Допчу арынны көөрү",
        "talk": "Чугаа",
        "views": "Көрүүшкүннери",
        "remembermypassword": "Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|1=хүн|хүн}}ге чедир)",
        "login": "Кирери",
        "nav-login-createaccount": "Кирери / бүрүткел бижикти чогаадыры",
-       "loginprompt": "{{SITENAME}} сайтче кирерде, баштай «cookies»-ти чөшпээрээр ужурлуг Силер.",
        "userlogin": "Кирери / бүрүткел бижикти чогаадыры",
        "userloginnocreate": "Кирери",
        "logout": "Үнери",
        "fileuploadsummary": "Түңнел:",
        "filesource": "Эгези:",
        "savefile": "Файлды шыгжаары",
-       "uploadedimage": "«[[$1]]» деп файлды салган.",
        "upload-maxfilesize": "Файлдың эң улуг хемчээли: $1",
        "watchthisupload": "Бо арынны хайгаараары",
        "upload-file-error": "Иштики алдаг",
index bc5be58..843ceff 100644 (file)
        "talkpagelinktext": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
        "specialpage": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
        "personaltools": "ⵉⵎⴰⵙⵙⵏ ⵉⵏⵡ",
-       "postcomment": "ⵜⴰⴷⴰⵍⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "talk": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
        "views": "ⵥⵕ",
        "toolbox": "ⵉⵎⴰⵙⵙⵏ",
index bfa01d5..a4f87fa 100644 (file)
        "talkpagelinktext": "مۇنازىرە",
        "specialpage": "ئالاھىدە بەت",
        "personaltools": "شەخسىي قوراللار",
-       "postcomment": "يېڭى ئابزاس",
        "articlepage": "مەزمۇن بېتىنى كۆرسەت",
        "talk": "مۇنازىرە",
        "views": "كۆرۈنۈش",
        "externaldberror": "بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.",
        "login": "تىزىمغا كىر",
        "nav-login-createaccount": "تىزىمغا كىر/ھېسابات قۇر",
-       "loginprompt": "سىز cookies نى قوزغاتقاندىلا ئاندىن   {{SITENAME}} غا كىرەلەيسىز.",
        "userlogin": "تىزىمغا كىر/ھېسابات قۇر",
        "userloginnocreate": "تىزىمغا كىر",
        "logout": "تىزىمدىن چىق",
        "searchprofile-advanced-tooltip": "ئادەتلەنگەن ئات بوشلۇقىدىن ئىزدە",
        "search-result-size": "$1 ({{PLURAL:$2|1 سۆز|$2 سۆز}})",
        "search-result-category-size": "{{PLURAL:$1|1 ئەزا|$1 ئەزا}}({{PLURAL:$2|1 تارماق تۈر|$2 تارماق تۈر}}, {{PLURAL:$3|1 ھۆججەت|$3 ھۆججەت}})",
-       "search-result-score": "باغلىنىشچانلىق: $1%",
        "search-redirect": "($1 قايتا نىشانلا)",
        "search-section": "(ئابزاس $1)",
        "search-file-match": "(ھۆججەت مەزمۇنى ماس كەلگەن)",
        "uploadwarning": "يۈكلەش ئاگاھلاندۇرۇشى",
        "uploadwarning-text": "تۆۋەندىكى ھۆججەت چۈشەندۈرۈشىنى ئۆزگەرتىپ ئاندىن قايتا سىناڭ.",
        "savefile": "ھۆججەت ساقلا",
-       "uploadedimage": "\"[[$1]]\" يۈكلەنگەن",
-       "overwroteimage": " \"[[$1]]\" نىڭ يېڭى نەشرى يۈكلەندى",
        "uploaddisabled": "يۈكلەش چەكلەنگەن",
        "copyuploaddisabled": "URL ئارقىلىق يۈكلەش ئىقتىدارى چەكلەنگەن.",
        "uploaddisabledtext": "ھۆججەت يۈكلەش چەكلەنگەن.",
        "watchlist-details": "كۆزەت تىزىملىكىڭىزدە {{PLURAL:$1|$1 بەت|$1 بەت}}  بار، مۇنازىرە بېتىنى ئۆز ئىچىگە ئالمايدۇ.",
        "wlheader-enotif": "ئېلخەتتە ئەسكەرتىش ئىقتىدارى قوزغىتىلدى.",
        "wlheader-showupdated": "سىز ئالدىنقى قېتىم كۆرگەندىن كېيىن ئۆزگەرتىلگەن بەتلەر '''توم''' كۆرۈنىدۇ",
+       "wlnote": "تۆۋەندىكىسى يېقىنقى {{PLURAL:$2|سائەت}} ئىچىدىكى ئاخىرقى '{{PLURAL:$1| قېتىملىق}}  ئۆزگەرتىش، $3 $4 گىچە.",
        "wlshowlast": "يېقىنقى $1 سائەت $2 كۈن $3 نىڭ ئۆزگەرتىشىنى كۆرسەت",
        "watchlist-options": "كۆزەت تىزىملىك تاللانما",
        "watching": "كۆزەت قىلىۋاتىدۇ…",
        "duplicate-defaultsort": "'''ئاگاھلاندۇرۇش:''' كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى \"$2\" ئىلگىرىكى كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى \"$1\" نى قاپلىۋېتىدۇ.",
        "version": "نەشرى",
        "version-extensions": "قاچىلانغان كېڭەيتىلمە",
+       "version-skins": "تېرەلەر",
        "version-specialpages": "ئالاھىدە بەتلەر",
        "version-parserhooks": "تەھلىلچى ئىلمىكى",
        "version-variables": "ئۆزگەرگۈچى مىقدار",
        "version-antispam": "ئەخلەتتىن ساقلىنىش",
-       "version-skins": "تېرەلەر",
        "version-other": "باشقا",
        "version-mediahandlers": "ۋاسىتە بىر تەرەپ قىلغۇچ",
        "version-hooks": "ئىلمەك",
index 26a9de1..c5fceb9 100644 (file)
@@ -49,7 +49,8 @@
                        "아라",
                        "Calak",
                        "Mykola Swarnyk",
-                       "Milicevic01"
+                       "Milicevic01",
+                       "Lamsec"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "randomincategory": "Випадкова сторінка у категорії",
        "randomincategory-invalidcategory": "\" $1 \" не є дійсним іменем категорії.",
        "randomincategory-nopages": "У [[:Category:$1]] немає сторінок.",
-       "randomincategory-selectcategory": "Перейти на випадкову сторінку з категорії: $1 $2.",
-       "randomincategory-selectcategory-submit": "Перейти",
        "randomredirect": "Випадкове перенаправлення",
        "randomredirect-nopages": "Простір назв «$1» не містить перенаправлень.",
        "statistics": "Статистика",
        "delete-toobig": "У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.\nВилучення таких сторінок було заборонене з метою уникнення порушень у роботі сайту {{SITENAME}}.",
        "delete-warning-toobig": "У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.\nЇї вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};\nдійте обережно.",
        "deleting-backlinks-warning": "'''Попередження:'''  [[Special:WhatLinksHere/{{FULLPAGENAME}}|інші сторінки]] посилаються або містять сторінку, яку ви маєте намір видалити.",
-       "rollback": "Ð\92Ñ\96дкинÑ\83Ñ\82и редагування",
+       "rollback": "Ð\92Ñ\96дкинÑ\83Ñ\82о редагування",
        "rollback_short": "Відкинути",
        "rollbacklink": "відкинути",
        "rollbacklinkcount": "відкинути $1 {{PLURAL:$1|редагування|редагування|редагувань}}",
        "import": "Імпорт статей",
        "importinterwiki": "Міжвікі імпорт",
        "import-interwiki-text": "Вкажіть вікі й назву імпортованої сторінки.\nДати змін й імена авторів буде збережено.\nУсі операції міжвікі-імпорту реєструються в [[Special:Log/import|відповідному протоколі]].",
-       "import-interwiki-source": "Вікі/сторінка-джерело",
        "import-interwiki-history": "Копіювати всю історію змін цієї сторінки",
        "import-interwiki-templates": "Включити всі шаблони",
        "import-interwiki-submit": "Імпортувати",
index 8726dc3..3170cbd 100644 (file)
        "talkpagelinktext": "تبادلۂ خیال",
        "specialpage": "خصوصی صفحہ",
        "personaltools": "ذاتی اوزار",
-       "postcomment": "اگلا حصّہ",
        "articlepage": "مندرجاتی صفحہ دیکھیۓ",
        "talk": "تبادلہٴ خیال",
        "views": "خیالات",
        "externaldberror": "یا تو توثیقی ڈیٹابیس میں خطا واقع ہوئی اور یا آپ کو بیرونی کھاتہ بتاریخ کرنے کی اِجازت نہیں ہے.",
        "login": "داخل ہوں",
        "nav-login-createaccount": "کھاتہ کھولیں یا اندراج کریں",
-       "loginprompt": "{{SITENAME}} میں داخلے کیلۓ آپکے پاس قند (کوکیز) مجازہوناچاہیں۔",
        "userlogin": "کھاتہ کھولیں یا اندراج کریں",
        "userloginnocreate": "داخلِ نوشتہ ہوجائیے",
        "logout": "اخراج",
        "searchprofile-advanced-tooltip": "اپنی پسند کے جائے نام میں تلاش",
        "search-result-size": "$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})",
        "search-result-category-size": "{{PLURAL:$1|1 رُکن|$1 اراکین}} ({{PLURAL:$2|1 ذیلی زمرہ|$2 ذیلی زمرہ جات}}, {{PLURAL:$3|1 ملف|$3 ملفات}})",
-       "search-result-score": "توافق: $1%",
        "search-redirect": "(رجوع مکرر $1)",
        "search-section": "(حصہ $1)",
        "search-suggest": "کیا آپ کا مطلب تھا: $1",
        "fileexists": "اس نام سے ایک ملف (فائل) پہلے ہی موجود ہے، اگر آپ کو یقین نہ ہو کہ اسے حذف کردیا جانا چاہیۓ تو براہ کرم  <strong>[[:$1]]</strong> کو ایک نظر دیکھ لیجیۓ۔ [[$1|thumb]]",
        "uploadwarning": "انتباہ بہ سلسلۂ زبراثقال",
        "savefile": "فائل محفوظ کریں",
-       "uploadedimage": "زبراثقال (اپ لوڈ) براۓ \"[[$1]]\"",
        "sourcefilename": "اسم ملف (فائل) کا منبع:",
        "destfilename": "تعین شدہ اسم ملف:",
        "watchthisupload": "یہ صفحہ زیر نظر کیجیۓ",
        "watchthispage": "یہ صفحہ زیر نظر کیجیۓ",
        "unwatch": "زیرنظرمنسوخ",
        "watchlist-details": "آپ کی زیرِنظرفہرست پر {{PLURAL:$1|$1 صفحہ ہے|$1 صفحات ہیں}}، اِس میں تبادلۂ خیال صفحات کی تعداد شامل نہیں.",
+       "wlnote": "نیچےآخری $1 تبدیلیاں ہیں جو کے پیچھلے <b>$2</b> گھنٹوں میں کی گئیں۔",
        "wlshowlast": "دکھائیں آخری $1 گھنٹے $2 دن $3",
        "watchlist-options": "اختیارات برائے زیرِنظرفہرست",
        "created": "بنا دیا گیا",
index 25867f7..5c1fd06 100644 (file)
        "talkpagelinktext": "munozara",
        "specialpage": "Maxsus sahifa",
        "personaltools": "Shaxsiy uskunalar",
-       "postcomment": "Yangi boʻlim",
        "articlepage": "Maqolani koʻrib chiqish",
        "talk": "Munozara",
        "views": "Qarashlar",
        "password-change-forbidden": "Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.",
        "login": "Kirish",
        "nav-login-createaccount": "Kirish / Hisob yaratish",
-       "loginprompt": "{{SITENAME}}ga kirish uchun kukilar yoqilgan bo'lishi kerak.",
        "userlogin": "Kirish / Hisob yaratish",
        "userloginnocreate": "Kirish",
        "logout": "Chiqish",
        "searchprofile-advanced-tooltip": "Belgilangan nomfazolardan qidirish",
        "search-result-size": "$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})",
        "search-result-category-size": "$1 {{PLURAL:$1|a'zo|a'zolar}} ($2 {{PLURAL:$2|ostturkum|ostturkumlar}}, $3 {{PLURAL:$3|fayl|fayllar}}).",
-       "search-result-score": "Relavantlik: $1%.",
        "search-redirect": "(yoʻnaltirish $1)",
        "search-section": "($1 boʻlimi)",
        "search-suggest": "Balki buni nazarda tutgandirsiz: $1",
        "filestatus": "Tarqatish shartlari:",
        "filesource": "Manba:",
        "ignorewarnings": "Ogohlantirishlarga eʼtibor qilma",
-       "uploadedimage": "\"[[$1]]\"ni yukladi",
-       "overwroteimage": "\"[[$1]]\"ning yangi versiyasini yukladi",
        "upload-source": "Yuklanayotgan fayl",
        "sourcefilename": "Fayl nomi:",
        "destfilename": "Fayl nomi:",
        "notanarticle": "Maqola emas",
        "watchlist-details": "Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).",
        "wlheader-showupdated": "Siz oxirgi marta kirganingizdan keyin oʻzgartirilgan sahifalar '''qalin''' yozuv bilan ajratib koʻrsatilgan.",
+       "wlnote": "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
        "wlshowlast": "Oxirgi $1 soatdagi $2 kundagi tahrirlarni koʻrsat $3",
        "watchlist-options": "Kuzatuv roʻyxati moslamalari",
        "watching": "Kuzatish...",
index 09c4ce1..67a4e39 100644 (file)
        "talkpagelinktext": "Discussion",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti personali",
-       "postcomment": "Nova sesion",
        "articlepage": "Varda ła voxe",
        "talk": "Discussion",
        "views": "Visite",
        "externaldberror": "Se xè verifegà n'erore con el server de autenticasion esterno, opure no se dispone de łe autorizasion nesesarie par ajornare el proprio aceso esterno.",
        "login": "Entra",
        "nav-login-createaccount": "Entra / Regìstrete",
-       "loginprompt": "Par entrar su {{SITENAME}} te ghè da verghe i cookie ativà.",
        "userlogin": "Entra / Regìstrete",
        "userloginnocreate": "Entra",
        "logout": "Và fora",
        "searchprofile-advanced-tooltip": "Serca nei namespace personalixài",
        "search-result-size": "$1 ({{PLURAL:$2|na parola|$2 parole}})",
        "search-result-category-size": "{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sotocategoria|$2 sotocategorie}}, {{PLURAL:$3|1 file|$3 file}})",
-       "search-result-score": "Rilevansa: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(sesion $1)",
        "search-suggest": "Sercavito forsi: $1",
        "uploadwarning": "Avixo de caricamento",
        "uploadwarning-text": "Par piaser, cànbia la descrission del file qua de soto e próa da novo.",
        "savefile": "Salva file",
-       "uploadedimage": "ga cargà \"[[$1]]\"",
-       "overwroteimage": "gà cargà na version nova de \"[[$1]]\"",
        "uploaddisabled": "Semo spiacenti, ma el caricamento de file el xe tenporaneamente sospeso.",
        "copyuploaddisabled": "El caricamento tramite URL el xe disabilità.",
        "uploaddisabledtext": "El caricamento dei file no'l xe mìa ativo.",
        "watchlist-details": "Te sì drio tegner d'ocio {{PLURAL:$1|una pagina (e la so pagina de discussion)|$1 pagine (e le so pagine de discussion)}}.",
        "wlheader-enotif": "Xe ativà la notifica via e-mail.",
        "wlheader-showupdated": "Le pagine che xe stà canbià da la to ultima visita le xe segnà in '''grosso'''",
+       "wlnote": "Cuà soto te cati {{PLURAL:$1|'l ultimo canbiamento|i ultimi '''$1''' canbiamenti}} inte {{PLURAL:$2|l'ultema ora|łe ultime '''$2''' ore}}; i dati i xe axornai a łe $4 del $3.",
        "wlshowlast": "Mostra le ultime $1 ore $2 zorni $3",
        "watchlist-options": "Inpostassion de le pagine tegnùe d'ocio",
        "watching": "Taco a tegner d'ocio...",
        "duplicate-defaultsort": "Ocio: la ciave de ordinamento predefinìa \"$2\" la va in conflito co' quela de prima \"$1\".",
        "version": "Version",
        "version-extensions": "Estension instalè",
+       "version-skins": "Aspeto grafego",
        "version-specialpages": "Pagine speciali",
        "version-parserhooks": "Hook del parser",
        "version-variables": "Variabili",
        "version-antispam": "Prevension del spam",
-       "version-skins": "Aspeto grafego",
        "version-other": "Altro",
        "version-mediahandlers": "Gestori de contenuti multimediài",
        "version-hooks": "Hook",
index 07ba40c..d00ada8 100644 (file)
        "talkpagelinktext": "Lodu",
        "specialpage": "Specialine lehtpol'",
        "personaltools": "Personaližed azeged",
-       "postcomment": "Uz' jaguz",
        "articlepage": "Kacu südäimišton lehtpol'",
        "talk": "Diskussii",
        "views": "Kacundad",
        "externaldberror": "Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.",
        "login": "Kirjutadas sistemha",
        "nav-login-createaccount": "Kirjutadas / Sada registracii",
-       "loginprompt": "Pidab laskta sada \"cookies\", miše kirjutadas {{SITENAME}}he.",
        "userlogin": "Kirjutadas / Sada registracii",
        "userloginnocreate": "Kirjutagatoiš sistemha",
        "logout": "Lähtta",
        "searchprofile-advanced-tooltip": "Ectä märitud nimiavarusiš",
        "search-result-size": "$1 ({{PLURAL:$2|1 sana|$2 sanad}})",
        "search-result-category-size": "{{PLURAL:$1|1 element|$1 elementad}} ({{PLURAL:$2|1 alakategorii|$2 alakategorijad}}, {{PLURAL:$3|1 fail|$3 failad}})",
-       "search-result-score": "Relevantižuz: $1%",
        "search-redirect": "(oigenduz $1)",
        "search-section": "(jaguz $1)",
        "search-suggest": "Tahtoižit-ik löuta: $1",
        "file-exists-duplicate": "Nece fail om {{PLURAL:$1|necen failan|neniden failoiden}} dublikat:",
        "uploadwarning": "Varutuz jügutoitmižes",
        "savefile": "Kirjutada fail",
-       "uploadedimage": "om jügutoitnu \"[[$1]]\"",
-       "overwroteimage": "jügutoiti \"[[$1]]\"-failan uden versijan",
        "uploaddisabled": "Jügutoitand om kel'tud",
        "uploaddisabledtext": "Failoiden jügutoitand om sauptud.",
        "php-uploaddisabledtext": "Failoiden jügutoitand om kel'tud PHP:n järgendusiš. Kodvgat \"file_uploads\"-järgenduz.",
        "duplicate-defaultsort": "'''Varutuz:''' Sortiruindan avadim äugotižjärgendusen mödhe \"$2\" toižetab edeližen avadimen äugotižjärgendusen mödhe \"$1\".",
        "version": "Versii",
        "version-extensions": "Seižutadud ližad",
+       "version-skins": "Nägutemad",
        "version-specialpages": "Specialižed lehtpoled",
        "version-parserhooks": "Sintaksižen analizatoran sabustajad",
        "version-variables": "Vajehtujad lugud",
        "version-antispam": "Antispam",
-       "version-skins": "Nägutemad",
        "version-other": "Toine",
        "version-mediahandlers": "Median radimed",
        "version-hooks": "Sabutajad",
index b8bdf65..e7a4a53 100644 (file)
        "searchprofile-advanced-tooltip": "Tìm trong không gian tên tùy chọn",
        "search-result-size": "$1 ({{PLURAL:$2|1 từ|$2 từ}})",
        "search-result-category-size": "$1 trang thành viên ($2 thể loại con, $3 tập tin)",
-       "search-result-score": "Độ phù hợp: $1%",
        "search-redirect": "(đổi hướng $1)",
        "search-section": "(đề mục $1)",
        "search-file-match": "(khớp nội dung tập tin)",
index 39099bc..8eefeb6 100644 (file)
        "talkpagelinktext": "Disghusjoon",
        "specialpage": "Schbedsjaal-sajdn",
        "personaltools": "Ajchne werchdsajch",
-       "postcomment": "Najn abschnid",
        "articlepage": "D'inhalds-sajdn dsajchn",
        "talk": "Disghusjoon",
        "views": "Ôôsichdn",
        "remembermypassword": "Miid den Brauser dauerhafd ogmeld bleim (maximal $1 {{PLURAL:$1|Dooch|Dooch}})",
        "login": "Ôômeldn",
        "nav-login-createaccount": "Oomeldn / Ghondoo ooleeng",
-       "loginprompt": "Zum Omelldn mäin Guggies agdivierd sei.",
        "userlogin": "Ôômeldn / Als Bajdräächâr ajschrajm",
        "logout": "Abmeldn",
        "userlogout": "Abmeldn",
        "searchprofile-advanced-tooltip": "Soung in weidere Namensraim",
        "search-result-size": "$1 ({{PLURAL:$2|1 wôrd|$2 wärdâr}})",
        "search-result-category-size": "{{PLURAL:$1|1 Seidn|$1 Seidn}} ({{PLURAL:$2|1 Untergadegorii|$2 Untergadegoriin}}, {{PLURAL:$3|1 Dadei|$3 Dadein}})",
-       "search-result-score": "Âjschleechich: $1 %",
        "search-redirect": "(Wajdalajdung fon „$1“ häa)",
        "search-section": "(Abschnid $1)",
        "search-suggest": "Hasd ajchndlich gmaand „$1“?",
        "upload": "Nauflôôdn",
        "uploadlogpage": "Brodoghol fom dadaj-hoochlôôdn",
        "filedesc": "Bschreibung",
-       "uploadedimage": "had „[[$1]]“ naufglôôdn",
        "license": "Lizenz",
        "license-header": "Lizenz",
        "file-anchor-link": "Daddei",
index b073f11..84c90c1 100644 (file)
        "talkpagelinktext": "Bespik",
        "specialpage": "Pad patik",
        "personaltools": "Stums pösodik",
-       "postcomment": "Diläd nulik",
        "articlepage": "Jonön ninädapadi",
        "talk": "Bespik",
        "views": "Logams",
        "externaldberror": "U ejenon fümükamapöl plödik nünödema, u no dalol atimükön kali plödik ola.",
        "login": "Nunädolös obi",
        "nav-login-createaccount": "Nunädön oki / jafön kali",
-       "loginprompt": "Mutol mögükön „kekilis“ ad kanön nunädön oli in {{SITENAME}}.",
        "userlogin": "Nunädön oki / jafön kali",
        "userloginnocreate": "Nunädön oki",
        "logout": "Senunädön oki",
        "searchprofile-advanced-tooltip": "Sukön in nemaspads patik",
        "search-result-size": "$1 ({{PLURAL:$2|vöd 1|vöds $2}})",
        "search-result-category-size": "{{PLURAL:$1|liman 1|limans $1}} ({{PLURAL:$2|donaklad 1|donaklads $2}}, {{PLURAL:$3|ragiv 1|ragivs $3}})",
-       "search-result-score": "Demäd: $1%",
        "search-redirect": "(lüodüköm: $1)",
        "search-section": "(diläd: $1)",
        "search-suggest": "Ediseinol-li: $1 ?",
        "file-deleted-duplicate": "Ragiv votik, kel leigon ko ragiv at ([[:$1]]), pemoükon büo. Sötol kontrolön moükamajenotemi ragiva et büä odönulöpükol oni.",
        "uploadwarning": "Löpükamanuned",
        "savefile": "Dakipolöd ragivi",
-       "uploadedimage": "\"[[$1]]\" pelöpüköl",
-       "overwroteimage": "fomami nulik ragiva: „[[$1]]“ pelöpükon",
        "uploaddisabled": "Löpükam penemögükon",
        "uploaddisabledtext": "Löpükam ragivas penemögükon.",
        "uploadscripted": "Ragiv at ninükon eli HTML u vödis programapüka, kelis bevüresodanaföm ba opölanätäpreton",
        "watchlist-details": "{{PLURAL:$1|pad $1|pads $1}} su galädalised, plä bespikapads.",
        "wlheader-enotif": "Nunam medü pot leäktronik pemögükon.",
        "wlheader-showupdated": "Pads pos visit lätik ola pevotüköls papenons '''me tonats bigik'''",
+       "wlnote": "Is palisedons votükam{{PLURAL:$1| lätik|s lätik '''$1'''}} dü düp{{PLURAL:$2| lätik|s lätik '''$2'''}}.",
        "wlshowlast": "Jonolöd: düpis lätik $1, delis lätik $2, $3",
        "watchlist-options": "Paramets galädaliseda",
        "watching": "Papladon ini galädalised...",
        "duplicate-defaultsort": "Nüned: Leodükamakik kösömik: „$2“ buon bu leodükamakik kösömik büik: „$1“.",
        "version": "Fomam",
        "version-extensions": "Veitükumams pestitöl",
-       "version-specialpages": "Pads patik",
        "version-skins": "Fomäts",
+       "version-specialpages": "Pads patik",
        "version-other": "Votik",
        "version-hooks": "Huköms",
        "version-hook-name": "Hukömanem",
index 3154416..28d38e7 100644 (file)
        "remembermypassword": "Mäleht minuu (enintään $1 {{PLURAL:$1|päivä|päivää}})",
        "login": "Cirjut süäme",
        "nav-login-createaccount": "Cirjut süäme vai registriiroit cäüttijässi",
-       "loginprompt": "Tüü piättä «cookies» võttamin luvata, štobõ entä sisteema ete esitellä.",
        "userlogin": "Cirjut süäme",
        "userloginnocreate": "Cirjut süäme",
        "logout": "Cirjut uloz",
        "filename": "Failinimi",
        "filedesc": "Turvotuz",
        "fileuploadsummary": "Turvotuz:",
-       "uploadedimage": "\"[[$1]]\" on laajõngoitõttu ülez",
        "license": "Litseenttsija:",
        "license-header": "Litseenttsija",
        "imgfile": "faili",
index b942a82..9461efe 100644 (file)
        "talkpagelinktext": "Arotus",
        "specialpage": "Tallituslehekülg",
        "personaltools": "Erätüüriistaq",
-       "postcomment": "Vahtsõnõ alajago",
        "articlepage": "Artiklilehekülg",
        "talk": "Arotus",
        "views": "Kaemisõq",
        "externaldberror": "Välitsen kimmästegemisteedüskogon om viga vai olõ-i sul lubat umma pruukjanimme muutaq.",
        "login": "Nimega sisseminek",
        "nav-login-createaccount": "Mineq nimega sisse",
-       "loginprompt": "{{SITENAME}} lask nimega sisse õnnõ sis, ku lubatas valmistuisi.",
        "userlogin": "Mineq nimega sisse vai luuq pruukjanimi",
        "userloginnocreate": "Nimega sisseminek",
        "logout": "Nime alt välläminek",
        "fileexists-shared-forbidden": "Sama nimega teedüstü om jo olõman jaetuidõ teedüstüide hulgan. Pästäq teedüstü mõnõ tõõsõ nime ala. Parhillanõ teedüstü: [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Üleslaatmishoiatus",
        "savefile": "Pästäq teedüstü ärq",
-       "uploadedimage": "laadõ üles \"$1\"",
-       "overwroteimage": "üles laadit \"[[$1]]\" vahtsõnõ kujo",
        "uploaddisabled": "Üleslaatminõ lää-s kõrda",
        "uploaddisabledtext": "Teedüstü üleslaatminõ om keelet.",
        "uploadscripted": "Seol teedüstül om HTML-kuud vai skripte, minkast võrgokaeja või võlssi arvo saiaq.",
        "watchlist-details": "Perräkaemisnimekirän om {{PLURAL:$1|$1 leht|$1 lehte}}, rehkendämäldä arotuslehti.",
        "wlheader-enotif": "E-postiga teedäqandmisõq ommaq käügin.",
        "wlheader-showupdated": "Leheq, midä om muudõt päält su viimäst käümist, ommaq '''paksun kirän'''",
+       "wlnote": "Tan om '''$1''' {{PLURAL:$1|muutminõ|muutmist}} viimädse '''$2''' tunni ao seen.",
        "wlshowlast": "Näütäq viimädseq $1 tunni $2 päivä $3",
        "watchlist-options": "Perräkaemisnimekirä säädmine",
        "watching": "Pandas perräkaemisnimekirjä...",
index 6b870e7..49957ca 100644 (file)
        "talkpagelinktext": "Copiner",
        "specialpage": "Pådje sipeciåle",
        "personaltools": "Usteyes da vosse",
-       "postcomment": "Novele seccion",
        "articlepage": "Vey l' årtike",
        "talk": "Copene",
        "views": "Vuwes",
        "yourdomainname": "Vosse dominne",
        "login": "S' elodjî",
        "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î",
        "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",
        "fileexists-shared-forbidden": "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs.\nRivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos vloz.\n[[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": "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.",
        "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'''",
+       "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_reset": "Mårker totes les pådjes come vizitêyes",
        "watchlisttools-edit": "Vey et candjî l' djivêye des shuvous",
        "version": "Modêye des programes",
        "version-extensions": "Rawetes d' astalêyes",
+       "version-skins": "Peas",
        "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",
index 6b032f6..7d6b931 100644 (file)
        "talkpagelinktext": "Hiruhimangraw",
        "specialpage": "Pinaurog nga pakli",
        "personaltools": "Mga pankalugaringon nga garamiton",
-       "postcomment": "Bag-o nga bahin",
        "articlepage": "Kitaa in may sulod nga pakli",
        "talk": "Hiruhimangraw",
        "views": "Mga paglantaw",
        "externaldberror": "Mayda authenticaton database error o diri ka tinutugotan pag-update an imo akwant ha gawas.",
        "login": "Sakob",
        "nav-login-createaccount": "Magpalista nga masakob / paghimo hin bag-o nga akawnt",
-       "loginprompt": "Kinahanglan mo hin mga kuki (''cookie'') para makapag log-in ha {{SITENAME}}.",
        "userlogin": "Magpasabot nga masakob / paghimo hin akawnt",
        "userloginnocreate": "Magpasabot nga masakob",
        "logout": "Gawas",
        "searchprofile-advanced-tooltip": "Pamilnga ha mga nabatasan nga ngaran-lat'ang",
        "search-result-size": "$1 ({{PLURAL:$2|1 nga pulong|$2 nga mga pulong}})",
        "search-result-category-size": "{{PLURAL:$1|1 nga api|$1 nga mga api}} ({{PLURAL:$2|1 nga ubos-nga-kaarangay|$2 nga mga ubos-nga-kaarangay}}, {{PLURAL:$3| 1 nga fayl|$3 nga mga fayl}})",
-       "search-result-score": "Pagkaangay: $1%",
        "search-redirect": "(redirekta $1)",
        "search-section": "(bahin $1)",
        "search-suggest": "Buot sidngon mo ba: $1",
        "windows-nonascii-filename": "Ini nga wiki in diri nakasuportado han mga ngaran-han-paypay nga may-ada pinaurog nga mga karakter.",
        "uploadwarning": "Pahimatngon han pagkarga paigbaw",
        "savefile": "Igtipig an paypay",
-       "uploadedimage": "ginkarga-paigbaw \"[[$1]]\"",
-       "overwroteimage": "Ginkaraga an bag-o nga bersyon han \"[[$1]]\"",
        "uploaddisabled": "Waray ginpagana an pagkarga paigbaw",
        "copyuploaddisabled": "An pagkarga paigbaw pinaagi hin URL in waray ginpagana",
        "uploaddisabledtext": "An mga pagkarga-paigbaw in diri ginpapagana.",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|hiruhimangraw]])",
        "duplicate-defaultsort": "'''Pahimatngon:''' An daan-aada nga paglainlain nga piridlitan nga \"$2\" in igsasapaw an durudaan nga daan-aada nga paglainlain nga piridlitan nga \"$1\".",
        "version": "Bersyon",
+       "version-skins": "Mga panit",
        "version-specialpages": "Mga pinaurog nga pakli",
        "version-parserhooks": "Mga kawil parser",
        "version-variables": "Mga variable",
        "version-antispam": "Pamugong hin spam",
-       "version-skins": "Mga panit",
        "version-other": "iba",
        "version-mediahandlers": "Mga nakapot han medya",
        "version-hooks": "Mga kawil",
index 665f693..e3a99fe 100644 (file)
        "talkpagelinktext": "Diisoo",
        "specialpage": "Xëtu jagleel",
        "personaltools": "Samay jumtukaay",
-       "postcomment": "Xaaj bu bees",
        "articlepage": "Gis jukki bi",
        "talk": "Waxtaan",
        "views": "Xool yo",
        "externaldberror": "Njuumte judd na ci dàttub njoxe bi, walla day ni rekk amuloo sañ-sañu yeesal sa sàqum biti.",
        "login": "xammeeku",
        "nav-login-createaccount": "Dugg / Bindu",
-       "loginprompt": "Faaw nga doxal cookie yi ngir man a dugg ci {{SITENAME}}.",
        "userlogin": "Dugg / Bindu",
        "logout": "Génnu",
        "userlogout": "Génnu",
        "searchprofile-everything-tooltip": "Seet fépp (ba ci xëti waxtaanuwaay yi)",
        "searchprofile-advanced-tooltip": "Seet ci barabi tur yi",
        "search-result-size": "$1 ({{PLURAL:$2|1 baat|$2 baat}})",
-       "search-result-score": "Baaxaay: $1%",
        "search-redirect": "(jubluwaat bu jëm $1)",
        "search-section": "(xaaj $1)",
        "search-suggest": "Xéj-na lii nga doon seet: $1",
        "file-exists-duplicate": "ŋara wi ñaaralub {{PLURAL:$1| ŋara wii di toftal la| ŋara yii di toftal lañu}} :",
        "uploadwarning": "Moytul !",
        "savefile": "Denc dencukaay bi",
-       "uploadedimage": "Yeb na « [[$1]] »",
-       "overwroteimage": "moo yeb sumb bu bees bu « [[$1]] »",
        "uploaddisabled": "Di jéeggalu, yebug dencukaay yi dañ koo doxadilandi.",
        "uploaddisabledtext": "Yebug dencukaay yi dañ koo doxadil.",
        "uploadscripted": "Wii ŋara dafa am yoonug HTML walla ab script bu ab joowukaayub web mana tekke ci anam gu baaxul.",
        "unwatchthispage": "Bul toppati",
        "watchlist-details": "Topp nga $1 {{PLURAL:$1|xët|ciy xët}}, soo waññiwaalewul xëti waxtaanuwaay yi.",
        "wlheader-showupdated": "Xët yi ñu soppiwoon ca sa duggu bu mujj ñoom la ñu fesal ñu <b>xëm</b>",
+       "wlnote": "Fii ci suuf {{PLURAL:$1| ngay gis coppite yu mujj yi|ngay gis $1 coppite yu mujj}} ci {{PLURAL:$2|waxtu gu mujj gi|<b>$2</b> waxtu yu mujj}}.",
        "wlshowlast": "wone $1 waxtu yu mujj, $2 bess yu mujj, walla $3.",
        "watchlist-options": "Tànneefi limu toppte bi",
        "watching": "Topp...",
index 32dc1d2..5a6c870 100644 (file)
@@ -15,7 +15,8 @@
                        "Cwek",
                        "Duolaimi",
                        "Impersonator 1",
-                       "LNDDYL"
+                       "LNDDYL",
+                       "TheChampionMan1234"
                ]
        },
        "tog-underline": "鏈接下橫線:",
@@ -42,7 +43,7 @@
        "tog-shownumberswatching": "顯示關注人數",
        "tog-oldsig": "能界签名先望:",
        "tog-fancysig": "畀簽名當wiki文本(弗自動鏈接)",
-       "tog-uselivepreview": "用当场先望(试验)",
+       "tog-uselivepreview": "用當場先望(試驗)",
        "tog-forceeditsummary": "編要空白到提醒我",
        "tog-watchlisthideown": "關注表裏囥脫我所編",
        "tog-watchlisthidebots": "關注表裏囥脫機器人所編",
        "currentevents-url": "Project:箇阶段个事干",
        "disclaimers": "甮追問",
        "disclaimerpage": "Project:甮追問",
-       "edithelp": "ç¼\96å\86\99帮助",
+       "edithelp": "編寫幫助",
        "mainpage": "封面",
        "mainpage-description": "封面",
        "policy-url": "Project:策略",
-       "portal": "社å\8cºå\8f°é\97¨",
-       "portal-url": "Project:社å\8cºå\8f°é\97¨",
+       "portal": "社å\8d\80è\87ºé\96\80",
+       "portal-url": "Project:社å\8d\80è\87ºé\96\80",
        "privacy": "隱私策略",
        "privacypage": "Project:隱私策略",
        "badaccess": "权限",
        "unusedtemplateswlh": "其他鏈接",
        "randompage": "随便望望",
        "randomincategory": "分類裏個隨便一頁",
-       "randomincategory-selectcategory-submit": "去",
        "statistics": "统计",
        "statistics-header-users": "用户资料",
        "statistics-users-active": "活跃用户",
index 596b8d7..c952187 100644 (file)
        "talkpagelinktext": "Меткән",
        "specialpage": "Көдлхнә халх",
        "personaltools": "Эврән зер-зев",
-       "postcomment": "Шин хүв",
        "articlepage": "Зүүл үзх",
        "talk": "Меткән",
        "views": "Хәләврүд",
        "yourdomainname": "Тана домен:",
        "login": "Орлһн",
        "nav-login-createaccount": "Харһх / бичгдлһн кех",
-       "loginprompt": "{{SITENAME}} тал орлһна төлә, та «cookies» олзлдг кергтә.",
        "userlogin": "Орх аль бичгдлһиг бүтәх",
        "userloginnocreate": "Харһх",
        "logout": "Һарх",
        "searchprofile-articles-tooltip": "$1 гидг зүүлд хәәх",
        "searchprofile-images-tooltip": "Боомг хәәх",
        "search-result-size": "$1 ({{PLURAL:$2|$2 үг|$2 үгмүд|$2 үгмүд}})",
-       "search-result-score": "Әдлцән: $1 %",
        "search-redirect": "(авч одлһн $1)",
        "search-section": "($1 хүв)",
        "search-suggest": "Та эниг таанат: $1 ?",
        "filedesc": "Учр-утх",
        "fileuploadsummary": "Учр-утх:",
        "savefile": "Хадһлх",
-       "uploadedimage": "«[[$1]]» тәвв",
        "upload-success-subj": "Йовудта тәвллһн",
        "license": "Закан:",
        "license-header": "Закан:",
index c8c247b..c71079f 100644 (file)
        "yourdomainname": "თქვან დომენ",
        "login": "მიშულა",
        "nav-login-createaccount": "მიშულა/ანგარიშიშ გონწყუმა",
-       "loginprompt": "{{SITENAME}}-შა მიშაულარო ოხვილუთ ეკაკილეფიშ (cookies) გოაქტიურაფას.",
        "userlogin": "მიშულა/ანგარიშიშ გონწყუმა",
        "logout": "გიშულა",
        "userlogout": "გიშულა",
        "uploadbtn": "ფაილიშ გეთება",
        "uploadlogpage": "ეხარგუაშ ორეგისტრირებელ ჟურნალ",
        "filedesc": "რეზიუმე",
-       "uploadedimage": "ეხარგელი რე \"[[$1]]\"",
        "license": "ლიცენზირაფა:",
        "license-header": "ლიცენზირაფა",
        "listfiles": "სურათეფიშ ერკებულ",
index 71252d3..2635330 100644 (file)
@@ -28,6 +28,7 @@
        "tog-watchdefault": "צולייגן בלעטער וואס איך רעדאקטיר צו מיין אכטונג ליסטע",
        "tog-watchmoves": "צולייגן בלעטער וואס איך באוועג און טעקעס וואס איך לאד ארויף צו מיין אכטונג ליסטע",
        "tog-watchdeletion": "צולייגן בלעטער וואס איך מעק אויס צו מיין אויפפאסונג ליסטע",
+       "tog-watchrollback": "צולייגן צו מיין אויפפאסן ליסטע בלעטער אויף וואס איך האב אדורכגעפירט א צוריקשטעלן.",
        "tog-minordefault": "באגרענעצן אלע רעדאַקטירונגען גרונטלעך אלס מינערדיק",
        "tog-previewontop": "צײַג די \"פֿאָרויסיגע װײַזונג\" גלײַך בײַ דער ערשטער באַאַרבעטונג",
        "tog-previewonfirst": "ווייזן פֿאראויסדיגע ווייזונג בײַ דער ערשטער רעדאקטירונג",
        "changeemail-cancel": "אַנולירן",
        "changeemail-throttled": "איר האט געפרוווט צופֿיל מאל אריינלאגירן.\nזייט אזוי גוט און וואַרט $1 איידער איר פרוווט נאכאמאל.",
        "resettokens": "צוריקזעצן טאקנס",
+       "resettokens-text": "דא קענט איר צוריקשטעלן טאקנס וואס דערלויבן צוטריט צו געוויסע פריוואטע דאטן שייך צו אײַער קאנטע.\n\nYou should do it if you accidentally shared them with someone or if your account has been compromised.",
        "resettokens-no-tokens": "נישט פאראן קיין טאקנס צוריקצוזעצן.",
        "resettokens-legend": "צוריקזעצן טאקנס",
        "resettokens-tokens": "טאקנס:",
        "rev-deleted-event": "(לאגירן אקציע אראפגענומען)",
        "rev-deleted-user-contribs": "[באַניצער נאָמען אָדער IP אַדרעס אראפגענומען - רעדאַקטירונג פֿאַרבאָרגן פֿון בייַשטייַערונגען]",
        "rev-deleted-text-permission": "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.\nעס איז מעגלעך דא נאך פרטים אין דעם\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].",
+       "rev-suppressed-text-permission": "די בלאט רעוויזיע איז געווארן <strong>אונטערדריקט</strong>. מען קען געפינען נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} אונטערדריקן לאגבוך].",
        "rev-deleted-text-unhide": "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט '''.\nעס איז מעגלעך דא נאך פרטים אין דעם\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].\nאיר קענט נאך  [$1 באקוקן די רעוויזיע] אויב איר ווילט גיין ווײַטער.",
        "rev-suppressed-text-unhide": "די בלאט רעוויזיע איז געווארן '''באהאלטן'''.\nעס איז מעגלעך דא נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} באהעלטעניש לאג].\nאיר קענט נאך [$1 באקוקן די רעוויזיע] אויב איר ווילט גיין ווײַטער.",
        "rev-deleted-text-view": "די בלאט רעוויזיע איז געווארן '''אויסגעמעקט'''.\nאיר קענט זען זי;\nעס איז מעגלעך דא נאך פרטים אין דעם [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} אויסמעקונג לאג].",
        "randomincategory": "צופעליקער בלאט אין קאטעגאריע",
        "randomincategory-invalidcategory": "\"$1\" איז נישט קיין גילטיקער קאטעגאריע נאמען.",
        "randomincategory-nopages": "נישט פאראן קיין בלעטער אין [[:Category:$1]].",
-       "randomincategory-selectcategory": "באקומען צופעליקן בלאט פון קאטעגאריע: $1, $2.",
-       "randomincategory-selectcategory-submit": "גיין",
+       "randomincategory-category": "קאַטעגאריע:",
+       "randomincategory-legend": "צופעליקער בלאט אין קאטעגאריע",
        "randomredirect": "צופֿעליק ווײַטערפֿירן",
        "randomredirect-nopages": "נישטא קיין ווײַטערפֿירונגען אין דעם נאמענטייל $1.",
        "statistics": "סטאַטיסטיק",
        "allpages-bad-ns": "{{SITENAME}} האט נישט קיין נאָמענטייל \"$1\".",
        "allpages-hide-redirects": "פֿארהיילן ווייטערפֿירונגען",
        "cachedspecial-viewing-cached-ttl": "איר באקוקט א ווערסיע פון דעם בלאט פונעם זאפאס, וואס קען אבער זיין  פֿארעלטערט ביז $1.",
+       "cachedspecial-viewing-cached-ts": "איר זעט א זאפאס־ווערסיע פון דעם בלאט, וואס איז מעגלעך נישט אקטועל.",
        "cachedspecial-refresh-now": "באקוקן די לעצטע.",
        "categories": "קאַטעגאָריעס",
        "categoriespagetext": "די פֿאלגענדע {{PLURAL:$1| קאַטעגאָריע אַנטהאַלט|קאַטעגאָריעס אַנטהאַלטן}} בלעטער אדער מעדיע.\n[[Special:UnusedCategories|אומבאַניצטע קאַטעגאריעס]] זענען נישט געוויזן דא.\nזעט אויך [[Special:WantedCategories|געזוכטע קאַטעגאריעס]].",
        "exbeforeblank": "אינהאַלט בעפֿאַרן אויסליידיגן איז געווען: \"$1\"",
        "delete-confirm": "אויסמעקן $1",
        "delete-legend": "אויסמעקן",
-       "historywarning": "אכטונג – איר גייט אויסמעקן א בלאט וואָס האט א היסטאריע מיט $1 {{PLURAL:$1|ווערסיע|ווערסיעס}}:",
+       "historywarning": "<strong>אכטונג:</strong> איר גייט אויסמעקן א בלאט וואָס האט א היסטאריע מיט $1 {{PLURAL:$1|ווערסיע|ווערסיעס}}:",
        "confirmdeletetext": "איר גייט איצט אויסמעקן א בלאט צוזאַמען מיט זײַן גאנצע היסטאריע.\n\nביטע באשטעטיגט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט פולערהייט די קאנסקווענסן פון דעם אַקט, און אז דאס איז אין איינקלאנג מיט [[{{MediaWiki:Policy-url}}|דער פאליסי]].",
        "actioncomplete": "די אַקציע אָט זיך דורכגעפֿירט",
        "actionfailed": "אקציע דורכגעפאלן",
        "delete-edit-reasonlist": "רעדאַקטירן די אויסמעקן סיבות",
        "delete-toobig": "דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אזעלכע בלעטער איז באַגרענעצט געווארן בכדי צו פֿאַרמײַדן א צופֿעליגע פֿאַרשטערונג פֿון  {{SITENAME}}.",
        "delete-warning-toobig": "דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אים קען פֿאַרשטערן דאַטנבאַזע אפעראַציעס פֿון {{SITENAME}}; זײַט פֿארזיכטיג איידער איר מעקט אויס.",
+       "deleteprotected": "איר קענט נישט אויסמעקן דעם בלאט ווײַל ער איז געשיצט.",
        "deleting-backlinks-warning": "'''ווארענוג:'''\n[[Special:WhatLinksHere/{{FULLPAGENAME}}|אנדערע בלעטער]]  פארבינדן צום בלאט אדער אריבערשליסן דעם בלאט איר האלט ביי אויסמעקן.",
        "rollback": "צוריקדרייען רעדאַקטירונגען",
        "rollback_short": "צוריקדרייען",
        "import": "אימפארטירן בלעטער",
        "importinterwiki": "אריבערוויקי אימפארט",
        "import-interwiki-text": "קלויבט אויס א וויקי און אן ארטיקל קעפל צו אימפארטירן.\nדי דאטעס און די נעמען פון די רעדאקטארן וועט ווערן געהיטן.\nאלע צווישנוויקי אימפארט אקציעס ווערן פארשריבן אינעם   [[Special:Log/import|אימפארט לאג]].",
-       "import-interwiki-source": "מקור וויקי/בלאט",
+       "import-interwiki-sourcewiki": "מקור וויקי:",
+       "import-interwiki-sourcepage": "מקור בלאַט:",
        "import-interwiki-history": "קאפירן אלע היסטאריע ווערסיעס פאר דעם בלאט",
        "import-interwiki-templates": "איינשילסן אלע מוסטערן",
        "import-interwiki-submit": "אימפארט",
index 0c53e99..842cc1d 100644 (file)
        "searchprofile-advanced-tooltip": "Ṣàwáàrí nínú àwọn orúkọàyè pàtó",
        "search-result-size": "$1 ({{PLURAL:$2|ọ̀rọ̀ 1|àwọn ọ̀rọ̀ $2}})",
        "search-result-category-size": "{{PLURAL:$1|ẹlẹgbẹ́ 1|àwọn ẹlẹgbẹ́ $1}} ({{PLURAL:$2|ẹ̀kà abẹ́ 1|àwọn ẹ̀kà abẹ́ $2}}, {{PLURAL:$3|fáìlì 1|àwọn fáìlì $3}})",
-       "search-result-score": "Ìbáramu: $1%",
        "search-redirect": "(àtúnjúwe $1)",
        "search-section": "(abala $1)",
        "search-suggest": "Ṣé ẹ fẹ́: $1",
        "uploadwarning": "Ìkìlọ̀ ìrùsókè",
        "uploadwarning-text": "Ẹ jọ̀wọ́ ẹ tún ìjúwe fáìlì ìsàlẹ̀ náà ṣe kí ẹ tó gbìyànjú lẹ́ẹ̀kan síi.",
        "savefile": "Ìmúpamọ́ fáìlì",
-       "uploadedimage": "\"[[$1]]\" ti jẹ́rírùsókè",
-       "overwroteimage": "ṣe ìrùsókè àtúnyẹ̀wò tuntun \"[[$1]]\"",
        "uploaddisabled": "Dídálẹ́kun àwọn ìrùsókè.",
        "copyuploaddisabled": "Ìdálẹ́kun ìrùsókè pẹ̀lú URL.",
        "uploaddisabledtext": "Dídálẹ́kun àwọn ìrùsókè fáìlì.",
        "watchlist-details": "{{PLURAL:$1|Ojúewé $1|Àwọn ojúewé $1}} ló wà nínú ìmójútó yín, tí a kò bá ka àwọn ojúewé ọ̀rọ̀.",
        "wlheader-enotif": "Ìfitónilétí e-mail wà ní gbígbàláyè.",
        "wlheader-showupdated": "Àwọn ojúewé tí wọn ti yípadà látìgbà tí ẹ ṣàbẹ̀wò wọn gbẹ̀yìn jẹ́ fífihàn ní ''kedere'''",
+       "wlnote": "Lábẹ́ {{PLURAL:$1|ni àtúnṣe tó gbẹ̀yìn|ni àwọn àtúnṣe '''$1''' tí wọn gbẹ̀yìn}} ní {{PLURAL:$2|wákàtí kan|wákàtí '''$2'''}} sẹ́yìn, títí dí ọjọ́ $3, $4.",
        "wlshowlast": "Ìfihàn wákàtí $1 sẹ́yìn ọjọ́ $2 sẹ́yìn $3",
        "watchlist-options": "Àṣàyàn ìmójútọ́",
        "watching": "Ó ún mójútó...",
index 821f78c..4b0d976 100644 (file)
@@ -19,7 +19,8 @@
                        "아라",
                        "Ktchankt",
                        "Kc kennylau",
-                       "Mywood"
+                       "Mywood",
+                       "Impersonator 1"
                ]
        },
        "tog-underline": "連結加底線:",
        "talkpagelinktext": "傾偈",
        "specialpage": "特別頁",
        "personaltools": "個人工具",
-       "postcomment": "新小節",
        "articlepage": "睇目錄",
        "talk": "討論",
        "views": "去睇",
        "externaldberror": "驗證資料庫出錯,或者唔允許你更新你嘅外部帳戶。",
        "login": "登入",
        "nav-login-createaccount": "登入/開新戶口",
-       "loginprompt": "你一定要開咗 cookies 先登入到{{SITENAME}}。",
        "userlogin": "登入/開新戶口",
        "userloginnocreate": "登入",
        "logout": "登出",
        "searchprofile-advanced-tooltip": "響自定空間名度搵",
        "search-result-size": "$1 ($2個字)",
        "search-result-category-size": "$1位成員 ($2個細類,$3個檔案)",
-       "search-result-score": "相關度: $1%",
        "search-redirect": "(跳轉 $1)",
        "search-section": "(小節 $1)",
        "search-suggest": "你係唔係搵: $1",
        "uploadwarning": "上載警告",
        "uploadwarning-text": "請修改下面嘅檔案描述再重試。",
        "savefile": "儲存檔案",
-       "uploadedimage": "上載咗\"[[$1]]\"",
-       "overwroteimage": "已經上載咗\"[[$1]]\"嘅新版本",
        "uploaddisabled": "上載已停用。",
        "copyuploaddisabled": "由URL嘅上載已經停用。",
        "uploaddisabledtext": "檔案上載已經停用。",
        "watchlist-details": "唔計討論頁,有 $1 版響你個監視清單度。",
        "wlheader-enotif": "電子郵件通知已經啟用。",
        "wlheader-showupdated": "'''粗體字'''嘅頁響你上次嚟之後被人改過",
+       "wlnote": "以下係最近'''$2'''個鐘之內嘅最新$1次修改。",
        "wlshowlast": "顯示最近 $1 個鐘 $2 日 $3 嘅修改",
        "watchlist-options": "監視清單選項",
        "watching": "監視緊...",
index 29bb0b0..e99e9f2 100644 (file)
        "talkpagelinktext": "Overleg",
        "specialpage": "Speciaole bladzie",
        "personaltools": "Persoônlijke instelliengen",
-       "postcomment": "Nuuw kopje toevoehen",
        "articlepage": "Bekiek 't artikel",
        "talk": "Overleg",
        "views": "Acties",
        "externaldberror": "Der is een fout opetreeën bie 't anmelden bie de database of je ei hin toestemmieng jen externe gebruker bie te werken.",
        "login": "Anmelden",
        "nav-login-createaccount": "Anmelden / Inschrieven",
-       "loginprompt": "Je mò cookies ineschaokeld ène om je te kunn'n anmelden bie {{SITENAME}}.",
        "userlogin": "Anmelden / Inschrieven",
        "logout": "Ofmelden",
        "userlogout": "Ofmelden",
        "searchprofile-advanced-tooltip": "Zoek'n in angegeev'n naemruumtes",
        "search-result-size": "$1 ({{PLURAL:$2|1 woôrd|$2 woôrn}})",
        "search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorieleden}} ({{PLURAL:$2|1 ondercategorie|$2 ondercategorieën}}, {{PLURAL:$3|1 bestand|$3 bestanden}})",
-       "search-result-score": "Rillevantie: $1%",
        "search-redirect": "(deurverwiezieng $1)",
        "search-section": "(subkop $1)",
        "search-suggest": "Bedoeln je: $1",
        "ignorewarnings": "Aolle waerschuwiengen neheern",
        "minlength1": "Bestandsnaem'n mott'n minstes eên letter bevatt'n.",
        "badfilename": "Bestandsnaem is veranderd nae \"$1\".",
-       "uploadedimage": "ei \"[[$1]]\" geüpload",
        "watchthisupload": "Volg deêze bladzie",
        "license": "Licentie:",
        "license-header": "Licentie",
index 8fd1111..055ab1b 100644 (file)
                        "Mywood",
                        "Impersonator 1",
                        "Duolaimi",
-                       "TianyinLee"
+                       "TianyinLee",
+                       "NigelSoft"
                ]
        },
        "tog-underline": "链接下划线:",
        "tog-hideminor": "隐藏最近更改中的小编辑",
        "tog-hidepatrolled": "隐藏最近更改中的已巡查编辑",
        "tog-newpageshidepatrolled": "隐藏新页面列表中的已巡查页面",
-       "tog-extendwatchlist": "扩展监视列表以显示所有更改而不仅是最近更改",
+       "tog-extendwatchlist": "扩展监视列表以显示所有更改,而不仅限于最近更改",
        "tog-usenewrc": "按页面合并最近更改和监视列表中的更改",
        "tog-numberheadings": "自动编号标题",
        "tog-showtoolbar": "显示编辑工具栏",
        "tog-editondblclick": "双击编辑页面",
-       "tog-editsectiononrightclick": "启用右击段落标题编辑段落",
-       "tog-watchcreations": "添加我创建的页面和我上传的文件至我的监视列表",
-       "tog-watchdefault": "添加我编辑的页面和文件至我的监视列表",
-       "tog-watchmoves": "添加我移动的页面和文件至我的监视列表",
-       "tog-watchdeletion": "添加我删除的页面和文件至我的监视列表",
-       "tog-watchrollback": "å½\93æ\88\91对æ\88\91ç\9a\84ç\9b\91è§\86å\88\97表æ\89§è¡\8cå\9b\9eé\80\80æ\97¶å\8a å\85¥é¡µé\9d¢",
-       "tog-minordefault": "默认标记所有编辑为小编辑",
-       "tog-previewontop": "å°\86é¢\84è§\88æ\98¾ç¤ºå\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹",
+       "tog-editsectiononrightclick": "启用右击小节标题编辑段落",
+       "tog-watchcreations": "将我创建的页面和我上传的文件添加至我的监视列表",
+       "tog-watchdefault": "将我编辑的页面和文件添加至我的监视列表",
+       "tog-watchmoves": "将我移动的页面和文件添加至我的监视列表",
+       "tog-watchdeletion": "将我删除的页面和文件添加至我的监视列表",
+       "tog-watchrollback": "å°\86æ\88\91å\9b\9eé\80\80è¿\87ç\9a\84页é\9d¢æ·»å\8a è\87³æ\88\91ç\9a\84ç\9b\91è§\86å\88\97表",
+       "tog-minordefault": "将所有编辑默认标记为小编辑",
+       "tog-previewontop": "å\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹æ\98¾ç¤ºé¢\84è§\88",
        "tog-previewonfirst": "首次编辑时显示预览",
        "tog-enotifwatchlistpages": "当我的监视列表中的页面或文件更改时发送电子邮件通知我",
        "tog-enotifusertalkpages": "当我的用户讨论页面更改时发送电子邮件通知我",
        "tog-diffonly": "不在差异下面显示页面内容",
        "tog-showhiddencats": "显示隐藏分类",
        "tog-norollbackdiff": "执行回退后不显示差异",
-       "tog-useeditwarning": "当我离开有未保存更改的编辑页面时提醒我",
+       "tog-useeditwarning": "当我离开编辑页面时,如果有尚未保存的更改,请提醒我",
        "tog-prefershttps": "登录时始终使用安全连接",
        "underline-always": "始终",
        "underline-never": "从不",
        "october-date": "10月$1日",
        "november-date": "11月$1日",
        "december-date": "12月$1日",
-       "pagecategories": "{{PLURAL:$1|分类}}",
+       "pagecategories": "{{PLURAL:$1|分类}}",
        "category_header": "分类“$1”中的页面",
        "subcategories": "子分类",
        "category-media-header": "分类“$1”中的媒体文件",
        "category-empty": "<em>本分类目前没有包含页面或媒体文件。</em>",
-       "hidden-categories": "{{PLURAL:$1|隐藏分类}}",
+       "hidden-categories": "{{PLURAL:$1|隐藏分类}}",
        "hidden-category-category": "隐藏分类",
        "category-subcat-count": "{{PLURAL:$2|本分类只有以下子分类。|本分类有以下$1个子分类,共有$2个子分类。}}",
        "category-subcat-count-limited": "本分类有以下{{PLURAL:$1|子分类|$1个子分类}}。",
-       "category-article-count": "{{PLURAL:$2|本分类只包含以下页面。|以下{{PLURAL:$1|页面|$1个页面}}属于本分类,共$2个页面。}}",
-       "category-article-count-limited": "以下{{PLURAL:$1|页面|$1个页面}}属于当前分类。",
-       "category-file-count": "{{PLURAL:$2|本分类只包含以下文件。|以下{{PLURAL:$1|文件|$1个文件}}属于本分类,共$2个文件。}}",
-       "category-file-count-limited": "以下{{PLURAL:$1|文件|$1个文件}}属于当前分类。",
+       "category-article-count": "{{PLURAL:$2|本分类只包含以下页面。|本分类中包含以下$1个页面,共$2个页面。}}",
+       "category-article-count-limited": "当前分类包含以下$1个页面。",
+       "category-file-count": "{{PLURAL:$2|本分类只包含以下一个文件。|本分类包含以下$1个文件,共$2个文件。}}",
+       "category-file-count-limited": "当前分类包含以下$1个文件。",
        "listingcontinuesabbrev": "续",
-       "index-category": "å\8f¯索引页面",
+       "index-category": "å·²索引页面",
        "noindex-category": "不可索引页面",
-       "broken-file-category": "有受损文件链接的页面",
+       "broken-file-category": "有受损文件链接的页面",
        "categoryviewer-pagedlinks": "($1)($2)",
        "about": "关于",
        "article": "内容页面",
        "faq": "常见问题",
        "faqpage": "Project:常见问题",
        "actions": "操作",
-       "namespaces": "å\90\8då­\97空间",
+       "namespaces": "å\91½å\90\8d空间",
        "variants": "变种",
        "navigation-heading": "导航菜单",
-       "errorpagetitle": "出错",
+       "errorpagetitle": "错误",
        "returnto": "返回$1。",
        "tagline": "来自{{SITENAME}}",
        "help": "帮助",
        "searcharticle": "前往",
        "history": "页面历史",
        "history_short": "历史",
-       "updatedmarker": "更新于我上次访问后",
+       "updatedmarker": "已于我上次访问之后更新",
        "printableversion": "打印版本",
        "permalink": "固定链接",
        "print": "打印",
        "deletethispage": "删除本页",
        "undeletethispage": "还原本页",
        "undelete_short": "还原$1次编辑",
-       "viewdeleted_short": "查看$1个已删除的编辑",
+       "viewdeleted_short": "查看$1个已删除的编辑",
        "protect": "保护",
        "protect_change": "更改",
        "protectthispage": "保护本页",
        "personaltools": "个人工具",
        "articlepage": "查看内容页面",
        "talk": "讨论",
-       "views": "查看",
+       "views": "视图",
        "toolbox": "工具",
        "userpage": "查看用户页面",
        "projectpage": "查看项目页面",
        "imagepage": "查看文件页面",
-       "mediawikipage": "查看息页面",
+       "mediawikipage": "查看息页面",
        "templatepage": "查看模板页面",
        "viewhelppage": "查看帮助页面",
        "categorypage": "查看分类页面",
        "watchthisupload": "监视这个文件",
        "filewasdeleted": "之前已经有一个同名文件被上传后又被删除了。在上传此文件之前您需要检查$1。",
        "filename-bad-prefix": "您上传的文件名称是以<strong>“$1”</strong>作为开头,通常这种没有含意的文件名称是由数码相机中自动编排。请在您的文件中重新选择一个更加有意义的文件名称。",
+       "filename-prefix-blacklist": " #<!-- 请将本行保留为原样 --> <pre>\n# 语法如下:\n#  * 任何以“#”开头到结尾的行为注释\n#  * 任何非空行是根据相机自动分配特定文件名的前缀\nCIMG # 卡西欧\nDSC_ # 尼康\nDSCF # 富士\nDSCN # 尼康\nDUW # 部分手机\nIMG # 一般\nJD # 业纳\nMGP # 宾得\nPICT # 其他\n #</pre> <!-- 请将本行保留为原样 -->",
        "upload-success-subj": "上传成功",
        "upload-success-msg": "您在[$2]的上传已经成功,可以在这里找到:[[:{{ns:file}}:$1]]",
        "upload-failure-subj": "上传问题",
        "shared-repo-from": "来自$1",
        "shared-repo": "一个共享文件库",
        "shared-repo-name-wikimediacommons": "维基共享资源",
+       "filepage.css": "/* 放置于此的CSS会包含在文件描述页上,并包含在其他客户端wiki上 */",
        "upload-disallowed-here": "您不可以覆盖此文件。",
        "filerevert": "恢复$1",
        "filerevert-legend": "恢复文件",
        "randomincategory": "分类中随机页面",
        "randomincategory-invalidcategory": "“$1”不是一个有效的分类名称。",
        "randomincategory-nopages": "[[:Category:$1]]中没有页面。",
-       "randomincategory-selectcategory": "获取随机页面从分类:$1 $2。",
-       "randomincategory-selectcategory-submit": "提交",
+       "randomincategory-category": "分类:",
+       "randomincategory-legend": "分内中随机页面",
        "randomredirect": "随机重定向",
        "randomredirect-nopages": "“$1”名字空间中没有重定向。",
        "statistics": "统计",
        "exbeforeblank": "被清空前的内容为:“$1”",
        "delete-confirm": "删除“$1”",
        "delete-legend": "删除",
-       "historywarning": "警告:您将要删除的页面有约$1个{{PLURAL:$1|版本}}的历史:",
+       "historywarning": "<strong>警告</strong>:您将要删除的页面有约$1次修订的历史:",
        "confirmdeletetext": "您即将删除一个页面或图像以及其历史。\n请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}]]。",
        "actioncomplete": "操作完成",
        "actionfailed": "操作失败",
        "delete-edit-reasonlist": "编辑删除原因",
        "delete-toobig": "这个页面有一个十分大量的编辑历史,超过$1个版本。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。",
        "delete-warning-toobig": "这个页面有一个十分大量的编辑历史,超过$1个版本。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。",
-       "delete-cantedit": "您不能删除此页面,因为您没有权限编辑它。",
+       "deleteprotected": "您不能删除此页面因为它被保护。",
        "deleting-backlinks-warning": "'''警告:'''有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他页面]]链接至或包含您要删除的页面。",
        "rollback": "回退编辑",
        "rollback_short": "回退",
        "restriction-level-all": "任何级别",
        "undelete": "查看被删除页面",
        "undeletepage": "查看和还原被删除的页面",
-       "undeletepagetitle": "'''以下包含[[:$1]]的已删除之版本'''。",
+       "undeletepagetitle": "'''以下包含[[:$1|$1]]的已删除之版本'''。",
        "viewdeletedpage": "查看被删页面",
        "undeletepagetext": "以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。",
        "undelete-fieldset-title": "还原版本",
        "import": "导入页面",
        "importinterwiki": "跨wiki导入",
        "import-interwiki-text": "选择要导入的wiki和页面标题,导入版本的日期和编辑者名称会被保存。所有的跨wiki导入操作都将记录到[[Special:Log/import|导入日志]]。",
-       "import-interwiki-source": "来源wiki/页面:",
+       "import-interwiki-sourcewiki": "来源wiki:",
+       "import-interwiki-sourcepage": "来源页面:",
        "import-interwiki-history": "复制此页的所有历史版本",
        "import-interwiki-templates": "包含所有模板",
        "import-interwiki-submit": "导入",
index 9078e44..f9cff93 100644 (file)
@@ -60,9 +60,9 @@
                        "NigelSoft"
                ]
        },
-       "tog-underline": "連結底線:",
+       "tog-underline": "連結顯示底線:",
        "tog-hideminor": "隱藏最近變更中的小修訂",
-       "tog-hidepatrolled": "隱藏最近更改中巡查過的編輯",
+       "tog-hidepatrolled": "隱藏最近變更中巡查過的編輯",
        "tog-newpageshidepatrolled": "隱藏新頁面清單中巡查過的頁面",
        "tog-extendwatchlist": "展開監視清單顯示包含最近以外的所有變更",
        "tog-usenewrc": "依最近變更與監視清單頁面分類顯示變更",
@@ -94,7 +94,7 @@
        "tog-watchlisthideanons": "隱藏監視清單中匿名使用者的編輯",
        "tog-watchlisthidepatrolled": "隱藏監視清單中已巡查的編輯",
        "tog-ccmeonemails": "傳送郵件給他人時,也送一份副本到我的電子郵件信箱",
-       "tog-diffonly": "比對版本差異時下面不顯示頁面內容",
+       "tog-diffonly": "比對差異時下方不顯示頁面內容",
        "tog-showhiddencats": "顯示隱藏分類",
        "tog-norollbackdiff": "執行還原後略過差異比對",
        "tog-useeditwarning": "未儲存離開編輯頁面時警告我",
        "listingcontinuesabbrev": "續",
        "index-category": "已列索引的頁面",
        "noindex-category": "未列索引的頁面",
-       "broken-file-category": "含有損壞檔案連結的頁面",
+       "broken-file-category": "檔案連結損壞的頁面",
        "about": "關於",
        "article": "內容頁面",
        "newwindow": "(以新視窗開啟)",
        "disclaimers": "免責聲明",
        "disclaimerpage": "Project:General disclaimer",
        "edithelp": "編輯説明",
-       "mainpage": "首頁",
-       "mainpage-description": "首頁",
+       "mainpage": "主頁面",
+       "mainpage-description": "主頁面",
        "policy-url": "Project:Policy",
        "portal": "社群入口",
        "portal-url": "Project:Community portal",
        "viewdeleted": "檢視 $1?",
        "restorelink": "$1 個已刪除的編輯",
        "feedlinks": "訂閱:",
-       "feed-invalid": "無效的訂閱類型。",
+       "feed-invalid": "無效的訂閱 Feed 類型。",
        "feed-unavailable": "目前未提供 RSS 或 Atom",
        "site-rss-feed": "$1 的 RSS feed",
        "site-atom-feed": "$1 的 Atom feed",
        "readonly": "資料庫已鎖定",
        "enterlockreason": "請輸入鎖定的原因,包括估計重新開放的時間",
        "readonlytext": "資料庫目前已鎖定無法新增或修改資料,\n可能正在進行例行的資料庫維修作業,完成之後即可恢復正常。\n\n鎖定資料庫的管理員說明:$1",
-       "missing-article": "資料庫查無預期的頁面文字,頁面 \"$1\" $2。\n\n通常是因您連結到了已過期(已被刪除)的差異或歷史頁面。\n\n若這不是您所遇到的情況,您可能找到了一個系統的問題。\n請記錄 URL 位址,並向 [[Special:ListUsers/sysop|管理員]] 報告此問題。",
+       "missing-article": "資料庫查無預期的頁面文字,名稱為 \"$1\" $2。\n\n通常是因您連結到了已被刪除的差異或歷史頁面。\n\n若您所遇到的不是這個情況,您可能是發現軟體問題。\n請記錄 URL 位址,並向 [[Special:ListUsers/sysop|管理員]] 回報此問題。",
        "missingarticle-rev": "(修訂#:$1)",
        "missingarticle-diff": "(差異:$1, $2)",
        "readonly_lag": "資料庫已自動鎖定,正在等候次要資料庫同步資料到主要資料庫",
        "logouttext": "<strong>您現在已登出。</strong>\n\n請注意,某些頁面會以登入的狀態持續顯示,直到您清除瀏覽器快取為止。",
        "welcomeuser": "歡迎光臨,$1!",
        "welcomecreation-msg": "您的帳號已建立。\n可至 [[Special:Preferences|偏好設定]] 更新您在 {{SITENAME}} 的個人化設定。",
-       "yourname": "用戶名:",
-       "userlogin-yourname": "用戶名",
+       "yourname": "使用者名稱:",
+       "userlogin-yourname": "使用者名稱",
        "userlogin-yourname-ph": "輸入您的使用者名稱",
        "createacct-another-username-ph": "輸入使用者名稱",
        "yourpassword": "您的密碼:",
        "userlogin-yourpassword": "密碼",
        "userlogin-yourpassword-ph": "輸入您的密碼",
        "createacct-yourpassword-ph": "輸入密碼",
-       "yourpasswordagain": "再次輸入密碼:",
+       "yourpasswordagain": "再輸入密碼一次:",
        "createacct-yourpasswordagain": "確認密碼",
        "createacct-yourpasswordagain-ph": "再次輸入密碼",
        "remembermypassword": "在瀏覽器上記住我的登入資訊 (上限 $1 {{PLURAL:$1|天}})",
        "userloginnocreate": "登入",
        "logout": "登出",
        "userlogout": "登出",
-       "notloggedin": "未登入",
+       "notloggedin": "未登入",
        "userlogin-noaccount": "沒有帳號嗎?",
        "userlogin-joinproject": "加入 {{SITENAME}}",
        "nologin": "您還沒有帳號嗎? $1。",
        "nocookiesnew": "使用者帳號已建立成功,但您尚未登入。\n要登入 {{SITENAME}} 使用者需使用 Cookies,\n您的 Cookies 未尚開啟。\n請在開啟後使用您新的使用者名稱及密碼登入。",
        "nocookieslogin": "要登入 {{SITENAME}} 使用者需使用 Cookies,\n您的 Cookies 未尚開啟。\n請在開啟後重試。",
        "nocookiesfornew": "這個使用者的帳號未建立,我們不能確認它的來源。\n請確認您已開啟 Cookie,重新載入後再試。",
-       "noname": "您輸入的用戶名無效。",
+       "noname": "您輸入的使用者名稱無效。",
        "loginsuccesstitle": "登入成功",
        "loginsuccess": "<strong>{{GENDER:|你|妳|你}}正使用 \"$1\" 的身份登入 {{SITENAME}}。</strong>",
        "nosuchuser": "查無使用者 \"$1\"。\n使用者名稱有大小寫區分,\n請檢查您拼寫是否正確,或者 [[Special:UserLogin/signup|建立新帳號]]。",
        "wrongpassword": "您輸入的密碼錯誤,請再試一次。",
        "wrongpasswordempty": "輸入的密碼是空的。\n請再試一次。",
        "passwordtooshort": "您的密碼至少需要 $1 個字元。",
-       "password-name-match": "您的密碼不可以跟用戶名相同。",
-       "password-login-forbidden": "此用戶名和密碼已被禁止使用。",
+       "password-name-match": "您的密碼不可以跟使用者名稱相同。",
+       "password-login-forbidden": "此使用者名稱和密碼已被禁止使用。",
        "mailmypassword": "重設密碼",
        "passwordremindertitle": "{{SITENAME}} 的新臨時密碼",
        "passwordremindertext": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼。\n給使用者 \"$2\" 的臨時密碼設為 \"$3\"。\n如果這個動作是您做的,您需要立即登入並設定一個新的密碼,\n您的臨時密碼將於{{PLURAL:$5|一|$5}}天內過期。\n\n如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "pt-userlogout": "登出",
        "php-mail-error-unknown": "PHP 的 mail() 函數發生不明錯誤。",
        "user-mail-no-addy": "試圖傳送沒有電子郵件位址的信件。",
-       "user-mail-no-body": "試圖寄出一個空的或異常簡短的電子郵件。",
+       "user-mail-no-body": "試圖寄出內容為空的或異常簡短的電子郵件。",
        "changepassword": "變更密碼",
        "resetpass_announce": "要完成登入,您必須設定一個新密碼。",
        "resetpass_text": "<!-- 在此處加入文字 -->",
        "passwordreset-legend": "重設密碼",
        "passwordreset-disabled": "此 Wiki 已停用重設密碼。",
        "passwordreset-emaildisabled": "此 Wiki 已停用電子郵件功能。",
-       "passwordreset-username": "用戶名:",
+       "passwordreset-username": "使用者名稱:",
        "passwordreset-domain": "網域名稱:",
        "passwordreset-capture": "檢視電子郵件內容?",
        "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並寄給使用者。",
        "passwordreset-emailtext-user": "使用者 $1 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailelement": "使用者名稱:$1\n臨時密碼:$2",
        "passwordreset-emailsent": "已寄出重設密碼的電子郵件。",
-       "passwordreset-emailsent-capture": "已寄出重設密碼的電子郵件,並在下面顯示。",
-       "passwordreset-emailerror-capture": "產生的重設密碼的電子郵件如下所示,但傳送給{{GENDER:$2|使用者}}失敗:$1",
+       "passwordreset-emailsent-capture": "已寄出重設密碼的電子郵件,並於下方顯示。",
+       "passwordreset-emailerror-capture": "下列為重設密碼的電子郵件內容,傳送給{{GENDER:$2|使用者}}失敗:$1",
        "changeemail": "變更電子郵件位址",
        "changeemail-header": "變更帳號的電子郵件位址",
-       "changeemail-text": "填寫表格以修æ\94¹æ\82¨ç\9a\84é\9b»å­\90é\83µä»¶ä½\8då\9d\80ã\80\82æ\82¨é\9c\80è¦\81輸å\85¥å¯\86碼以確認此次變更。",
+       "changeemail-text": "å®\8cæ\88\90此表å\96®ä»¥ä¿®æ\94¹æ\82¨ç\9a\84é\9b»å­\90é\83µä»¶ä½\8då\9d\80ï¼\8cæ\82¨é\9c\80è¦\81輸å\85¥æ\82¨ç\9a\84å¯\86碼ä¾\86確認此次變更。",
        "changeemail-no-info": "您必須登入方可直接存取此頁面。",
        "changeemail-oldemail": "目前的電子郵件位址:",
        "changeemail-newemail": "新的電子郵件位址:",
        "parser-template-recursion-depth-warning": "超出樣版遞迴深度限制 ($1)",
        "language-converter-depth-warning": "已超出語言轉換器深度限制 ($1)",
        "node-count-exceeded-category": "節點數量超出限制的頁面",
-       "node-count-exceeded-category-desc": "這個頁面超出最大節點數",
+       "node-count-exceeded-category-desc": "超出節點數量限制的頁面。",
        "node-count-exceeded-warning": "頁面超出節點數量限制",
        "expansion-depth-exceeded-category": "展開深度超出限制的頁面",
-       "expansion-depth-exceeded-category-desc": "頁面超出顯示範圍",
+       "expansion-depth-exceeded-category-desc": "超出展開深度限制的頁面。",
        "expansion-depth-exceeded-warning": "頁面超出展開深度限制",
        "parser-unstrip-loop-warning": "偵測到 Unstrip 迴圈",
        "parser-unstrip-recursion-limit": "Unstrip 遞迴超出限制 ($1)",
        "history-feed-item-nocomment": "$1 於 $2",
        "history-feed-empty": "請求的頁面不存在,\n可能已被刪除或重新命名。\n請嘗試 [[Special:Search|搜尋本站]] 取得其他相關的新頁面。",
        "rev-deleted-comment": "(已移除編輯摘要)",
-       "rev-deleted-user": "(已移除用戶名)",
+       "rev-deleted-user": " (已移除使用者名稱)",
        "rev-deleted-event": "(已移除日誌)",
        "rev-deleted-user-contribs": "[使用者名稱或 IP 位址已移除 - 已隱藏貢獻清單中的編輯]",
        "rev-deleted-text-permission": "此頁面修訂已被 <strong>刪除</strong>。\n可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資訊。",
        "revdelete-text-text": "已刪除的修訂仍會出現於頁面歷史中,但內容將不開放存取。",
        "revdelete-text-file": "已刪除的檔案版本仍會出現於檔案歷史中,但內容將不開放存取。",
        "logdelete-text": "已刪除的日誌活動仍會出現於日誌中,但內容將不開放存取。",
-       "revdelete-text-others": "其他管理員仍有權限檢視隱藏的內容,且能夠取消刪除,除非有額外的設定限制。",
+       "revdelete-text-others": "若未有額外的設定限制,其他管理員仍有權限檢視與取消刪除隱藏的內容。",
        "revdelete-confirm": "請確認您是否明白此動作會造成的後果,\n以及您所做的動作是否符合 [[{{MediaWiki:Policy-url}}|政策]] 規範。",
        "revdelete-suppress-text": "禁制顯示應<strong>只有</strong>在下述情形時使用:\n* 潛在誹謗的資訊\n* 不合適個人資料\n*: <em>住家地址、電話號碼、身分證字號等。</em>",
        "revdelete-legend": "設定顯示限制",
        "mergehistory-submit": "合併修訂",
        "mergehistory-empty": "沒有可以合併的修訂",
        "mergehistory-success": "[[:$1]] 中 $3 次修訂已經成功地合併至 [[:$2]]。",
-       "mergehistory-fail": "不可以進行歷史合併,請重新檢查該頁面以及時間參數。",
-       "mergehistory-fail-toobig": "由於超出$1個合併移動版本的上限,故此無法進行歷史合併。",
+       "mergehistory-fail": "無法進行歷史合併,請重新檢查該頁面及時間參數。",
+       "mergehistory-fail-toobig": "超過 $1 個修訂移動的上限,無法進行歷史合併。",
        "mergehistory-no-source": "來源頁面 $1 不存在。",
        "mergehistory-no-destination": "目標頁面 $1 不存在。",
        "mergehistory-invalid-source": "來源頁面必須使用有效的標題。",
        "showhideselectedversions": "更改已選擇修訂的顯示設定",
        "editundo": "還原",
        "diff-empty": "(無差異)",
-       "diff-multi-sameuser": "(未顯示相同使用者於中間所作的 $1 次修訂)",
+       "diff-multi-sameuser": "(未顯示同一使用者於中間所作的 $1 次修訂)",
        "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)",
        "diff-multi-manyusers": "(未顯示由超過 $2 位使用者於中間所作的 $1 次修訂)",
-       "difference-missing-revision": "{{PLURAL:$2|1次修訂|$2 次修訂}}差異($1)不存在。\n\n這通常是因為過時的頁面修訂差異連結被刪除。\n詳情請閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
+       "difference-missing-revision": "查無此差異 ($1) 中的{{PLURAL:$2|1 次修訂|$2 次修訂}}。\n\n這通常是因為差異的連結過時,頁面已被刪除。\n詳情資訊請參閱 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
        "searchresults": "搜尋結果",
        "searchresults-title": "\"$1\" 的搜尋結果",
        "titlematches": "頁面標題符合",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
        "prefs-help-recentchangescount": "這包含最近變更、頁面歷史以及日誌。",
-       "prefs-help-watchlist-token2": "è¨\82é\96±æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®æ\89\80é\9c\80ç\9a\84å¯\86é\91°ã\80\82\nä»»ä½\95人å\8fªè¦\81ç\9f¥é\81\93å¯\86é\91°å°±è\83½å¤ è®\80å\8f\96æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\8d\95,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
-       "savedprefs": "您的偏好設定已儲存。",
+       "prefs-help-watchlist-token2": "è¨\82é\96±æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®æ\89\80é\9c\80ç\9a\84å¯\86é\91°ã\80\82\nä»»ä½\95人å\8fªè¦\81ç\9f¥é\81\93å¯\86é\91°å°±è\83½å¤ è®\80å\8f\96æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
+       "savedprefs": "已儲存您的偏好設定。",
        "timezonelegend": "時區:",
        "localtime": "當地時間:",
        "timezoneuseserverdefault": "使用 Wiki 預設值 ($1)",
        "prefs-help-variant": "您希望用於顯示本站內容的語種或拼寫語系。",
        "yournick": "新的簽名:",
        "prefs-help-signature": "在對話頁面上評論時應使用 \"<nowiki>~~~~</nowiki>\" 簽名,\n該符號會轉換成您的簽名與時間。",
-       "badsig": "錯誤的原始簽名。請檢查HTML標籤。",
-       "badsiglength": "您的簽名過長。\n它的長度不可超過$1個字元。",
+       "badsig": "錯誤的原始簽名。請檢查 HTML 標籤。",
+       "badsiglength": "您的簽名過長。\n它的長度不可超過 $1 個字元。",
        "yourgender": "您希望如何被描述?",
        "gender-unknown": "我不想說明",
        "gender-male": "他編輯了 Wiki 頁面",
        "prefs-tokenwatchlist": "密鑰",
        "prefs-diffs": "差異",
        "prefs-help-prefershttps": "此偏好設定將於您下次登入時生效。",
-       "prefs-tabs-navigation-hint": "提示:您可通過左、右鍵於選項卡之間切換。",
+       "prefs-tabs-navigation-hint": "提示:您可使用左、右方向鍵切換頁籤。",
        "email-address-validity-valid": "電子郵件位址有效",
-       "email-address-validity-invalid": "請提供一個有效的電子郵件位址",
+       "email-address-validity-invalid": "請輸入一個有效的電子郵件位址",
        "userrights": "使用者權限管理",
        "userrights-lookup-user": "管理使用者群組",
-       "userrights-user-editname": "輸入使用者名稱:",
+       "userrights-user-editname": "è«\8b輸å\85¥ä½¿ç\94¨è\80\85å\90\8d稱ï¼\9a",
        "editusergroup": "編輯使用者群組",
        "editinguser": "變更使用者 <strong>[[User:$1|$1]]</strong> 的使用者權限 $2",
        "userrights-editusergroup": "編輯使用者群組",
        "userrights-no-interwiki": "您沒有權限去編輯其它使用者在 Wiki 上的權限。",
        "userrights-nodatabase": "資料庫 $1 不存在或不在本地主機的。",
        "userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳號以指定使用者權限。",
-       "userrights-notallowed": "你無權加入或刪除使用者權限。",
+       "userrights-notallowed": "您沒有權限加入或刪除使用者權限。",
        "userrights-changeable-col": "您可變更的群組",
        "userrights-unchangeable-col": "您不可變更的群組",
        "userrights-conflict": "使用者權限更改發生衝突!請重新檢視並確認你的更改。",
-       "userrights-removed-self": "æ\82¨å·²æ\88\90å\8a\9f移é\99¤è\87ªå·±ç\9a\84æ¬\8aé\99\90ï¼\8cæ\95\85æ­¤æ\82¨ç\84¡æ³\95å\86\8d次å­\98å\8f\96æ­¤é \81。",
+       "userrights-removed-self": "æ\82¨å·²æ\88\90å\8a\9f移é\99¤è\87ªå·±ç\9a\84æ¬\8aé\99\90ï¼\8cæ\82¨å·²ç\84¡æ³\95å\86\8d次å­\98å\8f\96æ­¤é \81é\9d¢。",
        "group": "群組:",
        "group-user": "使用者",
-       "group-autoconfirmed": "自動確認使用者",
+       "group-autoconfirmed": "自動確認使用者",
        "group-bot": "機器人",
        "group-sysop": "管理員",
        "group-bureaucrat": "行政員",
-       "group-suppress": "監督",
+       "group-suppress": "監督",
        "group-all": "(全部)",
        "group-user-member": "{{GENDER:$1|使用者}}",
        "group-autoconfirmed-member": "自動確認使用者",
        "right-deletedtext": "檢視已刪除修訂中已刪除的文字及變更",
        "right-browsearchive": "搜尋已刪除的頁面",
        "right-undelete": "取消刪除頁面",
-       "right-suppressrevision": "檢視、隱藏與還原某使用者對頁面的特定修訂",
-       "right-viewsuppressed": "檢è¦\96æ\9f\90使ç\94¨è\80\85é\9a±è\97\8fç\9a\84修訂",
+       "right-suppressrevision": "檢視、隱藏與取消隱藏任何使用者對頁面的修訂",
+       "right-viewsuppressed": "檢è¦\96æ\89\80æ\9c\89使ç\94¨è\80\85ç\9a\84é\9a±è\97\8f修訂",
        "right-suppressionlog": "檢視非公開日誌",
        "right-block": "封鎖其他使用者的編輯權限",
-       "right-blockemail": "封鎖使用者傳送電子郵件的權限",
+       "right-blockemail": "封鎖使用者傳送電子郵件",
        "right-hideuser": "封鎖使用者名稱,避免公開顯示",
        "right-ipblock-exempt": "略過 IP 封鎖、自動封鎖及範圍封鎖檢查",
        "right-proxyunbannable": "略過 Proxy 自動封鎖檢查",
        "right-import": "由其他 Wiki 匯入頁面",
        "right-importupload": "由檔案上傳匯入頁面",
        "right-patrol": "標示其他人的編輯爲已巡查",
-       "right-autopatrol": "將自己的編輯自動標示為已巡查",
+       "right-autopatrol": "將自己的編輯自動標示為已巡查",
        "right-patrolmarks": "檢視最近變更的巡查標記",
        "right-unwatchedpages": "檢視未監視的頁面",
        "right-mergehistory": "合併頁面歷史",
        "action-mergehistory": "合併此頁面的歷史",
        "action-userrights": "編輯所有使用者的權限",
        "action-userrights-interwiki": "編輯在其它 Wiki 上的使用者權限",
-       "action-siteadmin": "鎖定解除鎖定資料庫",
+       "action-siteadmin": "鎖定解除鎖定資料庫",
        "action-sendemail": "傳送電子郵件",
        "action-editmywatchlist": "編輯您的監視清單",
        "action-viewmywatchlist": "檢視您的監視清單",
-       "action-viewmyprivateinfo": "檢視您的個人資",
-       "action-editmyprivateinfo": "編輯您的個人資",
+       "action-viewmyprivateinfo": "檢視您的個人資",
+       "action-editmyprivateinfo": "編輯您的個人資",
        "nchanges": "$1 次變更",
        "enhancedrc-since-last-visit": "自上次訪問已有 $1",
        "enhancedrc-history": "歷史",
        "uploadbtn": "上傳檔案",
        "reuploaddesc": "取消上傳並返回上傳表單",
        "upload-tryagain": "送出修改後的檔案描述",
-       "uploadnologin": "未登入",
+       "uploadnologin": "未登入",
        "uploadnologintext": "您必須先 $1 才能上傳檔案。",
        "upload_directory_missing": "缺少上傳目錄 ($1) 且網頁伺服器沒有權限建立。",
        "upload_directory_read_only": "網頁伺服器沒有上傳目錄 ($1) 的寫入權限。",
        "uploadlogpage": "上傳日誌",
        "uploadlogpagetext": "以下清單為最近上傳的檔案。\n請檢視 [[Special:NewFiles|最新檔案圖庫]] 以視覺化的方式檢視。",
        "filename": "檔案名稱",
-       "filedesc": "æª\94æ¡\88æ\91\98è¦\81",
-       "fileuploadsummary": "æª\94æ¡\88æ\91\98è¦\81ï¼\9a",
+       "filedesc": "摘要",
+       "fileuploadsummary": "摘要:",
        "filereuploadsummary": "檔案變更:",
        "filestatus": "版權狀態:",
        "filesource": "來源:",
        "watchthisupload": "監視此檔案",
        "filewasdeleted": "先前已有同樣名稱的檔案上傳,後來被刪除。\n您應在上傳此檔案前檢查 $1。",
        "filename-bad-prefix": "您上傳的檔案名稱以 <strong>\"$1\"</strong> 開頭,是不具任何描述意義的名稱,通常由數位相機自動產生。\n請替您的檔案使用一個更具描述意義的名稱。",
-       "upload-success-subj": "上傳成功",
+       "upload-success-subj": "成功上傳",
        "upload-success-msg": "您已成功使用 [$2] 上傳檔案,可於此處取得檔案:[[:{{ns:file}}:$1]]",
        "upload-failure-subj": "上傳問題",
        "upload-failure-msg": "您使用 [$2] 上傳的檔案發生問題:\n\n$1",
        "licenses-edit": "編輯授權條款選項",
        "license-nopreview": "(不可預覽)",
        "upload_source_url": "(您選擇的檔案來自有效,可公開存取的 URL)",
-       "upload_source_file": "(在您電腦上您選擇的檔案)",
+       "upload_source_file": "(您在您的電腦上選擇的檔案)",
        "listfiles-delete": "刪除",
-       "listfiles-summary": "此特殊頁面顯示所有上傳過的檔案。",
+       "listfiles-summary": "此特殊頁面顯示所有已上傳的檔案。",
        "listfiles_search_for": "搜尋媒體名稱:",
        "imgfile": "檔案",
        "listfiles": "檔案列表",
        "filehist-user": "使用者",
        "filehist-dimensions": "尺寸",
        "filehist-filesize": "檔案大小",
-       "filehist-comment": "註解",
+       "filehist-comment": "備註",
        "imagelinks": "檔案用途",
        "linkstoimage": "下列 {{PLURAL:$1|頁面連結|$1 個頁面連結}}到此檔案:",
-       "linkstoimage-more": "超過$1個{{PLURAL:$1|頁面連結|頁面連結}}到這個檔案。\n此處只列出{{PLURAL:$1|首個連結|首$1個連結}}到此檔案的頁面。\n您也可以檢視[[Special:WhatLinksHere/$2|完整的清單]]。",
-       "nolinkstoimage": "沒有頁面連接到本檔案。",
+       "linkstoimage-more": "超過 $1 個{{PLURAL:$1|頁面連結|頁面連結}}到此檔案。\n下列清單只列出前 {{PLURAL:$1|1 筆連結|$1 筆連結}}到此檔案的頁面。\n您也可以檢視 [[Special:WhatLinksHere/$2|完整清單]]。",
+       "nolinkstoimage": "沒有頁面連結到此檔案。",
        "morelinkstoimage": "檢視連結到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。",
        "linkstoimage-redirect": "$1 (檔案重新導向) $2",
        "duplicatesoffile": "以下 $1 個檔案與此檔案重覆 ([[Special:FileDuplicateSearch/$2|了解詳細資訊]]):",
        "download": "下載",
        "unwatchedpages": "未監視的頁面",
        "listredirects": "重新導向頁面清單",
-       "listduplicatedfiles": "重複檔案列表",
-       "listduplicatedfiles-summary": "以下列表中某檔案之最新版本與其他檔案之最新版本重複。進包含本地檔案",
+       "listduplicatedfiles": "重複檔案清單",
+       "listduplicatedfiles-summary": "此清單中包含最新版本的檔案與其他檔案重複的清單,本清單只顯示本地檔案。",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] 有[[$3|其他 $2 個重複檔案]]。",
        "unusedtemplates": "未使用的樣版",
        "unusedtemplatestext": "此頁面列出所有於 {{ns:template}} 命名空間下未被其他頁面引用的樣版。\n在刪除前,仍需檢查是否有連結這些樣版的其他頁面。",
        "unusedtemplateswlh": "其他連結",
        "randompage": "隨機頁面",
        "randompage-nopages": "在{{PLURAL:$2|命名空間}}中沒有任何頁面:$1。",
-       "randomincategory": "分類中的隨機頁面",
+       "randomincategory": "隨機分類頁面",
        "randomincategory-invalidcategory": "\"$1\" 不是一個有效的分類名稱。",
-       "randomincategory-nopages": "[[:Category:$1]]中沒有頁面。",
-       "randomincategory-selectcategory": "從分類中獲取隨機頁面:$1 $2",
-       "randomincategory-selectcategory-submit": "執行",
+       "randomincategory-nopages": "[[:Category:$1]] 中沒有任何頁面。",
+       "randomincategory-category": "分類:",
+       "randomincategory-legend": "隨機分類頁面",
        "randomredirect": "隨機重新導向",
        "randomredirect-nopages": "在命名空間 \"$1\" 中沒有任何重新導向頁面。",
        "statistics": "統計",
        "statistics-articles": "內容頁面",
        "statistics-pages": "頁面",
        "statistics-pages-desc": "在 Wiki 上所有的頁面,包括對話頁面、重新導向頁面等。",
-       "statistics-files": "已上傳的檔案",
+       "statistics-files": "已上傳的檔案",
        "statistics-edits": "自 {{SITENAME}} 成立以來的頁面編輯數",
        "statistics-edits-average": "每頁平均編輯數",
        "statistics-views-total": "檢視總數",
-       "statistics-views-total-desc": "ä¸\8då­\98å\9c¨é \81é\9d¢å\92\8cç\89¹æ®\8aé \81é\9d¢ç\9a\84æ\9f¥ç\9c\8bæ\95¸æ\9cªè¨\88å\85¥",
+       "statistics-views-total-desc": "ä¸\8då\8c\85å\90«ä¸\8då­\98å\9c¨é \81é\9d¢è\88\87ç\89¹æ®\8aé \81é\9d¢ç\9a\84檢è¦\96æ\95¸",
        "statistics-views-peredit": "每次編輯檢視數",
        "statistics-users": "已註冊的 [[Special:ListUsers|使用者]]",
        "statistics-users-active": "活動使用者",
        "statistics-users-active-desc": "在最近 $1 天操作過的使用者",
-       "statistics-mostpopular": "被查閱次數最多的頁面",
+       "statistics-mostpopular": "檢視最多次的頁面",
        "pageswithprop": "擁有屬性的頁面",
-       "pageswithprop-legend": "有頁面屬性的頁面",
+       "pageswithprop-legend": "æ\93\81æ\9c\89é \81é\9d¢å±¬æ\80§ç\9a\84é \81é\9d¢",
        "pageswithprop-text": "此頁面用來查詢使用了指定屬性的頁面。",
        "pageswithprop-prop": "屬性名稱:",
        "pageswithprop-submit": "執行",
        "brokenredirectstext": "以下的重新導向頁面連結的頁面不存在:",
        "brokenredirects-edit": "編輯",
        "brokenredirects-delete": "刪除",
-       "withoutinterwiki": "未有語言連結的頁面",
+       "withoutinterwiki": "語言連結的頁面",
        "withoutinterwiki-summary": "下列是沒有連結到其它語言版本的頁面。",
        "withoutinterwiki-legend": "字首",
        "withoutinterwiki-submit": "顯示",
        "specialpage-empty": "此報表無查無任何結果。",
        "lonelypages": "孤立頁面",
        "lonelypagestext": "下列頁面尚未被 {{SITENAME}} 中的其它頁面連結或引用。",
-       "uncategorizedpages": "待分類頁面",
-       "uncategorizedcategories": "待分類類別",
-       "uncategorizedimages": "待分類檔案",
+       "uncategorizedpages": "未分類的頁面",
+       "uncategorizedcategories": "未分類的分類",
+       "uncategorizedimages": "未分類的檔案",
        "uncategorizedtemplates": "待分類樣版",
        "unusedcategories": "未使用的分類",
        "unusedimages": "未使用的檔案",
-       "popularpages": "ç\86±é»\9e頁面",
+       "popularpages": "ç\86±é\96\80頁面",
        "wantedcategories": "需要的分類",
        "wantedpages": "需要的頁面",
-       "wantedpages-badtitle": "在結果組上的無效標題: $1",
+       "wantedpages-badtitle": "結果集合中的標題無效:$1",
        "wantedfiles": "需要的檔案",
-       "wantedfiletext-cat": "以ä¸\8bæª\94æ¡\88被使ç\94¨ï¼\8cä½\86ä¸\8då­\98å\9c¨ã\80\82å¤\96é\83¨å\84²å­\98庫ç\9a\84æª\94æ¡\88å\84\98管ç\8f¾æ\9c\89ï¼\8cä½\86å\8f¯è\83½æ\9c\83å\9c¨æ­¤å\88\97å\87ºï¼\8cä»»ä½\95æ­¤é¡\9eç\9a\84誤報å°\87被<del>å\89\94é\99¤</del>ã\80\82æ­¤å¤\96ï¼\8cå\85§åµ\8cäº\86ä¸\8då­\98å\9c¨ç\9a\84æª\94æ¡\88ç\9a\84網é \81å°\87å\9c¨[[:$1]]å\88\97å\87ºã\80\82",
+       "wantedfiletext-cat": "ä¸\8bå\88\97æª\94æ¡\88被æ\99\82ç\94¨ï¼\8cä½\86æª\94æ¡\88ä¸\8då­\98å\9c¨ã\80\82 å¤\96é\83¨å\84²å­\98庫ç\9a\84æª\94æ¡\88å\84\98管å­\98å\9c¨ï¼\8cä½\86æ­¤æ¸\85å\96®ä»\8dæ\9c\83å\88\97å\87ºã\80\82 é\80\99é¡\9e誤報ç\9a\84é \85ç\9b®æ\9c\83以 <del>å\88ªé\99¤ç·\9a</del> æ¨\99示ã\80\82 å\8f¦å¤\96ï¼\8cé \81é\9d¢å\85§åµ\8cæª\94æ¡\88ä¸\8då­\98å\9c¨æ\9c\83æ\96¼æ¸\85å\96® [[:$1]] ä¸­é¡¯ç¤ºã\80\82",
        "wantedfiletext-cat-noforeign": "下列檔案已被使用但不存在。 除此之外,頁面已內嵌但不存在的檔案列於 [[:$1]]。",
-       "wantedfiletext-nocat": "以ä¸\8bæª\94æ¡\88被使ç\94¨ï¼\8cä½\86ä¸\8då­\98å\9c¨ã\80\82å¤\96é\83¨å\84²å­\98庫ç\9a\84æ\96\87件å\84\98管ç\8f¾æ\9c\89ï¼\8cä½\86å\8f¯è\83½æ\9c\83å\9c¨æ­¤å\88\97å\87ºï¼\8cä»»ä½\95æ­¤é¡\9eç\9a\84誤報å°\87被<del>å\89\94é\99¤</del>。",
+       "wantedfiletext-nocat": "ä¸\8bå\88\97æª\94æ¡\88被æ\99\82ç\94¨ï¼\8cä½\86æª\94æ¡\88ä¸\8då­\98å\9c¨ã\80\82 å¤\96é\83¨å\84²å­\98庫ç\9a\84æª\94æ¡\88å\84\98管å­\98å\9c¨ï¼\8cä½\86æ­¤æ¸\85å\96®ä»\8dæ\9c\83å\88\97å\87ºã\80\82 é\80\99é¡\9e誤報ç\9a\84é \85ç\9b®æ\9c\83以 <del>å\88ªé\99¤ç·\9a</del> æ¨\99示。",
        "wantedfiletext-nocat-noforeign": "下列檔案已被使用但不存在。",
        "wantedtemplates": "需要的樣版",
-       "mostlinked": "最多連結頁面",
-       "mostlinkedcategories": "最多連結分類",
+       "mostlinked": "被連結最多的頁面",
+       "mostlinkedcategories": "被連結最多的分類",
        "mostlinkedtemplates": "被引用最多的頁面",
-       "mostcategories": "最多分類頁面",
-       "mostimages": "最多連結檔案",
+       "mostcategories": "最多分類頁面",
+       "mostimages": "被連結最多的檔案",
        "mostinterwikis": "最多 Interwiki 連結的頁面",
-       "mostrevisions": "最多修訂頁面",
+       "mostrevisions": "最多修訂頁面",
        "prefixindex": "所有頁面與字首",
        "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
        "prefixindex-strip": "於清單中省略字首",
        "protectedpages-summary": "此頁面列出目前受保護的頁面。 欲查詢受保護標題清單,請參考 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]。",
        "protectedpages-cascade": "只顯示連鎖的保護頁面",
        "protectedpages-noredirect": "隱藏重新導向頁面",
-       "protectedpagesempty": "在這些參數下沒有頁面正在保護。",
+       "protectedpagesempty": "目前沒有使用這些參數的受保護頁面。",
        "protectedpages-timestamp": "日期時間",
        "protectedpages-page": "頁面",
        "protectedpages-expiry": "期限",
        "protectedpages-unknown-performer": "不明的使用者",
        "protectedtitles": "受保護標題",
        "protectedtitles-summary": "此頁面列出目前受保護的標題。 欲查詢受保護頁面清單,請參考 [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]。",
-       "protectedtitlesempty": "在這些參數之下並無標題正在保護。",
+       "protectedtitlesempty": "目前沒有使用這些參數的受保護標題。",
        "listusers": "使用者清單",
        "listusers-editsonly": "只顯示有編輯的使用者",
        "listusers-creationsort": "依建立日期排序",
        "usereditcount": "$1 次{{PLURAL:$1|編輯}}",
        "usercreated": "於 $1 $2 {{GENDER:$3|建立}}",
        "newpages": "最新頁面",
-       "newpages-username": "用戶名:",
+       "newpages-username": "使用者名稱:",
        "ancientpages": "最舊頁面",
        "move": "移動",
-       "movethispage": "移å\8b\95æ\9c¬é \81",
+       "movethispage": "移å\8b\95æ­¤é \81é\9d¢",
        "unusedimagestext": "下列為未被任何頁面使用的檔案。\n請注意,其它網站可能直接透過 URL 連結至檔案,所以這裡列出的檔案仍有可能被使用。",
        "unusedcategoriestext": "下列分類沒有被其它頁面或者分類所使用。",
        "notargettitle": "無目標",
        "notargettext": "您尚未指定目標頁面或使用者以進行此項操作。",
-       "nopagetitle": "目標頁面",
+       "nopagetitle": "沒有此目標頁面",
        "nopagetext": "您所指定的目標頁面並不存在。",
        "pager-newer-n": "較新 $1 筆",
        "pager-older-n": "較舊 $1 筆",
        "suppress": "監督",
-       "querypage-disabled": "æ­¤ç\89¹æ®\8aé \81é\9d¢å\9fºæ\96¼æ\95\88è\83½ç\9a\84å\8e\9få\9b å·²ç¶\93被停用。",
+       "querypage-disabled": "æ­¤ç\89¹æ®\8aé \81é\9d¢å\9b è\80\83é\87\8fæ\95\88è\83½å\95\8fé¡\8cå·²被停用。",
        "booksources": "圖書資源",
        "booksources-search-legend": "尋找圖書資源",
        "booksources-isbn": "國際標準書號:",
        "booksources-go": "執行",
-       "booksources-text": "以ä¸\8bæ\98¯ä¸\80份é\8a·å\94®æ\96°æ\9b¸æ\88\96äº\8cæ\89\8bæ\9b¸ç\9a\84å\88\97表ï¼\8c並å\8f¯è\83½æ\9c\89{{GENDER:|ä½ |妳|ä½ }}æ­£å°\8bæ\89¾ç\9a\84æ\9b¸ç\9a\84é\80²ä¸\80æ­¥è¨\8aæ\81¯:",
-       "booksources-invalid-isbn": "æ\8f\90ä¾\9bç\9a\84ISBNè\99\9f碼並ä¸\8d正確ï¼\8cè«\8b檢æ\9f¥å\8e\9få§\8bè¤\87製ä¾\86æº\90è\99\9f碼是否有誤。",
-       "specialloguserlabel": "操作者:",
+       "booksources-text": "ä¸\8bå\88\97æ¸\85å\96®å\8c\85å\90«å\85¶ä»\96é\8a·å\94®æ\96°æ\9b¸ç±\8dæ\88\96äº\8cæ\89\8bæ\9b¸ç±\8dç\9a\84網ç«\99é\80£çµ\90ï¼\8cå\8f¯æ\9c\83æ\9c\89ä½ æ\83³å°\8bæ\89¾æ\9b¸ç±\8dç\9a\84é\80²ä¸\80é\83¨è³\87è¨\8a:",
+       "booksources-invalid-isbn": "æ\82¨æ\8f\90ä¾\9bç\9a\84 ISBN ä¸\8d正確ï¼\8cè«\8b檢æ\9f¥è¤\87製ç\9a\84ä¾\86æº\90是否有誤。",
+       "specialloguserlabel": "執行者:",
        "speciallogtitlelabel": "目標 (標題或使用者):",
        "log": "日誌",
        "all-logs-page": "所有公開日誌",
        "allpages": "所有頁面",
        "nextpage": "下一頁 ($1)",
        "prevpage": "上一頁 ($1)",
-       "allpagesfrom": "顯示從此處開始的頁面:",
-       "allpagesto": "顯示從此處結束的頁面:",
+       "allpagesfrom": "顯示頁面開始於:",
+       "allpagesto": "顯示頁面結束於:",
        "allarticles": "所有頁面",
        "allinnamespace": "所有頁面 ($1 命名空間)",
        "allpagessubmit": "執行",
        "allpagesbadtitle": "指定的頁面標題無效、包含內部語言或內部 Wiki 的字首。\n它可能包含一個或多個的不能用於標題的字元。",
        "allpages-bad-ns": "{{SITENAME}} 沒有 \"$1\" 命名空間。",
        "allpages-hide-redirects": "隱藏重新導向頁面",
-       "cachedspecial-viewing-cached-ttl": "你正在瀏覽本頁的緩存版本,至多可能存在$1的延遲。",
-       "cachedspecial-viewing-cached-ts": "您正在閱讀此頁的緩存版本,這可能不是完整的版本。",
-       "cachedspecial-refresh-now": "檢視最新。",
-       "categories": "頁面分類",
+       "cachedspecial-viewing-cached-ttl": "你正在檢視此頁面的快取版本,最多會有 $1 的延遲。",
+       "cachedspecial-viewing-cached-ts": "你正在檢視此頁面的快取版本,可能不完全與實際相同。",
+       "cachedspecial-refresh-now": "檢視最新版本。",
+       "categories": "分類",
        "categoriespagetext": "下列為包含頁面或媒體的{{PLURAL:$1|分類}}。\n[[Special:UnusedCategories|未使用的分類]] 不會在此顯示。\n請參考 [[Special:WantedCategories|需要的分類]]。",
-       "categoriesfrom": "顯示由此項起之分類:",
-       "special-categories-sort-count": "數量排列",
-       "special-categories-sort-abc": "字母排列",
+       "categoriesfrom": "顯示分類開始於:",
+       "special-categories-sort-count": "數量排列",
+       "special-categories-sort-abc": "字母排列",
        "deletedcontributions": "已刪除的使用者貢獻",
        "deletedcontributions-title": "已刪除的使用者貢獻",
        "sp-deletedcontributions-contribs": "貢獻",
        "linksearch": "外部連結搜尋",
-       "linksearch-pat": "搜尋網址:",
+       "linksearch-pat": "搜尋關鍵字:",
        "linksearch-ns": "命名空間:",
        "linksearch-ok": "搜尋",
        "linksearch-text": "可使用萬用字元如 \"*.wikipedia.org\"。\n萬用字元必須使用在最上層網域,例如 \"*.org\".<br />\n支援的{{PLURAL:$2|通訊協定|通訊協定}}有:<code>$1</code> (若未指定則預設使用 http:// 通訊協定)。",
-       "linksearch-line": "$1 連自 $2",
+       "linksearch-line": "$1 由 $2 所連結",
        "linksearch-error": "萬用字元僅可在主機名稱的開頭使用。",
        "listusersfrom": "顯示使用者開始自:",
        "listusers-submit": "顯示",
        "listgrouprights-key": "說明:\n* <span class=\"listgrouprights-granted\">已授予的權限</span>\n* <span class=\"listgrouprights-revoked\">已撤銷的權限</span>",
        "listgrouprights-group": "群組",
        "listgrouprights-rights": "權限",
-       "listgrouprights-helppage": "Help:群組權限",
+       "listgrouprights-helppage": "Help:Group rights",
        "listgrouprights-members": "(成員清單)",
-       "listgrouprights-addgroup": "加入的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-removegroup": "移除的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-addgroup": "加入{{PLURAL:$2|群組|群組}}:$1",
+       "listgrouprights-removegroup": "移除{{PLURAL:$2|群組|群組}}:$1",
        "listgrouprights-addgroup-all": "加入所有群組",
        "listgrouprights-removegroup-all": "移除所有群組",
        "listgrouprights-addgroup-self": "在自己的帳號中加入的{{PLURAL:$2|一個|多個}}群組: $1",
        "listgrouprights-namespaceprotection-header": "命名空間限制",
        "listgrouprights-namespaceprotection-namespace": "命名空間",
        "listgrouprights-namespaceprotection-restrictedto": "允許使用者編輯的權限",
-       "trackingcategories": "è·\9f蹤分類",
+       "trackingcategories": "追蹤分類",
        "trackingcategories-summary": "此頁面列出由 MediaWiki 系統自動產生用來追蹤頁面的分類,這些分類的名稱可由命名空間 {{ns:8}} 中的相關系統訊息中修改。",
-       "trackingcategories-msg": "è·\9f蹤分類",
+       "trackingcategories-msg": "追蹤分類",
        "trackingcategories-name": "訊息名稱",
-       "trackingcategories-desc": "å\88\86é¡\9eæ\94¶é\8c\84æº\96å\89\87",
+       "trackingcategories-desc": "å\88\86é¡\9eæ\94¶é\8c\84æ¨\99æº\96",
        "noindex-category-desc": "命名空間允許,且含有魔術字 <code><nowiki>__NOINDEX__</nowiki></code> 未被機器人列入索引的頁面。",
        "index-category-desc": "命名空間允許,且含有魔術字 <code><nowiki>__INDEX__</nowiki></code> 被機器人列入索引的頁面。",
-       "post-expand-template-inclusion-category-desc": "當展開所有模組,大小大於<code>$wgMaxArticleSize</code>,因此一些模組尚未展開",
-       "post-expand-template-argument-category-desc": "展開樣版參數之後 (有些於三括號中,如 <code>{{{Foo}}}</code>),頁面大小超過<code>$wgMaxArticleSize</code> 設定的限制。",
+       "post-expand-template-inclusion-category-desc": "展開樣版後大小超過 <code>$wgMaxArticleSize</code> 導致部份樣版未正常展開的頁面。",
+       "post-expand-template-argument-category-desc": "展開樣版參數後大小超過 <code>$wgMaxArticleSize</code> 的頁面 (有些於三括號中,如 <code>{{{Foo}}}</code>)。",
        "expensive-parserfunction-category-desc": "頁面使用太多消耗系統資源的分析器函數 (如 <code>#ifexist</code>)。\n請參考 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
-       "broken-file-category-desc": "頁面包含損壞的檔案連結 (內嵌檔案連結的檔案不存在時)",
-       "hidden-category-category-desc": "該分類使用了 <code><nowiki>__HIDDENCAT__</nowiki></code>,可預設避免在頁面中顯示該分類的分類連結框。",
-       "trackingcategories-nodesc": "並無說明。",
-       "trackingcategories-disabled": "å\88\86é¡\9e被ç¦\81ç\94¨",
+       "broken-file-category-desc": "含有損壞檔案連結的頁面 (內嵌檔案連結的檔案不存在)。",
+       "hidden-category-category-desc": "內容中使用 <code><nowiki>__HIDDENCAT__</nowiki></code> 的分類,可隱藏預設在頁面上顯示的分類連結方塊。",
+       "trackingcategories-nodesc": "沒有可用的描述。",
+       "trackingcategories-disabled": "å·²å\81\9cç\94¨å\88\86é¡\9e",
        "mailnologin": "沒有傳送位址",
        "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件位址才可以傳送信件給其他使用者。",
        "emailuser": "Email 此使用者",
        "emailuser-title-target": "Email 給此{{GENDER:$1|使用者}}",
-       "emailuser-title-notarget": "E-mail給使用者",
+       "emailuser-title-notarget": "E-mail 給使用者",
        "emailpage": "E-mail 給使用者",
        "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件位址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
-       "defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 寄來的電子郵件",
+       "defemailsubject": "{{SITENAME}} 使用者 \"$1\" 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
-       "usermaildisabledtext": "您不傳送信件到這個 Wiki 上的其他使用者",
+       "usermaildisabledtext": "您不傳送信件到這個 Wiki 上的其他使用者",
        "noemailtitle": "沒有電子郵件位址",
        "noemailtext": "此使用者尚未指定一個有效的電子郵件位址。",
        "nowikiemailtext": "此使用者選擇不接收其他使用者的信件。",
        "emailnotarget": "收件人不存在或無效的使用者名稱。",
-       "emailtarget": "輸入收件人用戶名",
+       "emailtarget": "輸入收件人使用者名稱",
        "emailusername": "使用者名稱:",
        "emailusernamesubmit": "送出",
-       "email-legend": "傳送電子郵件給另一位 {{SITENAME}} 使用者",
+       "email-legend": "傳送電子郵件給另一位 {{SITENAME}} 使用者",
        "emailfrom": "寄件人:",
        "emailto": "收件人:",
-       "emailsubject": "主:",
+       "emailsubject": "主:",
        "emailmessage": "訊息:",
        "emailsend": "傳送",
-       "emailccme": "傳送一份副本到我的電子郵件信箱。",
+       "emailccme": "傳送一份訊息副本到我的電子郵件信箱。",
        "emailccsubject": "您寄給 $1 的訊息副本:$2",
-       "emailsent": "電子郵件已寄出",
-       "emailsenttext": "您的電子郵件訊息已經寄出。",
+       "emailsent": "已寄出電子郵件",
+       "emailsenttext": "已寄出您的電子郵件訊息。",
        "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"Email 給此使用者\" 功能寄給 $2。",
        "usermessage-summary": "留給系統訊息。",
        "usermessage-editor": "系統訊息",
        "exbeforeblank": "被清空前的內容為:\"$1\"",
        "delete-confirm": "刪除 \"$1\"",
        "delete-legend": "刪除",
-       "historywarning": "<strong>警告:</strong>您正要刪除的頁面內含有約 $1 次{{PLURAL:$1|的修訂}}歷史:",
+       "historywarning": "<strong>警告:</strong>您正要刪除的頁面內含 $1 次{{PLURAL:$1|的修訂}}歷史:",
        "confirmdeletetext": "您正要刪除一個頁面或圖片以及其所有歷史。\n請確定您了解要進行此項操作所造成的後果,同時確認您的行為符合[[{{MediaWiki:Policy-url}}]] 規範。",
        "actioncomplete": "操作完成",
        "actionfailed": "操作失敗",
        "reverted": "還原到較早的版本",
        "deletecomment": "原因:",
        "deleteotherreason": "其它/額外的原因:",
-       "deletereasonotherlist": "其它理由",
+       "deletereasonotherlist": "其它原因",
        "deletereason-dropdown": "* 常見的刪除原因\n** 濫發廣告訊息\n** 破壞\n** 侵犯版權\n** 作者請求\n** 損壞的重新導向連結",
-       "delete-edit-reasonlist": "編輯刪除理由",
+       "delete-edit-reasonlist": "編輯刪除原因",
        "delete-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。",
        "delete-warning-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。",
-       "delete-cantedit": "您沒有權限編輯此頁面,您無法刪除。",
+       "deleteprotected": "此頁面已受保護,您無法刪除此頁面。",
        "deleting-backlinks-warning": "<strong>警告:</strong>您正要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連結或引用。",
        "rollback": "還原編輯",
        "rollback_short": "還原",
        "rollbacklink": "還原",
        "rollbacklinkcount": "還原 $1 次編輯",
-       "rollbacklinkcount-morethan": "回退多過 $1 次{{PLURAL:$1|編輯}}",
+       "rollbacklinkcount-morethan": "還原超過 $1 次{{PLURAL:$1|編輯}}",
        "rollbackfailed": "還原失敗",
        "cantrollback": "無法還原編輯;\n此頁面的最後貢獻者是唯一的作者。",
        "alreadyrolled": "無法還原由 [[User:$2|$2]] ([[User talk:$2|對話]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]] 所作的最後一次編輯 [[:$1]],已有其他人編輯或還原了該頁面。\n\n最後一次編輯該頁面的使用者是 [[User:$3|$3]] ([[User talk:$3|對話]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。",
-       "editcomment": "編輯摘要\"''$1''\"。",
+       "editcomment": "編輯摘要為:\"''$1''\"。",
        "revertpage": "已還原 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 的編輯為最後由 [[User:$1|$1]] 所修訂的版本",
        "revertpage-nouser": "已還隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
        "rollback-success": "已還原 $1 做的編輯;\n更變回最後由 $2 修訂的版本。",
-       "sessionfailure-title": "登入資訊失敗",
+       "sessionfailure-title": "連線階段失敗",
        "sessionfailure": "似乎您的登入會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
        "protectlogpage": "保護日誌",
        "protectlogtext": "以下為變更頁面保護的列表。\n請參考 [[Special:ProtectedPages|受保護頁面列表]] 檢視目前受保護頁面。",
        "protect-expiry-indefinite": "無限期",
        "protect-cascade": "保護本頁中包含的頁面 (連鎖保護)",
        "protect-cantedit": "您沒有編輯權限,無法更改此頁面的保護層級。",
-       "protect-othertime": "其它時間:",
+       "protect-othertime": "其它時間",
        "protect-othertime-op": "其它時間",
        "protect-existing-expiry": "已設定期限:$2 $3",
        "protect-otherreason": "其它/額外的原因:",
-       "protect-otherreason-op": "其它理由",
+       "protect-otherreason-op": "其它原因",
        "protect-dropdown": "*常見的保護原因\n** 過度的破壞\n** 過多垃圾訊息\n** 反生產性的編輯戰\n** 高流量頁面",
        "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",
+       "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": "限制層級:",
        "minimum-size": "大小下限",
        "restriction-move": "移動",
        "restriction-create": "建立",
        "restriction-upload": "上傳",
-       "restriction-level-sysop": "全保護",
-       "restriction-level-autoconfirmed": "半保護",
-       "restriction-level-all": "任何級別",
+       "restriction-level-sysop": "å\8f\97å\85¨ä¿\9dè­·",
+       "restriction-level-autoconfirmed": "å\8f\97å\8d\8aä¿\9dè­·",
+       "restriction-level-all": "任何層級",
        "undelete": "檢視已刪除的頁面",
        "undeletepage": "檢視與還原已刪除的頁面",
-       "undeletepagetitle": "'''以下包含[[:$1]]的已刪除之修訂版本'''。",
-       "viewdeletedpage": "檢視已刪除頁面",
-       "undeletepagetext": "以ä¸\8bç\9a\84$1å\80\8bé \81é\9d¢å·²ç¶\93被å\88ªé\99¤ï¼\8cä½\86ä¾\9dç\84¶å\9c¨æª\94æ¡\88中並å\8f¯ä»¥è¢«æ\81¢å¾©ã\80\82\næª\94æ¡\88庫å\8f¯è\83½è¢«定時清理。",
+       "undeletepagetitle": "<strong>下列為 [[:$1]] 已刪除的修訂版本</strong>。",
+       "viewdeletedpage": "檢視已刪除頁面",
+       "undeletepagetext": "ä¸\8bå\88\97 {{PLURAL:$1|1 å\80\8bé \81é\9d¢å·²å\88ªé\99¤|$1 å\80\8bé \81é\9d¢å·²å\88ªé\99¤}}ä½\86å°\9aå\9c¨å°\81å­\98ï¼\8cä»\8då\8f¯é\82\84å\8e\9fã\80\82\nå°\81å­\98ç\9a\84æª\94æ¡\88å\8f¯è\83½æ\9c\83定時清理。",
        "undelete-fieldset-title": "還原修訂",
        "undeleteextrahelp": "若要還原所有的頁面歷史,請取消勾選所有核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。\n若要還原指定的頁面歷史,請勾選要還原的修訂核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。",
        "undeleterevisions": "已封存 $1 個修訂",
        "undeletedpage": "<strong>已還原 $1</strong>\n\n請參考 [[Special:Log/delete|刪除日誌]] 以查詢最近刪除及還原的記錄。",
        "undelete-header": "請參考 [[Special:Log/delete|刪除日誌]] 查詢最近刪除的頁面。",
        "undelete-search-title": "搜尋已刪除頁面",
-       "undelete-search-box": "搜尋已刪除頁面",
+       "undelete-search-box": "搜尋已刪除頁面",
        "undelete-search-prefix": "顯示頁面開始自:",
        "undelete-search-submit": "搜尋",
        "undelete-no-results": "刪除記錄裡沒有符合的頁面。",
        "mycontris": "我的貢獻",
        "contribsub2": "{{GENDER:$3|$1}} 的貢獻 ($2)",
        "contributions-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。",
-       "nocontribs": "沒有找到符合特徵的更改。",
+       "nocontribs": "沒有找到符合條件的變更。",
        "uctop": "(目前)",
        "month": "截止月份:",
        "year": "截止年份:",
        "sp-contributions-userrights": "使用者權限管理",
        "sp-contributions-blocked-notice": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
        "sp-contributions-blocked-notice-anon": "此 IP 位址目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
-       "sp-contributions-search": "搜尋貢獻記錄",
-       "sp-contributions-username": "IP 位址或用戶名:",
-       "sp-contributions-toponly": "å\8fªé¡¯ç¤ºæ\9c\80æ\96°ä¿®è¨\82ç\89\88æ\9c¬ç\9a\84編輯",
-       "sp-contributions-newonly": "å\83\85顯示建ç«\8bé \81é\9d¢ä¹\8b編輯",
+       "sp-contributions-search": "搜尋貢獻",
+       "sp-contributions-username": "IP 位址或使用者名稱:",
+       "sp-contributions-toponly": "只顯示最新修訂的編輯",
+       "sp-contributions-newonly": "å\8fªé¡¯ç¤ºå»ºç«\8bé \81é\9d¢ç\9a\84編輯",
        "sp-contributions-submit": "搜尋",
        "whatlinkshere": "連入頁面",
        "whatlinkshere-title": "連結到 \"$1\" 的頁面",
        "whatlinkshere-page": "頁面:",
-       "linkshere": "以下頁面連結到[[:$1]]:",
-       "nolinkshere": "沒有頁面連結到[[:$1]]。",
+       "linkshere": "以下頁面連結至 <strong>[[:$1]]</strong>:",
+       "nolinkshere": "沒有頁面連結至 <strong>[[:$1]]</strong>。",
        "nolinkshere-ns": "已選擇的命名空間中沒有頁面連結到 [[:$1]]。",
        "isredirect": "重新導向頁面",
        "istemplate": "引用",
        "isimage": "檔案連結",
        "whatlinkshere-prev": "前 $1 筆",
        "whatlinkshere-next": "後 $1 筆",
-       "whatlinkshere-links": "← 連",
+       "whatlinkshere-links": "← 連",
        "whatlinkshere-hideredirs": "$1 重新導向頁面",
        "whatlinkshere-hidetrans": "$1 引用",
        "whatlinkshere-hidelinks": "$1 連結",
        "whatlinkshere-hideimages": "$1 檔案連結",
        "whatlinkshere-filters": "搜尋",
-       "autoblockid": "自動查封 #$1",
+       "autoblockid": "自動封鎖 #$1",
        "block": "封鎖使用者",
        "unblock": "解除封鎖使用者",
        "blockip": "封鎖{{GENDER:$1|使用者}}",
        "ipbexpiry": "期限:",
        "ipbreason": "原因:",
        "ipbreason-dropdown": "*常見的封鎖原因\n** 填寫不實資訊\n** 刪除頁面內容\n** 散佈外部廣告連結\n** 在頁面填寫無意義文字\n** 無禮的行為、攻擊/騷擾別人\n** 濫用多個帳號\n** 使用不受歡迎的使用者名稱",
-       "ipb-hardblock": "避免使用此 IP 位址登入的使用者編輯",
+       "ipb-hardblock": "禁止使用此 IP 位址登入的使用者編輯",
        "ipbcreateaccount": "禁止建立帳號",
        "ipbemailban": "禁止使用者傳送電子郵件",
        "ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位址,以及所有之後嘗試編輯使用的 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",
+       "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",
        "ipbhidename": "在編輯及清單中隱藏使用者名稱",
        "ipbwatchuser": "監視這位使用者的使用者頁面及其對話頁面",
        "ipb-disableusertalk": "避免在封鎖此使用者的期間編輯自己的對話頁面",
        "unblockiptext": "填寫以下單據以取消先前封鎖的 IP 位址或使用者名稱。",
        "ipusubmit": "移除這個封鎖",
        "unblocked": "[[User:$1|$1]] 的封鎖已經解除。",
-       "unblocked-range": "$1已被解封",
+       "unblocked-range": "已解除封鎖 $1。",
        "unblocked-id": "已經移除 $1 的封鎖。",
        "blocklist": "已封鎖的使用者",
        "ipblocklist": "已封鎖的使用者",
        "blocklist-nousertalk": "無法編輯自己的對話頁面",
        "ipblocklist-empty": "封鎖清單無任何資訊。",
        "ipblocklist-no-results": "指定的 IP 位址或使用者名稱尚未被封鎖。",
-       "blocklink": "查封",
+       "blocklink": "封鎖",
        "unblocklink": "解除封鎖",
        "change-blocklink": "變更封鎖",
        "contribslink": "貢獻",
        "emaillink": "傳送電子郵件",
        "autoblocker": "您的 IP 位址因最近被 [[User:$1|$1]] 使用過而被自動封鎖。\n封鎖 $1 的原因為 \"$2\"",
-       "blocklogpage": "查封日誌",
+       "blocklogpage": "封鎖日誌",
        "blocklog-showlog": "此使用者先前被封鎖過。\n以下為封鎖紀錄以供參考:",
        "blocklog-showsuppresslog": "此使用者先前被封鎖並且隱藏過。\n以下為禁止顯示紀錄以供參考:",
        "blocklogentry": "已封鎖 [[$1]] 的期限至 $2 $3",
        "reblock-logentry": "更改 [[$1]] 的封鎖期限至 $2 $3",
        "blocklogtext": "此為使用者的封鎖及取消封鎖記錄。\n不包自動封鎖的 IP 位址。\n請參考 [[Special:BlockList|封鎖清單]] 以檢視目前的封鎖。",
-       "unblocklogentry": "已解 $1",
+       "unblocklogentry": "已解除封鎖 $1",
        "block-log-flags-anononly": "僅限匿名使用者",
        "block-log-flags-nocreate": "停用帳號建立",
        "block-log-flags-noautoblock": "停用自動封鎖",
        "block-log-flags-noemail": "停用電子郵件",
        "block-log-flags-nousertalk": "無法編輯自己的對話頁面",
        "block-log-flags-angry-autoblock": "加強自動封鎖已開啟",
-       "block-log-flags-hiddenname": "隱藏用戶名",
+       "block-log-flags-hiddenname": "隱藏使用者名稱",
        "range_block_disabled": "管理員可建立範圍封鎖的權限以被關閉。",
-       "ipb_expiry_invalid": "無效的終止時間。",
+       "ipb_expiry_invalid": "無效的期限。",
        "ipb_expiry_temp": "隱藏使用者名稱的封鎖不可設定期限。",
        "ipb_hide_invalid": "無法禁止顯示此帳號;它擁有超過 $1 次的編輯。",
        "ipb_already_blocked": "已經封鎖 \"$1\"。",
-       "ipb-needreblock": "$1已經被封鎖。您是否想更改這個設定?",
+       "ipb-needreblock": "$1 已經被封鎖。您是否想更改設定?",
        "ipb-otherblocks-header": "其他{{PLURAL:$1|封鎖}}",
        "unblock-hideuser": "由於此使用者名稱已被設為隱藏,您無法解除封鎖這個使用者。",
        "ipb_cant_unblock": "錯誤:查無封鎖 ID $1,可能已被解除封鎖。",
        "ip_range_toolarge": "不允許封鎖範圍大於 /$1。",
        "proxyblocker": "代理封鎖器",
        "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯繫您的網絡服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。",
-       "sorbsreason": "您的 IP 位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。",
+       "sorbsreason": "您的 IP 位址在 {{SITENAME}} 使用的 DNSBL 列為開放代理伺服器。",
        "sorbs_create_account_reason": "您連線到 {{SITENAME}} 的 IP 位址被 DNSBL 列為開放代理伺服器。\n您不能建立帳號。",
        "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1",
        "cant-see-hidden-user": "您欲封鎖的使用者已經被封鎖並且隱藏。\n您沒有隱藏使用者的權限,您無法檢視或編輯該使用者的封鎖狀態。",
        "newtitle": "新標題:",
        "move-watch": "監視來源以及目標頁面",
        "movepagebtn": "移動頁面",
-       "pagemovedsub": "移動成功",
+       "pagemovedsub": "已成功移動",
        "movepage-moved": "<strong>已移動 \"$1\" 至 \"$2\"</strong>",
        "movepage-moved-redirect": "已建立重新導向頁面。",
        "movepage-moved-noredirect": "已禁止建立重新導向頁面。",
        "import": "匯入頁面",
        "importinterwiki": "Transwiki 匯入",
        "import-interwiki-text": "請選擇一個 Wiki 與頁面標題以進行匯入。\n會同時記錄修訂日期和編輯者的名稱。\n所有的 Transwiki 匯入操作會被記錄在 [[Special:Log/import|匯入日誌]]。",
-       "import-interwiki-source": "來源 Wiki/頁面:",
+       "import-interwiki-sourcewiki": "來源 Wiki:",
+       "import-interwiki-sourcepage": "來源頁面:",
        "import-interwiki-history": "複製此頁的所有歷史修訂",
        "import-interwiki-templates": "包含所有樣版",
        "import-interwiki-submit": "匯入",
        "importtext": "請使用 [[Special:Export|匯出工具]] 從來源 Wiki 匯出檔案,\n儲存至您的電腦後再上傳到這裡。",
        "importstart": "正在匯入頁面...",
        "import-revision-count": "$1 個修訂",
-       "importnopages": "沒有匯入的頁面。",
+       "importnopages": "æ²\92æ\9c\89å\8f¯å\8c¯å\85¥ç\9a\84é \81é\9d¢ã\80\82",
        "imported-log-entries": "已匯入 $1 筆日誌項目。",
        "importfailed": "匯入失敗:<nowiki>$1</nowiki>",
        "importunknownsource": "不明的來源匯入類型",
        "importcantopen": "無法開啟匯入檔案",
        "importbadinterwiki": "無效的 Interwiki 連結",
-       "importsuccess": "å\8c¯å\85¥å®\8cæ\88\90!",
+       "importsuccess": "å·²å®\8cæ\88\90å\8c¯å\85¥!",
        "importnosources": "未定義任何 Transwiki 匯入來源且已關閉使用歷史記錄上傳功能。",
        "importnofile": "未上傳匯入檔案。",
        "importuploaderrorsize": "上載匯入檔案失敗。\n檔案大小超過允許上傳大小。",
        "import-error-create": "您沒有權限建立頁面 \"$1\",無法匯入。",
        "import-error-interwiki": "頁面 \"$1\" 的名稱已保留作為外部連結 (Interwiki) 使用,無法匯入。",
        "import-error-special": "頁面 \"$1\" 屬於不允許頁面的特殊命名空間,無法匯入。",
-       "import-error-invalid": "é \81é\9d¢ \"$1\" å\9b å\85¶å\90\8d稱å\9c¨æ­¤wiki無效,無法匯入。",
+       "import-error-invalid": "é \81é\9d¢ \"$1\" å\8c¯å\85¥æ­¤ Wiki ç\9a\84å\90\8d稱無效,無法匯入。",
        "import-error-unserialize": "頁面 \"$1\" 的修訂 $2 無法反序列反。 此修訂使用 $3 內容模型以 $4 的方式序列化。",
        "import-error-bad-location": "此 Wiki 的頁面 \"$1\" 不支援使用內容模型 $3,修訂 $2 無法儲存至該頁面 。",
        "import-options-wrong": "{{PLURAL:$2|選項}}錯誤:<nowiki>$1</nowiki>",
        "tooltip-t-upload": "上傳檔案",
        "tooltip-t-specialpages": "全部特殊頁面的列表",
        "tooltip-t-print": "此頁面的可列印版本",
-       "tooltip-t-permalink": "此頁面修訂的固定連結",
+       "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": "檢視檔案頁面",
-       "tooltip-ca-nstab-mediawiki": "檢è¦\96系統è³\87è¨\8a",
+       "tooltip-ca-nstab-mediawiki": "檢è¦\96系統è¨\8aæ\81¯",
        "tooltip-ca-nstab-template": "檢視樣版",
        "tooltip-ca-nstab-help": "檢視說明頁面",
        "tooltip-ca-nstab-category": "檢視分類頁面",
        "anonymous": "{{SITENAME}} 的匿名{{PLURAL:$1|使用者}}",
        "siteuser": "{{SITENAME}} 使用者 $1",
        "anonuser": "{{SITENAME}} 匿名使用者 $1",
-       "lastmodifiedatby": "此頁由 $3 於 $1 $2 的最後更改。",
+       "lastmodifiedatby": "此頁面由 $3 於 $1 $2 做最後修改。",
        "othercontribs": "此頁面由 $1 所貢獻。",
        "others": "其他",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|使用者}} $1",
        "pageinfo-header-restrictions": "頁面保護",
        "pageinfo-header-properties": "頁面屬性",
        "pageinfo-display-title": "顯示標題",
-       "pageinfo-default-sort": "預設排序:",
+       "pageinfo-default-sort": "預設排序方式:",
        "pageinfo-length": "頁面長度 (位元組)",
-       "pageinfo-article-id": "頁面編號",
+       "pageinfo-article-id": "頁面 ID",
        "pageinfo-language": "頁面內容語言",
        "pageinfo-content-model": "頁面內容模型",
        "pageinfo-robot-policy": "由機器人建立索引",
        "pageinfo-watchers": "頁面監視者數",
        "pageinfo-few-watchers": "少於 $1 名監視者",
        "pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
-       "pageinfo-subpages-name": "此頁面的子頁面",
+       "pageinfo-subpages-name": "此頁面的子頁面",
        "pageinfo-subpages-value": "$1 ($2 個重新導向頁面; $3 個非重新導向頁面)",
        "pageinfo-firstuser": "頁面建立者",
        "pageinfo-firsttime": "頁面建立日期",
        "pageinfo-category-info": "分類資訊",
        "pageinfo-category-pages": "頁面數量",
        "pageinfo-category-subcats": "子分類數量",
-       "pageinfo-category-files": "編輯數量",
+       "pageinfo-category-files": "檔案數量",
        "markaspatrolleddiff": "標記為已巡查",
        "markaspatrolledtext": "標記此頁面為已巡查",
        "markedaspatrolled": "己標記為已巡查",
        "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-nohires": "無更高解度可提供。",
+       "file-nohires": "無更高解度可提供。",
        "svg-long-desc": "SVG 檔案,表面大小:$1 × $2 像素,檔案大小:$3",
        "svg-long-desc-animated": "SVG 動畫檔案,表面大小:$1 × $2 像素,檔案大小:$3",
        "svg-long-error": "無效的 SVG 檔案:$1",
        "exif-gpsaltituderef": "海拔參考值",
        "exif-gpsaltitude": "海拔",
        "exif-gpstimestamp": "GPS 時間 (原子鐘)",
-       "exif-gpssatellites": "測量使用的衛星",
+       "exif-gpssatellites": "測量用的衛星",
        "exif-gpsstatus": "接收器狀態",
        "exif-gpsmeasuremode": "測量模式",
        "exif-gpsdop": "測量精度",
        "exif-pngfilecomment": "PNG 檔案備註",
        "exif-disclaimer": "免責聲明",
        "exif-contentwarning": "內容警告",
-       "exif-giffilecomment": "GIF註釋",
+       "exif-giffilecomment": "GIF 檔案備註",
        "exif-intellectualgenre": "項目類型",
        "exif-subjectnewscode": "主題代碼",
-       "exif-scenecode": "IPTC現場代碼",
+       "exif-scenecode": "IPTC 現場代碼",
        "exif-event": "事件描述",
        "exif-organisationinimage": "組織描述",
        "exif-personinimage": "所描述的人",
-       "exif-originalimageheight": "被è£\81å\89ªå\89\8d高度",
-       "exif-originalimagewidth": "被è£\81å\89ªå\89\8d寬度",
+       "exif-originalimageheight": "è£\81å\88\87å\89\8dç\9a\84高度",
+       "exif-originalimagewidth": "è£\81å\88\87å\89\8dç\9a\84寬度",
        "exif-compression-1": "未壓縮",
-       "exif-compression-2": "CCITT第3組一維修改霍夫曼遊程編碼",
-       "exif-compression-3": "CCITT第3組傳真編碼",
-       "exif-compression-4": "CCITT第4組傳真編碼",
+       "exif-compression-2": "CCITT 第 3 組一維修改霍夫曼變動長度編碼",
+       "exif-compression-3": "CCITT 第 3 組傳真編碼",
+       "exif-compression-4": "CCITT 第 4 組傳真編碼",
        "exif-compression-6": "JPEG (舊)",
        "exif-copyrighted-true": "受版權保護",
-       "exif-copyrighted-false": "版權所屬者不明",
-       "exif-unknowndate": "æ\9cªç\9f¥ç\9a\84æ\97¥æ\9c\9f",
+       "exif-copyrighted-false": "版權狀態不明",
+       "exif-unknowndate": "æ\97¥æ\9c\9fä¸\8dæ\98\8e",
        "exif-orientation-1": "標準",
        "exif-orientation-2": "水平翻轉",
        "exif-orientation-3": "旋轉 180°",
        "exif-exposureprogram-7": "人像模式 (用於近距離照片,對焦不在背景)",
        "exif-exposureprogram-8": "風景模式 (用於風景照片,對焦在背景)",
        "exif-subjectdistance-value": "$1 尺",
-       "exif-meteringmode-0": "未知",
+       "exif-meteringmode-0": "不明",
        "exif-meteringmode-1": "平均",
        "exif-meteringmode-2": "中心加權平均",
        "exif-meteringmode-3": "點測",
        "exif-meteringmode-5": "模式",
        "exif-meteringmode-6": "部分",
        "exif-meteringmode-255": "其他",
-       "exif-lightsource-0": "未知",
+       "exif-lightsource-0": "不明",
        "exif-lightsource-1": "日光",
        "exif-lightsource-2": "螢光燈",
        "exif-lightsource-3": "鎢絲燈 (白熾燈)",
        "exif-flash-redeye-1": "防紅眼模式",
        "exif-focalplaneresolutionunit-2": "英寸",
        "exif-sensingmethod-1": "未定義",
-       "exif-sensingmethod-2": "一塊彩色區域傳感器",
-       "exif-sensingmethod-3": "兩塊彩色區域傳感器",
-       "exif-sensingmethod-4": "三塊彩色區域傳感器",
-       "exif-sensingmethod-5": "連續彩色區域傳感器",
-       "exif-sensingmethod-7": "三線傳感器",
-       "exif-sensingmethod-8": "連續彩色線性傳感器",
-       "exif-filesource-3": "數相機",
+       "exif-sensingmethod-2": "單晶片彩色區域感測器",
+       "exif-sensingmethod-3": "雙晶片彩色區域感測器",
+       "exif-sensingmethod-4": "三晶片彩色區域感測器",
+       "exif-sensingmethod-5": "連續彩色區域感測器",
+       "exif-sensingmethod-7": "三線性感測器",
+       "exif-sensingmethod-8": "連續彩色線性感測器",
+       "exif-filesource-3": "數相機",
        "exif-scenetype-1": "直接照像圖片",
        "exif-customrendered-0": "標準處理",
        "exif-customrendered-1": "自定義處理",
        "exif-sharpness-0": "標準",
        "exif-sharpness-1": "低",
        "exif-sharpness-2": "高",
-       "exif-subjectdistancerange-0": "未知",
+       "exif-subjectdistancerange-0": "不明",
        "exif-subjectdistancerange-1": "巨集",
        "exif-subjectdistancerange-2": "近景",
        "exif-subjectdistancerange-3": "遠景",
        "exif-dc-rights": "權利",
        "exif-dc-source": "來源媒體",
        "exif-dc-type": "介質類型",
-       "exif-rating-rejected": "拒絕",
+       "exif-rating-rejected": "拒絕",
        "exif-isospeedratings-overflow": "大於 65535",
        "exif-iimcategory-ace": "藝術、文化與娛樂",
        "exif-iimcategory-clj": "犯罪與法律",
        "watchlistall2": "全部",
        "namespacesall": "全部",
        "monthsall": "全部",
-       "confirmemail": "確èª\8dé\83µç®±位址",
+       "confirmemail": "確èª\8dé\9b»å­\90é\83µä»¶位址",
        "confirmemail_noemail": "您尚未於 [[Special:Preferences|偏好設定]] 輸入一個有效的電子郵件位址。",
        "confirmemail_text": "{{SITENAME}}要求您在使用郵件功能之前驗證您的郵箱位址。\n點選以下按鈕可向您的郵箱傳送一封確認郵件。該郵件包含有一行代碼連結;\n請在您的瀏覽器中載入此連結以確認您的郵箱位址是有效的。",
        "confirmemail_pending": "確認碼已傳送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
-       "confirmemail_send": "é\83µç\99¼確認代碼",
-       "confirmemail_sent": "確認郵件已寄出。",
+       "confirmemail_send": "é\9b»å­\90é\83µä»¶å¯\84é\80\81確認代碼",
+       "confirmemail_sent": "已寄出確認電子郵件。",
        "confirmemail_oncreate": "一個確認代碼已經被傳送到您的郵箱。該代碼並不要求您進行登入,\n但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。",
        "confirmemail_sendfailed": "{{SITENAME}}無法傳送確認郵件,請檢查郵箱位址是否包含非法字元。\n\n郵件傳送員回應: $1",
        "confirmemail_invalid": "無效的確認碼,該代碼可能已經過期。",
-       "confirmemail_needlogin": "您需要$1以確認您的郵箱位址。",
+       "confirmemail_needlogin": "請 $1 以確認您的電子郵件地址。",
        "confirmemail_success": "您的郵箱已經被確認。您現在可以[[Special:UserLogin|登入]]並使用此網站了。",
-       "confirmemail_loggedin": "您的郵箱位址現下已被確認。",
-       "confirmemail_subject": "{{SITENAME}}郵箱位址確認",
+       "confirmemail_loggedin": "已確認您的電子郵件地址。",
+       "confirmemail_subject": "{{SITENAME}} 電子郵件地址確認",
        "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1)  已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件位址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_invalidated": "電郵位址確認已取消",
-       "invalidateemail": "取消電確認",
+       "confirmemail_invalidated": "已取消電子郵件地址確認",
+       "invalidateemail": "取消電子郵件確認",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
        "scarytranscludefailed": "[樣版 $1 讀取失敗]",
        "scarytranscludefailed-httpstatus": "[樣版 $1 讀取失敗:HTTP $2]",
-       "scarytranscludetoolong": "[URL 網址太長]",
+       "scarytranscludetoolong": "[URL 長]",
        "deletedwhileediting": "<strong>警告:</strong>此頁在您開始編輯之後已經被刪除﹗",
        "confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: <em>$2</em>\n請確認您是否真的要重新建立此頁面。",
        "confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。",
-       "recreate": "重",
+       "recreate": "重新建立",
        "confirm_purge_button": "確定",
-       "confirm-purge-top": "要清除此頁面的快取嗎?",
+       "confirm-purge-top": "要清除此頁面的快取嗎",
        "confirm-purge-bottom": "清理一頁將會清除快取以及強迫顯示最現時之修訂版本。",
        "confirm-watch-button": "確定",
        "confirm-watch-top": "新增此頁面至您的監視清單?",
        "table_pager_limit_label": "每頁筆數︰",
        "table_pager_limit_submit": "送出",
        "table_pager_empty": "沒有結果",
-       "autosumm-blank": "清空頁面",
+       "autosumm-blank": "空白的頁面",
        "autosumm-replace": "使用 \"$1\" 取代內容",
        "autoredircomment": "頁面已重新導向至 [[$1]]",
        "autosumm-new": "已建立頁面,內容為 \"$1\"",
-       "autosumm-newblank": "建立空白頁",
+       "autosumm-newblank": "建立空白頁",
        "size-bytes": "$1 位元組",
        "lag-warn-normal": "此清單可能不會顯示最近 $1 {{PLURAL:$1|秒}}內的變更。",
        "lag-warn-high": "由於資料庫回應延遲,此清單可能不會顯示最近 $1 {{PLURAL:$1|秒}}內的變更。",
        "version-hook-name": "連結名稱",
        "version-hook-subscribedby": "署名",
        "version-version": "($1)",
-       "version-no-ext-name": "[名]",
+       "version-no-ext-name": "[未命名]",
        "version-license": "MediaWiki 授權條款",
        "version-ext-license": "授權條款",
        "version-ext-colheader-name": "擴充套件",
        "version-skin-colheader-name": "外觀",
        "version-ext-colheader-version": "版本",
        "version-ext-colheader-license": "授權條款",
-       "version-ext-colheader-description": "說明",
+       "version-ext-colheader-description": "描述",
        "version-ext-colheader-credits": "作者",
        "version-license-title": "$1 的授權條款",
        "version-license-not-found": "查無此擴充套件的詳細授權條款資訊。",
        "redirect-legend": "重新導向至檔案或頁面",
        "redirect-summary": "此特殊頁面可用來重新導向至檔案 (指定檔案名稱)、頁面 (指定修訂 ID 或頁面 ID) 或使用者頁面 (指定使用者 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]] 或 [[{{#Special:Redirect}}/user/101]]。",
        "redirect-submit": "執行",
-       "redirect-lookup": "尋找:",
+       "redirect-lookup": "查詢:",
        "redirect-value": "值:",
        "redirect-user": "使用者 ID",
        "redirect-page": "頁面 ID",
        "redirect-revision": "頁面修訂 ID",
        "redirect-file": "檔案名稱",
-       "redirect-not-exists": "æ\89¾ä¸\8då\88°",
+       "redirect-not-exists": "æ\9f¥ç\84¡å\80¼",
        "fileduplicatesearch": "搜尋重覆檔案",
        "fileduplicatesearch-summary": "依據雜湊值(Hash)來搜尋重複的檔案。",
        "fileduplicatesearch-legend": "搜尋重覆",
        "specialpages-note": "* 一般特殊頁面。\n* <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": "使用者與權限",
        "tags-tag": "標籤名稱",
        "tags-display-header": "在更改清單中的出現方式",
        "tags-description-header": "完整含意說明",
-       "tags-active-header": "å­\98æª\94?",
+       "tags-active-header": "å\95\9fç\94¨?",
        "tags-hitcount-header": "已加上標籤的更改",
        "tags-active-yes": "是",
        "tags-active-no": "否",
        "compare-invalid-title": "所指定標題無效。",
        "compare-title-not-exists": "所指定的話題不存在。",
        "compare-revision-not-exists": "所指定的修訂不存在。",
-       "dberr-problems": "歉!這個網站出現了一些技術上的問題。",
+       "dberr-problems": "æ\8a±æ­\89ï¼\81é\80\99å\80\8b網ç«\99å\87ºç\8f¾äº\86ä¸\80äº\9bæ\8a\80è¡\93ä¸\8aç\9a\84å\95\8fé¡\8cã\80\82",
        "dberr-again": "嘗試等候數分鐘後,然後再試。",
        "dberr-info": "(無法連線資料庫伺服器:$1)",
        "dberr-info-hidden": "(無法連線資料庫伺服器)",
        "dberr-usegoogle": "在現階段您可以嘗試透過 Google 搜尋。",
        "dberr-outofdate": "留意他們索引出來之內容可能不是最新的。",
        "dberr-cachederror": "這個是所要求出來的快取複本,可能不是最新的。",
-       "htmlform-invalid-input": "您輸入的內容存在問題",
+       "htmlform-invalid-input": "您的輸入的內容有問題。",
        "htmlform-select-badoption": "您所指定的值不是有效的選項。",
        "htmlform-int-invalid": "您所指定的值不是一個整數。",
        "htmlform-float-invalid": "您所指定的值不是一個數字。",
-       "htmlform-int-toolow": "您所指定的值低於最小值$1",
-       "htmlform-int-toohigh": "您所指定的值高於最大值$1",
-       "htmlform-required": "此值是必填項",
+       "htmlform-int-toolow": "您所指定的值低於最小值 $1。",
+       "htmlform-int-toohigh": "您所指定的值高於最大值 $1。",
+       "htmlform-required": "此值為必填。",
        "htmlform-submit": "送出",
        "htmlform-reset": "還原更改",
        "htmlform-selectorother-other": "其他",
        "htmlform-no": "否",
        "htmlform-yes": "是",
-       "htmlform-chosen-placeholder": "選項",
+       "htmlform-chosen-placeholder": "謮選擇一個選項",
        "htmlform-cloner-create": "新增更多",
        "htmlform-cloner-delete": "移除",
        "htmlform-cloner-required": "至少必須填寫一筆資料。",
-       "sqlite-has-fts": "帶全文搜尋的版本$1",
-       "sqlite-no-fts": "不帶全文搜尋的版本$1",
+       "sqlite-has-fts": "$1 且支援全文搜索",
+       "sqlite-no-fts": "$1 且不支援全文搜索",
        "logentry-delete-delete": "$1 刪除頁面 $3",
        "logentry-delete-restore": "$1 還原頁面 $3",
        "logentry-delete-event": "$1 {{GENDER:$2|已更改}} $3 中 {{PLURAL:$5|1 筆日誌|$5 筆日誌}}的可見性:$4",
        "logentry-suppress-revision": "$1 {{GENDER:$2|已暗中更改}}頁面 $3 中 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}的可見性:$4",
        "logentry-suppress-event-legacy": "$1 {{GENDER:$2|已暗中更改}} $3 中日誌的可見性",
        "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|已暗中更改}}頁面 $3 中修訂的可見性",
-       "revdelete-content-hid": "隱藏內容",
-       "revdelete-summary-hid": "隱藏編輯摘要",
-       "revdelete-uname-hid": "隱藏用戶名",
+       "revdelete-content-hid": "隱藏內容",
+       "revdelete-summary-hid": "己隱藏摘要",
+       "revdelete-uname-hid": "隱藏使用者名稱",
        "revdelete-content-unhid": "取消隱藏內容",
        "revdelete-summary-unhid": "取消隱藏編輯摘要",
-       "revdelete-uname-unhid": "取消隱藏用戶名",
+       "revdelete-uname-unhid": "取消隱藏使用者名稱",
        "revdelete-restricted": "已套用對管理員的限制",
        "revdelete-unrestricted": "已移除對管理員的限制",
        "logentry-move-move": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4",
        "feedback-subject": "主旨:",
        "feedback-message": "訊息:",
        "feedback-cancel": "取消",
-       "feedback-submit": "送出回饋",
-       "feedback-adding": "正在頁面添加反饋...",
-       "feedback-error1": "錯誤:從API返回無法識別的結果",
+       "feedback-submit": "送出意見回饋",
+       "feedback-adding": "正在新增意見回饋至頁面...",
+       "feedback-error1": "錯誤:無法識別 API 回傳的結果",
        "feedback-error2": "錯誤:編輯失敗",
-       "feedback-error3": "錯誤:API 沒有應",
-       "feedback-thanks": "謝謝!您的反饋已被發布到頁面“[$2 $1]”。",
+       "feedback-error3": "錯誤:API 沒有應",
+       "feedback-thanks": "感謝!您的意見回饋已發佈到頁面 \"[$2 $1]\"。",
        "feedback-close": "完成",
-       "feedback-bugcheck": "請檢查此bug是否為[$1 已知bug]。",
-       "feedback-bugnew": "我已經檢查過。報告一個新的bug",
+       "feedback-bugcheck": "很好! 檢查一下您的意見是不是已經被列為 [$1 已知問題]。",
+       "feedback-bugnew": "我已經檢查。 回報新問題",
        "searchsuggest-search": "搜尋",
        "searchsuggest-containing": "包含...",
        "api-error-badaccess-groups": "您沒有權限在此 Wiki 上傳檔案。",
-       "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-popup-title": "已被刪除的重複{{PLURAL:$1|文件}}。",
+       "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-popup-title": "重複的{{PLURAL:$1|檔案}}已經被刪除。",
        "api-error-duplicate-popup-title": "重複的{{PLURAL:$1|檔案}}。",
-       "api-error-empty-file": "您提交的檔案是空的。",
-       "api-error-emptypage": "不許創建沒有內容的新頁面。",
-       "api-error-fetchfileerror": "內部錯誤:獲取檔案時發生錯誤。",
-       "api-error-fileexists-forbidden": "以\" $1 \"命名的檔案已經存在,並且不能被重寫。",
-       "api-error-fileexists-shared-forbidden": "以\" $1 \"命名的檔案已經存在於共用檔案儲存庫上,並且不能被重寫。",
-       "api-error-file-too-large": "您提交的檔案太大了。",
-       "api-error-filename-tooshort": "檔案名過短。",
-       "api-error-filetype-banned": "這種類型的檔案是被禁止的。",
+       "api-error-empty-file": "您送出的檔案是空的。",
+       "api-error-emptypage": "不允許建立空白的頁面。",
+       "api-error-fetchfileerror": "內部錯誤:取得檔案時發生錯誤。",
+       "api-error-fileexists-forbidden": "名稱為 \"$1\" 的檔案已經存在,並且不能被覆寫。",
+       "api-error-fileexists-shared-forbidden": "名稱為 \"$1\" 的檔案已經存在於共用儲存庫,並且不能被覆寫。",
+       "api-error-file-too-large": "您送出的檔案太大了。",
+       "api-error-filename-tooshort": "檔案名過短。",
+       "api-error-filetype-banned": "此檔案類型已禁止使用。",
        "api-error-filetype-banned-type": "$1{{PLURAL:$4|不是允許的檔案類型}}。  允許的{{PLURAL:$3|檔案類型是}} $2。",
-       "api-error-filetype-missing": "æ\9c¬æª\94æ¡\88缺å°\91äº\86副檔名。",
+       "api-error-filetype-missing": "æ­¤æª\94æ¡\88å\90\8d稱缺å°\91副檔名。",
        "api-error-hookaborted": "你試圖進行的修改被一個擴展鉤子終止。",
-       "api-error-http": "內部錯誤:無法連到伺服器。",
-       "api-error-illegal-filename": "æª\94æ¡\88å\90\8dä¸\8då\85\81許ã\80\82",
+       "api-error-http": "內部錯誤:無法連到伺服器。",
+       "api-error-illegal-filename": "ä¸\8då\85\81許使ç\94¨ç\9a\84æª\94æ¡\88å\90\8d稱ã\80\82",
        "api-error-internal-error": "內部錯誤:此 Wiki 在處理你的上傳時發生錯誤。",
        "api-error-invalid-file-key": "內部錯誤:於臨時儲存庫中查無檔案。",
-       "api-error-missingparam": "內部錯誤:請求缺少參數。",
-       "api-error-missingresult": "內部錯誤:無法確定複製是否成功。",
-       "api-error-mustbeloggedin": "您必須登入後再上傳檔案。",
-       "api-error-mustbeposted": "內部錯誤:請求需 HTTP POST。",
+       "api-error-missingparam": "內部錯誤:請求缺少參數。",
+       "api-error-missingresult": "內部錯誤:無法辨識複製是否成功。",
+       "api-error-mustbeloggedin": "您必須登入方可上傳檔案。",
+       "api-error-mustbeposted": "內部錯誤:請求需使用 HTTP POST。",
        "api-error-noimageinfo": "上傳成功,但伺服器沒有給我們任何該檔案的資訊。",
-       "api-error-nomodule": "內部錯誤:缺少上傳模集。",
-       "api-error-ok-but-empty": "內部錯誤:伺服器沒有應。",
-       "api-error-overwrite": "不允許覆蓋現有檔案。",
-       "api-error-stashfailed": "內部錯誤:伺服器儲存臨時檔案失敗。",
-       "api-error-publishfailed": "內部錯誤:伺服器發佈臨時檔案失敗。",
-       "api-error-stasherror": "上載檔案存檔時出錯。",
+       "api-error-nomodule": "內部錯誤:缺少上傳模集。",
+       "api-error-ok-but-empty": "內部錯誤:伺服器沒有應。",
+       "api-error-overwrite": "不允許覆蓋已存在的檔案。",
+       "api-error-stashfailed": "內部錯誤:伺服器儲存暫存檔案失敗。",
+       "api-error-publishfailed": "內部錯誤:伺服器發佈暫存檔案失敗。",
+       "api-error-stasherror": "上載檔案至儲存庫時發生錯誤。",
        "api-error-timeout": "伺服器沒有在預期的時間內回應。",
-       "api-error-unclassified": "發生未知錯誤。",
-       "api-error-unknown-code": "未知錯誤:$1",
-       "api-error-unknown-error": "å\85§é\83¨é\8c¯èª¤ï¼\9aå\98\97試ä¸\8aå\82³æª\94æ¡\88æ\99\82å\87ºé\8c¯。",
-       "api-error-unknown-warning": "未知的警告:$1",
-       "api-error-unknownerror": "未知錯誤:$1。",
-       "api-error-uploaddisabled": "æ\9c¬wikiç\9a\84ä¸\8aå\82³æª\94æ¡\88功能已停用。",
-       "api-error-verification-error": "æ\9c¬檔案可能已損壞,或副檔名錯誤。",
+       "api-error-unclassified": "發生不明錯誤。",
+       "api-error-unknown-code": "不明錯誤:\"$1\"。",
+       "api-error-unknown-error": "å\85§é\83¨é\8c¯èª¤ï¼\9aå\98\97試ä¸\8aå\82³æ\82¨ç\9a\84æª\94æ¡\88æ\99\82ç\99¼ç\94\9fé\8c¯èª¤。",
+       "api-error-unknown-warning": "不明警告:\"$1\"。",
+       "api-error-unknownerror": "不明錯誤:\"$1\"。",
+       "api-error-uploaddisabled": "æ­¤ Wiki ç\9a\84ä¸\8aå\82³功能已停用。",
+       "api-error-verification-error": "æ­¤檔案可能已損壞,或副檔名錯誤。",
        "duration-seconds": "$1 秒",
        "duration-minutes": "$1 分鐘",
        "duration-hours": "$1 小時",
        "duration-decades": "$1{{PLURAL:$1|0 年|0 年}}",
        "duration-centuries": "$1 世紀",
        "duration-millennia": "$1 千年",
-       "rotate-comment": "順時針旋轉圖像$1{{PLURAL:$1|度}}",
+       "rotate-comment": "已順時針旋轉圖片 $1 {{PLURAL:$1|度|度}}",
        "limitreport-title": "分析器分析資料:",
        "limitreport-cputime": "CPU 使用時間",
        "limitreport-cputime-value": "$1 秒",
        "expand_templates_intro": "本特殊頁面會將文字中的樣版展開,可以包含支援的分析程式語法,如 <code><nowiki>{{</nowiki>#language:…}}</code> 與變數如 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>。\n實際上,絕大部分在雙括號中的內容都會被展開。",
        "expand_templates_title": "上下文標題,用於 {{FULLPAGENAME}} 等:",
        "expand_templates_input": "輸入文字:",
-       "expand_templates_output": "結果",
+       "expand_templates_output": "結果",
        "expand_templates_xml_output": "XML 輸出",
        "expand_templates_html_output": "原始 HTML 輸出",
        "expand_templates_ok": "確定",
        "log-name-pagelang": "更改語言日誌",
        "log-description-pagelang": "這是頁面語言更改日誌。",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5。",
-       "default-skin-not-found": "注意! 此維基預設的介面(<code>$wgDefaultSkin</code>), <code>$1</code>目前無法使用.",
+       "default-skin-not-found": "哎呀!您的 Wiki 預設外觀 (<code>$wgDefaultSkin</code>),<code>$1</code> 無法使用。\n\n您的安裝程序應包含以下外觀。 請參考 [https://www.mediawiki.org/wiki/Manual:Skin_configuration 操作手冊:外觀設定] 以取得如何開啟外觀並設為預設值的資訊。\n\n$2\n\n; 若您才剛安裝完 MediaWiki:\n: 您大概是使用 git 或直接透過原始碼使用其他方法安裝,這種情況是正常的。請嘗試安裝 [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org 的外觀目錄] 中的部份外觀使用以下方式:\n:* 下載 [https://www.mediawiki.org/wiki/Download tarball 安裝程式],該程式包含數個外觀與擴充套件。 您可以複製並貼上至 <code>skins/</code> 目錄。\n:* 透過 git 複製 <code>mediawiki/skins/*</code> 儲存庫中其中一個外觀到您安裝的 MediaWiki <code>skins/</code> 目錄中。\n: 若您是 MediaWiki 的開發人員,這麼做應該不會影響到您的 git 儲存庫。\n\n; 若您才剛升級 MediaWiki:\n: MediaWiki 1.24 與較新的版本不再自動開啟已安裝的外觀 (請參考 [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 操作手冊:外觀自動搜尋])。 您可以將下列行貼上至 <code>LocalSettings.php</code> 來開啟所有目前已經安裝的外觀:\n\n<pre>$3</pre>\n\n; 若您才剛修改 <code>LocalSettings.php</code>:\n: 請再次確認您輸入的外觀名稱是否有誤。",
+       "default-skin-not-found-no-skins": "哎呀!您的 Wiki 預設外觀 (<code>$wgDefaultSkin</code>),<code>$1</code> 無法使用。\n\n您未安裝任何的外觀。\n\n; 若您才剛安裝完或升級完 MediaWiki:\n: 您大概是使用 git 或直接透過原始碼使用其他方法安裝,這種情況是正常的。 MediaWiki 1.24 或較新的版本在主要儲存庫中不再包含任何的外觀。 請嘗試安裝 [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org 的外觀目錄] 中的部份外觀使用以下方式:\n:* 下載 [https://www.mediawiki.org/wiki/Download tarball 安裝程式],該程式包含數個外觀與擴充套件。 您可以複製並貼上至 <code>skins/</code> 目錄。\n:* 透過 git 複製 <code>mediawiki/skins/*</code> 儲存庫中其中一個外觀到您安裝的 MediaWiki <code>skins/</code> 目錄中。\n: 若您是 MediaWiki 的開發人員,這麼做應該不會影響到您的 git 儲存庫。 請參考 [https://www.mediawiki.org/wiki/Manual:Skin_configuration 操作手冊:外觀設定] 以取得如何開啟外觀並設為預設值的資訊。",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (已開啟)",
-       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''已關閉''')"
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''已停用''')"
 }
index af37630..1ed78b3 100644 (file)
@@ -45,3 +45,6 @@ $namespaceAliases = array(
        'Kategorie_Diskussion' => NS_CATEGORY_TALK,
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
index ef0d72c..2f6c650 100644 (file)
@@ -104,6 +104,9 @@ $namespaceAliases = array(
 $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 $linkTrail = '/^([äöüėëijßəğåůæœça-z]+)(.*)$/sDu';
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktive', 'AktiveMetmaacher', 'Aktive_Metmaacher', 'AktiveMedmaacher', 'Aktive_Medmaacher' ),
        'Allmessages'               => array( 'MediaWiki-Appachtemang' ),
index 4ae749a..8850302 100644 (file)
@@ -48,6 +48,9 @@ $namespaceAliases = array(
        'Bild_Diskussioun' => NS_FILE_TALK,
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktiv_Benotzer' ),
        'Allmessages'               => array( 'All_Systemmessagen' ),
index 3397894..e66cb02 100644 (file)
@@ -131,6 +131,9 @@ $dateFormats = array(
        'ymd both' => 'H:i, Y M j.',
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Allmessages'               => array( 'Systemnarichten' ),
        'Allpages'                  => array( 'Alle Sieden' ),
index 5c835dc..8b7916f 100644 (file)
@@ -50,6 +50,9 @@ $namespaceAliases = array(
        'Kategorie_Diskussion' => NS_CATEGORY_TALK,
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Listadmins'                => array( 'Verwalter', 'Administratoren' ),
        'Listbots'                  => array( 'Waddefresser', 'Bots' ),
index c0832fd..edba76a 100644 (file)
@@ -58,3 +58,6 @@ $namespaceAliases = array(
        'Kadegorie_Dischbediere' => NS_CATEGORY_TALK,
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
index 2ec847b..494951f 100644 (file)
@@ -59,3 +59,6 @@ $specialPageAliases = array(
        'Watchlist'                 => array( 'Bäoobôchdungslisdâ' ),
 );
 
+// Remove German aliases
+$namespaceGenderAliases = array();
+
diff --git a/maintenance/archives/patch-fa_major_mime-chemical.sql b/maintenance/archives/patch-fa_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..be9b0ff
--- /dev/null
@@ -0,0 +1,3 @@
+ALTER TABLE /*$wgDBprefix*/filearchive
+  CHANGE  fa_major_mime fa_major_mime ENUM('unknown','application','audio','image','text','video','message','model','multipart','chemical');
+
diff --git a/maintenance/archives/patch-img_major_mime-chemical.sql b/maintenance/archives/patch-img_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..4bde446
--- /dev/null
@@ -0,0 +1,3 @@
+ALTER TABLE /*$wgDBprefix*/image
+  CHANGE  img_major_mime img_major_mime ENUM('unknown','application','audio','image','text','video','message','model','multipart','chemical');
+
diff --git a/maintenance/archives/patch-oi_major_mime-chemical.sql b/maintenance/archives/patch-oi_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..e3b4552
--- /dev/null
@@ -0,0 +1,3 @@
+ALTER TABLE /*$wgDBprefix*/oldimage
+  CHANGE  oi_major_mime oi_major_mime ENUM('unknown','application','audio','image','text','video','message','model','multipart','chemical');
+
index 9ac204d..aeadc93 100644 (file)
@@ -125,6 +125,8 @@ EOT;
 
        /**
         * Copy all rows from $srcTable to $dstTable
+        * @param string $srcTable
+        * @param string $dstTable
         */
        function sync( $srcTable, $dstTable ) {
                $batchSize = 1000;
index 7fca377..5f77637 100644 (file)
@@ -343,6 +343,7 @@ class TextPassDumper extends BackupDumper {
 
        /**
         * @throws MWException Failure to parse XML input
+        * @param string $input
         * @return bool
         */
        function readDump( $input ) {
index 6ef4909..d1c2edd 100644 (file)
@@ -345,7 +345,6 @@ class CheckSyntax extends Maintenance {
         * or pointless ?> closing tags at the end.
         *
         * @param string $file String Path to a file to check for errors
-        * @return bool
         */
        private function checkForMistakes( $file ) {
                foreach ( $this->mNoStyleCheckPaths as $regex ) {
index 0d3e643..88776f4 100644 (file)
@@ -43,6 +43,7 @@ class CommandLineInc extends Maintenance {
 
        /**
         * No help, it would just be misleading since it misses custom options
+        * @param bool $force
         */
        protected function maybeHelp( $force = false ) {
                if ( !$force ) {
index 3d30b83..dbe9698 100644 (file)
@@ -30,8 +30,8 @@ require_once __DIR__ . '/Maintenance.php';
 class DeleteEqualMessages extends Maintenance {
        public function __construct() {
                parent::__construct();
-               $this->mDescription = "Deletes all pages in the MediaWiki namespace that are equal to '
-                       . 'the default message";
+               $this->mDescription = 'Deletes all pages in the MediaWiki namespace that are equal to '
+                       . 'the default message';
                $this->addOption( 'delete', 'Actually delete the pages (default: dry run)' );
                $this->addOption( 'delete-talk', 'Don\'t leave orphaned talk pages behind during deletion' );
                $this->addOption( 'lang-code', 'Check for subpages of this language code (default: root '
@@ -41,6 +41,7 @@ class DeleteEqualMessages extends Maintenance {
 
        /**
         * @param string|bool $langCode See --lang-code option.
+        * @param array &$messageInfo
         */
        protected function fetchMessageInfo( $langCode, array &$messageInfo ) {
                global $wgContLang;
@@ -137,10 +138,10 @@ class DeleteEqualMessages extends Maintenance {
                        return;
                }
 
-               $this->output( "\n{$messageInfo['relevantPages']} pages in the MediaWiki namespace ' .
-                       'override messages." );
-               $this->output( "\n{$messageInfo['equalPages']} pages are equal to the default message ' .
-                       '(+ {$messageInfo['equalPagesTalks']} talk pages).\n" );
+               $this->output( "\n{$messageInfo['relevantPages']} pages in the MediaWiki namespace "
+                       . "override messages." );
+               $this->output( "\n{$messageInfo['equalPages']} pages are equal to the default message "
+                       . "(+ {$messageInfo['equalPagesTalks']} talk pages).\n" );
 
                if ( !$doDelete ) {
                        $list = '';
index 81bc06e..fc72908 100644 (file)
@@ -431,6 +431,7 @@ ai
 aifc
 aiff
 aiprop
+airtel
 aisort
 ajaxwatch
 al
@@ -461,6 +462,7 @@ allpagesbadtitle
 allpagesprefix
 allpagesredirect
 allpagessubmit
+allpartners
 allredirects
 allrev
 alltitles
@@ -480,6 +482,7 @@ anchorclose
 anchorencode
 and
 andconvert
+andreescu
 andtitle
 anon
 anoneditwarning
@@ -594,7 +597,6 @@ autogen
 autogenerated
 autohide
 autoload
-autoload
 autoloader
 autoloaders
 autoloading
@@ -660,6 +662,7 @@ badversion
 balancer
 balancers
 banjar
+barebone
 barstein
 base
 basefont
@@ -752,6 +755,7 @@ bolding
 booksources
 bool
 boolean
+bordercolor
 borderhack
 bot
 botedit
@@ -870,6 +874,7 @@ cedil
 ceebc
 cellpadding
 cellspacing
+cellulant
 central
 centralauth
 centralnotice
@@ -1076,6 +1081,7 @@ danga
 danielc
 darr
 datalen
+datapath
 dataset
 datasets
 datasize
@@ -1262,6 +1268,7 @@ dropdown
 dump
 dumpfm
 dupfunc
+dupl
 duplicatefiles
 duplicatesoffile
 dvips
@@ -1394,6 +1401,7 @@ epcampus
 epcoordinator
 epinstructor
 eponline
+eqiad
 erevoke
 errno
 error
@@ -1589,6 +1597,7 @@ forcebot
 forceditsummary
 forceeditsummary
 forcelinkupdate
+forcerecursivelinkupdate
 forcetoc
 forcontent
 formaction
@@ -1866,6 +1875,7 @@ ilfrom
 ilto
 im
 image
+imagecolorallocate
 imagegetsize
 imageinfo
 imageinvalidfilename
@@ -2050,6 +2060,7 @@ iwltitle
 iwprefix
 iwtitle
 iwurl
+ized
 javascript
 javascripttest
 jbartsh
@@ -2120,6 +2131,7 @@ lastdot
 lastedit
 lasteditor
 lastedittime
+lastfile
 lastlink
 lastmod
 lastmodifiedat
@@ -2171,6 +2183,7 @@ linkarr
 linkcolour
 linkprefix
 linkprefixcharset
+linkpurge
 links
 linkstoimage
 linktbl
@@ -2291,6 +2304,7 @@ mailtext
 mailto
 mainmodule
 mainpage
+maint
 maintainership
 makesafe
 male
@@ -2338,6 +2352,7 @@ medialink
 mediaqueries
 mediatype
 mediawarning
+mediawiki
 mediawiki's
 mediawikipage
 megapixels
@@ -2484,6 +2499,7 @@ mtime
 mtype
 mullane
 multi
+multiactions
 multibyte
 multicast
 multipage
@@ -2610,6 +2626,7 @@ nextredirect
 nextrevision
 nextval
 nfkc
+nfkd
 nginx
 nheight
 niklas
@@ -2945,6 +2962,7 @@ opensearchdescription
 openssl's
 openxml
 openxmlformats
+operamini
 oplus
 oppositedm
 optgroup
@@ -2959,6 +2977,7 @@ ordertype
 ordf
 ordm
 org
+orghttp
 origcategory
 ortime
 oslash
@@ -3030,6 +3049,7 @@ pagetriagetagging
 pagetriagetemplate
 pageurl
 pageview
+pango
 param
 parameters
 paraminfo
@@ -3130,8 +3150,10 @@ pltitles
 plusminus
 plusmn
 pname
+png'd
 pnmtojpeg
 pnmtopng
+pointsize
 poolcounter
 popts
 popularpages
@@ -3740,6 +3762,10 @@ slideshow
 sm
 smaxage
 smil
+smpp
+sms's
+smscontent
+smslogs
 smtp
 snippet
 sodipodi
@@ -3797,6 +3823,7 @@ stabilize
 stable
 stablesettings
 stansvik
+starcode
 start
 startid
 startime
@@ -3821,6 +3848,7 @@ stopwords
 storedversion
 strcasecmp
 strcmp
+strftime
 string
 stripos
 stripslashes
@@ -3937,6 +3965,7 @@ taglist
 tags
 tagset
 tagstack
+tahoma
 tailorings
 talk
 talkable
@@ -4096,6 +4125,7 @@ toparse
 topbar
 toplevel
 toplinks
+topojson
 toponly
 torev
 torevid
@@ -4128,6 +4158,7 @@ troff
 true
 truespeed
 trustworthy
+truteq
 truthy
 tsearch
 tsquery
@@ -4192,6 +4223,7 @@ unhelpful
 unhidden
 unhide
 unidata
+unidecode
 unindent
 unindexed
 uniq
@@ -4359,6 +4391,9 @@ usertoollinks
 useskin
 useto
 usort
+usrmonth
+ussd
+ussdcontent
 ustar
 ustoken
 utfnormal
@@ -4419,6 +4454,7 @@ vorbis
 vpad
 vrml
 vslow
+vumi
 vvcv
 vxml
 wais
@@ -4456,6 +4492,7 @@ wbxml
 wddx
 wddxfm
 weblog
+weblogs
 webm
 webp
 webrequest
@@ -4498,17 +4535,23 @@ wikilove
 wikiloveimagelog
 wikimedia
 wikimediacommons
+wikimediafoundation
+wikinews
 wikipage
 wikipedia
 wikipedian
 wikipedias
+wikiquote
 wikis
+wikisource
 wikisyntax
 wikitable
 wikitables
 wikitech
 wikitext
 wikiuser
+wikiversity
+wikivoyage
 wiktionary
 wincache
 wininet
@@ -4533,6 +4576,7 @@ wmls
 wmlsc
 wmlscript
 wmlscriptc
+wmnet
 wordcount
 wordprocessingml
 wordwg
@@ -4547,6 +4591,7 @@ writerequired
 writerights
 wrongpassword
 x
+xanalytics
 xbitmap
 xcache
 xcancel
@@ -4603,6 +4648,7 @@ yourvariant
 yourwiki
 yuml
 yyyymmddhhiiss
+zcmd
 zerobanner
 zerobar
 zerobutton
@@ -4610,11 +4656,14 @@ zeroconfig
 zerodontask
 zerodot
 zeroinfo
+zeronet
 zeroportal
+zfile
 zhdaemon
 zhengzhu
 zhtable
 zijdel
+zlang
 zlib
 zoffset
 zrma
index 074388f..36760d7 100644 (file)
@@ -99,6 +99,7 @@ class FindHooks extends Maintenance {
                        $IP . '/includes/revisiondelete/',
                        $IP . '/includes/search/',
                        $IP . '/includes/site/',
+                       $IP . '/includes/skins/',
                        $IP . '/includes/specialpage/',
                        $IP . '/includes/specials/',
                        $IP . '/includes/upload/',
@@ -109,9 +110,6 @@ class FindHooks extends Maintenance {
                        $IP . '/tests/',
                        $IP . '/tests/parser/',
                        $IP . '/tests/phpunit/suites/',
-                       $IP . '/skins/',
-                       $IP . '/skins/MonoBook/',
-                       $IP . '/skins/Vector/',
                );
 
                foreach ( $pathinc as $dir ) {
@@ -136,7 +134,8 @@ class FindHooks extends Maintenance {
 
        /**
         * Get the hook documentation, either locally or from MediaWiki.org
-        * @return Array of documented hooks
+        * @param string $doc
+        * @return array Array of documented hooks
         */
        private function getHooksFromDoc( $doc ) {
                if ( $this->hasOption( 'online' ) ) {
@@ -149,7 +148,7 @@ class FindHooks extends Maintenance {
        /**
         * Get hooks from a local file (for example docs/hooks.txt)
         * @param string $doc Filename to look in
-        * @return Array of documented hooks
+        * @return array Array of documented hooks
         */
        private function getHooksFromLocalDoc( $doc ) {
                $m = array();
@@ -161,7 +160,7 @@ class FindHooks extends Maintenance {
 
        /**
         * Get hooks from www.mediawiki.org using the API
-        * @return Array of documented hooks
+        * @return array Array of documented hooks
         */
        private function getHooksFromOnlineDoc() {
                // All hooks
@@ -199,7 +198,7 @@ class FindHooks extends Maintenance {
        /**
         * Get hooks from a PHP file
         * @param string $file Full filename to the PHP file.
-        * @return Array of hooks found.
+        * @return array Array of hooks found
         */
        private function getHooksFromFile( $file ) {
                $content = file_get_contents( $file );
@@ -216,7 +215,7 @@ class FindHooks extends Maintenance {
        /**
         * Get hooks from the source code.
         * @param string $path Directory where the include files can be found
-        * @return Array of hooks found.
+        * @return array Array of hooks found
         */
        private function getHooksFromPath( $path ) {
                $hooks = array();
@@ -236,7 +235,7 @@ class FindHooks extends Maintenance {
        /**
         * Get bad hooks (where the hook name could not be determined) from a PHP file
         * @param string $file Full filename to the PHP file.
-        * @return Array of bad wfRunHooks() lines
+        * @return array Array of bad wfRunHooks() lines
         */
        private function getBadHooksFromFile( $file ) {
                $content = file_get_contents( $file );
@@ -254,7 +253,7 @@ class FindHooks extends Maintenance {
        /**
         * Get bad hooks from the source code.
         * @param string $path Directory where the include files can be found
-        * @return Array of bad wfRunHooks() lines
+        * @return array Array of bad wfRunHooks() lines
         */
        private function getBadHooksFromPath( $path ) {
                $hooks = array();
index 8c71699..8a8bcb1 100644 (file)
@@ -27,7 +27,9 @@ class FindMissingFiles extends Maintenance {
 
                $this->mDescription = 'Find registered files with no corresponding file.';
                $this->addOption( 'start', 'Starting file name', false, true );
-               $this->setBatchSize( 200 );
+               $this->addOption( 'mtimeafter', 'Only include files changed since this time', false, true );
+               $this->addOption( 'mtimebefore', 'Only includes files changed before this time', false, true );
+               $this->setBatchSize( 300 );
        }
 
        function execute() {
@@ -37,12 +39,29 @@ class FindMissingFiles extends Maintenance {
                $dbr = $repo->getSlaveDB();
                $be = $repo->getBackend();
 
+               $mtime1 = $dbr->timestampOrNull( $this->getOption( 'mtimeafter', null ) );
+               $mtime2 = $dbr->timestampOrNull( $this->getOption( 'mtimebefore', null ) );
+
+               $tables = array( 'image' );
+               $logJoinOn = array( 'log_namespace' => NS_FILE, 'log_title = img_name' );
+               $logJoinOn['log_type'] = array( 'upload', 'move', 'delete' );
+               if ( $mtime1 ) {
+                       $logJoinOn[] = "log_timestamp > {$dbr->addQuotes($mtime1)}";
+               }
+               if ( $mtime2 ) {
+                       $logJoinOn[] = "log_timestamp < {$dbr->addQuotes($mtime2)}";
+               }
+               if ( $mtime1 || $mtime2 ) {
+                       $tables[] = 'logging';
+               }
+
                do {
-                       $res = $dbr->select( 'image',
-                               'img_name',
+                       $res = $dbr->select( $tables,
+                               array( 'img_name' => 'DISTINCT(img_name)' ),
                                array( "img_name >= " . $dbr->addQuotes( $lastName ) ),
                                __METHOD__,
-                               array( 'ORDER BY' => 'img_name', 'LIMIT' => $this->mBatchSize )
+                               array( 'ORDER BY' => 'img_name', 'LIMIT' => $this->mBatchSize ),
+                               array( 'logging' => array( 'INNER JOIN', $logJoinOn ) )
                        );
 
                        // Check if any of these files are missing...
@@ -66,14 +85,22 @@ class FindMissingFiles extends Maintenance {
                                        array( 'oi_name' => array_keys( $pathsByName ) ),
                                        __METHOD__
                                );
+
+                               $checkPaths = array();
                                foreach ( $ores as $row ) {
                                        if ( !strlen( $row->oi_archive_name ) ) {
                                                continue; // broken row
                                        }
                                        $file = $repo->newFromArchiveName( $row->oi_name, $row->oi_archive_name );
-                                       $path = $file->getPath();
-                                       if ( $be->fileExists( array( 'src' => $path ) ) === false ) {
-                                               $this->output( "$path\n" );
+                                       $checkPaths[] = $file->getPath();
+                               }
+
+                               foreach ( array_chunk( $checkPaths, $this->mBatchSize ) as $paths ) {
+                                       $be->preloadFileStat( array( 'srcs' => $paths ) );
+                                       foreach ( $paths as $path ) {
+                                               if ( $be->fileExists( array( 'src' => $path ) ) === false ) {
+                                                       $this->output( "$path\n" );
+                                               }
                                        }
                                }
                        }
index 1db53f3..d5f6834 100644 (file)
@@ -87,7 +87,7 @@ class GetConfiguration extends Maintenance {
        public function finalSetup() {
                parent::finalSetup();
 
-               $this->regex = $this->getOption( 'regex' ) ? : $this->getOption( 'iregex' );
+               $this->regex = $this->getOption( 'regex' ) ?: $this->getOption( 'iregex' );
                if ( $this->regex ) {
                        $this->regex = '/' . $this->regex . '/';
                        if ( $this->hasOption( 'iregex' ) ) {
diff --git a/maintenance/mssql/archives/patch-fa_major_mime-chemical.sql b/maintenance/mssql/archives/patch-fa_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..1836808
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/filearchive
+DROP CONSTRAINT fa_major_mime_ckc;
+ALTER TABLE /*_*/filearchive
+WITH NOCHECK ADD CONSTRAINT fa_major_mime_ckc CHECK (fa_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical'));
\ No newline at end of file
diff --git a/maintenance/mssql/archives/patch-img_major_mime-chemical.sql b/maintenance/mssql/archives/patch-img_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..eed0786
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/image
+DROP CONSTRAINT img_major_mime_ckc;
+ALTER TABLE /*_*/image
+WITH NOCHECK ADD CONSTRAINT img_major_mime_ckc CHECK (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical'));
\ No newline at end of file
diff --git a/maintenance/mssql/archives/patch-oi_major_mime-chemical.sql b/maintenance/mssql/archives/patch-oi_major_mime-chemical.sql
new file mode 100644 (file)
index 0000000..35482ed
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/oldimage
+DROP CONSTRAINT oi_major_mime_ckc;
+ALTER TABLE /*_*/oldimage
+WITH NOCHECK ADD CONSTRAINT oi_major_mime_ckc CHECK (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical'));
\ No newline at end of file
index daaa81e..b9cd715 100644 (file)
@@ -594,7 +594,7 @@ CREATE TABLE /*_*/image (
   -- SHA-1 content hash in base-36
   img_sha1 nvarchar(32) NOT NULL default '',
 
-  CONSTRAINT img_major_mime_ckc check (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT img_major_mime_ckc check (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')),
   CONSTRAINT img_media_type_ckc check (img_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
@@ -639,7 +639,7 @@ CREATE TABLE /*_*/oldimage (
   oi_deleted tinyint NOT NULL default 0,
   oi_sha1 nvarchar(32) NOT NULL default '',
 
-  CONSTRAINT oi_major_mime_ckc check (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT oi_major_mime_ckc check (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')),
   CONSTRAINT oi_media_type_ckc check (oi_media_type IN('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
@@ -700,7 +700,7 @@ CREATE TABLE /*_*/filearchive (
   -- sha1 hash of file content
   fa_sha1 nvarchar(32) NOT NULL default '',
 
-  CONSTRAINT fa_major_mime_ckc check (fa_major_mime in('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart')),
+  CONSTRAINT fa_major_mime_ckc check (fa_major_mime in('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')),
   CONSTRAINT fa_media_type_ckc check (fa_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE'))
 );
 
diff --git a/maintenance/mssql/update-keys.sql b/maintenance/mssql/update-keys.sql
new file mode 100644 (file)
index 0000000..4d2c1c1
--- /dev/null
@@ -0,0 +1,31 @@
+-- Update keys for Microsoft SQL Server
+-- SQL to insert update keys into the initial tables after a
+-- fresh installation of MediaWiki's database.
+-- This is read and executed by the install script; you should
+-- not have to run it by itself unless doing a manual install.
+-- Insert keys here if either the unnecessary would cause heavy
+-- processing or could potentially cause trouble by lowering field
+-- sizes, adding constraints, etc.
+-- When adjusting field sizes, it is recommended removing old
+-- patches but to play safe, update keys should also inserted here.
+
+--
+-- The /*_*/ comments in this and other files are
+-- replaced with the defined table prefix by the installer
+-- and updater scripts. If you are installing or running
+-- updates manually, you will need to manually insert the
+-- table prefix if any when running these scripts.
+--
+
+INSERT INTO /*_*/updatelog
+       SELECT 'filearchive-fa_major_mime-patch-fa_major_mime-chemical.sql' AS ul_key, null as ul_value
+       UNION SELECT 'image-img_major_mime-patch-img_major_mime-chemical.sql', null
+       UNION SELECT 'oldimage-oi_major_mime-patch-oi_major_mime-chemical.sql', null
+       UNION SELECT 'cl_type-category_types-ck', null
+       UNION SELECT 'fa_major_mime-major_mime-ck', null
+       UNION SELECT 'fa_media_type-media_type-ck', null
+       UNION SELECT 'img_major_mime-major_mime-ck', null
+       UNION SELECT 'img_media_type-media_type-ck', null
+       UNION SELECT 'oi_major_mime-major_mime-ck', null
+       UNION SELECT 'oi_media_type-media_type-ck', null
+       UNION SELECT 'us_media_type-media_type-ck', null;
\ No newline at end of file
index 9155623..cb55f0f 100644 (file)
@@ -159,6 +159,7 @@ class PPFuzzTest {
 
        /**
         * @param Title $title
+        * @return array
         */
        function templateHook( $title ) {
                $titleText = $title->getPrefixedDBkey();
index 4ce9474..6702209 100644 (file)
@@ -164,6 +164,7 @@ class PurgeChangedPages extends Maintenance {
         *
         * @param ResultWrapper $res Query result sorted by $column (ascending)
         * @param string $column
+        * @param int $limit
         * @return array (array of rows, string column value)
         */
        protected function pageableSortedRows( ResultWrapper $res, $column, $limit ) {
index 913e9f0..5093cb3 100644 (file)
@@ -23,6 +23,9 @@
  * @author Rob Church <robchur@gmail.com>
  */
 
+/**
+ * @param bool $delete
+ */
 function PurgeRedundantText( $delete = false ) {
 
        # Data should come off the master, wrapped in a transaction
index 38f346b..b8dc554 100644 (file)
@@ -64,7 +64,7 @@ class ShowJobs extends Maintenance {
                                $claimed = $queue->getAcquiredCount();
                                $abandoned = $queue->getAbandonedCount();
                                $active = max( 0, $claimed - $abandoned );
-                               if ( ( $pending + $claimed + $delayed ) > 0 ) {
+                               if ( ( $pending + $claimed + $delayed + $abandoned ) > 0 ) {
                                        $this->output(
                                                "{$type}: $pending queued; " .
                                                "$claimed claimed ($active active, $abandoned abandoned); " .
index 389b270..afa3ef7 100644 (file)
@@ -39,7 +39,7 @@ class MwSql extends Maintenance {
        }
 
        public function execute() {
-               $wiki = $this->getOption( 'wikidb' ) ? : false;
+               $wiki = $this->getOption( 'wikidb' ) ?: false;
                // Get the appropriate load balancer (for this wiki)
                if ( $this->hasOption( 'cluster' ) ) {
                        $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ), $wiki );
index 43b2598..5c0fd07 100644 (file)
@@ -42,7 +42,7 @@ class Sqlite {
         * Will throw exceptions on SQL errors
         * @param array|string $files
         * @throws MWException
-        * @return True if no error or error string in case of errors
+        * @return bool True if no error or error string in case of errors
         */
        public static function checkSqlSyntax( $files ) {
                if ( !Sqlite::isPresent() ) {
index 0f337ec..cfffbbc 100644 (file)
@@ -136,7 +136,11 @@ class CompressOld extends Maintenance {
                }
        }
 
-       /** @todo document */
+       /**
+        * @todo document
+        * @param int $start
+        * @param string $extdb
+        */
        private function compressOldPages( $start = 0, $extdb = '' ) {
                $chunksize = 50;
                $this->output( "Starting from old_id $start...\n" );
index 307d0b0..910f56b 100644 (file)
@@ -289,6 +289,8 @@ class RecompressTracked {
 
        /**
         * Dispatch a command to a specified slave
+        * @param int $slaveId
+        * @param array|string $args
         */
        function dispatchToSlave( $slaveId, $args ) {
                $args = (array)$args;
@@ -352,6 +354,9 @@ class RecompressTracked {
 
        /**
         * Display a progress report
+        * @param string $label
+        * @param int $current
+        * @param int $end
         */
        function report( $label, $current, $end ) {
                $this->numBatches++;
@@ -707,6 +712,8 @@ class CgzCopyTransaction {
 
        /**
         * Create a transaction from a RecompressTracked object
+        * @param RecompressTracked $parent
+        * @param string $blobClass
         */
        function __construct( $parent, $blobClass ) {
                $this->blobClass = $blobClass;
index dff5cb8..290f164 100644 (file)
@@ -65,6 +65,9 @@ function resolveStubs() {
 
 /**
  * Resolve a history stub
+ * @param int $id
+ * @param string $stubText
+ * @param string $flags
  */
 function resolveStub( $id, $stubText, $flags ) {
        $fname = 'resolveStub';
index b9493cd..14a1502 100644 (file)
@@ -280,6 +280,7 @@ class SyncFileBackend extends Maintenance {
         * Substitute the backend name of storage paths with that of a given one
         *
         * @param array|string $paths List of paths or single string path
+        * @param FileBackend $backend
         * @return array|string
         */
        protected function replaceNamePaths( $paths, FileBackend $backend ) {
index f181e0f..0228684 100644 (file)
@@ -847,7 +847,8 @@ CREATE TABLE /*_*/image (
 
   -- major part of a MIME media type as defined by IANA
   -- see http://www.iana.org/assignments/media-types/
-  img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+  -- for "chemical" cf. http://dx.doi.org/10.1021/ci9803233 by the ACS
+  img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
 
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
@@ -906,7 +907,7 @@ CREATE TABLE /*_*/oldimage (
 
   oi_metadata mediumblob NOT NULL,
   oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
-  oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+  oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
   oi_minor_mime varbinary(100) NOT NULL default "unknown",
   oi_deleted tinyint unsigned NOT NULL default 0,
   oi_sha1 varbinary(32) NOT NULL default ''
@@ -956,7 +957,7 @@ CREATE TABLE /*_*/filearchive (
   fa_metadata mediumblob,
   fa_bits int default 0,
   fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
-  fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") default "unknown",
+  fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown",
   fa_minor_mime varbinary(100) default "unknown",
   fa_description tinyblob,
   fa_user int unsigned default 0,
diff --git a/maintenance/update-keys.sql b/maintenance/update-keys.sql
new file mode 100644 (file)
index 0000000..d5ef924
--- /dev/null
@@ -0,0 +1,29 @@
+-- SQL to insert update keys into the initial tables after a
+-- fresh installation of MediaWiki's database.
+-- This is read and executed by the install script; you should
+-- not have to run it by itself unless doing a manual install.
+-- Insert keys here if either the unnecessary would cause heavy
+-- processing or could potentially cause trouble by lowering field
+-- sizes, adding constraints, etc.
+-- When adjusting field sizes, it is recommended removing old
+-- patches but to play safe, update keys should also inserted here.
+
+-- This is a shared file used for both MySQL and SQLite installs.
+-- Therefore inserting multiple values is not possible using the
+-- INSERT INTO VALUES syntax.
+--
+--
+-- The /*_*/ comments in this and other files are
+-- replaced with the defined table prefix by the installer
+-- and updater scripts. If you are installing or running
+-- updates manually, you will need to manually insert the
+-- table prefix if any when running these scripts.
+--
+
+INSERT INTO /*_*/updatelog
+       SELECT 'filearchive-fa_major_mime-patch-fa_major_mime-chemical.sql' AS ul_key, null as ul_value
+       UNION SELECT 'image-img_major_mime-patch-img_major_mime-chemical.sql', null
+       UNION SELECT 'oldimage-oi_major_mime-patch-oi_major_mime-chemical.sql', null
+       UNION SELECT 'user_groups-ug_group-patch-ug_group-length-increase-255.sql', null
+       UNION SELECT 'user_former_groups-ufg_group-patch-ufg_group-length-increase-255.sql', null
+       UNION SELECT 'user_properties-up_property-patch-up_property.sql', null;
\ No newline at end of file
index 19c1d24..342ffba 100644 (file)
@@ -219,6 +219,9 @@ TEXT;
        /**
         * Return an SQL expression selecting rows which sort above the given row,
         * assuming an ordering of cl_to, cl_type, cl_from
+        * @param stdClass $row
+        * @param DatabaseBase $dbw
+        * @return string
         */
        function getBatchCondition( $row, $dbw ) {
                $fields = array( 'cl_to', 'cl_type', 'cl_from' );
index 9b8714d..99ba3b8 100644 (file)
@@ -40,7 +40,11 @@ class UserOptions {
 
        private $mMode, $mReady;
 
-       /** Constructor. Will show usage and exit if script options are not correct */
+       /**
+        * Constructor. Will show usage and exit if script options are not correct
+        * @param array $opts
+        * @param array $args
+        */
        function __construct( $opts, $args ) {
                if ( !$this->checkOpts( $opts, $args ) ) {
                        UserOptions::showUsageAndExit();
diff --git a/mw-config/config-cc.css b/mw-config/config-cc.css
new file mode 100644 (file)
index 0000000..ecd10fa
--- /dev/null
@@ -0,0 +1,56 @@
+/**
+ * Copy of CC standard stylesheet, plus tweaks for iframe usage
+ */
+
+body {
+       margin: 0;
+       background: #eee;
+       font-family: Verdana;
+       color: #333;
+}
+
+#main {
+       border: 1px solid #D0D0D0;
+       background: #fff;
+       margin: 0.5em;
+}
+
+/**
+ * Looks like you have to specify the width of #menu
+ * or IE5 Mac stretches it all the way across the div, and
+ * Opera streches it half way.
+ */
+
+#main #menu {
+       border-left: 1px dotted #ccc;
+       float: right;
+       width: 230px;
+       background: white;
+       margin: 0 0 10px 10px;
+}
+
+td, h3, p, h1, pre {
+       margin: 0 20px 20px 20px;
+       font-size: 11px;
+       line-height: 140%;
+}
+
+.header {
+       padding-left: 10px;
+       padding-top: 10px;
+}
+
+.nav {
+       padding-left: 10px;
+       padding-bottom: 10px;
+       font-size: 11px;
+       margin-bottom: 16px;
+}
+
+#menu p {
+       font-size: 11px;
+}
+
+.dent {
+       margin-left: 64px;
+}
diff --git a/mw-config/config.css b/mw-config/config.css
new file mode 100644 (file)
index 0000000..17b2039
--- /dev/null
@@ -0,0 +1,174 @@
+.env-check {
+       font-size: 90%;
+       margin: 1em 0 1em 2.5em;
+}
+
+.config-section {
+       margin-top: 2em;
+}
+
+.config-block {
+       margin-top: 2em;
+       display: block;
+
+}
+
+.config-block-label {
+       display: block;
+       margin-bottom: .2em;
+}
+
+.config-block-label label, .config-label {
+       font-weight: bold;
+       padding-right: .5em;
+       padding-top: .2em;
+}
+
+.config-block-elements {
+       margin-left: 2em;
+}
+
+.config-block-elements li {
+       list-style: none;
+}
+
+.config-input {
+       clear: left;
+       zoom: 100%; /* IE hack */
+}
+
+.config-page-wrapper {
+       padding: 0.5em;
+}
+
+.config-page-list {
+       float: right;
+       width: 12em;
+       border: 1px solid #aaa;
+       background: #fff;
+       padding: 0.5em;
+       /* 3em left margin to leave space between the list and the page-content */
+       margin: 0.5em 0.5em 0.5em 3.5em;
+}
+
+.config-page {
+       padding: 0.5em 0.5em 0.5em 2em;
+       margin: 0.5em 0.5em 0.5em 0.5em;
+       background: #eee;
+}
+
+.config-submit {
+       clear: left;
+       text-align: center;
+       padding: 1em;
+}
+
+.config-submit input {
+       margin-left: 0.5em;
+       margin-right: 0.5em;
+}
+
+.config-page-disabled {
+       color: #aaa;
+}
+
+.config-error-box {
+       border: 2px solid #f00;
+}
+
+.config-page-current {
+       font-weight: bold;
+}
+
+.config-message {
+       display: list-item;
+       line-height: 1.5em;
+       /* @embed */
+       list-style-image: url(images/bullet.gif);
+       list-style-type: square;
+}
+
+.config-input-text {
+       width: 20em;
+       margin-right: 1em;
+}
+
+.config-input-check {
+       margin-left: 10em;
+}
+
+.config-skins-item {
+       /* Clearfix */
+       clear: left;
+       overflow: hidden;
+}
+
+.config-skins-item .config-input-check {
+       margin-left: 10em;
+       width: 20em;
+       float: left;
+}
+
+.config-skins-item .config-skins-use-as-default {
+       float: left;
+}
+
+.error {
+       color: red;
+       background-color: #fff;
+       font-weight: bold;
+       left: 1em;
+       font-size: 100%;
+}
+
+.config-settings-block {
+       list-style-type: none;
+       list-style-image: none;
+       margin: 0;
+       padding: 0;
+}
+
+.btn-install {
+       font-weight: bold;
+       font-size: 110%;
+       padding: .2em .3em;
+}
+
+.success-message {
+       font-weight: bold;
+       font-size: 110%;
+       color: green;
+}
+
+.success-box {
+       font-size: 130%;
+}
+
+.config-cc-wrapper {
+       clear: left;
+       /* If you change this height, also change it in WebInstallerOptions::submitCC() */
+       height: 54em;
+}
+
+.config-plainlink a {
+       background: none !important;
+       padding: 0 !important;
+}
+
+.config-download-link {
+       font-size: 1.8em;
+       margin-left: 2em;
+}
+
+.config-download-link a {
+       background: url(images/download-32.png) no-repeat center left;
+       padding-left: 40px; /* 32 px for the image (above), plus some breathing room */
+       height: 32px; /* provide enough vertical room for the image */
+       display: inline-block; /* allow the height property (above) to work */
+       line-height: 32px; /* center the text vertically */
+}
+
+#config-live-log {
+       overflow: hidden;
+       min-width: 20em;
+}
diff --git a/mw-config/config.js b/mw-config/config.js
new file mode 100644 (file)
index 0000000..2886e08
--- /dev/null
@@ -0,0 +1,108 @@
+( function ( $ ) {
+       $( function () {
+               var $label, labelText;
+
+               function syncText() {
+                       var value = $(this).val()
+                               .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
+                               .replace( /&/, '&amp;' )
+                               .replace( /__+/g, '_' )
+                               .replace( /^_+/, '' )
+                               .replace( /_+$/, '' );
+                       value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
+                       $label.text( labelText.replace( '$1', value ) );
+               }
+
+               // Set up the help system
+               $( '.mw-help-field-data' )
+                       .hide()
+                       .closest( '.mw-help-field-container' )
+                               .find( '.mw-help-field-hint' )
+                                       .show()
+                                       .click( function () {
+                                               $(this)
+                                                       .closest( '.mw-help-field-container' )
+                                                               .find( '.mw-help-field-data' )
+                                                                       .slideToggle( 'fast' );
+                                       } );
+
+               // Show/hide code for DB-specific options
+               // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
+               $( '.dbRadio' ).each( function () {
+                       $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
+               } );
+               $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
+               $( '.dbRadio' ).click( function () {
+                       var $checked = $( '.dbRadio:checked' ),
+                               $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) );
+                       if ( $wrapper.is( ':hidden' ) ) {
+                               $( '.dbWrapper' ).hide( 'slow' );
+                               $wrapper.show( 'slow' );
+                       }
+               } );
+
+               // Scroll to the bottom of upgrade log
+               $( '#config-live-log' ).children( 'textarea' ).each( function () {
+                       this.scrollTop = this.scrollHeight;
+               } );
+
+               // Show/hide Creative Commons thingy
+               $( '.licenseRadio' ).click( function () {
+                       var $wrapper = $( '#config-cc-wrapper' );
+                       if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
+                               $wrapper.show( 'slow' );
+                       } else {
+                               $wrapper.hide( 'slow' );
+                       }
+               } );
+
+               // Show/hide random stuff (email, upload)
+               $( '.showHideRadio' ).click( function () {
+                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+                       if ( $(this).is( ':checked' ) ) {
+                               $wrapper.show( 'slow' );
+                       } else {
+                               $wrapper.hide( 'slow' );
+                       }
+               } );
+               $( '.hideShowRadio' ).click( function () {
+                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+                       if ( $(this).is( ':checked' ) ) {
+                               $wrapper.hide( 'slow' );
+                       } else {
+                               $wrapper.show( 'slow' );
+                       }
+               } );
+
+               // Hide "other" textboxes by default
+               // Should not be done in CSS for javascript disabled compatibility
+               $( '.enabledByOther' ).closest( '.config-block' ).hide();
+
+               // Enable/disable "other" textboxes
+               $( '.enableForOther' ).click( function () {
+                       var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
+                       // FIXME: Ugh, this is ugly
+                       if ( $(this).val() === 'other' ) {
+                               $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
+                       } else {
+                               $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
+                       }
+               } );
+
+               // Synchronize radio button label for sitename with textbox
+               $label = $( 'label[for=config__NamespaceType_site-name]' );
+               labelText = $label.text();
+               $label.text( labelText.replace( '$1', '' ) );
+               $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText );
+
+               // Show/Hide memcached servers when needed
+               $( 'input[name$="config_wgMainCacheType"]' ).change( function () {
+                       var $memc = $( '#config-memcachewrapper' );
+                       if ( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) {
+                               $memc.show( 'slow' );
+                       } else {
+                               $memc.hide( 'slow' );
+                       }
+               } );
+       } );
+}( jQuery ) );
diff --git a/mw-config/images/ajax-loader.gif b/mw-config/images/ajax-loader.gif
new file mode 100644 (file)
index 0000000..72203fd
Binary files /dev/null and b/mw-config/images/ajax-loader.gif differ
diff --git a/mw-config/images/bullet.gif b/mw-config/images/bullet.gif
new file mode 100644 (file)
index 0000000..b43de48
Binary files /dev/null and b/mw-config/images/bullet.gif differ
diff --git a/mw-config/images/critical-32.png b/mw-config/images/critical-32.png
new file mode 100644 (file)
index 0000000..9b38e6a
Binary files /dev/null and b/mw-config/images/critical-32.png differ
diff --git a/mw-config/images/download-32.png b/mw-config/images/download-32.png
new file mode 100644 (file)
index 0000000..e5b8318
Binary files /dev/null and b/mw-config/images/download-32.png differ
diff --git a/mw-config/images/info-32.png b/mw-config/images/info-32.png
new file mode 100644 (file)
index 0000000..ab09e1d
Binary files /dev/null and b/mw-config/images/info-32.png differ
diff --git a/mw-config/images/installer-logo.png b/mw-config/images/installer-logo.png
new file mode 100644 (file)
index 0000000..8c42118
Binary files /dev/null and b/mw-config/images/installer-logo.png differ
diff --git a/mw-config/images/tick-32.png b/mw-config/images/tick-32.png
new file mode 100644 (file)
index 0000000..34cfa9c
Binary files /dev/null and b/mw-config/images/tick-32.png differ
diff --git a/mw-config/images/warning-32.png b/mw-config/images/warning-32.png
new file mode 100644 (file)
index 0000000..0400734
Binary files /dev/null and b/mw-config/images/warning-32.png differ
index adeda88..4a9827a 100644 (file)
@@ -117,6 +117,12 @@ return array(
                'targets' => array( 'desktop', 'mobile' ),
        ),
 
+       'mediawiki.skinning.content.externallinks' => array(
+               'styles' => array(
+                       'resources/src/mediawiki.skinning/content.externallinks.css' => array( 'media' => 'screen' ),
+               ),
+       ),
+
        /* jQuery */
 
        'jquery' => array(
@@ -946,6 +952,7 @@ return array(
        ),
        'mediawiki.Uri' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Uri.js',
+               'dependencies' => 'mediawiki.util',
                'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.user' => array(
@@ -1044,13 +1051,18 @@ return array(
                        'postedit-confirmation-saved',
                ),
        ),
-       'mediawiki.action.view.redirectToFragment' => array(
-               'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.redirectToFragment.js',
+       'mediawiki.action.view.redirect' => array(
+               'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.redirect.js',
                'dependencies' => array(
                        'jquery.client',
                ),
                'position' => 'top',
        ),
+       // Deployment hack for compatibility with cached HTML, remove before 1.24 release
+       'mediawiki.action.view.redirectToFragment' => array(
+               'dependencies' => 'mediawiki.action.view.redirect',
+               'position' => 'top',
+       ),
        'mediawiki.action.view.rightClickEdit' => array(
                'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
        ),
@@ -1071,7 +1083,8 @@ return array(
        'mediawiki.language' => array(
                'scripts' => array(
                        'resources/src/mediawiki.language/mediawiki.language.js',
-                       'resources/src/mediawiki.language/mediawiki.language.numbers.js'
+                       'resources/src/mediawiki.language/mediawiki.language.numbers.js',
+                       'resources/src/mediawiki.language/mediawiki.language.fallback.js',
                ),
                'languageScripts' => array(
                        'bs' => 'resources/src/mediawiki.language/languages/bs.js',
@@ -1186,6 +1199,7 @@ return array(
                'dependencies' => array(
                        'mediawiki.api.watch',
                        'mediawiki.notify',
+                       'mediawiki.page.startup',
                        'mediawiki.util',
                        'jquery.accessKeyLabel',
                        'jquery.mwExtension',
@@ -1249,6 +1263,9 @@ return array(
        'mediawiki.special.changeslist.enhanced' => array(
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
        ),
+       'mediawiki.special.import' => array(
+               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.import.js',
+       ),
        'mediawiki.special.movePage' => array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.movePage.js',
                'dependencies' => 'jquery.byteLimit',
@@ -1360,7 +1377,8 @@ return array(
                        'mediawiki.api',
                        'mediawiki.api.watch',
                        'mediawiki.notify',
-                       'mediawiki.Title'
+                       'mediawiki.Title',
+                       'mediawiki.util',
                ),
        ),
        'mediawiki.special.javaScriptTest' => array(
@@ -1377,6 +1395,15 @@ return array(
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.version.css',
        ),
 
+       /* MediaWiki Installer */
+
+       'mediawiki.legacy.config' => array(
+               // Used in the web installer. Test it after modifying this definition!
+               // These files are not actually loaded via ResourceLoader, so dependencies etc. won't work.
+               'scripts' => 'mw-config/config.js',
+               'styles' => 'mw-config/config.css',
+       ),
+
        /* MediaWiki Legacy */
 
        'mediawiki.legacy.ajax' => array(
@@ -1394,14 +1421,6 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'mediawiki.legacy.config' => array(
-               // Used in the web installer. Test it after modifying this definition!
-               'scripts' => 'common/config.js',
-               'styles' => array( 'common/config.css' ),
-               'remoteBasePath' => $GLOBALS['wgStylePath'],
-               'localBasePath' => $GLOBALS['wgStyleDirectory'],
-               'dependencies' => 'mediawiki.legacy.wikibits',
-       ),
        'mediawiki.legacy.protect' => array(
                'scripts' => 'common/protect.js',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
@@ -1456,6 +1475,8 @@ return array(
                'styles' => array(
                        'resources/src/mediawiki.ui/components/checkbox.less',
                ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
        // Lightweight module for anchor styles
        'mediawiki.ui.anchor' => array(
@@ -1485,6 +1506,7 @@ return array(
        'es5-shim' => array(
                'scripts' => array(
                        'resources/lib/es5-shim/es5-shim.js',
+                       'resources/src/polyfill-object-create.js',
                ),
                'targets' => array( 'desktop', 'mobile' ),
                'skipFunction' => 'resources/src/es5-skip.js',
@@ -1515,7 +1537,7 @@ return array(
                'skinStyles' => array(
                        'default' => 'resources/lib/oojs-ui/oojs-ui-apex.css',
                        // FIXME As of July 2014, this is to be gone "in a couple of months".
-                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-agora.css',
+                       'minerva' => 'resources/lib/oojs-ui/oojs-ui-minerva.css',
                ),
                'messages' => array(
                        'ooui-outline-control-move-down',
index eb13f59..b01e2cd 100644 (file)
        },
        "ooui-outline-control-move-down": "انقل العنصر للأسفل",
        "ooui-outline-control-move-up": "انقل العنصر للأعلى",
+       "ooui-outline-control-remove": "أزل العنصر",
        "ooui-toolbar-more": "مزيد",
+       "ooui-dialog-message-accept": "موافق",
+       "ooui-dialog-message-reject": "ألغ",
+       "ooui-dialog-process-error": "حدث خطأ",
+       "ooui-dialog-process-dismiss": "أغلق",
        "ooui-dialog-process-retry": "حاول مرة أخرى"
 }
diff --git a/resources/lib/oojs-ui/i18n/arq.json b/resources/lib/oojs-ui/i18n/arq.json
new file mode 100644 (file)
index 0000000..8098781
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Bachounda"
+               ]
+       },
+       "ooui-outline-control-move-down": "هبط الشيئ للتحت",
+       "ooui-outline-control-move-up": "طلع الشيئ للفوق",
+       "ooui-outline-control-remove": "أمحي العنصر",
+       "ooui-toolbar-more": "زيادة",
+       "ooui-dialog-message-accept": "مليح",
+       "ooui-dialog-message-reject": "رجَع",
+       "ooui-dialog-process-error": "حاجه ما خدمتش مليح",
+       "ooui-dialog-process-dismiss": "أرفضها",
+       "ooui-dialog-process-retry": "عاود جرب"
+}
index 44247ca..6959191 100644 (file)
@@ -6,9 +6,13 @@
                        "Y-M D"
                ]
        },
-       "ooui-dialog-action-close": "Serriñ",
        "ooui-outline-control-move-down": "Lakaat an elfenn da ziskenn",
        "ooui-outline-control-move-up": "Lakaat an elfenn da bignat",
        "ooui-outline-control-remove": "Tennañ an elfenn",
-       "ooui-toolbar-more": "Muioc'h"
+       "ooui-toolbar-more": "Muioc'h",
+       "ooui-dialog-message-accept": "Mat eo",
+       "ooui-dialog-message-reject": "Nullañ",
+       "ooui-dialog-process-error": "Un dra bennak a-dreuz a zo bet",
+       "ooui-dialog-process-dismiss": "Disteurel",
+       "ooui-dialog-process-retry": "Klask en-dro"
 }
index fa3089f..cddd46e 100644 (file)
                        "Tifa93"
                ]
        },
-       "ooui-dialog-action-close": "Κλείσιμο",
        "ooui-outline-control-move-down": "Μετακίνηση στοιχείου προς τα κάτω",
        "ooui-outline-control-move-up": "Μετακίνηση στοιχείου προς τα επάνω",
        "ooui-outline-control-remove": "Αφαίρεση στοιχείου",
-       "ooui-toolbar-more": "Περισσότερα"
+       "ooui-toolbar-more": "Περισσότερα",
+       "ooui-dialog-message-accept": "ΟΚ",
+       "ooui-dialog-message-reject": "Ακύρωση",
+       "ooui-dialog-process-error": "Κάτι πήγε στραβά",
+       "ooui-dialog-process-dismiss": "Απόρριψη",
+       "ooui-dialog-process-retry": "Δοκιμάστε ξανά"
 }
index d72b3af..2d8315b 100644 (file)
@@ -6,9 +6,12 @@
                        "The Discoverer"
                ]
        },
-       "ooui-dialog-action-close": "બંધ કરો",
        "ooui-outline-control-move-down": "વસ્તુ નીચે ખસેડો",
        "ooui-outline-control-move-up": "વસ્તુ ઉપર ખસેડો",
        "ooui-outline-control-remove": "વસ્તુ હટાવો",
-       "ooui-toolbar-more": "વધુ"
+       "ooui-toolbar-more": "વધુ",
+       "ooui-dialog-message-accept": "બરાબર",
+       "ooui-dialog-message-reject": "રદ કરો",
+       "ooui-dialog-process-error": "કંઇક ગરબડ થઇ",
+       "ooui-dialog-process-retry": "ફરી પ્રયત્ન કરો"
 }
index f16f984..c3724cf 100644 (file)
@@ -3,12 +3,17 @@
                "authors": [
                        "MaGa",
                        "Roberta F.",
-                       "SpeedyGonsales"
+                       "SpeedyGonsales",
+                       "Zeljko.filipin"
                ]
        },
-       "ooui-dialog-action-close": "zatvori",
        "ooui-outline-control-move-down": "Premjesti stavku dolje",
        "ooui-outline-control-move-up": "Premjesti stavku gore",
        "ooui-outline-control-remove": "Ukloni",
-       "ooui-toolbar-more": "Više mogućnosti"
+       "ooui-toolbar-more": "Više",
+       "ooui-dialog-message-accept": "U redu",
+       "ooui-dialog-message-reject": "Odustani",
+       "ooui-dialog-process-error": "Nešto je pošlo po zlu",
+       "ooui-dialog-process-dismiss": "Zatvori",
+       "ooui-dialog-process-retry": "Pokušajte ponovo"
 }
index 6069625..9117a05 100644 (file)
@@ -13,6 +13,8 @@
        "ooui-outline-control-move-up": "Elem mozgatása felfelé",
        "ooui-outline-control-remove": "Elem eltávolítása",
        "ooui-toolbar-more": "Tovább...",
+       "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Mégse",
+       "ooui-dialog-process-dismiss": "Elrejt",
        "ooui-dialog-process-retry": "Próbáld újra"
 }
index 70c1e07..2ac8dc1 100644 (file)
@@ -4,16 +4,17 @@
                        "Fryed-peach",
                        "Miya",
                        "Penn Station",
-                       "Shirayuki"
+                       "Shirayuki",
+                       "Takot"
                ]
        },
-       "ooui-dialog-action-close": "閉じる",
        "ooui-outline-control-move-down": "項目を下に移動させる",
        "ooui-outline-control-move-up": "項目を上に移動させる",
        "ooui-outline-control-remove": "項目を除去",
        "ooui-toolbar-more": "その他",
-       "ooui-dialog-confirm-title": "確認",
-       "ooui-dialog-confirm-default-prompt": "本当によろしいですか?",
-       "ooui-dialog-confirm-default-ok": "OK",
-       "ooui-dialog-confirm-default-cancel": "キャンセル"
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "キャンセル",
+       "ooui-dialog-process-error": "エラーが発生しました…",
+       "ooui-dialog-process-dismiss": "閉じる",
+       "ooui-dialog-process-retry": "もう一度お試しください"
 }
index 85931f5..0b89e37 100644 (file)
@@ -5,13 +5,13 @@
                        "Nayvik"
                ]
        },
-       "ooui-dialog-action-close": "ಮುಚ್ಚಿ",
        "ooui-outline-control-move-down": "ವಸ್ತು ಕೆಲ್ಗೆ ಸ್ಥಲಾನ್ಥರಿಸು",
        "ooui-outline-control-move-up": "ವಸ್ತು ಮೆಲೆ ಸ್ಥಲಾನ್ಥರಿಸು",
        "ooui-outline-control-remove": "ವಸ್ತು ತೆಗೆ",
        "ooui-toolbar-more": "ಹೆಚ್ಚು",
-       "ooui-dialog-confirm-title": "ಧೃಡಪಡಿಸು",
-       "ooui-dialog-confirm-default-prompt": "ನೀವು ಖ‍ಚಿತವಾಗಿದ್ದೀರಾ?",
-       "ooui-dialog-confirm-default-ok": "ಸರಿ",
-       "ooui-dialog-confirm-default-cancel": "ರದ್ದು"
+       "ooui-dialog-message-accept": "ಸರಿ",
+       "ooui-dialog-message-reject": "ರದ್ದು",
+       "ooui-dialog-process-error": "ಎನೋ ಎಡವಟ್ಟಾಗಿದೆ....",
+       "ooui-dialog-process-dismiss": "ತೆಗೆದುಹಾಕು",
+       "ooui-dialog-process-retry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"
 }
index afd8753..82d91ab 100644 (file)
@@ -6,16 +6,17 @@
                        "Kwj2772",
                        "LFM",
                        "아라",
-                       "고기랑"
+                       "고기랑",
+                       "Ryuch"
                ]
        },
-       "ooui-dialog-action-close": "닫기",
        "ooui-outline-control-move-down": "항목을 아래로 옮기기",
        "ooui-outline-control-move-up": "항목을 위로 옮기기",
        "ooui-outline-control-remove": "항목 지우기",
        "ooui-toolbar-more": "더 보기",
-       "ooui-dialog-confirm-title": "확인",
-       "ooui-dialog-confirm-default-prompt": "확실합니까?",
-       "ooui-dialog-confirm-default-ok": "확인",
-       "ooui-dialog-confirm-default-cancel": "취소"
+       "ooui-dialog-message-accept": "확인",
+       "ooui-dialog-message-reject": "취소",
+       "ooui-dialog-process-error": "무언가가 잘못되었습니다",
+       "ooui-dialog-process-dismiss": "숨기기",
+       "ooui-dialog-process-retry": "다시 시도하세요"
 }
index 98b6bce..3fe75e3 100644 (file)
@@ -5,13 +5,15 @@
                        "Event",
                        "Jeblad",
                        "Laaknor",
-                       "Njardarlogar"
+                       "Njardarlogar",
+                       "Jdforrester"
                ]
        },
        "ooui-outline-control-move-down": "Flytt ned",
        "ooui-outline-control-move-up": "Flytt opp",
        "ooui-outline-control-remove": "Fjern element",
        "ooui-toolbar-more": "Mer",
+       "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Avbryt",
        "ooui-dialog-process-error": "Noe gikk galt",
        "ooui-dialog-process-dismiss": "Lukk",
index dbae538..a7b4c08 100644 (file)
                        "Gloria sah"
                ]
        },
-       "ooui-dialog-action-close": "Sluiten",
        "ooui-outline-control-move-down": "Item omlaag verplaatsen",
        "ooui-outline-control-move-up": "Item omhoog verplaatsen",
        "ooui-outline-control-remove": "Item verwijderen",
        "ooui-toolbar-more": "Meer",
-       "ooui-dialog-confirm-title": "Bevestigen",
-       "ooui-dialog-confirm-default-prompt": "Weet u het zeker?",
-       "ooui-dialog-confirm-default-ok": "Oké",
-       "ooui-dialog-confirm-default-cancel": "Annuleren"
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Annuleren",
+       "ooui-dialog-process-error": "Er is iets misgegaan",
+       "ooui-dialog-process-dismiss": "Sluiten",
+       "ooui-dialog-process-retry": "Opnieuw proberen"
 }
index f9c46d7..510e468 100644 (file)
@@ -5,8 +5,11 @@
                        "Muddyb Blast Producer"
                ]
        },
-       "ooui-dialog-action-close": "Funga",
        "ooui-outline-control-move-down": "Sogeza kipengee chini",
        "ooui-outline-control-move-up": "Sogeza kipengee juu",
-       "ooui-toolbar-more": "Zaidi"
+       "ooui-outline-control-remove": "Toa kitu",
+       "ooui-toolbar-more": "Zaidi",
+       "ooui-dialog-message-accept": "Sawa",
+       "ooui-dialog-message-reject": "Batilisha",
+       "ooui-dialog-process-retry": "Jaribu tena"
 }
index 11aeed4..d6034f0 100644 (file)
                        "Ата"
                ]
        },
-       "ooui-dialog-action-close": "Закрити",
        "ooui-outline-control-move-down": "Перемістити елемент униз",
        "ooui-outline-control-move-up": "Перемістити елемент вгору",
        "ooui-outline-control-remove": "Видалити елемент",
        "ooui-toolbar-more": "Більше",
-       "ooui-dialog-confirm-title": "Підтвердити",
-       "ooui-dialog-confirm-default-prompt": "Ви впевнені?",
-       "ooui-dialog-confirm-default-ok": "Готово",
-       "ooui-dialog-confirm-default-cancel": "Скасувати"
+       "ooui-dialog-message-accept": "Готово",
+       "ooui-dialog-message-reject": "Скасувати",
+       "ooui-dialog-process-error": "Щось пішло не так",
+       "ooui-dialog-process-dismiss": "Приховати",
+       "ooui-dialog-process-retry": "Спробуйте ще раз"
 }
diff --git a/resources/lib/oojs-ui/i18n/yue.json b/resources/lib/oojs-ui/i18n/yue.json
new file mode 100644 (file)
index 0000000..81ad9a9
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Deryck Chan"
+               ]
+       },
+       "ooui-outline-control-move-down": "向下搬",
+       "ooui-outline-control-move-up": "向上搬",
+       "ooui-outline-control-remove": "拎走",
+       "ooui-toolbar-more": "仲有...",
+       "ooui-dialog-message-accept": "好",
+       "ooui-dialog-message-reject": "取消",
+       "ooui-dialog-process-error": "唔對路",
+       "ooui-dialog-process-dismiss": "閂咗佢",
+       "ooui-dialog-process-retry": "再試過"
+}
diff --git a/resources/lib/oojs-ui/images/textures/transparency.svg b/resources/lib/oojs-ui/images/textures/transparency.svg
new file mode 100644 (file)
index 0000000..63a0b57
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="16" height="16" viewBox="0, 0, 16, 16">
+       <g id="transparency">
+               <path d="M0,0 L8,0 L8,8 L0,8 z" fill="#CCCCCC"/>
+               <path d="M8,8 L16,8 L16,16 L8,16 z" fill="#CCCCCC"/>
+               <path d="M8,0 L16,0 L16,8 L8,8 z" fill="#FFFFFF"/>
+               <path d="M0,8 L8,8 L8,16 L0,16 z" fill="#FFFFFF"/>
+       </g>
+</svg>
diff --git a/resources/lib/oojs-ui/oojs-ui-agora.css b/resources/lib/oojs-ui/oojs-ui-agora.css
deleted file mode 100644 (file)
index 22c3079..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*!
- * OOjs UI v0.1.0-pre (0e50d2e336)
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-08-06T12:56:55Z
- */
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-head {
-  top: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-body {
-  top: 0;
-  bottom: 0;
-  z-index: 2;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  bottom: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-     -moz-transition: opacity 250ms ease-in-out;
-      -ms-transition: opacity 250ms ease-in-out;
-       -o-transition: opacity 250ms ease-in-out;
-          transition: opacity 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: translate3d(0, -200%, 0);
-     -moz-transform: translate3d(0, -200%, 0);
-      -ms-transform: translate3d(0, -200%, 0);
-       -o-transform: translate3d(0, -200%, 0);
-          transform: translate3d(0, -200%, 0);
-  -webkit-transition: transform 250ms ease-in-out;
-     -moz-transition: transform 250ms ease-in-out;
-      -ms-transition: transform 250ms ease-in-out;
-       -o-transition: transform 250ms ease-in-out;
-          transition: transform 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: translate3d(0, 0, 0);
-     -moz-transform: translate3d(0, 0, 0);
-      -ms-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  padding-top: 0.5em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: left;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-right: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-right-width: 0;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 2em;
-  line-height: 3.4em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.35em;
-  border-bottom: 1px solid #dddddd;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.35em;
-  padding: 2em 0;
-}
-
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.35em;
-  padding: 0 1em;
-}
-
-.oo-ui-processDialog-location {
-  height: 3.35em;
-  padding: 0.25em 0;
-  text-align: center;
-  cursor: default;
-}
-
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.85em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  min-width: 1.85em;
-  min-height: 1.85em;
-  padding: 0.35em 0.75em;
-  border: 1px solid #dddddd;
-  border-radius: 4px;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 1em;
-  font-weight: bold;
-  line-height: 1.85em;
-  color: #777777;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  vertical-align: middle;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button {
-  border: 1px solid transparent;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label {
-  color: #d11d13;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  padding: 0.75em 0.35em;
-  border: none;
-  border-radius: 0;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button {
-  background-color: #347bff;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  color: #ffffff;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-left: 2.25em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-right: 2.25em;
-}
-
-.oo-ui-processDialog-actions-other {
-  position: absolute;
-  bottom: 1em;
-}
-
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-
-.oo-ui-processDialog-errors {
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-  background-color: rgba(255, 255, 255, 0.9);
-}
-
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-
-.oo-ui-processDialog-errors-title {
-  margin-bottom: 2em;
-  font-size: 1.5em;
-  color: #000;
-}
-
-.oo-ui-processDialog-error {
-  padding: 1em;
-  margin: 1em;
-  text-align: left;
-  background-color: #fff7f7;
-  border: solid 1px #ff9e9e;
-  border-radius: 0.25em;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  width: 3.35em;
-  height: 3.35em;
-  background-size: 2em auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 0 0 1em;
-}
-
-.oo-ui-panelLayout {
-  padding: 1em 3.35em;
-}
-
-.oo-ui-optionWidget {
-  padding: 0.8em 1em 0.8em 3.35em;
-  font-weight: bold;
-  border-bottom: 1px solid #dddddd;
-}
-
-.oo-ui-optionWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
-  padding-right: 1.5em;
-}
-
-.oo-ui-optionWidget-level-0 {
-  padding-left: 3.5em;
-}
-
-.oo-ui-optionWidget-level-0 .oo-ui-iconedElement-icon {
-  left: 1em;
-}
-
-.oo-ui-optionWidget-level-1 {
-  padding-left: 5em;
-}
-
-.oo-ui-optionWidget-level-1 .oo-ui-iconedElement-icon {
-  left: 2.5em;
-}
-
-.oo-ui-optionWidget-level-2 {
-  padding-left: 6.5em;
-}
-
-.oo-ui-optionWidget-level-2 .oo-ui-iconedElement-icon {
-  left: 4em;
-}
-
-.oo-ui-buttonOptionWidget {
-  padding: 0;
-}
-
-.oo-ui-lookupWidget-menu {
-  background-color: #fff;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  color: #ffffff;
-  background: #347bff;
-}
-
-.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-  background-size: 24px auto;
-}
-
-.oo-ui-menuSectionItemWidget {
-  font-weight: normal;
-  color: #777777;
-  border: none;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: .8em 1em;
-}
-
-/* Icons */
-
-.oo-ui-icon-check {
-  background: #347bff;
-  background-image: /* @embed */ url(themes/agora/images/icons/check.svg);
-}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-agora.rtl.css b/resources/lib/oojs-ui/oojs-ui-agora.rtl.css
deleted file mode 100644 (file)
index fef9ba5..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-07-22T21:39:24Z
- */
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  left: 0;
-  right: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-head {
-  top: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-body {
-  top: 0;
-  bottom: 0;
-  z-index: 2;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  bottom: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-     -moz-transition: opacity 250ms ease-in-out;
-      -ms-transition: opacity 250ms ease-in-out;
-       -o-transition: opacity 250ms ease-in-out;
-          transition: opacity 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: translate3d(0, -200%, 0);
-     -moz-transform: translate3d(0, -200%, 0);
-      -ms-transform: translate3d(0, -200%, 0);
-       -o-transform: translate3d(0, -200%, 0);
-          transform: translate3d(0, -200%, 0);
-  -webkit-transition: transform 250ms ease-in-out;
-     -moz-transition: transform 250ms ease-in-out;
-      -ms-transition: transform 250ms ease-in-out;
-       -o-transition: transform 250ms ease-in-out;
-          transition: transform 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: translate3d(0, 0, 0);
-     -moz-transform: translate3d(0, 0, 0);
-      -ms-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  padding-top: 0.5em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 2em;
-  line-height: 3.4em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.35em;
-  border-bottom: 1px solid #dddddd;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.35em;
-  padding: 2em 0;
-}
-
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.35em;
-  padding: 0 1em;
-}
-
-.oo-ui-processDialog-location {
-  height: 3.35em;
-  padding: 0.25em 0;
-  text-align: center;
-  cursor: default;
-}
-
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.85em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  min-width: 1.85em;
-  min-height: 1.85em;
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 1em;
-  line-height: 1.85em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-processDialog-actions-safe.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  /* Adjust for border so text aligns with title */
-
-  margin: -1px;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-right: 2.25em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-left: 2.25em;
-}
-
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-
-.oo-ui-processDialog-errors {
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-  background-color: rgba(255, 255, 255, 0.9);
-}
-
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-
-.oo-ui-processDialog-errors-title {
-  margin-bottom: 2em;
-  font-size: 1.5em;
-  color: #000;
-}
-
-.oo-ui-processDialog-error {
-  padding: 1em;
-  margin: 1em;
-  text-align: right;
-  background-color: #fff7f7;
-  border: solid 1px #ff9e9e;
-  border-radius: 0.25em;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  width: 3.35em;
-  height: 3.35em;
-  background-size: 2em auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 0 0 1em;
-}
-
-.oo-ui-optionWidget {
-  padding: 0.8em 3.35em 0.8em 1em;
-  font-weight: bold;
-  border-bottom: 1px solid #dddddd;
-}
-
-.oo-ui-optionWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
-  padding-left: 1.5em;
-}
-
-.oo-ui-optionWidget-level-0 {
-  padding-right: 3.5em;
-}
-
-.oo-ui-optionWidget-level-0 .oo-ui-iconedElement-icon {
-  right: 1em;
-}
-
-.oo-ui-optionWidget-level-1 {
-  padding-right: 5em;
-}
-
-.oo-ui-optionWidget-level-1 .oo-ui-iconedElement-icon {
-  right: 2.5em;
-}
-
-.oo-ui-optionWidget-level-2 {
-  padding-right: 6.5em;
-}
-
-.oo-ui-optionWidget-level-2 .oo-ui-iconedElement-icon {
-  right: 4em;
-}
-
-.oo-ui-buttonOptionWidget {
-  padding: 0;
-}
-
-.oo-ui-lookupWidget-menu {
-  background-color: #fff;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  color: #ffffff;
-  background: #347bff;
-}
-
-.oo-ui-menuSectionItemWidget {
-  font-weight: normal;
-  color: #777777;
-  border: none;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: .8em 1em;
-}
-
-/* Icons */
-
-.oo-ui-icon-check {
-  background: #347bff;
-  background-image: /* @embed */ url(themes/agora/images/icons/check.svg);
-}
\ No newline at end of file
index c53772e..02d17b0 100644 (file)
 /*!
- * OOjs UI v0.1.0-pre (0e50d2e336)
+ * OOjs UI v0.1.0-pre (43f379c884)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-08-06T12:56:55Z
+ * Date: 2014-08-28T21:49:12Z
  */
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  right: 0;
-  left: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-head {
-  top: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-body {
-  top: 0;
-  bottom: 0;
-  z-index: 2;
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  bottom: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-
-.oo-ui-frame-content {
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-
-.oo-ui-toolbar-bar {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  border-bottom: solid 1px #ccc;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
-}
-
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  background: none;
-  border: none;
-}
-
-.oo-ui-toolbar-shadow {
-  bottom: -9px;
-  height: 9px;
-  background-image: /* @embed */ url(images/toolbar-shadow.png);
-  opacity: 0.125;
-  -webkit-transition: opacity 500ms ease-in-out;
-     -moz-transition: opacity 500ms ease-in-out;
-      -ms-transition: opacity 500ms ease-in-out;
-       -o-transition: opacity 500ms ease-in-out;
-          transition: opacity 500ms ease-in-out;
-}
-
-.oo-ui-toolGroup {
-  border: solid 1px transparent;
-  border-radius: 0.25em;
-  -webkit-transition: border-color 300ms ease-in-out;
-     -moz-transition: border-color 300ms ease-in-out;
-      -ms-transition: border-color 300ms ease-in-out;
-       -o-transition: border-color 300ms ease-in-out;
-          transition: border-color 300ms ease-in-out;
-}
-
-.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-
-.oo-ui-window-content {
-  background: transparent;
-}
-
-.oo-ui-window-overlay {
-  font-family: sans-serif;
-  font-size: 1em;
-  line-height: 1.5em;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-     -moz-transition: opacity 250ms ease-in-out;
-      -ms-transition: opacity 250ms ease-in-out;
-       -o-transition: opacity 250ms ease-in-out;
-          transition: opacity 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-     -moz-transform: scale(0.5);
-      -ms-transform: scale(0.5);
-       -o-transform: scale(0.5);
-          transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-     -moz-transition: all 250ms ease-in-out;
-      -ms-transition: all 250ms ease-in-out;
-       -o-transition: all 250ms ease-in-out;
-          transition: all 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-     -moz-transform: scale(1);
-      -ms-transform: scale(1);
-       -o-transform: scale(1);
-          transform: scale(1);
-}
-
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-messageDialog-content .oo-ui-window-body {
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  padding-top: 0.5em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: left;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-right: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-right-width: 0;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 2em;
-  line-height: 3.4em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-
-.oo-ui-processDialog-location {
-  height: 1.9em;
-  padding: 0.25em 0;
-  text-align: center;
-  cursor: default;
-}
-
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  min-width: 1.9em;
-  min-height: 1.9em;
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 1em;
-  line-height: 1.9em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em 0 0.75em 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  /* Adjust for border so text aligns with title */
-
-  margin: -1px;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-left: 2.25em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-right: 2.25em;
-}
-
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-
-.oo-ui-processDialog-errors {
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-  background-color: rgba(255, 255, 255, 0.9);
-}
-
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-
-.oo-ui-processDialog-errors-title {
-  margin-bottom: 2em;
-  font-size: 1.5em;
-  color: #000;
-}
-
-.oo-ui-processDialog-error {
-  padding: 1em;
-  margin: 1em;
-  text-align: left;
-  background-color: #fff7f7;
-  border: solid 1px #ff9e9e;
-  border-radius: 0.25em;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
-  color: #333;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  width: 1.9em;
-  height: 1.9em;
-  opacity: 0.8;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
-
-  /*.oo-ui-transition(opacity 200ms);*/
-
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-iconedElement-icon,
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-labeledElement-label,
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-labeledElement-label {
-  color: #000;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #333;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #087ecc;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #76ab36;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #d45353;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #ccc;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
-  padding: 0.2em 0.8em;
-  margin: 0.1em 0;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  border: 1px #c9c9c9 solid;
-  border-radius: 0.3em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  -webkit-transition: border-color 100ms ease-in-out;
-     -moz-transition: border-color 100ms ease-in-out;
-      -ms-transition: border-color 100ms ease-in-out;
-       -o-transition: border-color 100ms ease-in-out;
-          transition: border-color 100ms ease-in-out;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:focus {
-  border-color: #aaa;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  color: black;
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  border-color: #c9c9c9;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-right: 0.3em;
-  margin-left: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
-  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  border: solid 1px #a6cee1;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:focus {
-  border-color: #9dc2d4;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  border: solid 1px #a6cee1;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button {
-  background: #daf0be;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
-  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  border: solid 1px #b8d892;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:focus {
-  border-color: #adcb89;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  background: #daf0be;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
-  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  border: solid 1px #b8d892;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button {
-  color: #d45353;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  color: #333;
-  background: #eee;
-  border-color: #ccc;
-  opacity: 0.5;
-  box-shadow: none;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:focus,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:focus,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:focus {
-  border-color: #ccc;
-  box-shadow: none;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-
-.oo-ui-bookletLayout-outlinePanel {
-  border-right: solid 1px #ddd;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label {
-  color: #ccc;
-}
-
-.oo-ui-fieldsetLayout {
-  border: none;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  font-size: 1.5em;
-}
-
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  margin: -1px 0 -1px -1px;
-  border: solid 1px transparent;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool:first-child {
-  border-bottom-left-radius: 0.25em;
-  border-top-left-radius: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool:last-child {
-  margin-right: -1px;
-  border-top-right-radius: 0.25em;
-  border-bottom-right-radius: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-color: rgba(0, 0, 0, 0.2);
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-left-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  margin: -1px 0;
-  border: solid 1px transparent;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-color: rgba(0, 0, 0, 0.1);
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-top-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-menuToolGroup {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  background-color: white;
-  border: solid 1px #ccc;
-  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-optionWidget {
-  padding: 0.5em 2em 0.5em 3em;
-}
-
-.oo-ui-optionWidget-highlighted {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-
-.oo-ui-menuWidget {
-  margin-top: -1px;
-  background: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0 0 0.25em 0.25em;
-  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-popupWidget-popup {
-  background-color: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  width: 15px;
-  height: 8px;
-  margin-left: -7px;
-  background-image: /* @embed */ url(images/anchor.svg);
-}
-
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
-     -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
-      -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
-       -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
-          transition: width 100ms ease-in-out, height 100ms ease-in-out, left 100ms ease-in-out;
-}
-
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonOptionWidget {
-  padding: 0;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-
-.oo-ui-buttonSelectWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  margin-left: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonedElement-button {
-  margin-left: 0;
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonedElement-button {
-  border-top-right-radius: 0.3em;
-  border-bottom-right-radius: 0.3em;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  background-color: #f3f3f3;
-  border-color: #ddd;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator {
-  opacity: 0.2;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-menuSectionItemWidget {
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-
-.oo-ui-outlineControlsWidget {
-  background-color: #fff;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-outlineItemWidget {
-  font-size: 1.1em;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
-  padding-right: 1.5em;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  opacity: 0.5;
-}
-
-.oo-ui-outlineItemWidget-level-0 {
-  padding-left: 3.5em;
-}
-
-.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon {
-  left: 1em;
-}
-
-.oo-ui-outlineItemWidget-level-1 {
-  padding-left: 5em;
-}
-
-.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon {
-  left: 2.5em;
-}
-
-.oo-ui-outlineItemWidget-level-2 {
-  padding-left: 6.5em;
-}
-
-.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon {
-  left: 4em;
-}
-
-.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  background-color: #a7dcff;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important {
-  font-weight: bold;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder {
-  font-style: italic;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon {
-  opacity: 0.5;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label {
-  color: #777;
-}
-
-.oo-ui-searchWidget-query {
-  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-textInputWidget {
-  width: 20em;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em;
-  font-family: sans-serif;
-  font-size: 1em;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  -webkit-transition: border-color 200ms, box-shadow 200ms;
-     -moz-transition: border-color 200ms, box-shadow 200ms;
-      -ms-transition: border-color 200ms, box-shadow 200ms;
-       -o-transition: border-color 200ms, box-shadow 200ms;
-          transition: border-color 200ms, box-shadow 200ms;
-}
-
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-left: 2em;
-}
-
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  border-color: #a7dcff;
-  outline: none;
-  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
-}
-
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-
-.oo-ui-textInputWidget-pending input,
-.oo-ui-textInputWidget-pending textarea {
-  background-color: transparent;
-}
-
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  background-color: #f3f3f3;
-  border-color: #ddd;
-}
-
-.oo-ui-toggleSwitchWidget {
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  border: solid 1px #ccc;
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  opacity: 0.5;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  border: 1px #c9c9c9 solid;
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-  border-color: #aaa;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  opacity: 1;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-  opacity: 0;
-}
\ No newline at end of file
+.oo-ui-rtl{direction:rtl}.oo-ui-ltr{direction:ltr}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button{cursor:pointer;display:inline-block;vertical-align:middle;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{display:none}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator{display:none}.oo-ui-buttonedElement.oo-ui-widget-disabled>.oo-ui-buttonedElement-button{cursor:default}.oo-ui-buttonedElement.oo-ui-indicatedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator,.oo-ui-buttonedElement.oo-ui-iconedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat}.oo-ui-buttonedElement-frameless{display:inline-block;position:relative}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button{display:inline-block;vertical-align:top;text-align:center}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-buttonedElement-framed.oo-ui-widget-disabled>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{cursor:default}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button{color:#333}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-left:0}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator{margin-right:-.75em}.oo-ui-buttonedElement.oo-ui-indicatedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator,.oo-ui-buttonedElement.oo-ui-iconedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{opacity:.8;width:1.9em;height:1.9em}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button:hover>.oo-ui-iconedElement-icon,.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button:focus>.oo-ui-iconedElement-icon{opacity:1}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button:hover>.oo-ui-labeledElement-label,.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button:focus>.oo-ui-labeledElement-label{color:#000}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{color:#333;margin-left:.25em}.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-primary>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{color:#087ecc}.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-constructive>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{color:#76ab36}.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-destructive>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{color:#d45353}.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{opacity:.2}.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{color:#ccc}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button{margin:.1em 0;padding:.2em .8em;border-radius:.3em;text-shadow:0 1px 1px rgba(255,255,255,.5);border:1px #c9c9c9 solid;-webkit-transition:border-color 100ms ease-in-out;-moz-transition:border-color 100ms ease-in-out;-ms-transition:border-color 100ms ease-in-out;-o-transition:border-color 100ms ease-in-out;transition:border-color 100ms ease-in-out;background:#eee;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(100%,#ddd));background-image:-webkit-linear-gradient(top,#fff 0,#ddd 100%);background-image:-moz-linear-gradient(top,#fff 0,#ddd 100%);background-image:-ms-linear-gradient(top,#fff 0,#ddd 100%);background-image:-o-linear-gradient(top,#fff 0,#ddd 100%);background-image:linear-gradient(top,#fff 0,#ddd 100%)}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button:focus{border-color:#aaa}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{line-height:1.9em}.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.07);color:#000;border-color:#c9c9c9;background:#eee;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#ddd),color-stop(100%,#fff));background-image:-webkit-linear-gradient(top,#ddd 0,#fff 100%);background-image:-moz-linear-gradient(top,#ddd 0,#fff 100%);background-image:-ms-linear-gradient(top,#ddd 0,#fff 100%);background-image:-o-linear-gradient(top,#ddd 0,#fff 100%);background-image:linear-gradient(top,#ddd 0,#fff 100%)}.oo-ui-buttonedElement-framed.oo-ui-iconedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-left:-.5em;margin-right:-.5em}.oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-left:-.5em;margin-right:.3em}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary>.oo-ui-buttonedElement-button{border:solid 1px #a6cee1;background:#cde7f4;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#eaf4fa),color-stop(100%,#b0d9ee));background-image:-webkit-linear-gradient(top,#eaf4fa 0,#b0d9ee 100%);background-image:-moz-linear-gradient(top,#eaf4fa 0,#b0d9ee 100%);background-image:-ms-linear-gradient(top,#eaf4fa 0,#b0d9ee 100%);background-image:-o-linear-gradient(top,#eaf4fa 0,#b0d9ee 100%);background-image:linear-gradient(top,#eaf4fa 0,#b0d9ee 100%)}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary>.oo-ui-buttonedElement-button:focus{border-color:#9dc2d4}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{border:solid 1px #a6cee1;background:#cde7f4;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#b0d9ee),color-stop(100%,#eaf4fa));background-image:-webkit-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-moz-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-ms-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-o-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:linear-gradient(top,#b0d9ee 0,#eaf4fa 100%)}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive>.oo-ui-buttonedElement-button{border:solid 1px #b8d892;background:#daf0be;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#f0fbe1),color-stop(100%,#c3e59a));background-image:-webkit-linear-gradient(top,#f0fbe1 0,#c3e59a 100%);background-image:-moz-linear-gradient(top,#f0fbe1 0,#c3e59a 100%);background-image:-ms-linear-gradient(top,#f0fbe1 0,#c3e59a 100%);background-image:-o-linear-gradient(top,#f0fbe1 0,#c3e59a 100%);background-image:linear-gradient(top,#f0fbe1 0,#c3e59a 100%)}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive>.oo-ui-buttonedElement-button:focus{border-color:#adcb89}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{border:solid 1px #b8d892;background:#daf0be;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#c3e59a),color-stop(100%,#f0fbe1));background-image:-webkit-linear-gradient(top,#c3e59a 0,#f0fbe1 100%);background-image:-moz-linear-gradient(top,#c3e59a 0,#f0fbe1 100%);background-image:-ms-linear-gradient(top,#c3e59a 0,#f0fbe1 100%);background-image:-o-linear-gradient(top,#c3e59a 0,#f0fbe1 100%);background-image:linear-gradient(top,#c3e59a 0,#f0fbe1 100%)}.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive>.oo-ui-buttonedElement-button{color:#d45353}.oo-ui-buttonedElement-framed.oo-ui-widget-disabled>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{opacity:.5;box-shadow:none;color:#333;background:#eee;border-color:#ccc}.oo-ui-buttonedElement-framed.oo-ui-widget-disabled>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button:hover,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled>.oo-ui-buttonedElement-button:focus,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button:focus,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button:focus{border-color:#ccc;box-shadow:none}.oo-ui-clippableElement-clippable{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable{overflow-y:hidden}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable{overflow-y:auto}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded{padding:2em}.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget{position:absolute;top:0;left:0;right:0;bottom:3em;overflow-y:auto}.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget{position:absolute;bottom:0;left:0;right:0}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout{padding:1.5em}.oo-ui-bookletLayout-outlinePanel{border-right:solid 1px #ddd}.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget{box-shadow:0 0 .25em rgba(0,0,0,.25)}.oo-ui-fieldLayout{margin-bottom:1em}.oo-ui-fieldLayout:before,.oo-ui-fieldLayout:after{content:" ";display:table}.oo-ui-fieldLayout:after{clear:both}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-labeledElement-label,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{display:block;float:left}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-fieldLayout-field,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-fieldLayout-field{display:block;float:left}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{text-align:right}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-fieldLayout-field{display:inline-block;vertical-align:middle}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top>.oo-ui-labeledElement-label{display:inline-block}.oo-ui-fieldLayout>.oo-ui-popupButtonWidget>.oo-ui-popupWidget>.oo-ui-popupWidget-popup{z-index:1}.oo-ui-fieldLayout:last-child{margin-bottom:0}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-labeledElement-label,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{padding-top:.5em;margin-right:5%;width:35%}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-fieldLayout-field,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-fieldLayout-field{width:60%}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-labeledElement-label{padding:.75em .5em .5em}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-fieldLayout-field{padding:.5em 0}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top>.oo-ui-labeledElement-label{padding:.5em 0}.oo-ui-fieldLayout>.oo-ui-popupButtonWidget>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-top:.25em}.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label{color:#ccc}.oo-ui-fieldsetLayout{position:relative;margin:0;padding:0;border:none}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-iconedElement-icon{display:block;position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-fieldsetLayout+.oo-ui-fieldsetLayout{margin-top:2em}.oo-ui-fieldsetLayout>.oo-ui-labeledElement-label{font-size:1.5em;margin-bottom:.5em;padding:.25em 0}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-labeledElement-label{padding-left:1.75em;line-height:1.33em}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-iconedElement-icon{left:0;top:.25em;width:2em;height:2em}.oo-ui-gridLayout{position:absolute;top:0;left:0;right:0;bottom:0}.oo-ui-panelLayout{position:relative}.oo-ui-panelLayout-scrollable{overflow-y:auto}.oo-ui-panelLayout-expanded{position:absolute;top:0;left:0;right:0;bottom:0}.oo-ui-panelLayout-padded{padding:1.25em}.oo-ui-stackLayout>.oo-ui-panelLayout{display:none}.oo-ui-stackLayout-continuous>.oo-ui-panelLayout{display:block;position:relative}.oo-ui-popupTool .oo-ui-popupWidget-popup,.oo-ui-popupTool .oo-ui-popupWidget-anchor{z-index:4}.oo-ui-popupTool .oo-ui-popupWidget{margin-left:1.25em;font-size:.8em}.oo-ui-toolGroup{display:inline-block;vertical-align:middle;margin:.3em;border-radius:.25em;border:solid 1px transparent;-webkit-transition:border-color 300ms ease-in-out;-moz-transition:border-color 300ms ease-in-out;-ms-transition:border-color 300ms ease-in-out;-o-transition:border-color 300ms ease-in-out;transition:border-color 300ms ease-in-out}.oo-ui-toolGroup-empty{display:none}.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{background-position:center center;background-repeat:no-repeat}.oo-ui-toolGroup.oo-ui-widget-enabled:hover{border-color:rgba(0,0,0,.1)}.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title{color:#000}.oo-ui-barToolGroup>.oo-ui-iconedElement-icon,.oo-ui-barToolGroup>.oo-ui-labeledElement-label{display:none}.oo-ui-barToolGroup .oo-ui-tool{display:inline-block;position:relative;vertical-align:top}.oo-ui-barToolGroup .oo-ui-tool-link{display:block}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{display:block}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title{display:none}.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-barToolGroup .oo-ui-tool-title,.oo-ui-barToolGroup .oo-ui-tool-accel{display:none}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link{cursor:pointer}.oo-ui-barToolGroup .oo-ui-tool{margin:-1px 0 -1px -1px;border:solid 1px transparent}.oo-ui-barToolGroup .oo-ui-tool:first-child{border-top-left-radius:.25em;border-bottom-left-radius:.25em}.oo-ui-barToolGroup .oo-ui-tool:last-child{margin-right:-1px;border-top-right-radius:.25em;border-bottom-right-radius:.25em}.oo-ui-barToolGroup .oo-ui-tool-link{height:1.5em;padding:.25em}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{height:1.5em;width:1.5em;opacity:.8}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover{border-color:rgba(0,0,0,.2)}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled{border-color:rgba(0,0,0,.2);box-shadow:inset 0 .07em .07em 0 rgba(0,0,0,.07);background:#f8fbfd;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#f1f7fb),color-stop(100%,#fff));background-image:-webkit-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-moz-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-ms-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-o-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:linear-gradient(top,#f1f7fb 0,#fff 100%)}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled+.oo-ui-tool-active.oo-ui-widget-enabled{border-left-color:rgba(0,0,0,.1)}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.8}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:1}.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-popupToolGroup{position:relative;height:2em;min-width:2.5em}.oo-ui-popupToolGroup-handle{display:block;cursor:pointer}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle{cursor:default}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools{display:none;position:absolute;z-index:4}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon{background-repeat:no-repeat;background-position:center center}.oo-ui-popupToolGroup-active.oo-ui-widget-enabled>.oo-ui-toolGroup-tools{display:block}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{display:inline-block;vertical-align:middle}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title{display:inline-block;vertical-align:middle}.oo-ui-popupToolGroup .oo-ui-tool-accel{display:none}.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement{min-width:3.5em}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{top:0;width:2em;height:2em;opacity:.8}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator{right:0}.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{left:.25em}.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{line-height:2.6em;font-size:.8em;margin:0 1em}.oo-ui-popupToolGroup-header{line-height:2.6em;font-size:.8em;margin:0 .6em;font-weight:700}.oo-ui-popupToolGroup-active.oo-ui-widget-enabled{border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:inset 0 .07em .07em 0 rgba(0,0,0,.07);background:#f8fbfd;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#f1f7fb),color-stop(100%,#fff));background-image:-webkit-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-moz-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-ms-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-o-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:linear-gradient(top,#f1f7fb 0,#fff 100%)}.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{margin-left:3em}.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{margin-right:2.25em}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools{top:2em;left:-1px;border:solid 1px #ccc;background-color:#fff;box-shadow:0 .25em 1em rgba(0,0,0,.25)}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{height:2em;width:2em;margin-right:.25em}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title{line-height:2em;font-size:.8em}.oo-ui-listToolGroup .oo-ui-tool{display:inline-block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-listToolGroup .oo-ui-tool-link{display:block;cursor:pointer;white-space:nowrap}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-listToolGroup .oo-ui-toolGroup-tools{padding:.25em}.oo-ui-listToolGroup.oo-ui-popupToolGroup-active{border-color:rgba(0,0,0,.2)}.oo-ui-listToolGroup .oo-ui-tool{border:solid 1px transparent;margin:-1px 0}.oo-ui-listToolGroup .oo-ui-tool-link{padding-right:.5em}.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled{border-color:rgba(0,0,0,.1);box-shadow:inset 0 .07em .07em 0 rgba(0,0,0,.07);background:#f8fbfd;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#f1f7fb),color-stop(100%,#fff));background-image:-webkit-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-moz-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-ms-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:-o-linear-gradient(top,#f1f7fb 0,#fff 100%);background-image:linear-gradient(top,#f1f7fb 0,#fff 100%)}.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled+.oo-ui-tool-active.oo-ui-widget-enabled{border-top-color:rgba(0,0,0,.1)}.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover{border-color:rgba(0,0,0,.2)}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover{border-color:rgba(0,0,0,.2)}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.8}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:1}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title{color:#ccc}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-listToolGroup.oo-ui-widget-disabled{color:#ccc}.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-menuToolGroup{border-color:rgba(0,0,0,.1)}.oo-ui-menuToolGroup .oo-ui-tool{display:block}.oo-ui-menuToolGroup .oo-ui-tool-link{display:block;cursor:pointer;white-space:nowrap}.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{background-image:none}.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon{background-image:url(images/icons/check.svg)}.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle{min-width:8em}.oo-ui-menuToolGroup .oo-ui-toolGroup-tools{padding:.25em 0}.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover{border-color:rgba(0,0,0,.2)}.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active{border-color:rgba(0,0,0,.25)}.oo-ui-menuToolGroup .oo-ui-tool-link{padding:0 1em 0 .25em}.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover{background-color:#e1f3ff}.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title{color:#ccc}.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-menuToolGroup.oo-ui-widget-disabled{color:#ccc;border-color:rgba(0,0,0,.05)}.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon{opacity:.2}.oo-ui-toolbar{clear:both}.oo-ui-toolbar-bar{line-height:1em}.oo-ui-toolbar-actions{float:right}.oo-ui-toolbar-tools{float:left}.oo-ui-toolbar-tools,.oo-ui-toolbar-actions,.oo-ui-toolbar-shadow{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-toolbar-actions .oo-ui-popupWidget{-webkit-touch-callout:default;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.oo-ui-toolbar-shadow{background-position:left top;background-repeat:repeat-x;position:absolute;width:100%;pointer-events:none}.oo-ui-toolbar-bar{border-bottom:solid 1px #ccc;background:#f8fbfd;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(100%,#f1f7fb));background-image:-webkit-linear-gradient(top,#fff 0,#f1f7fb 100%);background-image:-moz-linear-gradient(top,#fff 0,#f1f7fb 100%);background-image:-ms-linear-gradient(top,#fff 0,#f1f7fb 100%);background-image:-o-linear-gradient(top,#fff 0,#f1f7fb 100%);background-image:linear-gradient(top,#fff 0,#f1f7fb 100%)}.oo-ui-toolbar-bar .oo-ui-toolbar-bar{border:none;background:0 0}.oo-ui-toolbar-shadow{background-image:url(images/toolbar-shadow.png);bottom:-9px;height:9px;opacity:.125;-webkit-transition:opacity 500ms ease-in-out;-moz-transition:opacity 500ms ease-in-out;-ms-transition:opacity 500ms ease-in-out;-o-transition:opacity 500ms ease-in-out;transition:opacity 500ms ease-in-out}.oo-ui-optionWidget{position:relative;display:block;cursor:pointer;padding:.5em 2em .5em 3em;border:none}.oo-ui-optionWidget.oo-ui-widget-disabled{cursor:default}.oo-ui-optionWidget .oo-ui-labeledElement-label{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.oo-ui-optionWidget-highlighted{background-color:#e1f3ff}.oo-ui-optionWidget .oo-ui-labeledElement-label{line-height:1.5em}.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected{background-color:#a7dcff}.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed{background-color:#a7dcff}.oo-ui-optionWidget.oo-ui-widget-disabled{color:#ccc}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{position:absolute;background-repeat:no-repeat;background-position:center center}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{top:50%;width:2em;height:2em;margin-top:-1em}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon{left:.5em}.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{right:.5em}.oo-ui-buttonSelectWidget{display:inline-block;white-space:nowrap;border-radius:.3em}.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button{border-radius:0;margin-left:-1px}.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonedElement-button{border-bottom-left-radius:.3em;border-top-left-radius:.3em;margin-left:0}.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonedElement-button{border-bottom-right-radius:.3em;border-top-right-radius:.3em}.oo-ui-buttonOptionWidget{display:inline-block;padding:0;background-color:transparent}.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button{position:relative}.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{position:static;display:inline-block;vertical-align:middle}.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button{height:1.9em}.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{height:1.9em;margin-top:0}.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted{background-color:transparent}.oo-ui-labelWidget{display:inline-block;padding:.5em 0}.oo-ui-iconWidget{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat;line-height:2.5em;height:1.9em;width:1.9em;opacity:.8}.oo-ui-iconWidget.oo-ui-widget-disabled{opacity:.2}.oo-ui-indicatorWidget{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat;line-height:2.5em;height:1.9em;width:1.9em;opacity:.8}.oo-ui-indicatorWidget.oo-ui-widget-disabled{opacity:.2}.oo-ui-buttonWidget{display:inline-block;vertical-align:middle}.oo-ui-buttonGroupWidget{display:inline-block;white-space:nowrap;border-radius:.3em}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button{border-radius:0;margin-bottom:-1px;margin-left:-1px}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button{border-bottom-left-radius:.3em;border-top-left-radius:.3em;margin-left:0}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button{border-bottom-right-radius:.3em;border-top-right-radius:.3em}.oo-ui-toggleSwitchWidget{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateZ(0px);-moz-transform:translateZ(0px);-ms-transform:translateZ(0px);-o-transform:translateZ(0px);transform:translateZ(0px);height:2em;width:4em;border-radius:1em;box-shadow:0 0 0 white,inset 0 .1em .2em #ddd;border:solid 1px #ccc;background:#eee;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#ddd),color-stop(100%,#fff));background-image:-webkit-linear-gradient(top,#ddd 0,#fff 100%);background-image:-moz-linear-gradient(top,#ddd 0,#fff 100%);background-image:-ms-linear-gradient(top,#ddd 0,#fff 100%);background-image:-o-linear-gradient(top,#ddd 0,#fff 100%);background-image:linear-gradient(top,#ddd 0,#fff 100%)}.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled{cursor:default}.oo-ui-toggleSwitchWidget-grip{position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow{position:absolute;top:0;bottom:0;right:0;left:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow{display:none}.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled{opacity:.5}.oo-ui-toggleSwitchWidget-grip{top:.25em;left:.25em;width:1.5em;height:1.5em;margin-top:-1px;border-radius:1em;box-shadow:0 .1em .25em rgba(0,0,0,.1);border:1px #c9c9c9 solid;-webkit-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-moz-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-ms-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-o-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;background:#eee;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(100%,#ddd));background-image:-webkit-linear-gradient(top,#fff 0,#ddd 100%);background-image:-moz-linear-gradient(top,#fff 0,#ddd 100%);background-image:-ms-linear-gradient(top,#fff 0,#ddd 100%);background-image:-o-linear-gradient(top,#fff 0,#ddd 100%);background-image:linear-gradient(top,#fff 0,#ddd 100%)}.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip{border-color:#aaa}.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow{border-radius:1em;box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.07);-webkit-transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-ms-transition:opacity 200ms ease-in-out;-o-transition:opacity 200ms ease-in-out;transition:opacity 200ms ease-in-out;background:#cde7f4;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#b0d9ee),color-stop(100%,#eaf4fa));background-image:-webkit-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-moz-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-ms-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:-o-linear-gradient(top,#b0d9ee 0,#eaf4fa 100%);background-image:linear-gradient(top,#b0d9ee 0,#eaf4fa 100%)}.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow{opacity:1}.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip{left:2.25em;margin-left:-2px}.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow{display:block;opacity:0}.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip{left:.25em;margin-left:0}.oo-ui-popupWidget-popup{position:absolute;overflow:hidden;z-index:1}.oo-ui-popupWidget-anchor{display:none;z-index:1}.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor{display:block;position:absolute;background-repeat:no-repeat}.oo-ui-popupWidget-head{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-popupWidget-head .oo-ui-buttonWidget{float:right}.oo-ui-popupWidget-head .oo-ui-labeledElement-label{float:left;cursor:default}.oo-ui-popupWidget-body{clear:both;overflow:hidden}.oo-ui-popupWidget-popup{border:solid 1px #ccc;border-radius:.25em;background-color:#fff;box-shadow:0 .15em .5em 0 rgba(0,0,0,.2)}.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup{margin-top:7px}.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor{width:15px;height:8px;margin-left:-7px;background-image:url(images/anchor.svg)}.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup{-webkit-transition:width 100ms ease-in-out,height 100ms ease-in-out,left 100ms ease-in-out;-moz-transition:width 100ms ease-in-out,height 100ms ease-in-out,left 100ms ease-in-out;-ms-transition:width 100ms ease-in-out,height 100ms ease-in-out,left 100ms ease-in-out;-o-transition:width 100ms ease-in-out,height 100ms ease-in-out,left 100ms ease-in-out;transition:width 100ms ease-in-out,height 100ms ease-in-out,left 100ms ease-in-out}.oo-ui-popupWidget-head{height:2.5em}.oo-ui-popupWidget-head .oo-ui-buttonWidget{margin:.25em}.oo-ui-popupWidget-head .oo-ui-labeledElement-label{margin:.75em 1em}.oo-ui-popupWidget-body{box-shadow:0 0 .66em rgba(0,0,0,.25)}.oo-ui-popupWidget-body-padded{padding:0 1em}.oo-ui-popupButtonWidget{position:relative}.oo-ui-popupButtonWidget .oo-ui-popupWidget{position:absolute;left:1em;cursor:auto}.oo-ui-textInputWidget{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:20em}.oo-ui-textInputWidget input,.oo-ui-textInputWidget textarea{display:inline-block;width:100%;resize:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-textInputWidget>.oo-ui-iconedElement-icon,.oo-ui-textInputWidget>.oo-ui-indicatedElement-indicator{position:absolute;top:0;height:100%;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-textInputWidget>.oo-ui-iconedElement-icon{left:0}.oo-ui-textInputWidget>.oo-ui-indicatedElement-indicator{right:0}.oo-ui-textInputWidget input,.oo-ui-textInputWidget textarea{padding:.5em;font-size:1em;font-family:sans-serif;background-color:#fff;border:solid 1px #ccc;box-shadow:0 0 0 white,inset 0 .1em .2em #ddd;border-radius:.25em;-webkit-transition:border-color 200ms,box-shadow 200ms;-moz-transition:border-color 200ms,box-shadow 200ms;-ms-transition:border-color 200ms,box-shadow 200ms;-o-transition:border-color 200ms,box-shadow 200ms;transition:border-color 200ms,box-shadow 200ms}.oo-ui-textInputWidget-decorated input,.oo-ui-textInputWidget-decorated textarea{padding-left:2em}.oo-ui-textInputWidget-icon{width:2em}.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus{outline:0;border-color:#a7dcff;box-shadow:0 0 .3em #a7dcff,0 0 0 #fff}.oo-ui-textInputWidget input[readonly],.oo-ui-textInputWidget textarea[readonly]{color:#777;text-shadow:0 1px 1px #fff}.oo-ui-textInputWidget-pending input,.oo-ui-textInputWidget-pending textarea{background-color:transparent}.oo-ui-textInputWidget.oo-ui-widget-disabled input,.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus{color:#ccc;text-shadow:0 1px 1px #fff;border-color:#ddd;background-color:#f3f3f3}.oo-ui-textInputWidget .oo-ui-iconedElement-icon,.oo-ui-textInputWidget .oo-ui-indicatedElement-indicator{opacity:.8}.oo-ui-textInputWidget.oo-ui-iconedElement input,.oo-ui-textInputWidget.oo-ui-iconedElement textarea{padding-left:2em}.oo-ui-textInputWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon{width:2em;background-position:right center}.oo-ui-textInputWidget.oo-ui-indicatedElement input,.oo-ui-textInputWidget.oo-ui-indicatedElement textarea{padding-right:1.5em}.oo-ui-textInputWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{width:1.5em;background-position:left center}.oo-ui-menuWidget{position:absolute;background:#fff;margin-top:-1px;border:solid 1px #ccc;border-radius:0 0 .25em .25em;box-shadow:0 .15em 1em 0 rgba(0,0,0,.2)}.oo-ui-menuWidget input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.oo-ui-menuItemWidget{position:relative}.oo-ui-menuItemWidget .oo-ui-iconedElement-icon{display:none}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected{background-color:transparent}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon{display:block}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected{background-color:transparent}.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected{background-color:#e1f3ff}.oo-ui-menuSectionItemWidget{cursor:default;padding:.33em .75em;color:#888}.oo-ui-inlineMenuWidget{position:relative;display:inline-block;margin:.25em 0;min-width:20em}.oo-ui-inlineMenuWidget-handle{width:100%;display:inline-block;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-inlineMenuWidget .oo-ui-menuWidget{z-index:1;width:100%}.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle{cursor:default}.oo-ui-inlineMenuWidget-handle{height:2.5em;border:solid 1px rgba(0,0,0,.1);border-radius:.25em}.oo-ui-inlineMenuWidget-handle:hover{border-color:rgba(0,0,0,.2)}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator{right:0}.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{left:.25em}.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{line-height:2.5em;margin:0 .5em}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{top:0;width:2.5em;height:2.5em;opacity:.8}.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle{color:#ccc;text-shadow:0 1px 1px #fff;border-color:#ddd;background-color:#f3f3f3}.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator{opacity:.2}.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{margin-left:3em}.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{margin-right:2em}.oo-ui-outlineItemWidget{position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.1em;padding:.75em}.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label{padding-right:1.5em}.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{opacity:.5}.oo-ui-outlineItemWidget-level-0{padding-left:3.5em}.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon{left:1em}.oo-ui-outlineItemWidget-level-1{padding-left:5em}.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon{left:2.5em}.oo-ui-outlineItemWidget-level-2{padding-left:6.5em}.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon{left:4em}.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected{background-color:#a7dcff;text-shadow:0 1px 1px rgba(255,255,255,.5)}.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important{font-weight:700}.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder{font-style:italic}.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon{opacity:.5}.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label{color:#777}.oo-ui-outlineControlsWidget{height:3em;background-color:#fff}.oo-ui-outlineControlsWidget-items,.oo-ui-outlineControlsWidget-movers{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-outlineControlsWidget>.oo-ui-iconedElement-icon{float:left;background-position:right center;background-repeat:no-repeat}.oo-ui-outlineControlsWidget-items{float:left}.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget{float:left}.oo-ui-outlineControlsWidget-movers{float:right}.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget{float:right}.oo-ui-outlineControlsWidget-items,.oo-ui-outlineControlsWidget-movers{height:2em;margin:.5em;padding:0}.oo-ui-outlineControlsWidget>.oo-ui-iconedElement-icon{width:1.5em;height:2em;margin:.5em 0 .5em .5em;opacity:.2}.oo-ui-outlineControlsWidget-items{margin-left:0}.oo-ui-comboBoxWidget>.oo-ui-selectWidget{z-index:1;min-width:20em}.oo-ui-comboBoxWidget>.oo-ui-selectWidget-handle{border:solid 1px rgba(0,0,0,.1);border-radius:.25em}.oo-ui-comboBoxWidget>.oo-ui-selectWidget-handle:hover{border-color:rgba(0,0,0,.2)}.oo-ui-comboBoxWidget>.oo-ui-selectWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator,.oo-ui-comboBoxWidget>.oo-ui-selectWidget-empty .oo-ui-textInputWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{cursor:default;opacity:.2}.oo-ui-searchWidget-query{position:absolute;top:0;left:0;right:0}.oo-ui-searchWidget-query .oo-ui-textInputWidget{width:100%}.oo-ui-searchWidget-results{position:absolute;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:auto}.oo-ui-searchWidget-query{height:4em;padding:0 1em;box-shadow:0 0 .5em rgba(0,0,0,.2)}.oo-ui-searchWidget-query .oo-ui-textInputWidget{margin:.75em 0}.oo-ui-searchWidget-results{top:4em;padding:1em;line-height:0}.oo-ui-window{line-height:1em}.oo-ui-window-frame{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-window-frame>iframe{width:100%;height:100%;margin:0;padding:0}.oo-ui-window-content:focus{outline:0}.oo-ui-window-head,.oo-ui-window-foot{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-window-body{margin:0;padding:0;background:0 0}.oo-ui-window-overlay{position:absolute;top:0;left:0}.oo-ui-window-isolated{background:0 0;font-family:sans-serif;font-size:.8em}.oo-ui-dialog-content>.oo-ui-window-head,.oo-ui-dialog-content>.oo-ui-window-body,.oo-ui-dialog-content>.oo-ui-window-foot{position:absolute;left:0;right:0;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-dialog-content>.oo-ui-window-head{z-index:1;top:0}.oo-ui-dialog-content>.oo-ui-window-body{z-index:2;top:0;bottom:0}.oo-ui-dialog-content>.oo-ui-window-foot{z-index:1;bottom:0}.oo-ui-dialog-content>.oo-ui-window-overlay{z-index:3}.oo-ui-dialog-content>.oo-ui-window-body{box-shadow:0 0 .66em rgba(0,0,0,.25)}.oo-ui-messageDialog-actions-horizontal{display:table;table-layout:fixed;width:100%}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget{display:table-cell;width:1%}.oo-ui-messageDialog-actions-vertical{display:block}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget{display:block;overflow:hidden;text-overflow:ellipsis}.oo-ui-messageDialog-actions .oo-ui-actionWidget{position:relative;text-align:center}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button{display:block}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label{position:relative;top:auto;bottom:auto;display:inline;white-space:nowrap}.oo-ui-messageDialog-content .oo-ui-window-body{box-shadow:0 0 .33em rgba(0,0,0,.33)}.oo-ui-messageDialog-title,.oo-ui-messageDialog-message{display:block;text-align:center;padding-top:.5em}.oo-ui-messageDialog-title{font-size:1.5em;line-height:1em;color:#000}.oo-ui-messageDialog-message{font-size:.9em;line-height:1.25em;color:#666}.oo-ui-messageDialog-message-verbose{font-size:1.1em;line-height:1.5em;text-align:left}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget{border-right:solid 1px #e5e5e5}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child{border-right-width:0}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget{border-bottom:solid 1px #e5e5e5}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child{border-bottom-width:0}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label{text-align:center;line-height:3.4em;padding:0 2em}.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover{background-color:rgba(0,0,0,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget:active{background-color:rgba(0,0,0,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover{background-color:rgba(8,126,204,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active{background-color:rgba(8,126,204,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label{font-weight:700}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover{background-color:rgba(118,171,54,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active{background-color:rgba(118,171,54,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover{background-color:rgba(212,83,83,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active{background-color:rgba(212,83,83,.1)}.oo-ui-processDialog-location{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oo-ui-processDialog-title{display:inline}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,.oo-ui-processDialog-actions-other .oo-ui-actionWidget{white-space:nowrap}.oo-ui-processDialog-actions-safe,.oo-ui-processDialog-actions-primary{position:absolute;top:0;bottom:0}.oo-ui-processDialog-actions-safe{left:0}.oo-ui-processDialog-actions-primary{right:0}.oo-ui-processDialog-errors{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:2;overflow-x:hidden;overflow-y:auto}.oo-ui-processDialog-content .oo-ui-window-head{height:3.4em}.oo-ui-processDialog-content .oo-ui-window-body{top:3.4em;box-shadow:0 0 .33em rgba(0,0,0,.33)}.oo-ui-processDialog-navigation{position:relative;height:3.4em;padding:0 1em}.oo-ui-processDialog-location{padding:.25em 0;height:1.9em;cursor:default;text-align:center}.oo-ui-processDialog-title{font-weight:700;line-height:1.9em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button{padding-top:.75em;padding-bottom:.75em;min-width:1.9em;min-height:1.9em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label{line-height:1.9em;padding:0 1em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon{position:absolute;margin-top:-.125em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed{margin:.75em 0 .75em .75em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button{padding:0;vertical-align:middle}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover{background-color:rgba(0,0,0,.05)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active{background-color:rgba(0,0,0,.1)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed{margin:.75em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button{margin:-1px}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover{background-color:rgba(8,126,204,.05)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active{background-color:rgba(8,126,204,.1)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label{font-weight:700}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover{background-color:rgba(118,171,54,.05)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active{background-color:rgba(118,171,54,.1)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover{background-color:rgba(212,83,83,.05)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active{background-color:rgba(212,83,83,.1)}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon{left:.5em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label{padding-left:2.25em}.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon{right:.5em}.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label{padding-right:2.25em}.oo-ui-processDialog>.oo-ui-window-frame{min-height:5em}.oo-ui-processDialog-errors{background-color:rgba(255,255,255,.9);padding:3em 3em 1.5em;text-align:center}.oo-ui-processDialog-errors .oo-ui-buttonWidget{margin:2em 1em}.oo-ui-processDialog-errors-title{font-size:1.5em;color:#000;margin-bottom:2em}.oo-ui-processDialog-error{text-align:left;margin:1em;padding:1em;border:solid 1px #ff9e9e;background-color:#fff7f7;border-radius:.25em}.oo-ui-windowManager-modal>.oo-ui-dialog{position:fixed;width:0;height:0;overflow:hidden}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup{width:auto;height:auto;top:0;right:0;bottom:0;left:0;padding:1em}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup>.oo-ui-window-frame{position:fixed;right:0;left:0;margin:auto;overflow:hidden;max-width:100%;max-height:100%}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup>.oo-ui-window-frame>iframe{width:100%;height:100%}.oo-ui-windowManager-fullscreen>.oo-ui-dialog>.oo-ui-window-frame{width:100%;height:100%;top:0;bottom:0}.oo-ui-windowManager-modal>.oo-ui-dialog{background-color:rgba(255,255,255,.5);opacity:0;-webkit-transition:opacity 250ms ease-in-out;-moz-transition:opacity 250ms ease-in-out;-ms-transition:opacity 250ms ease-in-out;-o-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.oo-ui-windowManager-modal>.oo-ui-dialog>.oo-ui-window-frame{top:1em;bottom:1em;background-color:#fff;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5);-webkit-transition:all 250ms ease-in-out;-moz-transition:all 250ms ease-in-out;-ms-transition:all 250ms ease-in-out;-o-transition:all 250ms ease-in-out;transition:all 250ms ease-in-out}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-ready{opacity:1}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-ready>.oo-ui-window-frame{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.oo-ui-windowManager-modal.oo-ui-windowManager-floating>.oo-ui-dialog>.oo-ui-window-frame{border:solid 1px #ccc;border-radius:.5em;box-shadow:0 .2em 1em rgba(0,0,0,.3)}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-apex.rtl.css b/resources/lib/oojs-ui/oojs-ui-apex.rtl.css
deleted file mode 100644 (file)
index 3cbb677..0000000
+++ /dev/null
@@ -1,1103 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-07-22T21:39:24Z
- */
-.oo-ui-dialog-content > .oo-ui-window-head,
-.oo-ui-dialog-content > .oo-ui-window-body,
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  position: absolute;
-  left: 0;
-  right: 0;
-  overflow: hidden;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-head {
-  top: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-body {
-  top: 0;
-  bottom: 0;
-  z-index: 2;
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-dialog-content > .oo-ui-window-foot {
-  bottom: 0;
-  z-index: 1;
-}
-
-.oo-ui-dialog-content > .oo-ui-window-overlay {
-  z-index: 3;
-}
-
-.oo-ui-frame-content {
-  font-family: sans-serif;
-  font-size: 0.8em;
-}
-
-.oo-ui-toolbar-bar {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
-  border-bottom: solid 1px #ccc;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
-}
-
-.oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-  background: none;
-  border: none;
-}
-
-.oo-ui-toolbar-shadow {
-  bottom: -9px;
-  height: 9px;
-  background-image: /* @embed */ url(images/toolbar-shadow.png);
-  opacity: 0.125;
-  -webkit-transition: opacity 500ms ease-in-out;
-     -moz-transition: opacity 500ms ease-in-out;
-      -ms-transition: opacity 500ms ease-in-out;
-       -o-transition: opacity 500ms ease-in-out;
-          transition: opacity 500ms ease-in-out;
-}
-
-.oo-ui-toolGroup {
-  border: solid 1px transparent;
-  border-radius: 0.25em;
-  -webkit-transition: border-color 300ms ease-in-out;
-     -moz-transition: border-color 300ms ease-in-out;
-      -ms-transition: border-color 300ms ease-in-out;
-       -o-transition: border-color 300ms ease-in-out;
-          transition: border-color 300ms ease-in-out;
-}
-
-.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #000;
-}
-
-.oo-ui-window-content {
-  background: transparent;
-}
-
-.oo-ui-window-overlay {
-  font-family: sans-serif;
-  font-size: 1em;
-  line-height: 1.5em;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  background-color: rgba(255, 255, 255, 0.5);
-  opacity: 0;
-  -webkit-transition: opacity 250ms ease-in-out;
-     -moz-transition: opacity 250ms ease-in-out;
-      -ms-transition: opacity 250ms ease-in-out;
-       -o-transition: opacity 250ms ease-in-out;
-          transition: opacity 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 1em;
-  bottom: 1em;
-  background-color: #fff;
-  -webkit-transform: scale(0.5);
-     -moz-transform: scale(0.5);
-      -ms-transform: scale(0.5);
-       -o-transform: scale(0.5);
-          transform: scale(0.5);
-  -webkit-transition: all 250ms ease-in-out;
-     -moz-transition: all 250ms ease-in-out;
-      -ms-transition: all 250ms ease-in-out;
-       -o-transition: all 250ms ease-in-out;
-          transition: all 250ms ease-in-out;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready {
-  opacity: 1;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-ready > .oo-ui-window-frame {
-  -webkit-transform: scale(1);
-     -moz-transform: scale(1);
-      -ms-transform: scale(1);
-       -o-transform: scale(1);
-          transform: scale(1);
-}
-
-.oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-  border: solid 1px #ccc;
-  border-radius: 0.5em;
-  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-}
-
-.oo-ui-messageDialog-content .oo-ui-window-body {
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-
-.oo-ui-messageDialog-title,
-.oo-ui-messageDialog-message {
-  display: block;
-  padding-top: 0.5em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-title {
-  font-size: 1.5em;
-  line-height: 1em;
-  color: #000;
-}
-
-.oo-ui-messageDialog-message {
-  font-size: 0.9em;
-  line-height: 1.25em;
-  color: #666;
-}
-
-.oo-ui-messageDialog-message-verbose {
-  font-size: 1.1em;
-  line-height: 1.5em;
-  text-align: right;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  border-left: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-  border-left-width: 0;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  border-bottom: solid 1px #e5e5e5;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-  border-bottom-width: 0;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 2em;
-  line-height: 3.4em;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-content .oo-ui-window-head {
-  height: 3.4em;
-}
-
-.oo-ui-processDialog-content .oo-ui-window-body {
-  top: 3.4em;
-  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
-}
-
-.oo-ui-processDialog-navigation {
-  position: relative;
-  height: 3.4em;
-  padding: 0 1em;
-}
-
-.oo-ui-processDialog-location {
-  height: 1.9em;
-  padding: 0.25em 0;
-  text-align: center;
-  cursor: default;
-}
-
-.oo-ui-processDialog-title {
-  font-weight: bold;
-  line-height: 1.9em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  min-width: 1.9em;
-  min-height: 1.9em;
-  padding-top: 0.75em;
-  padding-bottom: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  padding: 0 1em;
-  line-height: 1.9em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon {
-  position: absolute;
-  margin-top: -0.125em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em 0.75em 0.75em 0;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  padding: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-  background-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed {
-  margin: 0.75em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  /* Adjust for border so text aligns with title */
-
-  margin: -1px;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover {
-  background-color: rgba(8, 126, 204, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active {
-  background-color: rgba(8, 126, 204, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label {
-  font-weight: bold;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover {
-  background-color: rgba(118, 171, 54, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active {
-  background-color: rgba(118, 171, 54, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover {
-  background-color: rgba(212, 83, 83, 0.05);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active {
-  background-color: rgba(212, 83, 83, 0.1);
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-right: 2.25em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label {
-  padding-left: 2.25em;
-}
-
-.oo-ui-processDialog > .oo-ui-window-frame {
-  min-height: 5em;
-}
-
-.oo-ui-processDialog-errors {
-  padding: 3em 3em 1.5em 3em;
-  text-align: center;
-  background-color: rgba(255, 255, 255, 0.9);
-}
-
-.oo-ui-processDialog-errors .oo-ui-buttonWidget {
-  margin: 2em 1em 2em 1em;
-}
-
-.oo-ui-processDialog-errors-title {
-  margin-bottom: 2em;
-  font-size: 1.5em;
-  color: #000;
-}
-
-.oo-ui-processDialog-error {
-  padding: 1em;
-  margin: 1em;
-  text-align: right;
-  background-color: #fff7f7;
-  border: solid 1px #ff9e9e;
-  border-radius: 0.25em;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
-  color: #333;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  width: 1.9em;
-  height: 1.9em;
-  opacity: 0.8;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  /* Don't animate opacities for now, causes wiggling in Chrome (bug 63020) */
-
-  /*.oo-ui-transition(opacity 200ms);*/
-
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-iconedElement-icon,
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:hover > .oo-ui-labeledElement-label,
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button:focus > .oo-ui-labeledElement-label {
-  color: #000;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #333;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #087ecc;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #76ab36;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #d45353;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  color: #ccc;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
-  padding: 0.2em 0.8em;
-  margin: 0.1em 0;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  border: 1px #c9c9c9 solid;
-  border-radius: 0.3em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  -webkit-transition: border-color 100ms ease-in-out;
-     -moz-transition: border-color 100ms ease-in-out;
-      -ms-transition: border-color 100ms ease-in-out;
-       -o-transition: border-color 100ms ease-in-out;
-          transition: border-color 100ms ease-in-out;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button:focus {
-  border-color: #aaa;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  color: black;
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  border-color: #c9c9c9;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-left: -0.5em;
-  margin-right: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-left: 0.3em;
-  margin-right: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
-  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-  border: solid 1px #a6cee1;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button:focus {
-  border-color: #9dc2d4;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  border: solid 1px #a6cee1;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button {
-  background: #daf0be;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
-  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-  border: solid 1px #b8d892;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button:focus {
-  border-color: #adcb89;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  background: #daf0be;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
-  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-  border: solid 1px #b8d892;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive > .oo-ui-buttonedElement-button {
-  color: #d45353;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  color: #333;
-  background: #eee;
-  border-color: #ccc;
-  opacity: 0.5;
-  box-shadow: none;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button:focus,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:focus,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:focus {
-  border-color: #ccc;
-  box-shadow: none;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  padding: 1.5em;
-}
-
-.oo-ui-bookletLayout-outlinePanel {
-  border-left: solid 1px #ddd;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label {
-  color: #ccc;
-}
-
-.oo-ui-fieldsetLayout {
-  border: none;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  font-size: 1.5em;
-}
-
-.oo-ui-panelLayout-padded {
-  padding: 1.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  margin: -1px -1px -1px 0;
-  border: solid 1px transparent;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool:first-child {
-  border-bottom-right-radius: 0.25em;
-  border-top-right-radius: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool:last-child {
-  margin-left: -1px;
-  border-top-left-radius: 0.25em;
-  border-bottom-left-radius: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-color: rgba(0, 0, 0, 0.2);
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-right-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  margin: -1px 0;
-  border: solid 1px transparent;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-color: rgba(0, 0, 0, 0.1);
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
-  border-top-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 1;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-listToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-}
-
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
-.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-menuToolGroup {
-  border-color: rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-  border-color: rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-  color: #ccc;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-disabled {
-  color: #ccc;
-  border-color: rgba(0, 0, 0, 0.05);
-}
-
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
-.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  background-color: white;
-  border: solid 1px #ccc;
-  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
-  background: #f8fbfd;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
-  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-optionWidget {
-  padding: 0.5em 3em 0.5em 2em;
-}
-
-.oo-ui-optionWidget-highlighted {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-  background-color: #a7dcff;
-}
-
-.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed {
-  background-color: #a7dcff;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  color: #ccc;
-}
-
-.oo-ui-menuWidget {
-  margin-top: -1px;
-  background: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0 0 0.25em 0.25em;
-  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-popupWidget-popup {
-  background-color: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  width: 15px;
-  height: 8px;
-  margin-right: -7px;
-  background-image: /* @embed */ url(images/anchor.svg);
-}
-
-.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-  -webkit-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-     -moz-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-      -ms-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-       -o-transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-          transition: width 100ms ease-in-out, height 100ms ease-in-out, right 100ms ease-in-out;
-}
-
-.oo-ui-popupWidget-body {
-  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
-}
-
-.oo-ui-buttonGroupWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonOptionWidget {
-  padding: 0;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
-.oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-  background-color: transparent;
-}
-
-.oo-ui-buttonSelectWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  margin-right: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonedElement-button {
-  margin-right: 0;
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-}
-
-.oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonedElement-button {
-  border-top-left-radius: 0.3em;
-  border-bottom-left-radius: 0.3em;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  border: solid 1px rgba(0, 0, 0, 0.1);
-  border-radius: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle:hover {
-  border-color: rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  background-color: #f3f3f3;
-  border-color: #ddd;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator {
-  opacity: 0.2;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted,
-.oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-  background-color: #e1f3ff;
-}
-
-.oo-ui-menuSectionItemWidget {
-  padding: 0.33em 0.75em;
-  color: #888;
-}
-
-.oo-ui-outlineControlsWidget {
-  background-color: #fff;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  opacity: 0.2;
-}
-
-.oo-ui-outlineItemWidget {
-  font-size: 1.1em;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
-  padding-left: 1.5em;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  opacity: 0.5;
-}
-
-.oo-ui-outlineItemWidget-level-0 {
-  padding-right: 3.5em;
-}
-
-.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon {
-  right: 1em;
-}
-
-.oo-ui-outlineItemWidget-level-1 {
-  padding-right: 5em;
-}
-
-.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon {
-  right: 2.5em;
-}
-
-.oo-ui-outlineItemWidget-level-2 {
-  padding-right: 6.5em;
-}
-
-.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon {
-  right: 4em;
-}
-
-.oo-ui-selectWidget-depressed .oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-  background-color: #a7dcff;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important {
-  font-weight: bold;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder {
-  font-style: italic;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon {
-  opacity: 0.5;
-}
-
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label {
-  color: #777;
-}
-
-.oo-ui-searchWidget-query {
-  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
-}
-
-.oo-ui-textInputWidget {
-  width: 20em;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  padding: 0.5em;
-  font-family: sans-serif;
-  font-size: 1em;
-  background-color: #fff;
-  border: solid 1px #ccc;
-  border-radius: 0.25em;
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-  -webkit-transition: border-color 200ms, box-shadow 200ms;
-     -moz-transition: border-color 200ms, box-shadow 200ms;
-      -ms-transition: border-color 200ms, box-shadow 200ms;
-       -o-transition: border-color 200ms, box-shadow 200ms;
-          transition: border-color 200ms, box-shadow 200ms;
-}
-
-.oo-ui-textInputWidget-decorated input,
-.oo-ui-textInputWidget-decorated textarea {
-  padding-right: 2em;
-}
-
-.oo-ui-textInputWidget-icon {
-  width: 2em;
-}
-
-.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-  border-color: #a7dcff;
-  outline: none;
-  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
-}
-
-.oo-ui-textInputWidget input[readonly],
-.oo-ui-textInputWidget textarea[readonly] {
-  color: #777;
-  text-shadow: 0 1px 1px #fff;
-}
-
-.oo-ui-textInputWidget-pending input,
-.oo-ui-textInputWidget-pending textarea {
-  background-color: transparent;
-}
-
-.oo-ui-textInputWidget.oo-ui-widget-disabled input,
-.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
-.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
-  color: #ccc;
-  text-shadow: 0 1px 1px #fff;
-  background-color: #f3f3f3;
-  border-color: #ddd;
-}
-
-.oo-ui-toggleSwitchWidget {
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
-  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
-  border: solid 1px #ccc;
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
-  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  opacity: 0.5;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  background: #eeeeee;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-  border: 1px #c9c9c9 solid;
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
-  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-  border-color: #aaa;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  background: #cde7f4;
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
-  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-  border-radius: 1em;
-  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
-  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-  opacity: 1;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: block;
-  opacity: 0;
-}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui-minerva.css b/resources/lib/oojs-ui/oojs-ui-minerva.css
new file mode 100644 (file)
index 0000000..bc7c8ef
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+ * OOjs UI v0.1.0-pre (43f379c884)
+ * https://www.mediawiki.org/wiki/OOjs_UI
+ *
+ * Copyright 2011–2014 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: 2014-08-28T21:49:12Z
+ */
+.oo-ui-rtl{direction:rtl}.oo-ui-ltr{direction:ltr}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button{cursor:pointer;display:inline-block;vertical-align:middle;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{display:none}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator{display:none}.oo-ui-buttonedElement.oo-ui-widget-disabled>.oo-ui-buttonedElement-button{cursor:default}.oo-ui-buttonedElement.oo-ui-indicatedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator,.oo-ui-buttonedElement.oo-ui-iconedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat}.oo-ui-buttonedElement-frameless{display:inline-block;position:relative}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button{display:inline-block;vertical-align:top;text-align:center}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-buttonedElement-framed.oo-ui-widget-disabled>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-active>.oo-ui-buttonedElement-button,.oo-ui-buttonedElement-framed.oo-ui-widget-disabled.oo-ui-buttonedElement-pressed>.oo-ui-buttonedElement-button{cursor:default}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-left:0}.oo-ui-buttonedElement>.oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator{margin-right:-.75em}.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button>.oo-ui-indicatedElement-indicator,.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{width:3.35em;height:3.35em;background-size:2em auto}.oo-ui-buttonedElement-frameless>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{margin-left:.25em}.oo-ui-buttonedElement-framed>.oo-ui-buttonedElement-button>.oo-ui-labeledElement-label{line-height:1.9em}.oo-ui-clippableElement-clippable{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable{overflow-y:hidden}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable{overflow-y:auto}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded{padding:2em}.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget{position:absolute;top:0;left:0;right:0;bottom:3em;overflow-y:auto}.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget{position:absolute;bottom:0;left:0;right:0}.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout{padding:0 0 1em}.oo-ui-fieldLayout{margin-bottom:1em}.oo-ui-fieldLayout:before,.oo-ui-fieldLayout:after{content:" ";display:table}.oo-ui-fieldLayout:after{clear:both}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-labeledElement-label,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{display:block;float:left}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-fieldLayout-field,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-fieldLayout-field{display:block;float:left}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{text-align:right}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-labeledElement-label{display:inline-block;vertical-align:middle}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-fieldLayout-field{display:inline-block;vertical-align:middle}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top>.oo-ui-labeledElement-label{display:inline-block}.oo-ui-fieldLayout>.oo-ui-popupButtonWidget>.oo-ui-popupWidget>.oo-ui-popupWidget-popup{z-index:1}.oo-ui-fieldLayout:last-child{margin-bottom:0}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-labeledElement-label,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-labeledElement-label{padding-top:.5em;margin-right:5%;width:35%}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left>.oo-ui-fieldLayout-field,.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right>.oo-ui-fieldLayout-field{width:60%}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-labeledElement-label{padding:.75em .5em .5em}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline>.oo-ui-fieldLayout-field{padding:.5em 0}.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top>.oo-ui-labeledElement-label{padding:.5em 0}.oo-ui-fieldLayout>.oo-ui-popupButtonWidget>.oo-ui-buttonedElement-button>.oo-ui-iconedElement-icon{margin-top:.25em}.oo-ui-fieldLayout-disabled .oo-ui-labeledElement-label{color:#ccc}.oo-ui-fieldsetLayout{position:relative;margin:0;padding:0}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-iconedElement-icon{display:block;position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-fieldsetLayout+.oo-ui-fieldsetLayout{margin-top:2em}.oo-ui-fieldsetLayout>.oo-ui-labeledElement-label{margin-bottom:.5em;padding:.25em 0}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-labeledElement-label{padding-left:1.75em;line-height:1.33em}.oo-ui-fieldsetLayout.oo-ui-iconedElement>.oo-ui-iconedElement-icon{left:0;top:.25em;width:2em;height:2em}.oo-ui-gridLayout{position:absolute;top:0;left:0;right:0;bottom:0}.oo-ui-panelLayout{position:relative;padding:1em 3.35em}.oo-ui-panelLayout-scrollable{overflow-y:auto}.oo-ui-panelLayout-expanded{position:absolute;top:0;left:0;right:0;bottom:0}.oo-ui-stackLayout>.oo-ui-panelLayout{display:none}.oo-ui-stackLayout-continuous>.oo-ui-panelLayout{display:block;position:relative}.oo-ui-popupTool .oo-ui-popupWidget-popup,.oo-ui-popupTool .oo-ui-popupWidget-anchor{z-index:4}.oo-ui-popupTool .oo-ui-popupWidget{margin-left:1.25em;font-size:.8em}.oo-ui-toolGroup{display:inline-block;vertical-align:middle;margin:.3em}.oo-ui-toolGroup-empty{display:none}.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{background-position:center center;background-repeat:no-repeat}.oo-ui-barToolGroup>.oo-ui-iconedElement-icon,.oo-ui-barToolGroup>.oo-ui-labeledElement-label{display:none}.oo-ui-barToolGroup .oo-ui-tool{display:inline-block;position:relative;vertical-align:top}.oo-ui-barToolGroup .oo-ui-tool-link{display:block}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{display:block}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title{display:none}.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-barToolGroup .oo-ui-tool-title,.oo-ui-barToolGroup .oo-ui-tool-accel{display:none}.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link{cursor:pointer}.oo-ui-barToolGroup .oo-ui-tool-link{height:1.5em;padding:.25em}.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{height:1.5em;width:1.5em}.oo-ui-popupToolGroup{position:relative;height:2em;min-width:2.5em}.oo-ui-popupToolGroup-handle{display:block;cursor:pointer}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle{cursor:default}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools{display:none;position:absolute;z-index:4}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon{background-repeat:no-repeat;background-position:center center}.oo-ui-popupToolGroup-active.oo-ui-widget-enabled>.oo-ui-toolGroup-tools{display:block}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{display:inline-block;vertical-align:middle}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title{display:inline-block;vertical-align:middle}.oo-ui-popupToolGroup .oo-ui-tool-accel{display:none}.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement{min-width:3.5em}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{top:0;width:2em;height:2em}.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator{right:0}.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon{left:.25em}.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{line-height:2.6em;font-size:.8em;margin:0 1em}.oo-ui-popupToolGroup-header{line-height:2.6em;font-size:.8em;margin:0 .6em;font-weight:700}.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{margin-left:3em}.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label{margin-right:2.25em}.oo-ui-popupToolGroup .oo-ui-toolGroup-tools{top:2em;left:-1px}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{height:2em;width:2em;margin-right:.25em}.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title{line-height:2em;font-size:.8em}.oo-ui-listToolGroup .oo-ui-tool{display:inline-block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-listToolGroup .oo-ui-tool-link{display:block;cursor:pointer;white-space:nowrap}.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-listToolGroup .oo-ui-toolGroup-tools{padding:.25em}.oo-ui-listToolGroup .oo-ui-tool-link{padding-right:.5em}.oo-ui-menuToolGroup .oo-ui-tool{display:block}.oo-ui-menuToolGroup .oo-ui-tool-link{display:block;cursor:pointer;white-space:nowrap}.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon{background-image:none}.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon{background-image:url(images/icons/check.svg)}.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link{cursor:default}.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle{min-width:8em}.oo-ui-menuToolGroup .oo-ui-toolGroup-tools{padding:.25em 0}.oo-ui-menuToolGroup .oo-ui-tool-link{padding:0 1em 0 .25em}.oo-ui-toolbar{clear:both}.oo-ui-toolbar-bar{line-height:1em}.oo-ui-toolbar-actions{float:right}.oo-ui-toolbar-tools{float:left}.oo-ui-toolbar-tools,.oo-ui-toolbar-actions,.oo-ui-toolbar-shadow{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-toolbar-actions .oo-ui-popupWidget{-webkit-touch-callout:default;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.oo-ui-toolbar-shadow{background-position:left top;background-repeat:repeat-x;position:absolute;width:100%;pointer-events:none}.oo-ui-selectWidget{margin:0;padding:0}.oo-ui-optionWidget{position:relative;display:block;cursor:pointer;padding:.8em 1em .8em 3.35em;border:none;border-bottom:1px solid #ddd;font-weight:700}.oo-ui-optionWidget.oo-ui-widget-disabled{cursor:default}.oo-ui-optionWidget .oo-ui-labeledElement-label{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.oo-ui-optionWidget .oo-ui-labeledElement-label{line-height:1.5em}.oo-ui-optionWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label{padding-right:1.5em}.oo-ui-optionWidget-level-0{padding-left:3.5em}.oo-ui-optionWidget-level-0 .oo-ui-iconedElement-icon{left:1em}.oo-ui-optionWidget-level-1{padding-left:5em}.oo-ui-optionWidget-level-1 .oo-ui-iconedElement-icon{left:2.5em}.oo-ui-optionWidget-level-2{padding-left:6.5em}.oo-ui-optionWidget-level-2 .oo-ui-iconedElement-icon{left:4em}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{position:absolute;background-repeat:no-repeat;background-position:center center}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{top:50%;width:2em;height:2em;margin-top:-1em}.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon{left:.5em}.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator{right:.5em}.oo-ui-buttonSelectWidget{display:inline-block;white-space:nowrap}.oo-ui-buttonOptionWidget{display:inline-block;padding:0;background-color:transparent}.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button{position:relative}.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{position:static;display:inline-block;vertical-align:middle}.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button{height:1.9em}.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator{height:1.9em;margin-top:0}.oo-ui-labelWidget{display:inline-block;padding:.5em 0}.oo-ui-iconWidget{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat;line-height:2.5em;height:1.9em;width:1.9em;opacity:.8}.oo-ui-iconWidget.oo-ui-widget-disabled{opacity:.2}.oo-ui-indicatorWidget{display:inline-block;vertical-align:middle;background-position:center center;background-repeat:no-repeat;line-height:2.5em;height:1.9em;width:1.9em;opacity:.8}.oo-ui-indicatorWidget.oo-ui-widget-disabled{opacity:.2}.oo-ui-buttonWidget{display:inline-block;vertical-align:middle}.oo-ui-buttonGroupWidget{border-radius:.3em}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button{border-radius:0;margin-bottom:-1px;margin-left:-1px}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button{border-bottom-left-radius:.3em;border-top-left-radius:.3em;margin-left:0}.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button{border-bottom-right-radius:.3em;border-top-right-radius:.3em}.oo-ui-toggleSwitchWidget{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateZ(0px);-moz-transform:translateZ(0px);-ms-transform:translateZ(0px);-o-transform:translateZ(0px);transform:translateZ(0px);height:2em;width:4em}.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled{cursor:default}.oo-ui-toggleSwitchWidget-grip{position:absolute;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow{position:absolute;top:0;bottom:0;right:0;left:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow{display:none}.oo-ui-toggleSwitchWidget-grip{top:.25em;left:.25em;width:1.5em;height:1.5em;margin-top:-1px;-webkit-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-moz-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-ms-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;-o-transition:left 200ms ease-in-out,margin-left 200ms ease-in-out;transition:left 200ms ease-in-out,margin-left 200ms ease-in-out}.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow{-webkit-transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-ms-transition:opacity 200ms ease-in-out;-o-transition:opacity 200ms ease-in-out;transition:opacity 200ms ease-in-out}.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip{left:2.25em;margin-left:-2px}.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip{left:.25em;margin-left:0}.oo-ui-popupWidget-popup{position:absolute;overflow:hidden;z-index:1}.oo-ui-popupWidget-anchor{display:none;z-index:1}.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor{display:block;position:absolute;background-repeat:no-repeat}.oo-ui-popupWidget-head{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-popupWidget-head .oo-ui-buttonWidget{float:right}.oo-ui-popupWidget-head .oo-ui-labeledElement-label{float:left;cursor:default}.oo-ui-popupWidget-body{clear:both;overflow:hidden}.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup{margin-top:7px}.oo-ui-popupWidget-head{height:2.5em}.oo-ui-popupWidget-head .oo-ui-buttonWidget{margin:.25em}.oo-ui-popupWidget-head .oo-ui-labeledElement-label{margin:.75em 1em}.oo-ui-popupWidget-body-padded{padding:0 1em}.oo-ui-popupButtonWidget{position:relative}.oo-ui-popupButtonWidget .oo-ui-popupWidget{position:absolute;left:1em;cursor:auto}.oo-ui-lookupInputWidget-menu{background-color:#fff}.oo-ui-textInputWidget{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-textInputWidget input,.oo-ui-textInputWidget textarea{display:inline-block;width:100%;resize:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-textInputWidget>.oo-ui-iconedElement-icon,.oo-ui-textInputWidget>.oo-ui-indicatedElement-indicator{position:absolute;top:0;height:100%;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-textInputWidget>.oo-ui-iconedElement-icon{left:0}.oo-ui-textInputWidget>.oo-ui-indicatedElement-indicator{right:0}.oo-ui-textInputWidget input,.oo-ui-textInputWidget textarea{padding:.8em 1em}.oo-ui-menuWidget{position:absolute}.oo-ui-menuWidget input{position:absolute;width:0;height:0;overflow:hidden;opacity:0}.oo-ui-menuItemWidget{position:relative}.oo-ui-menuItemWidget .oo-ui-iconedElement-icon{display:none}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected{background-color:transparent}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon{display:block}.oo-ui-menuItemWidget.oo-ui-optionWidget-selected{background:#347bff;color:#fff}.oo-ui-menuItemWidget .oo-ui-iconedElement-icon{background-size:24px auto}.oo-ui-menuSectionItemWidget{cursor:default;font-weight:400;color:#777;border:none}.oo-ui-inlineMenuWidget{position:relative;display:inline-block;margin:.25em 0;min-width:20em}.oo-ui-inlineMenuWidget-handle{width:100%;display:inline-block;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{position:absolute;background-position:center center;background-repeat:no-repeat}.oo-ui-inlineMenuWidget .oo-ui-menuWidget{z-index:1;width:100%}.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle{cursor:default}.oo-ui-inlineMenuWidget-handle{height:2.5em}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{top:0;width:2.5em;height:2.5em}.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator{right:0}.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon{left:.25em}.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{line-height:2.5em;margin:0 .5em}.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{margin-left:3em}.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label{margin-right:2em}.oo-ui-outlineItemWidget{position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:.75em}.oo-ui-outlineControlsWidget{height:3em}.oo-ui-outlineControlsWidget-items,.oo-ui-outlineControlsWidget-movers{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-outlineControlsWidget>.oo-ui-iconedElement-icon{float:left;background-position:right center;background-repeat:no-repeat}.oo-ui-outlineControlsWidget-items{float:left}.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget{float:left}.oo-ui-outlineControlsWidget-movers{float:right}.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget{float:right}.oo-ui-outlineControlsWidget-items,.oo-ui-outlineControlsWidget-movers{height:2em;margin:.5em;padding:0}.oo-ui-outlineControlsWidget>.oo-ui-iconedElement-icon{width:1.5em;height:2em;margin:.5em 0 .5em .5em}.oo-ui-outlineControlsWidget-items{margin-left:0}.oo-ui-comboBoxWidget>.oo-ui-selectWidget{z-index:1}.oo-ui-comboBoxWidget>.oo-ui-selectWidget>.oo-ui-selectWidget{min-width:20em}.oo-ui-searchWidget-query{position:absolute;top:0;left:0;right:0}.oo-ui-searchWidget-query .oo-ui-textInputWidget{width:100%}.oo-ui-searchWidget-results{position:absolute;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:auto}.oo-ui-searchWidget-query{height:4em;padding:0 1em}.oo-ui-searchWidget-query .oo-ui-textInputWidget{margin:.75em 0}.oo-ui-searchWidget-results{top:4em;padding:1em;line-height:0}.oo-ui-window{line-height:1em}.oo-ui-window-frame{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-window-frame>iframe{width:100%;height:100%;margin:0;padding:0}.oo-ui-window-content:focus{outline:0}.oo-ui-window-head,.oo-ui-window-foot{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.oo-ui-window-body{margin:0;padding:0;background:0 0}.oo-ui-window-overlay{position:absolute;top:0;left:0}.oo-ui-dialog-content>.oo-ui-window-head,.oo-ui-dialog-content>.oo-ui-window-body,.oo-ui-dialog-content>.oo-ui-window-foot{position:absolute;left:0;right:0;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-dialog-content>.oo-ui-window-head{z-index:1;top:0}.oo-ui-dialog-content>.oo-ui-window-body{z-index:2;top:0;bottom:0}.oo-ui-dialog-content>.oo-ui-window-foot{z-index:1;bottom:0}.oo-ui-dialog-content>.oo-ui-window-overlay{z-index:3}.oo-ui-messageDialog-actions-horizontal{display:table;table-layout:fixed;width:100%}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget{display:table-cell;width:1%}.oo-ui-messageDialog-actions-vertical{display:block}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget{display:block;overflow:hidden;text-overflow:ellipsis}.oo-ui-messageDialog-actions .oo-ui-actionWidget{position:relative;text-align:center}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button{display:block}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label{position:relative;top:auto;bottom:auto;display:inline;white-space:nowrap}.oo-ui-messageDialog-title,.oo-ui-messageDialog-message{display:block;text-align:center;padding-top:.5em}.oo-ui-messageDialog-title{font-size:1.5em;line-height:1em;color:#000}.oo-ui-messageDialog-message{font-size:.9em;line-height:1.25em;color:#666}.oo-ui-messageDialog-message-verbose{font-size:1.1em;line-height:1.5em;text-align:left}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget{border-right:solid 1px #e5e5e5}.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child{border-right-width:0}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget{border-bottom:solid 1px #e5e5e5}.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child{border-bottom-width:0}.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label{text-align:center;line-height:3.4em;padding:0 2em}.oo-ui-messageDialog-actions .oo-ui-actionWidget:hover{background-color:rgba(0,0,0,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget:active{background-color:rgba(0,0,0,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:hover{background-color:rgba(8,126,204,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary:active{background-color:rgba(8,126,204,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label{font-weight:700}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:hover{background-color:rgba(118,171,54,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-constructive:active{background-color:rgba(118,171,54,.1)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:hover{background-color:rgba(212,83,83,.05)}.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggableElement-destructive:active{background-color:rgba(212,83,83,.1)}.oo-ui-processDialog-location{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oo-ui-processDialog-title{display:inline}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,.oo-ui-processDialog-actions-other .oo-ui-actionWidget{white-space:nowrap}.oo-ui-processDialog-actions-safe,.oo-ui-processDialog-actions-primary{position:absolute;top:0;bottom:0}.oo-ui-processDialog-actions-safe{left:0}.oo-ui-processDialog-actions-primary{right:0}.oo-ui-processDialog-errors{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:2;overflow-x:hidden;overflow-y:auto}.oo-ui-processDialog-content .oo-ui-window-head{height:3.35em;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.oo-ui-processDialog-content .oo-ui-window-body{top:3.35em;padding:2em 0}.oo-ui-processDialog-navigation{position:relative;height:3.35em;padding:0 1em}.oo-ui-processDialog-location{padding:.25em 0;height:3.35em;cursor:default;text-align:center}.oo-ui-processDialog-title{font-weight:700;line-height:1.85em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonedElement-button{padding:.35em .75em;min-width:1.85em;min-height:1.85em;border:1px solid #ddd;border-radius:4px}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labeledElement-label{line-height:1.85em;padding:0 1em;font-weight:700;color:#777}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-iconedElement-icon,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-iconedElement-icon,.oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-iconedElement-icon{position:absolute;margin-top:-.125em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button{vertical-align:middle}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button{border:1px solid transparent}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-flaggableElement-destructive .oo-ui-labeledElement-label{color:#d11d13}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonedElement-button{padding:.75em .35em;border:none;border-radius:0}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button{background-color:#347bff}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label,.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggableElement-primary .oo-ui-labeledElement-label{color:#fff}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon{left:.5em}.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label{padding-left:2.25em}.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon{right:.5em}.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconedElement .oo-ui-labeledElement-label{padding-right:2.25em}.oo-ui-processDialog-actions-other{position:absolute;bottom:1em}.oo-ui-processDialog>.oo-ui-window-frame{min-height:5em}.oo-ui-processDialog-errors{background-color:rgba(255,255,255,.9);padding:3em 3em 1.5em;text-align:center}.oo-ui-processDialog-errors .oo-ui-buttonWidget{margin:2em 1em}.oo-ui-processDialog-errors-title{font-size:1.5em;color:#000;margin-bottom:2em}.oo-ui-processDialog-error{text-align:left;margin:1em;padding:1em;border:solid 1px #ff9e9e;background-color:#fff7f7;border-radius:.25em}.oo-ui-windowManager-modal>.oo-ui-dialog{position:fixed;width:0;height:0;overflow:hidden}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup{width:auto;height:auto;top:0;right:0;bottom:0;left:0;padding:1em}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup>.oo-ui-window-frame{position:fixed;right:0;left:0;margin:auto;overflow:hidden;max-width:100%;max-height:100%}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-setup>.oo-ui-window-frame>iframe{width:100%;height:100%}.oo-ui-windowManager-fullscreen>.oo-ui-dialog>.oo-ui-window-frame{width:100%;height:100%;top:0;bottom:0}.oo-ui-windowManager-modal>.oo-ui-dialog{background-color:rgba(255,255,255,.5);opacity:0;-webkit-transition:opacity 250ms ease-in-out;-moz-transition:opacity 250ms ease-in-out;-ms-transition:opacity 250ms ease-in-out;-o-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.oo-ui-windowManager-modal>.oo-ui-dialog>.oo-ui-window-frame{top:0;bottom:0;background-color:#fff;-webkit-transform:translate3d(0,-200%,0);-moz-transform:translate3d(0,-200%,0);-ms-transform:translate3d(0,-200%,0);-o-transform:translate3d(0,-200%,0);transform:translate3d(0,-200%,0);-webkit-transition:transform 250ms ease-in-out;-moz-transition:transform 250ms ease-in-out;-ms-transition:transform 250ms ease-in-out;-o-transition:transform 250ms ease-in-out;transition:transform 250ms ease-in-out}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-ready{opacity:1}.oo-ui-windowManager-modal>.oo-ui-dialog.oo-ui-window-ready>.oo-ui-window-frame{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.oo-ui-windowManager-modal.oo-ui-windowManager-floating>.oo-ui-dialog>.oo-ui-window-frame{border:solid 1px #ccc;border-radius:.5em;box-shadow:0 .2em 1em rgba(0,0,0,.3)}.oo-ui-icon-check{background-image:url(themes/minerva/images/icons/check.png);background:#347bff}
\ No newline at end of file
index 6f63575..1627aa9 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (0e50d2e336)
+ * OOjs UI v0.1.0-pre (43f379c884)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-08-06T12:56:55Z
+ * Date: 2014-08-28T21:49:12Z
  */
 ( function ( OO ) {
 
@@ -654,18 +654,19 @@ OO.ui.Element.static.tagName = 'div';
  *
  * @static
  * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to
- * @param {OO.ui.Frame} [frame] Frame of the document context
+ * @param {jQuery} [$iframe] HTML iframe element that contains the document, omit if document is
+ *   not in an iframe
  * @return {Function} Bound jQuery function
  */
-OO.ui.Element.getJQuery = function ( context, frame ) {
+OO.ui.Element.getJQuery = function ( context, $iframe ) {
        function wrapper( selector ) {
                return $( selector, wrapper.context );
        }
 
        wrapper.context = this.getDocument( context );
 
-       if ( frame ) {
-               wrapper.frame = frame;
+       if ( $iframe ) {
+               wrapper.$iframe = $iframe;
        }
 
        return wrapper;
@@ -1094,253 +1095,6 @@ OO.ui.Element.prototype.offDOMEvent = function ( event, callback ) {
        };
 }() );
 
-/**
- * Embedded iframe with the same styles as its parent.
- *
- * @class
- * @extends OO.ui.Element
- * @mixins OO.EventEmitter
- *
- * @constructor
- * @param {Object} [config] Configuration options
- */
-OO.ui.Frame = function OoUiFrame( config ) {
-       // Parent constructor
-       OO.ui.Frame.super.call( this, config );
-
-       // Mixin constructors
-       OO.EventEmitter.call( this );
-
-       // Properties
-       this.loading = null;
-       this.config = config;
-       this.dir = null;
-
-       // Initialize
-       this.$element
-               .addClass( 'oo-ui-frame' )
-               .attr( { frameborder: 0, scrolling: 'no' } );
-
-};
-
-/* Setup */
-
-OO.inheritClass( OO.ui.Frame, OO.ui.Element );
-OO.mixinClass( OO.ui.Frame, OO.EventEmitter );
-
-/* Static Properties */
-
-/**
- * @static
- * @inheritdoc
- */
-OO.ui.Frame.static.tagName = 'iframe';
-
-/* Events */
-
-/**
- * @event load
- */
-
-/* Static Methods */
-
-/**
- * Transplant the CSS styles from as parent document to a frame's document.
- *
- * This loops over the style sheets in the parent document, and copies their nodes to the
- * frame's document. It then polls the document to see when all styles have loaded, and once they
- * have, resolves the promise.
- *
- * If the styles still haven't loaded after a long time (5 seconds by default), we give up waiting
- * and resolve the promise anyway. This protects against cases like a display: none; iframe in
- * Firefox, where the styles won't load until the iframe becomes visible.
- *
- * For details of how we arrived at the strategy used in this function, see #load.
- *
- * @static
- * @inheritable
- * @param {HTMLDocument} parentDoc Document to transplant styles from
- * @param {HTMLDocument} frameDoc Document to transplant styles to
- * @param {number} [timeout=5000] How long to wait before giving up (in ms). If 0, never give up.
- * @return {jQuery.Promise} Promise resolved when styles have loaded
- */
-OO.ui.Frame.static.transplantStyles = function ( parentDoc, frameDoc, timeout ) {
-       var i, numSheets, styleNode, newNode, timeoutID, pollNodeId, $pendingPollNodes,
-               $pollNodes = $( [] ),
-               // Fake font-family value
-               fontFamily = 'oo-ui-frame-transplantStyles-loaded',
-               deferred = $.Deferred();
-
-       for ( i = 0, numSheets = parentDoc.styleSheets.length; i < numSheets; i++ ) {
-               styleNode = parentDoc.styleSheets[i].ownerNode;
-               if ( styleNode.disabled ) {
-                       continue;
-               }
-               if ( styleNode.nodeName.toLowerCase() === 'link' ) {
-                       // External stylesheet
-                       // Create a node with a unique ID that we're going to monitor to see when the CSS
-                       // has loaded
-                       pollNodeId = 'oo-ui-frame-transplantStyles-loaded-' + i;
-                       $pollNodes = $pollNodes.add( $( '<div>', frameDoc )
-                               .attr( 'id', pollNodeId )
-                               .appendTo( frameDoc.body )
-                       );
-
-                       // Add <style>@import url(...); #pollNodeId { font-family: ... }</style>
-                       // The font-family rule will only take effect once the @import finishes
-                       newNode = frameDoc.createElement( 'style' );
-                       newNode.textContent = '@import url(' + styleNode.href + ');\n' +
-                               '#' + pollNodeId + ' { font-family: ' + fontFamily + '; }';
-               } else {
-                       // Not an external stylesheet, or no polling required; just copy the node over
-                       newNode = frameDoc.importNode( styleNode, true );
-               }
-               frameDoc.head.appendChild( newNode );
-       }
-
-       // Poll every 100ms until all external stylesheets have loaded
-       $pendingPollNodes = $pollNodes;
-       timeoutID = setTimeout( function pollExternalStylesheets() {
-               while (
-                       $pendingPollNodes.length > 0 &&
-                       $pendingPollNodes.eq( 0 ).css( 'font-family' ) === fontFamily
-               ) {
-                       $pendingPollNodes = $pendingPollNodes.slice( 1 );
-               }
-
-               if ( $pendingPollNodes.length === 0 ) {
-                       // We're done!
-                       if ( timeoutID !== null ) {
-                               timeoutID = null;
-                               $pollNodes.remove();
-                               deferred.resolve();
-                       }
-               } else {
-                       timeoutID = setTimeout( pollExternalStylesheets, 100 );
-               }
-       }, 100 );
-       // ...but give up after a while
-       if ( timeout !== 0 ) {
-               setTimeout( function () {
-                       if ( timeoutID ) {
-                               clearTimeout( timeoutID );
-                               timeoutID = null;
-                               $pollNodes.remove();
-                               deferred.reject();
-                       }
-               }, timeout || 5000 );
-       }
-
-       return deferred.promise();
-};
-
-/* Methods */
-
-/**
- * Load the frame contents.
- *
- * Once the iframe's stylesheets are loaded, the `load` event will be emitted and the returned
- * promise will be resolved. Calling while loading will return a promise but not trigger a new
- * loading cycle. Calling after loading is complete will return a promise that's already been
- * resolved.
- *
- * Sounds simple right? Read on...
- *
- * When you create a dynamic iframe using open/write/close, the window.load event for the
- * iframe is triggered when you call close, and there's no further load event to indicate that
- * everything is actually loaded.
- *
- * In Chrome, stylesheets don't show up in document.styleSheets until they have loaded, so we could
- * just poll that array and wait for it to have the right length. However, in Firefox, stylesheets
- * are added to document.styleSheets immediately, and the only way you can determine whether they've
- * loaded is to attempt to access .cssRules and wait for that to stop throwing an exception. But
- * cross-domain stylesheets never allow .cssRules to be accessed even after they have loaded.
- *
- * The workaround is to change all `<link href="...">` tags to `<style>@import url(...)</style>` tags.
- * Because `@import` is blocking, Chrome won't add the stylesheet to document.styleSheets until
- * the `@import` has finished, and Firefox won't allow .cssRules to be accessed until the `@import`
- * has finished. And because the contents of the `<style>` tag are from the same origin, accessing
- * .cssRules is allowed.
- *
- * However, now that we control the styles we're injecting, we might as well do away with
- * browser-specific polling hacks like document.styleSheets and .cssRules, and instead inject
- * `<style>@import url(...); #foo { font-family: someValue; }</style>`, then create `<div id="foo">`
- * and wait for its font-family to change to someValue. Because `@import` is blocking, the font-family
- * rule is not applied until after the `@import` finishes.
- *
- * All this stylesheet injection and polling magic is in #transplantStyles.
- *
- * @return {jQuery.Promise} Promise resolved when loading is complete
- * @fires load
- */
-OO.ui.Frame.prototype.load = function () {
-       var win, doc,
-               frame = this;
-
-       // Return existing promise if already loading or loaded
-       if ( this.loading ) {
-               return this.loading.promise();
-       }
-
-       // Load the frame
-       this.loading = $.Deferred();
-
-       win = this.$element.prop( 'contentWindow' );
-       doc = win.document;
-
-       // Cache directionality
-       this.dir = OO.ui.Element.getDir( this.$element ) || 'ltr';
-
-       // Initialize contents
-       doc.open();
-       // The following classes can be used here:
-       // oo-ui-ltr
-       // oo-ui-rtl
-       doc.write(
-               '<!doctype html>' +
-               '<html>' +
-                       '<body class="oo-ui-frame-content oo-ui-' + this.getDir() + '" dir="' + this.getDir() + '">' +
-                       '</body>' +
-               '</html>'
-       );
-       doc.close();
-
-       // Properties
-       this.$ = OO.ui.Element.getJQuery( doc, this );
-       this.$content = this.$( '.oo-ui-frame-content' ).attr( 'tabIndex', 0 );
-       this.$document = this.$( doc );
-
-       // Initialization
-       this.constructor.static.transplantStyles( this.getElementDocument(), this.$document[0] )
-               .always( function () {
-                       frame.emit( 'load' );
-                       frame.loading.resolve();
-               } );
-
-       return this.loading.promise();
-};
-
-/**
- * Set the size of the frame.
- *
- * @param {number} width Frame width in pixels
- * @param {number} height Frame height in pixels
- * @chainable
- */
-OO.ui.Frame.prototype.setSize = function ( width, height ) {
-       this.$element.css( { width: width, height: height } );
-       return this;
-};
-
-/**
- * Get the directionality of the frame
- *
- * @return {string} Directionality, 'ltr' or 'rtl'
- */
-OO.ui.Frame.prototype.getDir = function () {
-       return this.dir;
-};
-
 /**
  * Container for elements.
  *
@@ -1528,15 +1282,12 @@ OO.ui.Widget.prototype.updateDisabled = function () {
  * If the requested size is not recognized, the window manager will choose a sensible fallback.
  *
  * @constructor
- * @param {OO.ui.WindowManager} manager Manager of window
  * @param {Object} [config] Configuration options
  * @cfg {string} [size] Symbolic name of dialog size, `small`, `medium`, `large` or `full`; omit to
  *   use #static-size
  * @fires initialize
  */
-OO.ui.Window = function OoUiWindow( manager, config ) {
-       var win = this;
-
+OO.ui.Window = function OoUiWindow( config ) {
        // Configuration initialization
        config = config || {};
 
@@ -1546,46 +1297,25 @@ OO.ui.Window = function OoUiWindow( manager, config ) {
        // Mixin constructors
        OO.EventEmitter.call( this );
 
-       if ( !( manager instanceof OO.ui.WindowManager ) ) {
-               throw new Error( 'Cannot construct window: window must have a manager' );
-       }
-
        // Properties
-       this.manager = manager;
+       this.manager = null;
        this.initialized = false;
        this.visible = false;
        this.opening = null;
        this.closing = null;
        this.opened = null;
        this.timing = null;
+       this.loading = null;
        this.size = config.size || this.constructor.static.size;
-       this.frame = new OO.ui.Frame( { $: this.$ } );
        this.$frame = this.$( '<div>' );
-       this.$ = function () {
-               throw new Error( 'this.$() cannot be used until the frame has been initialized.' );
-       };
 
        // Initialization
        this.$element
                .addClass( 'oo-ui-window' )
-               // Hide the window using visibility: hidden; while the iframe is still loading
-               // Can't use display: none; because that prevents the iframe from loading in Firefox
-               .css( 'visibility', 'hidden' )
                .append( this.$frame );
-       this.$frame
-               .addClass( 'oo-ui-window-frame' )
-               .append( this.frame.$element );
+       this.$frame.addClass( 'oo-ui-window-frame' );
 
-       // Events
-       this.frame.on( 'load', function () {
-               win.initialize();
-               win.initialized = true;
-               // Undo the visibility: hidden; hack and apply display: none;
-               // We can do this safely now that the iframe has initialized
-               // (don't do this from within #initialize because it has to happen
-               // after the all subclasses have been handled as well).
-               win.$element.hide().css( 'visibility', '' );
-       } );
+       // NOTE: Additional intitialization will occur when #setManager is called
 };
 
 /* Setup */
@@ -1613,6 +1343,116 @@ OO.mixinClass( OO.ui.Window, OO.EventEmitter );
  */
 OO.ui.Window.static.size = 'medium';
 
+/* Static Methods */
+
+/**
+ * Transplant the CSS styles from as parent document to a frame's document.
+ *
+ * This loops over the style sheets in the parent document, and copies their nodes to the
+ * frame's document. It then polls the document to see when all styles have loaded, and once they
+ * have, resolves the promise.
+ *
+ * If the styles still haven't loaded after a long time (5 seconds by default), we give up waiting
+ * and resolve the promise anyway. This protects against cases like a display: none; iframe in
+ * Firefox, where the styles won't load until the iframe becomes visible.
+ *
+ * For details of how we arrived at the strategy used in this function, see #load.
+ *
+ * @static
+ * @inheritable
+ * @param {HTMLDocument} parentDoc Document to transplant styles from
+ * @param {HTMLDocument} frameDoc Document to transplant styles to
+ * @param {number} [timeout=5000] How long to wait before giving up (in ms). If 0, never give up.
+ * @return {jQuery.Promise} Promise resolved when styles have loaded
+ */
+OO.ui.Window.static.transplantStyles = function ( parentDoc, frameDoc, timeout ) {
+       var i, numSheets, styleNode, styleText, newNode, timeoutID, pollNodeId, $pendingPollNodes,
+               $pollNodes = $( [] ),
+               // Fake font-family value
+               fontFamily = 'oo-ui-frame-transplantStyles-loaded',
+               nextIndex = parentDoc.oouiFrameTransplantStylesNextIndex || 0,
+               deferred = $.Deferred();
+
+       for ( i = 0, numSheets = parentDoc.styleSheets.length; i < numSheets; i++ ) {
+               styleNode = parentDoc.styleSheets[i].ownerNode;
+               if ( styleNode.disabled ) {
+                       continue;
+               }
+
+               if ( styleNode.nodeName.toLowerCase() === 'link' ) {
+                       // External stylesheet; use @import
+                       styleText = '@import url(' + styleNode.href + ');';
+               } else {
+                       // Internal stylesheet; just copy the text
+                       styleText = styleNode.textContent;
+               }
+
+               // Create a node with a unique ID that we're going to monitor to see when the CSS
+               // has loaded
+               if ( styleNode.oouiFrameTransplantStylesId ) {
+                       // If we're nesting transplantStyles operations and this node already has
+                       // a CSS rule to wait for loading, reuse it
+                       pollNodeId = styleNode.oouiFrameTransplantStylesId;
+               } else {
+                       // Otherwise, create a new ID
+                       pollNodeId = 'oo-ui-frame-transplantStyles-loaded-' + nextIndex;
+                       nextIndex++;
+
+                       // Add #pollNodeId { font-family: ... } to the end of the stylesheet / after the @import
+                       // The font-family rule will only take effect once the @import finishes
+                       styleText += '\n' + '#' + pollNodeId + ' { font-family: ' + fontFamily + '; }';
+               }
+
+               // Create a node with id=pollNodeId
+               $pollNodes = $pollNodes.add( $( '<div>', frameDoc )
+                       .attr( 'id', pollNodeId )
+                       .appendTo( frameDoc.body )
+               );
+
+               // Add our modified CSS as a <style> tag
+               newNode = frameDoc.createElement( 'style' );
+               newNode.textContent = styleText;
+               newNode.oouiFrameTransplantStylesId = pollNodeId;
+               frameDoc.head.appendChild( newNode );
+       }
+       frameDoc.oouiFrameTransplantStylesNextIndex = nextIndex;
+
+       // Poll every 100ms until all external stylesheets have loaded
+       $pendingPollNodes = $pollNodes;
+       timeoutID = setTimeout( function pollExternalStylesheets() {
+               while (
+                       $pendingPollNodes.length > 0 &&
+                       $pendingPollNodes.eq( 0 ).css( 'font-family' ) === fontFamily
+               ) {
+                       $pendingPollNodes = $pendingPollNodes.slice( 1 );
+               }
+
+               if ( $pendingPollNodes.length === 0 ) {
+                       // We're done!
+                       if ( timeoutID !== null ) {
+                               timeoutID = null;
+                               $pollNodes.remove();
+                               deferred.resolve();
+                       }
+               } else {
+                       timeoutID = setTimeout( pollExternalStylesheets, 100 );
+               }
+       }, 100 );
+       // ...but give up after a while
+       if ( timeout !== 0 ) {
+               setTimeout( function () {
+                       if ( timeoutID ) {
+                               clearTimeout( timeoutID );
+                               timeoutID = null;
+                               $pollNodes.remove();
+                               deferred.reject();
+                       }
+               }, timeout || 5000 );
+       }
+
+       return deferred.promise();
+};
+
 /* Methods */
 
 /**
@@ -1633,6 +1473,24 @@ OO.ui.Window.prototype.isVisible = function () {
        return this.visible;
 };
 
+/**
+ * Check if window is loading.
+ *
+ * @return {boolean} Window is loading
+ */
+OO.ui.Window.prototype.isLoading = function () {
+       return this.loading && this.loading.state() === 'pending';
+};
+
+/**
+ * Check if window is loaded.
+ *
+ * @return {boolean} Window is loaded
+ */
+OO.ui.Window.prototype.isLoaded = function () {
+       return this.loading && this.loading.state() === 'resolved';
+};
+
 /**
  * Check if window is opening.
  *
@@ -1675,15 +1533,6 @@ OO.ui.Window.prototype.getManager = function () {
        return this.manager;
 };
 
-/**
- * Get the window frame.
- *
- * @return {OO.ui.Frame} Frame of window
- */
-OO.ui.Window.prototype.getFrame = function () {
-       return this.frame;
-};
-
 /**
  * Get the window size.
  *
@@ -1701,8 +1550,8 @@ OO.ui.Window.prototype.getSize = function () {
 OO.ui.Window.prototype.getContentHeight = function () {
        return Math.round(
                // Add buffer for border
-               ( ( this.$frame.outerHeight() - this.$frame.innerHeight() ) * 2 ) +
-               // Height of contents
+               ( this.$frame.outerHeight() - this.$frame.innerHeight() ) +
+               // Use combined heights of children
                ( this.$head.outerHeight( true ) + this.getBodyHeight() + this.$foot.outerHeight( true ) )
        );
 };
@@ -1716,6 +1565,15 @@ OO.ui.Window.prototype.getBodyHeight = function () {
        return this.$body[0].scrollHeight;
 };
 
+/**
+ * Get the directionality of the frame
+ *
+ * @return {string} Directionality, 'ltr' or 'rtl'
+ */
+OO.ui.Window.prototype.getDir = function () {
+       return this.dir;
+};
+
 /**
  * Get a process for setting up a window for use.
  *
@@ -1784,6 +1642,76 @@ OO.ui.Window.prototype.getTeardownProcess = function () {
        return new OO.ui.Process();
 };
 
+/**
+ * Toggle visibility of window.
+ *
+ * If the window is isolated and hasn't fully loaded yet, the visiblity property will be used
+ * instead of display.
+ *
+ * @param {boolean} [show] Make window visible, omit to toggle visibility
+ * @fires visible
+ * @chainable
+ */
+OO.ui.Window.prototype.toggle = function ( show ) {
+       show = show === undefined ? !this.visible : !!show;
+
+       if ( show !== this.isVisible() ) {
+               this.visible = show;
+
+               if ( this.isolated && !this.isLoaded() ) {
+                       // Hide the window using visibility instead of display until loading is complete
+                       // Can't use display: none; because that prevents the iframe from loading in Firefox
+                       this.$element.css( 'visibility', show ? 'visible' : 'hidden' );
+               } else {
+                       this.$element.toggle( show ).css( 'visibility', '' );
+               }
+               this.emit( 'toggle', show );
+       }
+
+       return this;
+};
+
+/**
+ * Set the window manager.
+ *
+ * This must be called before initialize. Calling it more than once will cause an error.
+ *
+ * @param {OO.ui.WindowManager} manager Manager for this window
+ * @throws {Error} If called more than once
+ * @chainable
+ */
+OO.ui.Window.prototype.setManager = function ( manager ) {
+       if ( this.manager ) {
+               throw new Error( 'Cannot set window manager, window already has a manager' );
+       }
+
+       // Properties
+       this.manager = manager;
+       this.isolated = manager.shouldIsolate();
+
+       // Initialization
+       if ( this.isolated ) {
+               this.$iframe = this.$( '<iframe>' );
+               this.$iframe.attr( { frameborder: 0, scrolling: 'no' } );
+               this.$frame.append( this.$iframe );
+               this.$ = function () {
+                       throw new Error( 'this.$() cannot be used until the frame has been initialized.' );
+               };
+               // WARNING: Do not use this.$ again until #initialize is called
+       } else {
+               this.$content = this.$( '<div>' );
+               this.$document = $( this.getElementDocument() );
+               this.$content.addClass( 'oo-ui-window-content' );
+               this.$frame.append( this.$content );
+       }
+       this.toggle( false );
+
+       // Figure out directionality:
+       this.dir = OO.ui.Element.getDir( this.$iframe || this.$content ) || 'ltr';
+
+       return this;
+};
+
 /**
  * Set the window size.
  *
@@ -1833,11 +1761,15 @@ OO.ui.Window.prototype.setDimensions = function ( dim ) {
  *
  * Once this method is called, this.$ can be used to create elements within the frame.
  *
+ * @throws {Error} If not attached to a manager
  * @chainable
  */
 OO.ui.Window.prototype.initialize = function () {
+       if ( !this.manager ) {
+               throw new Error( 'Cannot initialize window, must be attached to a manager' );
+       }
+
        // Properties
-       this.$ = this.frame.$;
        this.$head = this.$( '<div>' );
        this.$body = this.$( '<div>' );
        this.$foot = this.$( '<div>' );
@@ -1848,9 +1780,7 @@ OO.ui.Window.prototype.initialize = function () {
        this.$body.addClass( 'oo-ui-window-body' );
        this.$foot.addClass( 'oo-ui-window-foot' );
        this.$overlay.addClass( 'oo-ui-window-overlay' );
-       this.frame.$content
-               .addClass( 'oo-ui-window-content' )
-               .append( this.$head, this.$body, this.$foot, this.$overlay );
+       this.$content.append( this.$head, this.$body, this.$foot, this.$overlay );
 
        return this;
 };
@@ -1882,18 +1812,6 @@ OO.ui.Window.prototype.close = function ( data ) {
        return this.manager.closeWindow( this, data );
 };
 
-/**
- * Load window.
- *
- * This is called by OO.ui.WindowManager durring window adding, and should not be called directly
- * by other systems.
- *
- * @return {jQuery.Promise} Promise resolved when window is loaded
- */
-OO.ui.Window.prototype.load = function () {
-       return this.frame.load();
-};
-
 /**
  * Setup window.
  *
@@ -1910,10 +1828,9 @@ OO.ui.Window.prototype.setup = function ( data ) {
        this.$element.show();
        this.visible = true;
        this.getSetupProcess( data ).execute().done( function () {
-               win.manager.updateWindowSize( win );
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.addClass( 'oo-ui-window-setup' ).width();
-               win.frame.$content.addClass( 'oo-ui-window-content-setup' ).width();
+               win.$content.addClass( 'oo-ui-window-content-setup' ).width();
                deferred.resolve();
        } );
 
@@ -1933,11 +1850,11 @@ OO.ui.Window.prototype.ready = function ( data ) {
        var win = this,
                deferred = $.Deferred();
 
-       this.frame.$content[0].focus();
+       this.$content.focus();
        this.getReadyProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.addClass( 'oo-ui-window-ready' ).width();
-               win.frame.$content.addClass( 'oo-ui-window-content-ready' ).width();
+               win.$content.addClass( 'oo-ui-window-content-ready' ).width();
                deferred.resolve();
        } );
 
@@ -1958,13 +1875,17 @@ OO.ui.Window.prototype.hold = function ( data ) {
                deferred = $.Deferred();
 
        this.getHoldProcess( data ).execute().done( function () {
-               var $focused = win.frame.$content.find( ':focus' );
-               if ( $focused.length ) {
-                       $focused[0].blur();
+               // Get the focused element within the window's content
+               var $focus = win.$content.find( OO.ui.Element.getDocument( win.$content ).activeElement );
+
+               // Blur the focused element
+               if ( $focus.length ) {
+                       $focus[0].blur();
                }
+
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.removeClass( 'oo-ui-window-ready' ).width();
-               win.frame.$content.removeClass( 'oo-ui-window-content-ready' ).width();
+               win.$content.removeClass( 'oo-ui-window-content-ready' ).width();
                deferred.resolve();
        } );
 
@@ -1987,7 +1908,7 @@ OO.ui.Window.prototype.teardown = function ( data ) {
        this.getTeardownProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.removeClass( 'oo-ui-window-setup' ).width();
-               win.frame.$content.removeClass( 'oo-ui-window-content-setup' ).width();
+               win.$content.removeClass( 'oo-ui-window-content-setup' ).width();
                win.$element.hide();
                win.visible = false;
                deferred.resolve();
@@ -1996,6 +1917,104 @@ OO.ui.Window.prototype.teardown = function ( data ) {
        return deferred.promise();
 };
 
+/**
+ * Load the frame contents.
+ *
+ * Once the iframe's stylesheets are loaded, the `load` event will be emitted and the returned
+ * promise will be resolved. Calling while loading will return a promise but not trigger a new
+ * loading cycle. Calling after loading is complete will return a promise that's already been
+ * resolved.
+ *
+ * Sounds simple right? Read on...
+ *
+ * When you create a dynamic iframe using open/write/close, the window.load event for the
+ * iframe is triggered when you call close, and there's no further load event to indicate that
+ * everything is actually loaded.
+ *
+ * In Chrome, stylesheets don't show up in document.styleSheets until they have loaded, so we could
+ * just poll that array and wait for it to have the right length. However, in Firefox, stylesheets
+ * are added to document.styleSheets immediately, and the only way you can determine whether they've
+ * loaded is to attempt to access .cssRules and wait for that to stop throwing an exception. But
+ * cross-domain stylesheets never allow .cssRules to be accessed even after they have loaded.
+ *
+ * The workaround is to change all `<link href="...">` tags to `<style>@import url(...)</style>`
+ * tags. Because `@import` is blocking, Chrome won't add the stylesheet to document.styleSheets
+ * until the `@import` has finished, and Firefox won't allow .cssRules to be accessed until the
+ * `@import` has finished. And because the contents of the `<style>` tag are from the same origin,
+ * accessing .cssRules is allowed.
+ *
+ * However, now that we control the styles we're injecting, we might as well do away with
+ * browser-specific polling hacks like document.styleSheets and .cssRules, and instead inject
+ * `<style>@import url(...); #foo { font-family: someValue; }</style>`, then create `<div id="foo">`
+ * and wait for its font-family to change to someValue. Because `@import` is blocking, the
+ * font-family rule is not applied until after the `@import` finishes.
+ *
+ * All this stylesheet injection and polling magic is in #transplantStyles.
+ *
+ * @return {jQuery.Promise} Promise resolved when loading is complete
+ * @fires load
+ */
+OO.ui.Window.prototype.load = function () {
+       var sub, doc, loading,
+               win = this;
+
+       // Non-isolated windows are already "loaded"
+       if ( !this.loading && !this.isolated ) {
+               this.loading = $.Deferred().resolve();
+               this.initialize();
+               // Set initialized state after so sub-classes aren't confused by it being set by calling
+               // their parent initialize method
+               this.initialized = true;
+       }
+
+       // Return existing promise if already loading or loaded
+       if ( this.loading ) {
+               return this.loading.promise();
+       }
+
+       // Load the frame
+       loading = this.loading = $.Deferred();
+       sub = this.$iframe.prop( 'contentWindow' );
+       doc = sub.document;
+
+       // Initialize contents
+       doc.open();
+       doc.write(
+               '<!doctype html>' +
+               '<html>' +
+                       '<body class="oo-ui-window-isolated oo-ui-' + this.dir + '"' +
+                               ' style="direction:' + this.dir + ';" dir="' + this.dir + '">' +
+                               '<div class="oo-ui-window-content"></div>' +
+                       '</body>' +
+               '</html>'
+       );
+       doc.close();
+
+       // Properties
+       this.$ = OO.ui.Element.getJQuery( doc, this.$element );
+       this.$content = this.$( '.oo-ui-window-content' ).attr( 'tabIndex', 0 );
+       this.$document = this.$( doc );
+
+       // Initialization
+       this.constructor.static.transplantStyles( this.getElementDocument(), this.$document[0] )
+               .always( function () {
+                       // Initialize isolated windows
+                       win.initialize();
+                       // Set initialized state after so sub-classes aren't confused by it being set by calling
+                       // their parent initialize method
+                       win.initialized = true;
+                       // Undo the visibility: hidden; hack and apply display: none;
+                       // We can do this safely now that the iframe has initialized
+                       // (don't do this from within #initialize because it has to happen
+                       // after the all subclasses have been handled as well).
+                       win.toggle( win.isVisible() );
+
+                       loading.resolve();
+               } );
+
+       return loading.promise();
+};
+
 /**
  * Base class for all dialogs.
  *
@@ -2025,9 +2044,9 @@ OO.ui.Window.prototype.teardown = function ( data ) {
  * @constructor
  * @param {Object} [config] Configuration options
  */
-OO.ui.Dialog = function OoUiDialog( manager, config ) {
+OO.ui.Dialog = function OoUiDialog( config ) {
        // Parent constructor
-       OO.ui.Dialog.super.call( this, manager, config );
+       OO.ui.Dialog.super.call( this, config );
 
        // Properties
        this.actions = new OO.ui.ActionSet();
@@ -2100,7 +2119,7 @@ OO.ui.Dialog.static.escapable = true;
  *
  * @param {jQuery.Event} e Key down event
  */
-OO.ui.Dialog.prototype.onFrameDocumentKeyDown = function ( e ) {
+OO.ui.Dialog.prototype.onDocumentKeyDown = function ( e ) {
        if ( e.which === OO.ui.Keys.ESCAPE ) {
                this.close();
                return false;
@@ -2232,11 +2251,11 @@ OO.ui.Dialog.prototype.initialize = function () {
 
        // Events
        if ( this.constructor.static.escapable ) {
-               this.frame.$document.on( 'keydown', OO.ui.bind( this.onFrameDocumentKeyDown, this ) );
+               this.$document.on( 'keydown', OO.ui.bind( this.onDocumentKeyDown, this ) );
        }
 
        // Initialization
-       this.frame.$content.addClass( 'oo-ui-dialog-content' );
+       this.$content.addClass( 'oo-ui-dialog-content' );
 };
 
 /**
@@ -2281,7 +2300,7 @@ OO.ui.Dialog.prototype.executeAction = function ( action ) {
  */
 OO.ui.Dialog.prototype.pushPending = function () {
        if ( this.pending === 0 ) {
-               this.frame.$content.addClass( 'oo-ui-actionDialog-content-pending' );
+               this.$content.addClass( 'oo-ui-actionDialog-content-pending' );
                this.$head.addClass( 'oo-ui-texture-pending' );
        }
        this.pending++;
@@ -2298,7 +2317,7 @@ OO.ui.Dialog.prototype.pushPending = function () {
  */
 OO.ui.Dialog.prototype.popPending = function () {
        if ( this.pending === 1 ) {
-               this.frame.$content.removeClass( 'oo-ui-actionDialog-content-pending' );
+               this.$content.removeClass( 'oo-ui-actionDialog-content-pending' );
                this.$head.removeClass( 'oo-ui-texture-pending' );
        }
        this.pending = Math.max( 0, this.pending - 1 );
@@ -2346,6 +2365,7 @@ OO.ui.Dialog.prototype.popPending = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
+ * @cfg {boolean} [isolate] Configure managed windows to isolate their content using inline frames
  * @cfg {OO.Factory} [factory] Window factory to use for automatic instantiation
  * @cfg {boolean} [modal=true] Prevent interaction outside the dialog
  */
@@ -2362,10 +2382,13 @@ OO.ui.WindowManager = function OoUiWindowManager( config ) {
        // Properties
        this.factory = config.factory;
        this.modal = config.modal === undefined || !!config.modal;
+       this.isolate = !!config.isolate;
        this.windows = {};
        this.opening = null;
        this.opened = null;
        this.closing = null;
+       this.preparingToOpen = null;
+       this.preparingToClose = null;
        this.size = null;
        this.currentWindow = null;
        this.$ariaHidden = null;
@@ -2535,6 +2558,17 @@ OO.ui.WindowManager.prototype.isOpened = function ( win ) {
        return win === this.currentWindow && !!this.opened && this.opened.state() === 'pending';
 };
 
+/**
+ * Check if window contents should be isolated.
+ *
+ * Window content isolation is done using inline frames.
+ *
+ * @return {boolean} Window contents should be isolated
+ */
+OO.ui.WindowManager.prototype.shouldIsolate = function () {
+       return this.isolate;
+};
+
 /**
  * Check if a window is being managed.
  *
@@ -2603,8 +2637,7 @@ OO.ui.WindowManager.prototype.getTeardownDelay = function () {
  * If window is not yet instantiated, it will be instantiated and added automatically.
  *
  * @param {string} name Symbolic window name
- * @return {jQuery.Promise} Promise resolved when window is ready to be accessed; when resolved the
- *   first argument is an OO.ui.Window; when rejected the first argument is an OO.ui.Error
+ * @return {jQuery.Promise} Promise resolved with matching window, or rejected with an OO.ui.Error
  * @throws {Error} If the symbolic name is unrecognized by the factory
  * @throws {Error} If the symbolic name unrecognized as a managed window
  */
@@ -2620,10 +2653,8 @@ OO.ui.WindowManager.prototype.getWindow = function ( name ) {
                                ) );
                        } else {
                                win = this.factory.create( name, this, { $: this.$ } );
-                               this.addWindows( [ win ] ).then(
-                                       OO.ui.bind( deferred.resolve, deferred, win ),
-                                       deferred.reject
-                               );
+                               this.addWindows( [ win ] );
+                               deferred.resolve( win );
                        }
                } else {
                        deferred.reject( new OO.ui.Error(
@@ -2672,49 +2703,45 @@ OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
                opening.reject( new OO.ui.Error(
                        'Cannot open window: window is not attached to manager'
                ) );
+       } else if ( this.preparingToOpen || this.opening || this.opened ) {
+               opening.reject( new OO.ui.Error(
+                       'Cannot open window: another window is opening or open'
+               ) );
        }
 
        // Window opening
        if ( opening.state() !== 'rejected' ) {
-               // Begin loading the window if it's not loaded already - may take noticable time and we want
-               // too do this in paralell with any preparatory actions
-               preparing.push( win.load() );
-
-               if ( this.opening || this.opened ) {
-                       // If a window is currently opening or opened, close it first
-                       preparing.push( this.closeWindow( this.currentWindow ) );
-               } else if ( this.closing ) {
+               // Begin loading the window if it's not loading or loaded already - may take noticable time
+               // and we want to do this in paralell with any other preparatory actions
+               if ( !win.isLoading() && !win.isLoaded() ) {
+                       // Finish initializing the window (must be done after manager is attached to DOM)
+                       win.setManager( this );
+                       preparing.push( win.load() );
+               }
+
+               if ( this.closing ) {
                        // If a window is currently closing, wait for it to complete
                        preparing.push( this.closing );
                }
 
-               $.when.apply( $, preparing ).done( function () {
+               this.preparingToOpen = $.when.apply( $, preparing );
+               // Ensure handlers get called after preparingToOpen is set
+               this.preparingToOpen.done( function () {
                        if ( manager.modal ) {
-                               manager.$( manager.getElementDocument() ).on( {
-                                       // Prevent scrolling by keys in top-level window
-                                       keydown: manager.onDocumentKeyDownHandler
-                               } );
-                               manager.$( manager.getElementWindow() ).on( {
-                                       // Prevent scrolling by wheel in top-level window
-                                       mousewheel: manager.onWindowMouseWheelHandler,
-                                       // Start listening for top-level window dimension changes
-                                       'orientationchange resize': manager.onWindowResizeHandler
-                               } );
-                               // Hide other content from screen readers
-                               manager.$ariaHidden = $( 'body' )
-                                       .children()
-                                       .not( manager.$element.parentsUntil( 'body' ).last() )
-                                       .attr( 'aria-hidden', '' );
+                               manager.toggleGlobalEvents( true );
+                               manager.toggleAriaIsolation( true );
                        }
                        manager.currentWindow = win;
                        manager.opening = opening;
+                       manager.preparingToOpen = null;
                        manager.emit( 'opening', win, opening, data );
-                       manager.updateWindowSize( win );
                        setTimeout( function () {
                                win.setup( data ).then( function () {
+                                       manager.updateWindowSize( win );
                                        manager.opening.notify( { state: 'setup' } );
                                        setTimeout( function () {
                                                win.ready( data ).then( function () {
+                                                       manager.updateWindowSize( win );
                                                        manager.opening.notify( { state: 'ready' } );
                                                        manager.opening = null;
                                                        manager.opened = $.Deferred();
@@ -2726,7 +2753,7 @@ OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
                } );
        }
 
-       return opening;
+       return opening.promise();
 };
 
 /**
@@ -2761,7 +2788,7 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                closing.reject( new OO.ui.Error(
                        'Cannot close window: window already closed with different data'
                ) );
-       } else if ( this.closing ) {
+       } else if ( this.preparingToClose || this.closing ) {
                closing.reject( new OO.ui.Error(
                        'Cannot close window: window already closing with different data'
                ) );
@@ -2774,9 +2801,11 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                        preparing.push( this.opening );
                }
 
-               // Close the window
-               $.when.apply( $, preparing ).done( function () {
+               this.preparingToClose = $.when.apply( $, preparing );
+               // Ensure handlers get called after preparingToClose is set
+               this.preparingToClose.done( function () {
                        manager.closing = closing;
+                       manager.preparingToClose = null;
                        manager.emit( 'closing', win, closing, data );
                        manager.opened = null;
                        opened.resolve( closing.promise(), data );
@@ -2787,21 +2816,8 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                                                win.teardown( data ).then( function () {
                                                        closing.notify( { state: 'teardown' } );
                                                        if ( manager.modal ) {
-                                                               manager.$( manager.getElementDocument() ).off( {
-                                                                       // Allow scrolling by keys in top-level window
-                                                                       keydown: manager.onDocumentKeyDownHandler
-                                                               } );
-                                                               manager.$( manager.getElementWindow() ).off( {
-                                                                       // Allow scrolling by wheel in top-level window
-                                                                       mousewheel: manager.onWindowMouseWheelHandler,
-                                                                       // Stop listening for top-level window dimension changes
-                                                                       'orientationchange resize': manager.onWindowResizeHandler
-                                                               } );
-                                                       }
-                                                       // Restore screen reader visiblity
-                                                       if ( manager.$ariaHidden ) {
-                                                               manager.$ariaHidden.removeAttr( 'aria-hidden' );
-                                                               manager.$ariaHidden = null;
+                                                               manager.toggleGlobalEvents( false );
+                                                               manager.toggleAriaIsolation( false );
                                                        }
                                                        manager.closing = null;
                                                        manager.currentWindow = null;
@@ -2813,23 +2829,18 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                } );
        }
 
-       return closing;
+       return closing.promise();
 };
 
 /**
  * Add windows.
  *
- * If the window manager is attached to the DOM then windows will be automatically loaded as they
- * are added.
- *
  * @param {Object.<string,OO.ui.Window>|OO.ui.Window[]} windows Windows to add
- * @return {jQuery.Promise} Promise resolved when all windows are added
  * @throws {Error} If one of the windows being added without an explicit symbolic name does not have
  *   a statically configured symbolic name
  */
 OO.ui.WindowManager.prototype.addWindows = function ( windows ) {
-       var i, len, win, name, list,
-               promises = [];
+       var i, len, win, name, list;
 
        if ( $.isArray( windows ) ) {
                // Convert to map of windows by looking up symbolic names from static configuration
@@ -2850,13 +2861,7 @@ OO.ui.WindowManager.prototype.addWindows = function ( windows ) {
                win = list[name];
                this.windows[name] = win;
                this.$element.append( win.$element );
-
-               if ( this.isElementAttached() ) {
-                       promises.push( win.load() );
-               }
        }
-
-       return $.when.apply( $, promises );
 };
 
 /**
@@ -2931,6 +2936,84 @@ OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
        return this;
 };
 
+/**
+ * Bind or unbind global events for scrolling.
+ *
+ * @param {boolean} [on] Bind global events
+ * @chainable
+ */
+OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
+       on = on === undefined ? !!this.globalEvents : !!on;
+
+       if ( on ) {
+               if ( !this.globalEvents ) {
+                       this.$( this.getElementDocument() ).on( {
+                               // Prevent scrolling by keys in top-level window
+                               keydown: this.onDocumentKeyDownHandler
+                       } );
+                       this.$( this.getElementWindow() ).on( {
+                               // Prevent scrolling by wheel in top-level window
+                               mousewheel: this.onWindowMouseWheelHandler,
+                               // Start listening for top-level window dimension changes
+                               'orientationchange resize': this.onWindowResizeHandler
+                       } );
+                       this.globalEvents = true;
+               }
+       } else if ( this.globalEvents ) {
+               // Unbind global events
+               this.$( this.getElementDocument() ).off( {
+                       // Allow scrolling by keys in top-level window
+                       keydown: this.onDocumentKeyDownHandler
+               } );
+               this.$( this.getElementWindow() ).off( {
+                       // Allow scrolling by wheel in top-level window
+                       mousewheel: this.onWindowMouseWheelHandler,
+                       // Stop listening for top-level window dimension changes
+                       'orientationchange resize': this.onWindowResizeHandler
+               } );
+               this.globalEvents = false;
+       }
+
+       return this;
+};
+
+/**
+ * Toggle screen reader visibility of content other than the window manager.
+ *
+ * @param {boolean} [isolate] Make only the window manager visible to screen readers
+ * @chainable
+ */
+OO.ui.WindowManager.prototype.toggleAriaIsolation = function ( isolate ) {
+       isolate = isolate === undefined ? !this.$ariaHidden : !!isolate;
+
+       if ( isolate ) {
+               if ( !this.$ariaHidden ) {
+                       // Hide everything other than the window manager from screen readers
+                       this.$ariaHidden = $( 'body' )
+                               .children()
+                               .not( this.$element.parentsUntil( 'body' ).last() )
+                               .attr( 'aria-hidden', '' );
+               }
+       } else if ( this.$ariaHidden ) {
+               // Restore screen reader visiblity
+               this.$ariaHidden.removeAttr( 'aria-hidden' );
+               this.$ariaHidden = null;
+       }
+
+       return this;
+};
+
+/**
+ * Destroy window manager.
+ *
+ * Windows will not be closed, only removed from the DOM.
+ */
+OO.ui.WindowManager.prototype.destroy = function () {
+       this.toggleGlobalEvents( false );
+       this.toggleAriaIsolation( false );
+       this.$element.remove();
+};
+
 /**
  * @abstract
  * @class
@@ -3364,10 +3447,9 @@ OO.ui.ButtonedElement.prototype.onMouseDown = function ( e ) {
        // tabIndex should generally be interacted with via the property, but it's not possible to
        // reliably unset a tabIndex via a property so we use the (lowercase) "tabindex" attribute
        this.tabIndex = this.$button.attr( 'tabindex' );
-       this.$button
-               // Remove the tab-index while the button is down to prevent the button from stealing focus
-               .removeAttr( 'tabindex' )
-               .addClass( 'oo-ui-buttonedElement-pressed' );
+       // Remove the tab-index while the button is down to prevent the button from stealing focus
+       this.$button.removeAttr( 'tabindex' );
+       this.$element.addClass( 'oo-ui-buttonedElement-pressed' );
        // Run the mouseup handler no matter where the mouse is when the button is let go, so we can
        // reliably reapply the tabindex and remove the pressed class
        this.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );
@@ -3386,10 +3468,9 @@ OO.ui.ButtonedElement.prototype.onMouseUp = function ( e ) {
        if ( this.isDisabled() || e.which !== 1 ) {
                return false;
        }
-       this.$button
-               // Restore the tab-index after the button is up to restore the button's accesssibility
-               .attr( 'tabindex', this.tabIndex )
-               .removeClass( 'oo-ui-buttonedElement-pressed' );
+       // Restore the tab-index after the button is up to restore the button's accesssibility
+       this.$button.attr( 'tabindex', this.tabIndex );
+       this.$element.removeClass( 'oo-ui-buttonedElement-pressed' );
        // Stop listening for mouseup, since we only needed this once
        this.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );
 };
@@ -3449,7 +3530,7 @@ OO.ui.ButtonedElement.prototype.setAccessKey = function ( accessKey ) {
  * @chainable
  */
 OO.ui.ButtonedElement.prototype.setActive = function ( value ) {
-       this.$button.toggleClass( 'oo-ui-buttonedElement-active', !!value );
+       this.$element.toggleClass( 'oo-ui-buttonedElement-active', !!value );
        return this;
 };
 
@@ -3741,6 +3822,15 @@ OO.ui.GroupElement = function OoUiGroupElement( $group, config ) {
 
 /* Methods */
 
+/**
+ * Check if there are no items.
+ *
+ * @return {boolean} Group is empty
+ */
+OO.ui.GroupElement.prototype.isEmpty = function () {
+       return !this.items.length;
+};
+
 /**
  * Get items.
  *
@@ -4167,7 +4257,7 @@ OO.initClass( OO.ui.LabeledElement );
  *
  * @static
  * @inheritable
- * @property {string|Function|null} Label text; a function that returns nodes or text; or null for
+ * @property {string|Function|null} Label text; a function that returns nodes or text; or null for
  *  no label
  */
 OO.ui.LabeledElement.static.label = null;
@@ -5130,9 +5220,9 @@ OO.ui.ToolGroup.prototype.destroy = function () {
  * @constructor
  * @param {Object} [config] Configuration options
  */
-OO.ui.MessageDialog = function OoUiMessageDialog( manager, config ) {
+OO.ui.MessageDialog = function OoUiMessageDialog( config ) {
        // Parent constructor
-       OO.ui.MessageDialog.super.call( this, manager, config );
+       OO.ui.MessageDialog.super.call( this, config );
 
        // Properties
        this.verticalActionLayout = null;
@@ -5278,7 +5368,7 @@ OO.ui.MessageDialog.prototype.initialize = function () {
 
        // Initialization
        this.title.$element.addClass( 'oo-ui-messageDialog-title' );
-       this.frame.$content.addClass( 'oo-ui-messageDialog-content' );
+       this.$content.addClass( 'oo-ui-messageDialog-content' );
        this.container.$element.append( this.text.$element );
        this.text.$element.append( this.title.$element, this.message.$element );
        this.$body.append( this.container.$element );
@@ -5366,9 +5456,9 @@ OO.ui.MessageDialog.prototype.fitActions = function () {
  * @constructor
  * @param {Object} [config] Configuration options
  */
-OO.ui.ProcessDialog = function OoUiProcessDialog( manager, config ) {
+OO.ui.ProcessDialog = function OoUiProcessDialog( config ) {
        // Parent constructor
-       OO.ui.ProcessDialog.super.call( this, manager, config );
+       OO.ui.ProcessDialog.super.call( this, config );
 
        // Initialization
        this.$element.addClass( 'oo-ui-processDialog' );
@@ -5451,7 +5541,7 @@ OO.ui.ProcessDialog.prototype.initialize = function () {
        this.$errors
                .addClass( 'oo-ui-processDialog-errors' )
                .append( this.$errorsTitle, this.dismissButton.$element, this.retryButton.$element );
-       this.frame.$content
+       this.$content
                .addClass( 'oo-ui-processDialog-content' )
                .append( this.$errors );
        this.$navigation
@@ -8448,45 +8538,43 @@ OO.ui.CheckboxInputWidget.prototype.onEdit = function () {
  *
  * @class
  * @extends OO.ui.InputWidget
+ * @mixins OO.ui.IconedElement
+ * @mixins OO.ui.IndicatedElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {string} [placeholder] Placeholder text
- * @cfg {string} [icon] Symbolic name of icon
  * @cfg {boolean} [multiline=false] Allow multiple lines of text
  * @cfg {boolean} [autosize=false] Automatically resize to fit content
  * @cfg {boolean} [maxRows=10] Maximum number of rows to make visible when autosizing
  */
 OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
-       var widget = this;
-       config = $.extend( { maxRows: 10 }, config );
+       // Configuration initialization
+       config = config || {};
 
        // Parent constructor
        OO.ui.TextInputWidget.super.call( this, config );
 
+       // Mixin constructors
+       OO.ui.IconedElement.call( this, this.$( '<span>' ), config );
+       OO.ui.IndicatedElement.call( this, this.$( '<span>' ), config );
+
        // Properties
        this.pending = 0;
        this.multiline = !!config.multiline;
        this.autosize = !!config.autosize;
-       this.maxRows = config.maxRows;
+       this.maxRows = config.maxRows !== undefined ? config.maxRows : 10;
 
        // Events
        this.$input.on( 'keypress', OO.ui.bind( this.onKeyPress, this ) );
        this.$element.on( 'DOMNodeInsertedIntoDocument', OO.ui.bind( this.onElementAttach, this ) );
+       this.$icon.on( 'mousedown', OO.ui.bind( this.onIconMouseDown, this ) );
+       this.$indicator.on( 'mousedown', OO.ui.bind( this.onIndicatorMouseDown, this ) );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-textInputWidget' );
-       if ( config.icon ) {
-               this.$element.addClass( 'oo-ui-textInputWidget-decorated' );
-               this.$element.append(
-                       this.$( '<span>' )
-                               .addClass( 'oo-ui-textInputWidget-icon oo-ui-icon-' + config.icon )
-                               .mousedown( function () {
-                                       widget.$input[0].focus();
-                                       return false;
-                               } )
-               );
-       }
+       this.$element
+               .addClass( 'oo-ui-textInputWidget' )
+               .append( this.$icon, this.$indicator );
        if ( config.placeholder ) {
                this.$input.attr( 'placeholder', config.placeholder );
        }
@@ -8496,6 +8584,8 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.TextInputWidget, OO.ui.InputWidget );
+OO.mixinClass( OO.ui.TextInputWidget, OO.ui.IconedElement );
+OO.mixinClass( OO.ui.TextInputWidget, OO.ui.IndicatedElement );
 
 /* Events */
 
@@ -8507,8 +8597,48 @@ OO.inheritClass( OO.ui.TextInputWidget, OO.ui.InputWidget );
  * @event enter
  */
 
+/**
+ * User clicks the icon.
+ *
+ * @event icon
+ */
+
+/**
+ * User clicks the indicator.
+ *
+ * @event indicator
+ */
+
 /* Methods */
 
+/**
+ * Handle icon mouse down events.
+ *
+ * @param {jQuery.Event} e Mouse down event
+ * @fires icon
+ */
+OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
+       if ( e.which === 1 ) {
+               this.$input[0].focus();
+               this.emit( 'icon' );
+               return false;
+       }
+};
+
+/**
+ * Handle indicator mouse down events.
+ *
+ * @param {jQuery.Event} e Mouse down event
+ * @fires indicator
+ */
+OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
+       if ( e.which === 1 ) {
+               this.$input[0].focus();
+               this.emit( 'indicator' );
+               return false;
+       }
+};
+
 /**
  * Handle key press events.
  *
@@ -8669,6 +8799,128 @@ OO.ui.TextInputWidget.prototype.select = function () {
        return this;
 };
 
+/**
+ * Text input with a menu of optional values.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {Object} [menu] Configuration options to pass to menu widget
+ * @cfg {Object} [input] Configuration options to pass to input widget
+ */
+OO.ui.ComboBoxWidget = function OoUiComboBoxWidget( config ) {
+       // Configuration initialization
+       config = config || {};
+
+       // Parent constructor
+       OO.ui.ComboBoxWidget.super.call( this, config );
+
+       // Properties
+       this.input = new OO.ui.TextInputWidget( $.extend(
+               { $: this.$, indicator: 'down', disabled: this.isDisabled() },
+               config.input
+       ) );
+       this.menu = new OO.ui.MenuWidget( $.extend(
+               { $: this.$, widget: this, input: this.input, disabled: this.isDisabled() },
+               config.menu
+       ) );
+
+       // Events
+       this.input.connect( this, {
+               change: 'onInputChange',
+               indicator: 'onInputIndicator',
+               enter: 'onInputEnter'
+       } );
+       this.menu.connect( this, {
+               choose: 'onMenuChoose',
+               add: 'onMenuItemsChange',
+               remove: 'onMenuItemsChange'
+       } );
+
+       // Initialization
+       this.$element.addClass( 'oo-ui-comboBoxWidget' ).append(
+               this.input.$element,
+               this.menu.$element
+       );
+       this.onMenuItemsChange();
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.ComboBoxWidget, OO.ui.Widget );
+
+/* Methods */
+
+/**
+ * Handle input change events.
+ *
+ * @param {string} value New value
+ */
+OO.ui.ComboBoxWidget.prototype.onInputChange = function ( value ) {
+       var match = this.menu.getItemFromData( value );
+
+       this.menu.selectItem( match );
+
+       if ( !this.isDisabled() ) {
+               this.menu.toggle( true );
+       }
+};
+
+/**
+ * Handle input indicator events.
+ */
+OO.ui.ComboBoxWidget.prototype.onInputIndicator = function () {
+       if ( !this.isDisabled() ) {
+               this.menu.toggle();
+       }
+};
+
+/**
+ * Handle input enter events.
+ */
+OO.ui.ComboBoxWidget.prototype.onInputEnter = function () {
+       if ( !this.isDisabled() ) {
+               this.menu.toggle( false );
+       }
+};
+
+/**
+ * Handle menu choose events.
+ *
+ * @param {OO.ui.OptionWidget} item Chosen item
+ */
+OO.ui.ComboBoxWidget.prototype.onMenuChoose = function ( item ) {
+       if ( item ) {
+               this.input.setValue( item.getData() );
+       }
+};
+
+/**
+ * Handle menu item change events.
+ */
+OO.ui.ComboBoxWidget.prototype.onMenuItemsChange = function () {
+       this.$element.toggleClass( 'oo-ui-comboBoxWidget-empty', this.menu.isEmpty() );
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.ComboBoxWidget.prototype.setDisabled = function ( disabled ) {
+       // Parent method
+       OO.ui.ComboBoxWidget.super.prototype.setDisabled.call( this, disabled );
+
+       if ( this.input ) {
+               this.input.setDisabled( this.isDisabled() );
+       }
+       if ( this.menu ) {
+               this.menu.setDisabled( this.isDisabled() );
+       }
+
+       return this;
+};
+
 /**
  * Label widget.
  *
@@ -8708,7 +8960,7 @@ OO.mixinClass( OO.ui.LabelWidget, OO.ui.LabeledElement );
 
 /* Static Properties */
 
-OO.ui.LabelWidget.static.tagName = 'label';
+OO.ui.LabelWidget.static.tagName = 'span';
 
 /* Methods */
 
@@ -8774,8 +9026,6 @@ OO.mixinClass( OO.ui.OptionWidget, OO.ui.FlaggableElement );
 
 /* Static Properties */
 
-OO.ui.OptionWidget.static.tagName = 'li';
-
 OO.ui.OptionWidget.static.selectable = true;
 
 OO.ui.OptionWidget.static.highlightable = true;
@@ -9704,10 +9954,6 @@ OO.mixinClass( OO.ui.SelectWidget, OO.ui.GroupWidget );
  * @param {OO.ui.OptionWidget[]} items Removed items
  */
 
-/* Static Properties */
-
-OO.ui.SelectWidget.static.tagName = 'ul';
-
 /* Methods */
 
 /**
@@ -10364,7 +10610,7 @@ OO.ui.MenuWidget.prototype.addItems = function ( items, index ) {
  * @inheritdoc
  */
 OO.ui.MenuWidget.prototype.toggle = function ( visible ) {
-       visible = !!visible && !!this.items.length;
+       visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length;
 
        var i, len,
                change = visible !== this.isVisible();
@@ -10490,9 +10736,9 @@ OO.ui.TextInputMenuWidget.prototype.position = function () {
        dimensions.top += $container.height();
 
        // Compensate for frame position if in a differnt frame
-       if ( this.input.$.frame && this.input.$.context !== this.$element[0].ownerDocument ) {
+       if ( this.input.$.$iframe && this.input.$.context !== this.$element[0].ownerDocument ) {
                frameOffset = OO.ui.Element.getRelativePosition(
-                       this.input.$.frame.$element, this.$element.offsetParent()
+                       this.input.$.$iframe, this.$element.offsetParent()
                );
                dimensions.left += frameOffset.left;
                dimensions.top += frameOffset.top;
diff --git a/resources/lib/oojs-ui/oojs-ui.rtl.css b/resources/lib/oojs-ui/oojs-ui.rtl.css
deleted file mode 100644 (file)
index deca745..0000000
+++ /dev/null
@@ -1,1271 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-07-22T21:39:24Z
- */
-/* Textures */
-
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.png);
-}
-
-/* RTL Definitions */
-
-/* @noflip */
-
-.oo-ui-rtl {
-  direction: rtl;
-}
-
-/* @noflip */
-
-.oo-ui-ltr {
-  direction: ltr;
-}
-
-.oo-ui-frame {
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-frame-body {
-  padding: 0;
-  margin: 0;
-  background: none;
-}
-
-.oo-ui-frame-content:focus {
-  outline: none;
-}
-
-.oo-ui-toolbar {
-  clear: both;
-}
-
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-
-.oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
-  position: absolute;
-}
-
-.oo-ui-toolbar-actions {
-  float: left;
-}
-
-.oo-ui-toolbar-tools {
-  float: right;
-}
-
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
-  -webkit-touch-callout: default;
-}
-
-.oo-ui-toolbar-shadow {
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-  background-position: right top;
-  background-repeat: repeat-x;
-}
-
-.oo-ui-toolGroup {
-  display: inline-block;
-  margin: 0.3em;
-  vertical-align: middle;
-}
-
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-window {
-  line-height: 1em;
-}
-
-.oo-ui-window > .oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  width: auto;
-  height: auto;
-  padding: 1em;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: fixed;
-  left: 0;
-  right: 0;
-  max-width: 100%;
-  max-height: 100%;
-  margin: auto;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 0;
-  bottom: 0;
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-title {
-  display: inline;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-
-.oo-ui-processDialog-errors {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  z-index: 2;
-  display: none;
-  padding: 3em 3em 1.5em 3em;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: none;
-  margin-right: 0;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
-  display: none;
-  margin-left: -0.75em;
-}
-
-.oo-ui-buttonedElement.oo-ui-widget-disabled > .oo-ui-buttonedElement-button {
-  cursor: default;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-buttonedElement-frameless {
-  position: relative;
-  display: inline-block;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  margin-right: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  text-align: center;
-  vertical-align: top;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  line-height: 1.9em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  cursor: default;
-}
-
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 3em;
-  right: 0;
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  display: table;
-  content: " ";
-}
-
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  display: block;
-  float: right;
-  width: 35%;
-  padding-top: 0.5em;
-  margin-left: 5%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-  width: 60%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  text-align: left;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.75em 0.5em 0.5em 0.5em;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  padding: 0.5em 0;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-top: 0.25em;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-
-.oo-ui-fieldsetLayout {
-  position: relative;
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-
-.oo-ui-fieldsetLayout-labeled {
-  margin-top: -0.75em;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  padding: 0.25em 0;
-  margin-bottom: 0.5em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0.25em;
-  right: 0;
-  display: block;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-panelLayout {
-  position: relative;
-}
-
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  position: relative;
-  display: block;
-}
-
-.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  position: relative;
-  display: inline-block;
-  vertical-align: top;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-  height: 1.5em;
-  padding: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  padding-left: 0.5em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  padding: 0 0.25em 0 1em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: none;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
-  min-width: 3.5em;
-}
-
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
-  left: 0;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  right: 0.25em;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin: 0 1em;
-  font-size: 0.8em;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup-header {
-  margin: 0 0.6em;
-  font-size: 0.8em;
-  font-weight: bold;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-right: 3em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-left: 2.25em;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  position: absolute;
-  top: 2em;
-  right: -1px;
-  z-index: 4;
-  display: none;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  margin-left: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  font-size: 0.8em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-
-.oo-ui-iconWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-selectWidget {
-  padding: 0;
-  margin: 0;
-  list-style: none;
-}
-
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  margin: 0;
-  list-style: none;
-  cursor: pointer;
-  border: none;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-optionWidget .oo-ui-labeledElement-label {
-  display: block;
-  overflow: hidden;
-  line-height: 1.5em;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  position: absolute;
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  left: 0.5em;
-}
-
-.oo-ui-menuWidget {
-  position: absolute;
-}
-
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  z-index: 1;
-  overflow: hidden;
-}
-
-.oo-ui-popupWidget-anchor {
-  z-index: 1;
-  display: none;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  position: absolute;
-  display: block;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-  margin: 0.25em;
-}
-
-.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
-  float: right;
-  margin: 0.75em 1em;
-  cursor: default;
-}
-
-.oo-ui-popupWidget-body {
-  overflow: hidden;
-  clear: both;
-}
-
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin-bottom: -1px;
-  margin-right: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
-  margin-right: 0;
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
-  border-top-left-radius: 0.3em;
-  border-bottom-left-radius: 0.3em;
-}
-
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  background-color: transparent;
-}
-
-.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  position: relative;
-  height: 1.9em;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  position: static;
-  display: inline-block;
-  height: 1.9em;
-  margin-top: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  min-width: 20em;
-  margin: 0.25em 0;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  display: inline-block;
-  width: 100%;
-  height: 2.5em;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
-  left: 0;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  right: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin: 0 0.5em;
-  line-height: 2.5em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-right: 3em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-left: 2em;
-}
-
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-
-.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-  display: none;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
-  display: block;
-}
-
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-}
-
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  height: 2em;
-  padding: 0;
-  margin: 0.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  float: right;
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-  margin-right: 0;
-}
-
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-
-.oo-ui-outlineItemWidget {
-  position: relative;
-  padding: 0.75em;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  height: 4em;
-  padding: 0 1em;
-}
-
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-  margin: 0.75em 0;
-}
-
-.oo-ui-searchWidget-results {
-  position: absolute;
-  top: 4em;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-  overflow-x: hidden;
-  overflow-y: auto;
-  line-height: 0;
-}
-
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  resize: none;
-}
-
-.oo-ui-textInputWidget-icon {
-  position: absolute;
-  top: 0;
-  right: 0;
-  height: 100%;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  width: 4em;
-  height: 2em;
-  overflow: hidden;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-transform: translateZ(0);
-     -moz-transform: translateZ(0);
-      -ms-transform: translateZ(0);
-       -o-transform: translateZ(0);
-          transform: translateZ(0);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  top: 0.25em;
-  right: 0.25em;
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-     -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-      -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-       -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-          transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  -webkit-transition: opacity 200ms ease-in-out;
-     -moz-transition: opacity 200ms ease-in-out;
-      -ms-transition: opacity 200ms ease-in-out;
-       -o-transition: opacity 200ms ease-in-out;
-          transition: opacity 200ms ease-in-out;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-
-/* Icons */
-
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.png);
-}
-
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.png);
-}
-
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.png);
-}
-
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.png);
-}
-
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.png);
-}
-
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.png);
-}
-
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.png);
-}
-
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.png);
-}
-
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.png);
-}
-
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.png);
-}
-
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.png);
-}
-
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.png);
-}
-
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.png);
-}
-
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.png);
-}
-
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-rtl.png);
-}
-
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.png);
-}
-
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-ltr.png);
-}
-
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.png);
-}
-
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.png);
-}
-
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.png);
-}
-
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.png);
-}
-
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.png);
-}
-
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.png);
-}
-
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.png);
-}
-
-/* Indicators */
-
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.png);
-}
-
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/arrow-down.png);
-}
-
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(images/indicators/arrow-rtl.png);
-}
-
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(images/indicators/arrow-ltr.png);
-}
-
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.png);
-}
-
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/arrow-up.png);
-}
\ No newline at end of file
index aa5e6ac..7f919a3 100644 (file)
 /*!
- * OOjs UI v0.1.0-pre (0e50d2e336)
+ * OOjs UI v0.1.0-pre (43f379c884)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-08-06T12:56:55Z
+ * Date: 2014-08-28T21:49:12Z
  */
-/* Textures */
-
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.png);
-}
-
-/* RTL Definitions */
-
-/* @noflip */
-
-.oo-ui-rtl {
-  direction: rtl;
-}
-
-/* @noflip */
-
-.oo-ui-ltr {
-  direction: ltr;
-}
-
-.oo-ui-frame {
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-frame-content {
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-frame-content:focus {
-  outline: none;
-}
-
-.oo-ui-toolbar {
-  clear: both;
-}
-
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-
-.oo-ui-toolbar-actions {
-  float: right;
-}
-
-.oo-ui-toolbar-tools {
-  float: left;
-}
-
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
-  -webkit-touch-callout: default;
-}
-
-.oo-ui-toolbar-shadow {
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-  background-position: left top;
-  background-repeat: repeat-x;
-}
-
-.oo-ui-toolGroup {
-  display: inline-block;
-  margin: 0.3em;
-  vertical-align: middle;
-}
-
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-window {
-  line-height: 1em;
-}
-
-.oo-ui-window > .oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  width: auto;
-  height: auto;
-  padding: 1em;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: fixed;
-  right: 0;
-  left: 0;
-  max-width: 100%;
-  max-height: 100%;
-  margin: auto;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 0;
-  bottom: 0;
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-title {
-  display: inline;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-
-.oo-ui-processDialog-actions-safe {
-  left: 0;
-}
-
-.oo-ui-processDialog-actions-primary {
-  right: 0;
-}
-
-.oo-ui-processDialog-errors {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 2;
-  display: none;
-  padding: 3em 3em 1.5em 3em;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: none;
-  margin-left: 0;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
-  display: none;
-  margin-right: -0.75em;
-}
-
-.oo-ui-buttonedElement.oo-ui-widget-disabled > .oo-ui-buttonedElement-button {
-  cursor: default;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-buttonedElement-frameless {
-  position: relative;
-  display: inline-block;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  margin-left: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  text-align: center;
-  vertical-align: top;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  line-height: 1.9em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  cursor: default;
-}
-
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 3em;
-  left: 0;
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  display: table;
-  content: " ";
-}
-
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  display: block;
-  float: left;
-  width: 35%;
-  padding-top: 0.5em;
-  margin-right: 5%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: left;
-  width: 60%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  text-align: right;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.75em 0.5em 0.5em 0.5em;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  padding: 0.5em 0;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-top: 0.25em;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-
-.oo-ui-fieldsetLayout {
-  position: relative;
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  padding: 0.25em 0;
-  margin-bottom: 0.5em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
-  padding-left: 1.75em;
-  line-height: 1.33em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0.25em;
-  left: 0;
-  display: block;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-panelLayout {
-  position: relative;
-}
-
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  position: relative;
-  display: block;
-}
-
-.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  position: relative;
-  display: inline-block;
-  vertical-align: top;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-  height: 1.5em;
-  padding: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  padding-right: 0.5em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  padding: 0 1em 0 0.25em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: none;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
-  min-width: 3.5em;
-}
-
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
-  right: 0;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  left: 0.25em;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin: 0 1em;
-  font-size: 0.8em;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup-header {
-  margin: 0 0.6em;
-  font-size: 0.8em;
-  font-weight: bold;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-left: 3em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-right: 2.25em;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  position: absolute;
-  top: 2em;
-  left: -1px;
-  z-index: 4;
-  display: none;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  margin-right: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  font-size: 0.8em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-left: 1.25em;
-  font-size: 0.8em;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-
-.oo-ui-iconWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-selectWidget {
-  padding: 0;
-  margin: 0;
-  list-style: none;
-}
-
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  margin: 0;
-  list-style: none;
-  cursor: pointer;
-  border: none;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-optionWidget .oo-ui-labeledElement-label {
-  display: block;
-  overflow: hidden;
-  line-height: 1.5em;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  position: absolute;
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  right: 0.5em;
-}
-
-.oo-ui-menuWidget {
-  position: absolute;
-}
-
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  z-index: 1;
-  overflow: hidden;
-}
-
-.oo-ui-popupWidget-anchor {
-  z-index: 1;
-  display: none;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  position: absolute;
-  display: block;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: right;
-  margin: 0.25em;
-}
-
-.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
-  float: left;
-  margin: 0.75em 1em;
-  cursor: default;
-}
-
-.oo-ui-popupWidget-body {
-  overflow: hidden;
-  clear: both;
-}
-
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin-bottom: -1px;
-  margin-left: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
-  margin-left: 0;
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
-  border-top-right-radius: 0.3em;
-  border-bottom-right-radius: 0.3em;
-}
-
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  background-color: transparent;
-}
-
-.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  position: relative;
-  height: 1.9em;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  position: static;
-  display: inline-block;
-  height: 1.9em;
-  margin-top: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  min-width: 20em;
-  margin: 0.25em 0;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  display: inline-block;
-  width: 100%;
-  height: 2.5em;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
-  right: 0;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  left: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin: 0 0.5em;
-  line-height: 2.5em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-left: 3em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-right: 2em;
-}
-
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-
-.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-  display: none;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
-  display: block;
-}
-
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-}
-
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-  height: 2em;
-  padding: 0;
-  margin: 0.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  float: left;
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0 0.5em 0.5em;
-  background-position: right center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-outlineControlsWidget-items {
-  float: left;
-  margin-left: 0;
-}
-
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: left;
-}
-
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-}
-
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: right;
-}
-
-.oo-ui-outlineItemWidget {
-  position: relative;
-  padding: 0.75em;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  left: 1em;
-  cursor: auto;
-}
-
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  height: 4em;
-  padding: 0 1em;
-}
-
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-  margin: 0.75em 0;
-}
-
-.oo-ui-searchWidget-results {
-  position: absolute;
-  top: 4em;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 1em;
-  overflow-x: hidden;
-  overflow-y: auto;
-  line-height: 0;
-}
-
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  resize: none;
-}
-
-.oo-ui-textInputWidget-icon {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 100%;
-  background-position: right center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  width: 4em;
-  height: 2em;
-  overflow: hidden;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-transform: translateZ(0);
-     -moz-transform: translateZ(0);
-      -ms-transform: translateZ(0);
-       -o-transform: translateZ(0);
-          transform: translateZ(0);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  top: 0.25em;
-  left: 0.25em;
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-     -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-      -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-       -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-          transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  -webkit-transition: opacity 200ms ease-in-out;
-     -moz-transition: opacity 200ms ease-in-out;
-      -ms-transition: opacity 200ms ease-in-out;
-       -o-transition: opacity 200ms ease-in-out;
-          transition: opacity 200ms ease-in-out;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  left: 2.25em;
-  margin-left: -2px;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  left: 0.25em;
-  margin-left: 0;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-
-/* Icons */
-
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.svg);
-}
-
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.svg);
-}
-
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.svg);
-}
-
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.svg);
-}
-
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.svg);
-}
-
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.svg);
-}
-
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.svg);
-}
-
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.svg);
-}
-
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.svg);
-}
-
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.svg);
-}
-
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.svg);
-}
-
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.svg);
-}
-
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.svg);
-}
-
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-ltr.svg);
-}
-
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.svg);
-}
-
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-rtl.svg);
-}
-
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
-}
-
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.svg);
-}
-
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.svg);
-}
-
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.svg);
-}
-
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.svg);
-}
-
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
-}
-
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.svg);
-}
-
-/* Indicators */
-
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.svg);
-}
-
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/arrow-down.svg);
-}
-
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
-}
-
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
-}
-
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.svg);
-}
-
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/arrow-up.svg);
-}
\ No newline at end of file
+.oo-ui-icon-add-item{background-image:url(images/icons/add-item.svg)}.oo-ui-icon-advanced{background-image:url(images/icons/advanced.svg)}.oo-ui-icon-alert{background-image:url(images/icons/alert.svg)}.oo-ui-icon-check{background-image:url(images/icons/check.svg)}.oo-ui-icon-clear{background-image:url(images/icons/clear.svg)}.oo-ui-icon-close{background-image:url(images/icons/close.svg)}.oo-ui-icon-code{background-image:url(images/icons/code.svg)}.oo-ui-icon-collapse{background-image:url(images/icons/collapse.svg)}.oo-ui-icon-comment{background-image:url(images/icons/comment.svg)}.oo-ui-icon-expand{background-image:url(images/icons/expand.svg)}.oo-ui-icon-help{background-image:url(images/icons/help.svg)}.oo-ui-icon-info{background-image:url(images/icons/info.svg)}.oo-ui-icon-link{background-image:url(images/icons/link.svg)}.oo-ui-icon-menu{background-image:url(images/icons/menu.svg)}.oo-ui-icon-next{background-image:url(images/icons/move-ltr.svg)}.oo-ui-icon-picture{background-image:url(images/icons/picture.svg)}.oo-ui-icon-previous{background-image:url(images/icons/move-rtl.svg)}.oo-ui-icon-redo{background-image:url(images/icons/arched-arrow-ltr.svg)}.oo-ui-icon-remove{background-image:url(images/icons/remove.svg)}.oo-ui-icon-search{background-image:url(images/icons/search.svg)}.oo-ui-icon-settings{background-image:url(images/icons/settings.svg)}.oo-ui-icon-tag{background-image:url(images/icons/tag.svg)}.oo-ui-icon-undo{background-image:url(images/icons/arched-arrow-rtl.svg)}.oo-ui-icon-window{background-image:url(images/icons/window.svg)}.oo-ui-indicator-alert{background-image:url(images/indicators/alert.svg)}.oo-ui-indicator-down{background-image:url(images/indicators/arrow-down.svg)}.oo-ui-indicator-next{background-image:url(images/indicators/arrow-ltr.svg)}.oo-ui-indicator-previous{background-image:url(images/indicators/arrow-rtl.svg)}.oo-ui-indicator-required{background-image:url(images/indicators/required.svg)}.oo-ui-indicator-up{background-image:url(images/indicators/arrow-up.svg)}.oo-ui-texture-pending{background-image:url(images/textures/pending.gif)}.oo-ui-texture-transparency{background-image:url(images/textures/transparency.svg)}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/oojs-ui.svg.rtl.css b/resources/lib/oojs-ui/oojs-ui.svg.rtl.css
deleted file mode 100644 (file)
index 9a7fe08..0000000
+++ /dev/null
@@ -1,1271 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: 2014-07-22T21:39:24Z
- */
-/* Textures */
-
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.png);
-}
-
-/* RTL Definitions */
-
-/* @noflip */
-
-.oo-ui-rtl {
-  direction: rtl;
-}
-
-/* @noflip */
-
-.oo-ui-ltr {
-  direction: ltr;
-}
-
-.oo-ui-frame {
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-frame-body {
-  padding: 0;
-  margin: 0;
-  background: none;
-}
-
-.oo-ui-frame-content:focus {
-  outline: none;
-}
-
-.oo-ui-toolbar {
-  clear: both;
-}
-
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-
-.oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
-  position: absolute;
-}
-
-.oo-ui-toolbar-actions {
-  float: left;
-}
-
-.oo-ui-toolbar-tools {
-  float: right;
-}
-
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
-  -webkit-touch-callout: default;
-}
-
-.oo-ui-toolbar-shadow {
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-  background-position: right top;
-  background-repeat: repeat-x;
-}
-
-.oo-ui-toolGroup {
-  display: inline-block;
-  margin: 0.3em;
-  vertical-align: middle;
-}
-
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-window {
-  line-height: 1em;
-}
-
-.oo-ui-window > .oo-ui-window-frame {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-window > .oo-ui-window-frame > .oo-ui-frame {
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-window-head,
-.oo-ui-window-foot {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  right: 0;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog {
-  position: fixed;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  width: auto;
-  height: auto;
-  padding: 1em;
-}
-
-.oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup > .oo-ui-window-frame {
-  position: fixed;
-  left: 0;
-  right: 0;
-  max-width: 100%;
-  max-height: 100%;
-  margin: auto;
-  overflow: hidden;
-}
-
-.oo-ui-windowManager-fullscreen > .oo-ui-dialog > .oo-ui-window-frame {
-  top: 0;
-  bottom: 0;
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-messageDialog-actions-horizontal {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-}
-
-.oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-  display: table-cell;
-  width: 1%;
-}
-
-.oo-ui-messageDialog-actions-vertical {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-  display: block;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget {
-  position: relative;
-  text-align: center;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-buttonedElement-button {
-  display: block;
-}
-
-.oo-ui-messageDialog-actions .oo-ui-actionWidget .oo-ui-labeledElement-label {
-  position: relative;
-  top: auto;
-  bottom: auto;
-  display: inline;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-location {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-title {
-  display: inline;
-}
-
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget,
-.oo-ui-processDialog-actions-other .oo-ui-actionWidget {
-  white-space: nowrap;
-}
-
-.oo-ui-processDialog-actions-safe,
-.oo-ui-processDialog-actions-primary {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-}
-
-.oo-ui-processDialog-actions-safe {
-  right: 0;
-}
-
-.oo-ui-processDialog-actions-primary {
-  left: 0;
-}
-
-.oo-ui-processDialog-errors {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  z-index: 2;
-  display: none;
-  padding: 3em 3em 1.5em 3em;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: none;
-  margin-right: 0;
-}
-
-.oo-ui-buttonedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
-  display: none;
-  margin-left: -0.75em;
-}
-
-.oo-ui-buttonedElement.oo-ui-widget-disabled > .oo-ui-buttonedElement-button {
-  cursor: default;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement > .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-buttonedElement-frameless {
-  position: relative;
-  display: inline-block;
-}
-
-.oo-ui-buttonedElement-frameless > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  margin-right: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button {
-  display: inline-block;
-  text-align: center;
-  vertical-align: top;
-}
-
-.oo-ui-buttonedElement-framed > .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  line-height: 1.9em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled > .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  cursor: default;
-}
-
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 3em;
-  right: 0;
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  display: table;
-  content: " ";
-}
-
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  display: block;
-  float: right;
-  width: 35%;
-  padding-top: 0.5em;
-  margin-left: 5%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: right;
-  width: 60%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  text-align: left;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.75em 0.5em 0.5em 0.5em;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  padding: 0.5em 0;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-top: 0.25em;
-}
-
-.oo-ui-fieldLayout > .oo-ui-popupButtonWidget > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-  z-index: 1;
-}
-
-.oo-ui-fieldsetLayout {
-  position: relative;
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-
-.oo-ui-fieldsetLayout-labeled {
-  margin-top: -0.75em;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  padding: 0.25em 0;
-  margin-bottom: 0.5em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
-  padding-right: 1.75em;
-  line-height: 1.33em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0.25em;
-  right: 0;
-  display: block;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-labelWidget {
-  display: inline-block;
-  padding: 0.5em 0;
-}
-
-.oo-ui-panelLayout {
-  position: relative;
-}
-
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-panelLayout-expanded {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  position: relative;
-  display: block;
-}
-
-.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  position: relative;
-  display: inline-block;
-  vertical-align: top;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-  height: 1.5em;
-  padding: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  padding-left: 0.5em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-
-.oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em 0 0.25em 0;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  padding: 0 0.25em 0 1em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: none;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
-  min-width: 3.5em;
-}
-
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
-  left: 0;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  right: 0.25em;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin: 0 1em;
-  font-size: 0.8em;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup-header {
-  margin: 0 0.6em;
-  font-size: 0.8em;
-  font-weight: bold;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-right: 3em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-left: 2.25em;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  position: absolute;
-  top: 2em;
-  right: -1px;
-  z-index: 4;
-  display: none;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  margin-left: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  font-size: 0.8em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-right: 1.25em;
-  font-size: 0.8em;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-anchor {
-  z-index: 4;
-}
-
-.oo-ui-iconWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-selectWidget {
-  padding: 0;
-  margin: 0;
-  list-style: none;
-}
-
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  margin: 0;
-  list-style: none;
-  cursor: pointer;
-  border: none;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-optionWidget .oo-ui-labeledElement-label {
-  display: block;
-  overflow: hidden;
-  line-height: 1.5em;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon,
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  position: absolute;
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-iconedElement-icon {
-  right: 0.5em;
-}
-
-.oo-ui-decoratedOptionWidget .oo-ui-indicatedElement-indicator {
-  left: 0.5em;
-}
-
-.oo-ui-menuWidget {
-  position: absolute;
-}
-
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  z-index: 1;
-  overflow: hidden;
-}
-
-.oo-ui-popupWidget-anchor {
-  z-index: 1;
-  display: none;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-
-.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-  position: absolute;
-  display: block;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: left;
-  margin: 0.25em;
-}
-
-.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
-  float: right;
-  margin: 0.75em 1em;
-  cursor: default;
-}
-
-.oo-ui-popupWidget-body {
-  overflow: hidden;
-  clear: both;
-}
-
-.oo-ui-popupWidget-body-padded {
-  padding: 0 1em;
-}
-
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin-bottom: -1px;
-  margin-right: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
-  margin-right: 0;
-  border-bottom-right-radius: 0.3em;
-  border-top-right-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
-  border-top-left-radius: 0.3em;
-  border-bottom-left-radius: 0.3em;
-}
-
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  background-color: transparent;
-}
-
-.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  position: relative;
-  height: 1.9em;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  position: static;
-  display: inline-block;
-  height: 1.9em;
-  margin-top: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  min-width: 20em;
-  margin: 0.25em 0;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  display: inline-block;
-  width: 100%;
-  height: 2.5em;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
-  left: 0;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  right: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin: 0 0.5em;
-  line-height: 2.5em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-right: 3em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-left: 2em;
-}
-
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-
-.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-  display: none;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
-  display: block;
-}
-
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-}
-
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-
-.oo-ui-outlineControlsWidget-items,
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-  height: 2em;
-  padding: 0;
-  margin: 0.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  float: right;
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0.5em 0.5em 0;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-outlineControlsWidget-items {
-  float: right;
-  margin-right: 0;
-}
-
-.oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-  float: right;
-}
-
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-}
-
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: left;
-}
-
-.oo-ui-outlineItemWidget {
-  position: relative;
-  padding: 0.75em;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  right: 1em;
-  cursor: auto;
-}
-
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  height: 4em;
-  padding: 0 1em;
-}
-
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-  margin: 0.75em 0;
-}
-
-.oo-ui-searchWidget-results {
-  position: absolute;
-  top: 4em;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  padding: 1em;
-  overflow-x: hidden;
-  overflow-y: auto;
-  line-height: 0;
-}
-
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  resize: none;
-}
-
-.oo-ui-textInputWidget-icon {
-  position: absolute;
-  top: 0;
-  right: 0;
-  height: 100%;
-  background-position: left center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  width: 4em;
-  height: 2em;
-  overflow: hidden;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-transform: translateZ(0);
-     -moz-transform: translateZ(0);
-      -ms-transform: translateZ(0);
-       -o-transform: translateZ(0);
-          transform: translateZ(0);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  top: 0.25em;
-  right: 0.25em;
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-     -moz-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-      -ms-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-       -o-transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-          transition: right 200ms ease-in-out, margin-right 200ms ease-in-out;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-  -webkit-transition: opacity 200ms ease-in-out;
-     -moz-transition: opacity 200ms ease-in-out;
-      -ms-transition: opacity 200ms ease-in-out;
-       -o-transition: opacity 200ms ease-in-out;
-          transition: opacity 200ms ease-in-out;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  right: 2.25em;
-  margin-right: -2px;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  right: 0.25em;
-  margin-right: 0;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-
-/* Icons */
-
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.svg);
-}
-
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.svg);
-}
-
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.svg);
-}
-
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.svg);
-}
-
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.svg);
-}
-
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.svg);
-}
-
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.svg);
-}
-
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.svg);
-}
-
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.svg);
-}
-
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.svg);
-}
-
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.svg);
-}
-
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.svg);
-}
-
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.svg);
-}
-
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.svg);
-}
-
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-rtl.svg);
-}
-
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.svg);
-}
-
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-ltr.svg);
-}
-
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
-}
-
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.svg);
-}
-
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.svg);
-}
-
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.svg);
-}
-
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.svg);
-}
-
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
-}
-
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.svg);
-}
-
-/* Indicators */
-
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.svg);
-}
-
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/arrow-down.svg);
-}
-
-.oo-ui-indicator-next {
-  background-image: /* @embed */ url(images/indicators/arrow-rtl.svg);
-}
-
-.oo-ui-indicator-previous {
-  background-image: /* @embed */ url(images/indicators/arrow-ltr.svg);
-}
-
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.svg);
-}
-
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/arrow-up.svg);
-}
\ No newline at end of file
diff --git a/resources/lib/oojs-ui/themes/agora/images/icons/check.svg b/resources/lib/oojs-ui/themes/agora/images/icons/check.svg
deleted file mode 100644 (file)
index 6a91939..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->\r
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
-        width="44.075px" height="44.076px" viewBox="0 0 44.075 44.076" enable-background="new 0 0 44.075 44.076" xml:space="preserve">\r
-<polygon fill="#FFFFFF" points="41.673,12.657 15.385,37.159 15.201,36.961 10.037,31.424 2.402,23.239 8.057,17.962 15.693,26.157 \r
-       36.319,6.917 "/>\r
-</svg>\r
diff --git a/resources/lib/oojs-ui/themes/minerva/images/icons/check.svg b/resources/lib/oojs-ui/themes/minerva/images/icons/check.svg
new file mode 100644 (file)
index 0000000..6a91939
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+        width="44.075px" height="44.076px" viewBox="0 0 44.075 44.076" enable-background="new 0 0 44.075 44.076" xml:space="preserve">\r
+<polygon fill="#FFFFFF" points="41.673,12.657 15.385,37.159 15.201,36.961 10.037,31.424 2.402,23.239 8.057,17.962 15.693,26.157 \r
+       36.319,6.917 "/>\r
+</svg>\r
index 8be7665..71f2f55 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs v1.0.11
+ * OOjs v1.0.12 optimised for jQuery
  * https://www.mediawiki.org/wiki/OOjs
  *
  * Copyright 2011-2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2014-07-23T20:15:47Z
+ * Date: 2014-08-20T22:33:41Z
  */
 ( function ( global ) {
 
@@ -222,8 +222,10 @@ oo.getObjectValues = function ( obj ) {
  * the other. An asymmetrical test may also be performed, which checks only that properties in the
  * first object are present in the second object, but not the inverse.
  *
- * @param {Object} a First object to compare
- * @param {Object} b Second object to compare
+ * If either a or b is null or undefined it will be treated as an empty object.
+ *
+ * @param {Object|undefined} a First object to compare
+ * @param {Object|undefined} b Second object to compare
  * @param {boolean} [asymmetrical] Whether to check only that b contains values from a
  * @return {boolean} If the objects contain the same values as each other
  */
@@ -234,6 +236,9 @@ oo.compare = function ( a, b, asymmetrical ) {
                return true;
        }
 
+       a = a || {};
+       b = b || {};
+
        for ( k in a ) {
                if ( !hasOwn.call( a, k ) ) {
                        // Support es3-shim: Without this filter, comparing [] to {} will be false in ES3
@@ -261,41 +266,46 @@ oo.compare = function ( a, b, asymmetrical ) {
  * Copies are deep, and will either be an object or an array depending on `source`.
  *
  * @param {Object} source Object to copy
- * @param {Function} [callback] Applied to leaf values before they added to the clone
+ * @param {Function} [leafCallback] Applied to leaf values after they are cloned but before they are added to the clone
+ * @param {Function} [nodeCallback] Applied to all values before they are cloned.  If the nodeCallback returns a value other than undefined, the returned value is used instead of attempting to clone.
  * @return {Object} Copy of source object
  */
-oo.copy = function ( source, callback ) {
-       var key, sourceValue, sourceType, destination;
-
-       if ( typeof source.clone === 'function' ) {
-               return source.clone();
+oo.copy = function ( source, leafCallback, nodeCallback ) {
+       var key, destination;
+
+       if ( nodeCallback ) {
+               // Extensibility: check before attempting to clone source.
+               destination = nodeCallback( source );
+               if ( destination !== undefined ) {
+                       return destination;
+               }
        }
 
-       destination = Array.isArray( source ) ? new Array( source.length ) : {};
+       if ( Array.isArray( source ) ) {
+               // Array (fall through)
+               destination = new Array( source.length );
+       } else if ( source && typeof source.clone === 'function' ) {
+               // Duck type object with custom clone method
+               return leafCallback ? leafCallback( source.clone() ) : source.clone();
+       } else if ( source && typeof source.cloneNode === 'function' ) {
+               // DOM Node
+               return leafCallback ?
+                       leafCallback( source.cloneNode( true ) ) :
+                       source.cloneNode( true );
+       } else if ( oo.isPlainObject( source ) ) {
+               // Plain objects (fall through)
+               destination = {};
+       } else {
+               // Non-plain objects (incl. functions) and primitive values
+               return leafCallback ? leafCallback( source ) : source;
+       }
 
+       // source is an array or a plain object
        for ( key in source ) {
-               sourceValue = source[key];
-               sourceType = typeof sourceValue;
-               if ( Array.isArray( sourceValue ) ) {
-                       // Array
-                       destination[key] = oo.copy( sourceValue, callback );
-               } else if ( sourceValue && typeof sourceValue.clone === 'function' ) {
-                       // Duck type object with custom clone method
-                       destination[key] = callback ?
-                               callback( sourceValue.clone() ) : sourceValue.clone();
-               } else if ( sourceValue && typeof sourceValue.cloneNode === 'function' ) {
-                       // DOM Node
-                       destination[key] = callback ?
-                               callback( sourceValue.cloneNode( true ) ) : sourceValue.cloneNode( true );
-               } else if ( oo.isPlainObject( sourceValue ) ) {
-                       // Plain objects
-                       destination[key] = oo.copy( sourceValue, callback );
-               } else {
-                       // Non-plain objects (incl. functions) and primitive values
-                       destination[key] = callback ? callback( sourceValue ) : sourceValue;
-               }
+               destination[key] = oo.copy( source[key], leafCallback, nodeCallback );
        }
 
+       // This is an internal node, so we don't apply the leafCallback.
        return destination;
 };
 
@@ -466,29 +476,28 @@ oo.EventEmitter = function OoEventEmitter() {
        this.bindings = {};
 };
 
+oo.initClass( oo.EventEmitter );
+
 /* Methods */
 
 /**
  * Add a listener to events of a specific event.
  *
+ * The listener can be a function or the string name of a method; if the latter, then the
+ * name lookup happens at the time the listener is called.
+ *
  * @param {string} event Type of event to listen to
- * @param {Function} callback Function to call when event occurs
+ * @param {Function|string} method Function or method name to call when event occurs
  * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
- * @param {Object} [context=null] Object to use as context for callback function or call method on
- * @throws {Error} Listener argument is not a function or method name
+ * @param {Object} [context=null] Context object for function or method call
+ * @throws {Error} Listener argument is not a function or a valid method name
  * @chainable
  */
-oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
+oo.EventEmitter.prototype.on = function ( event, method, args, context ) {
        var bindings;
 
-       // Validate callback
-       if ( typeof callback !== 'function' ) {
-               throw new Error( 'Invalid callback. Function or method name expected.' );
-       }
-       // Fallback to null context
-       if ( arguments.length < 4 ) {
-               context = null;
-       }
+       this.constructor.static.validateMethod( method, context );
+
        if ( hasOwn.call( this.bindings, event ) ) {
                bindings = this.bindings[event];
        } else {
@@ -497,9 +506,9 @@ oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
        }
        // Add binding
        bindings.push( {
-               callback: callback,
+               method: method,
                args: args,
-               context: context
+               context: ( arguments.length < 4 ) ? null : context
        } );
        return this;
 };
@@ -524,42 +533,46 @@ oo.EventEmitter.prototype.once = function ( event, listener ) {
  * Remove a specific listener from a specific event.
  *
  * @param {string} event Type of event to remove listener from
- * @param {Function} [callback] Listener to remove, omit to remove all
- * @param {Object} [context=null] Object used context for callback function or method
+ * @param {Function|string} [method] Listener to remove. Must be in the same form as was passed
+ * to "on". Omit to remove all listeners.
+ * @param {Object} [context=null] Context object function or method call
  * @chainable
- * @throws {Error} Listener argument is not a function
+ * @throws {Error} Listener argument is not a function or a valid method name
  */
-oo.EventEmitter.prototype.off = function ( event, callback, context ) {
+oo.EventEmitter.prototype.off = function ( event, method, context ) {
        var i, bindings;
 
        if ( arguments.length === 1 ) {
                // Remove all bindings for event
                delete this.bindings[event];
-       } else {
-               if ( typeof callback !== 'function' ) {
-                       throw new Error( 'Invalid callback. Function expected.' );
-               }
-               if ( !( event in this.bindings ) || !this.bindings[event].length ) {
-                       // No matching bindings
-                       return this;
-               }
-               // Fallback to null context
-               if ( arguments.length < 3 ) {
-                       context = null;
-               }
-               // Remove matching handlers
-               bindings = this.bindings[event];
-               i = bindings.length;
-               while ( i-- ) {
-                       if ( bindings[i].callback === callback && bindings[i].context === context ) {
-                               bindings.splice( i, 1 );
-                       }
-               }
-               // Cleanup if now empty
-               if ( bindings.length === 0 ) {
-                       delete this.bindings[event];
+               return this;
+       }
+
+       this.constructor.static.validateMethod( method, context );
+
+       if ( !( event in this.bindings ) || !this.bindings[event].length ) {
+               // No matching bindings
+               return this;
+       }
+
+       // Default to null context
+       if ( arguments.length < 3 ) {
+               context = null;
+       }
+
+       // Remove matching handlers
+       bindings = this.bindings[event];
+       i = bindings.length;
+       while ( i-- ) {
+               if ( bindings[i].method === method && bindings[i].context === context ) {
+                       bindings.splice( i, 1 );
                }
        }
+
+       // Cleanup if now empty
+       if ( bindings.length === 0 ) {
+               delete this.bindings[event];
+       }
        return this;
 };
 
@@ -574,7 +587,7 @@ oo.EventEmitter.prototype.off = function ( event, callback, context ) {
  * @return {boolean} If event was handled by at least one listener
  */
 oo.EventEmitter.prototype.emit = function ( event ) {
-       var i, len, binding, bindings, args;
+       var i, len, binding, bindings, args, method;
 
        if ( event in this.bindings ) {
                // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
@@ -582,7 +595,13 @@ oo.EventEmitter.prototype.emit = function ( event ) {
                args = Array.prototype.slice.call( arguments, 1 );
                for ( i = 0, len = bindings.length; i < len; i++ ) {
                        binding = bindings[i];
-                       binding.callback.apply(
+                       if ( typeof binding.method === 'string' ) {
+                               // Lookup method by name (late binding)
+                               method = binding.context[ binding.method ];
+                       } else {
+                               method = binding.method;
+                       }
+                       method.apply(
                                binding.context,
                                binding.args ? binding.args.concat( args ) : args
                        );
@@ -603,7 +622,7 @@ oo.EventEmitter.prototype.emit = function ( event ) {
  * @chainable
  */
 oo.EventEmitter.prototype.connect = function ( context, methods ) {
-       var method, callback, args, event;
+       var method, args, event;
 
        for ( event in methods ) {
                method = methods[event];
@@ -614,19 +633,8 @@ oo.EventEmitter.prototype.connect = function ( context, methods ) {
                } else {
                        args = [];
                }
-               // Allow callback to be a method name
-               if ( typeof method === 'string' ) {
-                       // Validate method
-                       if ( !context[method] || typeof context[method] !== 'function' ) {
-                               throw new Error( 'Method not found: ' + method );
-                       }
-                       // Resolve to function
-                       callback = context[method];
-               } else {
-                       callback = method;
-               }
                // Add binding
-               this.on.apply( this, [ event, callback, args, context ] );
+               this.on( event, method, args, context );
        }
        return this;
 };
@@ -636,27 +644,17 @@ oo.EventEmitter.prototype.connect = function ( context, methods ) {
  *
  * @param {Object} context Object to disconnect methods from
  * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
- * event bindings keyed by event name containing either method names or functions
+ * event bindings keyed by event name. Values can be either method names or functions, but must be
+ * consistent with those used in the corresponding call to "connect".
  * @chainable
  */
 oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
-       var i, method, callback, event, bindings;
+       var i, event, bindings;
 
        if ( methods ) {
                // Remove specific connections to the context
                for ( event in methods ) {
-                       method = methods[event];
-                       if ( typeof method === 'string' ) {
-                               // Validate method
-                               if ( !context[method] || typeof context[method] !== 'function' ) {
-                                       throw new Error( 'Method not found: ' + method );
-                               }
-                               // Resolve to function
-                               callback = context[method];
-                       } else {
-                               callback = method;
-                       }
-                       this.off( event, callback, context );
+                       this.off( event, methods[event], context );
                }
        } else {
                // Remove all connections to the context
@@ -667,7 +665,7 @@ oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
                                // bindings[i] may have been removed by the previous step's
                                // this.off so check it still exists
                                if ( bindings[i] && bindings[i].context === context ) {
-                                       this.off( event, bindings[i].callback, context );
+                                       this.off( event, bindings[i].method, context );
                                }
                        }
                }
@@ -676,6 +674,42 @@ oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
        return this;
 };
 
+/**
+ * Validate a function or method call in a context
+ *
+ * For a method name, check that it names a function in the context object
+ *
+ * @static
+ * @param {Function|string} method Function or method name
+ * @param {Mixed} context The context of the call
+ * @throws {Error} A method name is given but there is no context
+ * @throws {Error} In the context object, no property exists with the given name
+ * @throws {Error} In the context object, the named property is not a function
+ */
+oo.EventEmitter.static.validateMethod = function ( method, context ) {
+       // Validate method and context
+       if ( typeof method === 'string' ) {
+               // Validate method
+               if ( context === undefined || context === null ) {
+                       throw new Error( 'Method name "' + method + '" has no context.' );
+               }
+               if ( !( method in context ) ) {
+                       // Technically the method does not need to exist yet: it could be
+                       // added before call time. But this probably signals a typo.
+                       throw new Error( 'Method not found: "' + method + '"' );
+               }
+               if ( typeof context[method] !== 'function' ) {
+                       // Technically the property could be replaced by a function before
+                       // call time. But this probably signals a typo.
+                       throw new Error( 'Property "' + method + '" is not a function' );
+               }
+       } else if ( typeof method !== 'function' ) {
+               throw new Error( 'Invalid callback. Function or method name expected.' );
+       }
+};
+
+/*global hasOwn */
+
 /**
  * @class OO.Registry
  * @mixins OO.EventEmitter
@@ -737,7 +771,9 @@ oo.Registry.prototype.register = function ( name, data ) {
  * @return {Mixed|undefined} Data associated with symbolic name
  */
 oo.Registry.prototype.lookup = function ( name ) {
-       return this.registry[name];
+       if ( hasOwn.call( this.registry, name ) ) {
+               return this.registry[name];
+       }
 };
 
 /**
@@ -802,12 +838,12 @@ oo.Factory.prototype.register = function ( constructor ) {
  * @throws {Error} Unknown object name
  */
 oo.Factory.prototype.create = function ( name ) {
-       var args, obj, constructor;
+       var args, obj,
+               constructor = this.lookup( name );
 
-       if ( !this.registry.hasOwnProperty( name ) ) {
+       if ( !constructor ) {
                throw new Error( 'No class registered by that name: ' + name );
        }
-       constructor = this.registry[name];
 
        // Convert arguments to array and shift the first argument (name) off
        args = Array.prototype.slice.call( arguments, 1 );
index 08ed5d9..3369cde 100644 (file)
@@ -225,7 +225,7 @@ $.suggestions = {
                                                                } else {
                                                                        regionWidth = $region.outerWidth();
                                                                        docWidth = $( document ).width();
-                                                                       if ( ( regionWidth / docWidth  ) > 0.85 ) {
+                                                                       if ( regionWidth > ( 0.85 * docWidth ) ) {
                                                                                // If the input size takes up more than 85% of the document horizontally
                                                                                // expand the suggestions to the writing direction's native end.
                                                                                expandFrom = 'start';
@@ -233,7 +233,7 @@ $.suggestions = {
                                                                                // Calculate the center points of the input and document
                                                                                regionCenter = $region.offset().left + regionWidth / 2;
                                                                                docCenter = docWidth / 2;
-                                                                               if ( Math.abs( regionCenter - docCenter ) / docCenter < 0.10 ) {
+                                                                               if ( Math.abs( regionCenter - docCenter ) < ( 0.10 * docCenter ) ) {
                                                                                        // If the input's center is within 10% of the document center
                                                                                        // use the writing direction's native end.
                                                                                        expandFrom = 'start';
index 0481b6a..eacb910 100644 (file)
                        title: b.speedTip,
                        id: b.imageId || undefined,
                        'class': 'mw-toolbar-editbutton'
-               } ).click( function () {
-                       toolbar.insertTags( b.tagOpen, b.tagClose, b.sampleText );
+               } ).click( function ( e ) {
+                       if ( b.onClick !== undefined ) {
+                               b.onClick( e );
+                       } else {
+                               toolbar.insertTags( b.tagOpen, b.tagClose, b.sampleText );
+                       }
+
                        return false;
                } );
 
@@ -44,6 +49,7 @@
 
        isReady = false;
        $toolbar = false;
+
        /**
         * @private
         * @property {Array}
@@ -72,6 +78,7 @@
                 * @param {string} button.tagClose
                 * @param {string} button.sampleText
                 * @param {string} [button.imageId]
+                * @param {Function} [button.onClick]
                 */
                addButton: function () {
                        if ( isReady ) {
                        }
                },
                /**
+                * Add multiple buttons to the toolbar (see also #addButton).
+                *
                 * Example usage:
+                *
                 *     addButtons( [ { .. }, { .. }, { .. } ] );
                 *     addButtons( { .. }, { .. } );
                 *
index 712cf29..1b38350 100644 (file)
@@ -6,7 +6,7 @@
  *
  * See also:
  * - ImagePage.php#makeMetadataTable (creates the HTML)
- * - skins/common/shared.css (hides tr.collapsable inside table.collapsed)
+ * - shared.css (hides tr.collapsable inside table.collapsed)
  */
 ( function ( mw, $ ) {
        $( function () {
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.redirect.js b/resources/src/mediawiki.action/mediawiki.action.view.redirect.js
new file mode 100644 (file)
index 0000000..b9aa137
--- /dev/null
@@ -0,0 +1,70 @@
+/*!
+ * JavaScript to update page URL when a redirect is viewed, ensuring that the
+ * page is scrolled to the id when it's a redirect with fragment.
+ *
+ * This is loaded in the top queue, so avoid unnecessary dependencies
+ * like mediawiki.Title or mediawiki.Uri.
+ */
+( function ( mw, $ ) {
+       var profile = $.client.profile(),
+               canonical = mw.config.get( 'wgInternalRedirectTargetUrl' ),
+               fragment = null,
+               shouldChangeFragment, index;
+
+       // Clear internal mw.config entries, so that no one tries to depend on them
+       mw.config.set( 'wgInternalRedirectTargetUrl', null );
+
+       // Deployment hack for compatibility with cached HTML, remove before 1.24 release
+       if ( !canonical ) {
+               canonical = mw.config.get( 'wgRedirectToFragment' );
+       }
+
+       index = canonical.indexOf( '#' );
+       if ( index !== -1 ) {
+               fragment = canonical.slice( index );
+       }
+
+       // Never override the fragment if the user intended to look at a different section
+       shouldChangeFragment = fragment && !location.hash;
+
+       // Replace the whole URL if possible, otherwise just change the fragment
+       if ( canonical && history.replaceState ) {
+               if ( !shouldChangeFragment ) {
+                       // If the current page view has a fragment already, don't override it
+                       canonical = canonical.replace( /#.*$/, '' );
+                       canonical += location.hash;
+               }
+
+               // This will also cause the browser to scroll to given fragment
+               history.replaceState( /*data=*/ history.state, /*title=*/ document.title, /*url=*/ canonical );
+
+               // …except for IE 10 and 11. Prod it with a location.hash change.
+               if ( shouldChangeFragment && profile.name === 'msie' && profile.versionNumber >= 10 ) {
+                       location.hash = fragment;
+               }
+
+       } else if ( shouldChangeFragment ) {
+               if ( profile.layout === 'webkit' && profile.layoutVersion < 420 ) {
+                       // Released Safari w/ WebKit 418.9.1 messes up horribly
+                       // Nightlies of 420+ are ok
+                       return;
+               }
+
+               location.hash = fragment;
+       }
+
+       if ( shouldChangeFragment && profile.layout === 'gecko' ) {
+               // Mozilla needs to wait until after load, otherwise the window doesn't
+               // scroll.  See <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
+               // There's no obvious way to detect this programmatically, so we use
+               // version-testing.  If Firefox fixes the bug, they'll jump twice, but
+               // better twice than not at all, so make the fix hit future versions as
+               // well.
+               $( function () {
+                       if ( location.hash === fragment ) {
+                               location.hash = fragment;
+                       }
+               } );
+       }
+
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.redirectToFragment.js b/resources/src/mediawiki.action/mediawiki.action.view.redirectToFragment.js
deleted file mode 100644 (file)
index cbfd7b5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * JavaScript to scroll the page to an id, when a redirect with fragment is viewed.
- */
-( function ( mw, $ ) {
-       var profile = $.client.profile(),
-               fragment = mw.config.get( 'wgRedirectToFragment' );
-
-       if ( fragment === null ) {
-               // nothing to do
-               return;
-       }
-
-       if ( profile.layout === 'webkit' && profile.layoutVersion < 420 ) {
-               // Released Safari w/ WebKit 418.9.1 messes up horribly
-               // Nightlies of 420+ are ok
-               return;
-       }
-       if ( !window.location.hash ) {
-               window.location.hash = fragment;
-
-               // Mozilla needs to wait until after load, otherwise the window doesn't
-               // scroll.  See <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
-               // There's no obvious way to detect this programmatically, so we use
-               // version-testing.  If Firefox fixes the bug, they'll jump twice, but
-               // better twice than not at all, so make the fix hit future versions as
-               // well.
-               if ( profile.layout === 'gecko' ) {
-                       $( function () {
-                               if ( window.location.hash === fragment ) {
-                                       window.location.hash = fragment;
-                               }
-                       } );
-               }
-       }
-}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.language/mediawiki.language.fallback.js b/resources/src/mediawiki.language/mediawiki.language.fallback.js
new file mode 100644 (file)
index 0000000..b1bab02
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Language-fallback-chain-related utilities for mediawiki.language.
+ */
+( function ( mw, $ ) {
+       /**
+        * @class mw.language
+        */
+
+       $.extend( mw.language, {
+
+               /**
+                * Get the language fallback chain for current UI language (not including the language itself).
+                *
+                * @return {string[]} List of language keys, e.g. `['de', 'en']`
+                */
+               getFallbackLanguages: function () {
+                       return mw.language.getData(
+                               mw.config.get( 'wgUserLanguage' ),
+                               'fallbackLanguages'
+                       ) || [];
+               },
+
+               /**
+                * Get the language fallback chain for current UI language, including the language itself.
+                *
+                * @return {string[]} List of language keys, e.g. `['pfl', de', 'en']`
+                */
+               getFallbackLanguageChain: function () {
+                       return [ mw.config.get( 'wgUserLanguage' ) ]
+                               .concat( mw.language.getFallbackLanguages() );
+               }
+
+       } );
+
+}( mediaWiki, jQuery ) );
index 5b9afcf..df95d75 100644 (file)
@@ -35,6 +35,7 @@
                 *  - `grammarForms`
                 *  - `pluralRules`
                 *  - `digitGroupingPattern`
+                *  - `fallbackLanguages`
                 *
                 * @property
                 */
index 8a2741d..17bf683 100644 (file)
@@ -40,7 +40,7 @@
 // Text colors
 @colorText: @colorGray2;
 @colorTextLight: @colorGray6;
-@colorButtonText: @colorGray8;
+@colorButtonText: @colorGray5;
 @colorDisabledText: @colorGray12;
 @colorErrorText: #CC0000;
 
diff --git a/resources/src/mediawiki.skinning/content.externallinks.css b/resources/src/mediawiki.skinning/content.externallinks.css
new file mode 100755 (executable)
index 0000000..b03ef35
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+** keep the whitespace in front of the ^=, hides rule from Konqueror
+** this is CSS3, the validator doesn't like it when validating as CSS2
+*/
+.mw-body a.external,
+.link-https {
+       /* @embed */
+       background: url(images/external-ltr.png) center right no-repeat;
+       /**
+        * Sucks to be using Android 2.3 or older.
+        * See http://css-tricks.com/svg-fallbacks/ for details.
+        */
+       /* @embed */
+       background-image: url(images/external-ltr.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href ^="mailto:"],
+.link-mailto {
+       /* @embed */
+       background: url(images/mail.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/mail.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href ^="ftp://"],
+.link-ftp {
+       /* @embed */
+       background: url(images/ftp-ltr.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/ftp-ltr.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href ^="irc://"],
+.mw-body a.external[href ^="ircs://"],
+.link-irc {
+       /* @embed */
+       background: url(images/chat-ltr.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/chat-ltr.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href $=".ogg"], .mw-body a.external[href $=".OGG"],
+.mw-body a.external[href $=".mid"], .mw-body a.external[href $=".MID"],
+.mw-body a.external[href $=".midi"], .mw-body a.external[href $=".MIDI"],
+.mw-body a.external[href $=".mp3"], .mw-body a.external[href $=".MP3"],
+.mw-body a.external[href $=".wav"], .mw-body a.external[href $=".WAV"],
+.mw-body a.external[href $=".wma"], .mw-body a.external[href $=".WMA"],
+.link-audio {
+       /* @embed */
+       background: url(images/audio-ltr.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/audio-ltr.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href $=".ogm"], .mw-body a.external[href $=".OGM"],
+.mw-body a.external[href $=".avi"], .mw-body a.external[href $=".AVI"],
+.mw-body a.external[href $=".mpeg"], .mw-body a.external[href $=".MPEG"],
+.mw-body a.external[href $=".mpg"], .mw-body a.external[href $=".MPG"],
+.link-video {
+       /* @embed */
+       background: url(images/video.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/video.svg), none;
+       padding-right: 15px;
+}
+
+.mw-body a.external[href $=".pdf"], .mw-body a.external[href $=".PDF"],
+.mw-body a.external[href *=".pdf#"], .mw-body a.external[href *=".PDF#"],
+.mw-body a.external[href *=".pdf?"], .mw-body a.external[href *=".PDF?"],
+.link-document {
+       /* @embed */
+       background: url(images/document-ltr.png) center right no-repeat;
+       /* @embed */
+       background-image: url(images/document-ltr.svg), none;
+       padding-right: 15px;
+}
+
+/* Interwiki styling */
+.mw-body a.extiw,
+.mw-body a.extiw:active {
+       color: #36b;
+}
+
+/* External link color */
+.mw-body a.external {
+       color: #36b;
+}
\ No newline at end of file
diff --git a/resources/src/mediawiki.skinning/images/audio-ltr.png b/resources/src/mediawiki.skinning/images/audio-ltr.png
new file mode 100644 (file)
index 0000000..8efc4f2
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/audio-ltr.png differ
diff --git a/resources/src/mediawiki.skinning/images/audio-ltr.svg b/resources/src/mediawiki.skinning/images/audio-ltr.svg
new file mode 100644 (file)
index 0000000..e27a5f5
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m43.47,259.4-3,3-3,0,0,4,3,0,3,3zm-1,2.5,0,5-1.5-1.5-2.5,0,0-2,2.5,0z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m43.9,262.5c0-0.6213,0.6213-1.243,1.243-0.6213,0,0,0.6213,0.6213,0.6213,2.485s-0.6213,2.485-0.6213,2.485c-0.6213,0.6213-1.243,0-1.243-0.6213,0,0,0.6213-0.6213,0.6213-1.864s-0.6213-1.864-0.6213-1.864z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m45.76,261.2c0-0.6213,0.6213-1.243,1.243-0.6213,0,0,1.243,1.243,1.243,3.728s-1.243,3.728-1.243,3.728c-0.6213,0.6213-1.243,0-1.243-0.6213,0,0,1.243-1.243,1.243-3.107s-1.243-3.107-1.243-3.107z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/audio-rtl.png b/resources/src/mediawiki.skinning/images/audio-rtl.png
new file mode 100644 (file)
index 0000000..1afdf40
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/audio-rtl.png differ
diff --git a/resources/src/mediawiki.skinning/images/audio-rtl.svg b/resources/src/mediawiki.skinning/images/audio-rtl.svg
new file mode 100644 (file)
index 0000000..683bbcd
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m42.47,259.4,3,3,3,0,0,4-3,0-3,3zm1,2.5,0,5,1.5-1.5,2.5,0,0-2-2.5,0z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m42.04,262.5c0-0.6213-0.6213-1.243-1.243-0.6213,0,0-0.6213,0.6213-0.6213,2.485s0.6213,2.485,0.6213,2.485c0.6213,0.6213,1.243,0,1.243-0.6213,0,0-0.6213-0.6213-0.6213-1.864s0.6213-1.864,0.6213-1.864z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m40.17,261.2c0-0.6213-0.6213-1.243-1.243-0.6213,0,0-1.243,1.243-1.243,3.728s1.243,3.728,1.243,3.728c0.6213,0.6213,1.243,0,1.243-0.6213,0,0-1.243-1.243-1.243-3.107s1.243-3.107,1.243-3.107z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/chat-ltr.png b/resources/src/mediawiki.skinning/images/chat-ltr.png
new file mode 100644 (file)
index 0000000..624ecec
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/chat-ltr.png differ
diff --git a/resources/src/mediawiki.skinning/images/chat-ltr.svg b/resources/src/mediawiki.skinning/images/chat-ltr.svg
new file mode 100644 (file)
index 0000000..bd5329e
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m38.09,260.4-0.6213,0.6213,0,5.757,0.6213,0.6213,1.689,0-0.6213,2.728,4.311-2.728,4.379,0,0.6213-0.6213,0-5.757-0.6213-0.6213zm0.3787,1,9,0,0,5-4,0-2.902,1.897,0.9021-1.897-3,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/chat-rtl.png b/resources/src/mediawiki.skinning/images/chat-rtl.png
new file mode 100644 (file)
index 0000000..f90fa33
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/chat-rtl.png differ
diff --git a/resources/src/mediawiki.skinning/images/chat-rtl.svg b/resources/src/mediawiki.skinning/images/chat-rtl.svg
new file mode 100644 (file)
index 0000000..b86218f
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m47.85,260.4,0.6213,0.6213,0,5.757-0.6213,0.6213-1.689,0,0.6213,2.728-4.311-2.728-4.379,0-0.6213-0.6213,0-5.757,0.6213-0.6213zm-0.3787,1-9,0,0,5,4,0,2.902,1.897-0.9021-1.897,3,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/document-ltr.png b/resources/src/mediawiki.skinning/images/document-ltr.png
new file mode 100644 (file)
index 0000000..4ea9373
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/document-ltr.png differ
diff --git a/resources/src/mediawiki.skinning/images/document-ltr.svg b/resources/src/mediawiki.skinning/images/document-ltr.svg
new file mode 100644 (file)
index 0000000..4396098
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<path style="opacity:1;fill:#15a5ea;" d="m7.5,2,0,3,2.5,0,1-1-2.5,0,0-3z"/>
+<path style="opacity:1;fill:#3366bb;" d="m3,1,0,10,8,0,0-7-2.5-3zm1,1,4,0,2,2.5,0,5.5-6,0z"/>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/document-rtl.png b/resources/src/mediawiki.skinning/images/document-rtl.png
new file mode 100644 (file)
index 0000000..c281677
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/document-rtl.png differ
diff --git a/resources/src/mediawiki.skinning/images/document-rtl.svg b/resources/src/mediawiki.skinning/images/document-rtl.svg
new file mode 100644 (file)
index 0000000..c37dadc
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<path style="opacity:1;fill:#15a5ea;" d="m5.5,2,0,3-2.5,0-1-1,2.5,0,0-3z"/>
+<path style="opacity:1;fill:#3366bb;" d="m10,1,0,10-8,0,0-7,2.5-3zm-1,1-4,0-2,2.5,0,5.5,6,0z"/>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/external link icons.svg b/resources/src/mediawiki.skinning/images/external link icons.svg
new file mode 100644 (file)
index 0000000..6a67993
--- /dev/null
@@ -0,0 +1,697 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="13"
+   height="110"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="external link icons.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.999999"
+     inkscape:cx="10.40536"
+     inkscape:cy="65.686256"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer5"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1283"
+     inkscape:window-height="711"
+     inkscape:window-x="1790"
+     inkscape:window-y="-6"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3246"
+       empspacing="4"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="-27.999997px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="base"
+     style="display:none"
+     transform="translate(-505,-869.36218)">
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646"
+       width="13"
+       height="12.999996"
+       x="505"
+       y="885.36218" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646-4"
+       width="13"
+       height="12.999998"
+       x="505"
+       y="901.36218" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646-4-6"
+       width="13"
+       height="12.999996"
+       x="505"
+       y="917.36218"
+       inkscape:export-filename="/home/rahah/elvidishu/steak/unreal/dev/skins/external link icons/mail.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646-4-6-9"
+       width="13"
+       height="12.999996"
+       x="505"
+       y="933.36218" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646-4-6-6"
+       width="13"
+       height="12.999996"
+       x="505"
+       y="950.36218" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4646-4-6-2"
+       width="13"
+       height="12.999998"
+       x="505"
+       y="966.36218" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+       id="rect4646-44"
+       width="13"
+       height="12.999996"
+       x="505"
+       y="869.36218" />
+  </g>
+  <g
+     inkscape:label="sketch 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-505,-869.36218)"
+     style="display:none"
+     sodipodi:insensitive="true">
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507,870.36218 0,5 3,0 4,4 0,-13 -4,4 z"
+       id="path3194"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517,869.36218 c 1,2 1,5 0,7"
+       id="path3196"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 520,867.36218 c 2,2 2,9 0,11"
+       id="path3198"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,989.90562 0,15.99988 13,0 0,-10.99988 -5,-5 z"
+       id="path3200"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 506.93861,918.90546 0,11.5 15,0 0,-11.5 z"
+       id="path3202"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 506.93861,918.90546 7.5,6 7.5,-6"
+       id="path3204"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,890.90546 3,0"
+       id="path3212"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,893.90546 3,0"
+       id="path3214"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,899.90546 3,0"
+       id="path3218"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,902.90546 3,0"
+       id="path3220"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517.93861,890.90546 3,0"
+       id="path3222"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,896.90546 13,0"
+       id="path3224"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517.93861,893.90546 3,0"
+       id="path3226"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517.93861,899.90546 3,0"
+       id="path3230"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 517.93861,902.90546 3,0"
+       id="path3232"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 510.93861,890.90546 0,12 7,0 0,-12 z"
+       id="path3206"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 507.93861,888.90546 0,16"
+       id="path3208"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 520.93861,888.90546 0,16"
+       id="path3210"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 515.93861,989.90562 0,5 5,0"
+       id="path3234"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 513.93861,969.40546 c -2,0 -5,0 -7,0 l 0,10.99995 11,5e-5 c 0,-2.33332 0,-4.66668 0,-7"
+       id="path3236"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
+       d="m 513.93861,976.40546 5,-4 3,3 0,-10 -10,0 3,3 -4,5"
+       id="path3242"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:none;stroke:#0066ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 506.93861,940.40546 15,0 0,10 -6,0 -6,4 1,-4 -4,0 z"
+       id="path3244"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       style="fill:none;stroke:#5b9dff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 509.93861,972.40546 c 2,1 4,3 5,5"
+       id="path4641"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="sketch 2"
+     style="display:none"
+     transform="translate(0,-6.0000106)">
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 8.4921988,1.0623917 -4.0641234,4.064123 -3.2512987,0 0,5.6897733 3.2512987,0 4.0641234,4.064124 z m -1.6256494,4.064124 0,5.6897733 -1.6256493,-1.6256493 -2.438474,-1e-6 0,-2.438474 2.438474,1e-6 z"
+       id="path4755-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 9.3050235,5.1265157 c 0,-0.812824 0.8128245,-1.625649 1.6256495,-0.812824 0,0 0.812825,0.812824 0.812825,3.251298 0,2.4384743 -0.812825,3.2512993 -0.812825,3.2512993 -0.812825,0.812825 -1.6256495,0 -1.6256495,-0.812825 0,0 0.8128245,-0.8128243 0.8128245,-2.4384743 0,-1.625649 -0.8128245,-2.438474 -0.8128245,-2.438474 z"
+       id="path4760-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 11.743498,3.5008667 c 0,-0.812825 0.812824,-1.625649 1.625649,-0.812825 0,0 1.625649,1.62565 1.625649,4.876948 0,3.2512993 -1.625649,4.8769483 -1.625649,4.8769483 -0.812825,0.812825 -1.625649,0 -1.625649,-0.812824 0,0 1.625649,-1.62565 1.625649,-4.0641243 0,-2.438474 -1.625649,-4.064123 -1.625649,-4.064123 z"
+       id="path4762-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2.8024261,23.008658 0,0.812825 10.5667209,0 0,-0.812825 z"
+       id="path4772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2.8024261,33.575379 10.5667209,0 0,-0.812825 -10.5667209,0 z"
+       id="path4774"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2.8024261,25.447132 0,0.812824 2.438474,0 0,-0.812824 z m 8.1282469,0 0,0.812824 2.438474,0 0,-0.812824 z"
+       id="path4782"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2.8024261,30.32408 0,0.812824 2.438474,0 0,-0.812824 z m 8.1282469,0 0,0.812824 2.438474,0 0,-0.812824 z"
+       id="path4778"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2.8024261,28.698431 10.5667209,0 0,-0.812825 -10.5667209,0 z"
+       id="path4780"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 5.2409001,27.479194 0,1.625649 5.6897729,0 0,-1.625649 z"
+       id="path4793"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 4.4280754,23.008658 0,10.56672 7.3154226,0 0,-10.56672 z m 1.6256494,1.625649 4.0641232,0 0,7.315422 -4.0641232,0 z"
+       id="path4768"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 1.9896014,21.383009 1.6256493,0 0,13.818019 -1.6256493,0 z"
+       id="path4764"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 12.556322,21.383009 1.62565,0 0,13.818019 -1.62565,0 z"
+       id="path4766"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 1.9896014,44.954923 6.096185,5.689773 6.0961856,-5.689773 -0.812825,-0.812825 -1.625649,0.813196 -3.6577116,3.251298 -3.657711,-3.251298 -1.6256493,-0.813196 z"
+       id="path4800-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 1.1767767,43.329273 0,11.379545 13.8180193,0 0,-11.379545 z m 1.6256494,1.625649 10.5667209,0 0,8.128247 -10.5667209,0 z"
+       id="path4795-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 1.9896014,62.024243 -0.8128247,0.812824 0,8.128247 0.8128247,0.812825 2.438474,0 -0.8128247,3.251297 5.6897728,-3.251297 4.8769485,0 0.812824,-0.812825 0,-8.128247 -0.812824,-0.812824 z m 0.8128247,1.625649 10.5667209,0 0,6.502598 -4.0641235,0 -3.5815088,2.133664 0.9144278,-2.133664 -3.8355164,0 z"
+       id="path4802-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 4.4280754,82.344856 10.5667206,0 0,10.56672 -3.251298,-3.25129 -3.2512992,2.43847 -0.8128247,-0.81282 4.0641239,-3.2513 1.625649,1.62565 0,-5.68978 -5.6897729,0 1.6256494,1.62565 -3.2512987,4.06413 -0.8128247,-0.81283 2.438474,-3.2513 z"
+       id="path4807-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 8.4921988,85.596156 -7.3154221,0 0,10.56672 10.5667213,0 0,-7.31542 -1.62565,0.81283 0,4.87694 -7.3154219,0 0,-7.31542 4.876948,0 z"
+       id="path4809-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 8.4921988,103.47831 0,4.87694 4.8769482,0 0,-1.62565 -3.251299,0 0,-3.25129 z"
+       id="path4818-67"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 1.9896014,102.66548 0,13.81802 12.1923706,0 0,-10.13799 -3.657711,-3.68003 z m 1.6256493,1.62565 6.5025973,0 2.438474,2.43847 0,8.12825 -8.9410713,0 z"
+       id="path4813-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 3.6152507,88.847456 c 0,-0.81282 0.8128247,-0.81282 0.8128247,-0.81282 2.438474,0.81282 4.0641234,2.43847 4.8769481,4.87694 0,0 0,0.81283 -0.8128247,0.81283 -1.6256494,-2.43847 -2.438474,-3.2513 -4.8769481,-4.87695 z"
+       id="path4822-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Layer"
+     style="display:none"
+     transform="translate(-10,-26.000007)">
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 19,20.999995 -4,4 -3,0 0,6 3,0 4,4 z m -1,2.5 0,9 -2.6,-2.5 -2.4,0 0,-4 2.5,0 z"
+       id="path4755"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none"
+       d="m 19.75,24.999995 c 0,-1 0.75,-1 0.75,-1 0,0 1.5,1.029412 1.5,3.5 0,2.470588 -1.5,3.5 -1.5,3.5 0,0 -0.75,0 -0.75,-1 0,0 1,-0.852941 1,-2.5 0,-1.647059 -1,-2.5 -1,-2.5 z"
+       id="path4760"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none"
+       d="m 22.25,23.999995 c 0,-1 0.75,-1 0.75,-1 0,0 2,1.205882 2,4.5 0,3.294118 -2,4.5 -2,4.5 0,0 -0.75,0 -0.75,-1 0,0 1.5,-1.029412 1.5,-3.5 0,-2.470588 -1.5,-3.5 -1.5,-3.5 z"
+       id="path4762"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 31.4375,79.875 -1,1 0,10 1,1 3,0 -1,4 7,-4 6,0 1,-1 0,-10 -1,-1 z m 1,2 13,0 0,8 -5,0 -4.40625,2.625 1.125,-2.625 -4.71875,0 z"
+       id="path4802"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 35.125,98.8125 13,0 0,13 -4,-4 -4,3 -1,-1 5,-4 2,2 0,-7 -7,0 2,2 -4,5 -1,-1 3,-4 z"
+       id="path4807"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 40.125,102.8125 -9,0 0,13 13,0 0,-9 -2,1 0,6 -9,0 0,-9 6,0 z"
+       id="path4809"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none"
+       d="m 34.125,106.8125 c 0,-1 1,-1 1,-1 3,1 5,3 6,6 0,0 0,1 -1,1 -2,-3 -3,-4 -6,-6 z"
+       id="path4822"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 12,50.499995 0,1 3,0 0,-1 -3,0 z m 9,0 0,1 3,0 0,-1 -3,0 z"
+       id="rect4841"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 12,44.499995 0,1 3,0 0,-1 -3,0 z m 9,0 0,1 3,0 0,-1 -3,0 z"
+       id="rect4843"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+       d="m 12,52.999995 0,1 3,0 0,-1 z m 9,0 0,1 3,0 0,-1 z"
+       id="rect4843-1"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+       d="m 12,41.999995 0,1 3,0 0,-1 z m 9,0 0,1 3,0 0,-1 z"
+       id="rect4843-17"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline"
+       d="m 12,47.499995 0,1 3,0 0,-1 z m 9,0 0,1 3,0 0,-1 z"
+       id="rect4841-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <rect
+       style="fill:#15a5ea;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4835"
+       width="7"
+       height="2"
+       x="4"
+       y="27"
+       transform="translate(10,19.999995)" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 2,21 1,0 0,14 -1,0 z"
+       id="path4826"
+       inkscape:connector-curvature="0"
+       transform="translate(10,19.999995)"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 13,21 1,0 0,14 -1,0 z"
+       id="path4828"
+       inkscape:connector-curvature="0"
+       transform="translate(10,19.999995)"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 4,22 0,12 8,0 0,-12 z m 1,1 6,0 0,10 -6,0 z"
+       transform="translate(10,19.999995)"
+       id="path4830"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <rect
+       style="fill:#3366bb;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4837"
+       width="8"
+       height="1"
+       x="4"
+       y="22"
+       transform="translate(10,19.999995)" />
+    <rect
+       style="fill:#3366bb;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect4839"
+       width="8"
+       height="1"
+       x="4"
+       y="33"
+       transform="translate(10,19.999995)" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none"
+       d="m 12,64.999995 6,5 6,-5 0.53033,-1.45299 -1.28033,0.45299 -5.25,4.5 -5.25,-4.5 -1.236136,-0.53033 z"
+       id="path4910"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none"
+       d="m 11,62.999995 0,10 14,0 0,-10 z m 1,1 12,0 0,8 -12,0 z"
+       id="path4905"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 19,121 0,5 5,0 -1,-1 -3,0 0,-3 z"
+       id="path4818-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 12,121 0,14 12,0 0,-10 -4,-4 z m 1,1 6.5,0 3.5,3.5 0,8.5 -10,0 z"
+       id="path4813-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Layer#1"
+     style="opacity:0.98999999"
+     transform="translate(0,-6.0000106)">
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 7,23.000004 -3,3 -3,0 0,4 3,0 3,3 z m -1,2.500001 0,5 -1.5,-1.500001 -2.5,0 0,-2 2.5,0 z"
+       id="path4755-9-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 7.4319858,26.075368 c 0,-0.621323 0.6213237,-1.242647 1.2426477,-0.621323 0,0 0.6213228,0.621323 0.6213228,2.485294 0,1.863971 -0.6213228,2.485294 -0.6213228,2.485294 -0.621324,0.621324 -1.2426477,0 -1.2426477,-0.621323 0,0 0.6213237,-0.621324 0.6213237,-1.863971 0,-1.242648 -0.6213237,-1.863971 -0.6213237,-1.863971 z"
+       id="path4760-1-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 9.2959563,24.832721 c 0,-0.621324 0.6213228,-1.242647 1.2426477,-0.621324 0,0 1.242646,1.242648 1.242646,3.727942 0,2.485294 -1.242646,3.727941 -1.242646,3.727941 -0.6213249,0.621324 -1.2426477,0 -1.2426477,-0.621323 0,0 1.2426477,-1.242647 1.2426477,-3.106618 0,-1.863971 -1.2426477,-3.106618 -1.2426477,-3.106618 z"
+       id="path4762-8-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:0.99215686;stroke:none;display:inline"
+       d="m 2.4916056,40.000004 0,0.621323 8.0979164,0 0,-0.621323 z"
+       id="path4772-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:0.99215686;stroke:none;display:inline"
+       d="m 2.4916056,48.000004 8.0979164,0 0,-0.621324 -8.0979164,0 z"
+       id="path4774-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:0.99215686;stroke:none;display:inline"
+       d="m 2.4916056,41.919118 0,0.621323 1.8687499,0 0,-0.621323 z m 6.2291665,0 0,0.621323 1.8687499,0 0,-0.621323 z"
+       id="path4782-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:0.99215686;stroke:none;display:inline"
+       d="m 2.4916056,45.589344 0,0.621322 1.8687499,0 0,-0.621322 z m 6.2291665,0 0,0.621322 1.8687499,0 0,-0.621322 z"
+       id="path4778-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:0.99215686;stroke:none;display:inline"
+       d="m 2.4916056,44.404412 8.0979164,0 0,-0.621323 -8.0979164,0 z"
+       id="path4780-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 4.3603555,43.472427 0,1.242647 4.3604166,0 0,-1.242647 z"
+       id="path4793-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 4,40.000004 0,8 5,0 0,-8 z m 1,1 3,0 0,6 -3,0 z"
+       id="path4768-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 2,39.000004 1,0 0,10 -1,0 z"
+       id="path4764-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 10,39.000004 1,0 0,10 -1,0 z"
+       id="path4766-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="M 1.8400738,58.055766 6.5000005,62.405031 11.159927,58.055766 10.538604,57.434442 9.2959563,58.056049 6.5000005,60.541343 3.7040445,58.056049 2.4613977,57.434442 z"
+       id="path4800-4-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:export-filename="/home/rahah/elvidishu/steak/unreal/dev/skins/external link icons/mail.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 1,57.000008 0,8 11,0 0,-8 z m 1,1 9,0 0,6 -9,0 z"
+       id="path4795-8-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc"
+       inkscape:export-filename="/home/rahah/elvidishu/steak/unreal/dev/skins/external link icons/mail.png"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="M 1.6213238,72.000004 1,72.621328 l 0,5.757352 0.6213238,0.621324 1.6894529,0 L 2.6894528,81.727943 7,79.000004 l 4.378677,0 L 12,78.37868 12,72.621328 11.378677,72.000004 z m 0.3786762,1 9,0 0,5 -4,0 L 4.0978858,79.896603 5,78.000004 l -3,0 z"
+       id="path4802-8-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 5,88.000004 7,0 0,7 -2,-2 -3,2 0,-1 3,-2.249999 1,1 0,-3.750001 -3.75,0 1,1 -2.25,3 -1,0 2,-3 z"
+       id="path4807-5-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 7,90.000004 -5,0 0,8 8,0 0,-5 -1,0 0,4 -6,0 0,-6 4,0 z"
+       id="path4809-7-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 7.5,105.00001 0,3 2.5,0 1,-1 -2.5,0 0,-3 z"
+       id="path4818-67-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#3366bb;fill-opacity:1;stroke:none;display:inline"
+       d="m 3,104 0,10 8,1e-5 0,-7 -2.5,-3 z m 1,1 4,1e-5 2,2.50001 0,5.49999 -6,0 z"
+       id="path4813-2-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+    <path
+       style="fill:#15a5ea;fill-opacity:1;stroke:none;display:inline"
+       d="m 4.0827206,92.533089 c 0,-0.621319 0.6213239,-0.621319 0.6213239,-0.621319 1.8639706,0.621319 3.1066175,1.863968 3.7279413,3.727935 0,0 0,0.621328 -0.6213238,0.621328 C 6.5680151,94.397065 5.9466913,93.775738 4.0827206,92.533089 z"
+       id="path4822-8-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3465ba;fill-opacity:1;stroke:none;display:inline"
+       d="m 1,8.500006 0,7.5001 1,-0.9872 0,-6.0129 2,0 2,1 4,-2e-4 0,2.0002 1,0 0,-2.5 -0.5,-0.5002 -4.5,2e-4 -2,-1 -2.5,0 z"
+       id="path3209"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccc" />
+    <path
+       style="fill:#16a4e8;fill-opacity:1;stroke:none;display:inline"
+       d="m 6,11.000106 -1,-10e-5 -2.5,0 -0.5,0.5 -1,4.5001 10,-10e-5 0,-4.4998 -0.5,-0.5 z m 0,1 4,-10e-5 0,3 -7.75,-1e-4 0.75,-3.0001 2,0 z"
+       id="path3215"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccc" />
+    <path
+       style="fill:#3465ba;fill-opacity:1;stroke:none;display:inline"
+       d="m 2,17.000006 0,1 8,0 0,-1 z"
+       id="path3247"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#3465ba;fill-opacity:1;stroke:none;display:inline"
+       d="m 5,15.500006 0,2 2,0 0,-2 c 0,-0.5 -2,-0.5 -2,0 z"
+       id="path3249"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/external-ltr.png b/resources/src/mediawiki.skinning/images/external-ltr.png
new file mode 100644 (file)
index 0000000..75750ef
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/external-ltr.png differ
diff --git a/resources/src/mediawiki.skinning/images/external-ltr.svg b/resources/src/mediawiki.skinning/images/external-ltr.svg
new file mode 100644 (file)
index 0000000..e914b7d
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m41.47,259.4,7,0,0,7-2-2-3,2,0-1,3-2.25,1,1,0-3.75-3.75,0,1,1-2.25,3-1,0,2-3z"/>
+<path style="opacity:1;fill:#3366bb;" d="m43.47,261.4-5,0,0,8,8,0,0-5-1,0,0,4-6,0,0-6,4,0z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m40.55,263.9c0-0.6213,0.6213-0.6213,0.6213-0.6213,1.864,0.6213,3.107,1.864,3.728,3.728,0,0,0,0.6213-0.6213,0.6213-1.243-1.864-1.864-2.485-3.728-3.728z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/external-rtl.png b/resources/src/mediawiki.skinning/images/external-rtl.png
new file mode 100644 (file)
index 0000000..7b56aaa
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/external-rtl.png differ
diff --git a/resources/src/mediawiki.skinning/images/external-rtl.svg b/resources/src/mediawiki.skinning/images/external-rtl.svg
new file mode 100644 (file)
index 0000000..698c616
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.467808,-258.39005)">
+<path style="opacity:1;fill:#3366bb;" d="m44.47,259.4-7,0,0,7,2-2,3,2,0-1-3-2.25-1,1,0-3.75,3.75,0-1,1,2.25,3,1,0-2-3z"/>
+<path style="opacity:1;fill:#3366bb;" d="m42.47,261.4,5,0,0,8-8,0,0-5,1,0,0,4,6,0,0-6-4,0z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m45.39,263.9c0-0.6213-0.6213-0.6213-0.6213-0.6213-1.864,0.6213-3.107,1.864-3.728,3.728l0.6213,0.6213c1.243-1.864,1.864-2.485,3.728-3.728z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/ftp-ltr.png b/resources/src/mediawiki.skinning/images/ftp-ltr.png
new file mode 100644 (file)
index 0000000..f940b06
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/ftp-ltr.png differ
diff --git a/resources/src/mediawiki.skinning/images/ftp-ltr.svg b/resources/src/mediawiki.skinning/images/ftp-ltr.svg
new file mode 100644 (file)
index 0000000..3a90c31
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-136.35715,-374.43362)">
+<path style="opacity:1;fill:#3465ba;" d="m137.4,376.9,0,7.5,1-0.9872,0-6.013,2,0,2,1,4-0.0002,0,2,1,0,0-2.5-0.5-0.5002-4.5,0.0002-2-1-2.5,0z"/>
+<path style="opacity:1;fill:#16a4e8;" d="m142.4,379.4-1-0.0001-2.5,0-0.5,0.5-1,4.5,10-0.0001,0-4.5-0.5-0.5zm0,1,4-0.0001,0,3-7.75-0.0001,0.75-3,2,0z"/>
+<path style="opacity:1;fill:#3465ba;" d="m138.4,385.4,0,1,8,0,0-1z"/>
+<path style="opacity:1;fill:#3465ba;" d="m141.4,383.9,0,2,2,0,0-2c0-0.5-2-0.5-2,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/ftp-rtl.png b/resources/src/mediawiki.skinning/images/ftp-rtl.png
new file mode 100644 (file)
index 0000000..ff76304
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/ftp-rtl.png differ
diff --git a/resources/src/mediawiki.skinning/images/ftp-rtl.svg b/resources/src/mediawiki.skinning/images/ftp-rtl.svg
new file mode 100644 (file)
index 0000000..29e4b44
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-136.35715,-374.43362)">
+<path style="opacity:1;fill:#3465ba;" d="m148.4,376.9,0,7.5-1-0.9872,0-6.013-2,0-2,1-4-0.0002,0,2-1,0,0-2.5,0.5-0.5002,4.5,0.0002,2-1,2.5,0z"/>
+<path style="opacity:1;fill:#16a4e8;" d="m143.4,379.4,1-0.0001,2.5,0,0.5,0.5,1,4.5-10-0.0001,0-4.5,0.5-0.5zm0,1-4-0.0001,0,3,7.75-0.0001-0.75-3-2,0z"/>
+<path style="opacity:1;fill:#3465ba;" d="m147.4,385.4,0,1-8,0,0-1z"/>
+<path style="opacity:1;fill:#3465ba;" d="m144.4,383.9,0,2-2,0,0-2c0-0.5,2-0.5,2,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/mail.png b/resources/src/mediawiki.skinning/images/mail.png
new file mode 100644 (file)
index 0000000..5085611
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/mail.png differ
diff --git a/resources/src/mediawiki.skinning/images/mail.svg b/resources/src/mediawiki.skinning/images/mail.svg
new file mode 100644 (file)
index 0000000..5e534fe
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.47,-257.4)">
+<path style="fill:#15a5ea;" d="m38.31,261.4,4.66,4.349,4.66-4.349-0.6213-0.6213-1.243,0.6216-2.796,2.485-2.796-2.485-1.243-0.6216z"/>
+<path style="fill:#3366bb;" d="m37.47,260.4,0,8,11,0,0-8zm1,1,9,0,0,6-9,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.skinning/images/video.png b/resources/src/mediawiki.skinning/images/video.png
new file mode 100644 (file)
index 0000000..12f6545
Binary files /dev/null and b/resources/src/mediawiki.skinning/images/video.png differ
diff --git a/resources/src/mediawiki.skinning/images/video.svg b/resources/src/mediawiki.skinning/images/video.svg
new file mode 100644 (file)
index 0000000..d52d0db
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="13" width="13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<g transform="translate(-36.4678,-258.39)">
+<path style="opacity:1;fill-opacity:1;fill:#15a5ea;" d="m38.96,260.4,0,0.6213,8.098,0,0-0.6213z"/>
+<path style="opacity:1;fill-opacity:1;fill:#15a5ea;" d="m38.96,268.4,8.098,0,0-0.6213-8.098,0z"/>
+<path style="opacity:1;fill-opacity:1;fill:#15a5ea;" d="m38.96,262.3,0,0.6213,1.869,0,0-0.6213zm6.229,0,0,0.6213,1.869,0,0-0.6213z"/>
+<path style="opacity:1;fill-opacity:1;fill:#15a5ea;" d="m38.96,266,0,0.6213,1.869,0,0-0.6213zm6.229,0,0,0.6213,1.869,0,0-0.6213z"/>
+<path style="opacity:1;fill-opacity:1;fill:#15a5ea;" d="m38.96,264.8,8.098,0,0-0.6213-8.098,0z"/>
+<path style="opacity:1;fill:#15a5ea;" d="m40.83,263.9,0,1.243,4.36,0,0-1.243z"/>
+<path style="opacity:1;fill:#3366bb;" d="m40.47,260.4,0,8,5,0,0-8zm1,1,3,0,0,6-3,0z"/>
+<path style="opacity:1;fill:#3366bb;" d="m38.47,259.4,1,0,0,10-1,0z"/>
+<path style="opacity:1;fill:#3366bb;" d="m46.47,259.4,1,0,0,10-1,0z"/>
+</g>
+</svg>
diff --git a/resources/src/mediawiki.special/mediawiki.special.import.js b/resources/src/mediawiki.special/mediawiki.special.import.js
new file mode 100644 (file)
index 0000000..a9a985e
--- /dev/null
@@ -0,0 +1,35 @@
+/*!
+ * JavaScript for Special:Import
+ */
+( function ( $ ) {
+       function updateImportSubprojectList() {
+               var $projectField = $( '#mw-import-table-interwiki #interwiki' ),
+                       $subprojectField = $projectField.parent().find( '#subproject' ),
+                       $selected = $projectField.find( ':selected' ),
+                       oldValue = $subprojectField.val(),
+                       option, options;
+
+               if ( $selected.attr( 'data-subprojects' ) ) {
+                       options = $.map( $selected.attr( 'data-subprojects' ).split( ' ' ), function ( el ) {
+                               option = document.createElement( 'option' );
+                               option.appendChild( document.createTextNode( el ) );
+                               option.setAttribute( 'value', el );
+                               if ( oldValue === el ) {
+                                       option.setAttribute( 'selected', 'selected' );
+                               }
+                               return option;
+                       } );
+                       $subprojectField.show().empty().append( options );
+               } else {
+                       $subprojectField.hide();
+               }
+       }
+
+       $( function () {
+               var $projectField = $( '#mw-import-table-interwiki #interwiki' );
+               if ( $projectField.length ) {
+                       $projectField.change( updateImportSubprojectList );
+                       updateImportSubprojectList();
+               }
+       } );
+}( jQuery ) );
index afb0905..e27e34a 100644 (file)
@@ -12,7 +12,7 @@
 
 /*
  * Hide, but keep accessible for screen-readers.
- * Like .mw-jump, #jump-to-nav from skins/common/shared.css
+ * Like .mw-jump, #jump-to-nav from shared.css
  */
 .mw-navigation-hint {
        overflow: hidden;
index 60cf46a..a4128f9 100644 (file)
                        } );
                } ).trigger( 'change' );
 
+               // When saving settings, use the proper request method (POST instead of GET).
+               $( '#mw-search-powersearch-remember' ).change( function () {
+                       this.form.method = this.checked ? 'post' : 'get';
+               } ).trigger( 'change' );
+
        } );
 
 }( mediaWiki, jQuery ) );
index 64471b2..ee6a57c 100644 (file)
@@ -6,10 +6,6 @@
        background: url(images/glyph-people-large.png) no-repeat 50%;
        margin: 0 auto;
        padding-top: 4em;
-}
-
-#mw-createaccount-cta,
-#mw-createaccount-another {
        font-size: 0.9em;
        font-weight: normal;
        text-align: center;
index ebf4779..7142d4d 100644 (file)
@@ -24,6 +24,8 @@
 //
 // Styleguide 2.1.
 .mw-ui-button {
+       // Inherit the font rather than apply user agent stylesheet (bug 70072)
+       font-family: inherit;
        font-size: 1em;
        // Container layout
        display: inline-block;
index 7c01350..9ee8ef4 100644 (file)
                word-wrap: break-word;
        }
 
-       // Colours taken from those for .errorbox in skins/common/shared.css
+       // Colours taken from those for .errorbox in shared.css
        .error {
                color: #cc0000;
                border: 1px solid #fac5c5;
index 6996ab8..acf1157 100644 (file)
                .field-placeholder-styling;
        }
 
+       // Remove red outline from inputs which have required field and invalid content.
+       // This is a Firefox only issue
+       // See https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid
+       // This should be above :focus so focus behaviour takes preference
+       &:invalid {
+               box-shadow: none;
+       }
+
        &:focus {
                box-shadow: inset .45em 0 0 #5088f7;
                border-color: @colorGrayDark;
index f56f0d9..505a9be 100644 (file)
                        }
 
                        bitDiv( 'phpversion' )
-                               .append( $( '<a href="//www.php.net/"></a>' ).text( 'PHP' ) )
+                               .append( $( this.data.phpEngine === 'HHVM'
+                                       ? '<a href="http://hhvm.com/">HHVM</a>'
+                                       : '<a href="https://php.net/">PHP</a>'
+                               ) )
                                .append( ': ' + this.data.phpVersion );
 
                        bitDiv( 'time' )
index 64ec6c3..b4d5773 100644 (file)
                 * @param string tag to create
                 * @return DOMElement
                 */
-               createSvgElement: document.createElementNS
+               createSvgElement: ( document.createElementNS && Function.prototype.bind )
                        ? document.createElementNS.bind( document, 'http://www.w3.org/2000/svg' )
                        // throw a error for browsers which does not support document.createElementNS (IE<8)
-                       : function () { throw new Error( 'document.createElementNS not supported' ); },
+                       : function () { throw new Error( 'An ES5 compatible javascript engine is required for the profile visualization.' ); },
 
                /**
                 * @param DOMElement|undefined
index 5027f7a..594800e 100644 (file)
        } );
 
        function enhance( $root ) {
+               var $matrixTooltips, $autocomplete;
 
                /**
                 * @ignore
                        } );
                }
 
-               var $matrixTooltips = $root.find( '.mw-htmlform-matrix .mw-htmlform-tooltip' );
+               $matrixTooltips = $root.find( '.mw-htmlform-matrix .mw-htmlform-tooltip' );
                if ( $matrixTooltips.length ) {
                        mw.loader.using( 'jquery.tipsy', function () {
                                $matrixTooltips.tipsy( { gravity: 's' } );
                        } );
                }
 
+               // Set up autocomplete fields
+               $autocomplete = $root.find( '.mw-htmlform-autocomplete' );
+               if ( $autocomplete.length ) {
+                       mw.loader.using( 'jquery.suggestions', function () {
+                               $autocomplete.suggestions( {
+                                       fetch: function ( val ) {
+                                               var $el = $( this );
+                                               $el.suggestions( 'suggestions',
+                                                       $.grep( $el.data( 'autocomplete' ), function ( v ) {
+                                                               return v.indexOf( val ) === 0;
+                                                       } )
+                                               );
+                                       }
+                               } );
+                       } );
+               }
+
                // Add/remove cloner clones without having to resubmit the form
                $root.find( '.mw-htmlform-cloner-delete-button' ).click( function ( ev ) {
                        ev.preventDefault();
index 3f778d8..a81730e 100644 (file)
                 * @return {string} selected pluralized form according to current language
                 */
                plural: function ( nodes ) {
-                       var forms, count;
+                       var forms, formIndex, node, count;
                        count = parseFloat( this.language.convertNumber( nodes[0], true ) );
                        forms = nodes.slice( 1 );
+                       for ( formIndex = 0; formIndex < forms.length; formIndex++ ) {
+                               node = forms[formIndex];
+                               if ( node.jquery && node.hasClass( 'mediaWiki_htmlEmitter' )  ) {
+                                       // This is a nested node, already expanded.
+                                       forms[formIndex] = forms[formIndex].html();
+                               }
+                       }
                        return forms.length ? this.language.convertPlural( count, forms ) : '';
                },
 
diff --git a/resources/src/polyfill-object-create.js b/resources/src/polyfill-object-create.js
new file mode 100644 (file)
index 0000000..607faf6
--- /dev/null
@@ -0,0 +1,62 @@
+/**
+ * Simplified version of es5-sham#Object-create that also works around a bug
+ * in the actual es5-sham: https://github.com/es-shims/es5-shim/issues/252
+ *
+ * Does not:
+ * - Support empty inheritance via `Object.create(null)`.
+ * - Support getter and setter accessors via `Object.create( .., properties )`.
+ * - Support custom property descriptor (e.g. writable, configurtable, enumerable).
+ * - Leave behind an enumerable "__proto__" all over the place.
+ *
+ * @author Timo Tijhof, 2014
+ */
+
+// ES5 15.2.3.5
+// http://es5.github.com/#x15.2.3.5
+if ( !Object.create ) {
+       ( function () {
+               var hasOwn = Object.hasOwnProperty,
+                       // https://developer.mozilla.org/en-US/docs/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug
+                       // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
+                       isEnumBug = !{ valueOf: 0 }.propertyIsEnumerable( 'valueOf' );
+
+               // Reusable constructor function for Object.create
+               function Empty() {}
+
+               function defineProperty( object, key, property ) {
+                       if ( hasOwn.call( property, 'value' ) ) {
+                               object[ key ] = property.value;
+                       } else {
+                               object[ key ] = property;
+                       }
+               }
+
+               Object.create = function create( prototype, properties ) {
+                       var object, key;
+
+                       if ( prototype !== Object( prototype ) ) {
+                               throw new TypeError( 'Called on non-object' );
+                       }
+
+                       Empty.prototype = prototype;
+                       object = new Empty();
+
+                       if ( properties !== undefined ) {
+                               if ( !isEnumBug ) {
+                                       for ( key in properties ) {
+                                               if ( hasOwn.call( properties, key ) ) {
+                                                       defineProperty( object, key, properties[ key ] );
+                                               }
+                                       }
+                               } else {
+                                       Object.keys( properties ).forEach( function ( key ) {
+                                               defineProperty( object, key, properties[ key ] );
+                                       } );
+                               }
+                       }
+
+                       return object;
+               };
+
+       }() );
+}
index e2f47f5..01efef4 100644 (file)
@@ -30,6 +30,15 @@ function isCompatible( ua ) {
                ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 7 ) ||
                // Firefox < 3
                ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[1] ) < 3 ) ||
+               // Opera < 12
+               ( ua.indexOf( 'Opera/' ) !== -1 && ( ua.indexOf( 'Version/' ) === -1 ?
+                       // "Opera/x.y"
+                       parseFloat( ua.split( 'Opera/' )[1] ) < 10 :
+                       // "Opera/9.80 ... Version/x.y"
+                       parseFloat( ua.split( 'Version/' )[1] ) < 12
+               ) ) ||
+               // "Mozilla/0.0 ... Opera x.y"
+               ( ua.indexOf( 'Opera ' ) !== -1 && parseFloat( ua.split( ' Opera ' )[1] ) < 10 ) ||
                // BlackBerry < 6
                ua.match( /BlackBerry[^\/]*\/[1-5]\./ ) ||
                // Open WebOS < 1.5
index 4157b55..622afe6 100644 (file)
@@ -129,7 +129,7 @@ div.thumb {
 
 div.thumbinner {
        border: 1px solid #ccc;
-       padding: 3px !important;
+       padding: 3px;
        background-color: #f9f9f9;
        font-size: 94%;
        text-align: center;
@@ -143,30 +143,90 @@ html .thumbimage {
 html .thumbcaption {
        border: none;
        line-height: 1.4em;
-       padding: 3px !important;
+       padding: 3px;
        font-size: 94%;
+       /* Default styles when there's no .mw-content-ltr or .mw-content-rtl, overridden below */
+       text-align: left;
 }
 
 div.magnify {
-       border: none !important;
-       background: none !important;
+       /* Default styles when there's no .mw-content-ltr or .mw-content-rtl, overridden below */
+       float: right;
        margin-left: 3px;
 }
 
-div.magnify a, div.magnify img {
+div.magnify a {
        display: block;
-       border: none !important;
-       background: none !important;
-}
-
-/* @noflip */div.tright {
-       margin: .5em 0 1.3em 1.4em;
+       /* Hide the text… */
+       text-indent: 15px;
+       white-space: nowrap;
+       overflow: hidden;
+       /* …and replace it with the image */
+       width: 15px;
+       height: 11px;
+       /* Default styles when there's no .mw-content-ltr or .mw-content-rtl, overridden below */
+       /* @embed */
+       background: url(images/magnify-clip-ltr.png) center center no-repeat;
+       /* Don't annoy people who copy-paste everything too much */
+       -moz-user-select: none;
+       -webkit-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
 }
 
-/* @noflip */div.tleft {
-       margin: .5em 1.4em 1.3em 0;
+/* Temporary WMF deployment hack, to be removed before 1.24 release */
+div.magnify img {
+       display: none;
 }
 
 img.thumbborder {
        border: 1px solid #dddddd;
 }
+
+/* Directionality-specific styles for thumbnails - their positioning depends on content language */
+
+/* @noflip */
+.mw-content-ltr .thumbcaption {
+       text-align: left;
+}
+
+/* @noflip */
+.mw-content-ltr .magnify {
+       float: right;
+       margin-left: 3px;
+       margin-right: 0;
+}
+
+/* @noflip */
+.mw-content-ltr div.magnify a {
+       /* @embed */
+       background-image: url(images/magnify-clip-ltr.png);
+}
+
+/* @noflip */
+.mw-content-rtl .thumbcaption {
+       text-align: right;
+}
+
+/* @noflip */
+.mw-content-rtl .magnify {
+       float: left;
+       margin-left: 0;
+       margin-right: 3px;
+}
+
+/* @noflip */
+.mw-content-rtl div.magnify a {
+       /* @embed */
+       background-image: url(images/magnify-clip-rtl.png);
+}
+
+/* @noflip */
+div.tright {
+       margin: .5em 0 1.3em 1.4em;
+}
+
+/* @noflip */
+div.tleft {
+       margin: .5em 1.4em 1.3em 0;
+}
diff --git a/skins/common/config-cc.css b/skins/common/config-cc.css
deleted file mode 100644 (file)
index ecd10fa..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * Copy of CC standard stylesheet, plus tweaks for iframe usage
- */
-
-body {
-       margin: 0;
-       background: #eee;
-       font-family: Verdana;
-       color: #333;
-}
-
-#main {
-       border: 1px solid #D0D0D0;
-       background: #fff;
-       margin: 0.5em;
-}
-
-/**
- * Looks like you have to specify the width of #menu
- * or IE5 Mac stretches it all the way across the div, and
- * Opera streches it half way.
- */
-
-#main #menu {
-       border-left: 1px dotted #ccc;
-       float: right;
-       width: 230px;
-       background: white;
-       margin: 0 0 10px 10px;
-}
-
-td, h3, p, h1, pre {
-       margin: 0 20px 20px 20px;
-       font-size: 11px;
-       line-height: 140%;
-}
-
-.header {
-       padding-left: 10px;
-       padding-top: 10px;
-}
-
-.nav {
-       padding-left: 10px;
-       padding-bottom: 10px;
-       font-size: 11px;
-       margin-bottom: 16px;
-}
-
-#menu p {
-       font-size: 11px;
-}
-
-.dent {
-       margin-left: 64px;
-}
diff --git a/skins/common/config.css b/skins/common/config.css
deleted file mode 100644 (file)
index 17b2039..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-.env-check {
-       font-size: 90%;
-       margin: 1em 0 1em 2.5em;
-}
-
-.config-section {
-       margin-top: 2em;
-}
-
-.config-block {
-       margin-top: 2em;
-       display: block;
-
-}
-
-.config-block-label {
-       display: block;
-       margin-bottom: .2em;
-}
-
-.config-block-label label, .config-label {
-       font-weight: bold;
-       padding-right: .5em;
-       padding-top: .2em;
-}
-
-.config-block-elements {
-       margin-left: 2em;
-}
-
-.config-block-elements li {
-       list-style: none;
-}
-
-.config-input {
-       clear: left;
-       zoom: 100%; /* IE hack */
-}
-
-.config-page-wrapper {
-       padding: 0.5em;
-}
-
-.config-page-list {
-       float: right;
-       width: 12em;
-       border: 1px solid #aaa;
-       background: #fff;
-       padding: 0.5em;
-       /* 3em left margin to leave space between the list and the page-content */
-       margin: 0.5em 0.5em 0.5em 3.5em;
-}
-
-.config-page {
-       padding: 0.5em 0.5em 0.5em 2em;
-       margin: 0.5em 0.5em 0.5em 0.5em;
-       background: #eee;
-}
-
-.config-submit {
-       clear: left;
-       text-align: center;
-       padding: 1em;
-}
-
-.config-submit input {
-       margin-left: 0.5em;
-       margin-right: 0.5em;
-}
-
-.config-page-disabled {
-       color: #aaa;
-}
-
-.config-error-box {
-       border: 2px solid #f00;
-}
-
-.config-page-current {
-       font-weight: bold;
-}
-
-.config-message {
-       display: list-item;
-       line-height: 1.5em;
-       /* @embed */
-       list-style-image: url(images/bullet.gif);
-       list-style-type: square;
-}
-
-.config-input-text {
-       width: 20em;
-       margin-right: 1em;
-}
-
-.config-input-check {
-       margin-left: 10em;
-}
-
-.config-skins-item {
-       /* Clearfix */
-       clear: left;
-       overflow: hidden;
-}
-
-.config-skins-item .config-input-check {
-       margin-left: 10em;
-       width: 20em;
-       float: left;
-}
-
-.config-skins-item .config-skins-use-as-default {
-       float: left;
-}
-
-.error {
-       color: red;
-       background-color: #fff;
-       font-weight: bold;
-       left: 1em;
-       font-size: 100%;
-}
-
-.config-settings-block {
-       list-style-type: none;
-       list-style-image: none;
-       margin: 0;
-       padding: 0;
-}
-
-.btn-install {
-       font-weight: bold;
-       font-size: 110%;
-       padding: .2em .3em;
-}
-
-.success-message {
-       font-weight: bold;
-       font-size: 110%;
-       color: green;
-}
-
-.success-box {
-       font-size: 130%;
-}
-
-.config-cc-wrapper {
-       clear: left;
-       /* If you change this height, also change it in WebInstallerOptions::submitCC() */
-       height: 54em;
-}
-
-.config-plainlink a {
-       background: none !important;
-       padding: 0 !important;
-}
-
-.config-download-link {
-       font-size: 1.8em;
-       margin-left: 2em;
-}
-
-.config-download-link a {
-       background: url(images/download-32.png) no-repeat center left;
-       padding-left: 40px; /* 32 px for the image (above), plus some breathing room */
-       height: 32px; /* provide enough vertical room for the image */
-       display: inline-block; /* allow the height property (above) to work */
-       line-height: 32px; /* center the text vertically */
-}
-
-#config-live-log {
-       overflow: hidden;
-       min-width: 20em;
-}
diff --git a/skins/common/config.js b/skins/common/config.js
deleted file mode 100644 (file)
index 2886e08..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-( function ( $ ) {
-       $( function () {
-               var $label, labelText;
-
-               function syncText() {
-                       var value = $(this).val()
-                               .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
-                               .replace( /&/, '&amp;' )
-                               .replace( /__+/g, '_' )
-                               .replace( /^_+/, '' )
-                               .replace( /_+$/, '' );
-                       value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
-                       $label.text( labelText.replace( '$1', value ) );
-               }
-
-               // Set up the help system
-               $( '.mw-help-field-data' )
-                       .hide()
-                       .closest( '.mw-help-field-container' )
-                               .find( '.mw-help-field-hint' )
-                                       .show()
-                                       .click( function () {
-                                               $(this)
-                                                       .closest( '.mw-help-field-container' )
-                                                               .find( '.mw-help-field-data' )
-                                                                       .slideToggle( 'fast' );
-                                       } );
-
-               // Show/hide code for DB-specific options
-               // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
-               $( '.dbRadio' ).each( function () {
-                       $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
-               } );
-               $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
-               $( '.dbRadio' ).click( function () {
-                       var $checked = $( '.dbRadio:checked' ),
-                               $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) );
-                       if ( $wrapper.is( ':hidden' ) ) {
-                               $( '.dbWrapper' ).hide( 'slow' );
-                               $wrapper.show( 'slow' );
-                       }
-               } );
-
-               // Scroll to the bottom of upgrade log
-               $( '#config-live-log' ).children( 'textarea' ).each( function () {
-                       this.scrollTop = this.scrollHeight;
-               } );
-
-               // Show/hide Creative Commons thingy
-               $( '.licenseRadio' ).click( function () {
-                       var $wrapper = $( '#config-cc-wrapper' );
-                       if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
-                               $wrapper.show( 'slow' );
-                       } else {
-                               $wrapper.hide( 'slow' );
-                       }
-               } );
-
-               // Show/hide random stuff (email, upload)
-               $( '.showHideRadio' ).click( function () {
-                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
-                       if ( $(this).is( ':checked' ) ) {
-                               $wrapper.show( 'slow' );
-                       } else {
-                               $wrapper.hide( 'slow' );
-                       }
-               } );
-               $( '.hideShowRadio' ).click( function () {
-                       var $wrapper = $( '#' + $(this).attr( 'rel' ) );
-                       if ( $(this).is( ':checked' ) ) {
-                               $wrapper.hide( 'slow' );
-                       } else {
-                               $wrapper.show( 'slow' );
-                       }
-               } );
-
-               // Hide "other" textboxes by default
-               // Should not be done in CSS for javascript disabled compatibility
-               $( '.enabledByOther' ).closest( '.config-block' ).hide();
-
-               // Enable/disable "other" textboxes
-               $( '.enableForOther' ).click( function () {
-                       var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
-                       // FIXME: Ugh, this is ugly
-                       if ( $(this).val() === 'other' ) {
-                               $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
-                       } else {
-                               $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
-                       }
-               } );
-
-               // Synchronize radio button label for sitename with textbox
-               $label = $( 'label[for=config__NamespaceType_site-name]' );
-               labelText = $label.text();
-               $label.text( labelText.replace( '$1', '' ) );
-               $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText );
-
-               // Show/Hide memcached servers when needed
-               $( 'input[name$="config_wgMainCacheType"]' ).change( function () {
-                       var $memc = $( '#config-memcachewrapper' );
-                       if ( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) {
-                               $memc.show( 'slow' );
-                       } else {
-                               $memc.hide( 'slow' );
-                       }
-               } );
-       } );
-}( jQuery ) );
diff --git a/skins/common/feed.css b/skins/common/feed.css
deleted file mode 100644 (file)
index dc0453d..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
-Make RSS and Atom feeds at least semi-legible to folk who accidentally
-load them in a browser...
-
-Compatibility:
-* Mozilla is fine.
-* Safari 1.2: the RSS <link> text isn't shown
-* Opera 7.5 uses the style sheet instead of its native RSS mode.
-* IE/Mac 5.2: none of the :before content works; doesn't get the charset right and displays garbage for non-ASCII.
-* IE/Win 6.0: No background color, borders, font size, font weight, or :before content.
-
-*/
-
-/* RSS: */ rss, channel, title, link, description, language, generator, lastBuildDate, item, pubDate, author, comments, creator,
-/* Atom: */ feed, id, modified, tagline, entry, issued, created, updated, summary, comment {
-       display: block;
-}
-
-rss, feed {
-       background: white;
-       color: black;
-       margin: 1em;
-       font-family: "Verdana", "Tahoma", "Arial", "Helvetica", sans-serif;
-       line-height: 1.5em;
-       font-size: 76%;
-}
-
-rss:before {
-       content: "This RSS feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
-}
-
-feed:before {
-       content: "This Atom feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser.";
-}
-
-rss:before, feed:before {
-       color: red;
-       text-align: center;
-       line-height: 2em;
-}
-
-channel > title,
-item > title,
-feed > title,
-entry > title {
-       font-weight: bold;
-       border-bottom: solid 1px #aaa;
-       margin-left: -0.5em;
-}
-
-channel > title, feed > title {
-       font-size: larger;
-}
-
-item > title, entry > title {
-       font-size: large;
-}
-
-item, entry {
-       margin-top: 1em;
-       margin-left: 2em;
-}
-
-item > description, entry > summary {
-       white-space: pre;
-       overflow: auto;
-       background: #f8f8ff;
-}
-
-pubDate:before {
-       content: "Date: ";
-}
-
-link:before {
-       content: "Link: ";
-}
-
-author:before, creator:before {
-       content: "Author: ";
-}
-
-description:before {
-       content: "Description: ";
-}
-
-id:before {
-       content: "Id: ";
-}
-
-generator:before {
-       content: "Generator: ";
-}
-
-language:before {
-       content: "Language: ";
-}
-
-lastBuildDate:before {
-       content: "Updated: ";
-}
-
-comments:before {
-       content: "Comments page: ";
-}
-
-tagline:before {
-       content: "Tagline: ";
-}
-
-issued:before {
-       content: "Issued: ";
-}
-
-created:before {
-       content: "Created: ";
-}
-
-modified:before {
-       content: "Modified: ";
-}
-
-updated:before {
-       content: "Updated: ";
-}
-
-summary:before {
-       content: "Summary: ";
-}
-
-comment:before {
-       content: "Comment: ";
-}
-
-pubDate:before, link:before, author:before, description:before,
-language:before, generator:before, lastBuildDate:before, comments:before,
-tagline:before, issued:before, created:before, modified:before,
-summary:before, comment:before, creator:before, id:before, updated:before {
-       color: #224;
-       font-weight: bold;
-}
-
-feed link:after {
-       content: attr(href);
-}
diff --git a/skins/common/images/Arr_.png b/skins/common/images/Arr_.png
deleted file mode 100644 (file)
index bc67a4b..0000000
Binary files a/skins/common/images/Arr_.png and /dev/null differ
diff --git a/skins/common/images/Arr_l.png b/skins/common/images/Arr_l.png
deleted file mode 100644 (file)
index 2246254..0000000
Binary files a/skins/common/images/Arr_l.png and /dev/null differ
diff --git a/skins/common/images/Arr_r.png b/skins/common/images/Arr_r.png
deleted file mode 100644 (file)
index 467a555..0000000
Binary files a/skins/common/images/Arr_r.png and /dev/null differ
diff --git a/skins/common/images/Zoom_sans.gif b/skins/common/images/Zoom_sans.gif
deleted file mode 100644 (file)
index 56a49de..0000000
Binary files a/skins/common/images/Zoom_sans.gif and /dev/null differ
diff --git a/skins/common/images/add.png b/skins/common/images/add.png
deleted file mode 100644 (file)
index 3497423..0000000
Binary files a/skins/common/images/add.png and /dev/null differ
diff --git a/skins/common/images/button_template.png b/skins/common/images/button_template.png
deleted file mode 100644 (file)
index 94d9d0b..0000000
Binary files a/skins/common/images/button_template.png and /dev/null differ
diff --git a/skins/common/images/closewindow.png b/skins/common/images/closewindow.png
deleted file mode 100644 (file)
index 990702e..0000000
Binary files a/skins/common/images/closewindow.png and /dev/null differ
diff --git a/skins/common/images/critical-32.png b/skins/common/images/critical-32.png
deleted file mode 100644 (file)
index 9b38e6a..0000000
Binary files a/skins/common/images/critical-32.png and /dev/null differ
diff --git a/skins/common/images/diffunderline.gif b/skins/common/images/diffunderline.gif
deleted file mode 100644 (file)
index e062c56..0000000
Binary files a/skins/common/images/diffunderline.gif and /dev/null differ
diff --git a/skins/common/images/download-32.png b/skins/common/images/download-32.png
deleted file mode 100644 (file)
index e5b8318..0000000
Binary files a/skins/common/images/download-32.png and /dev/null differ
diff --git a/skins/common/images/info-32.png b/skins/common/images/info-32.png
deleted file mode 100644 (file)
index ab09e1d..0000000
Binary files a/skins/common/images/info-32.png and /dev/null differ
diff --git a/skins/common/images/link_icon.gif b/skins/common/images/link_icon.gif
deleted file mode 100644 (file)
index 168c1a2..0000000
Binary files a/skins/common/images/link_icon.gif and /dev/null differ
diff --git a/skins/common/images/magnify-clip-ltr.png b/skins/common/images/magnify-clip-ltr.png
new file mode 100644 (file)
index 0000000..00a9cee
Binary files /dev/null and b/skins/common/images/magnify-clip-ltr.png differ
diff --git a/skins/common/images/remove.png b/skins/common/images/remove.png
deleted file mode 100644 (file)
index cd03d6d..0000000
Binary files a/skins/common/images/remove.png and /dev/null differ
diff --git a/skins/common/images/tick-32.png b/skins/common/images/tick-32.png
deleted file mode 100644 (file)
index 34cfa9c..0000000
Binary files a/skins/common/images/tick-32.png and /dev/null differ
diff --git a/skins/common/images/tooltip_icon.png b/skins/common/images/tooltip_icon.png
deleted file mode 100644 (file)
index ba5718a..0000000
Binary files a/skins/common/images/tooltip_icon.png and /dev/null differ
diff --git a/skins/common/images/warning-32.png b/skins/common/images/warning-32.png
deleted file mode 100644 (file)
index 0400734..0000000
Binary files a/skins/common/images/warning-32.png and /dev/null differ
index 250f15c..a4e7544 100644 (file)
@@ -86,7 +86,7 @@ div.thumb {
 
 div.thumbinner {
        border: 1px solid #ccc;
-       padding: 3px !important;
+       padding: 3px;
        background-color: #f9f9f9;
        font-size: 94%;
        text-align: center;
@@ -99,24 +99,38 @@ html .thumbimage {
 
 html .thumbcaption {
        border: none;
-       text-align: left;
        line-height: 1.4em;
-       padding: 3px !important;
+       padding: 3px;
        font-size: 94%;
+       text-align: left;
 }
 
 div.magnify {
        float: right;
-       border: none !important;
-       background: none !important;
        margin-left: 3px;
 }
 
-div.magnify a,
-div.magnify img {
+div.magnify a {
        display: block;
-       border: none !important;
-       background: none !important;
+       /* Hide the text… */
+       text-indent: 15px;
+       white-space: nowrap;
+       overflow: hidden;
+       /* …and replace it with the image */
+       width: 15px;
+       height: 11px;
+       /* @embed */
+       background: url(images/magnify-clip-ltr.png) center center no-repeat;
+       /* Don't annoy people who copy-paste everything too much */
+       -moz-user-select: none;
+       -webkit-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+/* Temporary WMF deployment hack, to be removed before 1.24 release */
+div.magnify img {
+       display: none;
 }
 
 /* @noflip */
@@ -473,23 +487,6 @@ table.multipageimage td {
        background-color: #eeeeff;
 }
 
-.imagelist td,
-.imagelist th {
-       white-space: nowrap;
-}
-
-.imagelist .TablePager_col_links {
-       background-color: #eeeeff;
-}
-
-.imagelist .TablePager_col_img_description {
-       white-space: normal;
-}
-
-.imagelist th.TablePager_sort {
-       background-color: #ccccff;
-}
-
 .templatesUsed {
        margin-top: 1em;
 }
index 17ec8c6..af5d82c 100644 (file)
@@ -298,21 +298,24 @@ input#wpSummary {
 }
 
 /**
- * Image captions
+ * Image captions.
+ *
+ * This is only meant to provide the most basic of styles, visual settings shouldn't be added here.
  */
+
 /* @noflip */
 .mw-content-ltr .thumbcaption {
        text-align: left;
 }
 
 /* @noflip */
-.mw-content-rtl .thumbcaption {
-       text-align: right;
+.mw-content-ltr .magnify {
+       float: right;
 }
 
 /* @noflip */
-.mw-content-ltr .magnify {
-       float: right;
+.mw-content-rtl .thumbcaption {
+       text-align: right;
 }
 
 /* @noflip */
@@ -678,23 +681,6 @@ table.collapsed tr.collapsable {
        text-decoration: none;
 }
 
-.imagelist td,
-.imagelist th {
-       white-space: nowrap;
-}
-
-.imagelist .TablePager_col_links {
-       background-color: #eeeeff;
-}
-
-.imagelist .TablePager_col_img_description {
-       white-space: normal;
-}
-
-.imagelist th.TablePager_sort {
-       background-color: #ccccff;
-}
-
 /* filetoc */
 ul#filetoc {
        text-align: center;
index 92784bf..1ea4eb5 100644 (file)
@@ -4,7 +4,7 @@ GEM
     builder (3.2.2)
     childprocess (0.5.3)
       ffi (~> 1.0, >= 1.0.11)
-    cucumber (1.3.15)
+    cucumber (1.3.16)
       builder (>= 2.1.2)
       diff-lcs (>= 1.1.3)
       gherkin (~> 2.12)
@@ -14,9 +14,9 @@ GEM
       faker (>= 1.1.2)
       yml_reader (>= 0.3)
     diff-lcs (1.2.5)
-    domain_name (0.5.19)
+    domain_name (0.5.20)
       unf (>= 0.0.5, < 1.0.0)
-    faker (1.3.0)
+    faker (1.4.3)
       i18n (~> 0.5)
     faraday (0.9.0)
       multipart-post (>= 1.2, < 3)
@@ -29,15 +29,16 @@ GEM
     headless (1.0.2)
     http-cookie (1.0.2)
       domain_name (~> 0.5)
-    i18n (0.6.9)
+    i18n (0.6.11)
     json (1.8.1)
-    mediawiki_api (0.1.3)
+    mediawiki_api (0.2.1)
       faraday (~> 0.9, >= 0.9.0)
       faraday-cookie_jar (~> 0.0, >= 0.0.6)
-    mediawiki_selenium (0.2.25)
+    mediawiki_selenium (0.3.2)
       cucumber (~> 1.3, >= 1.3.10)
       headless (~> 1.0, >= 1.0.1)
       json (~> 1.8, >= 1.8.1)
+      mediawiki_api (~> 0.2, >= 0.2.1)
       page-object (~> 1.0)
       rest-client (~> 1.6, >= 1.6.7)
       rspec-expectations (~> 2.14, >= 2.14.4)
@@ -46,17 +47,19 @@ GEM
     multi_json (1.10.1)
     multi_test (0.1.1)
     multipart-post (2.0.0)
-    page-object (1.0)
+    netrc (0.7.7)
+    page-object (1.0.2)
       page_navigation (>= 0.9)
       selenium-webdriver (>= 2.42.0)
       watir-webdriver (>= 0.6.9)
     page_navigation (0.9)
       data_magic (>= 0.14)
-    rest-client (1.6.7)
-      mime-types (>= 1.16)
-    rspec-expectations (2.99.1)
+    rest-client (1.7.2)
+      mime-types (>= 1.16, < 3.0)
+      netrc (~> 0.7)
+    rspec-expectations (2.99.2)
       diff-lcs (>= 1.1.3, < 2.0)
-    rubyzip (1.1.5)
+    rubyzip (1.1.6)
     selenium-webdriver (2.42.0)
       childprocess (>= 0.5.0)
       multi_json (~> 1.0)
index 2c44150..a9df683 100644 (file)
@@ -332,6 +332,7 @@ class ParserTest {
         * Remove last character if it is a newline
         * @group utility
         * @param string $s
+        * @return string
         */
        public static function chomp( $s ) {
                if ( substr( $s, -1 ) === "\n" ) {
@@ -416,6 +417,7 @@ class ParserTest {
        /**
         * Get an input dictionary from a set of parser test files
         * @param array $filenames
+        * @return string
         */
        function getFuzzInput( $filenames ) {
                $dict = '';
@@ -438,6 +440,7 @@ class ParserTest {
 
        /**
         * Get a memory usage breakdown
+        * @return array
         */
        function getMemoryBreakdown() {
                $memStats = array();
@@ -625,7 +628,7 @@ class ParserTest {
                                        return $this->showSkipped();
                                }
                                $out = MWTidy::tidy( $out );
-                               $out = preg_replace( '/\s+$/', '', $out);
+                               $out = preg_replace( '/\s+$/', '', $out );
                        }
 
                        if ( isset( $opts['showtitle'] ) ) {
@@ -663,6 +666,7 @@ class ParserTest {
        /**
         * Refactored in 1.22 to use ParserTestResult
         * @param ParserTestResult $testResult
+        * @return bool
         */
        function showTestResult( ParserTestResult $testResult ) {
                if ( $testResult->isSuccess() ) {
@@ -679,6 +683,7 @@ class ParserTest {
         * @param string $key Name of option val to retrieve
         * @param array $opts Options array to look in
         * @param mixed $default Default value returned if not found
+        * @return mixed
         */
        private static function getOptionValue( $key, $opts, $default ) {
                $key = strtolower( $key );
@@ -782,6 +787,7 @@ class ParserTest {
         * Ideally this should replace the global configuration entirely.
         * @param string $opts
         * @param string $config
+        * @return RequestContext
         */
        private function setupGlobals( $opts = '', $config = '' ) {
                global $IP;
@@ -929,6 +935,7 @@ class ParserTest {
        /**
         * List of temporary tables to create, without prefix.
         * Some of these probably aren't necessary.
+        * @return array
         */
        private function listTables() {
                $tables = array( 'user', 'user_properties', 'user_former_groups', 'page', 'page_restrictions',
@@ -1395,7 +1402,7 @@ class ParserTest {
        /**
         * Print a skipped message.
         *
-        * @return boolean
+        * @return bool
         */
        protected function showSkipped() {
                if ( $this->showProgress ) {
index 3a315e1..e164b12 100644 (file)
@@ -4357,7 +4357,7 @@ External links: wiki links within external link (Bug 3695)
 <p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink">wikilink</a><span> embedded in ext link</span></p>
+<p><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
 !! end
 
 !! test
@@ -4590,7 +4590,7 @@ External link containing double-single-quotes with no space separating the url f
 !! html/php+tidy
 <p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de</a> <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)">Museo Picasso</a><span>.</span></p>
+<p><a rel="mw:ExtLink" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)" title="Museo Picasso (París)">Museo Picasso</a><span>.</span></p>
 !! end
 
 !! test
@@ -5847,7 +5847,7 @@ Piped link with multiple pipe characters in link text
 <p><a href="/wiki/Main_Page" title="Main Page">|The|Main|Page|</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="Main_Page">|The|Main|Page|</a></p>
+<p><a rel="mw:WikiLink" href="Main_Page" title="Main Page">|The|Main|Page|</a></p>
 !! end
 
 !! test
@@ -5992,7 +5992,7 @@ Anchor containing a #. (bug 63430)
 <p><a href="/wiki/Main_Page#And.23Link" title="Main Page">Main Page#And#Link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main_Page#And%23Link">Main Page#And#Link</a></p>
+<p><a rel="mw:WikiLink" href="./Main_Page#And%23Link" title="Main Page">Main Page#And#Link</a></p>
 !! end
 
 !! test
@@ -6038,7 +6038,7 @@ parsoid=html2wt,html2html
 !! wikitext
 [[MemoryAlpha:AlphaTest]]
 !! html
-<p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
+<p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a>
 </p>
 !! end
 
@@ -6074,7 +6074,7 @@ Link containing % (not as a hex sequence)
 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./7%25_Solution">7% Solution</a></p>
+<p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a></p>
 !! end
 
 # note that the parsoid HTML is identical to the previous test output,
@@ -6090,7 +6090,7 @@ parsoid=wt2wt,wt2html,html2html
 <p><a href="/wiki/7%25_Solution" title="7% Solution">7% Solution</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./7%25_Solution">7% Solution</a></p>
+<p><a rel="mw:WikiLink" href="./7%25_Solution" title="7% Solution">7% Solution</a></p>
 !!end
 
 !! test
@@ -6113,7 +6113,7 @@ Example for such a section: == < ==
 <p><a href="#.3C">#&lt;</a><a href="#.3E">#&gt;</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main%20Page#%3C">#&lt;</a><a rel="mw:WikiLink" href="./Main%20Page#%3E">#></a></p>
+<p><a rel="mw:WikiLink" href="./Main%20Page#%3C" title="Main Page">#&lt;</a><a rel="mw:WikiLink" href="./Main%20Page#%3E" title="Main Page">#></a></p>
 !! end
 
 !! test
@@ -6133,7 +6133,7 @@ Link containing an equals sign
 <p><a href="/wiki/Special:BookSources/isbn%3D4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a></p>
+<p><a rel="mw:WikiLink" href="./Special:BookSources/isbn=4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a></p>
 !! end
 
 !! article
@@ -6153,7 +6153,7 @@ Link containing a tilde
 <p><a href="/wiki/Foo%7Ebar" title="Foo~bar">Foo~bar</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Foo~bar">Foo~bar</a></p>
+<p><a rel="mw:WikiLink" href="./Foo~bar" title="Foo~bar">Foo~bar</a></p>
 !! end
 
 !! test
@@ -6164,7 +6164,7 @@ Link containing double-single-quotes '' (bug 4598)
 <p><a href="/index.php?title=Lista_d%27%27e_paise_d%27%27o_munno&amp;action=edit&amp;redlink=1" class="new" title="Lista d''e paise d''o munno (page does not exist)">Lista d''e paise d''o munno</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Lista_d''e_paise_d''o_munno">Lista d''e paise d''o munno</a></p>
+<p><a rel="mw:WikiLink" href="./Lista_d''e_paise_d''o_munno" title="Lista d''e paise d''o munno">Lista d''e paise d''o munno</a></p>
 !! end
 
 !! test
@@ -6175,7 +6175,7 @@ Some [[Link|pretty ''italics'' and stuff]]!
 <p>Some <a href="/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">pretty <i>italics</i> and stuff</a>!
 </p>
 !! html/parsoid
-<p>Some <a rel="mw:WikiLink" href="Link">pretty <i>italics</i> and stuff</a>!</p>
+<p>Some <a rel="mw:WikiLink" href="Link" title="Link">pretty <i>italics</i> and stuff</a>!</p>
 !! end
 
 !! test
@@ -6205,9 +6205,9 @@ Link with double quotes in title part (literal) and alternate part (interpreted)
 </p>
 !! html/parsoid
 <meta typeof="mw:Placeholder"/>
-<p><a rel="mw:WikiLink" href="''Pentecoste''">''Pentecoste''</a></p>
-<p><a rel="mw:WikiLink" href="''Pentecoste''">Pentecoste</a></p>
-<p><a rel="mw:WikiLink" href="''Pentecoste''"><i>Pentecoste</i></a></p>
+<p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''">''Pentecoste''</a></p>
+<p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''">Pentecoste</a></p>
+<p><a rel="mw:WikiLink" href="''Pentecoste''" title="''Pentecoste''"><i>Pentecoste</i></a></p>
 !! end
 
 !! test
@@ -6308,7 +6308,7 @@ BUG 2: [[page|http://url/]] should link to page, not http://url/
 <p><a href="/wiki/Main_Page" title="Main Page">http://url/</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main_Page">http://url/</a></p>
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">http://url/</a></p>
 !! end
 
 # Parsoid does not mark self-links, by design.
@@ -6324,7 +6324,7 @@ title=[[Bug462]]
 !! html/php+tidy
 <p><strong class="selflink">Bug462</strong> <strong class="selflink">Bug462</strong></p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462">Bug462</a></p>
+<p><a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a></p>
 !! end
 
 !! test
@@ -6447,7 +6447,7 @@ Link with multiple ":" in a subpage-supporting namespace (bug 63636)
 <p><a href="/index.php?title=User:Foo/Test/63636:Bar&amp;action=edit&amp;redlink=1" class="new" title="User:Foo/Test/63636:Bar (page does not exist)">Test</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./User:Foo/Test/63636:Bar">Test</a></p>
+<p><a rel="mw:WikiLink" href="./User:Foo/Test/63636:Bar" title="User:Foo/Test/63636:Bar">Test</a></p>
 !! end
 
 !! test
@@ -6470,7 +6470,7 @@ parsoid
 !! wikitext
 {{echo|[[Foo]]}}l
 !! html
-<p><a rel="mw:WikiLink" href="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
+<p><a rel="mw:WikiLink" href="Foo" title="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
 !! end
 
 !! test
@@ -6480,7 +6480,7 @@ parsoid
 !! wikitext
 {{echo|Some [[Fool]]}}s
 !! html
-<p data-parsoid='{}'><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]"}},"i":0}},"s"]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some </span><a rel="mw:WikiLink" href="./Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
+<p data-parsoid='{}'><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]"}},"i":0}},"s"]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some </span><a rel="mw:WikiLink" href="./Fool" title="Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
 !! end
 
 !! test
@@ -6490,7 +6490,7 @@ parsoid
 !! wikitext
 {{echo|Some [[Fool]]s are '''bold and foolish'''}}
 !! html
-<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are &#39;&#39;&#39;bold and foolish&#39;&#39;&#39;"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some <a rel="mw:WikiLink" href="./Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b data-parsoid="{}">bold and foolish</b></p>
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are &#39;&#39;&#39;bold and foolish&#39;&#39;&#39;"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}'>Some <a rel="mw:WikiLink" href="./Fool" title="Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b data-parsoid="{}">bold and foolish</b></p>
 !! end
 
 !! article
@@ -6542,7 +6542,7 @@ parsoid=html2wt,html2html
 !! wikitext
 [[apple]]<nowiki/>s
 !! html
-<p><a rel="mw:WikiLink" href="Apple">apple</a>s</p>
+<p><a rel="mw:WikiLink" href="Apple" title="Apple">apple</a>s</p>
 !! end
 
 !! test
@@ -6553,7 +6553,7 @@ parsoid=html2wt,html2html
 !! wikitext
 Aðrir mótmælenda<nowiki/>[[söfnuður]]
 !! html
-<p>Aðrir mótmælenda<a rel="mw:WikiLink" href="Söfnuður">söfnuður</a></p>
+<p>Aðrir mótmælenda<a rel="mw:WikiLink" href="Söfnuður" title="Söfnuður">söfnuður</a></p>
 !! end
 
 !! test
@@ -6581,7 +6581,7 @@ parsoid
 !! wikitext
 [[Foo|{{echo|a}} b {{echo|c}}]]
 !! html
-<p><a rel="mw:WikiLink" href="Foo"><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span> b <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c"}},"i":0}}]}'>c</span></a></p>
+<p><a rel="mw:WikiLink" href="Foo" title="Foo"><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a"}},"i":0}}]}'>a</span> b <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"c"}},"i":0}}]}'>c</span></a></p>
 !! end
 
 !! test
@@ -6592,7 +6592,7 @@ Link with angle bracket after anchor
 <p><a href="/wiki/Foo#.3Cbar.3E" title="Foo">Foo#&lt;bar&gt;</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Foo#%3Cbar%3E" data-parsoid='{"stx":"simple","a":{"href":"./Foo#%3Cbar%3E"},"sa":{"href":"Foo#&lt;bar>"}}'>Foo#&lt;bar></a></p>
+<p><a rel="mw:WikiLink" href="./Foo#%3Cbar%3E" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo#%3Cbar%3E"},"sa":{"href":"Foo#&lt;bar>"}}'>Foo#&lt;bar></a></p>
 !! end
 
 ###
@@ -6657,6 +6657,8 @@ Different interwiki prefixes mapping to the same URL
 [[wikipedia:en:Foo]]
 
 [[:wikipedia:en:Foo]]
+
+[[  wikiPEdia :Foo]]
 !! html/parsoid
 <p><a rel="mw:ExtLink" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true}'>en:Foo</a></p>
 
@@ -6669,6 +6671,8 @@ Different interwiki prefixes mapping to the same URL
 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":"wikipedia:en:Foo"},"isIW":true}'>wikipedia:en:Foo</a></p>
 
 <p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/en:Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/en:Foo"},"sa":{"href":":wikipedia:en:Foo"},"isIW":true}'>wikipedia:en:Foo</a></p>
+
+<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"http://en.wikipedia.org/wiki/Foo"},"sa":{"href":"  wikiPEdia :Foo"},"isIW":true}'>  wikiPEdia :Foo</a></p>
 !! end
 
 !! test
@@ -6782,6 +6786,21 @@ Blah blah blah
 <link rel="mw:PageProp/Language" href="//zh.wikipedia.org/wiki/Chinese"/></p>
 !! end
 
+!! test
+Interlanguage link variations
+!! wikitext
+Blah blah blah
+[[   es :Spanish]]
+[[ ZH :Chinese]]
+!! html/php
+<p>Blah blah blah
+</p>
+!! html/parsoid
+<p>Blah blah blah
+<link rel="mw:PageProp/Language" href="//es.wikipedia.org/wiki/Spanish" data-parsoid='{"stx":"simple","a":{"href":"//es.wikipedia.org/wiki/Spanish"},"sa":{"href":"   es :Spanish"}}'/>
+<link rel="mw:PageProp/Language" href="//zh.wikipedia.org/wiki/Chinese" data-parsoid='{"stx":"simple","a":{"href":"//zh.wikipedia.org/wiki/Chinese"},"sa":{"href":" ZH :Chinese"}}'/>
+!! end
+
 !! test
 Interlanguage link, with prefix links
 !! options
@@ -6860,9 +6879,9 @@ parsoid
 
 [[constructor:foo]]
 !! html
-<p><a rel="mw:WikiLink" href="./Constructor" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Constructor&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor&quot;}}">constructor</a></p>
+<p><a rel="mw:WikiLink" href="./Constructor" title="Constructor" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Constructor&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor&quot;}}">constructor</a></p>
 
-<p><a rel="mw:WikiLink" href="./Foo" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Foo&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor:foo&quot;}}">constructor:foo</a></p>
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Foo&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;constructor:foo&quot;}}">constructor:foo</a></p>
 !! end
 
 !! test
@@ -6892,7 +6911,7 @@ parsoid
 !! wikitext
 [[en:Foo]]
 !! html
-<p><a rel="mw:WikiLink" href="./Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"en:Foo"}}'>Foo</a></p>
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"simple","a":{"href":"./Foo"},"sa":{"href":"en:Foo"}}'>Foo</a></p>
 !! end
 
 !! test
@@ -7021,7 +7040,7 @@ parsoid=wt2html,html2html
 !! wikitext
 #REDIRECT [[:Category:Foo]]
 !! html
-<p><a rel="mw:WikiLink" href="Category:Foo">Category:Foo</a></p>
+<p><a rel="mw:WikiLink" href="Category:Foo" title="Category:Foo">Category:Foo</a></p>
 !! end
 
 !! test
@@ -7181,7 +7200,7 @@ Handling html with a br self-closing tag
 <br title=bar />
 <br title=bar/>
 <br title=bar/ >
-!! html
+!! html/php
 <p><br title="title" />
 <br title="title" />
 <br />
@@ -7189,6 +7208,14 @@ Handling html with a br self-closing tag
 <br title="bar" />
 <br title="bar/" />
 </p>
+!! html/parsoid
+<p><br title="" />
+<br title="" />
+<br />
+<br title="bar" />
+<br title="bar" />
+<br title="bar/" />
+</p>
 !! end
 
 !! test
@@ -8550,6 +8577,14 @@ Template with invalid target containing wikilink
 <p><span typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"[[Main Page]]"},"params":{},"i":0}}]}'>{{</span><a rel="mw:WikiLink" href="./Main_Page" about="#mwt1">Main Page</a><span about="#mwt1">}}</span></p>
 !! end
 
+!! test
+Template with just whitespace in it, bug #68421
+!! wikitext
+{{echo|{{ }}}}
+!! html/parsoid
+<p><span typeof="mw:Transclusion mw:Nowiki" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{ }}"}},"i":0}}]}'>{{ }}</span></p>
+!! end
+
 !! article
 Template:test
 !! text
@@ -9526,6 +9561,17 @@ Templates: Block Tags: 2. Back-to-back template uses
 
 !!end
 
+# This is an edge case relating to paragraph wrapping.
+!!test
+Templates: Correctly encapsulate templates producing </p> tag without a corresponding <p> tag
+!! wikitext
+{{echo|a
+b</p>}}
+!! html/parsoid
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\nb&lt;/p>"}},"i":0}}]}'>a
+b</p><p></p>
+!!end
+
 !!test
 Templates: Links: 1. Simple example
 !! wikitext
@@ -10853,12 +10899,12 @@ thumbsize=220
 [[Link2]]
 ]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Caption <a href="/index.php?title=Link1&amp;action=edit&amp;redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&amp;action=edit&amp;redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Caption <a href="/index.php?title=Link1&amp;action=edit&amp;redlink=1" class="new" title="Link1 (page does not exist)">Link1</a> [[]] <a href="/index.php?title=Link2&amp;action=edit&amp;redlink=1" class="new" title="Link2 (page does not exist)">Link2</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption [[Link1]]\n[[]]\n[[Link2]]\n"}],"dsr":[0,59,2,2]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"dsr":[2,null,null,null]}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption data-parsoid='{"dsr":[null,57,null,null]}'>Caption <a rel="mw:WikiLink" href="./Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"},"dsr":[32,41,2,2]}'>Link1</a>
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption [[Link1]]\n[[]]\n[[Link2]]\n"}],"dsr":[0,59,2,2]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"dsr":[2,null,null,null]}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption data-parsoid='{"dsr":[null,57,null,null]}'>Caption <a rel="mw:WikiLink" href="./Link1" title="Link1" data-parsoid='{"stx":"simple","a":{"href":"./Link1"},"sa":{"href":"Link1"},"dsr":[32,41,2,2]}'>Link1</a>
 [[]]
-<a rel="mw:WikiLink" href="./Link2" data-parsoid='{"stx":"simple","a":{"href":"./Link2"},"sa":{"href":"Link2"},"dsr":[47,56,2,2]}'>Link2</a>
+<a rel="mw:WikiLink" href="./Link2" title="Link2" data-parsoid='{"stx":"simple","a":{"href":"./Link2"},"sa":{"href":"Link2"},"dsr":[47,56,2,2]}'>Link2</a>
 </figcaption></figure>
 !! end
 
@@ -10889,7 +10935,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb|{{echo|137px}}|This is a caption]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["width",{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;137px&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[24,38,null,null]}\">137px&lt;/span>"}]]}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
@@ -10900,7 +10946,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|{{echo|thumb}}|{{echo|137px}}|This is a caption]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:139px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/137px-Foobar.jpg" width="137" height="16" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/206px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/274px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption</div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb mw:ExpandedAttrs" data-mw='{"attribs":[["thumbnail",{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;thumb&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[18,32,null,null]}\">thumb&lt;/span>"}],["width",{"html":"&lt;span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;137px&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]],&amp;quot;dsr&amp;quot;:[33,47,null,null]}\">137px&lt;/span>"}]]}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="16" width="137"/></a><figcaption>This is a caption</figcaption></figure>
@@ -10943,7 +10989,7 @@ thumbsize=220
 <p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
 </p>
 123<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>456
-123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>456
+123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
 
 !! html/php+tidy
 <p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456</p>
@@ -10953,7 +10999,7 @@ thumbsize=220
 <div class="thumb tright">
 <div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
 <div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
 </div>
 </div>
 </div>
@@ -10995,7 +11041,7 @@ thumbsize=220
 
 [[File:Foobar.jpg|middle|text-top|caption]]
 !! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" style="vertical-align: middle" /></a>
 </p>
 !! html/parsoid
@@ -11156,7 +11202,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb|link=http://example.com/|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="http://example.com/"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>Title</figcaption></figure>
@@ -11169,7 +11215,7 @@ thumbsize=220
 !! wikitext
 [[File:Foobar.jpg|thumb=Thumb.png|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Foobar.jpg"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
@@ -11183,7 +11229,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
@@ -11197,7 +11243,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb=Thumb.png|link=http://example.com|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="http://example.com"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="http://example.com"><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
@@ -11211,7 +11257,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb=Thumb.png|link=|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" />  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><img alt="" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" />  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></span><figcaption>Title</figcaption></figure>
@@ -11225,7 +11271,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb=Thumb.png|link=Main_Page|alt=alttext|Title]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Title</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/Main_Page" title="Main Page"><img alt="alttext" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Title</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-mw='{"thumb":"Thumb.png"}'><a href="Main_Page"><img alt="alttext" resource="./File:Foobar.jpg" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></a><figcaption>Title</figcaption></figure>
@@ -11241,7 +11287,7 @@ parsoid=wt2html,wt2wt,html2html
 <div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a>  <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page">Main Page</a></figcaption></figure>
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page" title="Main Page">Main Page</a></figcaption></figure>
 !! end
 
 !! test
@@ -11254,7 +11300,7 @@ parsoid=wt2html,wt2wt,html2html
 <div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a>  <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img alt="Altitude" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page">Main Page</a></figcaption></figure>
+<figure class="mw-default-size mw-halign-left" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img alt="Altitude" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a><figcaption>This is a test image <a rel="mw:WikiLink" href="Main_Page" title="Main Page">Main Page</a></figcaption></figure>
 !! end
 
 !! test
@@ -11326,9 +11372,9 @@ parsoid=wt2html,wt2wt,html2html
 [[File:Foobar.jpg|thumb|frameless|caption]]
 [[File:Foobar.jpg|thumb|frame|caption]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
@@ -11386,7 +11432,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb|50px]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:52px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" width="50" height="6" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/75px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/100px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="6" width="50"/></a></figure>
@@ -11401,8 +11447,8 @@ parsoid=wt2html,wt2wt,html2html
 
 [[File:Foobar.svg|thumb|2000px]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure>
@@ -11501,7 +11547,7 @@ thumbsize=220
 !! wikitext
 [[File:Foobar.jpg|thumb|http://example.com]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
@@ -11515,7 +11561,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.jpg|thumb|http://example.com|alt=Alteration]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
@@ -11527,7 +11573,7 @@ SVG thumbnails with no language set
 !! wikitext
 [[File:Foobar.svg|thumb|caption]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
@@ -11540,7 +11586,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.svg|thumb|caption|lang=de]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" lang="de" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
@@ -11553,7 +11599,7 @@ parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[File:Foobar.svg|thumb|caption|lang=invalid.language.code]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>lang=invalid.language.code</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>lang=invalid.language.code</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/f/ff/Foobar.svg" height="165" width="220"/></a><figcaption>lang=invalid.language.code</figcaption></figure>
@@ -11564,7 +11610,7 @@ BUG 1887: A ISBN with a thumbnail
 !! wikitext
 [[File:Foobar.jpg|thumb|ISBN 1235467890]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption><a href="Special:BookSources/1235467890" rel="mw:ExtLink">ISBN 1235467890</a></figcaption></figure>
@@ -11575,7 +11621,7 @@ BUG 1887: A RFC with a thumbnail
 !! wikitext
 [[File:Foobar.jpg|thumb|This is RFC 12354]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>This is <a href="//tools.ietf.org/html/rfc12354" rel="mw:ExtLink">RFC 12354</a></figcaption></figure>
@@ -11586,7 +11632,7 @@ BUG 1887: A mailto link with a thumbnail
 !! wikitext
 [[File:Foobar.jpg|thumb|Please mailto:nobody@example.com]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
@@ -11669,7 +11715,7 @@ parsoid=wt2html,wt2wt,html2html
 <p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a href="/wiki/Main_Page" title="Main Page">this</a> is just an ordinary link.
 </p>
 !! html/parsoid
-<p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a rel="mw:WikiLink" href="Main_Page">this</a> is just an ordinary link.</p>
+<p>[[Image:Foobar.jpg|thumb|This is a broken caption. But <a rel="mw:WikiLink" href="Main_Page" title="Main Page">this</a> is just an ordinary link.</p>
 !! end
 
 !! test
@@ -11677,7 +11723,7 @@ Image caption containing another image
 !! wikitext
 [[File:Foobar.jpg|thumb|This is a caption with another [[File:Thumb.png|image]] inside it!]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" /></a> inside it!</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is a caption with another <a href="/wiki/File:Thumb.png" class="image" title="image"><img alt="image" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" /></a> inside it!</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>This is a caption with another <span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"image"}'><a href="File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" height="135" width="135"/></a></span> inside it!</figcaption></figure>
@@ -11701,7 +11747,7 @@ Image: caption containing leading space
 !! wikitext
 [[File:Foobar.jpg|thumb| bar]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>bar</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>bar</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption> bar</figcaption></figure>
@@ -11720,7 +11766,7 @@ parsoid=wt2html,wt2wt,html2html
 |}
 and some more text.]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is an example image thumbnail caption with a table <table> <tr> <th> Foo </th> <th> Bar </th></tr> <tr> <td> Foo1 </td> <td> Bar1 </td></tr></table> and some more text.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is an example image thumbnail caption with a table <table> <tr> <th> Foo </th> <th> Bar </th></tr> <tr> <td> Foo1 </td> <td> Bar1 </td></tr></table> and some more text.</div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="23" width="200"/></a><figcaption>This is an example image thumbnail caption with a table
@@ -11737,7 +11783,7 @@ Bug 3090: External links other than http: in image captions
 !! wikitext
 [[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
 
 !! html/parsoid
 <figure typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
@@ -11779,7 +11825,7 @@ language=es
 !! wikitext
 [[Archivo:Foobar.jpg|miniatura|izquierda|enlace=foo|caption]]
 !! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/Foo" title="Foo"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/Archivo:Foobar.jpg" class="internal" title="Aumentar"></a></div>caption</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="./Foo"><img resource="./Archivo:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
@@ -11812,9 +11858,9 @@ parsoid=wt2html,wt2wt,html2html
 
 [[File:Foobar.jpg|bogus1|thumb|bogus2|left|bogus3|caption]]
 !! html/php
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
-<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
-<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure><figure class="mw-default-size mw-halign-left" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>caption</figcaption></figure>
@@ -12131,8 +12177,8 @@ subpage title=[[Subpage test/1/2/3/4]]
 
 [[../../subpage]]
 !! html
-<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage/">subpage</a></p>
-<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
+<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage/" title="Subpage test/1/2/subpage/">subpage</a></p>
+<p><a rel="mw:WikiLink" href="Subpage_test/1/2/subpage" title="Subpage test/1/2/subpage">Subpage_test/1/2/subpage</a></p>
 !! end
 
 !! test
@@ -12401,8 +12447,8 @@ parsoid
 [[:Category:Foo|Bar]]
 !! html
 <p>
-<a rel="mw:WikiLink" href="Category:Foo">Category:Foo</a>
-<a rel="mw:WikiLink" href="Category:Foo">Bar</a>
+<a rel="mw:WikiLink" href="Category:Foo" title="Category:Foo">Category:Foo</a>
+<a rel="mw:WikiLink" href="Category:Foo" title="Category:Foo">Bar</a>
 </p>
 !! end
 
@@ -12427,8 +12473,8 @@ parsoid
 [[:File:Foo.png|Bar]]
 !! html
 <p>
-<a rel="mw:WikiLink" href="File:Foo.png">File:Foo.png</a>
-<a rel="mw:WikiLink" href="File:Foo.png">Bar</a>
+<a rel="mw:WikiLink" href="File:Foo.png" title="File:Foo.png">File:Foo.png</a>
+<a rel="mw:WikiLink" href="File:Foo.png" title="File:Foo.png">Bar</a>
 </p>
 !! end
 
@@ -13074,6 +13120,31 @@ parsoid
 
 !! end
 
+!! test
+div with multiple empty attribute values
+!! options
+parsoid
+!! wikitext
+<div id= title=>HTML rocks</div>
+!! html
+<div id="" title="">HTML rocks</div>
+
+!! end
+
+!! test
+table with multiple empty attribute values
+!! options
+parsoid
+!! wikitext
+{| title= id=
+| hi
+|}
+!! html
+<table title="" id="">
+<tbody><tr><td> hi</td></tr>
+</tbody></table>
+!! end
+
 # The PHP parser escapes the opening brace to &#123; for some reason, so
 # disabled this test for it.
 !! test
@@ -13456,7 +13527,7 @@ Bug 2095: link with three closing brackets
 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>]
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main_Page">Main Page</a>]</p>
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a>]</p>
 !! end
 
 !! test
@@ -13467,7 +13538,7 @@ Bug 2095: link with pipe and three closing brackets
 <p><a href="/wiki/Main_Page" title="Main Page">link</a>]
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main_Page">link</a>]</p>
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">link</a>]</p>
 !! end
 
 !! test
@@ -13478,7 +13549,7 @@ Bug 2095: link with pipe and three closing brackets, version 2
 <p><a href="/wiki/Main_Page" title="Main Page">[http://example.com/]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:WikiLink" href="./Main_Page">[http://example.com/]</a></p>
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">[http://example.com/]</a></p>
 !! end
 
 
@@ -13513,13 +13584,16 @@ Bug 2304: HTML attribute safety (safe template; regression bug 2309)
 
 !! end
 
+# Parsoid has enough context to handle this case
 !! test
 Bug 2304: HTML attribute safety (dangerous template; 2309)
 !! wikitext
 <div title="{{dangerous attribute}}"></div>
-!! html
+!! html/php
 <div title=""></div>
 
+!! html/parsoid
+<div title='" onmouseover="alert(document.cookie)' about="#mwt2" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"title"},{"html":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;dangerous attribute&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Dangerous_attribute&amp;quot;},&amp;quot;params&amp;quot;:{},&amp;quot;i&amp;quot;:0}}]}\" data-parsoid=\"{&amp;quot;pi&amp;quot;:[[]],&amp;quot;dsr&amp;quot;:[12,35,null,null]}\">\" onmouseover=\"alert(document.cookie)&lt;/span>"}]]}' data-parsoid='{"stx":"html","a":{"title":"\" onmouseover=\"alert(document.cookie)"},"sa":{"title":"{{dangerous attribute}}"}}'></div>
 !! end
 
 !! test
@@ -13853,6 +13927,14 @@ Expansion of multi-line templates in attribute values (bug 6255 sanity check 2)
 
 !! end
 
+!! test
+evil <math>-wiki-tags without Extension:Math enabled
+!! wikitext
+<math><img src="some evil external link"><script>some_evil_javascript();</script></math>
+!! html+tidy
+<p>&lt;math&gt;&lt;img src="some evil external link"&gt;&lt;script&gt;some_evil_javascript();&lt;/script&gt;&lt;/math&gt;</p>
+!! end
+
 ###
 ### Parser hooks (see tests/parser/parserTestsParserHook.php for the <tag> extension)
 ###
@@ -16281,7 +16363,7 @@ Images with the "|" character in the comment
 !! wikitext
 [[File:Foobar.jpg|thumb|An [http://test/?param1=|left|&param2=|x external] URL]]
 !! html/php
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</div></div></div>
 
 !! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" href="http://test/?param1=|left|&amp;param2=|x">external</a> URL</figcaption></figure>
@@ -17529,7 +17611,7 @@ Free external link invading image caption
 !! wikitext
 [[Image:Foobar.jpg|thumb|http://x|hello]]
 !! html
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>hello</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>hello</div></div></div>
 
 !! end
 
@@ -18777,10 +18859,10 @@ A <ref>
 
 <references />
 !! html
-<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"This is a &lt;b data-parsoid=&#39;{\"dsr\":[19,40,3,3]}&#39;>&lt;a rel=\"mw:WikiLink\" href=\"./Bolded_link\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[22,37,2,2]}&#39;>bolded link&lt;/a>&lt;/b> and this is a &lt;span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}&#39; data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[55,76,null,null]}&#39;>transclusion&lt;/span>\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"This is a &lt;b data-parsoid=&#39;{\"dsr\":[19,40,3,3]}&#39;>&lt;a rel=\"mw:WikiLink\" href=\"./Bolded_link\" title=\"Bolded link\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded link\"},\"dsr\":[22,37,2,2]}&#39;>bolded link&lt;/a>&lt;/b> and this is a &lt;span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}&#39; data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[55,76,null,null]}&#39;>transclusion&lt;/span>\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'>
-<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> This is a <b><a rel="mw:WikiLink" href="./Bolded_link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span>
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> This is a <b><a rel="mw:WikiLink" href="./Bolded_link" title="Bolded link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span>
 </li>
 </ol>
 !!end
@@ -19526,11 +19608,11 @@ parsoid
 </li>
 </ul>
 <ul>
-<li><a rel="mw:WikiLink" href="Foo">Foo</a>: bar
+<li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>: bar
 </li>
 </ul>
 <ul>
-<li><a rel="mw:WikiLink" href="Foo">Foo</a>*bar
+<li><a rel="mw:WikiLink" href="Foo" title="Foo">Foo</a>*bar
 </li>
 </ul>
 !!end
@@ -19821,7 +19903,7 @@ parsoid
 |}
 !! html
 <table>
-<tbody><tr><td><a rel="mw:WikiLink" href="./Foo">Foo</a>-bar</td>
+<tbody><tr><td><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>-bar</td>
 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
 <td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>-2</td></tr>
 </tbody></table>
@@ -20430,9 +20512,12 @@ HTML tag with 'unnecessary' entity encoding in attributes
 HTML tag with broken attribute value quoting
 !! wikitext
 <span title="Hello world>Foo</span>
-!! html
+!! html/php
 <p><span>Foo</span>
 </p>
+!! html/parsoid
+<p><span title="Hello world">Foo</span>
+</p>
 !! end
 
 !! test
@@ -20452,12 +20537,18 @@ Table with broken attribute value quoting
 {|
 | title="Hello world|Foo
 |}
-!! html
+!! html/php
 <table>
 <tr>
 <td>Foo
 </td></tr></table>
 
+!! html/parsoid
+<table>
+<tr>
+<td title="Hello world">Foo
+</td></tr></table>
+
 !! end
 
 !! test
index 1fbc7a2..1166817 100644 (file)
@@ -1109,4 +1109,24 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
 
                $this->assertEmpty( $errors, implode( "\n", $errors ) );
        }
+
+       /**
+        * Note: we are overriding this method to remove the deprecated error
+        * @see https://bugzilla.wikimedia.org/show_bug.cgi?id=69505
+        * @see https://github.com/sebastianbergmann/phpunit/issues/1292
+        *
+        * @param array $matcher
+        * @param string $actual
+        * @param string $message
+        * @param bool $isHtml
+        */
+       public static function assertTag( $matcher, $actual, $message = '', $isHtml = true ) {
+               //trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
+
+               $dom = PHPUnit_Util_XML::load( $actual, $isHtml );
+               $tags = PHPUnit_Util_XML::findNodes( $dom, $matcher, $isHtml );
+               $matched = count( $tags ) > 0 && $tags[0] instanceof DOMNode;
+
+               self::assertTrue( $matched, $message );
+       }
 }
index f316f56..96eedb4 100644 (file)
@@ -1,10 +1,10 @@
 <?php
 
 abstract class ResourceLoaderTestCase extends MediaWikiTestCase {
-       protected static function getResourceLoaderContext() {
+       protected static function getResourceLoaderContext( $lang = 'en' ) {
                $resourceLoader = new ResourceLoader();
                $request = new FauxRequest( array(
-                               'lang' => 'en',
+                               'lang' => $lang,
                                'modules' => 'startup',
                                'only' => 'scripts',
                                'skin' => 'vector',
diff --git a/tests/phpunit/data/css/expected.css b/tests/phpunit/data/css/expected.css
new file mode 100644 (file)
index 0000000..74eb21e
--- /dev/null
@@ -0,0 +1,12 @@
+/* All of the combinations should result in the same output in LTR and RTL mode. */
+
+.selector { /*@embed*/ background-image: url(simple-ltr.gif); }
+
+.selector { /*@embed*/ background-image: url(simple-ltr.gif); }
+
+/* Doesn't work! */
+/*.selector { /*@noflip* / /*@embed* / background-image: url(simple-ltr.gif); }*/
+
+.selector { /*@embed*/ background-image: url(simple-ltr.gif); }
+
+.selector { /*@embed*/ background-image: url(simple-ltr.gif); }
diff --git a/tests/phpunit/data/css/simple-ltr.gif b/tests/phpunit/data/css/simple-ltr.gif
new file mode 100644 (file)
index 0000000..13c43e9
Binary files /dev/null and b/tests/phpunit/data/css/simple-ltr.gif differ
diff --git a/tests/phpunit/data/css/simple-rtl.gif b/tests/phpunit/data/css/simple-rtl.gif
new file mode 100644 (file)
index 0000000..f9e7531
Binary files /dev/null and b/tests/phpunit/data/css/simple-rtl.gif differ
diff --git a/tests/phpunit/data/css/test.css b/tests/phpunit/data/css/test.css
new file mode 100644 (file)
index 0000000..bf589ad
--- /dev/null
@@ -0,0 +1,12 @@
+/* All of the combinations should result in the same output in LTR and RTL mode. */
+
+/*@noflip*/ .selector { /*@embed*/ background-image: url(simple-ltr.gif); }
+
+/*@noflip*/ .selector { background-image: /*@embed*/ url(simple-ltr.gif); }
+
+/* Doesn't work! */
+/*.selector { /*@noflip* / /*@embed* / background-image: url(simple-ltr.gif); }*/
+
+.selector { /*@embed*/ /*@noflip*/ background-image: url(simple-ltr.gif); }
+
+.selector { /*@noflip*/ background-image: /*@embed*/ url(simple-ltr.gif); }
index 6537364..27bc293 100644 (file)
@@ -59,6 +59,9 @@ class EditPageTest extends MediaWikiLangTestCase {
         * User input text is passed to rtrim() by edit page. This is a simple
         * wrapper around assertEquals() which calls rrtrim() to normalize the
         * expected and actual texts.
+        * @param string $expected
+        * @param string $actual
+        * @param string $msg
         */
        protected function assertEditedTextEquals( $expected, $actual, $msg = '' ) {
                return $this->assertEquals( rtrim( $expected ), rtrim( $actual ), $msg );
index f82a756..2fce6bf 100644 (file)
@@ -22,6 +22,7 @@ class ImportTest extends MediaWikiLangTestCase {
         * @covers WikiImporter::handlePage
         * @dataProvider getRedirectXML
         * @param string $xml
+        * @param string|null $redirectTitle
         */
        public function testHandlePageContainsRedirect( $xml, $redirectTitle ) {
                $source = $this->getInputStreamSource( $xml );
index 3eb58fc..5c1994b 100644 (file)
@@ -149,12 +149,19 @@ class OutputPageTest extends MediaWikiTestCase {
                        array(
                                array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
                                '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback&amp;*">
+'
+                       ),
+                       // Load private module (scripts)
+                       array(
+                               array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
+                               '<script>if(window.mw){mw.test.baz({token:123});mw.loader.state({"test.quux":"ready"});}
+</script>
 '
                        ),
                        // Load private module (combined)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script>if(window.mw){mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n"]},{});}
+                               '<script>mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n"]},{});
 </script>
 '
                        ),
index 6fdc239..86e8e8b 100644 (file)
@@ -57,12 +57,12 @@ class TestSample extends MediaWikiLangTestCase {
                );
        }
 
-       // @codingStandardsIgnoreStart Ignore long line warning
        /**
         * @dataProvider provideTitles
+        * @codingStandardsIgnoreStart Ignore long line warning
         * See http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.dataProvider
+        * @codingStandardsIgnoreEnd
         */
-       // @codingStandardsIgnoreEnd
        public function testCreateBasicListOfTitles( $titleName, $ns, $text ) {
                $title = Title::newFromText( $titleName, $ns );
                $this->assertEquals( $text, "$title", "see if '$titleName' matches '$text'" );
index 11f867a..628c59b 100644 (file)
@@ -320,7 +320,7 @@ class StatusTest extends MediaWikiLangTestCase {
        }
 
        /**
-        * @return array of arrays with values;
+        * @return array Array of arrays with values;
         *    0 => status object
         *    1 => expected string (with no context)
         */
@@ -391,7 +391,7 @@ class StatusTest extends MediaWikiLangTestCase {
        }
 
        /**
-        * @return array of arrays with values;
+        * @return array Array of arrays with values;
         *    0 => status object
         *    1 => expected Message parameters (with no context)
         *    2 => expected Message key
index 988a4a4..d2400b3 100644 (file)
@@ -403,17 +403,17 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                $this->setTitle( NS_USER );
                $this->setUserPerm( '' );
-               $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User' ) ),
+               $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
 
                $this->setTitle( NS_MEDIAWIKI );
                $this->setUserPerm( 'bogus' );
-               $this->assertEquals( array( array( 'protectedinterface' ) ),
+               $this->assertEquals( array( array( 'protectedinterface', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
 
                $this->setTitle( NS_MEDIAWIKI );
                $this->setUserPerm( 'bogus' );
-               $this->assertEquals( array( array( 'protectedinterface' ) ),
+               $this->assertEquals( array( array( 'protectedinterface', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
 
                $wgNamespaceProtection = null;
@@ -440,38 +440,38 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                $this->setTitle( NS_USER, $this->userName . '/test.js' );
                $this->runCSSandJSPermissions(
-                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) )
                );
 
                $this->setTitle( NS_USER, $this->userName . '/test.css' );
                $this->runCSSandJSPermissions(
-                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) )
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) )
                );
 
                $this->setTitle( NS_USER, $this->altUserName . '/test.js' );
                $this->runCSSandJSPermissions(
-                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) )
                );
 
                $this->setTitle( NS_USER, $this->altUserName . '/test.css' );
                $this->runCSSandJSPermissions(
-                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) )
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) )
                );
 
                $this->setTitle( NS_USER, $this->altUserName . '/tempo' );
@@ -545,38 +545,38 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                        "bogus" => array( 'bogus', "sysop", "protect", "" ) );
 
                $this->assertEquals( array( array( 'badaccess-group0' ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'bogus' ),
+                               array( 'protectedpagetext', 'editprotected', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
-               $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+               $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+                               array( 'protectedpagetext', 'editprotected', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ) ),
                        $this->title->getUserPermissionsErrors( 'edit',
                                $this->user ) );
                $this->setUserPerm( "" );
                $this->assertEquals( array( array( 'badaccess-group0' ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'bogus' ),
+                               array( 'protectedpagetext', 'editprotected', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
                $this->assertEquals( array( array( 'badaccess-groups', "*, [[$prefix:Users|Users]]", 2 ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'edit' ),
+                               array( 'protectedpagetext', 'editprotected', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ) ),
                        $this->title->getUserPermissionsErrors( 'edit',
                                $this->user ) );
                $this->setUserPerm( array( "edit", "editprotected" ) );
                $this->assertEquals( array( array( 'badaccess-group0' ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
                $this->assertEquals( array(
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ) ),
                        $this->title->getUserPermissionsErrors( 'edit',
                                $this->user ) );
 
@@ -587,14 +587,14 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->assertEquals( false,
                        $this->title->quickUserCan( 'edit', $this->user ) );
                $this->assertEquals( array( array( 'badaccess-group0' ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'bogus' ),
+                               array( 'protectedpagetext', 'editprotected', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
-               $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'editprotected' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+               $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+                               array( 'protectedpagetext', 'editprotected', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ) ),
                        $this->title->getUserPermissionsErrors( 'edit',
                                $this->user ) );
 
@@ -604,14 +604,14 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->assertEquals( false,
                        $this->title->quickUserCan( 'edit', $this->user ) );
                $this->assertEquals( array( array( 'badaccess-group0' ),
-                               array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'protect' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+                               array( 'protectedpagetext', 'bogus', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ),
+                               array( 'protectedpagetext', 'protect', 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
-               $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
-                               array( 'protectedpagetext', 'protect' ),
-                               array( 'protectedpagetext', 'protect' ) ),
+               $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ),
+                               array( 'protectedpagetext', 'protect', 'edit' ) ),
                        $this->title->getUserPermissionsErrors( 'edit',
                                $this->user ) );
        }
@@ -630,9 +630,9 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
 
                $this->assertEquals( false,
                        $this->title->userCan( 'bogus', $this->user ) );
-               $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ),
-                               array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ),
-                               array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ) ),
+               $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
+                               array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
+                               array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
 
                $this->assertEquals( true,
index 53e8dc2..b2b0d34 100644 (file)
@@ -1,9 +1,6 @@
 <?php
 
 /**
- * @group Database
- *        ^--- needed for language cache stuff
- *
  * @group Title
  */
 class TitleTest extends MediaWikiTestCase {
@@ -20,19 +17,6 @@ class TitleTest extends MediaWikiTestCase {
                ) );
        }
 
-       public function addDBData() {
-               $this->db->replace( 'interwiki', 'iw_prefix',
-                       array(
-                               'iw_prefix' => 'externalwiki',
-                               'iw_url' => '//example.com/$1',
-                               'iw_api' => '//example.com/api.php',
-                               'iw_wikiid' => '',
-                               'iw_local' => 0,
-                               'iw_trans' => 0,
-                       )
-               );
-       }
-
        /**
         * @covers Title::legalChars
         */
@@ -238,11 +222,10 @@ class TitleTest extends MediaWikiTestCase {
        }
 
        /**
-        * @dataProvider provideBug31100
+        * @dataProvider provideSpecialNamesWithAndWithoutParameter
         * @covers Title::fixSpecialName
-        * @todo give this test a real name explaining what is being tested here
         */
-       public function testBug31100FixSpecialName( $text, $expectedParam ) {
+       public function testFixSpecialNameRetainsParameter( $text, $expectedParam ) {
                $title = Title::newFromText( $text );
                $fixed = $title->fixSpecialName();
                $stuff = explode( '/', $fixed->getDBkey(), 2 );
@@ -258,7 +241,7 @@ class TitleTest extends MediaWikiTestCase {
                );
        }
 
-       public static function provideBug31100() {
+       public static function provideSpecialNamesWithAndWithoutParameter() {
                return array(
                        array( 'Special:Version', null ),
                        array( 'Special:Version/', '' ),
@@ -640,7 +623,14 @@ class TitleTest extends MediaWikiTestCase {
                        array( 'Special:SomeNonexistentSpecialPage', false ),
                        array( 'MediaWiki:Parentheses', true ),
                        array( 'MediaWiki:Some nonexistent message', false ),
-                       array( 'externalwiki:Interwiki link', true ),
                );
        }
+
+       /**
+        * @covers Title::isAlwaysKnown
+        */
+       public function testIsAlwaysKnownOnInterwiki() {
+               $title = Title::makeTitle( NS_MAIN, 'Interwiki link', '', 'externalwiki' );
+               $this->assertTrue( $title->isAlwaysKnown() );
+       }
 }
index 19c0a7d..201eed1 100644 (file)
@@ -101,6 +101,8 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                        $this->assertTrue( $moduleManager->isDefined( $name, $group ), 'isDefined' );
                        $this->assertNotNull( $moduleManager->getModule( $name, $group, true ), 'getModule' );
                }
+
+               $this->assertTrue( true ); // Don't mark the test as risky if $modules is empty
        }
 
        public function getModuleProvider() {
index 21f4322..b03836e 100644 (file)
@@ -9,8 +9,8 @@
  */
 class ApiRevisionDeleteTest extends ApiTestCase {
 
-       static $page = 'Help:ApiRevDel_test';
-       var $revs = array();
+       public static $page = 'Help:ApiRevDel_test';
+       public $revs = array();
 
        protected function setUp() {
                // Needs to be before setup since this gets cached
index f633315..cd14194 100644 (file)
@@ -47,7 +47,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         * @param string $text Content of the page
         * @param string $summary Optional summary string for the revision
         * @param int $defaultNs Optional namespace id
-        * @return Array as returned by WikiPage::doEditContent()
+        * @return array Array as returned by WikiPage::doEditContent()
         */
        protected function editPage( $pageName, $text, $summary = '', $defaultNs = NS_MAIN ) {
                $title = Title::newFromText( $pageName, $defaultNs );
@@ -121,7 +121,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         * @param array $params Key-value API params
         * @param array|null $session Session array
         * @param User|null $user A User object for the context
-        * @return Result of the API call
+        * @return array Result of the API call
         * @throws Exception In case wsToken is not set in the session
         */
        protected function doApiRequestWithToken( array $params, array $session = null,
index 328ea8e..6374cfa 100644 (file)
@@ -328,7 +328,7 @@ class RandomImageGenerator {
         * This is used when simulating a rotated image capture with Exif orientation
         * @param array $spec Returned by getImageSpec
         * @param array $matrix 2x2 transformation matrix
-        * @return array transformed Spec
+        * @return array Transformed Spec
         */
        private static function rotateImageSpec( &$spec, $matrix ) {
                $tSpec = array();
@@ -367,7 +367,7 @@ class RandomImageGenerator {
         * @param array $matrix 2x2 rotation matrix
         * @param int $x The x-coordinate number
         * @param int $y The y-coordinate number
-        * @return Transformed with properties x, y
+        * @return array Transformed with properties x, y
         */
        private static function matrixMultiply2x2( $matrix, $x, $y ) {
                return array(
@@ -432,7 +432,7 @@ class RandomImageGenerator {
         * array( array( 'foo', 'bar' ), array( 'quux', 'baz' ) );
         *
         * @param int $number Number of pairs
-        * @return array two-element arrays
+        * @return array Two-element arrays
         */
        private function getRandomWordPairs( $number ) {
                $lines = $this->getRandomLines( $number * 2 );
@@ -454,7 +454,7 @@ class RandomImageGenerator {
         * @param int $number_desired Number of lines desired
         *
         * @throws Exception
-        * @return Array of exactly n elements, drawn randomly from lines the file
+        * @return array Array of exactly n elements, drawn randomly from lines the file
         */
        private function getRandomLines( $number_desired ) {
                $filepath = $this->dictionaryFile;
diff --git a/tests/phpunit/includes/api/format/ApiFormatNoneTest.php b/tests/phpunit/includes/api/format/ApiFormatNoneTest.php
new file mode 100644 (file)
index 0000000..cabd750
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ * @covers ApiFormatNone
+ */
+class ApiFormatNoneTest extends ApiFormatTestBase {
+
+       public function testValidSyntax( ) {
+               $data = $this->apiRequest( 'none', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
+
+               $this->assertEquals( '', $data ); // No output!
+       }
+}
index d986e69..bce6268 100644 (file)
@@ -38,7 +38,7 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
         * @param int $expectedCount Max number of iterations
         * @param string $id Unit test id
         * @param bool $continue True to use smart continue
-        * @return Merged results data array
+        * @return array Merged results data array
         */
        protected function checkC( $expected, $params, $expectedCount, $id, $continue = true ) {
                $result = $this->query( $params, $expectedCount, $id, $continue );
@@ -51,7 +51,7 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
         * @param int $expectedCount Max number of iterations
         * @param string $id Unit test id
         * @param bool $useContinue True to use smart continue
-        * @return Merged results data array
+        * @return array Merged results data array
         * @throws Exception
         */
        protected function query( $params, $expectedCount, $id, $useContinue = true ) {
index f920ce9..56c15b2 100644 (file)
@@ -52,6 +52,8 @@ STR;
        /**
         * Check that the parameter is a valid two element array,
         * with the first element being API request and the second - expected result
+        * @param array $v
+        * @return array
         */
        private function validateRequestExpectedPair( $v ) {
                $this->assertType( 'array', $v, self::PARAM_ASSERT );
@@ -66,6 +68,8 @@ STR;
 
        /**
         * Recursively merges the expected values in the $item into the $all
+        * @param array &$all
+        * @param array $item
         */
        private function mergeExpected( &$all, $item ) {
                foreach ( $item as $k => $v ) {
index 9783ae3..d009192 100644 (file)
@@ -3,6 +3,10 @@
 /**
  * @covers OldChangesList
  *
+ * @todo add tests to cover article link, timestamp, character difference,
+ *       log entry, user tool links, direction marks, tags, rollback,
+ *       watching users, and date header.
+ *
  * @group Database
  *
  * @licence GNU GPL v2+
@@ -68,7 +72,7 @@ class OldChangesListTest extends MediaWikiLangTestCase {
 
        public function testRecentChangesLine_LogTitle() {
                $oldChangesList = $this->getOldChangesList();
-               $recentChange = $this->getLogChange( 'delete' );
+               $recentChange = $this->getLogChange( 'delete', 'delete' );
 
                $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
 
@@ -100,21 +104,40 @@ class OldChangesListTest extends MediaWikiLangTestCase {
                );
        }
 
+       public function testRecentChangesLine_Flags() {
+               $oldChangesList = $this->getOldChangesList();
+               $recentChange = $this->getNewBotEditChange();
+
+               $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
+
+               $this->assertRegExp(
+                       "/<abbr class='newpage' title='This edit created a new page'>N<\/abbr>/",
+                       $line,
+                       'new page flag'
+               );
+
+               $this->assertRegExp(
+                       "/<abbr class='botedit' title='This edit was performed by a bot'>b<\/abbr>/",
+                       $line,
+                       'bot flag'
+               );
+       }
+
        private function getNewBotEditChange() {
                $user = $this->getTestUser();
 
                $recentChange = $this->testRecentChangesHelper->makeNewBotEditRecentChange(
-                       $user, 'Abc', '20131103212153', 0, 0
+                       $user, 'Abc', '20131103212153', 5, 191, 190, 0, 0
                );
 
                return $recentChange;
        }
 
-       private function getLogChange( $logType ) {
+       private function getLogChange( $logType, $logAction ) {
                $user = $this->getTestUser();
 
                $recentChange = $this->testRecentChangesHelper->makeLogRecentChange(
-                       $logType, $user, 'Abc', '20131103212153', 0, 0
+                       $logType, $logAction, $user, 'Abc', '20131103212153', 0, 0
                );
 
                return $recentChange;
index c3b8ce6..ee1a4d0 100644 (file)
@@ -123,6 +123,7 @@ class RCCacheEntryFactoryTest extends MediaWikiLangTestCase {
                                $this->getContext(),
                                $this->getMessages(),
                                $this->testRecentChangesHelper->makeLogRecentChange(
+                                       'delete',
                                        'delete',
                                        $this->getTestUser(),
                                        'Abc',
index bb6ebec..0da0775 100644 (file)
@@ -26,7 +26,7 @@ class TestRecentChangesHelper {
                return $this->makeRecentChange( $attribs, $counter, $watchingUsers );
        }
 
-       public function makeLogRecentChange( $logType, User $user, $titleText, $timestamp, $counter,
+       public function makeLogRecentChange( $logType, $logAction, User $user, $titleText, $timestamp, $counter,
                $watchingUsers
        ) {
                $attribs = array_merge(
@@ -42,7 +42,7 @@ class TestRecentChangesHelper {
                                'rc_type' => 3,
                                'rc_logid' => 25,
                                'rc_log_type' => $logType,
-                               'rc_log_action' => $logType,
+                               'rc_log_action' => $logAction,
                                'rc_source' => 'mw.log'
                        )
                );
index 7080b02..a999081 100644 (file)
@@ -2,6 +2,42 @@
 
 class GlobalVarConfigTest extends MediaWikiTestCase {
 
+       /**
+        * @covers GlobalVarConfig::newInstance
+        */
+       public function testNewInstance() {
+               $config = GlobalVarConfig::newInstance();
+               $this->assertInstanceOf( 'GlobalVarConfig', $config );
+               $this->maybeStashGlobal( 'wgBaz' );
+               $GLOBALS['wgBaz'] = 'somevalue';
+               // Check prefix is set to 'wg'
+               $this->assertEquals( 'somevalue', $config->get( 'Baz' ) );
+       }
+
+       /**
+        * @covers GlobalVarConfig::__construct
+        * @dataProvider provideConstructor
+        */
+       public function testConstructor( $prefix ) {
+               $var = $prefix . 'GlobalVarConfigTest';
+               $rand = wfRandomString();
+               $this->maybeStashGlobal( $var );
+               $GLOBALS[$var] = $rand;
+               $config = new GlobalVarConfig( $prefix );
+               $this->assertInstanceOf( 'GlobalVarConfig', $config );
+               $this->assertEquals( $rand, $config->get( 'GlobalVarConfigTest' ) );
+       }
+
+       public static function provideConstructor() {
+               return array(
+                       array( 'wg' ),
+                       array( 'ef' ),
+                       array( 'smw' ),
+                       array( 'blahblahblahblah' ),
+                       array( '' ),
+               );
+       }
+
        public function provideGet() {
                $set = array(
                        'wgSomething' => 'default1',
@@ -19,6 +55,7 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
                        array( 'Foo', 'wg', 'default2' ),
                        array( 'Variable', 'ef', 'default3' ),
                        array( 'BAR', '', 'default4' ),
+                       array( 'ThisGlobalWasNotSetAbove', 'wg', false )
                );
        }
 
@@ -28,9 +65,43 @@ class GlobalVarConfigTest extends MediaWikiTestCase {
         * @param string $expected
         * @dataProvider provideGet
         * @covers GlobalVarConfig::get
+        * @covers GlobalVarConfig::getWithPrefix
         */
        public function testGet( $name, $prefix, $expected ) {
                $config = new GlobalVarConfig( $prefix );
+               if ( $expected === false ) {
+                       $this->setExpectedException( 'ConfigException', 'GlobalVarConfig::getWithPrefix: undefined variable:' );
+               }
                $this->assertEquals( $config->get( $name ), $expected );
        }
+
+       public static function provideSet() {
+               return array(
+                       array( 'Foo', 'wg', 'wgFoo' ),
+                       array( 'SomethingRandom', 'wg', 'wgSomethingRandom' ),
+                       array( 'FromAnExtension', 'eg', 'egFromAnExtension' ),
+                       array( 'NoPrefixHere', '', 'NoPrefixHere' ),
+               );
+       }
+
+       private function maybeStashGlobal( $var ) {
+               if ( array_key_exists( $var, $GLOBALS ) ) {
+                       // Will be reset after this test is over
+                       $this->stashMwGlobals( $var );
+               }
+       }
+
+       /**
+        * @dataProvider provideSet
+        * @covers GlobalVarConfig::set
+        * @covers GlobalVarConfig::setWithPrefix
+        */
+       public function testSet( $name, $prefix, $var ) {
+               $this->maybeStashGlobal( $var );
+               $config = new GlobalVarConfig( $prefix );
+               $random = wfRandomString();
+               $config->set( $name, $random );
+               $this->assertArrayHasKey( $var, $GLOBALS );
+               $this->assertEquals( $random, $GLOBALS[$var] );
+       }
 }
index abedc6c..f744973 100644 (file)
@@ -448,7 +448,7 @@ class DummyContentForTesting extends AbstractContent {
         * Returns native represenation of the data. Interpretation depends on the data model used,
         * as given by getDataModel().
         *
-        * @return mixed the native representation of the content. Could be a string, a nested array
+        * @return mixed The native representation of the content. Could be a string, a nested array
         *  structure, an object, a binary blob... anything, really.
         */
        public function getNativeData() {
@@ -476,7 +476,7 @@ class DummyContentForTesting extends AbstractContent {
         * return $this. That is,  $copy === $original may be true, but only for imutable content
         * objects.
         *
-        * @return Content. A copy of this object.
+        * @return Content A copy of this object
         */
        public function copy() {
                return $this;
@@ -514,7 +514,7 @@ class DummyContentForTesting extends AbstractContent {
         *
         * @param Title $title Context title for parsing
         * @param int|null $revId Revision ID (for {{REVISIONID}})
-        * @param ParserOptions|null $options Parser options
+        * @param ParserOptions $options Parser options
         * @param bool $generateHtml Whether or not to generate HTML
         * @param ParserOutput &$output The output object to fill (reference).
         */
index 39c311f..0c0b390 100644 (file)
@@ -136,7 +136,7 @@ class DatabaseTestHelper extends DatabaseBase {
                return false;
        }
 
-       function indexInfo( $table, $index, $fname = 'Database::indexInfo' ) {
+       function indexInfo( $table, $index, $fname = 'DatabaseBase::indexInfo' ) {
                return false;
        }
 
index 4ff6165..447bf21 100644 (file)
@@ -115,7 +115,7 @@ abstract class ORMRowTest extends \MediaWikiTestCase {
 
        /**
         * @since 1.20
-        * @return array of IORMRow
+        * @return array Array of IORMRow
         */
        public function instanceProvider() {
                $instances = array();
index 17c6224..6e41de7 100644 (file)
@@ -103,7 +103,7 @@ class MWDebugTest extends MediaWikiTestCase {
                $this->assertInstanceOf( 'ApiResult', $result );
                $data = $result->getData();
 
-               $expectedKeys = array( 'mwVersion', 'phpVersion', 'gitRevision', 'gitBranch',
+               $expectedKeys = array( 'mwVersion', 'phpEngine', 'phpVersion', 'gitRevision', 'gitBranch',
                        'gitViewUrl', 'time', 'log', 'debugLog', 'queries', 'request', 'memory',
                        'memoryPeak', 'includes', 'profile', '_element' );
 
diff --git a/tests/phpunit/includes/deferred/DeferredUpdatesTest.php b/tests/phpunit/includes/deferred/DeferredUpdatesTest.php
new file mode 100644 (file)
index 0000000..5348c85
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+class DeferredUpdatesTest extends MediaWikiTestCase {
+
+       public function testDoUpdates() {
+               $updates = array(
+                       '1' => 'deferred update 1',
+                       '2' => 'deferred update 2',
+                       '3' => 'deferred update 3',
+                       '2-1' => 'deferred update 1 within deferred update 2',
+               );
+               DeferredUpdates::addCallableUpdate(
+                       function () use ( $updates ) {
+                               echo $updates['1'];
+                       }
+               );
+               DeferredUpdates::addCallableUpdate(
+                       function () use ( $updates ) {
+                               echo $updates['2'];
+                               DeferredUpdates::addCallableUpdate(
+                                       function () use ( $updates ) {
+                                               echo $updates['2-1'];
+                                       }
+                               );
+                       }
+               );
+               DeferredUpdates::addCallableUpdate(
+                       function () use ( $updates ) {
+                               echo $updates[3];
+                       }
+               );
+
+               $this->expectOutputString( implode( '', $updates ) );
+
+               DeferredUpdates::doUpdates();
+       }
+
+}
index e1a69e3..5474b96 100644 (file)
@@ -39,7 +39,7 @@ class DifferenceEngineTest extends MediaWikiTestCase {
        }
 
        /**
-        * @return int[] revision ids
+        * @return int[] Revision ids
         */
        protected function doEdits() {
                $title = $this->getTitle();
diff --git a/tests/phpunit/includes/htmlform/HTMLAutoCompleteSelectFieldTest.php b/tests/phpunit/includes/htmlform/HTMLAutoCompleteSelectFieldTest.php
new file mode 100644 (file)
index 0000000..2c7f50c
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Unit tests for HTMLAutoCompleteSelectField
+ *
+ * @covers HTMLAutoCompleteSelectField
+ */
+class HtmlAutoCompleteSelectFieldTest extends MediaWikiTestCase {
+
+       var $options = array(
+               'Bulgaria'     => 'BGR',
+               'Burkina Faso' => 'BFA',
+               'Burundi'      => 'BDI',
+       );
+
+       /**
+        * Verify that attempting to instantiate an HTMLAutoCompleteSelectField
+        * without providing any autocomplete options causes an exception to be
+        * thrown.
+        *
+        * @expectedException        MWException
+        * @expectedExceptionMessage called without any autocompletions
+        */
+       function testMissingAutocompletions() {
+               new HTMLAutoCompleteSelectField( array( 'fieldname' => 'Test' ) );
+       }
+
+       /**
+        * Verify that the autocomplete options are correctly encoded as
+        * the 'data-autocomplete' attribute of the field.
+        *
+        * @covers HTMLAutoCompleteSelectField::getAttributes
+        */
+       function testGetAttributes() {
+               $field = new HTMLAutoCompleteSelectField( array(
+                       'fieldname'    => 'Test',
+                       'autocomplete' => $this->options,
+               ) );
+
+               $attributes = $field->getAttributes( array() );
+               $this->assertEquals( array_keys( $this->options ),
+                       FormatJson::decode( $attributes['data-autocomplete'] ),
+                       "The 'data-autocomplete' attribute encodes autocomplete option keys as a JSON array."
+               );
+       }
+
+       /**
+        * Test that the optional select dropdown is included or excluded based on
+        * the presence or absence of the 'options' parameter.
+        */
+       function testOptionalSelectElement() {
+               $params = array(
+                       'fieldname'    => 'Test',
+                       'autocomplete' => $this->options,
+                       'options'      => $this->options,
+               );
+
+               $field = new HTMLAutoCompleteSelectField( $params );
+               $html = $field->getInputHTML( false );
+               $this->assertRegExp( '/select/', $html,
+                       "When the 'options' parameter is set, the HTML includes a <select>" );
+
+               unset( $params['options'] );
+               $field = new HTMLAutoCompleteSelectField( $params );
+               $html = $field->getInputHTML( false );
+               $this->assertNotRegExp( '/select/', $html,
+                       "When the 'options' parameter is not set, the HTML does not include a <select>" );
+       }
+}
index 8e56245..8f28158 100644 (file)
@@ -33,7 +33,7 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
        }
 
        /**
-        * @return Array Argument for FSRepo constructor
+        * @return array Argument for FSRepo constructor
         */
        protected function getRepoOptions() {
                return array(
@@ -47,7 +47,7 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
         * The result of this method will set the file path to use,
         * as well as the protected member $filePath
         *
-        * @return String path where files are
+        * @return string Path where files are
         */
        protected function getFilePath() {
                return __DIR__ . '/../../data/media/';
@@ -59,7 +59,7 @@ abstract class MediaWikiMediaTestCase extends MediaWikiTestCase {
         *
         * Override this method if your test case creates thumbnails
         *
-        * @return boolean
+        * @return bool
         */
        protected function createsThumbnails() {
                return false;
index 4e8c11f..0df52f5 100644 (file)
@@ -353,6 +353,9 @@ class NewParserTest extends MediaWikiTestCase {
        /**
         * Set up the global variables for a consistent environment for each test.
         * Ideally this should replace the global configuration entirely.
+        * @param array $opts
+        * @param string $config
+        * @return RequestContext
         */
        protected function setupGlobals( $opts = array(), $config = '' ) {
                global $wgFileBackends;
@@ -754,7 +757,7 @@ class NewParserTest extends MediaWikiTestCase {
                                        $this->markTestSkipped( "SKIPPED: tidy extension is not installed.\n" );
                                } else {
                                        $out = MWTidy::tidy( $out );
-                                       $out = preg_replace( '/\s+$/', '', $out);
+                                       $out = preg_replace( '/\s+$/', '', $out );
                                }
                        }
 
@@ -872,6 +875,7 @@ class NewParserTest extends MediaWikiTestCase {
        /**
         * Get an input dictionary from a set of parser test files
         * @param array $filenames
+        * @return string
         */
        function getFuzzInput( $filenames ) {
                $dict = '';
@@ -890,6 +894,7 @@ class NewParserTest extends MediaWikiTestCase {
 
        /**
         * Get a memory usage breakdown
+        * @return array
         */
        function getMemoryBreakdown() {
                $memStats = array();
@@ -926,6 +931,7 @@ class NewParserTest extends MediaWikiTestCase {
        /**
         * Get a Parser object
         * @param Preprocessor $preprocessor
+        * @return Parser
         */
        function getParser( $preprocessor = null ) {
                global $wgParserConf;
@@ -986,6 +992,7 @@ class NewParserTest extends MediaWikiTestCase {
        /**
         * Remove last character if it is a newline
         * @param string $s
+        * @return string
         */
        public function removeEndingNewline( $s ) {
                if ( substr( $s, -1 ) === "\n" ) {
@@ -1070,6 +1077,7 @@ class NewParserTest extends MediaWikiTestCase {
         * @param string $key Name of option val to retrieve
         * @param array $opts Options array to look in
         * @param mixed $default Default value returned if not found
+        * @return mixed
         */
        protected static function getOptionValue( $key, $opts, $default ) {
                $key = strtolower( $key );
index 12aac69..c869258 100644 (file)
@@ -26,6 +26,24 @@ class TidyTest extends MediaWikiTestCase {
        }
 
        public function provideTestWrapping() {
+               $testMathML = <<<'MathML'
+<math xmlns="http://www.w3.org/1998/Math/MathML">
+    <mrow>
+      <mi>a</mi>
+      <mo>&InvisibleTimes;</mo>
+      <msup>
+        <mi>x</mi>
+        <mn>2</mn>
+      </msup>
+      <mo>+</mo>
+      <mi>b</mi>
+      <mo>&InvisibleTimes; </mo>
+      <mi>x</mi>
+      <mo>+</mo>
+      <mi>c</mi>
+    </mrow>
+  </math>
+MathML;
                return array(
                        array(
                                '<mw:editsection page="foo" section="bar">foo</mw:editsection>',
@@ -40,6 +58,7 @@ class TidyTest extends MediaWikiTestCase {
                        array( '<mw:toc>foo</mw:toc>', '<mw:toc>foo</mw:toc>', '<mw:toc> should survive tidy' ),
                        array( "<link foo=\"bar\" />\nfoo", '<link foo="bar"/>foo', '<link> should survive tidy' ),
                        array( "<meta foo=\"bar\" />\nfoo", '<meta foo="bar"/>foo', '<meta> should survive tidy' ),
+                       array( $testMathML, $testMathML, '<math> should survive tidy' ),
                );
        }
 }
index 038a0e1..b0edaaf 100644 (file)
@@ -7,7 +7,12 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
 
                // The return value of the closure shouldn't matter since this test should
                // never call it
-               SkinFactory::getDefaultInstance()->register( 'vector', 'Vector', function(){});
+               SkinFactory::getDefaultInstance()->register(
+                       'fakeskin',
+                       'FakeSkin',
+                       function () {
+                       }
+               );
        }
 
        /**
@@ -29,7 +34,7 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                        ),
                        'skinStyles' => array(
                                'default' => 'quux-fallback.less',
-                               'vector' => array(
+                               'fakeskin' => array(
                                        'baz-vector.css',
                                        'quux-vector.less',
                                ),
index bd6b3f2..12ec9dd 100644 (file)
@@ -90,6 +90,36 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
                $this->assertStringEqualsFile( $basePath . '/styles.css', $styles['all'] );
        }
 
+       /**
+        * What happens when you mix @embed and @noflip?
+        * This really is an integration test, but oh well.
+        */
+       public function testMixedCssAnnotations(  ) {
+               $basePath = __DIR__ . '/../../data/css';
+               $testModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'test.css' ),
+               ) );
+               $expectedModule = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'expected.css' ),
+               ) );
+
+               $contextLtr = self::getResourceLoaderContext( 'en' );
+               $contextRtl = self::getResourceLoaderContext( 'he' );
+
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       str_replace( '/*@noflip*/ ', '', $testModule->getStyles( $contextLtr ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in LTR mode"
+               );
+               $this->assertEquals(
+                       $expectedModule->getStyles( $contextLtr ),
+                       str_replace( '/*@noflip*/ ', '', $testModule->getStyles( $contextRtl ) ),
+                       "/*@noflip*/ with /*@embed*/ gives correct results in RTL mode"
+               );
+       }
+
        /**
         * @dataProvider providePackedModules
         * @covers ResourceLoader::makePackedModulesString
index 7b7c7f8..d3663c8 100644 (file)
@@ -35,4 +35,36 @@ class SkinFactoryTest extends MediaWikiTestCase {
                $this->setExpectedException( 'UnexpectedValueException' );
                $factory->makeSkin( 'unittest' );
        }
+
+       /**
+        * @covers SkinFactory::makeSkin
+        */
+       public function testMakeSkinWithValidCallback() {
+               $factory = new SkinFactory();
+               $factory->register( 'testfallback', 'TestFallback', function () {
+                       return new SkinFallback();
+               } );
+
+               $skin = $factory->makeSkin( 'testfallback' );
+               $this->assertInstanceOf( 'Skin', $skin );
+               $this->assertInstanceOf( 'SkinFallback', $skin );
+       }
+
+       /**
+        * @covers SkinFactory::getSkinNames
+        */
+       public function testGetSkinNames() {
+               $factory = new SkinFactory();
+               // A fake callback we can use that will never be called
+               $callback = function () {
+                       // NOP
+               };
+               $factory->register( 'skin1', 'Skin1', $callback );
+               $factory->register( 'skin2', 'Skin2', $callback );
+               $names = $factory->getSkinNames();
+               $this->assertArrayHasKey( 'skin1', $names );
+               $this->assertArrayHasKey( 'skin2', $names );
+               $this->assertEquals( 'Skin1', $names['skin1'] );
+               $this->assertEquals( 'Skin2', $names['skin2'] );
+       }
 }
diff --git a/tests/phpunit/includes/specials/ImageListPagerTest.php b/tests/phpunit/includes/specials/ImageListPagerTest.php
new file mode 100644 (file)
index 0000000..8a0ac97
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Test class for ImageListPagerTest class.
+ *
+ * Copyright © 2013, Antoine Musso
+ * Copyright © 2013, Siebrand Mazeland
+ * Copyright © 2013, Wikimedia Foundation Inc.
+ *
+ */
+
+class ImageListPagerTest extends MediaWikiTestCase {
+       /**
+        * @expectedException MWException
+        * @expectedExceptionMessage invalid_field
+        * @covers ImageListPager::formatValue
+        */
+       public function testFormatValuesThrowException() {
+               $page = new ImageListPager( RequestContext::getMain() );
+               $page->formatValue( 'invalid_field', 'invalid_value' );
+       }
+}
diff --git a/tests/phpunit/includes/specials/SpecialListFilesTest.php b/tests/phpunit/includes/specials/SpecialListFilesTest.php
deleted file mode 100644 (file)
index c042064..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-/**
- * Test class for SpecialListFiles class.
- *
- * Copyright © 2013, Antoine Musso
- * Copyright © 2013, Siebrand Mazeland
- * Copyright © 2013, Wikimedia Foundation Inc.
- *
- */
-
-class SpecialListFilesTest extends MediaWikiTestCase {
-       /**
-        * @expectedException MWException
-        * @expectedExceptionMessage invalid_field
-        * @covers ImageListPager::formatValue
-        */
-       public function testFormatValuesThrowException() {
-               $page = new ImageListPager( RequestContext::getMain() );
-               $page->formatValue( 'invalid_field', 'invalid_value' );
-       }
-}
index 1f1d750..83489c6 100644 (file)
@@ -8,7 +8,6 @@
  */
 
 class SpecialSearchTest extends MediaWikiTestCase {
-       private $search;
 
        /**
         * @covers SpecialSearch::load
@@ -18,7 +17,8 @@ class SpecialSearchTest extends MediaWikiTestCase {
         * @param array $userOptions User options to test with. For example:
         *   array('searchNs5' => 1 );. Null to use default options.
         * @param string $expectedProfile An expected search profile name
-        * @param array $expectedNs Expected namespaces
+        * @param array $expectedNS Expected namespaces
+        * @param string $message
         */
        public function testProfileAndNamespaceLoading( $requested, $userOptions,
                $expectedProfile, $expectedNS, $message = 'Profile name and namespaces mismatches!'
@@ -96,6 +96,7 @@ class SpecialSearchTest extends MediaWikiTestCase {
        /**
         * Helper to create a new User object with given options
         * User remains anonymous though
+        * @param array|null $opt
         */
        function newUserWithSearchNS( $opt = null ) {
                $u = User::newFromId( 0 );
index 7125247..2691944 100644 (file)
@@ -270,6 +270,9 @@ class UploadFromUrlTest extends ApiTestCase {
         * Helper function to perform an async upload, execute the job and fetch
         * the status
         *
+        * @param string $token
+        * @param bool $ignoreWarnings
+        * @param bool $leaveMessage
         * @return array The result of action=upload&statuskey=key
         */
        private function doAsyncUpload( $token, $ignoreWarnings = false, $leaveMessage = false ) {
index 89759e5..0fdb8e1 100644 (file)
@@ -35,7 +35,9 @@ class StringUtilsTest extends MediaWikiTestCase {
        }
 
        /**
-        * Print high range characters as an hexadecimal
+        * Print high range characters as a hexadecimal
+        * @param string $string
+        * @return string
         */
        function escaped( $string ) {
                $escaped = '';
index ec51441..cff2e8f 100644 (file)
@@ -276,7 +276,7 @@ class LanguageTest extends LanguageClassesTestCase {
        }
 
        /**
-        * @return array format is ($len, $ellipsis, $input, $expected)
+        * @return array Format is ($len, $ellipsis, $input, $expected)
         */
        public static function provideHTMLTruncateData() {
                return array(
index 45d5ea8..8b6aef5 100644 (file)
@@ -31,7 +31,7 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
         * @param Page $page Page to add the revision to
         * @param string $text Revisions text
         * @param string $summary Revisions summare
-        *
+        * @return array
         * @throws MWException
         */
        protected function addRevision( Page $page, $text, $summary ) {
index 016b7e0..a37a97c 100644 (file)
@@ -434,7 +434,7 @@ class TextPassDumperTest extends DumpTestCase {
         *   revision id increase further and further, while the text
         *   id of the first iteration is reused. The pages and revision
         *   of iteration > 1 have no corresponding representation in the database.
-        * @return string absolute filename of the stub
+        * @return string Absolute filename of the stub
         */
        private function setUpStub( $fname = null, $iterations = 1 ) {
                if ( $fname === null ) {
index b2141d3..4e38418 100644 (file)
@@ -101,7 +101,7 @@ class FetchTextTest extends MediaWikiTestCase {
         * @param WikiPage $page The page to add the revision to
         * @param string $text The revisions text
         * @param string $summary The revisions summare
-        *
+        * @return int
         * @throws MWException
         */
        private function addRevision( $page, $text, $summary ) {
index b2f7fac..e0a72fd 100644 (file)
@@ -35,6 +35,13 @@ class MockImageHandler {
         * a thumbnail at all. That is merely returning a ThumbnailImage that
         * will be consumed by the unit test.  There is no need to create a real
         * thumbnail on the filesystem.
+        * @param ImageHandler $that
+        * @param File $image
+        * @param string $dstPath
+        * @param string $dstUrl
+        * @param array $params
+        * @param int $flags
+        * @return ThumbnailImage
         */
        static function doFakeTransform( $that, $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
                # Example of what we receive:
index 647386d..2396ea2 100644 (file)
@@ -45,6 +45,7 @@ class ResourcesTest extends MediaWikiTestCase {
                $data = self::getAllModules();
                $illegalDeps = array( 'jquery', 'mediawiki' );
 
+               /** @var ResourceLoaderModule $module */
                foreach ( $data['modules'] as $moduleName => $module ) {
                        foreach ( $illegalDeps as $illegalDep ) {
                                $this->assertNotContains(
@@ -63,6 +64,7 @@ class ResourcesTest extends MediaWikiTestCase {
                $data = self::getAllModules();
                $validDeps = array_keys( $data['modules'] );
 
+               /** @var ResourceLoaderModule $module */
                foreach ( $data['modules'] as $moduleName => $module ) {
                        foreach ( $module->getDependencies() as $dep ) {
                                $this->assertContains(
@@ -85,6 +87,7 @@ class ResourcesTest extends MediaWikiTestCase {
                $data = self::getAllModules();
                $validDeps = array_keys( $data['modules'] );
 
+               /** @var ResourceLoaderModule $module */
                foreach ( $data['modules'] as $moduleName => $module ) {
                        $moduleTargets = $module->getTargets();
                        foreach ( $module->getDependencies() as $dep ) {
@@ -103,6 +106,7 @@ class ResourcesTest extends MediaWikiTestCase {
 
        /**
         * Get all registered modules from ResouceLoader.
+        * @return array
         */
        protected static function getAllModules() {
                global $wgEnableJavaScriptTest;
index f5cd892..14461be 100644 (file)
@@ -58,6 +58,8 @@ class StructureTest extends MediaWikiTestCase {
 
        /**
         * Filter to remove testUnitTestFileNamesEndWithTest false positives.
+        * @param string $filename
+        * @return bool
         */
        public function filterSuites( $filename ) {
                return strpos( $filename, __DIR__ . '/../suites/' ) !== 0;
index bd82d21..d4a7bd3 100644 (file)
@@ -95,6 +95,7 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
 
        /**
         * Remove the dummy uploads directory
+        * @param string $dir
         */
        private function teardownUploadDir( $dir ) {
                if ( $this->keepUploads ) {
index 461ab87..61ebbf8 100644 (file)
@@ -65,7 +65,7 @@ require __DIR__ . '/../../../maintenance/Maintenance.php';
 
 class GenerateJqueryMsgData extends Maintenance {
 
-       static $keyToTestArgs = array(
+       public static $keyToTestArgs = array(
                'undelete_short' => array(
                        array( 0 ),
                        array( 1 ),
index afa57ee..906fd27 100644 (file)
@@ -40,7 +40,8 @@
                        'gender-msg-currentuser': '{{GENDER:|blue|pink|green}}',
 
                        'plural-msg': 'Found $1 {{PLURAL:$1|item|items}}',
-
+                       // See https://bugzilla.wikimedia.org/69993
+                       'plural-msg-explicit-forms-nested': 'Found {{PLURAL:$1|$1 results|0=no results in {{SITENAME}}|1=$1 result}}',
                        // Assume the grammar form grammar_case_foo is not valid in any language
                        'grammar-msg': 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}',
 
                );
        } );
 
-       QUnit.test( 'Plural', 3, function ( assert ) {
+       QUnit.test( 'Plural', 6, function ( assert ) {
                assert.equal( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
                assert.equal( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
                assert.equal( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
+               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' );
+               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in ' + mw.config.get( 'wgSiteName' ), 'Plural message with explicit plural forms, with nested {{SITENAME}}' );
+               assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' );
        } );
 
        QUnit.test( 'Gender', 15, function ( assert ) {
index dcab387..c3b9b3d 100644 (file)
                        'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1',
                        // Safari 5.0+
                        'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1',
-                       // Opera 11+
-                       'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
+                       // Opera 12+ (Presto-based)
+                       'Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00',
+                       'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.17',
+                       // Opera 15+ (Chromium-based)
+                       'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 OPR/15.0.1147.153',
+                       'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36 OPR/16.0.1196.62',
+                       'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 OPR/23.0.1522.75',
                        // Internet Explorer 7+
                        'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
                        'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)',
                        'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)',
                        'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
                        'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
-                       // Firefox < 3.6
+                       // Firefox < 3
                        'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2',
                        'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1',
+                       // Opera < 12
+                       'Mozilla/5.0 (Windows NT 5.0; U) Opera 7.54 [en]',
+                       'Opera/7.54 (Windows NT 5.0; U) [en]',
+                       'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.0',
+                       'Opera/8.0 (X11; Linux i686; U; cs)',
+                       'Opera/9.00 (X11; Linux i686; U; de)',
+                       'Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1',
+                       'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00',
+                       'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
+                       'Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62',
                        // BlackBerry < 6
                        'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
                        'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
index 6d94435..62dccbf 100644 (file)
  */
 interface ITestRecorder {
 
-       /** Called at beginning of the parser test run */
+       /**
+        * Called at beginning of the parser test run
+        */
        public function start();
 
-       /** Called after each test */
+       /**
+        * Called after each test
+        * @param string $test
+        * @param bool $result
+        */
        public function record( $test, $result );
 
-       /** Called before finishing the test run */
+       /**
+        * Called before finishing the test run
+        */
        public function report();
 
-       /** Called at the end of the parser test run */
+       /**
+        * Called at the end of the parser test run
+        */
        public function end();
 
 }
 
 class TestRecorder implements ITestRecorder {
-       var $parent;
-       var $term;
+       public $parent;
+       public $term;
 
        function __construct( $parent ) {
                $this->parent = $parent;
@@ -107,6 +117,7 @@ class DbTestPreviewer extends TestRecorder {
 
        /**
         * This should be called before the table prefix is changed
+        * @param TestRecorder $parent
         */
        function __construct( $parent ) {
                parent::__construct( $parent );
@@ -220,6 +231,9 @@ class DbTestPreviewer extends TestRecorder {
         * Returns a string giving information about when a test last had a status change.
         * Could help to track down when regressions were introduced, as distinct from tests
         * which have never passed (which are more change requests than regressions).
+        * @param string $testname
+        * @param string $after
+        * @return string
         */
        private function getTestStatusInfo( $testname, $after ) {
                // If we're looking at a test that has just been removed, then say when it first appeared.
@@ -295,7 +309,7 @@ class DbTestPreviewer extends TestRecorder {
 }
 
 class DbTestRecorder extends DbTestPreviewer {
-       var $version;
+       public $version;
 
        /**
         * Set up result recording; insert a record for the run with the date
@@ -423,7 +437,7 @@ class TestFileIterator implements Iterator {
                $input = $this->checkSection( array( 'wikitext', 'input' ), false );
                $result = $this->checkSection( array( 'html/php', 'html/*', 'html', 'result' ), false );
                // some tests have "with tidy" and "without tidy" variants
-               $tidy = $this->checkSection( array( 'html/php+tidy', 'html+tidy'), false );
+               $tidy = $this->checkSection( array( 'html/php+tidy', 'html+tidy' ), false );
                if ( $tidy != false ) {
                        if ( $this->nextSubTest == 0 ) {
                                if ( $result != false ) {
@@ -475,9 +489,11 @@ class TestFileIterator implements Iterator {
 
        function readNextTest() {
                # Run additional subtests of previous test
-               while ( $this->nextSubTest > 0 )
-                       if ( $this->setupCurrentTest() )
+               while ( $this->nextSubTest > 0 ) {
+                       if ( $this->setupCurrentTest() ) {
                                return true;
+                       }
+               }
 
                $this->clearSection();
                # Reset hooks for the delayed test object
@@ -554,8 +570,9 @@ class TestFileIterator implements Iterator {
                                if ( $this->section == 'end' ) {
                                        $this->checkSection( 'test' );
                                        do {
-                                               if ( $this->setupCurrentTest() )
+                                               if ( $this->setupCurrentTest() ) {
                                                        return true;
+                                               }
                                        } while ( $this->nextSubTest > 0 );
                                        # go on to next test (since this was disabled)
                                        $this->clearSection();
@@ -600,6 +617,7 @@ class TestFileIterator implements Iterator {
         * mentioned before closing this section
         * @param bool $fatal True iff an exception should be thrown if
         * the section is not found.
+        * @return bool|string
         */
        private function checkSection( $tokens, $fatal = true ) {
                if ( is_null( $this->section ) ) {
@@ -672,6 +690,7 @@ class DelayedParserTest {
         * Called whenever we actually want to run the hook.
         * Should be the case if we found the parserTest is not disabled
         * @param ParserTest|NewParserTest $parserTest
+        * @return bool
         */
        public function unleash( &$parserTest ) {
                if ( !( $parserTest instanceof ParserTest || $parserTest instanceof NewParserTest )     ) {