Merge "Don't include images/categories when behind a local interwiki prefix"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 9 Aug 2014 11:51:07 +0000 (11:51 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 9 Aug 2014 11:51:07 +0000 (11:51 +0000)
853 files changed:
.gitignore
RELEASE-NOTES-1.24
docs/hooks.txt
docs/kss/Makefile
docs/kss/scripts/kss-node-check.sh [new file with mode: 0755]
docs/kss/scripts/nodecheck.sh [deleted file]
docs/uidesign/confirmable.html [new file with mode: 0644]
images/README
includes/AutoLoader.php
includes/Cookie.php
includes/DefaultSettings.php
includes/Defines.php
includes/EditPage.php
includes/Html.php
includes/MediaWiki.php
includes/Message.php
includes/MimeMagic.php
includes/OutputPage.php
includes/Preferences.php
includes/Setup.php
includes/Skin.php
includes/SkinFallback.php [new file with mode: 0644]
includes/SkinTemplate.php
includes/Title.php
includes/User.php
includes/actions/FormAction.php
includes/actions/FormlessAction.php
includes/actions/ProtectAction.php
includes/actions/UnprotectAction.php [new file with mode: 0644]
includes/actions/UnwatchAction.php [new file with mode: 0644]
includes/actions/WatchAction.php
includes/api/ApiFormatBase.php
includes/api/ApiModuleManager.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQuerySearch.php
includes/api/ApiUndelete.php
includes/cache/LocalisationCache.php
includes/config/ConfigFactory.php
includes/content/JSONContent.php [new file with mode: 0644]
includes/content/JSONContentHandler.php [new file with mode: 0644]
includes/context/RequestContext.php
includes/db/Database.php
includes/exception/UserNotLoggedIn.php
includes/filebackend/FSFile.php
includes/filebackend/README
includes/filerepo/file/ArchivedFile.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/installer/Installer.php
includes/installer/i18n/ar.json
includes/installer/i18n/be-tarask.json
includes/installer/i18n/bto.json
includes/installer/i18n/da.json
includes/installer/i18n/it.json
includes/installer/i18n/ja.json
includes/installer/i18n/qqq.json
includes/installer/i18n/sc.json
includes/installer/i18n/sv.json
includes/installer/i18n/zh-hant.json
includes/libs/CSSMin.php
includes/libs/IEContentAnalyzer.php
includes/libs/lessc.inc.php
includes/media/MediaHandler.php
includes/media/SVG.php
includes/media/XMPInfo.php
includes/mime.info
includes/page/Article.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/password/PasswordFactory.php
includes/poolcounter/PoolCounterWork.php
includes/poolcounter/PoolCounterWorkViaCallback.php [new file with mode: 0644]
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderSiteModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/resourceloader/ResourceLoaderUserGroupsModule.php
includes/resourceloader/ResourceLoaderUserModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/revisiondelete/RevDelArchiveItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelArchiveList.php [new file with mode: 0644]
includes/revisiondelete/RevDelArchivedFileItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelArchivedFileList.php [new file with mode: 0644]
includes/revisiondelete/RevDelArchivedRevisionItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelFileItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelFileList.php [new file with mode: 0644]
includes/revisiondelete/RevDelLogItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelLogList.php [new file with mode: 0644]
includes/revisiondelete/RevDelRevisionItem.php [new file with mode: 0644]
includes/revisiondelete/RevDelRevisionList.php [new file with mode: 0644]
includes/revisiondelete/RevisionDelete.php [deleted file]
includes/search/SearchPostgres.php
includes/search/SearchResult.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/QueryPage.php
includes/specialpage/SpecialPage.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialCategories.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialExport.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialImport.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialListusers.php
includes/specials/SpecialLockdb.php
includes/specials/SpecialLog.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialMyLanguage.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageLanguage.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialProtectedtitles.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialResetTokens.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialTrackingCategories.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUnlockdb.php
includes/specials/SpecialUnusedimages.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWantedpages.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/specials/SpecialWithoutinterwiki.php
includes/upload/UploadBase.php
includes/upload/UploadStash.php
languages/Names.php
languages/i18n/ar.json
languages/i18n/arq.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/ca.json
languages/i18n/cdo.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/egl.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hif-latn.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/ilo.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/mdf.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/nan.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sc.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/szl.json
languages/i18n/ta.json
languages/i18n/th.json
languages/i18n/tr.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/wuu.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesArq.php
maintenance/archives/patch-mimesearch-indexes.sql
maintenance/dev/includes/router.php
maintenance/findMissingFiles.php [new file with mode: 0644]
maintenance/interwiki.list
maintenance/interwiki.sql
maintenance/jsduck/config.json
maintenance/refreshImageMetadata.php
maintenance/undelete.php
resources/Resources.php
resources/lib/oojs-ui/i18n/zh-hans.json
resources/lib/oojs-ui/oojs-ui-agora.css
resources/lib/oojs-ui/oojs-ui-apex.css
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/src/jquery/jquery.confirmable.css [new file with mode: 0644]
resources/src/jquery/jquery.confirmable.js [new file with mode: 0644]
resources/src/jquery/jquery.confirmable.mediawiki.js [new file with mode: 0644]
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.special/mediawiki.special.userlogin.login.css
resources/src/mediawiki.ui/components/checkbox.less
resources/src/mediawiki.ui/components/inputs.less
resources/src/mediawiki/mediawiki.content.json.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.notification.js
resources/src/startup.js
skins/.gitignore
skins/MonoBook/COPYING [deleted file]
skins/MonoBook/IE60Fixes.css [deleted file]
skins/MonoBook/IE70Fixes.css [deleted file]
skins/MonoBook/MonoBook.php [deleted file]
skins/MonoBook/MonoBookTemplate.php [deleted file]
skins/MonoBook/SkinMonoBook.php [deleted file]
skins/MonoBook/audio.png [deleted file]
skins/MonoBook/bullet.gif [deleted file]
skins/MonoBook/discussionitem_icon.gif [deleted file]
skins/MonoBook/document.png [deleted file]
skins/MonoBook/external-ltr.png [deleted file]
skins/MonoBook/external-rtl.png [deleted file]
skins/MonoBook/file_icon.gif [deleted file]
skins/MonoBook/headbg.jpg [deleted file]
skins/MonoBook/i18n/aln.json [deleted file]
skins/MonoBook/i18n/an.json [deleted file]
skins/MonoBook/i18n/ar.json [deleted file]
skins/MonoBook/i18n/arz.json [deleted file]
skins/MonoBook/i18n/ast.json [deleted file]
skins/MonoBook/i18n/az.json [deleted file]
skins/MonoBook/i18n/bcc.json [deleted file]
skins/MonoBook/i18n/bcl.json [deleted file]
skins/MonoBook/i18n/be-tarask.json [deleted file]
skins/MonoBook/i18n/be.json [deleted file]
skins/MonoBook/i18n/bg.json [deleted file]
skins/MonoBook/i18n/bn.json [deleted file]
skins/MonoBook/i18n/br.json [deleted file]
skins/MonoBook/i18n/bs.json [deleted file]
skins/MonoBook/i18n/ca.json [deleted file]
skins/MonoBook/i18n/ce.json [deleted file]
skins/MonoBook/i18n/ckb.json [deleted file]
skins/MonoBook/i18n/crh-cyrl.json [deleted file]
skins/MonoBook/i18n/crh-latn.json [deleted file]
skins/MonoBook/i18n/cs.json [deleted file]
skins/MonoBook/i18n/da.json [deleted file]
skins/MonoBook/i18n/de.json [deleted file]
skins/MonoBook/i18n/diq.json [deleted file]
skins/MonoBook/i18n/dsb.json [deleted file]
skins/MonoBook/i18n/el.json [deleted file]
skins/MonoBook/i18n/en.json [deleted file]
skins/MonoBook/i18n/eo.json [deleted file]
skins/MonoBook/i18n/es.json [deleted file]
skins/MonoBook/i18n/et.json [deleted file]
skins/MonoBook/i18n/eu.json [deleted file]
skins/MonoBook/i18n/ext.json [deleted file]
skins/MonoBook/i18n/fa.json [deleted file]
skins/MonoBook/i18n/fi.json [deleted file]
skins/MonoBook/i18n/fr.json [deleted file]
skins/MonoBook/i18n/frp.json [deleted file]
skins/MonoBook/i18n/fur.json [deleted file]
skins/MonoBook/i18n/ga.json [deleted file]
skins/MonoBook/i18n/gan-hans.json [deleted file]
skins/MonoBook/i18n/gan-hant.json [deleted file]
skins/MonoBook/i18n/gd.json [deleted file]
skins/MonoBook/i18n/gl.json [deleted file]
skins/MonoBook/i18n/hak.json [deleted file]
skins/MonoBook/i18n/he.json [deleted file]
skins/MonoBook/i18n/hi.json [deleted file]
skins/MonoBook/i18n/hr.json [deleted file]
skins/MonoBook/i18n/hsb.json [deleted file]
skins/MonoBook/i18n/hu.json [deleted file]
skins/MonoBook/i18n/hy.json [deleted file]
skins/MonoBook/i18n/ia.json [deleted file]
skins/MonoBook/i18n/id.json [deleted file]
skins/MonoBook/i18n/ilo.json [deleted file]
skins/MonoBook/i18n/is.json [deleted file]
skins/MonoBook/i18n/it.json [deleted file]
skins/MonoBook/i18n/ja.json [deleted file]
skins/MonoBook/i18n/ka.json [deleted file]
skins/MonoBook/i18n/kk-arab.json [deleted file]
skins/MonoBook/i18n/kk-cyrl.json [deleted file]
skins/MonoBook/i18n/kk-latn.json [deleted file]
skins/MonoBook/i18n/km.json [deleted file]
skins/MonoBook/i18n/ko.json [deleted file]
skins/MonoBook/i18n/krc.json [deleted file]
skins/MonoBook/i18n/ksh.json [deleted file]
skins/MonoBook/i18n/ku-latn.json [deleted file]
skins/MonoBook/i18n/lb.json [deleted file]
skins/MonoBook/i18n/lt.json [deleted file]
skins/MonoBook/i18n/lzh.json [deleted file]
skins/MonoBook/i18n/mg.json [deleted file]
skins/MonoBook/i18n/min.json [deleted file]
skins/MonoBook/i18n/mk.json [deleted file]
skins/MonoBook/i18n/ml.json [deleted file]
skins/MonoBook/i18n/mr.json [deleted file]
skins/MonoBook/i18n/ms.json [deleted file]
skins/MonoBook/i18n/mt.json [deleted file]
skins/MonoBook/i18n/mwl.json [deleted file]
skins/MonoBook/i18n/nb.json [deleted file]
skins/MonoBook/i18n/nds-nl.json [deleted file]
skins/MonoBook/i18n/nds.json [deleted file]
skins/MonoBook/i18n/ne.json [deleted file]
skins/MonoBook/i18n/new.json [deleted file]
skins/MonoBook/i18n/nl.json [deleted file]
skins/MonoBook/i18n/nn.json [deleted file]
skins/MonoBook/i18n/nv.json [deleted file]
skins/MonoBook/i18n/oc.json [deleted file]
skins/MonoBook/i18n/os.json [deleted file]
skins/MonoBook/i18n/pa.json [deleted file]
skins/MonoBook/i18n/pam.json [deleted file]
skins/MonoBook/i18n/pdt.json [deleted file]
skins/MonoBook/i18n/pl.json [deleted file]
skins/MonoBook/i18n/pms.json [deleted file]
skins/MonoBook/i18n/ps.json [deleted file]
skins/MonoBook/i18n/pt-br.json [deleted file]
skins/MonoBook/i18n/pt.json [deleted file]
skins/MonoBook/i18n/qqq.json [deleted file]
skins/MonoBook/i18n/qu.json [deleted file]
skins/MonoBook/i18n/rm.json [deleted file]
skins/MonoBook/i18n/ro.json [deleted file]
skins/MonoBook/i18n/roa-tara.json [deleted file]
skins/MonoBook/i18n/ru.json [deleted file]
skins/MonoBook/i18n/sa.json [deleted file]
skins/MonoBook/i18n/sah.json [deleted file]
skins/MonoBook/i18n/scn.json [deleted file]
skins/MonoBook/i18n/si.json [deleted file]
skins/MonoBook/i18n/sk.json [deleted file]
skins/MonoBook/i18n/sq.json [deleted file]
skins/MonoBook/i18n/sr-ec.json [deleted file]
skins/MonoBook/i18n/sr-el.json [deleted file]
skins/MonoBook/i18n/stq.json [deleted file]
skins/MonoBook/i18n/su.json [deleted file]
skins/MonoBook/i18n/sv.json [deleted file]
skins/MonoBook/i18n/te.json [deleted file]
skins/MonoBook/i18n/th.json [deleted file]
skins/MonoBook/i18n/tl.json [deleted file]
skins/MonoBook/i18n/tr.json [deleted file]
skins/MonoBook/i18n/tt-cyrl.json [deleted file]
skins/MonoBook/i18n/tt-latn.json [deleted file]
skins/MonoBook/i18n/tyv.json [deleted file]
skins/MonoBook/i18n/ug-arab.json [deleted file]
skins/MonoBook/i18n/uk.json [deleted file]
skins/MonoBook/i18n/vep.json [deleted file]
skins/MonoBook/i18n/vi.json [deleted file]
skins/MonoBook/i18n/vmf.json [deleted file]
skins/MonoBook/i18n/vo.json [deleted file]
skins/MonoBook/i18n/vro.json [deleted file]
skins/MonoBook/i18n/wa.json [deleted file]
skins/MonoBook/i18n/wo.json [deleted file]
skins/MonoBook/i18n/yi.json [deleted file]
skins/MonoBook/i18n/yue.json [deleted file]
skins/MonoBook/i18n/zh-hans.json [deleted file]
skins/MonoBook/i18n/zh-hant.json [deleted file]
skins/MonoBook/link_icon.gif [deleted file]
skins/MonoBook/lock_icon.gif [deleted file]
skins/MonoBook/magnify-clip.png [deleted file]
skins/MonoBook/mail_icon.gif [deleted file]
skins/MonoBook/main.css [deleted file]
skins/MonoBook/news_icon.png [deleted file]
skins/MonoBook/required.gif [deleted file]
skins/MonoBook/user.gif [deleted file]
skins/MonoBook/video.png [deleted file]
skins/MonoBook/wiki-indexed.png [deleted file]
skins/MonoBook/wiki.png [deleted file]
skins/Vector/COPYING [deleted file]
skins/Vector/SkinVector.php [deleted file]
skins/Vector/Vector.php [deleted file]
skins/Vector/VectorTemplate.php [deleted file]
skins/Vector/collapsibleTabs.js [deleted file]
skins/Vector/components/animations.less [deleted file]
skins/Vector/components/common.less [deleted file]
skins/Vector/components/externalLinks.less [deleted file]
skins/Vector/components/footer.less [deleted file]
skins/Vector/components/navigation.less [deleted file]
skins/Vector/components/personalMenu.less [deleted file]
skins/Vector/components/search.less [deleted file]
skins/Vector/components/tabs.less [deleted file]
skins/Vector/components/watchstar.less [deleted file]
skins/Vector/csshover.htc [deleted file]
skins/Vector/csshover.min.htc [deleted file]
skins/Vector/i18n/ab.json [deleted file]
skins/Vector/i18n/ace.json [deleted file]
skins/Vector/i18n/ady-cyrl.json [deleted file]
skins/Vector/i18n/aeb.json [deleted file]
skins/Vector/i18n/af.json [deleted file]
skins/Vector/i18n/aln.json [deleted file]
skins/Vector/i18n/am.json [deleted file]
skins/Vector/i18n/an.json [deleted file]
skins/Vector/i18n/ang.json [deleted file]
skins/Vector/i18n/ar.json [deleted file]
skins/Vector/i18n/arc.json [deleted file]
skins/Vector/i18n/arn.json [deleted file]
skins/Vector/i18n/aro.json [deleted file]
skins/Vector/i18n/arq.json [deleted file]
skins/Vector/i18n/ary.json [deleted file]
skins/Vector/i18n/arz.json [deleted file]
skins/Vector/i18n/as.json [deleted file]
skins/Vector/i18n/ase.json [deleted file]
skins/Vector/i18n/ast.json [deleted file]
skins/Vector/i18n/av.json [deleted file]
skins/Vector/i18n/avk.json [deleted file]
skins/Vector/i18n/az.json [deleted file]
skins/Vector/i18n/azb.json [deleted file]
skins/Vector/i18n/ba.json [deleted file]
skins/Vector/i18n/ban.json [deleted file]
skins/Vector/i18n/bar.json [deleted file]
skins/Vector/i18n/bbc-latn.json [deleted file]
skins/Vector/i18n/bcc.json [deleted file]
skins/Vector/i18n/bcl.json [deleted file]
skins/Vector/i18n/be-tarask.json [deleted file]
skins/Vector/i18n/be.json [deleted file]
skins/Vector/i18n/bew.json [deleted file]
skins/Vector/i18n/bg.json [deleted file]
skins/Vector/i18n/bho.json [deleted file]
skins/Vector/i18n/bi.json [deleted file]
skins/Vector/i18n/bjn.json [deleted file]
skins/Vector/i18n/bm.json [deleted file]
skins/Vector/i18n/bn.json [deleted file]
skins/Vector/i18n/bo.json [deleted file]
skins/Vector/i18n/bpy.json [deleted file]
skins/Vector/i18n/br.json [deleted file]
skins/Vector/i18n/brh.json [deleted file]
skins/Vector/i18n/bs.json [deleted file]
skins/Vector/i18n/bto.json [deleted file]
skins/Vector/i18n/bug.json [deleted file]
skins/Vector/i18n/bxr.json [deleted file]
skins/Vector/i18n/ca.json [deleted file]
skins/Vector/i18n/cdo.json [deleted file]
skins/Vector/i18n/ce.json [deleted file]
skins/Vector/i18n/ceb.json [deleted file]
skins/Vector/i18n/ckb.json [deleted file]
skins/Vector/i18n/co.json [deleted file]
skins/Vector/i18n/cps.json [deleted file]
skins/Vector/i18n/crh-cyrl.json [deleted file]
skins/Vector/i18n/crh-latn.json [deleted file]
skins/Vector/i18n/cs.json [deleted file]
skins/Vector/i18n/csb.json [deleted file]
skins/Vector/i18n/cu.json [deleted file]
skins/Vector/i18n/cv.json [deleted file]
skins/Vector/i18n/cy.json [deleted file]
skins/Vector/i18n/da.json [deleted file]
skins/Vector/i18n/de.json [deleted file]
skins/Vector/i18n/diq.json [deleted file]
skins/Vector/i18n/dsb.json [deleted file]
skins/Vector/i18n/dtp.json [deleted file]
skins/Vector/i18n/dv.json [deleted file]
skins/Vector/i18n/ee.json [deleted file]
skins/Vector/i18n/egl.json [deleted file]
skins/Vector/i18n/el.json [deleted file]
skins/Vector/i18n/en.json [deleted file]
skins/Vector/i18n/eo.json [deleted file]
skins/Vector/i18n/es-formal.json [deleted file]
skins/Vector/i18n/es.json [deleted file]
skins/Vector/i18n/esu.json [deleted file]
skins/Vector/i18n/et.json [deleted file]
skins/Vector/i18n/eu.json [deleted file]
skins/Vector/i18n/ext.json [deleted file]
skins/Vector/i18n/fa.json [deleted file]
skins/Vector/i18n/ff.json [deleted file]
skins/Vector/i18n/fi.json [deleted file]
skins/Vector/i18n/fit.json [deleted file]
skins/Vector/i18n/fo.json [deleted file]
skins/Vector/i18n/fr.json [deleted file]
skins/Vector/i18n/frc.json [deleted file]
skins/Vector/i18n/frp.json [deleted file]
skins/Vector/i18n/frr.json [deleted file]
skins/Vector/i18n/fur.json [deleted file]
skins/Vector/i18n/fy.json [deleted file]
skins/Vector/i18n/ga.json [deleted file]
skins/Vector/i18n/gag.json [deleted file]
skins/Vector/i18n/gan-hans.json [deleted file]
skins/Vector/i18n/gan-hant.json [deleted file]
skins/Vector/i18n/gd.json [deleted file]
skins/Vector/i18n/gl.json [deleted file]
skins/Vector/i18n/gom-deva.json [deleted file]
skins/Vector/i18n/gom-latn.json [deleted file]
skins/Vector/i18n/grc.json [deleted file]
skins/Vector/i18n/gsw.json [deleted file]
skins/Vector/i18n/gu.json [deleted file]
skins/Vector/i18n/guc.json [deleted file]
skins/Vector/i18n/gv.json [deleted file]
skins/Vector/i18n/ha.json [deleted file]
skins/Vector/i18n/hak.json [deleted file]
skins/Vector/i18n/haw.json [deleted file]
skins/Vector/i18n/he.json [deleted file]
skins/Vector/i18n/hi.json [deleted file]
skins/Vector/i18n/hif-latn.json [deleted file]
skins/Vector/i18n/hil.json [deleted file]
skins/Vector/i18n/hr.json [deleted file]
skins/Vector/i18n/hrx.json [deleted file]
skins/Vector/i18n/hsb.json [deleted file]
skins/Vector/i18n/hsn.json [deleted file]
skins/Vector/i18n/ht.json [deleted file]
skins/Vector/i18n/hu-formal.json [deleted file]
skins/Vector/i18n/hu.json [deleted file]
skins/Vector/i18n/hy.json [deleted file]
skins/Vector/i18n/ia.json [deleted file]
skins/Vector/i18n/id.json [deleted file]
skins/Vector/i18n/ie.json [deleted file]
skins/Vector/i18n/ig.json [deleted file]
skins/Vector/i18n/ike-latn.json [deleted file]
skins/Vector/i18n/ilo.json [deleted file]
skins/Vector/i18n/inh.json [deleted file]
skins/Vector/i18n/io.json [deleted file]
skins/Vector/i18n/is.json [deleted file]
skins/Vector/i18n/it.json [deleted file]
skins/Vector/i18n/izh.json [deleted file]
skins/Vector/i18n/ja.json [deleted file]
skins/Vector/i18n/jam.json [deleted file]
skins/Vector/i18n/jbo.json [deleted file]
skins/Vector/i18n/jv.json [deleted file]
skins/Vector/i18n/ka.json [deleted file]
skins/Vector/i18n/kaa.json [deleted file]
skins/Vector/i18n/kab.json [deleted file]
skins/Vector/i18n/kbd-cyrl.json [deleted file]
skins/Vector/i18n/kg.json [deleted file]
skins/Vector/i18n/khw.json [deleted file]
skins/Vector/i18n/ki.json [deleted file]
skins/Vector/i18n/kiu.json [deleted file]
skins/Vector/i18n/kk-cyrl.json [deleted file]
skins/Vector/i18n/kl.json [deleted file]
skins/Vector/i18n/km.json [deleted file]
skins/Vector/i18n/kn.json [deleted file]
skins/Vector/i18n/ko.json [deleted file]
skins/Vector/i18n/koi.json [deleted file]
skins/Vector/i18n/krc.json [deleted file]
skins/Vector/i18n/kri.json [deleted file]
skins/Vector/i18n/ks-arab.json [deleted file]
skins/Vector/i18n/ksh.json [deleted file]
skins/Vector/i18n/ku-latn.json [deleted file]
skins/Vector/i18n/kv.json [deleted file]
skins/Vector/i18n/kw.json [deleted file]
skins/Vector/i18n/ky.json [deleted file]
skins/Vector/i18n/la.json [deleted file]
skins/Vector/i18n/lad.json [deleted file]
skins/Vector/i18n/lb.json [deleted file]
skins/Vector/i18n/lez.json [deleted file]
skins/Vector/i18n/lg.json [deleted file]
skins/Vector/i18n/li.json [deleted file]
skins/Vector/i18n/lij.json [deleted file]
skins/Vector/i18n/liv.json [deleted file]
skins/Vector/i18n/lmo.json [deleted file]
skins/Vector/i18n/ln.json [deleted file]
skins/Vector/i18n/lrc.json [deleted file]
skins/Vector/i18n/lt.json [deleted file]
skins/Vector/i18n/ltg.json [deleted file]
skins/Vector/i18n/lus.json [deleted file]
skins/Vector/i18n/luz.json [deleted file]
skins/Vector/i18n/lv.json [deleted file]
skins/Vector/i18n/lzh.json [deleted file]
skins/Vector/i18n/lzz.json [deleted file]
skins/Vector/i18n/mai.json [deleted file]
skins/Vector/i18n/map-bms.json [deleted file]
skins/Vector/i18n/mdf.json [deleted file]
skins/Vector/i18n/mg.json [deleted file]
skins/Vector/i18n/mhr.json [deleted file]
skins/Vector/i18n/mi.json [deleted file]
skins/Vector/i18n/mic.json [deleted file]
skins/Vector/i18n/min.json [deleted file]
skins/Vector/i18n/mk.json [deleted file]
skins/Vector/i18n/ml.json [deleted file]
skins/Vector/i18n/mn.json [deleted file]
skins/Vector/i18n/mnc.json [deleted file]
skins/Vector/i18n/mr.json [deleted file]
skins/Vector/i18n/mrj.json [deleted file]
skins/Vector/i18n/ms.json [deleted file]
skins/Vector/i18n/mt.json [deleted file]
skins/Vector/i18n/mui.json [deleted file]
skins/Vector/i18n/my.json [deleted file]
skins/Vector/i18n/myv.json [deleted file]
skins/Vector/i18n/mzn.json [deleted file]
skins/Vector/i18n/nah.json [deleted file]
skins/Vector/i18n/nan.json [deleted file]
skins/Vector/i18n/nap.json [deleted file]
skins/Vector/i18n/nb.json [deleted file]
skins/Vector/i18n/nds-nl.json [deleted file]
skins/Vector/i18n/nds.json [deleted file]
skins/Vector/i18n/ne.json [deleted file]
skins/Vector/i18n/new.json [deleted file]
skins/Vector/i18n/nl.json [deleted file]
skins/Vector/i18n/nn.json [deleted file]
skins/Vector/i18n/nov.json [deleted file]
skins/Vector/i18n/nrm.json [deleted file]
skins/Vector/i18n/nso.json [deleted file]
skins/Vector/i18n/oc.json [deleted file]
skins/Vector/i18n/or.json [deleted file]
skins/Vector/i18n/os.json [deleted file]
skins/Vector/i18n/pa.json [deleted file]
skins/Vector/i18n/pam.json [deleted file]
skins/Vector/i18n/pbb.json [deleted file]
skins/Vector/i18n/pcd.json [deleted file]
skins/Vector/i18n/pdc.json [deleted file]
skins/Vector/i18n/pfl.json [deleted file]
skins/Vector/i18n/pi.json [deleted file]
skins/Vector/i18n/pih.json [deleted file]
skins/Vector/i18n/pl.json [deleted file]
skins/Vector/i18n/pms.json [deleted file]
skins/Vector/i18n/pnb.json [deleted file]
skins/Vector/i18n/pnt.json [deleted file]
skins/Vector/i18n/ppl.json [deleted file]
skins/Vector/i18n/prg.json [deleted file]
skins/Vector/i18n/ps.json [deleted file]
skins/Vector/i18n/pt-br.json [deleted file]
skins/Vector/i18n/pt.json [deleted file]
skins/Vector/i18n/qqq.json [deleted file]
skins/Vector/i18n/qu.json [deleted file]
skins/Vector/i18n/qug.json [deleted file]
skins/Vector/i18n/rap.json [deleted file]
skins/Vector/i18n/rgn.json [deleted file]
skins/Vector/i18n/rif.json [deleted file]
skins/Vector/i18n/rm.json [deleted file]
skins/Vector/i18n/rmf.json [deleted file]
skins/Vector/i18n/ro.json [deleted file]
skins/Vector/i18n/roa-tara.json [deleted file]
skins/Vector/i18n/ru.json [deleted file]
skins/Vector/i18n/rue.json [deleted file]
skins/Vector/i18n/rup.json [deleted file]
skins/Vector/i18n/rw.json [deleted file]
skins/Vector/i18n/ryu.json [deleted file]
skins/Vector/i18n/sa.json [deleted file]
skins/Vector/i18n/sah.json [deleted file]
skins/Vector/i18n/sat.json [deleted file]
skins/Vector/i18n/saz.json [deleted file]
skins/Vector/i18n/sc.json [deleted file]
skins/Vector/i18n/scn.json [deleted file]
skins/Vector/i18n/sco.json [deleted file]
skins/Vector/i18n/sd.json [deleted file]
skins/Vector/i18n/sdc.json [deleted file]
skins/Vector/i18n/sdh.json [deleted file]
skins/Vector/i18n/se.json [deleted file]
skins/Vector/i18n/sg.json [deleted file]
skins/Vector/i18n/sgs.json [deleted file]
skins/Vector/i18n/sh.json [deleted file]
skins/Vector/i18n/shi.json [deleted file]
skins/Vector/i18n/shn.json [deleted file]
skins/Vector/i18n/si.json [deleted file]
skins/Vector/i18n/sk.json [deleted file]
skins/Vector/i18n/sl.json [deleted file]
skins/Vector/i18n/sli.json [deleted file]
skins/Vector/i18n/sly.json [deleted file]
skins/Vector/i18n/so.json [deleted file]
skins/Vector/i18n/sq.json [deleted file]
skins/Vector/i18n/sr-ec.json [deleted file]
skins/Vector/i18n/sr-el.json [deleted file]
skins/Vector/i18n/ss.json [deleted file]
skins/Vector/i18n/stq.json [deleted file]
skins/Vector/i18n/su.json [deleted file]
skins/Vector/i18n/sv.json [deleted file]
skins/Vector/i18n/sw.json [deleted file]
skins/Vector/i18n/szl.json [deleted file]
skins/Vector/i18n/ta.json [deleted file]
skins/Vector/i18n/tcy.json [deleted file]
skins/Vector/i18n/te.json [deleted file]
skins/Vector/i18n/tet.json [deleted file]
skins/Vector/i18n/tg-cyrl.json [deleted file]
skins/Vector/i18n/tg-latn.json [deleted file]
skins/Vector/i18n/th.json [deleted file]
skins/Vector/i18n/tk.json [deleted file]
skins/Vector/i18n/tl.json [deleted file]
skins/Vector/i18n/tly.json [deleted file]
skins/Vector/i18n/tpi.json [deleted file]
skins/Vector/i18n/tr.json [deleted file]
skins/Vector/i18n/tru.json [deleted file]
skins/Vector/i18n/ts.json [deleted file]
skins/Vector/i18n/tt-cyrl.json [deleted file]
skins/Vector/i18n/tt-latn.json [deleted file]
skins/Vector/i18n/tyv.json [deleted file]
skins/Vector/i18n/tzm.json [deleted file]
skins/Vector/i18n/udm.json [deleted file]
skins/Vector/i18n/ug-arab.json [deleted file]
skins/Vector/i18n/uk.json [deleted file]
skins/Vector/i18n/ur.json [deleted file]
skins/Vector/i18n/uz.json [deleted file]
skins/Vector/i18n/vec.json [deleted file]
skins/Vector/i18n/vep.json [deleted file]
skins/Vector/i18n/vi.json [deleted file]
skins/Vector/i18n/vls.json [deleted file]
skins/Vector/i18n/vmf.json [deleted file]
skins/Vector/i18n/vo.json [deleted file]
skins/Vector/i18n/vot.json [deleted file]
skins/Vector/i18n/vro.json [deleted file]
skins/Vector/i18n/wa.json [deleted file]
skins/Vector/i18n/war.json [deleted file]
skins/Vector/i18n/wo.json [deleted file]
skins/Vector/i18n/wuu.json [deleted file]
skins/Vector/i18n/xal.json [deleted file]
skins/Vector/i18n/xh.json [deleted file]
skins/Vector/i18n/xmf.json [deleted file]
skins/Vector/i18n/yi.json [deleted file]
skins/Vector/i18n/yo.json [deleted file]
skins/Vector/i18n/yue.json [deleted file]
skins/Vector/i18n/za.json [deleted file]
skins/Vector/i18n/zea.json [deleted file]
skins/Vector/i18n/zh-hans.json [deleted file]
skins/Vector/i18n/zh-hant.json [deleted file]
skins/Vector/images/arrow-collapsed-ltr.png [deleted file]
skins/Vector/images/arrow-collapsed-ltr.svg [deleted file]
skins/Vector/images/arrow-collapsed-rtl.png [deleted file]
skins/Vector/images/arrow-collapsed-rtl.svg [deleted file]
skins/Vector/images/arrow-down-focus-icon.png [deleted file]
skins/Vector/images/arrow-down-focus-icon.svg [deleted file]
skins/Vector/images/arrow-down-icon.png [deleted file]
skins/Vector/images/arrow-down-icon.svg [deleted file]
skins/Vector/images/arrow-expanded.png [deleted file]
skins/Vector/images/arrow-expanded.svg [deleted file]
skins/Vector/images/bullet-icon.png [deleted file]
skins/Vector/images/external-link-ltr-icon.png [deleted file]
skins/Vector/images/external-link-ltr-icon.svg [deleted file]
skins/Vector/images/external-link-rtl-icon.png [deleted file]
skins/Vector/images/external-link-rtl-icon.svg [deleted file]
skins/Vector/images/link-icon.png [deleted file]
skins/Vector/images/magnify-clip.png [deleted file]
skins/Vector/images/page-fade.png [deleted file]
skins/Vector/images/portal-break-ltr.png [deleted file]
skins/Vector/images/portal-break-rtl.png [deleted file]
skins/Vector/images/portal-break.png [deleted file]
skins/Vector/images/preferences/break.png [deleted file]
skins/Vector/images/preferences/fade.png [deleted file]
skins/Vector/images/search-fade.png [deleted file]
skins/Vector/images/search-ltr.png [deleted file]
skins/Vector/images/search-ltr.svg [deleted file]
skins/Vector/images/search-rtl.png [deleted file]
skins/Vector/images/search-rtl.svg [deleted file]
skins/Vector/images/tab-break.png [deleted file]
skins/Vector/images/tab-current-fade.png [deleted file]
skins/Vector/images/tab-normal-fade.png [deleted file]
skins/Vector/images/unwatch-icon-hl.png [deleted file]
skins/Vector/images/unwatch-icon-hl.svg [deleted file]
skins/Vector/images/unwatch-icon.png [deleted file]
skins/Vector/images/unwatch-icon.svg [deleted file]
skins/Vector/images/user-icon.png [deleted file]
skins/Vector/images/user-icon.svg [deleted file]
skins/Vector/images/watch-icon-hl.png [deleted file]
skins/Vector/images/watch-icon-hl.svg [deleted file]
skins/Vector/images/watch-icon-loading.png [deleted file]
skins/Vector/images/watch-icon-loading.svg [deleted file]
skins/Vector/images/watch-icon.png [deleted file]
skins/Vector/images/watch-icon.svg [deleted file]
skins/Vector/screen-hd.less [deleted file]
skins/Vector/screen.less [deleted file]
skins/Vector/skinStyles/jquery.tipsy.less [deleted file]
skins/Vector/skinStyles/jquery.ui/images/close.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/titlebar-fade.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-anim_basic_16x16.gif [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_15_cd0a0a_40x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_70_000000_40x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_ffffff_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-bg_inset-hard_100_f0f0f0_1x100.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_2694e8_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_2e83ff_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_3d80b3_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_666666_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_72a7cf_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/images/ui-icons_ffffff_256x240.png [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.accordion.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.autocomplete.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.button.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.core.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.datepicker.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.dialog.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.progressbar.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.resizable.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.selectable.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.slider.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.tabs.css [deleted file]
skins/Vector/skinStyles/jquery.ui/jquery.ui.theme.css [deleted file]
skins/Vector/skinStyles/mediawiki.notification.less [deleted file]
skins/Vector/skinStyles/mediawiki.special.less [deleted file]
skins/Vector/skinStyles/mediawiki.special.preferences.less [deleted file]
skins/Vector/variables.less [deleted file]
skins/Vector/vector.js [deleted file]
skins/common/IEFixes.js [deleted file]
skins/common/wikibits.js
tests/TestsAutoLoader.php
tests/phpunit/LessFileCompilationTest.php
tests/phpunit/MediaWikiPHPUnitCommand.php [deleted file]
tests/phpunit/MediaWikiPHPUnitTestListener.php
tests/phpunit/MediaWikiPasswordTestCase.php [deleted file]
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/MimeMagicTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/SpecialPageTest.php
tests/phpunit/includes/api/ApiModuleManagerTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiRevisionDeleteTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiTestCaseUpload.php
tests/phpunit/includes/api/PrefixUniquenessTest.php
tests/phpunit/includes/config/ConfigFactoryTest.php
tests/phpunit/includes/content/JSONContentTest.php [new file with mode: 0644]
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/filerepo/StoreBatchTest.php
tests/phpunit/includes/jobqueue/JobQueueTest.php
tests/phpunit/includes/objectcache/BagOStuffTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/password/BcryptPasswordTest.php
tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
tests/phpunit/includes/password/PasswordTestCase.php [new file with mode: 0644]
tests/phpunit/includes/password/Pbkdf2PasswordTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderLESSTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderStartupModuleTest.php
tests/phpunit/includes/specials/SpecialMIMESearchTest.php
tests/phpunit/languages/LanguageArqTest.php [new file with mode: 0644]
tests/phpunit/phpunit.php
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/startup.test.js
thumb.php

index 0351cf5..93c429f 100644 (file)
@@ -41,6 +41,7 @@ sftp-config.json
 
 # Building & testing
 node_modules/
+/tests/phpunit/phpunit.phar
 
 # Composer
 /vendor
index a65d7e7..3fa491c 100644 (file)
@@ -45,6 +45,8 @@ production.
 * 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.
 
 === New features in 1.24 ===
 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
@@ -144,6 +146,10 @@ production.
   the $wgResourceModuleSkinStyles global. See the Vector skin for examples.
 * (bug 4488) There is now a preference to watch pages where the user has
   rollbacked an edit by default.
+* (bug 15484) Users will now be redirected to the login page when they need to
+  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 fixes in 1.24 ===
 * (bug 49116) Footer copyright notice is now always displayed in user language
@@ -199,6 +205,14 @@ production.
 * (bug 60734) Actions that use ApiPageSet (e.g. purge, watch,
   setnotificationtimestamp) will now include continuation information when
   using a generator.
+* $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.
+  A "module spec" is an associative array containing at least the 'class' key
+  for the module's class, and optionally a 'factory' key for the factory function
+  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.
 
 === Languages updated in 1.24 ===
 
@@ -294,6 +308,10 @@ 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.
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
index 25f5ad8..4a469b6 100644 (file)
@@ -2148,7 +2148,7 @@ $oldSessionID: old session id
 $newSessionID: new session id
 
 'ResourceLoaderGetConfigVars': Called at the end of
-ResourceLoaderStartUpModule::getConfig(). Use this to export static
+ResourceLoaderStartUpModule::getConfigSettings(). Use this to export static
 configuration variables to JavaScript. Things that depend on the current page
 or request state must be added through MakeGlobalVariablesScript instead.
 &$vars: array( variable name => value )
@@ -2734,11 +2734,11 @@ string &$error: output: message key for message to show if upload canceled by
   returning false. May also be an array, where the first element is the message
   key and the remaining elements are used as parameters to the message.
 
-'UploadVerifyFile': extra file verification, based on mime type, etc. Preferred
+'UploadVerifyFile': extra file verification, based on MIME type, etc. Preferred
 in most cases over UploadVerification.
 object $upload: an instance of UploadBase, with all info about the upload
-string $mime: The uploaded file's mime type, as detected by MediaWiki. Handlers
-  will typically only apply for specific mime types.
+string $mime: The uploaded file's MIME type, as detected by MediaWiki. Handlers
+  will typically only apply for specific MIME types.
 object &$error: output: true if the file is valid. Otherwise, an indexed array
   representing the problem with the file, where the first element is the message
   key and the remaining elements are used as parameters to the message.
index 7d2ee3b..ff735d5 100644 (file)
@@ -1,8 +1,6 @@
 MEDIAWIKI_LOAD_URL ?= http://localhost/w/load.php
 
-kss: nodecheck
-# FIXME: Use more up-to-date Ruby version
-
+kss: kssnodecheck
 # Generates CSS of mediawiki.ui and mediawiki.ui.button using ResourceLoader, then applies it to the
 # KSS style guide
        $(eval KSS_RL_TMP := $(shell mktemp /tmp/tmp.XXXXXXXXXX))
@@ -15,5 +13,5 @@ kssopen: kss
        @command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/static/index.html; exit 0; }
        @xdg-open ${PWD}/static/index.html
 
-nodecheck:
-       @scripts/nodecheck.sh
+kssnodecheck:
+       @scripts/kss-node-check.sh
diff --git a/docs/kss/scripts/kss-node-check.sh b/docs/kss/scripts/kss-node-check.sh
new file mode 100755 (executable)
index 0000000..84ee1c4
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+if command -v npm > /dev/null ; then
+  npm install
+else
+  # If npm isn't installed, but kss-node is, exit normally.
+  # This allows setting it up on one machine, and running it on
+  # another (e.g. Tools Labs execution nodes) that doesn't have npm
+  # installed.  However, "npm install" still needs to be run
+  # occasionally to keep kss updated.
+
+  KSS_NODE="${BASH_SOURCE%/*}/../node_modules/.bin/kss-node"
+  if ! [ -x "$KSS_NODE" ] ; then
+    echo "Neither kss-node nor npm are installed."
+    echo "To install npm, see http://nodejs.org/"
+    echo "When npm is installed, the Makefile can automatically"
+    echo "install kss-node."
+    exit 1
+  fi
+fi
diff --git a/docs/kss/scripts/nodecheck.sh b/docs/kss/scripts/nodecheck.sh
deleted file mode 100755 (executable)
index 3ee0f83..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-if command -v npm > /dev/null ; then
-  npm install
-else
-  echo "You need to install Node.JS!"
-  echo "See http://nodejs.org/"
-  exit 1
-fi
diff --git a/docs/uidesign/confirmable.html b/docs/uidesign/confirmable.html
new file mode 100644 (file)
index 0000000..d035821
--- /dev/null
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+       <meta charset="utf-8">
+       <!--
+       The jquery.confirmable module uses some additional modules and files
+       for internationalization support. These are omitted here for simplicity.
+       -->
+       <script type="text/javascript" src="../../resources/lib/jquery/jquery.js"></script>
+       <link rel="stylesheet" href="../../resources/src/jquery/jquery.confirmable.css">
+       <script type="text/javascript" src="../../resources/src/jquery/jquery.confirmable.js"></script>
+       <style>
+       body {
+               font: small sans-serif;
+       }
+       .mw-rollback-link a,
+       .mw-unwatch-link a,
+       .mw-thanks-thank-link a {
+               background: #ccf;
+       }
+       </style>
+</head>
+<body>
+       <h2>Introduction</h2>
+
+       <p>The jquery.confirmable module provides a simple inline confirmation script for potentially destructive or uncancellable actions.</p>
+
+       <p>Possible uses include confirmable "rollback" links in histories, confirmable "unwatch" links on watchlists, or confirmable "thanks" links (provided by the Echo extension).</p>
+
+       <p>Shown below is a demo of how each of those could work on history and watchlist entries, in an LTR and RTL language. The enhanced links are highlighted in blue.</p>
+
+       <h2>Examples</h2>
+
+       <h3>LTR (English)</h3>
+
+       <p>Watchlist:</p>
+
+       <ul lang="en" dir="ltr">
+               <li class="mw-line-even mw-changeslist-line-not-watched">
+                       (<a href="#">diff</a> | <a href="#">hist</a>)
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="mw-title"><a href="#" class="mw-changeslist-title">Example page</a></span>; <span class="mw-changeslist-date">13:38</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="mw-plusminus-neg">(-130)</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <a href="#" class="mw-userlink">Example user</a>
+                       <span class="mw-usertoollinks">(<a href="#">Talk</a> | <a href="#">contribs</a> | <a href="#">block</a>)</span>
+                       <span class="comment">(example edit)</span>
+                       <span class="mw-rollback-link">[<a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">rollback</a>]</span>
+                       (<span class="mw-unwatch-link"><a href="#">unwatch</a></span>)
+               </li>
+       </ul>
+
+       <p>History:</p>
+
+       <ul lang="en" dir="ltr">
+               <li>
+                       <span class="mw-history-histlinks">(cur | <a href="#">prev</a>)</span>
+                       <input type="radio" style="visibility: hidden;" /><input type="radio" checked />
+                       <a href="#" class="mw-changeslist-date">13:38, 28 October 2013</a>
+                       <span class='history-user'>
+                               <a href="#" class="mw-userlink">Example user</a>
+                               <span class="mw-usertoollinks">(<a href="#">Talk</a> | <a href="#">contribs</a> | <a href="#">block</a>)</span>
+                       </span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="history-size">(1,654 bytes)</span>
+                       <span class="mw-plusminus-neg">(-130)</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="comment">(example edit)</span>
+                       (<span class="mw-rollback-link"><a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">rollback 1 edit</a></span> | <span class="mw-history-undo"><a href="#">undo</a></span> | <span class="mw-thanks-thank-link"><a href="#">thank</a></span>)
+               </li>
+       </ul>
+
+       <script type="text/javascript">
+               $( 'ul[lang="en"] .mw-rollback-link a' )
+                       .confirmable({ i18n: { confirm: 'Are you sure you want to rollback?' } });
+               $( 'ul[lang="en"] .mw-unwatch-link a' )
+                       .confirmable({ handler: function(){ alert('Unwatched!') } });
+               $( 'ul[lang="en"] .mw-thanks-thank-link a' )
+                       .confirmable({ handler: function(){ alert('Thanked!') } });
+       </script>
+
+       <h3>RTL (Hebrew)</h3>
+       <!-- All of the Hebrew text below has been basically pulled out of my hat. -->
+
+       <p>Watchlist:</p>
+
+       <ul lang="he" dir="rtl">
+               <li class="mw-line-even mw-changeslist-line-not-watched">
+                       (<a href="#">הבדל</a> | <a href="#">היסטוריה</a>)
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="mw-title"><a href="#" class="mw-changeslist-title">דף דוגמה</a></span>; <span class="mw-changeslist-date">13:38</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="mw-plusminus-neg">(-57)</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <a href="#" class="mw-userlink">דוגמא אדם</a>
+                       <span class="mw-usertoollinks">(<a href="#">שיחה</a> | <a href="#">תרומות</a> | <a href="#">חסימה</a>)</span>
+                       <span class="comment">(עריכה לדוגמה)</span>
+                       <span class="mw-rollback-link">[<a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">שחזור</a>]</span>
+                       (<span class="mw-unwatch-link"><a href="#">הפסקת מעקב</a></span>)
+               </li>
+       </ul>
+
+       <p>History:</p>
+
+       <ul lang="he" dir="rtl">
+               <li>
+                       <span class="mw-history-histlinks">(נוכחית | <a href="#">קודמת</a>)</span>
+                       <input type="radio" style="visibility: hidden;" /><input type="radio" checked />
+                       <a href="#" class="mw-changeslist-date">23:41, 12 במאי 2012</a>
+                       <span class='history-user'>
+                               <a href="#" class="mw-userlink">דוגמא אדם</a>
+                               <span class="mw-usertoollinks">(<a href="#">שיחה</a> | <a href="#">תרומות</a> | <a href="#">חסימה</a>)</span>
+                       </span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="history-size">(1,762 בתים)</span>
+                       <span class="mw-plusminus-neg">(-57)</span>
+                       <span class="mw-changeslist-separator">. .</span>
+                       <span class="comment">(עריכה לדוגמה)</span>
+                       (<span class="mw-rollback-link"><a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">שחזור עריכה אחת</a></span> | <span class="mw-history-undo"><a href="#">ביטול</a></span> | <span class="mw-thanks-thank-link"><a href="#">תודה</a></span>)
+               </li>
+       </ul>
+
+       <script type="text/javascript">
+               var hebrewI18n = {
+                       confirm: 'האם ברצונך להמשיך?',
+                       yes: 'כן',
+                       no: 'לא',
+               }
+
+               $( 'ul[lang="he"] .mw-rollback-link a' )
+                       .confirmable({ i18n: $.extend( {}, hebrewI18n, { confirm: 'האם ברצונך לשחזר?' } ) });
+               $( 'ul[lang="he"] .mw-unwatch-link a' )
+                       .confirmable({ i18n: hebrewI18n, handler: function(){ alert('Unwatched!') } });
+               $( 'ul[lang="he"] .mw-thanks-thank-link a' )
+                       .confirmable({ i18n: hebrewI18n, handler: function(){ alert('Thanked!') } });
+       </script>
+       <style type="text/css">
+               /* This is normally handled by CSSJanus. */
+               ul[dir=rtl] .jquery-confirmable-button {
+                       margin-left: 0;
+                       margin-right: 1ex;
+               }
+       </style>
+</body>
+</html>
+
index ca30bbc..e6d6c11 100644 (file)
@@ -1,5 +1,2 @@
 If uploads are enabled in the wiki, files will be put in subdirectories
 under here.
-
-Note to upgraders: as of MediaWiki 1.5, the images used in the user
-interface have been moved to skins/common/images.
index 9fa0c13..6c92139 100644 (file)
@@ -137,7 +137,7 @@ $wgAutoloadLocalClasses = array(
        'PoolCounter_Stub' => 'includes/poolcounter/PoolCounter.php',
        'PoolCounterRedis' => 'includes/poolcounter/PoolCounterRedis.php',
        'PoolCounterWork' => 'includes/poolcounter/PoolCounterWork.php',
-       'PoolCounterWorkViaCallback' => 'includes/poolcounter/PoolCounterWork.php',
+       'PoolCounterWorkViaCallback' => 'includes/poolcounter/PoolCounterWorkViaCallback.php',
        'PoolWorkArticleView' => 'includes/poolcounter/PoolWorkArticleView.php',
        'Preferences' => 'includes/Preferences.php',
        'PreferencesForm' => 'includes/Preferences.php',
@@ -158,6 +158,8 @@ $wgAutoloadLocalClasses = array(
        'SiteStatsInit' => 'includes/SiteStats.php',
        'Skin' => 'includes/Skin.php',
        'SkinTemplate' => 'includes/SkinTemplate.php',
+       'SkinFallback' => 'includes/SkinFallback.php',
+       'SkinFallbackTemplate' => 'includes/SkinFallback.php',
        'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
        'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
        'StatCounter' => 'includes/StatCounter.php',
@@ -214,8 +216,8 @@ $wgAutoloadLocalClasses = array(
        'RevisiondeleteAction' => 'includes/actions/RevisiondeleteAction.php',
        'RollbackAction' => 'includes/actions/RollbackAction.php',
        'SubmitAction' => 'includes/actions/EditAction.php',
-       'UnprotectAction' => 'includes/actions/ProtectAction.php',
-       'UnwatchAction' => 'includes/actions/WatchAction.php',
+       'UnprotectAction' => 'includes/actions/UnprotectAction.php',
+       'UnwatchAction' => 'includes/actions/UnwatchAction.php',
        'ViewAction' => 'includes/actions/ViewAction.php',
        'WatchAction' => 'includes/actions/WatchAction.php',
 
@@ -385,6 +387,8 @@ $wgAutoloadLocalClasses = array(
        'CssContent' => 'includes/content/CssContent.php',
        'JavaScriptContentHandler' => 'includes/content/JavaScriptContentHandler.php',
        'JavaScriptContent' => 'includes/content/JavaScriptContent.php',
+       'JSONContentHandler' => 'includes/content/JSONContentHandler.php',
+       'JSONContent' => 'includes/content/JSONContent.php',
        'MessageContent' => 'includes/content/MessageContent.php',
        'MWContentSerializationException' => 'includes/content/ContentHandler.php',
        'TextContentHandler' => 'includes/content/TextContentHandler.php',
@@ -888,25 +892,23 @@ $wgAutoloadLocalClasses = array(
        'ResourceLoaderWikiModule' => 'includes/resourceloader/ResourceLoaderWikiModule.php',
 
        # includes/revisiondelete
-       'RevDelArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelArchivedRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelFileItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelFileList' => 'includes/revisiondelete/RevisionDelete.php',
+       'RevDelArchivedFileItem' => 'includes/revisiondelete/RevDelArchivedFileItem.php',
+       'RevDelArchivedFileList' => 'includes/revisiondelete/RevDelArchivedFileList.php',
+       'RevDelArchivedRevisionItem' => 'includes/revisiondelete/RevDelArchivedRevisionItem.php',
+       'RevDelArchiveItem' => 'includes/revisiondelete/RevDelArchiveItem.php',
+       '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',
-       'RevDelLogItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelLogList' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
-       'RevDelRevisionList' => 'includes/revisiondelete/RevisionDelete.php',
+       'RevDelLogItem' => 'includes/revisiondelete/RevDelLogItem.php',
+       'RevDelLogList' => 'includes/revisiondelete/RevDelLogList.php',
+       'RevDelRevisionItem' => 'includes/revisiondelete/RevDelRevisionItem.php',
+       'RevDelRevisionList' => 'includes/revisiondelete/RevDelRevisionList.php',
        'RevisionDeleter' => 'includes/revisiondelete/RevisionDeleter.php',
        'RevisionDeleteUser' => 'includes/revisiondelete/RevisionDeleteUser.php',
 
        # includes/search
-       'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
-       'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
        'SearchDatabase' => 'includes/search/SearchDatabase.php',
        'SearchEngine' => 'includes/search/SearchEngine.php',
        'SearchEngineDummy' => 'includes/search/SearchEngine.php',
index 8b5906a..cb04190 100644 (file)
@@ -94,8 +94,9 @@ class Cookie {
 
                // Don't allow a trailing dot or addresses without a or just a leading dot
                if ( substr( $domain, -1 ) == '.' ||
-                        count( $dc ) <= 1 ||
-                        count( $dc ) == 2 && $dc[0] === '' ) {
+                       count( $dc ) <= 1 ||
+                       count( $dc ) == 2 && $dc[0] === ''
+               ) {
                        return false;
                }
 
index dea6e71..80b8e52 100644 (file)
@@ -758,7 +758,7 @@ $wgFileBlacklist = array(
        'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );
 
 /**
- * Files with these mime types will never be allowed as uploads
+ * Files with these MIME types will never be allowed as uploads
  * if $wgVerifyMimeType is enabled.
  */
 $wgMimeTypeBlacklist = array(
@@ -810,7 +810,7 @@ $wgDisableUploadScriptChecks = false;
 $wgUploadSizeWarning = false;
 
 /**
- * list of trusted media-types and mime types.
+ * list of trusted media-types and MIME types.
  * Use the MEDIATYPE_xxx constants to represent media types.
  * This list is used by File::isSafeFile
  *
@@ -858,9 +858,11 @@ $wgContentHandlers = array(
        CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler',
        // dumb version, no syntax highlighting
        CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler',
+       // simple implementation, for use by extensions, etc.
+       CONTENT_MODEL_JSON => 'JSONContentHandler',
        // dumb version, no syntax highlighting
        CONTENT_MODEL_CSS => 'CssContentHandler',
-       // plain text, for use by extensions etc
+       // plain text, for use by extensions, etc.
        CONTENT_MODEL_TEXT => 'TextContentHandler',
 );
 
@@ -1133,45 +1135,45 @@ $wgAntivirusSetup = array(
 $wgAntivirusRequired = true;
 
 /**
- * Determines if the mime type of uploaded files should be checked
+ * Determines if the MIME type of uploaded files should be checked
  */
 $wgVerifyMimeType = true;
 
 /**
- * Sets the mime type definition file to use by MimeMagic.php.
+ * Sets the MIME type definition file to use by MimeMagic.php.
  * Set to null, to use built-in defaults only.
  * example: $wgMimeTypeFile = '/etc/mime.types';
  */
 $wgMimeTypeFile = 'includes/mime.types';
 
 /**
- * Sets the mime type info file to use by MimeMagic.php.
+ * Sets the MIME type info file to use by MimeMagic.php.
  * Set to null, to use built-in defaults only.
  */
 $wgMimeInfoFile = 'includes/mime.info';
 
 /**
- * Sets an external mime detector program. The command must print only
- * the mime type to standard output.
+ * Sets an external MIME detector program. The command must print only
+ * the MIME type to standard output.
  * The name of the file to process will be appended to the command given here.
  * If not set or NULL, mime_content_type will be used if available.
  *
  * @par Example:
  * @code
- * #$wgMimeDetectorCommand = "file -bi"; # use external mime detector (Linux)
+ * #$wgMimeDetectorCommand = "file -bi"; # use external MIME detector (Linux)
  * @endcode
  */
 $wgMimeDetectorCommand = null;
 
 /**
- * Switch for trivial mime detection. Used by thumb.php to disable all fancy
+ * Switch for trivial MIME detection. Used by thumb.php to disable all fancy
  * things, because only a few types of images are needed and file extensions
  * can be trusted.
  */
 $wgTrivialMimeDetection = false;
 
 /**
- * Additional XML types we can allow via mime-detection.
+ * Additional XML types we can allow via MIME-detection.
  * array = ( 'rootElement' => 'associatedMimeType' )
  */
 $wgXMLMimeTypes = array(
@@ -2926,7 +2928,7 @@ $wgWellFormedXml = true;
  * Normally we wouldn't have to define this in the root "<html>"
  * element, but IE needs it there in some circumstances.
  *
- * This is ignored if $wgMimeType is set to a non-XML mimetype.
+ * This is ignored if $wgMimeType is set to a non-XML MIME type.
  */
 $wgXhtmlNamespaces = array();
 
@@ -2968,7 +2970,7 @@ $wgDefaultSkin = 'vector';
  *
  * @since 1.24
  */
-$wgFallbackSkin = 'vector';
+$wgFallbackSkin = 'fallback';
 
 /**
  * Specify the names of skins that should not be presented in the list of
@@ -3117,20 +3119,6 @@ $wgFooterIcons = array(
  */
 $wgUseCombinedLoginLink = false;
 
-/**
- * Search form look for Vector skin only.
- *  - true = use an icon search button
- *  - false = use Go & Search buttons
- */
-$wgVectorUseSimpleSearch = true;
-
-/**
- * Watch and unwatch as an icon rather than a link for Vector skin only.
- *  - true = use an icon watch/unwatch button
- *  - false = use watch/unwatch text link
- */
-$wgVectorUseIconWatch = true;
-
 /**
  * Display user edit counts in various prominent places.
  */
@@ -6610,9 +6598,6 @@ $wgLogActions = array(
        'protect/modify' => 'modifiedarticleprotection',
        'protect/unprotect' => 'unprotectedarticle',
        'protect/move_prot' => 'movedarticleprotection',
-       'upload/upload' => 'uploadedimage',
-       'upload/overwrite' => 'overwroteimage',
-       'upload/revert' => 'uploadedimage',
        'import/upload' => 'import-logentry-upload',
        'import/interwiki' => 'import-logentry-interwiki',
        'merge/merge' => 'pagemerge-logentry',
@@ -6639,6 +6624,9 @@ $wgLogActionsHandlers = array(
        'patrol/patrol' => 'PatrolLogFormatter',
        'rights/rights' => 'RightsLogFormatter',
        'rights/autopromote' => 'RightsLogFormatter',
+       'upload/upload' => 'LogFormatter',
+       'upload/overwrite' => 'LogFormatter',
+       'upload/revert' => 'LogFormatter',
 );
 
 /**
@@ -6672,11 +6660,6 @@ $wgDisableQueryPageUpdate = false;
  */
 $wgSpecialPageGroups = array();
 
-/**
- * Whether or not to sort special pages in Special:Specialpages
- */
-$wgSortSpecialPages = true;
-
 /**
  * On Special:Unusedimages, consider images "used", if they are put
  * into a category. Default (false) is not to count those as used.
@@ -6841,16 +6824,45 @@ $wgDebugAPI = false;
 
 /**
  * API module extensions.
- * Associative array mapping module name to class name.
- * Extension modules may override the core modules.
  *
+ * Associative array mapping module name to modules specs;
+ * Each module spec is an associative array containing at least
+ * the 'class' key for the module's class, and optionally a
+ * 'factory' key for the factory function to use for the module.
+ *
+ * That factory function will be called with two parameters,
+ * the parent module (an instance of ApiBase, usually ApiMain)
+ * and the name the module was registered under. The return
+ * value must be an instance of the class given in the 'class'
+ * field.
+ *
+ * For backward compatibility, the module spec may also be a
+ * simple string containing the module's class name. In that
+ * case, the class' constructor will be called with the parent
+ * module and module name as parameters, as described above.
+ *
+ * Examples for registering API modules:
+ *
+ * @code
+ *  $wgAPIModules['foo'] = 'ApiFoo';
+ *  $wgAPIModules['bar'] = array(
+ *    'class' => 'ApiBar',
+ *    'factory' => function( $main, $name ) { ... }
+ *  );
+ *  $wgAPIModules['xyzzy'] = array(
+ *    'class' => 'ApiXyzzy',
+ *    'factory' => array( 'XyzzyFactory', 'newApiModule' )
+ *  );
+ * @endcode
+ *
+ * Extension modules may override the core modules.
  * See ApiMain::$Modules for a list of the core modules.
  */
 $wgAPIModules = array();
 
 /**
  * API format module extensions.
- * Associative array mapping format module name to class name.
+ * Associative array mapping format module name to module specs (see $wgAPIModules).
  * Extension modules may override the core modules.
  *
  * See ApiMain::$Formats for a list of the core format modules.
@@ -6859,7 +6871,7 @@ $wgAPIFormatModules = array();
 
 /**
  * API Query meta module extensions.
- * Associative array mapping meta module name to class name.
+ * Associative array mapping meta module name to module specs (see $wgAPIModules).
  * Extension modules may override the core modules.
  *
  * See ApiQuery::$QueryMetaModules for a list of the core meta modules.
@@ -6868,7 +6880,7 @@ $wgAPIMetaModules = array();
 
 /**
  * API Query prop module extensions.
- * Associative array mapping properties module name to class name.
+ * Associative array mapping prop module name to module specs (see $wgAPIModules).
  * Extension modules may override the core modules.
  *
  * See ApiQuery::$QueryPropModules for a list of the core prop modules.
@@ -6877,7 +6889,7 @@ $wgAPIPropModules = array();
 
 /**
  * API Query list module extensions.
- * Associative array mapping list module name to class name.
+ * Associative array mapping list module name to module specs (see $wgAPIModules).
  * Extension modules may override the core modules.
  *
  * See ApiQuery::$QueryListModules for a list of the core list modules.
index e0579cb..017e9ea 100644 (file)
@@ -281,6 +281,7 @@ define( 'CONTENT_MODEL_WIKITEXT', 'wikitext' );
 define( 'CONTENT_MODEL_JAVASCRIPT', 'javascript' );
 define( 'CONTENT_MODEL_CSS', 'css' );
 define( 'CONTENT_MODEL_TEXT', 'text' );
+define( 'CONTENT_MODEL_JSON', 'json' );
 /**@}*/
 
 /**@{
index 6454cfa..dafbbe3 100644 (file)
@@ -3527,7 +3527,6 @@ HTML
        /**
         * Shows a bulletin board style toolbar for common editing functions.
         * It can be disabled in the user preferences.
-        * The necessary JavaScript code can be found in skins/common/edit.js.
         *
         * @return string
         */
index ce439cb..cb98009 100644 (file)
@@ -36,7 +36,7 @@
  *
  * There are two important configuration options this class uses:
  *
- * $wgMimeType: If this is set to an xml mimetype then output should be
+ * $wgMimeType: If this is set to an xml MIME type then output should be
  *     valid XHTML5.
  * $wgWellFormedXml: If this is set to true, then all output should be
  *     well-formed XML (quotes on attributes, self-closing tags, etc.).
@@ -233,25 +233,8 @@ class Html {
         * @return string A closing tag, if required
         */
        public static function closeElement( $element ) {
-               global $wgWellFormedXml;
-
                $element = strtolower( $element );
 
-               // Reference:
-               // http://www.whatwg.org/html/syntax.html#optional-tags
-               if ( !$wgWellFormedXml && in_array( $element, array(
-                       'html',
-                       'head',
-                       'body',
-                       'li',
-                       'dt',
-                       'dd',
-                       'tr',
-                       'td',
-                       'th',
-               ) ) ) {
-                       return '';
-               }
                return "</$element>";
        }
 
@@ -872,7 +855,7 @@ class Html {
                $isXHTML = self::isXmlMimeType( $wgMimeType );
 
                if ( $isXHTML ) { // XHTML5
-                       // XML mimetyped markup should have an xml header.
+                       // XML MIME-typed markup should have an xml header.
                        // However a DOCTYPE is not needed.
                        $ret .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?" . ">\n";
 
@@ -904,16 +887,16 @@ class Html {
        }
 
        /**
-        * Determines if the given mime type is xml.
+        * Determines if the given MIME type is xml.
         *
-        * @param string $mimetype MimeType
+        * @param string $mimetype MIME type
         * @return bool
         */
        public static function isXmlMimeType( $mimetype ) {
                # http://www.whatwg.org/html/infrastructure.html#xml-mime-type
                # * text/xml
                # * application/xml
-               # * Any mimetype with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
+               # * Any MIME type with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
                return (bool)preg_match( '!^(text|application)/xml$|^.+/.+\+xml$!', $mimetype );
        }
 
index 1b014f6..281080c 100644 (file)
@@ -32,6 +32,11 @@ class MediaWiki {
         */
        private $context;
 
+       /**
+        * @var Config
+        */
+       private $config;
+
        /**
         * @param null|WebRequest $x
         * @return WebRequest
@@ -65,6 +70,7 @@ class MediaWiki {
                }
 
                $this->context = $context;
+               $this->config = $context->getConfig();
        }
 
        /**
@@ -174,7 +180,7 @@ class MediaWiki {
         * @return void
         */
        private function performRequest() {
-               global $wgServer, $wgUsePathInfo, $wgTitle;
+               global $wgTitle;
 
                wfProfileIn( __METHOD__ );
 
@@ -237,7 +243,7 @@ class MediaWiki {
                                $url = $title->getFullURL( $query );
                        }
                        // Check for a redirect loop
-                       if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url )
+                       if ( !preg_match( '/^' . preg_quote( $this->config->get( 'Server' ), '/' ) . '/', $url )
                                && $title->isLocal()
                        ) {
                                // 301 so google et al report the target as the actual url.
@@ -268,7 +274,7 @@ class MediaWiki {
                                        "requested; this sometimes happens when moving a wiki " .
                                        "to a new server or changing the server configuration.\n\n";
 
-                               if ( $wgUsePathInfo ) {
+                               if ( $this->config->get( 'UsePathInfo' ) ) {
                                        $message .= "The wiki is trying to interpret the page " .
                                                "title from the URL path portion (PATH_INFO), which " .
                                                "sometimes fails depending on the web server. Try " .
@@ -323,8 +329,6 @@ class MediaWiki {
         * @return mixed An Article, or a string to redirect to another URL
         */
        private function initializeArticle() {
-               global $wgDisableHardRedirects;
-
                wfProfileIn( __METHOD__ );
 
                $title = $this->context->getTitle();
@@ -372,7 +376,7 @@ class MediaWiki {
                                // Is the target already set by an extension?
                                $target = $target ? $target : $article->followRedirect();
                                if ( is_string( $target ) ) {
-                                       if ( !$wgDisableHardRedirects ) {
+                                       if ( !$this->config->get( 'DisableHardRedirects' ) ) {
                                                // we'll need to redirect
                                                wfProfileOut( __METHOD__ );
                                                return $target;
@@ -406,8 +410,6 @@ class MediaWiki {
         * @param Title $requestTitle The original title, before any redirects were applied
         */
        private function performAction( Page $page, Title $requestTitle ) {
-               global $wgUseSquid, $wgSquidMaxage;
-
                wfProfileIn( __METHOD__ );
 
                $request = $this->context->getRequest();
@@ -428,10 +430,10 @@ class MediaWiki {
 
                if ( $action instanceof Action ) {
                        # Let Squid cache things if we can purge them.
-                       if ( $wgUseSquid &&
+                       if ( $this->config->get( 'UseSquid' ) &&
                                in_array( $request->getFullRequestURL(), $requestTitle->getSquidURLs() )
                        ) {
-                               $output->setSquidMaxage( $wgSquidMaxage );
+                               $output->setSquidMaxage( $this->config->get( 'SquidMaxage' ) );
                        }
 
                        $action->show();
@@ -479,8 +481,6 @@ class MediaWiki {
         * @return bool
         */
        private function checkMaxLag() {
-               global $wgShowHostnames;
-
                wfProfileIn( __METHOD__ );
                $maxLag = $this->context->getRequest()->getVal( 'maxlag' );
                if ( !is_null( $maxLag ) ) {
@@ -491,7 +491,7 @@ class MediaWiki {
                                $resp->header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
                                $resp->header( 'X-Database-Lag: ' . intval( $lag ) );
                                $resp->header( 'Content-Type: text/plain' );
-                               if ( $wgShowHostnames ) {
+                               if ( $this->config->get( 'ShowHostnames' ) ) {
                                        echo "Waiting for $host: $lag seconds lagged\n";
                                } else {
                                        echo "Waiting for a database server: $lag seconds lagged\n";
@@ -507,14 +507,14 @@ class MediaWiki {
        }
 
        private function main() {
-               global $wgUseFileCache, $wgTitle, $wgUseAjax;
+               global $wgTitle;
 
                wfProfileIn( __METHOD__ );
 
                $request = $this->context->getRequest();
 
                // Send Ajax requests to the Ajax dispatcher.
-               if ( $wgUseAjax && $request->getVal( 'action', 'view' ) == 'ajax' ) {
+               if ( $this->config->get( 'UseAjax' ) && $request->getVal( 'action', 'view' ) == 'ajax' ) {
 
                        // Set a dummy title, because $wgTitle == null might break things
                        $title = Title::makeTitle( NS_MAIN, 'AJAX' );
@@ -581,7 +581,7 @@ class MediaWiki {
                        }
                }
 
-               if ( $wgUseFileCache && $title->getNamespace() >= 0 ) {
+               if ( $this->config->get( 'UseFileCache' ) && $title->getNamespace() >= 0 ) {
                        wfProfileIn( 'main-try-filecache' );
                        if ( HTMLFileCache::useFileCache( $this->context ) ) {
                                // Try low-level file cache hit
@@ -645,9 +645,8 @@ class MediaWiki {
         * the socket once it's done.
         */
        protected function triggerJobs() {
-               global $wgJobRunRate, $wgServer, $wgRunJobsAsync;
-
-               if ( $wgJobRunRate <= 0 || wfReadOnly() ) {
+               $jobRunRate = $this->config->get( 'JobRunRate' );
+               if ( $jobRunRate <= 0 || wfReadOnly() ) {
                        return;
                } elseif ( $this->getTitle()->isSpecial( 'RunJobs' ) ) {
                        return; // recursion guard
@@ -655,17 +654,17 @@ class MediaWiki {
 
                $section = new ProfileSection( __METHOD__ );
 
-               if ( $wgJobRunRate < 1 ) {
+               if ( $jobRunRate < 1 ) {
                        $max = mt_getrandmax();
-                       if ( mt_rand( 0, $max ) > $max * $wgJobRunRate ) {
-                               return; // the higher $wgJobRunRate, the less likely we return here
+                       if ( mt_rand( 0, $max ) > $max * $jobRunRate ) {
+                               return; // the higher the job run rate, the less likely we return here
                        }
                        $n = 1;
                } else {
-                       $n = intval( $wgJobRunRate );
+                       $n = intval( $jobRunRate );
                }
 
-               if ( !$wgRunJobsAsync ) {
+               if ( !$this->config->get( 'RunJobsAsync' ) ) {
                        // Fall back to running the job here while the user waits
                        $runner = new JobRunner();
                        $runner->run( array( 'maxJobs'  => $n ) );
@@ -686,7 +685,7 @@ class MediaWiki {
                $query['signature'] = SpecialRunJobs::getQuerySignature( $query );
 
                $errno = $errstr = null;
-               $info = wfParseUrl( $wgServer );
+               $info = wfParseUrl( $this->config->get( 'Server' ) );
                wfSuppressWarnings();
                $sock = fsockopen(
                        $info['host'],
index 931a3f9..4df0d80 100644 (file)
@@ -175,10 +175,16 @@ class Message {
        protected $language = null;
 
        /**
-        * @var string|string[] The message key or array of keys.
+        * @var string The message key. If $keysToTry has more than one element,
+        * this may change to one of the keys to try when fetching the message text.
         */
        protected $key;
 
+       /**
+        * @var string[] List of keys to try when fetching the message.
+        */
+       protected $keysToTry;
+
        /**
         * @var array List of parameters which will be substituted into the message.
         */
@@ -224,30 +230,61 @@ class Message {
         * non-empty message for.
         * @param array $params Message parameters.
         * @param Language $language Optional language of the message, defaults to $wgLang.
+        *
+        * @throws InvalidArgumentException
         */
        public function __construct( $key, $params = array(), Language $language = null ) {
                global $wgLang;
 
-               $this->key = $key;
+               if ( !is_string( $key ) && !is_array( $key ) ) {
+                       throw new InvalidArgumentException( '$key must be a string or an array' );
+               }
+
+               $this->keysToTry = (array)$key;
+
+               if ( empty( $this->keysToTry ) ) {
+                       throw new InvalidArgumentException( '$key must not be an empty list' );
+               }
+
+               $this->key = reset( $this->keysToTry );
+
                $this->parameters = array_values( $params );
                $this->language = $language ? $language : $wgLang;
        }
 
        /**
-        * Returns the message key or the first from an array of message keys.
+        * @since 1.24
+        *
+        * @return bool True if this is a multi-key message, that is, if the key provided to the
+        * constructor was a fallback list of keys to try.
+        */
+       public function isMultiKey() {
+               return count( $this->keysToTry ) > 1;
+       }
+
+       /**
+        * @since 1.24
+        *
+        * @return string[] The list of keys to try when fetching the message text,
+        * in order of preference.
+        */
+       public function getKeysToTry() {
+               return $this->keysToTry;
+       }
+
+       /**
+        * Returns the message key.
+        *
+        * If a list of multiple possible keys was supplied to the constructor, this method may
+        * return any of these keys. After the message ahs been fetched, this method will return
+        * the key that was actually used to fetch the message.
         *
         * @since 1.21
         *
         * @return string
         */
        public function getKey() {
-               if ( is_array( $this->key ) ) {
-                       // May happen if some kind of fallback is applied.
-                       // For now, just use the first key. We really need a better solution.
-                       return $this->key[0];
-               } else {
-                       return $this->key;
-               }
+               return $this->key;
        }
 
        /**
@@ -637,7 +674,7 @@ class Message {
                $string = $this->fetchMessage();
 
                if ( $string === false ) {
-                       $key = htmlspecialchars( is_array( $this->key ) ? $this->key[0] : $this->key );
+                       $key = htmlspecialchars( $this->key );
                        if ( $this->format === 'plain' ) {
                                return '<' . $key . '>';
                        }
@@ -997,20 +1034,18 @@ class Message {
        protected function fetchMessage() {
                if ( $this->message === null ) {
                        $cache = MessageCache::singleton();
-                       if ( is_array( $this->key ) ) {
-                               if ( !count( $this->key ) ) {
-                                       throw new MWException( "Given empty message key array." );
-                               }
-                               foreach ( $this->key as $key ) {
-                                       $message = $cache->get( $key, $this->useDatabase, $this->language );
-                                       if ( $message !== false && $message !== '' ) {
-                                               break;
-                                       }
+
+                       foreach ( $this->keysToTry as $key ) {
+                               $message = $cache->get( $key, $this->useDatabase, $this->language );
+                               if ( $message !== false && $message !== '' ) {
+                                       break;
                                }
-                               $this->message = $message;
-                       } else {
-                               $this->message = $cache->get( $this->key, $this->useDatabase, $this->language );
                        }
+
+                       // NOTE: The constructor makes sure keysToTry isn't empty,
+                       //       so we know that $key and $message are initialized.
+                       $this->key = $key;
+                       $this->message = $message;
                }
                return $this->message;
        }
@@ -1038,13 +1073,20 @@ class RawMessage extends Message {
         *
         * @see Message::__construct
         *
-        * @param string|string[] $key Message to use.
+        * @param string $text Message to use.
         * @param array $params Parameters for the message.
+        *
+        * @throws InvalidArgumentException
         */
-       public function __construct( $key, $params = array() ) {
-               parent::__construct( $key, $params );
+       public function __construct( $text, $params = array() ) {
+               if ( !is_string( $text ) ) {
+                       throw new InvalidArgumentException( '$text must be a string' );
+               }
+
+               parent::__construct( $text, $params );
+
                // The key is the message.
-               $this->message = $key;
+               $this->message = $text;
        }
 
        /**
@@ -1057,6 +1099,7 @@ class RawMessage extends Message {
                if ( $this->message === null ) {
                        $this->message = $this->key;
                }
+
                return $this->message;
        }
 
index b4d3ab1..8f0a2af 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Module defining helper functions for detecting and dealing with mime types.
+ * Module defining helper functions for detecting and dealing with MIME types.
  *
  * 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
  */
 
 /**
- * Defines a set of well known mime types
+ * Defines a set of well known MIME types
  * This is used as a fallback to mime.types files.
- * An extensive list of well known mime types is provided by
+ * An extensive list of well known MIME types is provided by
  * the file mime.types in the includes directory.
  *
- * This list concatenated with mime.types is used to create a mime <-> ext
- * map. Each line contains a mime type followed by a space separated list of
- * extensions. If multiple extensions for a single mime type exist or if
- * multiple mime types exist for a single extension then in most cases
- * MediaWiki assumes that the first extension following the mime type is the
- * canonical extension, and the first time a mime type appears for a certain
- * extension is considered the canonical mime type.
+ * This list concatenated with mime.types is used to create a MIME <-> ext
+ * map. Each line contains a MIME type followed by a space separated list of
+ * extensions. If multiple extensions for a single MIME type exist or if
+ * multiple MIME types exist for a single extension then in most cases
+ * MediaWiki assumes that the first extension following the MIME type is the
+ * canonical extension, and the first time a MIME type appears for a certain
+ * extension is considered the canonical MIME type.
  *
  * (Note that appending $wgMimeTypeFile to the end of MM_WELL_KNOWN_MIME_TYPES
  * sucks because you can't redefine canonical types. This could be fixed by
@@ -86,9 +86,9 @@ END_STRING
 );
 
 /**
- * Defines a set of well known mime info entries
+ * Defines a set of well known MIME info entries
  * This is used as a fallback to mime.info files.
- * An extensive list of well known mime types is provided by
+ * An extensive list of well known MIME types is provided by
  * the file mime.info in the includes directory.
  */
 define( 'MM_WELL_KNOWN_MIME_INFO', <<<END_STRING
@@ -135,7 +135,7 @@ END_STRING
 );
 
 /**
- * Implements functions related to mime types such as detection and mapping to
+ * Implements functions related to MIME types such as detection and mapping to
  * file extension.
  *
  * Instances of this class are stateless, there only needs to be one global instance
@@ -143,20 +143,20 @@ END_STRING
  */
 class MimeMagic {
        /**
-        * @var array Mapping of media types to arrays of mime types.
+        * @var array Mapping of media types to arrays of MIME types.
         * This is used by findMediaType and getMediaType, respectively
         */
        protected $mMediaTypes = null;
 
-       /** @var array Map of mime type aliases
+       /** @var array Map of MIME type aliases
         */
        protected $mMimeTypeAliases = null;
 
-       /** @var array Map of mime types to file extensions (as a space separated list)
+       /** @var array Map of MIME types to file extensions (as a space separated list)
         */
        protected $mMimeToExt = null;
 
-       /** @var array Map of file extensions types to mime types (as a space separated list)
+       /** @var array Map of file extensions types to MIME types (as a space separated list)
         */
        public $mExtToMime = null;
 
@@ -378,9 +378,9 @@ class MimeMagic {
        }
 
        /**
-        * Returns a list of file extensions for a given mime type as a space
-        * separated string or null if the mime type was unrecognized. Resolves
-        * mime type aliases.
+        * Returns a list of file extensions for a given MIME type as a space
+        * separated string or null if the MIME type was unrecognized. Resolves
+        * MIME type aliases.
         *
         * @param string $mime
         * @return string|null
@@ -393,7 +393,7 @@ class MimeMagic {
                        return $this->mMimeToExt[$mime];
                }
 
-               // Resolve the mime type to the canonical type
+               // Resolve the MIME type to the canonical type
                if ( isset( $this->mMimeTypeAliases[$mime] ) ) {
                        $mime = $this->mMimeTypeAliases[$mime];
                        if ( isset( $this->mMimeToExt[$mime] ) ) {
@@ -405,7 +405,7 @@ class MimeMagic {
        }
 
        /**
-        * Returns a list of mime types for a given file extension as a space
+        * Returns a list of MIME types for a given file extension as a space
         * separated string or null if the extension was unrecognized.
         *
         * @param string $ext
@@ -419,7 +419,7 @@ class MimeMagic {
        }
 
        /**
-        * Returns a single mime type for a given file extension or null if unknown.
+        * Returns a single MIME type for a given file extension or null if unknown.
         * This is always the first type from the list returned by getTypesForExtension($ext).
         *
         * @param string $ext
@@ -439,9 +439,9 @@ class MimeMagic {
        }
 
        /**
-        * Tests if the extension matches the given mime type. Returns true if a
-        * match was found, null if the mime type is unknown, and false if the
-        * mime type is known but no matches where found.
+        * Tests if the extension matches the given MIME type. Returns true if a
+        * match was found, null if the MIME type is unknown, and false if the
+        * MIME type is known but no matches where found.
         *
         * @param string $extension
         * @param string $mime
@@ -451,7 +451,7 @@ class MimeMagic {
                $ext = $this->getExtensionsForType( $mime );
 
                if ( !$ext ) {
-                       return null; // Unknown mime type
+                       return null; // Unknown MIME type
                }
 
                $ext = explode( ' ', $ext );
@@ -461,7 +461,7 @@ class MimeMagic {
        }
 
        /**
-        * Returns true if the mime type is known to represent an image format
+        * Returns true if the MIME type is known to represent an image format
         * supported by the PHP GD library.
         *
         * @param string $mime
@@ -490,7 +490,7 @@ class MimeMagic {
         * invalid uploads; if we can't identify the type we won't
         * be able to say if it's invalid.
         *
-        * @todo Be more accurate when using fancy mime detector plugins;
+        * @todo Be more accurate when using fancy MIME detector plugins;
         *       right now this is the bare minimum getimagesize() list.
         * @param string $extension
         * @return bool
@@ -515,15 +515,15 @@ class MimeMagic {
        }
 
        /**
-        * Improves a mime type using the file extension. Some file formats are very generic,
-        * so their mime type is not very meaningful. A more useful mime type can be derived
+        * Improves a MIME type using the file extension. Some file formats are very generic,
+        * so their MIME type is not very meaningful. A more useful MIME type can be derived
         * by looking at the file extension. Typically, this method would be called on the
         * result of guessMimeType().
         *
-        * @param string $mime The mime type, typically guessed from a file's content.
+        * @param string $mime The MIME type, typically guessed from a file's content.
         * @param string $ext The file extension, as taken from the file name
         *
-        * @return string The mime type
+        * @return string The MIME type
         */
        public function improveTypeFromExtension( $mime, $ext ) {
                if ( $mime === 'unknown/unknown' ) {
@@ -538,7 +538,7 @@ class MimeMagic {
                } elseif ( $mime === 'application/x-opc+zip' ) {
                        if ( $this->isMatchingExtension( $ext, $mime ) ) {
                                // A known file extension for an OPC file,
-                               // find the proper mime type for that file extension
+                               // find the proper MIME type for that file extension
                                $mime = $this->guessTypesForExtension( $ext );
                        } else {
                                wfDebug( __METHOD__ . ": refusing to guess better type for $mime file, " .
@@ -565,18 +565,18 @@ class MimeMagic {
        }
 
        /**
-        * Mime type detection. This uses detectMimeType to detect the mime type
+        * MIME type detection. This uses detectMimeType to detect the MIME type
         * of the file, but applies additional checks to determine some well known
-        * file formats that may be missed or misinterpreted by the default mime
+        * file formats that may be missed or misinterpreted by the default MIME
         * detection (namely XML based formats like XHTML or SVG, as well as ZIP
         * based formats like OPC/ODF files).
         *
         * @param string $file The file to check
         * @param string|bool $ext The file extension, or true (default) to extract it from the filename.
         *   Set it to false to ignore the extension. DEPRECATED! Set to false, use
-        *   improveTypeFromExtension($mime, $ext) later to improve mime type.
+        *   improveTypeFromExtension($mime, $ext) later to improve MIME type.
         *
-        * @return string The mime type of $file
+        * @return string The MIME type of $file
         */
        public function guessMimeType( $file, $ext = true ) {
                if ( $ext ) { // TODO: make $ext default to false. Or better, remove it.
@@ -600,7 +600,7 @@ class MimeMagic {
        }
 
        /**
-        * Guess the mime type from the file contents.
+        * Guess the MIME type from the file contents.
         *
         * @param string $file
         * @param mixed $ext
@@ -804,7 +804,7 @@ class MimeMagic {
         * @param string|null $tail The tail of the file
         * @param string|bool $ext The file extension, or true to extract it from the filename.
         *   Set it to false (default) to ignore the extension. DEPRECATED! Set to false,
-        *   use improveTypeFromExtension($mime, $ext) later to improve mime type.
+        *   use improveTypeFromExtension($mime, $ext) later to improve MIME type.
         *
         * @return string
         */
@@ -847,7 +847,7 @@ class MimeMagic {
                        # TODO: remove the block below, as soon as improveTypeFromExtension is used everywhere
                        if ( $ext !== true && $ext !== false ) {
                                /** This is the mode used by getPropsFromPath
-                                * These mime's are stored in the database, where we don't really want
+                                * These MIME's are stored in the database, where we don't really want
                                 * x-opc+zip, because we use it only for internal purposes
                                 */
                                if ( $this->isMatchingExtension( $ext, $mime ) ) {
@@ -896,22 +896,22 @@ class MimeMagic {
        }
 
        /**
-        * Internal mime type detection. Detection is done using an external
+        * Internal MIME type detection. Detection is done using an external
         * program, if $wgMimeDetectorCommand is set. Otherwise, the fileinfo
         * extension and mime_content_type are tried (in this order), if they
-        * are available. If the detections fails and $ext is not false, the mime
+        * are available. If the detections fails and $ext is not false, the MIME
         * type is guessed from the file extension, using guessTypesForExtension.
         *
-        * If the mime type is still unknown, getimagesize is used to detect the
-        * mime type if the file is an image. If no mime type can be determined,
+        * If the MIME type is still unknown, getimagesize is used to detect the
+        * MIME type if the file is an image. If no MIME type can be determined,
         * this function returns 'unknown/unknown'.
         *
         * @param string $file The file to check
         * @param string|bool $ext The file extension, or true (default) to extract it from the filename.
         *   Set it to false to ignore the extension. DEPRECATED! Set to false, use
-        *   improveTypeFromExtension($mime, $ext) later to improve mime type.
+        *   improveTypeFromExtension($mime, $ext) later to improve MIME type.
         *
-        * @return string The mime type of $file
+        * @return string The MIME type of $file
         */
        private function detectMimeType( $file, $ext = true ) {
                global $wgMimeDetectorCommand;
@@ -938,7 +938,7 @@ class MimeMagic {
                        # If you may need to load the fileinfo extension at runtime, set
                        # $wgLoadFileinfoExtension in LocalSettings.php
 
-                       $mime_magic_resource = finfo_open( FILEINFO_MIME ); /* return mime type ala mimetype extension */
+                       $mime_magic_resource = finfo_open( FILEINFO_MIME ); /* return MIME type ala mimetype extension */
 
                        if ( $mime_magic_resource ) {
                                $m = finfo_file( $mime_magic_resource, $file );
@@ -1003,18 +1003,18 @@ class MimeMagic {
        }
 
        /**
-        * Determine the media type code for a file, using its mime type, name and
+        * Determine the media type code for a file, using its MIME type, name and
         * possibly its contents.
         *
-        * This function relies on the findMediaType(), mapping extensions and mime
+        * This function relies on the findMediaType(), mapping extensions and MIME
         * types to media types.
         *
         * @todo analyse file if need be
         * @todo look at multiple extension, separately and together.
         *
         * @param string $path Full path to the image file, in case we have to look at the contents
-        *        (if null, only the mime type is used to determine the media type code).
-        * @param string $mime Mime type. If null it will be guessed using guessMimeType.
+        *        (if null, only the MIME type is used to determine the media type code).
+        * @param string $mime MIME type. If null it will be guessed using guessMimeType.
         *
         * @return string A value to be used with the MEDIATYPE_xxx constants.
         */
@@ -1023,7 +1023,7 @@ class MimeMagic {
                        return MEDIATYPE_UNKNOWN;
                }
 
-               // If mime type is unknown, guess it
+               // If MIME type is unknown, guess it
                if ( !$mime ) {
                        $mime = $this->guessMimeType( $path, false );
                }
@@ -1056,7 +1056,7 @@ class MimeMagic {
                        }
                }
 
-               // Check for entry for full mime type
+               // Check for entry for full MIME type
                if ( $mime ) {
                        $type = $this->findMediaType( $mime );
                        if ( $type !== MEDIATYPE_UNKNOWN ) {
@@ -1076,7 +1076,7 @@ class MimeMagic {
                        }
                }
 
-               // Check major mime type
+               // Check major MIME type
                if ( $mime ) {
                        $i = strpos( $mime, '/' );
                        if ( $i !== false ) {
@@ -1096,9 +1096,9 @@ class MimeMagic {
        }
 
        /**
-        * Returns a media code matching the given mime type or file extension.
+        * Returns a media code matching the given MIME type or file extension.
         * File extensions are represented by a string starting with a dot (.) to
-        * distinguish them from mime types.
+        * distinguish them from MIME types.
         *
         * This function relies on the mapping defined by $this->mMediaTypes
         * @access private
@@ -1107,7 +1107,7 @@ class MimeMagic {
         */
        function findMediaType( $extMime ) {
                if ( strpos( $extMime, '.' ) === 0 ) {
-                       // If it's an extension, look up the mime types
+                       // If it's an extension, look up the MIME types
                        $m = $this->getTypesForExtension( substr( $extMime, 1 ) );
                        if ( !$m ) {
                                return MEDIATYPE_UNKNOWN;
@@ -1115,7 +1115,7 @@ class MimeMagic {
 
                        $m = explode( ' ', $m );
                } else {
-                       // Normalize mime type
+                       // Normalize MIME type
                        if ( isset( $this->mMimeTypeAliases[$extMime] ) ) {
                                $extMime = $this->mMimeTypeAliases[$extMime];
                        }
index 0393425..2110393 100644 (file)
@@ -369,7 +369,7 @@ class OutputPage extends ContextSource {
         *
         * @param array $linkarr Associative array of attributes.
         */
-       function addLink( $linkarr ) {
+       function addLink( array $linkarr ) {
                array_push( $this->mLinktags, $linkarr );
        }
 
@@ -380,7 +380,7 @@ class OutputPage extends ContextSource {
         *                 values, both keys and values will be escaped, and the
         *                 "rel" attribute will be automatically added
         */
-       function addMetadataLink( $linkarr ) {
+       function addMetadataLink( array $linkarr ) {
                $linkarr['rel'] = $this->getMetadataAttribute();
                $this->addLink( $linkarr );
        }
@@ -488,7 +488,7 @@ class OutputPage extends ContextSource {
         * @param string $type
         * @return array
         */
-       protected function filterModules( $modules, $position = null,
+       protected function filterModules( array $modules, $position = null,
                $type = ResourceLoaderModule::TYPE_COMBINED
        ) {
                $resourceLoader = $this->getResourceLoader();
@@ -1002,9 +1002,9 @@ class OutputPage extends ContextSource {
         * Add a subtitle containing a backlink to a page
         *
         * @param Title $title Title to link to
+        * @param array $query Array of additional parameters to include in the link
         */
-       public function addBacklinkSubtitle( Title $title ) {
-               $query = array();
+       public function addBacklinkSubtitle( Title $title, $query = array() ) {
                if ( $title->isRedirect() ) {
                        $query['redirect'] = 'no';
                }
@@ -1209,7 +1209,7 @@ class OutputPage extends ContextSource {
         * @param array $newLinkArray Associative array mapping language code to the page
         *                      name
         */
-       public function addLanguageLinks( $newLinkArray ) {
+       public function addLanguageLinks( array $newLinkArray ) {
                $this->mLanguageLinks += $newLinkArray;
        }
 
@@ -1219,7 +1219,7 @@ class OutputPage extends ContextSource {
         * @param array $newLinkArray Associative array mapping language code to the page
         *                      name
         */
-       public function setLanguageLinks( $newLinkArray ) {
+       public function setLanguageLinks( array $newLinkArray ) {
                $this->mLanguageLinks = $newLinkArray;
        }
 
@@ -1237,7 +1237,7 @@ class OutputPage extends ContextSource {
         *
         * @param array $categories Mapping category name => sort key
         */
-       public function addCategoryLinks( $categories ) {
+       public function addCategoryLinks( array $categories ) {
                global $wgContLang;
 
                if ( !is_array( $categories ) || count( $categories ) == 0 ) {
@@ -1303,7 +1303,7 @@ class OutputPage extends ContextSource {
         *
         * @param array $categories Mapping category name => sort key
         */
-       public function setCategoryLinks( $categories ) {
+       public function setCategoryLinks( array $categories ) {
                $this->mCategoryLinks = array();
                $this->addCategoryLinks( $categories );
        }
@@ -1401,7 +1401,7 @@ class OutputPage extends ContextSource {
         * @param array $attribs
         * @param string $contents
         */
-       public function addElement( $element, $attribs = array(), $contents = '' ) {
+       public function addElement( $element, array $attribs = array(), $contents = '' ) {
                $this->addHTML( Html::element( $element, $attribs, $contents ) );
        }
 
@@ -1971,7 +1971,7 @@ class OutputPage extends ContextSource {
         * Get the prevent-clickjacking flag
         *
         * @since 1.24
-        * @return boolean
+        * @return bool
         */
        public function getPreventClickjacking() {
                return $this->mPreventClickjacking;
@@ -2262,7 +2262,7 @@ class OutputPage extends ContextSource {
         * @param array $errors Error message keys
         * @param string $action Action that was denied or null if unknown
         */
-       public function showPermissionsErrorPage( $errors, $action = null ) {
+       public function showPermissionsErrorPage( array $errors, $action = null ) {
                // For some action (read, edit, create and upload), display a "login to do this action"
                // error if all of the following conditions are met:
                // 1. the user is not logged in
@@ -2367,7 +2367,7 @@ class OutputPage extends ContextSource {
         * @param string $action Action that was denied or null if unknown
         * @return string The wikitext error-messages, formatted into a list.
         */
-       public function formatPermissionsErrorMessage( $errors, $action = null ) {
+       public function formatPermissionsErrorMessage( array $errors, $action = null ) {
                if ( $action == null ) {
                        $text = $this->msg( 'permissionserrorstext', count( $errors ) )->plain() . "\n\n";
                } else {
@@ -2420,7 +2420,7 @@ class OutputPage extends ContextSource {
         * @throws ReadOnlyError
         */
        public function readOnlyPage( $source = null, $protected = false,
-               $reasons = array(), $action = null
+               array $reasons = array(), $action = null
        ) {
                $this->setRobotPolicy( 'noindex,nofollow' );
                $this->setArticleRelated( false );
@@ -2539,7 +2539,7 @@ $templates
         * @param string $text Text of the link (input is not escaped)
         * @param array $options Options array to pass to Linker
         */
-       public function addReturnTo( $title, $query = array(), $text = null, $options = array() ) {
+       public function addReturnTo( $title, array $query = array(), $text = null, $options = array() ) {
                $link = $this->msg( 'returnto' )->rawParams(
                        Linker::link( $title, $text, array(), $query, $options ) )->escaped();
                $this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
@@ -2873,7 +2873,7 @@ $templates
         * @param array $links
         * @return string HTML
         */
-       protected static function getHtmlFromLoaderLinks( Array $links ) {
+       protected static function getHtmlFromLoaderLinks( array $links ) {
                $html = '';
                $states = array();
                foreach ( $links as $link ) {
@@ -3642,7 +3642,7 @@ $templates
         * @param array $options Option, can contain 'condition', 'dir', 'media' keys
         * @return string HTML fragment
         */
-       protected function styleLink( $style, $options ) {
+       protected function styleLink( $style, array $options ) {
                if ( isset( $options['dir'] ) ) {
                        if ( $this->getLanguage()->getDir() != $options['dir'] ) {
                                return '';
@@ -3803,7 +3803,7 @@ $templates
         * @since 1.16
         * @deprecated since 1.17
         */
-       public function includeJQuery( $modules = array() ) {
+       public function includeJQuery( array $modules = array() ) {
                return array();
        }
 
index 084d6ab..eb29e41 100644 (file)
@@ -579,12 +579,16 @@ class Preferences {
                ## Skin #####################################
                global $wgAllowUserCss, $wgAllowUserJs;
 
-               $defaultPreferences['skin'] = array(
-                       'type' => 'radio',
-                       'options' => self::generateSkinOptions( $user, $context ),
-                       'label' => '&#160;',
-                       'section' => 'rendering/skin',
-               );
+               // Skin selector, if there is at least one valid skin
+               $skinOptions = self::generateSkinOptions( $user, $context );
+               if ( $skinOptions ) {
+                       $defaultPreferences['skin'] = array(
+                               'type' => 'radio',
+                               'options' => $skinOptions,
+                               'label' => '&#160;',
+                               'section' => 'rendering/skin',
+                       );
+               }
 
                # Create links to user CSS/JS pages for all skins
                # This code is basically copied from generateSkinOptions().  It'd
@@ -1064,12 +1068,14 @@ class Preferences {
                }
                asort( $validSkinNames );
 
+               $foundDefault = false;
                foreach ( $validSkinNames as $skinkey => $sn ) {
                        $linkTools = array();
 
                        # Mark the default skin
                        if ( $skinkey == $wgDefaultSkin ) {
                                $linkTools[] = $context->msg( 'default' )->escaped();
+                               $foundDefault = true;
                        }
 
                        # Create preview link
@@ -1094,6 +1100,12 @@ class Preferences {
                        $ret[$display] = $skinkey;
                }
 
+               if ( !$foundDefault ) {
+                       // If the default skin is not available, things are going to break horribly because the
+                       // default value for skin selector will not be a valid value. Let's just not show it then.
+                       return array();
+               }
+
                return $ret;
        }
 
index 03c529e..935fa15 100644 (file)
@@ -78,14 +78,6 @@ if ( $wgExtensionAssetsPath === false ) {
        $wgExtensionAssetsPath = "$wgScriptPath/extensions";
 }
 
-// Enable default skins. Temporary, to be removed before 1.24 release.
-// This is hacky and bad, the require_once calls should eventually be generated by the installer
-// and placed in LocalSettings.php.
-// While this is in Setup.php, it needs to be done as soon as possible, as some of the setup code
-// depends on all extensions and skins being already required (bug 67318).
-require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
-require_once "$wgStyleDirectory/Vector/Vector.php";
-
 if ( $wgLogo === false ) {
        $wgLogo = "$wgStylePath/common/images/wiki.png";
 }
@@ -271,6 +263,10 @@ if ( $wgSkipSkin ) {
        $wgSkipSkins[] = $wgSkipSkin;
 }
 
+// Register a hidden "fallback" skin
+$wgValidSkinNames['fallback'] = 'Fallback'; // SkinFallback
+$wgSkipSkins[] = 'fallback';
+
 if ( $wgLocalInterwiki ) {
        array_unshift( $wgLocalInterwikis, $wgLocalInterwiki );
 }
index fd737c0..a59d567 100644 (file)
@@ -220,7 +220,7 @@ abstract class Skin extends ContextSource {
                                # is no longer valid.
                                wfDebug( "Skin class does not exist: $className\n" );
 
-                               $fallback = $skinNames[ Skin::normalizeKey( $wgFallbackSkin ) ];
+                               $fallback = $skinNames[Skin::normalizeKey( $wgFallbackSkin )];
                                $className = "Skin{$fallback}";
                        }
                }
diff --git a/includes/SkinFallback.php b/includes/SkinFallback.php
new file mode 100644 (file)
index 0000000..f50eabc
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Skin file for the fallback skin.
+ *
+ * The structure is copied from the example skin (mediawiki/skins/Example).
+ *
+ * @since 1.24
+ * @file
+ */
+
+/**
+ * SkinTemplate class for the fallback skin
+ */
+class SkinFallback extends SkinTemplate {
+       var $skinname = 'fallback', $template = 'SkinFallbackTemplate';
+
+       /**
+        * Add CSS via ResourceLoader
+        *
+        * @param $out OutputPage
+        */
+       function setupSkinUserCss( OutputPage $out ) {
+               parent::setupSkinUserCss( $out );
+               $out->addModuleStyles( 'mediawiki.skinning.interface' );
+       }
+}
+
+/**
+ * BaseTemplate class for the fallback skin
+ */
+class SkinFallbackTemplate extends BaseTemplate {
+       /**
+        * @return array
+        */
+       private function findInstalledSkins() {
+               $styleDirectory = $this->config->get( 'StyleDirectory' ); // @todo we should inject this directly?
+               // Get all subdirectories which might contains skins
+               $possibleSkins = scandir( $styleDirectory );
+               $possibleSkins = array_filter( $possibleSkins, function ( $maybeDir ) use ( $styleDirectory ) {
+                       return $maybeDir !== '.' && $maybeDir !== '..' && is_dir( "$styleDirectory/$maybeDir" );
+               } );
+
+               // Only keep the ones that contain a .php file with the same name inside
+               $possibleSkins = array_filter( $possibleSkins, function ( $skinDir ) use ( $styleDirectory ) {
+                       return is_file( "$styleDirectory/$skinDir/$skinDir.php" );
+               } );
+
+               return $possibleSkins;
+       }
+
+       /**
+        * Inform the user why they are seeing this skin.
+        *
+        * @return string
+        */
+       private function buildHelpfulInformationMessage() {
+               $defaultSkin = $this->config->get( 'DefaultSkin' );
+               $installedSkins = $this->findInstalledSkins();
+               $enabledSkins = $this->config->get( 'ValidSkinNames' );
+               $enabledSkins = array_change_key_case( $enabledSkins, CASE_LOWER );
+
+               if ( $installedSkins ) {
+                       $skinsInstalledText = array();
+                       $skinsInstalledSnippet = array();
+
+                       foreach ( $installedSkins as $skin ) {
+                               $normalizedKey = strtolower( $skin );
+                               $isEnabled = array_key_exists( $normalizedKey, $enabledSkins );
+                               if ( $isEnabled ) {
+                                       $skinsInstalledText[] = $this->getMsg( 'default-skin-not-found-row-enabled' )
+                                               ->params( $normalizedKey, $skin )->plain();
+                               } else {
+                                       $skinsInstalledText[] = $this->getMsg( 'default-skin-not-found-row-disabled' )
+                                               ->params( $normalizedKey, $skin )->plain();
+                                       $skinsInstalledSnippet[] = "require_once \"\$IP/skins/$skin/$skin.php\";";
+                               }
+                       }
+
+                       return $this->getMsg( 'default-skin-not-found' )->params(
+                               $defaultSkin,
+                               implode( "\n", $skinsInstalledText ),
+                               implode( "\n", $skinsInstalledSnippet )
+                       )->parseAsBlock();
+               } else {
+                       return $this->getMsg( 'default-skin-not-found-no-skins' )->params(
+                               $defaultSkin
+                       )->parseAsBlock();
+               }
+       }
+
+       /**
+        * Outputs the entire contents of the page. No navigation (other than search box), just the big
+        * warning message and page content.
+        */
+       public function execute() {
+               $this->html( 'headelement' ) ?>
+
+               <div class="warningbox">
+                       <?php echo $this->buildHelpfulInformationMessage() ?>
+               </div>
+
+               <form action="<?php $this->text( 'wgScript' ) ?>">
+                       <input type="hidden" name="title" value="<?php $this->text( 'searchtitle' ) ?>" />
+                       <h3><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
+                       <?php echo $this->makeSearchInput( array( "id" => "searchInput" ) ) ?>
+                       <?php echo $this->makeSearchButton( 'go' ) ?>
+               </form>
+
+               <div class="mw-body" role="main">
+                       <h1 class="firstHeading">
+                               <span dir="auto"><?php $this->html( 'title' ) ?></span>
+                       </h1>
+
+                       <div class="mw-body-content">
+                               <?php $this->html( 'bodytext' ) ?>
+                               <?php $this->html( 'catlinks' ) ?>
+                       </div>
+               </div>
+
+               <?php $this->printTrail() ?>
+               </body></html>
+
+               <?php
+       }
+}
index 52e72e8..9ed7fed 100644 (file)
@@ -105,7 +105,7 @@ class SkinTemplate extends Skin {
         * @private
         */
        function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
-               return new $classname();
+               return new $classname( $this->getConfig() );
        }
 
        /**
@@ -1371,12 +1371,20 @@ class SkinTemplate extends Skin {
  * @ingroup Skins
  */
 abstract class QuickTemplate {
+
+       /** @var Config $config */
+       protected $config;
        /**
-        * Constructor
+        * @var Config $config
         */
-       function __construct() {
+       function __construct( Config $config = null ) {
                $this->data = array();
                $this->translator = new MediaWikiI18N();
+               if ( $config === null ) {
+                       wfDebug( __METHOD__ . ' was called with no Config instance passed to it' );
+                       $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+               }
+               $this->config = $config;
        }
 
        /**
index 6891975..8e06087 100644 (file)
@@ -1655,6 +1655,8 @@ class Title {
         * $wgServer is prepended to make an absolute URL.
         *
         * @see self::getFullURL to always get an absolute URL.
+        * @see self::getLinkURL to always get a URL that's the simplest URL that will be
+        *  valid to link, locally, to the current Title.
         * @see self::newFromText to produce a Title object.
         *
         * @param string|array $query An optional query string,
index a21119a..fe41187 100644 (file)
@@ -181,8 +181,16 @@ class User implements IDBAccessObject {
 
        public $mRealName;
 
+       /**
+        * @todo Make this actually private
+        * @private
+        */
        public $mPassword;
 
+       /**
+        * @todo Make this actually private
+        * @private
+        */
        public $mNewpassword;
 
        public $mNewpassTime;
@@ -2247,6 +2255,26 @@ class User implements IDBAccessObject {
                return $this->mTouched;
        }
 
+       /**
+        * @return Password
+        * @since 1.24
+        */
+       public function getPassword() {
+               $this->loadPasswords();
+
+               return $this->mPassword;
+       }
+
+       /**
+        * @return Password
+        * @since 1.24
+        */
+       public function getTemporaryPassword() {
+               $this->loadPasswords();
+
+               return $this->mNewpassword;
+       }
+
        /**
         * Set the password and reset the random token.
         * Calls through to authentication plugin if necessary;
@@ -2266,6 +2294,8 @@ class User implements IDBAccessObject {
        public function setPassword( $str ) {
                global $wgAuth;
 
+               $this->loadPasswords();
+
                if ( $str !== null ) {
                        if ( !$wgAuth->allowPasswordChange() ) {
                                throw new PasswordError( wfMessage( 'password-change-forbidden' )->text() );
@@ -2352,7 +2382,7 @@ class User implements IDBAccessObject {
         * @param bool $throttle If true, reset the throttle timestamp to the present
         */
        public function setNewpassword( $str, $throttle = true ) {
-               $this->load();
+               $this->loadPasswords();
 
                if ( $str === null ) {
                        $this->mNewpassword = '';
index c6fcdde..4c9e85d 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
  *
  * @file
- */
-
-/**
- * @defgroup Actions Action done on pages
+ * @ingroup Actions
  */
 
 /**
  * An action which shows a form and does something based on the input from the form
+ *
+ * @ingroup Actions
  */
 abstract class FormAction extends Action {
 
index f61fc97..a6f1e29 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
  *
  * @file
- */
-
-/**
- * @defgroup Actions Action done on pages
+ * @ingroup Actions
  */
 
 /**
  * An action which just does something, without showing a form first.
+ *
+ * @ingroup Actions
  */
 abstract class FormlessAction extends Action {
 
index 8b2bfaa..2c2b470 100644 (file)
@@ -46,21 +46,3 @@ class ProtectAction extends FormlessAction {
        }
 }
 
-/**
- * Handle page unprotection
- *
- * This is a wrapper that will call Article::unprotect().
- *
- * @ingroup Actions
- */
-class UnprotectAction extends ProtectAction {
-
-       public function getName() {
-               return 'unprotect';
-       }
-
-       public function show() {
-
-               $this->page->unprotect();
-       }
-}
diff --git a/includes/actions/UnprotectAction.php b/includes/actions/UnprotectAction.php
new file mode 100644 (file)
index 0000000..6234aba
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * action=unprotect handler
+ *
+ * Copyright © 2012 Timo Tijhof
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ * @author Timo Tijhof
+ */
+
+/**
+ * Handle page unprotection
+ *
+ * This is a wrapper that will call Article::unprotect().
+ *
+ * @ingroup Actions
+ */
+class UnprotectAction extends ProtectAction {
+
+       public function getName() {
+               return 'unprotect';
+       }
+
+       public function show() {
+
+               $this->page->unprotect();
+       }
+}
\ No newline at end of file
diff --git a/includes/actions/UnwatchAction.php b/includes/actions/UnwatchAction.php
new file mode 100644 (file)
index 0000000..e2e5a1d
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Performs the unwatch actions on a page
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+/**
+ * Page removal from a user's watchlist
+ *
+ * @ingroup Actions
+ */
+class UnwatchAction extends WatchAction {
+
+       public function getName() {
+               return 'unwatch';
+       }
+
+       protected function getDescription() {
+               return $this->msg( 'removewatch' )->escaped();
+       }
+
+       public function onSubmit( $data ) {
+               wfProfileIn( __METHOD__ );
+               self::doUnwatch( $this->getTitle(), $this->getUser() );
+               wfProfileOut( __METHOD__ );
+
+               return true;
+       }
+
+       protected function alterForm( HTMLForm $form ) {
+               $form->setSubmitTextMsg( 'confirm-unwatch-button' );
+       }
+
+       protected function preText() {
+               return $this->msg( 'confirm-unwatch-top' )->parse();
+       }
+
+       public function onSuccess() {
+               $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
+       }
+}
index 2c7502e..cc18d3d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Performs the watch and unwatch actions on a page
+ * Performs the watch actions on a page
  *
  * 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
@@ -82,14 +82,7 @@ class WatchAction extends FormAction {
        protected function checkCanExecute( User $user ) {
                // Must be logged in
                if ( $user->isAnon() ) {
-                       $loginreqlink = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Userlogin' ),
-                               $this->msg( 'loginreqlink' )->escaped(),
-                               array(),
-                               array( 'returnto' => $this->getPageTitle(), 'returntoquery' => 'action=' . $this->getName() )
-                       );
-                       $reasonMsg = $this->msg( 'watchlistanontext' )->rawParams( $loginreqlink );
-                       throw new UserNotLoggedIn( $reasonMsg, 'watchnologin' );
+                       throw new UserNotLoggedIn( 'watchlistanontext', 'watchnologin' );
                }
 
                return parent::checkCanExecute( $user );
@@ -217,39 +210,3 @@ class WatchAction extends FormAction {
                $this->getOutput()->addWikiMsg( 'addedwatchtext', $this->getTitle()->getPrefixedText() );
        }
 }
-
-/**
- * Page removal from a user's watchlist
- *
- * @ingroup Actions
- */
-class UnwatchAction extends WatchAction {
-
-       public function getName() {
-               return 'unwatch';
-       }
-
-       protected function getDescription() {
-               return $this->msg( 'removewatch' )->escaped();
-       }
-
-       public function onSubmit( $data ) {
-               wfProfileIn( __METHOD__ );
-               self::doUnwatch( $this->getTitle(), $this->getUser() );
-               wfProfileOut( __METHOD__ );
-
-               return true;
-       }
-
-       protected function alterForm( HTMLForm $form ) {
-               $form->setSubmitTextMsg( 'confirm-unwatch-button' );
-       }
-
-       protected function preText() {
-               return $this->msg( 'confirm-unwatch-top' )->parse();
-       }
-
-       public function onSuccess() {
-               $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
-       }
-}
index 5d20005..3a0ed46 100644 (file)
@@ -52,7 +52,7 @@ abstract class ApiFormatBase extends ApiBase {
        }
 
        /**
-        * Overriding class returns the mime type that should be sent to the client.
+        * Overriding class returns the MIME type that should be sent to the client.
         * This method is not called if getIsHtml() returns true.
         * @return string
         */
index 8226529..fdf3f02 100644 (file)
@@ -59,13 +59,55 @@ class ApiModuleManager extends ContextSource {
        }
 
        /**
-        * Add a list of modules to the manager
-        * @param array $modules A map of ModuleName => ModuleClass
+        * Add a list of modules to the manager. Each module is described
+        * by a module spec.
+        *
+        * Each module spec is an associative array containing at least
+        * the 'class' key for the module's class, and optionally a
+        * 'factory' key for the factory function to use for the module.
+        *
+        * That factory function will be called with two parameters,
+        * the parent module (an instance of ApiBase, usually ApiMain)
+        * and the name the module was registered under. The return
+        * value must be an instance of the class given in the 'class'
+        * field.
+        *
+        * For backward compatibility, the module spec may also be a
+        * simple string containing the module's class name. In that
+        * case, the class' constructor will be called with the parent
+        * module and module name as parameters, as described above.
+        *
+        * Examples for defining module specs:
+        *
+        * @code
+        *  $modules['foo'] = 'ApiFoo';
+        *  $modules['bar'] = array(
+        *      'class' => 'ApiBar',
+        *      'factory' => function( $main, $name ) { ... }
+        *  );
+        *  $modules['xyzzy'] = array(
+        *      'class' => 'ApiXyzzy',
+        *      'factory' => array( 'XyzzyFactory', 'newApiModule' )
+        *  );
+        * @endcode
+        *
+        * @param array $modules A map of ModuleName => ModuleSpec; The ModuleSpec
+        *        is either a string containing the module's class name, or an associative
+        *        array (see above for details).
         * @param string $group Which group modules belong to (action,format,...)
         */
        public function addModules( array $modules, $group ) {
-               foreach ( $modules as $name => $class ) {
-                       $this->addModule( $name, $group, $class );
+
+               foreach ( $modules as $name => $moduleSpec ) {
+                       if ( is_array( $moduleSpec ) ) {
+                               $class = $moduleSpec['class'];
+                               $factory = ( isset( $moduleSpec['factory'] ) ? $moduleSpec['factory'] : null );
+                       } else {
+                               $class = $moduleSpec;
+                               $factory = null;
+                       }
+
+                       $this->addModule( $name, $group, $class, $factory );
                }
        }
 
@@ -74,37 +116,61 @@ class ApiModuleManager extends ContextSource {
         * classes who wish to add their own modules to their lexicon or override the
         * behavior of inherent ones.
         *
-        * @param string $group Name of the module group
         * @param string $name The identifier for this module.
+        * @param string $group Name of the module group
         * @param string $class The class where this module is implemented.
+        * @param callable|null $factory Callback for instantiating the module.
+        *
+        * @throws InvalidArgumentException
         */
-       public function addModule( $name, $group, $class ) {
+       public function addModule( $name, $group, $class, $factory = null ) {
+               if ( !is_string( $name ) ) {
+                       throw new InvalidArgumentException( '$name must be a string' );
+               }
+
+               if ( !is_string( $group ) ) {
+                       throw new InvalidArgumentException( '$group must be a string' );
+               }
+
+               if ( !is_string( $class ) ) {
+                       throw new InvalidArgumentException( '$class must be a string' );
+               }
+
+               if ( $factory !== null && !is_callable( $factory ) ) {
+                       throw new InvalidArgumentException( '$factory must be a callable (or null)' );
+               }
+
                $this->mGroups[$group] = null;
-               $this->mModules[$name] = array( $group, $class );
+               $this->mModules[$name] = array( $group, $class, $factory );
        }
 
        /**
         * Get module instance by name, or instantiate it if it does not exist
+        *
         * @param string $moduleName Module name
         * @param string $group Optionally validate that the module is in a specific group
         * @param bool $ignoreCache If true, force-creates a new instance and does not cache it
-        * @return mixed The new module instance, or null if failed
+        *
+        * @return ApiBase|null The new module instance, or null if failed
         */
        public function getModule( $moduleName, $group = null, $ignoreCache = false ) {
                if ( !isset( $this->mModules[$moduleName] ) ) {
                        return null;
                }
-               $grpCls = $this->mModules[$moduleName];
-               if ( $group !== null && $grpCls[0] !== $group ) {
+
+               list( $moduleGroup, $moduleClass, $moduleFactory ) = $this->mModules[$moduleName];
+
+               if ( $group !== null && $moduleGroup !== $group ) {
                        return null;
                }
+
                if ( !$ignoreCache && isset( $this->mInstances[$moduleName] ) ) {
                        // already exists
                        return $this->mInstances[$moduleName];
                } else {
                        // new instance
-                       $class = $grpCls[1];
-                       $instance = new $class ( $this->mParent, $moduleName );
+                       $instance = $this->instantiateModule( $moduleName, $moduleClass, $moduleFactory );
+
                        if ( !$ignoreCache ) {
                                // cache this instance in case it is needed later
                                $this->mInstances[$moduleName] = $instance;
@@ -114,6 +180,32 @@ class ApiModuleManager extends ContextSource {
                }
        }
 
+       /**
+        * Instantiate the module using the given class or factory function.
+        *
+        * @param string $name The identifier for this module.
+        * @param string $class The class where this module is implemented.
+        * @param callable|null $factory Callback for instantiating the module.
+        *
+        * @throws MWException
+        * @return ApiBase
+        */
+       private function instantiateModule( $name, $class, $factory = null ) {
+               if ( $factory !== null ) {
+                       // create instance from factory
+                       $instance = call_user_func( $factory, $this->mParent, $name );
+
+                       if ( ! $instance instanceof $class ) {
+                               throw new MWException( "The factory function for module $name did not return an instance of $class!" );
+                       }
+               } else {
+                       // create instance from class name
+                       $instance = new $class( $this->mParent, $name );
+               }
+
+               return $instance;
+       }
+
        /**
         * Get an array of modules in a specific group or all if no group is set.
         * @param string $group Optional group filter
index 94727cb..606012c 100644 (file)
@@ -348,29 +348,29 @@ class ApiQuery extends ApiBase {
                $pageSet = $this->getPageSet();
                $result = $this->getResult();
 
-               // We don't check for a full result set here because we can't be adding
-               // more than 380K. The maximum revision size is in the megabyte range,
-               // and the maximum result size must be even higher than that.
+               // We can't really handle max-result-size failure here, but we need to
+               // check anyway in case someone set the limit stupidly low.
+               $fit = true;
 
                $values = $pageSet->getNormalizedTitlesAsResult( $result );
                if ( $values ) {
-                       $result->addValue( 'query', 'normalized', $values );
+                       $fit = $fit && $result->addValue( 'query', 'normalized', $values );
                }
                $values = $pageSet->getConvertedTitlesAsResult( $result );
                if ( $values ) {
-                       $result->addValue( 'query', 'converted', $values );
+                       $fit = $fit && $result->addValue( 'query', 'converted', $values );
                }
                $values = $pageSet->getInterwikiTitlesAsResult( $result, $this->mParams['iwurl'] );
                if ( $values ) {
-                       $result->addValue( 'query', 'interwiki', $values );
+                       $fit = $fit && $result->addValue( 'query', 'interwiki', $values );
                }
                $values = $pageSet->getRedirectTitlesAsResult( $result );
                if ( $values ) {
-                       $result->addValue( 'query', 'redirects', $values );
+                       $fit = $fit && $result->addValue( 'query', 'redirects', $values );
                }
                $values = $pageSet->getMissingRevisionIDsAsResult( $result );
                if ( $values ) {
-                       $result->addValue( 'query', 'badrevids', $values );
+                       $fit = $fit && $result->addValue( 'query', 'badrevids', $values );
                }
 
                // Page elements
@@ -426,12 +426,21 @@ class ApiQuery extends ApiBase {
                                // json treats all map keys as strings - converting to match
                                $pageIDs = array_map( 'strval', $pageIDs );
                                $result->setIndexedTagName( $pageIDs, 'id' );
-                               $result->addValue( 'query', 'pageids', $pageIDs );
+                               $fit = $fit && $result->addValue( 'query', 'pageids', $pageIDs );
                        }
 
                        $result->setIndexedTagName( $pages, 'page' );
-                       $result->addValue( 'query', 'pages', $pages );
+                       $fit = $fit && $result->addValue( 'query', 'pages', $pages );
                }
+
+               if ( !$fit ) {
+                       $this->dieUsage(
+                               'The value of $wgAPIMaxResultSize on this wiki is ' .
+                                       'too small to hold basic result information',
+                               'badconfig'
+                       );
+               }
+
                if ( $this->mParams['export'] ) {
                        $this->doExport( $pageSet, $result );
                }
index d0980e6..b27f6c2 100644 (file)
@@ -46,10 +46,11 @@ class ApiQueryAllUsers extends ApiQueryBase {
 
        public function execute() {
                $params = $this->extractRequestParams();
+               $activeUserDays = $this->getConfig()->get( 'ActiveUserDays' );
 
                if ( $params['activeusers'] ) {
                        // Update active user cache
-                       SpecialActiveUsers::mergeActiveUsers( 600 );
+                       SpecialActiveUsers::mergeActiveUsers( 600, $activeUserDays );
                }
 
                $db = $this->getDB();
@@ -161,7 +162,7 @@ class ApiQueryAllUsers extends ApiQueryBase {
                }
 
                if ( $params['activeusers'] ) {
-                       $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+                       $activeUserSeconds = $activeUserDays * 86400;
 
                        // Filter query to only include users in the active users cache
                        $this->addTables( 'querycachetwo' );
index 1c41113..5ed5873 100644 (file)
@@ -157,9 +157,6 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                if ( isset( $prop['timestamp'] ) ) {
                                        $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $result->getTimestamp() );
                                }
-                               if ( !is_null( $result->getScore() ) && isset( $prop['score'] ) ) {
-                                       $vals['score'] = $result->getScore();
-                               }
                                if ( isset( $prop['titlesnippet'] ) ) {
                                        $vals['titlesnippet'] = $result->getTitleSnippet( $terms );
                                }
index 7d6a7e4..3492972 100644 (file)
@@ -56,7 +56,7 @@ class ApiUndelete extends ApiBase {
                        $params['timestamps'][$i] = wfTimestamp( TS_MW, $ts );
                }
 
-               $pa = new PageArchive( $titleObj );
+               $pa = new PageArchive( $titleObj, $this->getConfig() );
                $retval = $pa->undelete(
                        ( isset( $params['timestamps'] ) ? $params['timestamps'] : array() ),
                        $params['reason'],
index cf87129..eb6a57a 100644 (file)
@@ -20,8 +20,6 @@
  * @file
  */
 
-define( 'MW_LC_VERSION', 2 );
-
 /**
  * Class for caching the contents of localisation files, Messages*.php
  * and *.i18n.php.
@@ -35,6 +33,8 @@ define( 'MW_LC_VERSION', 2 );
  * as grammatical transformation, is done by the caller.
  */
 class LocalisationCache {
+       const VERSION = 2;
+
        /** Configuration associative array */
        private $conf;
 
@@ -913,7 +913,7 @@ class LocalisationCache {
                # Add cache dependencies for any referenced globals
                $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
                $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
-               $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
+               $deps['version'] = new ConstantDependency( 'LocalisationCache::VERSION' );
 
                # Add dependencies to the cache entry
                $allData['deps'] = $deps;
index ff2f403..312d461 100644 (file)
@@ -41,16 +41,33 @@ class ConfigFactory {
         */
        protected $configs = array();
 
+       /**
+        * @var ConfigFactory
+        */
+       private static $self;
+
        public static function getDefaultInstance() {
-               static $self = null;
-               if ( !$self ) {
-                       $self = new self;
+               if ( !self::$self ) {
+                       self::$self = new self;
                        global $wgConfigRegistry;
                        foreach ( $wgConfigRegistry as $name => $callback ) {
-                               $self->register( $name, $callback );
+                               self::$self->register( $name, $callback );
                        }
                }
-               return $self;
+               return self::$self;
+       }
+
+       /**
+        * Destroy the default instance
+        * Should only be called inside unit tests
+        * @throws MWException
+        */
+       public static function destroyDefaultInstance() {
+               if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+                       throw new MWException( __METHOD__ . ' was called outside of unit tests' );
+               }
+
+               self::$self = null;
        }
 
        /**
diff --git a/includes/content/JSONContent.php b/includes/content/JSONContent.php
new file mode 100644 (file)
index 0000000..f55467f
--- /dev/null
@@ -0,0 +1,120 @@
+<?php
+/**
+ * JSON Content Model
+ *
+ * @file
+ *
+ * @author Ori Livneh <ori@wikimedia.org>
+ * @author Kunal Mehta <legoktm@gmail.com>
+ */
+
+/**
+ * Represents the content of a JSON content.
+ * @since 1.24
+ */
+class JSONContent extends TextContent {
+
+       public function __construct( $text, $modelId = CONTENT_MODEL_JSON ) {
+               parent::__construct( $text, $modelId );
+       }
+
+       /**
+        * Decodes the JSON into a PHP associative array.
+        * @return array
+        */
+       public function getJsonData() {
+               return FormatJson::decode( $this->getNativeData(), true );
+       }
+
+       /**
+        * @return bool Whether content is valid JSON.
+        */
+       public function isValid() {
+               return $this->getJsonData() !== null;
+       }
+
+       /**
+        * Pretty-print JSON
+        *
+        * @return bool|null|string
+        */
+       public function beautifyJSON() {
+               $decoded = FormatJson::decode( $this->getNativeData(), true );
+               if ( !is_array( $decoded ) ) {
+                       return null;
+               }
+               return FormatJson::encode( $decoded, true );
+
+       }
+
+       /**
+        * Beautifies JSON prior to save.
+        * @param Title $title Title
+        * @param User $user User
+        * @param ParserOptions $popts
+        * @return JSONContent
+        */
+       public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
+               return new self( $this->beautifyJSON() );
+       }
+
+       /**
+        * Set the HTML and add the appropriate styles
+        *
+        *
+        * @param Title $title
+        * @param int $revId
+        * @param ParserOptions $options
+        * @param bool $generateHtml
+        * @param ParserOutput $output
+        */
+       protected function fillParserOutput( Title $title, $revId,
+               ParserOptions $options, $generateHtml, ParserOutput &$output
+       ) {
+               if ( $generateHtml ) {
+                       $output->setText( $this->objectTable( $this->getJsonData() ) );
+                       $output->addModuleStyles( 'mediawiki.content.json' );
+               } else {
+                       $output->setText( '' );
+               }
+       }
+       /**
+        * Constructs an HTML representation of a JSON object.
+        * @param Array $mapping
+        * @return string HTML.
+        */
+       protected function objectTable( $mapping ) {
+               $rows = array();
+
+               foreach ( $mapping as $key => $val ) {
+                       $rows[] = $this->objectRow( $key, $val );
+               }
+               return Xml::tags( 'table', array( 'class' => 'mw-json' ),
+                       Xml::tags( 'tbody', array(), join( "\n", $rows ) )
+               );
+       }
+
+       /**
+        * Constructs HTML representation of a single key-value pair.
+        * @param string $key
+        * @param mixed $val
+        * @return string HTML.
+        */
+       protected function objectRow( $key, $val ) {
+               $th = Xml::elementClean( 'th', array(), $key );
+               if ( is_array( $val ) ) {
+                       $td = Xml::tags( 'td', array(), self::objectTable( $val ) );
+               } else {
+                       if ( is_string( $val ) ) {
+                               $val = '"' . $val . '"';
+                       } else {
+                               $val = FormatJson::encode( $val );
+                       }
+
+                       $td = Xml::elementClean( 'td', array( 'class' => 'value' ), $val );
+               }
+
+               return Xml::tags( 'tr', array(), $th . $td );
+       }
+
+}
diff --git a/includes/content/JSONContentHandler.php b/includes/content/JSONContentHandler.php
new file mode 100644 (file)
index 0000000..9d001da
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * JSON Schema Content Handler
+ *
+ * @file
+ *
+ * @author Ori Livneh <ori@wikimedia.org>
+ * @author Kunal Mehta <legoktm@gmail.com>
+ */
+
+/**
+ * @since 1.24
+ */
+class JSONContentHandler extends TextContentHandler {
+
+       /**
+        * The class name of objects that should be created
+        *
+        * @var string
+        */
+       protected $contentClass = 'JSONContent';
+
+       public function __construct( $modelId = CONTENT_MODEL_JSON ) {
+               parent::__construct( $modelId, array( CONTENT_FORMAT_JSON ) );
+       }
+
+       /**
+        * Unserializes a JSONContent object.
+        *
+        * @param string $text Serialized form of the content
+        * @param null|string $format The format used for serialization
+        *
+        * @return JSONContent
+        */
+       public function unserializeContent( $text, $format = null ) {
+               $this->checkFormat( $format );
+               return new $this->contentClass( $text );
+       }
+
+       /**
+        * Creates an empty JSONContent object.
+        *
+        * @return JSONContent
+        */
+       public function makeEmptyContent() {
+               return new $this->contentClass( '' );
+       }
+
+       /** JSON is English **/
+       public function getPageLanguage( Title $title, Content $content = null ) {
+               return wfGetLangObj( 'en' );
+       }
+
+       /** JSON is English **/
+       public function getPageViewLanguage( Title $title, Content $content = null ) {
+               return wfGetLangObj( 'en' );
+       }
+}
index 2c051ba..b847163 100644 (file)
@@ -297,13 +297,12 @@ class RequestContext implements IContextSource {
                        $e = new Exception;
                        wfDebugLog( 'recursion-guard', "Recursion detected:\n" . $e->getTraceAsString() );
 
-                       global $wgLanguageCode;
-                       $code = ( $wgLanguageCode ) ? $wgLanguageCode : 'en';
+                       $code = $this->getConfig()->get( 'LanguageCode' ) ? : 'en';
                        $this->lang = Language::factory( $code );
                } elseif ( $this->lang === null ) {
                        $this->recursion = true;
 
-                       global $wgLanguageCode, $wgContLang;
+                       global $wgContLang;
 
                        try {
                                $request = $this->getRequest();
@@ -314,7 +313,7 @@ class RequestContext implements IContextSource {
 
                                wfRunHooks( 'UserGetLanguageObject', array( $user, &$code, $this ) );
 
-                               if ( $code === $wgLanguageCode ) {
+                               if ( $code === $this->getConfig()->get( 'LanguageCode' ) ) {
                                        $this->lang = $wgContLang;
                                } else {
                                        $obj = Language::factory( $code );
@@ -364,15 +363,13 @@ class RequestContext implements IContextSource {
                        // If this is still null (the hook didn't run or didn't work)
                        // then go through the normal processing to load a skin
                        if ( $this->skin === null ) {
-                               global $wgHiddenPrefs;
-                               if ( !in_array( 'skin', $wgHiddenPrefs ) ) {
+                               if ( !in_array( 'skin', $this->getConfig()->get( 'HiddenPrefs' ) ) ) {
                                        # get the user skin
                                        $userSkin = $this->getUser()->getOption( 'skin' );
                                        $userSkin = $this->getRequest()->getVal( 'useskin', $userSkin );
                                } else {
                                        # if we're not allowing users to override, then use the default
-                                       global $wgDefaultSkin;
-                                       $userSkin = $wgDefaultSkin;
+                                       $userSkin = $this->getConfig()->get( 'DefaultSkin' );
                                }
 
                                $this->skin = Skin::newFromKey( $userSkin );
index df19a49..62d64eb 100644 (file)
@@ -1490,6 +1490,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param array $options Query options
         * @param array $join_conds Join conditions
         *
+        *
         * @param string|array $table
         *
         * May be either an array of table names, or a single string holding a table
index 9d89009..03ba0b2 100644 (file)
  */
 
 /**
- * Shows a generic "user is not logged in" error page.
+ * Redirect a user to the login page
  *
  * This is essentially an ErrorPageError exception which by default uses the
  * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
- * @see bug 37627
- * @since 1.20
+ *
+ * @note In order for this exception to redirect, the error message passed to the
+ * constructor has to be explicitly added to LoginForm::validErrorMessages. Otherwise,
+ * the user will just be shown the message rather than redirected.
  *
  * @par Example:
  * @code
  * }
  * @endcode
  *
+ * @see bug 37627
+ * @since 1.20
  * @ingroup Exception
  */
 class UserNotLoggedIn extends ErrorPageError {
 
        /**
+        * @note The value of the $reasonMsg parameter must be put into LoginForm::validErrorMessages
+        * if you want the user to be automatically redirected to the login form.
+        *
         * @param string $reasonMsg A message key containing the reason for the error.
         *        Optional, default: 'exception-nologin-text'
         * @param string $titleMsg A message key to set the page title.
@@ -62,4 +69,34 @@ class UserNotLoggedIn extends ErrorPageError {
        ) {
                parent::__construct( $titleMsg, $reasonMsg, $params );
        }
+
+       /**
+        * Redirect to Special:Userlogin if the specified message is compatible. Otherwise,
+        * show an error page as usual.
+        */
+       public function report() {
+               // If an unsupported message is used, don't try redirecting to Special:Userlogin,
+               // since the message may not be compatible.
+               if ( !in_array( $this->msg, LoginForm::$validErrorMessages ) ) {
+                       parent::report();
+               }
+
+               // Message is valid. Redirec to Special:Userlogin
+
+               $context = RequestContext::getMain();
+
+               $output = $context->getOutput();
+               $query = $context->getRequest()->getValues();
+               // Title will be overridden by returnto
+               unset( $query['title'] );
+               // Redirect to Special:Userlogin
+               $output->redirect( SpecialPage::getTitleFor( 'Userlogin' )->getFullURL( array(
+                       // Return to this page when the user logs in
+                       'returnto' => $context->getTitle()->getFullText(),
+                       'returntoquery' => wfArrayToCgi( $query ),
+                       'warning' => $this->msg,
+               ) ) );
+
+               $output->output();
+       }
 }
index 47bacb5..1659c62 100644 (file)
@@ -118,9 +118,9 @@ class FSFile {
                                $ext = self::extensionFromPath( $this->path );
                        }
 
-                       # mime type according to file contents
+                       # MIME type according to file contents
                        $info['file-mime'] = $this->getMimeType();
-                       # logical mime type
+                       # logical MIME type
                        $info['mime'] = $magic->improveTypeFromExtension( $info['file-mime'], $ext );
 
                        list( $info['major_mime'], $info['minor_mime'] ) = File::splitMime( $info['mime'] );
index 569f337..c06f6fc 100644 (file)
@@ -51,7 +51,7 @@ On files:
 * read a file into a string or  several files into a map of path names to strings
 * download a file or set of files to a temporary file (on a mounted file system)
 * get the SHA1 hash of a file
-* get various properties of a file (stat information, content time, mime information, ...)
+* get various properties of a file (stat information, content time, MIME information, ...)
 
 On directories:
 * get a list of files directly under a directory
index 735bf8a..a71acde 100644 (file)
@@ -383,7 +383,7 @@ class ArchivedFile {
        }
 
        /**
-        * Returns the mime type of the file.
+        * Returns the MIME type of the file.
         * @return string
         */
        public function getMimeType() {
index c6da1f1..a61002a 100644 (file)
@@ -679,7 +679,7 @@ abstract class File {
        }
 
        /**
-        * Returns the mime type of the file.
+        * Returns the MIME type of the file.
         * Overridden by LocalFile, UnregisteredLocalFile
         * STUB
         *
index 1eff1df..3ba47ff 100644 (file)
@@ -91,10 +91,10 @@ class LocalFile extends File {
        /** @var int Result of the query for the file's history (nextHistoryLine) */
        private $historyRes;
 
-       /** @var string Major mime type */
+       /** @var string Major MIME type */
        private $major_mime;
 
-       /** @var string Minor mime type */
+       /** @var string Minor MIME type */
        private $minor_mime;
 
        /** @var string Upload timestamp */
@@ -784,7 +784,7 @@ class LocalFile extends File {
        }
 
        /**
-        * Returns the mime type of the file.
+        * Returns the MIME type of the file.
         * @return string
         */
        function getMimeType() {
index 28304c2..7d77416 100644 (file)
@@ -529,6 +529,13 @@ abstract class Installer {
        public static function getExistingLocalSettings() {
                global $IP;
 
+               // You might be wondering why this is here. Well if you don't do this
+               // then some poorly-formed extensions try to call their own classes
+               // after immediately registering them. We really need to get extension
+               // registration out of the global scope and into a real format.
+               // @see https://bugzilla.wikimedia.org/67440
+               global $wgAutoloadClasses;
+
                wfSuppressWarnings();
                $_lsExists = file_exists( "$IP/LocalSettings.php" );
                wfRestoreWarnings();
index 1c0af17..7edb97c 100644 (file)
        "config-help-restart": "هل تريد إزالة البيانات المحفوظة التي قد قمت بإدخالها وإعادة تشغيل عملية التثبيت؟",
        "config-restart": "نعم، إعادة التشغيل",
        "config-env-php": "بي إتش بي $1 مثبت.",
-       "config-env-php-toolow": "بي إتش بي $1 مثبت.\nومع ذلك، يتطلب ميدياويكي بي إتش بي $2 أو أعلى.",
        "config-db-type": "نوع قاعدة البيانات:",
        "config-db-wiki-settings": "حدِّد هذا الويكي",
+       "config-db-name": "اسم قاعدة البيانات",
        "config-db-username": "اسم مستخدم قاعدة البيانات:",
        "config-db-password": "كلمة سر قاعدة البيانات:",
        "config-db-port": "منفذ قاعدة البيانات:",
+       "config-db-schema": "سكيما لميدياويكي",
        "config-type-mysql": "ماي إس كيو إل",
        "config-type-postgres": "بوستجر إس كيو إل",
        "config-type-sqlite": "إس كيو لايت",
        "config-type-oracle": "أوراكل",
+       "config-header-mysql": "إعدادات MySQL",
+       "config-header-postgres": "إعدادات PostgreSQL",
+       "config-header-sqlite": "إعدادات SQLite",
+       "config-header-oracle": "إعدادات أوراكل",
+       "config-invalid-db-type": "نوع قاعدة بيانات غير صحيح",
+       "config-mysql-engine": "محرك التخزين",
+       "config-mysql-innodb": "إنو دي بي",
+       "config-mysql-myisam": "ماي إسام",
+       "config-mysql-binary": "ثنائي",
+       "config-mysql-utf8": "يو تي إف-8",
        "config-site-name": "اسم الويكي:",
+       "config-site-name-blank": "أدخل اسم موقع.",
+       "config-project-namespace": "نطاق المشروع:",
+       "config-ns-generic": "المشروع",
+       "config-ns-site-name": "مثل اسم الويكي: $1",
+       "config-ns-other": "أخرى (حدد)",
+       "config-ns-other-default": "ماي ويكي",
+       "config-admin-box": "حساب إداري",
        "config-admin-name": "اسم المستخدم:",
        "config-admin-password": "كلمة السر:",
        "config-admin-password-confirm": "كلمة المرور مرة أخرى:",
+       "config-admin-name-blank": "أدخل اسم مستخدم لإداري.",
        "config-admin-email": "عنوان البريد الإلكتروني:",
        "config-optional-continue": "اسألني المزيد من الأسئلة",
        "config-optional-skip": "إنني أشعر بالملل بالفعل، فقط قم بتثبيت الويكي",
+       "config-profile": "ملف صلاحيات المستخدم:",
        "config-profile-wiki": "افتح ويكي",
+       "config-profile-no-anon": "إنشاء الحساب مطلوب",
        "config-profile-private": "ويكي خاص",
+       "config-license": "حقوق النسخ والترخيص:",
+       "config-license-none": "لا تذييل ترخيص",
+       "config-license-cc-by-sa": "المشاع الإبداعي النسبة للمؤلف المشاركة بالمثل",
+       "config-license-cc-by": "المشاع الإبداعي النسبة للمؤلف",
+       "config-license-cc-by-nc-sa": "المشاع الإبداعي النسبة للمؤلف غير تجاري المشاركة بالمثل",
        "config-license-pd": "ملكية عامة",
        "config-email-settings": "إعدادات البريد الإلكتروني",
+       "config-email-usertalk": "فعل إخطارات صفحات نقاش المستخدمين",
        "config-email-watchlist": "تمكين إشعارات قائمة المراقبة",
+       "config-email-sender": "يرجع عنوان البريد الإلكتروني:",
+       "config-upload-settings": "الصور وتحميل الملفات",
        "config-upload-enable": "تمكين تحميل الملفات",
+       "config-logo": "مسار الشعار:",
        "config-cc-again": "اختر مجددًا",
+       "config-advanced-settings": "ضبط متقدم",
        "config-extensions": "امتدادات",
+       "config-skins": "الواجهات",
+       "config-skins-use-as-default": "استخدم هذه الواجهة كافتراضية",
        "config-install-step-done": "نفذ",
        "config-install-step-failed": "فشل",
+       "config-install-extensions": "متضمنا الامتدادات",
+       "config-install-database": "إنشاء قاعدة البيانات",
+       "config-install-schema": "إنشاء السكيما",
+       "config-install-user": "إنشاء مستخدم قاعدة البيانات",
+       "config-install-user-alreadyexists": "المستخدم \"$1\" موجود بالفعل",
+       "config-install-user-create-failed": "إنشاء مستخدم \"$1\" فشل:$2",
+       "config-install-tables": "إنشاء الجداول",
+       "config-install-keys": "توليد المفاتيح السرية",
        "config-help": "مساعدة",
        "mainpagetext": "'''تم تثبيت ميدياويكي بنجاح.'''",
        "mainpagedocfooter": "استشر [//meta.wikimedia.org/wiki/Help:Contents دليل المستخدم] لمعلومات حول استخدام برنامج الويكي.\n\n== البداية ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings قائمة إعدادات الضبط]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ أسئلة متكررة حول ميدياويكي]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce القائمة البريدية الخاصة بإصدار ميدياويكي]"
index 79e16f1..d7dbd2c 100644 (file)
        "config-extensions-help": "Пашырэньні пададзеныя вышэй, былі знойдзеныя ў Вашай дырэкторыі <code>./extensions</code>.\n\nЯны могуць патрабаваць дадатковых наладаў, але іх можна ўключыць зараз",
        "config-skins": "Тэмы афармленьня",
        "config-skins-help": "Пералічаныя вышэй тэмы афармленьня знойдзеныя ў вашай тэчцы <code>./skins</code>. Вы мусіце ўключыць як мінімум адну, а таксама абраць тэму па змоўчаньні.",
+       "config-skins-use-as-default": "Выкарыстоўваць па змоўчаньні гэтую тэму афармленьня",
        "config-install-alreadydone": "'''Папярэджаньне:''' здаецца, што Вы ўжо ўсталёўвалі MediaWiki і спрабуеце зрабіць гэтай зноў.\nКалі ласка, перайдзіце на наступную старонку.",
        "config-install-begin": "Пасьля націску кнопкі «{{int:config-continue}}» пачнецца ўсталяваньне MediaWiki.\nКалі Вы жадаеце што-небудзь зьмяніць, націсьніце кнопку «{{int:config-back}}».",
        "config-install-step-done": "зроблена",
index e8db404..468bceb 100644 (file)
@@ -4,6 +4,7 @@
                        "Filipinayzd"
                ]
        },
+       "config-title": "Pabutang ka MediaWiki $1",
        "config-information": "Impormasyon",
        "config-your-language": "A kanimong sarita:",
        "config-wiki-language": "Sarita ka Wiki:",
        "config-db-host-oracle": "Database ka TNS:",
        "config-db-wiki-settings": "Mibdiron adin wiki",
        "config-db-name": "Ngaran ka database:",
+       "config-charset-mysql5-binary": "MySQL 4.1/5.0 binary",
+       "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-charset-mysql4": "MySQL 4.0 backwards-compatible UTF-8",
        "config-db-port": "Port ka database:",
        "config-db-schema": "Skema para sa MediaWiki:",
        "config-sqlite-dir": "Direktoryo ka data sa SQLite:",
        "config-oracle-def-ts": "Dating tablescape:",
        "config-oracle-temp-ts": "Temporaryong tablescape:",
+       "config-type-mysql": "MySQL (o compatible)",
+       "config-type-mssql": "Microsoft SQL Server",
+       "config-header-mysql": "MySQL settings",
+       "config-header-postgres": "PostgreSQL settings",
+       "config-header-sqlite": "SQLite settings",
+       "config-header-oracle": "Oracle settings",
+       "config-header-mssql": "Microsoft SQL Server settings",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-binary": "Binary",
+       "config-mysql-utf8": "UTF-8",
+       "config-site-name": "Ngaran ka wiki",
+       "config-site-name-blank": "Ibutang a ngaran ka site.",
+       "config-project-namespace": "Bibutangan ka proyekto:",
+       "config-ns-generic": "Proyekto",
+       "config-ns-other-default": "MyWiki",
+       "config-admin-password": "Password:",
+       "config-admin-password-confirm": "Password ulit:",
+       "config-admin-email": "Email address:",
        "config-profile-wiki": "Bukas na wiki",
        "config-profile-private": "Pribadong wiki",
+       "config-license-pd": "Pampublikong Domain",
+       "config-email-sender": "Pabalik na email adres:",
        "config-logo": "URL ko logo:",
        "config-cc-again": "Pumili dayday...",
        "config-install-step-done": "tapus na",
+       "config-install-user-alreadyexists": "Agko na ka user na \"$1\"",
+       "config-install-user-create-failed": "Sala a ginigibong user na \"$1\": $2",
        "config-help": "tabang"
 }
index 59eec45..19b02b5 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Peter Alberti",
                        "Christian List",
-                       "Tjernobyl"
+                       "Tjernobyl",
+                       "Thomsen"
                ]
        },
        "config-page-language": "Sprog",
        "config-page-name": "Navn",
        "config-page-options": "Indstillinger",
        "config-page-install": "Installer",
+       "config-page-complete": "Færdig",
+       "config-page-restart": "Genstarte installation",
+       "config-page-readme": "Læs mig",
+       "config-page-copying": "Kopiering",
+       "config-page-upgradedoc": "Opgradering",
+       "config-page-existingwiki": "Eksisterende wiki",
+       "config-help-restart": "Vil du rydde alle gemte data, du har indtastet og genstarte installationen?",
+       "config-restart": "Ja, genstarte den",
+       "config-env-php": "PHP  $1  er installeret.",
+       "config-db-type": "Databasetype:",
+       "config-db-host": "Database vært:",
+       "config-db-name": "Databasenavn:",
+       "config-mysql-old": "MySQL $1 eller nyere kræves. Du har $2.",
        "config-header-mysql": "MySQL-indstillinger",
        "config-header-postgres": "PostgreSQL-indstillinger",
        "config-header-sqlite": "SQLite-indstillinger",
index 101c19a..908d282 100644 (file)
@@ -55,7 +55,6 @@
        "config-env-good": "L'ambiente è stato controllato.\nÈ possibile installare MediaWiki.",
        "config-env-bad": "L'ambiente è stato controllato.\nNon è possibile installare MediaWiki.",
        "config-env-php": "PHP $1 è installato.",
-       "config-env-php-toolow": "PHP $1 è installato.\nTuttavia, MediaWiki richiede PHP $2 o superiore.",
        "config-unicode-using-utf8": "Usa Brion Vibber's utf8_normalize.so per la normalizzazione Unicode.",
        "config-unicode-using-intl": "Usa [http://pecl.php.net/intl l'estensione PECL intl] per la normalizzazione Unicode.",
        "config-unicode-pure-php-warning": "'''Attenzione:''' [http://pecl.php.net/intl l'estensione PECL intl] non è disponibile per gestire la normalizzazione Unicode, così si usa la lenta implementazione in puro PHP.\nSe esegui un sito ad alto traffico, dovresti leggere alcune considerazioni sulla [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalizzazione Unicode].",
@@ -63,7 +62,6 @@
        "config-no-db": "Impossibile trovare un driver adatto per il database! È necessario installare un driver per PHP.\nI seguenti formati di database sono supportati: $1.\n\nSe compili PHP autonomamente, riconfiguralo attivando un client database, per esempio utilizzando <code>./configure --with-mysqli</code>.\nQualora avessi installato PHP per mezzo di un pacchetto Debian o Ubuntu, allora devi installare anche il pacchetto <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attenzione''': è presente SQLite $1 mentre è richiesta la versione $2, SQLite non sarà disponibile.",
        "config-no-fts3": "'''Attenzione''': SQLite è compilato senza il [//sqlite.org/fts3.html modulo FTS3], le funzionalità di ricerca non saranno disponibili su questo backend.",
-       "config-register-globals": "'''Attenzione: le variabili PHP <code>[http://php.net/register_globals register globals]</code> sono attivate.'''\n'''Disattivale se possibile.''' MediaWiki funzionerà, ma il server sarà esposto a potenziali vulnerabilità di sicurezza.",
        "config-magic-quotes-runtime": "'''Errore: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] è attivato!''' Questa opzione interferisce in modo imprevedibile con l'inserimento dei dati. Non è possibile installare o utilizzare MediaWiki a meno che questa opzione non sia disabilitata.",
        "config-magic-quotes-sybase": "'''Errore: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] è attivato!''' Questa opzione interferisce in modo imprevedibile con l'inserimento dei dati. Non è possibile installare o utilizzare MediaWiki a meno che questa opzione non sia disabilitata.",
        "config-mbstring": "'''Errore: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] è attivato!''' Questa opzione causa errori e può interferire in modo imprevedibile coi dati. Non è possibile installare o utilizzare MediaWiki a meno che questa opzione non sia disabilitata.",
        "config-license-gfdl": "GNU Free Documentation License 1.3 o versioni successive",
        "config-license-pd": "Pubblico dominio",
        "config-license-cc-choose": "Seleziona una delle licenze Creative Commons",
-       "config-license-help": "Molti wiki pubblici rilasciano i loro contributi con una [http://freedomdefined.org/Definition licenza libera]. Questo aiuta a creare un senso di proprietà condivisa nella comunità e incoraggia a contribuire a lungo termine. Non è generalmente necessario per un wiki privato o aziendale.\n\nSe vuoi usare testi da Wikipedia, o desideri che Wikipedia possa essere in grado di accettare testi copiati dal tuo wiki, dovresti scegliere '''Creative Commons Attribution Share Alike'''.\n\nIn precedenza Wikipedia ha utilizzato la GNU Free Documentation License. La GFDL è una licenza valida, ma è di difficile comprensione e complica il riutilizzo dei contenuti.",
+       "config-license-help": "Molti wiki pubblici rilasciano i loro contributi con una [http://freedomdefined.org/Definition licenza libera]. Questo aiuta a creare un senso di proprietà condivisa nella comunità e incoraggia a contribuire a lungo termine. Non è generalmente necessario per un wiki privato o aziendale.\n\nSe vuoi usare testi da Wikipedia, o desideri che Wikipedia possa essere in grado di accettare testi copiati dal tuo wiki, dovresti scegliere <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nIn precedenza Wikipedia ha utilizzato la GNU Free Documentation License. La GFDL è una licenza valida, ma è di difficile comprensione e complica il riutilizzo dei contenuti.",
        "config-email-settings": "Impostazioni email",
        "config-enable-email": "Abilita la posta elettronica in uscita",
        "config-email-user": "Abilita invio email fra utenti",
index 80b8a09..39ebf87 100644 (file)
@@ -12,7 +12,8 @@
                        "Yanajin66",
                        "青子守歌",
                        "아라",
-                       "Shield-9"
+                       "Shield-9",
+                       "Takot"
                ]
        },
        "config-desc": "MediaWiki のインストーラー",
@@ -64,6 +65,8 @@
        "config-no-db": "適切なデータベース ドライバーが見つかりませんでした! PHP にデータベース ドライバーをインストールする必要があります。\n以下の種類のデータベースに対応しています: $1\n\nPHP を自分でコンパイルした場合は、例えば <code>./configure --with-mysqli</code> を実行して、データベース クライアントを使用できるように再設定してください。\nDebian または Ubuntu のパッケージから PHP をインストールした場合は、モジュール (例: <code>php5-mysql</code>) もインストールする必要があります。",
        "config-outdated-sqlite": "<strong>警告:</strong> あなたは SQLite $1 を使用していますが、最低限必要なバージョン $2 より古いバージョンです。SQLite は利用できません。",
        "config-no-fts3": "<strong>警告:</strong> SQLite は [//sqlite.org/fts3.html FTS3] モジュールなしでコンパイルされており、このバックエンドでは検索機能は利用できなくなります。",
+       "config-register-globals-error": "<strong>エラー: PHPの <code>[http://php.net/register_globals register_globals]</code> オプションが有効になっています。\nインストールを進めるには無効にしなければなりません。</strong>\nやり方については[https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] をご覧ください。",
+       "config-magic-quotes-gpc": "<strong>致命的なエラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] が有効になっています!</strong>\nこのオプションは予期せずしてデータ入力を破壊します。\nこのオプションを無効にするまで MediaWiki はインストールしたり使用したりはできません。",
        "config-magic-quotes-runtime": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
        "config-magic-quotes-sybase": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
        "config-mbstring": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] が動作しています!</strong>\nこのオプションは、エラーを引き起こし、予期せずデータを破壊するおそれがあります。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
@@ -74,6 +77,7 @@
        "config-memory-raised": "PHPの<code>memory_limit</code>は$1で、$2に引き上げられました。",
        "config-memory-bad": "<strong>警告:</strong> PHPの<code>memory_limit</code>に$1に設定されています。\nこの値はおそらく小さすぎます。\nインストールが失敗するおそれがあります!",
        "config-ctype": "<strong>致命的エラー:</strong> PHP は [http://www.php.net/manual/en/ctype.installation.php Ctype 拡張モジュール]のサポート付きでコンパイルされている必要があります。",
+       "config-iconv": "<strong>致命的なエラー:</strong> PHPは[http://www.php.net/manual/en/iconv.installation.php iconv 拡張機能]のサポートを有効にしてコンパイルされている必要があります。",
        "config-json": "<strong>致命的エラー:</strong> PHP は JSON サポートなしでコンパイルされています。\nPHP に JSON 拡張モジュールまたは [http://pecl.php.net/package/jsonc PECL jsonc] 拡張モジュールをインストールしてから、MediaWiki をインストールしてください。\n* Red Hat Enterprise Linux (CentOS) 5 および 6には PHP の拡張機能が含まれているため、<code>/etc/php.ini</code> または <code>/etc/php.d/json.ini</code> から有効にしてください。\n* 2013年5月以降にリリースされた一部の Linux ディストリビューションでは、PHP 拡張モジュールの代わりに、<code>php5-json</code> または <code>php-pecl-jsonc</code> として PECL が同梱されています。",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] がインストール済み",
        "config-apc": "[http://www.php.net/apc APC] がインストール済み",
@@ -91,6 +95,7 @@
        "config-using-server": "サーバー名「<nowiki>$1</nowiki>」を使用しています。",
        "config-using-uri": "サーバー URL「<nowiki>$1$2</nowiki>」を使用しています。",
        "config-uploads-not-safe": "<strong>警告:</strong> アップロードの既定ディレクトリ <code>$1</code> に、任意のスクリプト実行に関する脆弱性があります。\nMediaWiki はアップロードされたファイルのセキュリティ上の脅威を確認しますが、アップロードを有効化する前に、[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security このセキュリティ上の脆弱性を解決する]ことを強く推奨します。",
+       "config-no-cli-uploads-check": "<strong>警告:</strong> アップロード用のデフォルトディレクトリ (<code>$1</code>) が、CLIでのインストール中に任意のスクリプト実行の脆弱性チェックを受けていません。",
        "config-brokenlibxml": "このシステムで使われているPHPとlibxml2のバージョンのこの組み合わせにはバグがあります。具体的には、MediaWikiやその他のウェブアプリケーションでhiddenデータが破損する可能性があります。\nlibxml2を2.7.3以降のバージョンにアップグレードしてください([//bugs.php.net/bug.php?id=45996 PHPでのバグ情報])。\nインストールを終了します。",
        "config-suhosin-max-value-length": "Suhosin がインストールされており、GET パラメーターの <code>length</code> を $1 バイトに制限しています。\nMediaWiki の ResourceLoader コンポーネントはこの制限を回避しますが、パフォーマンスは低下します。\n可能な限り、<code>php.ini</code> で <code>suhosin.get.max_value_length</code> を 1024 以上に設定し、同じ値を <code>LocalSettings.php</code> 内で <code>$wgResourceLoaderMaxQueryLength</code> に設定してください。",
        "config-db-type": "データベースの種類:",
        "config-db-name": "データベース名:",
        "config-db-name-help": "このウィキを識別する名前を入力してください。\n空白を含めることはできません。\n\n共有ウェブホストを利用している場合、ホスティングプロバイダーが特定の使用可能なデータベース名を提供するか、あるいは管理パネルからデータベースを作成できるようにしているでしょう。",
        "config-db-name-oracle": "データベースのスキーマ:",
+       "config-db-account-oracle-warn": "バックエンドのデータベースとして Oracle をインストールする場合、3つのシナリオが考えられます。\n\nデータベース用のアカウントをインストールのプロセス途中で作成したい場合、インストールに使うデータベース用のアカウントしては SYSDBAロール付きのアカウントを指定し、ウェブアクセス用アカウントには必要なログイン情報を指定してください。あるいは、ウェブアクセス用のアカウントを手動で作成して、そのアカウント(スキーマオブジェクトの作成のパーミッションを要求する場合)だけを使うか、二つの異なるアカウントを用意して一つは特権を付与できるもの、もう一つをウェブアクセス用の制限アカウントとしてください。\n\n要求された特権でアカウントを作成するスクリプトは、このインストール環境では、\"maintenance/oracle/\" にあります。制限アカウントを使用することは、デフォルトアカウントでのすべてのメンテナンス特権を無効にすることにご注意ください。",
        "config-db-install-account": "インストールで使用する利用者アカウント",
        "config-db-username": "データベースのユーザー名:",
        "config-db-password": "データベースのパスワード:",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
+       "config-type-mssql": "マイクロソフト SQL Server",
        "config-support-info": "MediaWiki は以下のデータベース システムに対応しています:\n\n$1\n\n使用しようとしているデータベース システムが下記の一覧にない場合は、上記リンク先の手順に従ってインストールしてください。",
        "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL]はMediaWikiの主要な対象であり、最もよくサポートされています。MediaWikiはMySQLと互換性のある[{{int:version-db-mariadb-url}} MariaDB]、[{{int:version-db-percona-url}} Percona Server]でも動きます。 ([http://www.php.net/manual/ja/mysqli.installation.php PHPをMySQLサポート付きでコンパイルする方法])",
        "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] は、MySQLの代替として人気があるオープンソースのデータベースシステムです。細部の未解消バグがある場合があるため、プロダクション環境での使用は推奨されません。 ([http://www.php.net/manual/en/pgsql.installation.php PHPをPostgreSQLサポート付きでコンパイルする方法])",
        "config-invalid-db-prefix": "「$1」は無効なデータベース接頭辞です。\n半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_)、ハイフン (-) のみを使用してください。",
        "config-connection-error": "$1。\n\n以下のホスト名、ユーザー名、パスワードを確認してから再度試してください。",
        "config-invalid-schema": "「$1」は MediaWiki のスキーマとして無効です。\n半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_) のみを使用してください。",
+       "config-db-sys-create-oracle": "インストーラーは、新規アカウント作成にはSYSDBAアカウントの利用のみをサポートしています。",
        "config-db-sys-user-exists-oracle": "利用者アカウント「$1」は既に存在します。SYSDBA は新しいアカウントの作成のみに使用できます!",
        "config-postgres-old": "PostgreSQL $1 以降が必要です。ご使用中の PostgreSQL は $2 です。",
        "config-mssql-old": "Microsoft SQL Server $1 以降が必要です。ご使用中の Microsoft SQL Server は $2 です。",
        "config-mysql-engine": "ストレージ エンジン:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>警告:</strong> MySQLのストレージエンジンとして MyISAM を選択していますが、これをMediaWikiで利用するのは推奨されていません。その理由は: \n* テーブルロックによる並列性をほとんどサポートしていない\n* 他のエンジンに比べて壊れやすい\n* MediaWiki のコードベースは必ずしも MyISAM を本来あるべきほどには扱っていない\n\nあなたがインストールした MySQL が InnoDB をサポートしている場合、代わりにそちらをお使いになることを強くお勧めします。\nあなたがインストールした MySQL が InnoDB をサポートしていない場合、アップグレードした方がいいでしょう。",
+       "config-mysql-only-myisam-dep": "<strong>警告:</strong> MyISAM がこのマシンの MySQL の唯一のストレージエンジンですが、これをMediaWikiで利用するのは推奨されていません。その理由は: \n* テーブルロックによる並列性をほとんどサポートしていない\n* 他のエンジンに比べて壊れやすい\n* MediaWiki のコードベースは必ずしも MyISAM を本来あるべきほどには扱っていない\n\nあなたがインストールした MySQL が InnoDB をサポートしていない場合、アップグレードした方がいいでしょう。",
        "config-mysql-engine-help": "<strong>InnoDB</strong>は、並行処理のサポートに優れているので、ほとんどの場合において最良の選択肢です。\n\n<strong>MyISAM</strong>は、利用者が1人の場合、あるいは読み込み専用でインストールする場合に、より処理が早くなるでしょう。\nただし、MyISAMのデータベースは、InnoDBより高頻度で破損する傾向があります。",
        "config-mysql-charset": "データベースの文字セット:",
        "config-mysql-binary": "バイナリ",
        "config-ns-other-default": "マイウィキ",
        "config-project-namespace-help": "ウィキペディアの例に従い、多くのウィキは、コンテンツのページとは分離したポリシーページを「'''プロジェクトの名前空間'''」に持っています。\nこの名前空間内のページのページ名はすべて特定の接頭辞で始まります。それをここで指定できます。\n通常、この接頭辞はウィキ名に基づきますが、「#」や「:」のような区切り文字を含めることはできません。",
        "config-ns-invalid": "指定した名前空間「<nowiki>$1</nowiki>」は無効です。\n別のプロジェクト名前空間を指定してください。",
+       "config-ns-conflict": "指定された名前空間「\"<nowiki>$1</nowiki>\" 」は、MediaWikiのデフォルト名前空間と衝突しています。\n他のプロジェクト名前空間を指定してください。",
        "config-admin-box": "管理アカウント",
        "config-admin-name": "利用者名:",
        "config-admin-password": "パスワード:",
        "config-admin-error-bademail": "無効なメールアドレスを入力しました。",
        "config-subscribe": "[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce リリース告知のメーリングリスト]を購読する。",
        "config-subscribe-help": "これは、リリースの告知 (重要なセキュリティに関する案内を含む) に使用される、流量が少ないメーリングリストです。\nこのメーリングリストを購読して、新しいバージョンが出た場合にMediaWikiを更新してください。",
+       "config-subscribe-noemail": "メールアドレスなしでリリースアナウンスのメーリングリストを購読しようとしています。\nメーリングリストを購読する場合にはメールアドレスを入力してください。",
        "config-almost-done": "これでほぼ終わりました!\n残りの設定を飛ばして、ウィキを今すぐインストールできます。",
        "config-optional-continue": "私にもっと質問してください。",
        "config-optional-skip": "もう飽きてしまったので、とにかくウィキをインストールしてください。",
        "config-cache-memcached": "memcached を使用 (追加の設定が必要)",
        "config-memcached-servers": "memcached サーバー:",
        "config-memcached-help": "Memcachedを使用するIPアドレスの一覧。\nカンマ区切りで、利用する特定のポートの指定が必要です。例:\n127.0.0.1:11211\n192.168.1.25:1234",
+       "config-memcache-needservers": "キャッシュタイプに Memcached を選択しましたが、サーバーを指定していません。",
+       "config-memcache-badip": "Memcached用に無効な IPアドレス ($1) を入力しています。",
        "config-memcache-noport": "Memcached サーバー $1 で使用するポート番号を指定していません。\nポート番号が分からない場合、既定値は 11211 です。",
        "config-memcache-badport": "Memcached のポート番号は $1 から $2 の範囲にしてください。",
        "config-extensions": "拡張機能",
        "config-extensions-help": "<code>./extensions</code> ディレクトリ内で、上に列挙した拡張機能を検出しました。\n\nこれらの拡張機能には追加の設定が必要な場合がありますが、今すぐ有効化できます。",
        "config-skins": "外装",
+       "config-skins-help": "以上に挙げたスキンは<code>./skins</code>で検出されたものです。\n少なくともひとつを有効にして、デフォルトを選択してください。",
        "config-skins-use-as-default": "この外装をデフォルトとして使う",
+       "config-skins-missing": "外装が見つかりませんでした。適切なものをいくつかインストールするまで、MediaWikiはフォールバック外装を使用します。",
        "config-skins-must-enable-some": "少なくとも1つの有効化する外装を選択する必要があります。",
        "config-skins-must-enable-default": "デフォルトとして選択された外装は有効である必要があります。",
        "config-install-alreadydone": "<strong>警告:</strong> 既にMediaWikiがインストール済みで、再びインストールし直そうとしています。\n次のページへ進んでください。",
        "config-install-pg-schema-not-exist": "PostgreSQL スキーマがありません。",
        "config-install-pg-schema-failed": "テーブルの作成に失敗しました。\n利用者「$1」がスキーマ「$2」に書き込めるようにしてください。",
        "config-install-pg-commit": "変更を送信",
+       "config-install-pg-plpgsql": "PL/pgSQLの言語をチェックしています",
        "config-pg-no-plpgsql": "データベース $1 内に PL/pgSQL 言語をインストールする必要があります。",
+       "config-pg-no-create-privs": "インストール用に指定したアカウントには、アカウントを作成するのに十分な特権がありません。",
+       "config-pg-not-in-role": "ウェブユーザー用に指定したアカウントはすでに存在しています。\nインストール用に指定したアカウントはスーパーユーザーでなく、またウェブユーザーのロールを持ったものでもありません。そのためウェブユーザーが所有するオブジェクトを作成することができません。\n\nMediaWikiは現状では、ウェブユーザーが所有するテーブルを要求します。別のウェブアカウント名を指定するか、「戻る」をクリックして適切な権限を持つインストール用ユーザーを指定してください。",
        "config-install-user": "データベースユーザーの作成",
        "config-install-user-alreadyexists": "ユーザー「$1」は既に存在します",
        "config-install-user-create-failed": "ユーザー「$1」の作成に失敗しました: $2",
        "config-install-interwiki-exists": "<strong>警告:</strong> ウィキ間テーブルは既に登録されているようです。\n既定のテーブルを無視します。",
        "config-install-stats": "統計情報の初期化",
        "config-install-keys": "秘密鍵の生成",
+       "config-insecure-keys": "<strong>警告:</strong> インストール中に生成されたセキュアキー ($1) は完璧に安全ではありません。手動で変更することを検討してください。",
        "config-install-sysop": "管理者のアカウントの作成",
+       "config-install-subscribe-fail": "mediawiki-announce を購読できませんでした: $1",
        "config-install-subscribe-notpossible": "cURL がインストールされていないため、<code>allow_url_fopen</code> を利用できません。",
        "config-install-mainpage": "メインページを既定の内容で作成",
+       "config-install-extension-tables": "有効にした拡張機能のためのテーブルを作成しています",
        "config-install-mainpage-failed": "メインページを挿入できませんでした: $1",
        "config-install-done": "<strong>おめでとうございます!</strong>\nMediaWikiのインストールに成功しました。\n\n<code>LocalSettings.php</code>ファイルが生成されました。\nこのファイルはすべての設定を含んでいます。\n\nこれをダウンロードして、ウィキをインストールした基準ディレクトリ (index.phpと同じディレクトリ) に設置する必要があります。ダウンロードは自動的に開始されるはずです。\n\nダウンロードが開始されていない場合、またはダウンロードをキャンセルした場合は、下記のリンクをクリックしてダウンロードを再開できます:\n\n$3\n\n<strong>注意:</strong> この生成された設定ファイルをダウンロードせずにインストールを終了すると、このファイルは利用できなくなります。\n\n上記の作業が完了すると、<strong>[$2 ウィキに入る]</strong>ことができます。",
        "config-download-localsettings": "<code>LocalSettings.php</code> をダウンロード",
        "config-help": "ヘルプ",
        "config-help-tooltip": "クリックで展開",
        "config-nofile": "ファイル「$1」が見つかりませんでした。削除された可能性があります。",
+       "config-extension-link": "あなたのウィキは[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 拡張機能]をサポートしていることをご存知ですか?\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category カテゴリ別で拡張機能を見る]か[//www.mediawiki.org/wiki/Extension_Matrix 拡張機能のマトリックス]で拡張機能すべてのリストをご覧になれます。",
        "mainpagetext": "<strong>MediaWiki のインストールに成功しました。</strong>",
        "mainpagedocfooter": "ウィキソフトウェアの使い方に関する情報は[//meta.wikimedia.org/wiki/Help:Contents 利用者案内]を参照してください。\n\n== はじめましょう ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings/ja 設定の一覧]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/ja MediaWiki よくある質問と回答]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation/ja MediaWiki のあなたの言語へのローカライズ]"
 }
index 0735574..8d9aac2 100644 (file)
        "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-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|\"mediawiki-announce\" is the name of a mailing list and should not be translated.}}",
+       "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.",
        "config-install-mainpage": "*{{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-extension-tables": "Notice shown to the user during the install about progress.",
index 681e8ee..40f0902 100644 (file)
@@ -2,11 +2,12 @@
        "@metadata": {
                "authors": [
                        "Andria",
-                       "L2212"
+                       "L2212",
+                       "Uharteko"
                ]
        },
        "config-page-language": "Limba",
        "config-page-name": "Nùmene",
        "config-page-options": "Preferèntzias",
-       "mainpagetext": "'''MediaWiki est stadu installadu in modu currègidu.'''"
+       "mainpagetext": "'''MediaWiki est istadu installadu bene.'''"
 }
index 4cb5442..b46902c 100644 (file)
@@ -59,6 +59,7 @@
        "config-outdated-sqlite": "'''Varning:''' du har SQLite $1, vilket är lägre än minimikravet version $2. SQLite kommer inte att vara tillgänglig.",
        "config-no-fts3": "'''Varning:''' SQLite kompileras utan [//sqlite.org/fts3.html FTS3-modulen], sökfunktioner kommer att vara otillgängliga på denna backend.",
        "config-register-globals-error": "<strong>Fel: PHP-alternativet <code>[http://php.net/register_globals register_globals]</code> är aktiverad.\nDen måste vara inaktiverad för att fortsätta med installationen.</strong>\nSe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] för hjälp om hur man gör så.",
+       "config-magic-quotes-gpc": "<strong>Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_gpc är aktiv!</strong>\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
        "config-magic-quotes-runtime": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
        "config-magic-quotes-sybase": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
        "config-mbstring": "'''Kritiskt: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] är aktiv!'''\nDetta alternativ orsakar fel och kan korrumpera data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
@@ -69,6 +70,7 @@
        "config-memory-raised": "PHPs <code>memory_limit</code> är $1, ökad till $2.",
        "config-memory-bad": "''' Varning:''' PHP:s <code>memory_limit</code> är $1.\nDetta är förmodligen för lågt.\nInstallationen kan misslyckas!",
        "config-ctype": "'''Kritiskt:''' PHP måste kompileras med stöd för [http://www.php.net/manual/en/ctype.installation.php Ctype-tillägget].",
+       "config-iconv": "<strong>Kritiskt:</strong> PHP måste kompileras med stöd för [http://www.php.net/manual/en/iconv.installation.php iconv-tillägget].",
        "config-json": "'''Varning:''' PHP kompilerades utan JSON-stöd.\nDu måste antingen installera PHP JSON-tillägget eller [http://pecl.php.net/package/jsonc PECL jsonc]-tillägget före installationen av MediaWiki.\n* PHP-tillägget är inkluderat i Red Hat Enterprise Linux (CentOS) 5 och 6, men måste aktiveras i <code>/etc/php.ini</code> eller <code>/etc/php.d/json.ini</code>.\n* Vissa Linux-distributioner släppta efter maj 2013 har utelämnat PHP-tillägget och har istället inkluderat PECL-tillägget som <code>php5-json</code> eller <code>php-pecl-jsonc</code>.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] är installerat",
        "config-apc": "[http://www.php.net/apc APC] är installerat",
        "config-license-gfdl": "GNU Free Documentation License 1.3 eller senare",
        "config-license-pd": "Public Domain",
        "config-license-cc-choose": "Välj en anpassad Creative Commons-licens",
-       "config-license-help": "Många publika wikis släpper alla bidrag under en  [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>Creative Commons Erkännande-DelaLika</strong>.\n\nWikipedia använde tidigare  GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
+       "config-license-help": "Många publika wikis släpper alla bidrag under en  [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia använde tidigare  GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
        "config-email-settings": "E-postinställningar",
        "config-enable-email": "Aktivera utgående e-post",
        "config-enable-email-help": "Om du vill att e-post ska fungera behöver,[http://www.php.net/manual/en/mail.configuration.php PHPs e-postinställningar] vara konfigurerad på rätt sätt.\nOm du inte vill ha några e-postfunktioner, kan du inaktivera dem här.",
        "config-memcache-badport": "Memcached-portnummer bör vara mellan $1 och $2.",
        "config-extensions": "Tillägg",
        "config-extensions-help": "Tilläggen ovan upptäcktes i din <code>./extensions</code>-katalog.\n\nDe kan kräva ytterligare konfiguration, men du kan aktivera dem nu.",
+       "config-skins": "Utseenden",
+       "config-skins-help": "Utseenden som listas upp ovan identifierades i din filkatalog <code>./skins</code>. Du måste aktivera minst en och välja ett som standard.",
+       "config-skins-use-as-default": "Använd detta utseende som standard",
+       "config-skins-missing": "Ingen utseenden hittades; MediaWiki använder ett reservutseende tills du installerar några.",
+       "config-skins-must-enable-some": "Du måste välja minst ett utseende att aktivera.",
+       "config-skins-must-enable-default": "Utseendet som valdes som standard måste aktiveras.",
        "config-install-alreadydone": "''' Varning:''' Du verkar redan ha installerat MediaWiki och försöker installera det igen.\nVänligen fortsätt till nästa sida.",
        "config-install-begin": "Genom att trycka på \"{{int:config-continue}}\", påbörjar du installationen av MediaWiki.\nOm du fortfarande vill göra ändringar tryck på \"{{int:config-back}}\".",
        "config-install-step-done": "klar",
index ed7c44b..0309dba 100644 (file)
@@ -25,9 +25,9 @@
        "config-upgrade-key-missing": "已偵測到先前安裝的 MediaWiki。\n要升級目前安裝的版本,請將下列文字附加到 <code>LocalSettings.php</code> 的檔案最下方:\n\n$1",
        "config-localsettings-incomplete": "目前的 <code>LocalSettings.php</code> 檔案不完整。\n未設定參數 $1。\n請將此參數設定至 <code>LocalSettings.php</code> 中,並點選 \"{{int:Config-continue}}\"。",
        "config-localsettings-connection-error": "使用 <code>LocalSettings.php</code> 中所指定的資料庫設定連線發生錯誤。 請修復相關設定並再試一次。\n\n$1",
-       "config-session-error": "開始工作階段錯誤:$1",
-       "config-session-expired": "您的工作階段已過期。\n目前設定的工作階段期限為 $1。\n您可以在 php.ini 設定檔中設定 <code>session.gc_maxlifetime</code> 的參數來延長此期限。\n重新開始安裝程序。",
-       "config-no-session": "您的工作階段資料遺失!\n請檢查 php.ini 設定檔並確認 <code>session.save_path</code> 所設定的目錄是否合適。",
+       "config-session-error": "開始連線階段錯誤:$1",
+       "config-session-expired": "您的連線階段已過期。\n目前設定的工作階段期限為 $1。\n您可以在 php.ini 設定檔中設定 <code>session.gc_maxlifetime</code> 的參數來延長此期限。\n重新開始安裝程序。",
+       "config-no-session": "您的連線階段資料遺失!\n請檢查 php.ini 設定檔並確認 <code>session.save_path</code> 所設定的目錄是否合適。",
        "config-your-language": "您的語言:",
        "config-your-language-help": "請選擇接下來安裝程序中要使用的語言。",
        "config-wiki-language": "Wiki 語言:",
@@ -65,6 +65,7 @@
        "config-outdated-sqlite": "<strong>警告:</strong>您已安裝 SQLite $1,但是它的版本低於最低需求版本 $2。 因此您無法使用 SQLite。",
        "config-no-fts3": "<strong>警告:</strong> SQLite 編譯時未包含 [//sqlite.org/fts3.html FTS3 模組],後台搜尋功能將無法使用。",
        "config-register-globals-error": "<strong>錯誤:PHP 的 <code>[http://php.net/register_globals register_globals]</code> 選項已開啟。\n要繼續安裝程序必須關閉該選項。</strong>\n請參考 [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] 以取得操作說明。",
+       "config-magic-quotes-gpc": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] 已開啟!</strong>\n此選項會在無法預期的情況下損壞資料。\n除非您將該選項關閉,否鄍您無法安裝或使用 MediaWiki。",
        "config-magic-quotes-runtime": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-magic-quotes-sybase": "<strong>嚴重:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
        "config-mbstring": "<strong>嚴重:[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] 選項被開啟!</strong>\n此選項會導致資料在無法預測的情況下損壞。\n您必須將開選項關閉方可繼續安裝 MediaWiki。",
@@ -75,6 +76,7 @@
        "config-memory-raised": "PHP 的記憶體使用上限 <code>memory_limit</code> 目前為 $1,自動提高到 $2。",
        "config-memory-bad": "<strong>警告:</strong>PHP 的記憶體使用上限 <code>memory_limit</code> 為 $1。\n該設定值可能過低。\n這可能導致後續的安裝失敗!",
        "config-ctype": "<strong>嚴重:</strong> PHP 編譯時必須包含 [http://www.php.net/manual/en/ctype.installation.php Ctype 擴充套件]。",
+       "config-iconv": "<strong>嚴重:</strong>PHP 編譯時必須包含 [http://www.php.net/manual/en/iconv.installation.php iconv 擴充套件]。",
        "config-json": "<strong>嚴重:</strong> PHP 編譯時並未包含 JSON 擴充套件。\n在 MediaWiki 繼續安裝之前您必須先安裝 PHP JSON 擴充套件或 [http://pecl.php.net/package/jsonc PECL jsonc] 擴充套件。\n* 此 PHP 擴充套件在 Red Hat Enterprice Linux (CentOS) 5 版與 6 版以有內含,須於 <code>/etc/php.ini</code> 或 <code>/etc/php.d/json.ini</code> 設定檔將該項目開啟。\n* 部分於 2013 年 5 月以後發佈的 Linux 並沒有此 PHP 擴充套件,可透過安裝 PECL 擴充套件 <code>php5-json</code> 或 <code>php-pecl-jsonc</code> 替代。",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] 已安裝",
        "config-apc": "[http://www.php.net/apc APC] 已安裝",
        "config-extensions": "擴充套件",
        "config-extensions-help": "已在您的 <code>./extensions</code> 目錄中發現下列擴充套件。\n\n這些擴充套件可能需要做額外的設定,但您可以現在先開啟功能。",
        "config-skins": "外觀",
+       "config-skins-help": "系統偵測到您於 <code>./skins</code> 資料夾中含有外觀如上清單。 您必須開啟其中一項並設為預設值。",
        "config-skins-use-as-default": "使用這種外觀作為預設",
        "config-skins-missing": "沒有發現任何外觀;MediaWiki在您安裝一些恰當的外觀前將會使用備用外觀。",
        "config-skins-must-enable-some": "您必須至少選擇一個外觀以啟用。",
index 4885ae6..4e2ca83 100644 (file)
@@ -44,7 +44,7 @@ class CSSMin {
 
        /* Protected Static Members */
 
-       /** @var array List of common image files extensions and mime-types */
+       /** @var array List of common image files extensions and MIME-types */
        protected static $mimeTypes = array(
                'gif' => 'image/gif',
                'jpe' => 'image/jpeg',
@@ -135,7 +135,7 @@ class CSSMin {
         */
        public static function getMimeType( $file ) {
                $realpath = realpath( $file );
-               // Try a couple of different ways to get the mime-type of a file, in order of
+               // Try a couple of different ways to get the MIME-type of a file, in order of
                // preference
                if (
                        $realpath
@@ -143,14 +143,14 @@ class CSSMin {
                        && function_exists( 'finfo_open' )
                        && defined( 'FILEINFO_MIME_TYPE' )
                ) {
-                       // As of PHP 5.3, this is how you get the mime-type of a file; it uses the Fileinfo
+                       // As of PHP 5.3, this is how you get the MIME-type of a file; it uses the Fileinfo
                        // PECL extension
                        return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath );
                } elseif ( function_exists( 'mime_content_type' ) ) {
-                       // Before this was deprecated in PHP 5.3, this was how you got the mime-type of a file
+                       // Before this was deprecated in PHP 5.3, this was how you got the MIME-type of a file
                        return mime_content_type( $file );
                } else {
-                       // Worst-case scenario has happened, use the file extension to infer the mime-type
+                       // Worst-case scenario has happened, use the file extension to infer the MIME-type
                        $ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) );
                        if ( isset( self::$mimeTypes[$ext] ) ) {
                                return self::$mimeTypes[$ext];
index a80f6d9..c31a352 100644 (file)
@@ -333,7 +333,7 @@ class IEContentAnalyzer {
         * @param string $chunk the first 256 bytes of the file
         * @param string $proposed the MIME type proposed by the server
         *
-        * @return Array: map of IE version to detected mime type
+        * @return Array: map of IE version to detected MIME type
         */
        public function getRealMimesFromData( $fileName, $chunk, $proposed ) {
                $types = $this->getMimesFromData( $fileName, $chunk, $proposed );
@@ -371,7 +371,7 @@ class IEContentAnalyzer {
         * @param string $chunk the first 256 bytes of the file
         * @param string $proposed the MIME type proposed by the server
         *
-        * @return Array: map of IE version to detected mime type
+        * @return Array: map of IE version to detected MIME type
         */
        public function getMimesFromData( $fileName, $chunk, $proposed ) {
                $types = array();
index 37723d5..61ed771 100644 (file)
@@ -1036,7 +1036,7 @@ class lessc {
                                        }
                                }
 
-                               if(!is_null($mime)) // fallback if the mime type is still unknown
+                               if(!is_null($mime)) // fallback if the MIME type is still unknown
                                        $url = sprintf('data:%s;base64,%s', $mime, base64_encode(file_get_contents($fullpath)));
                        }
                }
index e8f8360..969bb72 100644 (file)
@@ -313,15 +313,15 @@ abstract class MediaHandler {
        function getThumbType( $ext, $mime, $params = null ) {
                $magic = MimeMagic::singleton();
                if ( !$ext || $magic->isMatchingExtension( $ext, $mime ) === false ) {
-                       // The extension is not valid for this mime type and we do
-                       // recognize the mime type
+                       // The extension is not valid for this MIME type and we do
+                       // recognize the MIME type
                        $extensions = $magic->getExtensionsForType( $mime );
                        if ( $extensions ) {
                                return array( strtok( $extensions, ' ' ), $mime );
                        }
                }
 
-               // The extension is correct (true) or the mime type is unknown to
+               // The extension is correct (true) or the MIME type is unknown to
                // MediaWiki (null)
                return array( $ext, $mime );
        }
index 9245d42..a0ce806 100644 (file)
@@ -202,7 +202,7 @@ class SvgHandler extends ImageHandler {
                $tmpDir = wfTempDir() . '/svg_' . wfRandomString( 24 );
                $lnPath = "$tmpDir/" . basename( $srcPath );
                $ok = mkdir( $tmpDir, 0771 ) && symlink( $srcPath, $lnPath );
-               $cleaner = new ScopedCallback( function() use ( $tmpDir, $lnPath ) {
+               $cleaner = new ScopedCallback( function () use ( $tmpDir, $lnPath ) {
                        wfSuppressWarnings();
                        unlink( $lnPath );
                        rmdir( $tmpDir );
index 3700556..7e47ec1 100644 (file)
@@ -726,7 +726,7 @@ class XMPInfo {
                                'mode' => XMPReader::MODE_SEQ,
                                'validate' => 'validateDate',
                        ),
-                       /* Do not extract dc:format, as we've got better ways to determine mimetype */
+                       /* Do not extract dc:format, as we've got better ways to determine MIME type */
                        'identifier' => array(
                                'map_group' => 'deprecated',
                                'map_name' => 'Identifier',
index 7a4de3b..b86d7d7 100644 (file)
@@ -1,5 +1,5 @@
-# Mime type info file.
-# the first mime type in each line is the "main" mime type,
+# MIME type info file.
+# the first MIME type in each line is the "main" MIME type,
 # the others are aliases for this type
 # the media type is given in upper case and square brackets,
 # like [BITMAP], and must indicate a media type as defined by
index a189c2e..4a6e002 100644 (file)
@@ -1657,11 +1657,12 @@ class Article implements Page {
        public function confirmDelete( $reason ) {
                wfDebug( "Article::confirmDelete\n" );
 
+               $title = $this->getTitle();
                $outputPage = $this->getContext()->getOutput();
-               $outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
-               $outputPage->addBacklinkSubtitle( $this->getTitle() );
+               $outputPage->setPageTitle( wfMessage( 'delete-confirm', $title->getPrefixedText() ) );
+               $outputPage->addBacklinkSubtitle( $title );
                $outputPage->setRobotPolicy( 'noindex,nofollow' );
-               $backlinkCache = $this->getTitle()->getBacklinkCache();
+               $backlinkCache = $title->getBacklinkCache();
                if ( $backlinkCache->hasLinks( 'pagelinks' ) || $backlinkCache->hasLinks( 'templatelinks' ) ) {
                        $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
                                'deleting-backlinks-warning' );
@@ -1683,10 +1684,10 @@ class Article implements Page {
                } else {
                        $suppress = '';
                }
-               $checkWatch = $user->getBoolOption( 'watchdeletion' ) || $user->isWatched( $this->getTitle() );
+               $checkWatch = $user->getBoolOption( 'watchdeletion' ) || $user->isWatched( $title );
 
                $form = Xml::openElement( 'form', array( 'method' => 'post',
-                       'action' => $this->getTitle()->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
+                       'action' => $title->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
                        Xml::openElement( 'fieldset', array( 'id' => 'mw-delete-table' ) ) .
                        Xml::tags( 'legend', null, wfMessage( 'delete-legend' )->escaped() ) .
                        Xml::openElement( 'table', array( 'id' => 'mw-deleteconfirm-table' ) ) .
@@ -1745,14 +1746,14 @@ class Article implements Page {
                        Xml::closeElement( 'fieldset' ) .
                        Html::hidden(
                                'wpEditToken',
-                               $user->getEditToken( array( 'delete', $this->getTitle()->getPrefixedText() ) )
+                               $user->getEditToken( array( 'delete', $title->getPrefixedText() ) )
                        ) .
                        Xml::closeElement( 'form' );
 
                        if ( $user->isAllowed( 'editinterface' ) ) {
-                               $title = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
+                               $dropdownTitle = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
                                $link = Linker::link(
-                                       $title,
+                                       $dropdownTitle,
                                        wfMessage( 'delete-edit-reasonlist' )->escaped(),
                                        array(),
                                        array( 'action' => 'edit' )
@@ -1764,9 +1765,7 @@ class Article implements Page {
 
                $deleteLogPage = new LogPage( 'delete' );
                $outputPage->addHTML( Xml::element( 'h2', null, $deleteLogPage->getName()->text() ) );
-               LogEventsList::showLogExtract( $outputPage, 'delete',
-                       $this->getTitle()
-               );
+               LogEventsList::showLogExtract( $outputPage, 'delete', $title );
        }
 
        /**
index faff0e7..84e7fe2 100644 (file)
@@ -33,7 +33,7 @@ class CoreParserFunctions {
        static function register( $parser ) {
                global $wgAllowDisplayTitle, $wgAllowSlowParserFunctions;
 
-               # Syntax for arguments (see self::setFunctionHook):
+               # Syntax for arguments (see Parser::setFunctionHook):
                #  "name for lookup in localized magic words array",
                #  function callback,
                #  optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
index 611f7a0..36f306d 100644 (file)
@@ -843,7 +843,7 @@ class Parser {
         * @since 1.19
         *
         * @throws MWException
-        * @return Language|null
+        * @return Language
         */
        public function getTargetLanguage() {
                $target = $this->mOptions->getTargetLanguage();
index 3de7505..22b127d 100644 (file)
@@ -799,8 +799,8 @@ class ParserOutput extends CacheTime {
         * Get or set the prevent-clickjacking flag
         *
         * @since 1.24
-        * @param boolean|null $flag New flag value, or null to leave it unchanged
-        * @return boolean Old flag value
+        * @param bool|null $flag New flag value, or null to leave it unchanged
+        * @return bool Old flag value
         */
        public function preventClickjacking( $flag = null ) {
                return wfSetVar( $this->mPreventClickjacking, $flag );
index 70b7656..3b4ebb1 100644 (file)
@@ -98,8 +98,8 @@ final class PasswordFactory {
         * if a null hash is given.
         *
         * @param string|null $hash Existing hash or null for an invalid password
-        * @return Password object
-        * @throws PasswordError if hash is invalid or type is not recognized
+        * @return Password
+        * @throws PasswordError If hash is invalid or type is not recognized
         */
        public function newFromCiphertext( $hash ) {
                if ( $hash === null || $hash === false || $hash === '' ) {
@@ -122,8 +122,8 @@ final class PasswordFactory {
         * Make a new default password of the given type.
         *
         * @param string $type Existing type
-        * @return Password object
-        * @throws PasswordError if hash is invalid or type is not recognized
+        * @return Password
+        * @throws PasswordError If hash is invalid or type is not recognized
         */
        public function newFromType( $type ) {
                if ( !isset( $this->types[$type] ) ) {
@@ -143,7 +143,7 @@ final class PasswordFactory {
         *
         * @param string $password Plaintext password
         * @param Password|null $existing Optional existing hash to get options from
-        * @return Password object
+        * @return Password
         */
        public function newFromPlaintext( $password, Password $existing = null ) {
                if ( $existing === null ) {
index 1bc1a8b..e49afed 100644 (file)
@@ -64,6 +64,9 @@ abstract class PoolCounterWork {
 
        /**
         * Do something with the error, like showing it to the user.
+        *
+        * @param $status
+        *
         * @return bool
         */
        public function error( $status ) {
@@ -155,73 +158,3 @@ abstract class PoolCounterWork {
                }
        }
 }
-
-/**
- * Convenience class for dealing with PoolCounters using callbacks
- * @since 1.22
- */
-class PoolCounterWorkViaCallback extends PoolCounterWork {
-       /** @var callable */
-       protected $doWork;
-       /** @var callable|null */
-       protected $doCachedWork;
-       /** @var callable|null */
-       protected $fallback;
-       /** @var callable|null */
-       protected $error;
-
-       /**
-        * Build a PoolCounterWork class from a type, key, and callback map.
-        *
-        * The callback map must at least have a callback for the 'doWork' method.
-        * Additionally, callbacks can be provided for the 'doCachedWork', 'fallback',
-        * and 'error' methods. Methods without callbacks will be no-ops that return false.
-        * If a 'doCachedWork' callback is provided, then execute() may wait for any prior
-        * process in the pool to finish and reuse its cached result.
-        *
-        * @param string $type
-        * @param string $key
-        * @param array $callbacks Map of callbacks
-        * @throws MWException
-        */
-       public function __construct( $type, $key, array $callbacks ) {
-               parent::__construct( $type, $key );
-               foreach ( array( 'doWork', 'doCachedWork', 'fallback', 'error' ) as $name ) {
-                       if ( isset( $callbacks[$name] ) ) {
-                               if ( !is_callable( $callbacks[$name] ) ) {
-                                       throw new MWException( "Invalid callback provided for '$name' function." );
-                               }
-                               $this->$name = $callbacks[$name];
-                       }
-               }
-               if ( !isset( $this->doWork ) ) {
-                       throw new MWException( "No callback provided for 'doWork' function." );
-               }
-               $this->cacheable = isset( $this->doCachedWork );
-       }
-
-       public function doWork() {
-               return call_user_func_array( $this->doWork, array() );
-       }
-
-       public function getCachedWork() {
-               if ( $this->doCachedWork ) {
-                       return call_user_func_array( $this->doCachedWork, array() );
-               }
-               return false;
-       }
-
-       public function fallback() {
-               if ( $this->fallback ) {
-                       return call_user_func_array( $this->fallback, array() );
-               }
-               return false;
-       }
-
-       public function error( $status ) {
-               if ( $this->error ) {
-                       return call_user_func_array( $this->error, array( $status ) );
-               }
-               return false;
-       }
-}
diff --git a/includes/poolcounter/PoolCounterWorkViaCallback.php b/includes/poolcounter/PoolCounterWorkViaCallback.php
new file mode 100644 (file)
index 0000000..af83d2e
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+/**
+ * Provides of semaphore semantics for restricting the number
+ * of workers that may be concurrently performing the same task.
+ *
+ * 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
+ */
+
+/**
+ * Convenience class for dealing with PoolCounters using callbacks
+ * @since 1.22
+ */
+class PoolCounterWorkViaCallback extends PoolCounterWork {
+       /** @var callable */
+       protected $doWork;
+       /** @var callable|null */
+       protected $doCachedWork;
+       /** @var callable|null */
+       protected $fallback;
+       /** @var callable|null */
+       protected $error;
+
+       /**
+        * Build a PoolCounterWork class from a type, key, and callback map.
+        *
+        * The callback map must at least have a callback for the 'doWork' method.
+        * Additionally, callbacks can be provided for the 'doCachedWork', 'fallback',
+        * and 'error' methods. Methods without callbacks will be no-ops that return false.
+        * If a 'doCachedWork' callback is provided, then execute() may wait for any prior
+        * process in the pool to finish and reuse its cached result.
+        *
+        * @param string $type
+        * @param string $key
+        * @param array $callbacks Map of callbacks
+        * @throws MWException
+        */
+       public function __construct( $type, $key, array $callbacks ) {
+               parent::__construct( $type, $key );
+               foreach ( array( 'doWork', 'doCachedWork', 'fallback', 'error' ) as $name ) {
+                       if ( isset( $callbacks[$name] ) ) {
+                               if ( !is_callable( $callbacks[$name] ) ) {
+                                       throw new MWException( "Invalid callback provided for '$name' function." );
+                               }
+                               $this->$name = $callbacks[$name];
+                       }
+               }
+               if ( !isset( $this->doWork ) ) {
+                       throw new MWException( "No callback provided for 'doWork' function." );
+               }
+               $this->cacheable = isset( $this->doCachedWork );
+       }
+
+       public function doWork() {
+               return call_user_func_array( $this->doWork, array() );
+       }
+
+       public function getCachedWork() {
+               if ( $this->doCachedWork ) {
+                       return call_user_func_array( $this->doCachedWork, array() );
+               }
+               return false;
+       }
+
+       public function fallback() {
+               if ( $this->fallback ) {
+                       return call_user_func_array( $this->fallback, array() );
+               }
+               return false;
+       }
+
+       public function error( $status ) {
+               if ( $this->error ) {
+                       return call_user_func_array( $this->error, array( $status ) );
+               }
+               return false;
+       }
+}
index bcb3842..354264c 100644 (file)
@@ -44,6 +44,9 @@ class ResourceLoader {
        /** @var array Associative array mapping module name to info associative array */
        protected $moduleInfos = array();
 
+       /** @var Config $config */
+       private $config;
+
        /**
         * @var array Associative array mapping framework ids to a list of names of test suite modules
         *      like array( 'qunit' => array( 'mediawiki.tests.qunit.suites', 'ext.foo.tests', .. ), .. )
@@ -152,7 +155,6 @@ class ResourceLoader {
         * @return string Filtered data, or a comment containing an error message
         */
        public function filter( $filter, $data, $cacheReport = true ) {
-               global $wgResourceLoaderMinifierStatementsOnOwnLine, $wgResourceLoaderMinifierMaxLineLength;
                wfProfileIn( __METHOD__ );
 
                // For empty/whitespace-only data or for unknown filters, don't perform
@@ -180,8 +182,8 @@ class ResourceLoader {
                        switch ( $filter ) {
                                case 'minify-js':
                                        $result = JavaScriptMinifier::minify( $data,
-                                               $wgResourceLoaderMinifierStatementsOnOwnLine,
-                                               $wgResourceLoaderMinifierMaxLineLength
+                                               $this->config->get( 'ResourceLoaderMinifierStatementsOnOwnLine' ),
+                                               $this->config->get( 'ResourceLoaderMinifierMaxLineLength' )
                                        );
                                        if ( $cacheReport ) {
                                                $result .= "\n/* cache key: $key */";
@@ -215,33 +217,47 @@ class ResourceLoader {
        /**
         * Register core modules and runs registration hooks.
         */
-       public function __construct() {
-               global $IP, $wgResourceModules, $wgResourceLoaderSources, $wgLoadScript, $wgEnableJavaScriptTest;
+       public function __construct( Config $config = null ) {
+               global $IP;
 
                wfProfileIn( __METHOD__ );
 
+               if ( $config === null ) {
+                       wfDebug( __METHOD__ . ' was called without providing a Config instance' );
+                       $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+               }
+
+               $this->config = $config;
+
                // Add 'local' source first
                $this->addSource(
                        'local',
-                       array( 'loadScript' => $wgLoadScript, 'apiScript' => wfScript( 'api' ) )
+                       array( 'loadScript' => wfScript( 'load' ), 'apiScript' => wfScript( 'api' ) )
                );
 
                // Add other sources
-               $this->addSource( $wgResourceLoaderSources );
+               $this->addSource( $config->get( 'ResourceLoaderSources' ) );
 
                // Register core modules
                $this->register( include "$IP/resources/Resources.php" );
                // Register extension modules
                wfRunHooks( 'ResourceLoaderRegisterModules', array( &$this ) );
-               $this->register( $wgResourceModules );
+               $this->register( $config->get( 'ResourceModules' ) );
 
-               if ( $wgEnableJavaScriptTest === true ) {
+               if ( $config->get( 'EnableJavaScriptTest' ) === true ) {
                        $this->registerTestModules();
                }
 
                wfProfileOut( __METHOD__ );
        }
 
+       /**
+        * @return Config
+        */
+       public function getConfig() {
+               return $this->config;
+       }
+
        /**
         * Register a module with the ResourceLoader system.
         *
@@ -298,8 +314,7 @@ class ResourceLoader {
 
                        // Apply custom skin-defined styles to existing modules.
                        if ( $this->isFileModule( $name ) ) {
-                               global $wgResourceModuleSkinStyles;
-                               foreach ( $wgResourceModuleSkinStyles as $skinName => $skinStyles ) {
+                               foreach ( $this->config->get( 'ResourceModuleSkinStyles' ) as $skinName => $skinStyles ) {
                                        // If this module already defines skinStyles for this skin, ignore $wgResourceModuleSkinStyles.
                                        if ( isset( $this->moduleInfos[$name]['skinStyles'][$skinName] ) ) {
                                                continue;
@@ -307,11 +322,11 @@ class ResourceLoader {
 
                                        // If $name is preceded with a '+', the defined style files will be added to 'default'
                                        // skinStyles, otherwise 'default' will be ignored as it normally would be.
-                                       if ( isset( $skinStyles[ $name ] ) ) {
-                                               $paths = (array)$skinStyles[ $name ];
+                                       if ( isset( $skinStyles[$name] ) ) {
+                                               $paths = (array)$skinStyles[$name];
                                                $styleFiles = array();
-                                       } else if ( isset( $skinStyles[ '+' . $name ] ) ) {
-                                               $paths = (array)$skinStyles[ '+' . $name ];
+                                       } elseif ( isset( $skinStyles['+' . $name] ) ) {
+                                               $paths = (array)$skinStyles['+' . $name];
                                                $styleFiles = isset( $this->moduleInfos[$name]['skinStyles']['default'] ) ?
                                                        $this->moduleInfos[$name]['skinStyles']['default'] :
                                                        array();
@@ -342,9 +357,9 @@ class ResourceLoader {
        /**
         */
        public function registerTestModules() {
-               global $IP, $wgEnableJavaScriptTest;
+               global $IP;
 
-               if ( $wgEnableJavaScriptTest !== true ) {
+               if ( $this->config->get( 'EnableJavaScriptTest' ) !== true ) {
                        throw new MWException( 'Attempt to register JavaScript test modules '
                                . 'but <code>$wgEnableJavaScriptTest</code> is false. '
                                . 'Edit your <code>LocalSettings.php</code> to enable it.' );
@@ -480,7 +495,9 @@ class ResourceLoader {
                                } else {
                                        $class = $info['class'];
                                }
+                               /** @var ResourceLoaderModule $object */
                                $object = new $class( $info );
+                               $object->setConfig( $this->getConfig() );
                        }
                        $object->setName( $name );
                        $this->modules[$name] = $object;
@@ -493,7 +510,7 @@ class ResourceLoader {
         * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule.
         *
         * @param string $name Module name
-        * @return boolean
+        * @return bool
         */
        protected function isFileModule( $name ) {
                if ( !isset( $this->moduleInfos[$name] ) ) {
@@ -537,10 +554,8 @@ class ResourceLoader {
         * @param ResourceLoaderContext $context Context in which a response should be formed
         */
        public function respond( ResourceLoaderContext $context ) {
-               global $wgCacheEpoch, $wgUseFileCache;
-
                // Use file cache if enabled and available...
-               if ( $wgUseFileCache ) {
+               if ( $this->config->get( 'UseFileCache' ) ) {
                        $fileCache = ResourceFileCache::newFromContext( $context );
                        if ( $this->tryRespondFromFileCache( $fileCache, $context ) ) {
                                return; // output handled
@@ -596,7 +611,7 @@ class ResourceLoader {
 
                // To send Last-Modified and support If-Modified-Since, we need to detect
                // the last modified time
-               $mtime = wfTimestamp( TS_UNIX, $wgCacheEpoch );
+               $mtime = wfTimestamp( TS_UNIX, $this->config->get( 'CacheEpoch' ) );
                foreach ( $modules as $module ) {
                        /**
                         * @var $module ResourceLoaderModule
@@ -664,18 +679,18 @@ class ResourceLoader {
         * @return void
         */
        protected function sendResponseHeaders( ResourceLoaderContext $context, $mtime, $errors ) {
-               global $wgResourceLoaderMaxage;
+               $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' );
                // If a version wasn't specified we need a shorter expiry time for updates
                // to propagate to clients quickly
                // If there were errors, we also need a shorter expiry time so we can recover quickly
                if ( is_null( $context->getVersion() ) || $errors ) {
-                       $maxage = $wgResourceLoaderMaxage['unversioned']['client'];
-                       $smaxage = $wgResourceLoaderMaxage['unversioned']['server'];
+                       $maxage = $rlMaxage['unversioned']['client'];
+                       $smaxage = $rlMaxage['unversioned']['server'];
                // If a version was specified we can use a longer expiry time since changing
                // version numbers causes cache misses
                } else {
-                       $maxage = $wgResourceLoaderMaxage['versioned']['client'];
-                       $smaxage = $wgResourceLoaderMaxage['versioned']['server'];
+                       $maxage = $rlMaxage['versioned']['client'];
+                       $smaxage = $rlMaxage['versioned']['server'];
                }
                if ( $context->getOnly() === 'styles' ) {
                        header( 'Content-Type: text/css; charset=utf-8' );
@@ -743,13 +758,13 @@ class ResourceLoader {
        protected function tryRespondFromFileCache(
                ResourceFileCache $fileCache, ResourceLoaderContext $context
        ) {
-               global $wgResourceLoaderMaxage;
+               $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' );
                // Buffer output to catch warnings.
                ob_start();
                // Get the maximum age the cache can be
                $maxage = is_null( $context->getVersion() )
-                       ? $wgResourceLoaderMaxage['unversioned']['server']
-                       : $wgResourceLoaderMaxage['versioned']['server'];
+                       ? $rlMaxage['unversioned']['server']
+                       : $rlMaxage['versioned']['server'];
                // Minimum timestamp the cache file must have
                $good = $fileCache->isCacheGood( wfTimestamp( TS_MW, time() - $maxage ) );
                if ( !$good ) {
@@ -1443,12 +1458,12 @@ class ResourceLoader {
        /**
         * Returns LESS compiler set up for use with MediaWiki
         *
+        * @param Config $config
+        * @throws MWException
         * @since 1.22
         * @return lessc
         */
-       public static function getLessCompiler() {
-               global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
-
+       public static function getLessCompiler( Config $config ) {
                // When called from the installer, it is possible that a required PHP extension
                // is missing (at least for now; see bug 47564). If this is the case, throw an
                // exception (caught by the installer) to prevent a fatal error later on.
@@ -1458,9 +1473,9 @@ class ResourceLoader {
 
                $less = new lessc();
                $less->setPreserveComments( true );
-               $less->setVariables( self::getLESSVars() );
-               $less->setImportDir( $wgResourceLoaderLESSImportPaths );
-               foreach ( $wgResourceLoaderLESSFunctions as $name => $func ) {
+               $less->setVariables( self::getLESSVars( $config ) );
+               $less->setImportDir( $config->get( 'ResourceLoaderLESSImportPaths' ) );
+               foreach ( $config->get( 'ResourceLoaderLESSFunctions' ) as $name => $func ) {
                        $less->registerFunction( $name, $func );
                }
                return $less;
@@ -1469,13 +1484,12 @@ class ResourceLoader {
        /**
         * Get global LESS variables.
         *
-        * $since 1.22
+        * @param Config $config
+        * @since 1.22
         * @return array Map of variable names to string CSS values.
         */
-       public static function getLESSVars() {
-               global $wgResourceLoaderLESSVars;
-
-               $lessVars = $wgResourceLoaderLESSVars;
+       public static function getLESSVars( Config $config ) {
+               $lessVars = $config->get( 'ResourceLoaderLESSVars' );
                // Sort by key to ensure consistent hashing for cache lookups.
                ksort( $lessVars );
                return $lessVars;
index 8994c0e..a725aab 100644 (file)
@@ -49,8 +49,6 @@ class ResourceLoaderContext {
         * @param WebRequest $request
         */
        public function __construct( $resourceLoader, WebRequest $request ) {
-               global $wgDefaultSkin, $wgResourceLoaderDebug;
-
                $this->resourceLoader = $resourceLoader;
                $this->request = $request;
 
@@ -61,7 +59,9 @@ class ResourceLoaderContext {
                // Various parameters
                $this->skin = $request->getVal( 'skin' );
                $this->user = $request->getVal( 'user' );
-               $this->debug = $request->getFuzzyBool( 'debug', $wgResourceLoaderDebug );
+               $this->debug = $request->getFuzzyBool(
+                       'debug', $resourceLoader->getConfig()->get( 'ResourceLoaderDebug' )
+               );
                $this->only = $request->getVal( 'only' );
                $this->version = $request->getVal( 'version' );
                $this->raw = $request->getFuzzyBool( 'raw' );
@@ -69,7 +69,7 @@ class ResourceLoaderContext {
                $skinnames = Skin::getSkinNames();
                // If no skin is specified, or we don't recognize the skin, use the default skin
                if ( !$this->skin || !isset( $skinnames[$this->skin] ) ) {
-                       $this->skin = $wgDefaultSkin;
+                       $this->skin = $resourceLoader->getConfig()->get( 'DefaultSkin' );
                }
        }
 
index edde9bc..f646ae9 100644 (file)
@@ -292,7 +292,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         *     to $IP
         * @param string $remoteBasePath Path to use if not provided in module definition. Defaults
         *     to $wgScriptPath
-        * @return array array( localBasePath, remoteBasePath )
+        * @return array Array( localBasePath, remoteBasePath )
         */
        public static function extractBasePaths(
                $options = array(),
@@ -305,9 +305,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // but were preserved for backwards-compatibility just in case. Tread lightly.
 
                $localBasePath = $localBasePath === null ? $IP : $localBasePath;
-               if ( $remoteBasePath !== null ) {
-                       $remoteBasePath = $remoteBasePath;
-               } else {
+               if ( $remoteBasePath === null ) {
                        $remoteBasePath = $wgResourceBasePath === null ? $wgScriptPath : $wgResourceBasePath;
                }
 
@@ -475,13 +473,12 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        return null;
                }
 
-               global $wgResourceLoaderValidateStaticJS;
                $localPath = $this->getLocalPath( $this->skipFunction );
                if ( !file_exists( $localPath ) ) {
                        throw new MWException( __METHOD__ . ": skip function file not found: \"$localPath\"" );
                }
                $contents = file_get_contents( $localPath );
-               if ( $wgResourceLoaderValidateStaticJS ) {
+               if ( $this->getConfig()->get( 'ResourceLoaderValidateStaticJS' ) ) {
                        $contents = $this->validateScriptFile( $fileName, $contents );
                }
                return $contents;
@@ -792,7 +789,6 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * @return string Concatenated and remapped JavaScript data from $scripts
         */
        protected function readScriptFiles( array $scripts ) {
-               global $wgResourceLoaderValidateStaticJS;
                if ( empty( $scripts ) ) {
                        return '';
                }
@@ -803,7 +799,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                throw new MWException( __METHOD__ . ": script file not found: \"$localPath\"" );
                        }
                        $contents = file_get_contents( $localPath );
-                       if ( $wgResourceLoaderValidateStaticJS ) {
+                       if ( $this->getConfig()->get( 'ResourceLoaderValidateStaticJS' ) ) {
                                // Static files don't really need to be checked as often; unlike
                                // on-wiki module they shouldn't change unexpectedly without
                                // admin interference.
@@ -911,8 +907,8 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * @param string $fileName File name of root LESS file.
         * @return string Cache key
         */
-       protected static function getLESSCacheKey( $fileName ) {
-               $vars = json_encode( ResourceLoader::getLESSVars() );
+       protected function getLESSCacheKey( $fileName ) {
+               $vars = json_encode( ResourceLoader::getLESSVars( $this->getConfig() ) );
                $hash = md5( $fileName . $vars );
                return wfMemcKey( 'resourceloader', 'less', $hash );
        }
@@ -933,7 +929,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
         * @return string CSS source
         */
        protected function compileLESSFile( $fileName ) {
-               $key = self::getLESSCacheKey( $fileName );
+               $key = $this->getLESSCacheKey( $fileName );
                $cache = wfGetCache( CACHE_ANYTHING );
 
                // The input to lessc. Either an associative array representing the
@@ -944,7 +940,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        $source = $fileName;
                }
 
-               $compiler = ResourceLoader::getLessCompiler();
+               $compiler = ResourceLoader::getLessCompiler( $this->getConfig() );
                $result = null;
 
                $result = $compiler->cachedCompile( $source );
index 0ace76a..ba37f42 100644 (file)
@@ -64,6 +64,11 @@ abstract class ResourceLoaderModule {
        // In-object cache for message blob mtime
        protected $msgBlobMtime = array();
 
+       /**
+        * @var Config
+        */
+       protected $config;
+
        /* Methods */
 
        /**
@@ -129,6 +134,27 @@ abstract class ResourceLoaderModule {
                return '';
        }
 
+       /**
+        * @return Config
+        * @since 1.24
+        */
+       public function getConfig() {
+               if ( $this->config === null ) {
+                       // Ugh, fall back to default
+                       $this->config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+               }
+
+               return $this->config;
+       }
+
+       /**
+        * @param Config $config
+        * @since 1.24
+        */
+       public function setConfig( Config $config ) {
+               $this->config = $config;
+       }
+
        /**
         * Get the URL or URLs to load for this module's JS in debug mode.
         * The default behavior is to return a load.php?only=scripts URL for
@@ -561,8 +587,7 @@ abstract class ResourceLoaderModule {
         * @return string JS with the original, or a replacement error
         */
        protected function validateScriptFile( $fileName, $contents ) {
-               global $wgResourceLoaderValidateJS;
-               if ( $wgResourceLoaderValidateJS ) {
+               if ( $this->getConfig()->get( 'ResourceLoaderValidateJS' ) ) {
                        // Try for cache hit
                        // Use CACHE_ANYTHING since filtering is very slow compared to DB queries
                        $key = wfMemcKey( 'resourceloader', 'jsparse', self::$parseCacheVersion, md5( $contents ) );
index d28f40f..1d9721a 100644 (file)
@@ -37,14 +37,12 @@ class ResourceLoaderSiteModule extends ResourceLoaderWikiModule {
         * @return array List of pages
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               global $wgUseSiteJs, $wgUseSiteCss;
-
                $pages = array();
-               if ( $wgUseSiteJs ) {
+               if ( $this->getConfig()->get( 'UseSiteJs' ) ) {
                        $pages['MediaWiki:Common.js'] = array( 'type' => 'script' );
                        $pages['MediaWiki:' . ucfirst( $context->getSkin() ) . '.js'] = array( 'type' => 'script' );
                }
-               if ( $wgUseSiteCss ) {
+               if ( $this->getConfig()->get( 'UseSiteCss' ) ) {
                        $pages['MediaWiki:Common.css'] = array( 'type' => 'style' );
                        $pages['MediaWiki:' . ucfirst( $context->getSkin() ) . '.css'] = array( 'type' => 'style' );
 
index 2c0f8df..7cfc81d 100644 (file)
@@ -36,22 +36,14 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @param ResourceLoaderContext $context
         * @return array
         */
-       protected function getConfig( $context ) {
+       protected function getConfigSettings( $context ) {
 
                $hash = $context->getHash();
                if ( isset( $this->configVars[$hash] ) ) {
                        return $this->configVars[$hash];
                }
 
-               global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
-                       $wgArticlePath, $wgScriptPath, $wgServer, $wgServerName,
-                       $wgContLang, $wgVariantArticlePath, $wgActionPaths, $wgVersion,
-                       $wgEnableAPI, $wgEnableWriteAPI, $wgDBname,
-                       $wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
-                       $wgCookiePrefix, $wgCookieDomain, $wgCookiePath,
-                       $wgCookieExpiration, $wgResourceLoaderMaxQueryLength,
-                       $wgResourceLoaderStorageEnabled, $wgResourceLoaderStorageVersion,
-                       $wgSearchType;
+               global $wgContLang;
 
                $mainPage = Title::newMainPage();
 
@@ -69,51 +61,52 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        }
                }
 
+               $conf = $this->getConfig();
                // Build list of variables
                $vars = array(
-                       'wgLoadScript' => $wgLoadScript,
+                       'wgLoadScript' => wfScript( 'load' ),
                        'debug' => $context->getDebug(),
                        'skin' => $context->getSkin(),
-                       'stylepath' => $wgStylePath,
+                       'stylepath' => $conf->get( 'StylePath' ),
                        'wgUrlProtocols' => wfUrlProtocols(),
-                       'wgArticlePath' => $wgArticlePath,
-                       'wgScriptPath' => $wgScriptPath,
-                       'wgScriptExtension' => $wgScriptExtension,
-                       'wgScript' => $wgScript,
-                       'wgSearchType' => $wgSearchType,
-                       'wgVariantArticlePath' => $wgVariantArticlePath,
+                       'wgArticlePath' => $conf->get( 'ArticlePath' ),
+                       'wgScriptPath' => $conf->get( 'ScriptPath' ),
+                       'wgScriptExtension' => $conf->get( 'ScriptExtension' ),
+                       'wgScript' => wfScript(),
+                       'wgSearchType' => $conf->get( 'SearchType' ),
+                       'wgVariantArticlePath' => $conf->get( 'VariantArticlePath' ),
                        // Force object to avoid "empty" associative array from
                        // becoming [] instead of {} in JS (bug 34604)
-                       'wgActionPaths' => (object)$wgActionPaths,
-                       'wgServer' => $wgServer,
-                       'wgServerName' => $wgServerName,
+                       'wgActionPaths' => (object)$conf->get( 'ActionPaths' ),
+                       'wgServer' => $conf->get( 'Server' ),
+                       'wgServerName' => $conf->get( 'ServerName' ),
                        'wgUserLanguage' => $context->getLanguage(),
                        'wgContentLanguage' => $wgContLang->getCode(),
-                       'wgVersion' => $wgVersion,
-                       'wgEnableAPI' => $wgEnableAPI,
-                       'wgEnableWriteAPI' => $wgEnableWriteAPI,
+                       'wgVersion' => $conf->get( 'Version' ),
+                       'wgEnableAPI' => $conf->get( 'EnableAPI' ),
+                       'wgEnableWriteAPI' => $conf->get( 'EnableWriteAPI' ),
                        'wgMainPageTitle' => $mainPage->getPrefixedText(),
                        'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
                        'wgNamespaceIds' => $namespaceIds,
                        'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
-                       'wgSiteName' => $wgSitename,
-                       'wgFileExtensions' => array_values( array_unique( $wgFileExtensions ) ),
-                       'wgDBname' => $wgDBname,
+                       'wgSiteName' => $conf->get( 'Sitename' ),
+                       'wgFileExtensions' => array_values( array_unique( $conf->get( 'FileExtensions' ) ) ),
+                       'wgDBname' => $conf->get( 'DBname' ),
                        // This sucks, it is only needed on Special:Upload, but I could
                        // not find a way to add vars only for a certain module
                        'wgFileCanRotate' => BitmapHandler::canRotate(),
                        'wgAvailableSkins' => Skin::getSkinNames(),
-                       'wgExtensionAssetsPath' => $wgExtensionAssetsPath,
+                       'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
                        // MediaWiki sets cookies to have this prefix by default
-                       'wgCookiePrefix' => $wgCookiePrefix,
-                       'wgCookieDomain' => $wgCookieDomain,
-                       'wgCookiePath' => $wgCookiePath,
-                       'wgCookieExpiration' => $wgCookieExpiration,
-                       'wgResourceLoaderMaxQueryLength' => $wgResourceLoaderMaxQueryLength,
+                       'wgCookiePrefix' => $conf->get( 'CookiePrefix' ),
+                       'wgCookieDomain' => $conf->get( 'CookieDomain' ),
+                       'wgCookiePath' => $conf->get( 'CookiePath' ),
+                       'wgCookieExpiration' => $conf->get( 'CookieExpiration' ),
+                       'wgResourceLoaderMaxQueryLength' => $conf->get( 'ResourceLoaderMaxQueryLength' ),
                        'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
                        'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
-                       'wgResourceLoaderStorageVersion' => $wgResourceLoaderStorageVersion,
-                       'wgResourceLoaderStorageEnabled' => $wgResourceLoaderStorageEnabled,
+                       'wgResourceLoaderStorageVersion' => $conf->get( 'ResourceLoaderStorageVersion' ),
+                       'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ),
                );
 
                wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
@@ -197,8 +190,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @param ResourceLoaderContext $context
         * @return string JavaScript code for registering all modules with the client loader
         */
-       public static function getModuleRegistrations( ResourceLoaderContext $context ) {
-               global $wgCacheEpoch;
+       public function getModuleRegistrations( ResourceLoaderContext $context ) {
                wfProfileIn( __METHOD__ );
 
                $resourceLoader = $context->getResourceLoader();
@@ -218,7 +210,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        // 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 ) );
-                       $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $wgCacheEpoch ) );
+                       $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) ) );
 
                        // FIXME: Convert to numbers, wfTimestamp always gives us stings, even for TS_UNIX
 
@@ -373,19 +365,19 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @return string
         */
        public function getScript( ResourceLoaderContext $context ) {
-               global $IP, $wgLegacyJavaScriptGlobals;
+               global $IP;
 
                $out = file_get_contents( "$IP/resources/src/startup.js" );
                if ( $context->getOnly() === 'scripts' ) {
 
                        // Startup function
-                       $configuration = $this->getConfig( $context );
-                       $registrations = self::getModuleRegistrations( $context );
+                       $configuration = $this->getConfigSettings( $context );
+                       $registrations = $this->getModuleRegistrations( $context );
                        // Fix indentation
                        $registrations = str_replace( "\n", "\n\t", trim( $registrations ) );
                        $out .= "var startUp = function () {\n" .
                                "\tmw.config = new " .
-                               Xml::encodeJsCall( 'mw.Map', array( $wgLegacyJavaScriptGlobals ) ) . "\n" .
+                               Xml::encodeJsCall( 'mw.Map', array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) ) ) . "\n" .
                                "\t$registrations\n" .
                                "\t" . Xml::encodeJsCall( 'mw.config.set', array( $configuration ) ) .
                                "};\n";
@@ -412,7 +404,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @return array|mixed
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
-               global $IP, $wgCacheEpoch;
+               global $IP;
 
                $hash = $context->getHash();
                if ( isset( $this->modifiedTime[$hash] ) ) {
@@ -425,7 +417,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                $loader->preloadModuleInfo( $loader->getModuleNames(), $context );
 
                $time = max(
-                       wfTimestamp( TS_UNIX, $wgCacheEpoch ),
+                       wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) ),
                        filemtime( "$IP/resources/src/startup.js" ),
                        $this->getHashMtime( $context )
                );
@@ -455,11 +447,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @return string Hash
         */
        public function getModifiedHash( ResourceLoaderContext $context ) {
-               global $wgLegacyJavaScriptGlobals;
-
                $data = array(
-                       'vars' => $this->getConfig( $context ),
-                       'wgLegacyJavaScriptGlobals' => $wgLegacyJavaScriptGlobals,
+                       'vars' => $this->getConfigSettings( $context ),
+                       'wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ),
                );
 
                return md5( serialize( $data ) );
index 082a65c..40274c6 100644 (file)
@@ -54,9 +54,9 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
         * @return array
         */
        public function getStyles( ResourceLoaderContext $context ) {
-               global $wgAllowUserCssPrefs, $wgUser;
+               global $wgUser;
 
-               if ( !$wgAllowUserCssPrefs ) {
+               if ( !$this->getConfig()->get( 'AllowUserCssPrefs' ) ) {
                        return array();
                }
 
index 680c74c..7cf1942 100644 (file)
@@ -37,13 +37,16 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
         * @return array
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               global $wgUser, $wgUseSiteJs, $wgUseSiteCss;
+               global $wgUser;
 
                $userName = $context->getUser();
                if ( $userName === null ) {
                        return array();
                }
-               if ( !$wgUseSiteJs && !$wgUseSiteCss ) {
+
+               $useSiteJs = $this->getConfig()->get( 'UseSiteJs' );
+               $useSiteCss = $this->getConfig()->get( 'UseSiteCss' );
+               if ( !$useSiteJs && !$useSiteCss ) {
                        return array();
                }
 
@@ -62,10 +65,10 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
                        if ( $group == '*' ) {
                                continue;
                        }
-                       if ( $wgUseSiteJs ) {
+                       if ( $useSiteJs ) {
                                $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
                        }
-                       if ( $wgUseSiteCss ) {
+                       if ( $useSiteCss ) {
                                $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
                        }
                }
index 90b4838..1b6d1de 100644 (file)
@@ -38,13 +38,16 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
         * @return array
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               global $wgAllowUserJs, $wgAllowUserCss;
                $username = $context->getUser();
 
                if ( $username === null ) {
                        return array();
                }
-               if ( !$wgAllowUserJs && !$wgAllowUserCss ) {
+
+               $allowUserJs = $this->getConfig()->get( 'AllowUserJs' );
+               $allowUserCss = $this->getConfig()->get( 'AllowUserCss' );
+
+               if ( !$allowUserJs && !$allowUserCss ) {
                        return array();
                }
 
@@ -58,11 +61,11 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
                $userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works
 
                $pages = array();
-               if ( $wgAllowUserJs ) {
+               if ( $allowUserJs ) {
                        $pages["$userpage/common.js"] = array( 'type' => 'script' );
                        $pages["$userpage/" . $context->getSkin() . '.js'] = array( 'type' => 'script' );
                }
-               if ( $wgAllowUserCss ) {
+               if ( $allowUserCss ) {
                        $pages["$userpage/common.css"] = array( 'type' => 'style' );
                        $pages["$userpage/" . $context->getSkin() . '.css'] = array( 'type' => 'style' );
                }
index bfb3c42..d9ed91d 100644 (file)
@@ -136,8 +136,6 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
         * @return array
         */
        public function getStyles( ResourceLoaderContext $context ) {
-               global $wgScriptPath;
-
                $styles = array();
                foreach ( $this->getPages( $context ) as $titleText => $options ) {
                        if ( $options['type'] !== 'style' ) {
@@ -155,7 +153,7 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                        if ( $this->getFlip( $context ) ) {
                                $style = CSSJanus::transform( $style, true, false );
                        }
-                       $style = CSSMin::remap( $style, false, $wgScriptPath, true );
+                       $style = CSSMin::remap( $style, false, $this->getConfig()->get( 'ScriptPath' ), true );
                        if ( !isset( $styles[$media] ) ) {
                                $styles[$media] = array();
                        }
diff --git a/includes/revisiondelete/RevDelArchiveItem.php b/includes/revisiondelete/RevDelArchiveItem.php
new file mode 100644 (file)
index 0000000..0f1c7f0
--- /dev/null
@@ -0,0 +1,105 @@
+<?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
+ */
+
+/**
+ * Item class for a archive table row
+ */
+class RevDelArchiveItem extends RevDelRevisionItem {
+       public function __construct( $list, $row ) {
+               RevDelItem::__construct( $list, $row );
+               $this->revision = Revision::newFromArchiveRow( $row,
+                       array( 'page' => $this->list->title->getArticleID() ) );
+       }
+
+       public function getIdField() {
+               return 'ar_timestamp';
+       }
+
+       public function getTimestampField() {
+               return 'ar_timestamp';
+       }
+
+       public function getAuthorIdField() {
+               return 'ar_user';
+       }
+
+       public function getAuthorNameField() {
+               return 'ar_user_text';
+       }
+
+       public function getId() {
+               # Convert DB timestamp to MW timestamp
+               return $this->revision->getTimestamp();
+       }
+
+       public function setBits( $bits ) {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'archive',
+                       array( 'ar_deleted' => $bits ),
+                       array(
+                               'ar_namespace' => $this->list->title->getNamespace(),
+                               'ar_title' => $this->list->title->getDBkey(),
+                               // use timestamp for index
+                               'ar_timestamp' => $this->row->ar_timestamp,
+                               'ar_rev_id' => $this->row->ar_rev_id,
+                               'ar_deleted' => $this->getBits()
+                       ),
+                       __METHOD__ );
+
+               return (bool)$dbw->affectedRows();
+       }
+
+       protected function getRevisionLink() {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
+               if ( $this->isDeleted() && !$this->canViewContent() ) {
+                       return $date;
+               }
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $date,
+                       array(),
+                       array(
+                               'target' => $this->list->title->getPrefixedText(),
+                               'timestamp' => $this->revision->getTimestamp()
+                       )
+               );
+       }
+
+       protected function getDiffLink() {
+               if ( $this->isDeleted() && !$this->canViewContent() ) {
+                       return $this->list->msg( 'diff' )->escaped();
+               }
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $this->list->msg( 'diff' )->escaped(),
+                       array(),
+                       array(
+                               'target' => $this->list->title->getPrefixedText(),
+                               'diff' => 'prev',
+                               'timestamp' => $this->revision->getTimestamp()
+                       )
+               );
+       }
+}
diff --git a/includes/revisiondelete/RevDelArchiveList.php b/includes/revisiondelete/RevDelArchiveList.php
new file mode 100644 (file)
index 0000000..e7aed73
--- /dev/null
@@ -0,0 +1,66 @@
+<?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
+ */
+
+/**
+ * List for archive table items, i.e. revisions deleted via action=delete
+ */
+class RevDelArchiveList extends RevDelRevisionList {
+       public function getType() {
+               return 'archive';
+       }
+
+       public static function getRelationType() {
+               return 'ar_timestamp';
+       }
+
+       /**
+        * @param DatabaseBase $db
+        * @return mixed
+        */
+       public function doQuery( $db ) {
+               $timestamps = array();
+               foreach ( $this->ids as $id ) {
+                       $timestamps[] = $db->timestamp( $id );
+               }
+
+               return $db->select( 'archive', Revision::selectArchiveFields(),
+                               array(
+                                       'ar_namespace' => $this->title->getNamespace(),
+                                       'ar_title' => $this->title->getDBkey(),
+                                       'ar_timestamp' => $timestamps
+                               ),
+                               __METHOD__,
+                               array( 'ORDER BY' => 'ar_timestamp DESC' )
+                       );
+       }
+
+       public function newItem( $row ) {
+               return new RevDelArchiveItem( $this, $row );
+       }
+
+       public function doPreCommitUpdates() {
+               return Status::newGood();
+       }
+
+       public function doPostCommitUpdates() {
+               return Status::newGood();
+       }
+}
diff --git a/includes/revisiondelete/RevDelArchivedFileItem.php b/includes/revisiondelete/RevDelArchivedFileItem.php
new file mode 100644 (file)
index 0000000..7c41c18
--- /dev/null
@@ -0,0 +1,129 @@
+<?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
+ */
+
+/**
+ * Item class for a filearchive table row
+ */
+class RevDelArchivedFileItem extends RevDelFileItem {
+       public function __construct( $list, $row ) {
+               RevDelItem::__construct( $list, $row );
+               $this->file = ArchivedFile::newFromRow( $row );
+       }
+
+       public function getIdField() {
+               return 'fa_id';
+       }
+
+       public function getTimestampField() {
+               return 'fa_timestamp';
+       }
+
+       public function getAuthorIdField() {
+               return 'fa_user';
+       }
+
+       public function getAuthorNameField() {
+               return 'fa_user_text';
+       }
+
+       public function getId() {
+               return $this->row->fa_id;
+       }
+
+       public function setBits( $bits ) {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'filearchive',
+                       array( 'fa_deleted' => $bits ),
+                       array(
+                               'fa_id' => $this->row->fa_id,
+                               'fa_deleted' => $this->getBits(),
+                       ),
+                       __METHOD__
+               );
+
+               return (bool)$dbw->affectedRows();
+       }
+
+       protected function getLink() {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
+               # Hidden files...
+               if ( !$this->canViewContent() ) {
+                       $link = $date;
+               } else {
+                       $undelete = SpecialPage::getTitleFor( 'Undelete' );
+                       $key = $this->file->getKey();
+                       $link = Linker::link( $undelete, $date, array(),
+                               array(
+                                       'target' => $this->list->title->getPrefixedText(),
+                                       'file' => $key,
+                                       'token' => $this->list->getUser()->getEditToken( $key )
+                               )
+                       );
+               }
+               if ( $this->isDeleted() ) {
+                       $link = '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
+       }
+
+       public function getApiData( ApiResult $result ) {
+               $file = $this->file;
+               $user = $this->list->getUser();
+               $ret = array(
+                       'title' => $this->list->title->getPrefixedText(),
+                       'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
+                       'width' => $file->getWidth(),
+                       'height' => $file->getHeight(),
+                       'size' => $file->getSize(),
+               );
+               $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+               $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+               $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
+               if ( $this->canViewContent() ) {
+                       $ret += array(
+                               'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
+                                       array(
+                                               'target' => $this->list->title->getPrefixedText(),
+                                               'file' => $file->getKey(),
+                                               'token' => $user->getEditToken( $file->getKey() )
+                                       ),
+                                       false, PROTO_RELATIVE
+                               ),
+                       );
+               }
+               if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
+                       $ret += array(
+                               'userid' => $file->getUser( 'id' ),
+                               'user' => $file->getUser( 'text' ),
+                       );
+               }
+               if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
+                       $ret += array(
+                               'comment' => $file->getRawDescription(),
+                       );
+               }
+
+               return $ret;
+       }
+}
diff --git a/includes/revisiondelete/RevDelArchivedFileList.php b/includes/revisiondelete/RevDelArchivedFileList.php
new file mode 100644 (file)
index 0000000..aec51b1
--- /dev/null
@@ -0,0 +1,56 @@
+<?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
+ */
+
+/**
+ * List for filearchive table items
+ */
+class RevDelArchivedFileList extends RevDelFileList {
+       public function getType() {
+               return 'filearchive';
+       }
+
+       public static function getRelationType() {
+               return 'fa_id';
+       }
+
+       /**
+        * @param DatabaseBase $db
+        * @return mixed
+        */
+       public function doQuery( $db ) {
+               $ids = array_map( 'intval', $this->ids );
+
+               return $db->select(
+                       'filearchive',
+                       ArchivedFile::selectFields(),
+                       array(
+                               'fa_name' => $this->title->getDBkey(),
+                               'fa_id' => $ids
+                       ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'fa_id DESC' )
+               );
+       }
+
+       public function newItem( $row ) {
+               return new RevDelArchivedFileItem( $this, $row );
+       }
+}
diff --git a/includes/revisiondelete/RevDelArchivedRevisionItem.php b/includes/revisiondelete/RevDelArchivedRevisionItem.php
new file mode 100644 (file)
index 0000000..9ec548f
--- /dev/null
@@ -0,0 +1,53 @@
+<?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
+ */
+
+/**
+ * Item class for a archive table row by ar_rev_id -- actually
+ * used via RevDelRevisionList.
+ */
+class RevDelArchivedRevisionItem extends RevDelArchiveItem {
+       public function __construct( $list, $row ) {
+               RevDelItem::__construct( $list, $row );
+
+               $this->revision = Revision::newFromArchiveRow( $row,
+                       array( 'page' => $this->list->title->getArticleID() ) );
+       }
+
+       public function getIdField() {
+               return 'ar_rev_id';
+       }
+
+       public function getId() {
+               return $this->revision->getId();
+       }
+
+       public function setBits( $bits ) {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'archive',
+                       array( 'ar_deleted' => $bits ),
+                       array( 'ar_rev_id' => $this->row->ar_rev_id,
+                               'ar_deleted' => $this->getBits()
+                       ),
+                       __METHOD__ );
+
+               return (bool)$dbw->affectedRows();
+       }
+}
diff --git a/includes/revisiondelete/RevDelFileItem.php b/includes/revisiondelete/RevDelFileItem.php
new file mode 100644 (file)
index 0000000..d9472e7
--- /dev/null
@@ -0,0 +1,237 @@
+<?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
+ */
+
+/**
+ * Item class for an oldimage table row
+ */
+class RevDelFileItem extends RevDelItem {
+       /** @var File */
+       var $file;
+
+       public function __construct( $list, $row ) {
+               parent::__construct( $list, $row );
+               $this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
+       }
+
+       public function getIdField() {
+               return 'oi_archive_name';
+       }
+
+       public function getTimestampField() {
+               return 'oi_timestamp';
+       }
+
+       public function getAuthorIdField() {
+               return 'oi_user';
+       }
+
+       public function getAuthorNameField() {
+               return 'oi_user_text';
+       }
+
+       public function getId() {
+               $parts = explode( '!', $this->row->oi_archive_name );
+
+               return $parts[0];
+       }
+
+       public function canView() {
+               return $this->file->userCan( File::DELETED_RESTRICTED, $this->list->getUser() );
+       }
+
+       public function canViewContent() {
+               return $this->file->userCan( File::DELETED_FILE, $this->list->getUser() );
+       }
+
+       public function getBits() {
+               return $this->file->getVisibility();
+       }
+
+       public function setBits( $bits ) {
+               # Queue the file op
+               # @todo FIXME: Move to LocalFile.php
+               if ( $this->isDeleted() ) {
+                       if ( $bits & File::DELETED_FILE ) {
+                               # Still deleted
+                       } else {
+                               # Newly undeleted
+                               $key = $this->file->getStorageKey();
+                               $srcRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+                               $this->list->storeBatch[] = array(
+                                       $this->file->repo->getVirtualUrl( 'deleted' ) . '/' . $srcRel,
+                                       'public',
+                                       $this->file->getRel()
+                               );
+                               $this->list->cleanupBatch[] = $key;
+                       }
+               } elseif ( $bits & File::DELETED_FILE ) {
+                       # Newly deleted
+                       $key = $this->file->getStorageKey();
+                       $dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+                       $this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
+               }
+
+               # Do the database operations
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'oldimage',
+                       array( 'oi_deleted' => $bits ),
+                       array(
+                               'oi_name' => $this->row->oi_name,
+                               'oi_timestamp' => $this->row->oi_timestamp,
+                               'oi_deleted' => $this->getBits()
+                       ),
+                       __METHOD__
+               );
+
+               return (bool)$dbw->affectedRows();
+       }
+
+       public function isDeleted() {
+               return $this->file->isDeleted( File::DELETED_FILE );
+       }
+
+       /**
+        * Get the link to the file.
+        * Overridden by RevDelArchivedFileItem.
+        * @return string
+        */
+       protected function getLink() {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
+               if ( !$this->isDeleted() ) {
+                       # Regular files...
+                       return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
+               }
+
+               # Hidden files...
+               if ( !$this->canViewContent() ) {
+                       $link = $date;
+               } else {
+                       $link = Linker::link(
+                               SpecialPage::getTitleFor( 'Revisiondelete' ),
+                               $date,
+                               array(),
+                               array(
+                                       'target' => $this->list->title->getPrefixedText(),
+                                       'file' => $this->file->getArchiveName(),
+                                       'token' => $this->list->getUser()->getEditToken(
+                                               $this->file->getArchiveName() )
+                               )
+                       );
+               }
+
+               return '<span class="history-deleted">' . $link . '</span>';
+       }
+
+       /**
+        * Generate a user tool link cluster if the current user is allowed to view it
+        * @return string HTML
+        */
+       protected function getUserTools() {
+               if ( $this->file->userCan( Revision::DELETED_USER, $this->list->getUser() ) ) {
+                       $uid = $this->file->getUser( 'id' );
+                       $name = $this->file->getUser( 'text' );
+                       $link = Linker::userLink( $uid, $name ) . Linker::userToolLinks( $uid, $name );
+               } else {
+                       $link = $this->list->msg( 'rev-deleted-user' )->escaped();
+               }
+               if ( $this->file->isDeleted( Revision::DELETED_USER ) ) {
+                       return '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
+       }
+
+       /**
+        * Wrap and format the file's comment block, if the current
+        * user is allowed to view it.
+        *
+        * @return string HTML
+        */
+       protected function getComment() {
+               if ( $this->file->userCan( File::DELETED_COMMENT, $this->list->getUser() ) ) {
+                       $block = Linker::commentBlock( $this->file->getDescription() );
+               } else {
+                       $block = ' ' . $this->list->msg( 'rev-deleted-comment' )->escaped();
+               }
+               if ( $this->file->isDeleted( File::DELETED_COMMENT ) ) {
+                       return "<span class=\"history-deleted\">$block</span>";
+               }
+
+               return $block;
+       }
+
+       public function getHTML() {
+               $data =
+                       $this->list->msg( 'widthheight' )->numParams(
+                               $this->file->getWidth(), $this->file->getHeight() )->text() .
+                       ' (' . $this->list->msg( 'nbytes' )->numParams( $this->file->getSize() )->text() . ')';
+
+               return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
+                       $data . ' ' . $this->getComment() . '</li>';
+       }
+
+       public function getApiData( ApiResult $result ) {
+               $file = $this->file;
+               $user = $this->list->getUser();
+               $ret = array(
+                       'title' => $this->list->title->getPrefixedText(),
+                       'archivename' => $file->getArchiveName(),
+                       'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
+                       'width' => $file->getWidth(),
+                       'height' => $file->getHeight(),
+                       'size' => $file->getSize(),
+               );
+               $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+               $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+               $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
+               if ( !$this->isDeleted() ) {
+                       $ret += array(
+                               'url' => $file->getUrl(),
+                       );
+               } elseif ( $this->canViewContent() ) {
+                       $ret += array(
+                               'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
+                                       array(
+                                               'target' => $this->list->title->getPrefixedText(),
+                                               'file' => $file->getArchiveName(),
+                                               'token' => $user->getEditToken( $file->getArchiveName() )
+                                       ),
+                                       false, PROTO_RELATIVE
+                               ),
+                       );
+               }
+               if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
+                       $ret += array(
+                               'userid' => $file->user,
+                               'user' => $file->user_text,
+                       );
+               }
+               if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
+                       $ret += array(
+                               'comment' => $file->description,
+                       );
+               }
+
+               return $ret;
+       }
+}
diff --git a/includes/revisiondelete/RevDelFileList.php b/includes/revisiondelete/RevDelFileList.php
new file mode 100644 (file)
index 0000000..8714a5e
--- /dev/null
@@ -0,0 +1,128 @@
+<?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
+ */
+
+/**
+ * List for oldimage table items
+ */
+class RevDelFileList extends RevDelList {
+       /** @var array */
+       var $storeBatch;
+
+       /** @var array */
+       var $deleteBatch;
+
+       /** @var array */
+       var $cleanupBatch;
+
+       public function getType() {
+               return 'oldimage';
+       }
+
+       public static function getRelationType() {
+               return 'oi_archive_name';
+       }
+
+       public static function getRestriction() {
+               return 'deleterevision';
+       }
+
+       public static function getRevdelConstant() {
+               return File::DELETED_FILE;
+       }
+
+       /**
+        * @param DatabaseBase $db
+        * @return mixed
+        */
+       public function doQuery( $db ) {
+               $archiveNames = array();
+               foreach ( $this->ids as $timestamp ) {
+                       $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
+               }
+
+               return $db->select(
+                       'oldimage',
+                       OldLocalFile::selectFields(),
+                       array(
+                               'oi_name' => $this->title->getDBkey(),
+                               'oi_archive_name' => $archiveNames
+                       ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'oi_timestamp DESC' )
+               );
+       }
+
+       public function newItem( $row ) {
+               return new RevDelFileItem( $this, $row );
+       }
+
+       public function clearFileOps() {
+               $this->deleteBatch = array();
+               $this->storeBatch = array();
+               $this->cleanupBatch = array();
+       }
+
+       public function doPreCommitUpdates() {
+               $status = Status::newGood();
+               $repo = RepoGroup::singleton()->getLocalRepo();
+               if ( $this->storeBatch ) {
+                       $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
+               }
+               if ( !$status->isOK() ) {
+                       return $status;
+               }
+               if ( $this->deleteBatch ) {
+                       $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
+               }
+               if ( !$status->isOK() ) {
+                       // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
+                       // modified (but destined for rollback) causes data loss
+                       return $status;
+               }
+               if ( $this->cleanupBatch ) {
+                       $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
+               }
+
+               return $status;
+       }
+
+       public function doPostCommitUpdates() {
+               $file = wfLocalFile( $this->title );
+               $file->purgeCache();
+               $file->purgeDescription();
+               $purgeUrls = array();
+               foreach ( $this->ids as $timestamp ) {
+                       $archiveName = $timestamp . '!' . $this->title->getDBkey();
+                       $file->purgeOldThumbnails( $archiveName );
+                       $purgeUrls[] = $file->getArchiveUrl( $archiveName );
+               }
+               if ( $this->getConfig()->get( 'UseSquid' ) ) {
+                       // purge full images from cache
+                       SquidUpdate::purge( $purgeUrls );
+               }
+
+               return Status::newGood();
+       }
+
+       public function getSuppressBit() {
+               return File::DELETED_RESTRICTED;
+       }
+}
diff --git a/includes/revisiondelete/RevDelLogItem.php b/includes/revisiondelete/RevDelLogItem.php
new file mode 100644 (file)
index 0000000..5c8b8c9
--- /dev/null
@@ -0,0 +1,151 @@
+<?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
+ */
+
+/**
+ * Item class for a logging table row
+ */
+class RevDelLogItem extends RevDelItem {
+       public function getIdField() {
+               return 'log_id';
+       }
+
+       public function getTimestampField() {
+               return 'log_timestamp';
+       }
+
+       public function getAuthorIdField() {
+               return 'log_user';
+       }
+
+       public function getAuthorNameField() {
+               return 'log_user_text';
+       }
+
+       public function canView() {
+               return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED, $this->list->getUser() );
+       }
+
+       public function canViewContent() {
+               return true; // none
+       }
+
+       public function getBits() {
+               return $this->row->log_deleted;
+       }
+
+       public function setBits( $bits ) {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->update( 'recentchanges',
+                       array(
+                               'rc_deleted' => $bits,
+                               'rc_patrolled' => 1
+                       ),
+                       array(
+                               'rc_logid' => $this->row->log_id,
+                               'rc_timestamp' => $this->row->log_timestamp // index
+                       ),
+                       __METHOD__
+               );
+               $dbw->update( 'logging',
+                       array( 'log_deleted' => $bits ),
+                       array(
+                               'log_id' => $this->row->log_id,
+                               'log_deleted' => $this->getBits()
+                       ),
+                       __METHOD__
+               );
+
+               return (bool)$dbw->affectedRows();
+       }
+
+       public function getHTML() {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->row->log_timestamp, $this->list->getUser() ) );
+               $title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
+               $formatter = LogFormatter::newFromRow( $this->row );
+               $formatter->setContext( $this->list->getContext() );
+               $formatter->setAudience( LogFormatter::FOR_THIS_USER );
+
+               // Log link for this page
+               $loglink = Linker::link(
+                       SpecialPage::getTitleFor( 'Log' ),
+                       $this->list->msg( 'log' )->escaped(),
+                       array(),
+                       array( 'page' => $title->getPrefixedText() )
+               );
+               $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
+               // User links and action text
+               $action = $formatter->getActionText();
+               // Comment
+               $comment = $this->list->getLanguage()->getDirMark()
+                       . Linker::commentBlock( $this->row->log_comment );
+
+               if ( LogEventsList::isDeleted( $this->row, LogPage::DELETED_COMMENT ) ) {
+                       $comment = '<span class="history-deleted">' . $comment . '</span>';
+               }
+
+               return "<li>$loglink $date $action $comment</li>";
+       }
+
+       public function getApiData( ApiResult $result ) {
+               $logEntry = DatabaseLogEntry::newFromRow( $this->row );
+               $user = $this->list->getUser();
+               $ret = array(
+                       'id' => $logEntry->getId(),
+                       'type' => $logEntry->getType(),
+                       'action' => $logEntry->getSubtype(),
+               );
+               $ret += $logEntry->isDeleted( LogPage::DELETED_USER )
+                       ? array( 'userhidden' => '' )
+                       : array();
+               $ret += $logEntry->isDeleted( LogPage::DELETED_COMMENT )
+                       ? array( 'commenthidden' => '' )
+                       : array();
+               $ret += $logEntry->isDeleted( LogPage::DELETED_ACTION )
+                       ? array( 'actionhidden' => '' )
+                       : array();
+
+               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_ACTION, $user ) ) {
+                       ApiQueryLogEvents::addLogParams(
+                               $result,
+                               $ret,
+                               $logEntry->getParameters(),
+                               $logEntry->getType(),
+                               $logEntry->getSubtype(),
+                               $logEntry->getTimestamp(),
+                               $logEntry->isLegacy()
+                       );
+               }
+               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_USER, $user ) ) {
+                       $ret += array(
+                               'userid' => $this->row->log_user,
+                               'user' => $this->row->log_user_text,
+                       );
+               }
+               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_COMMENT, $user ) ) {
+                       $ret += array(
+                               'comment' => $this->row->log_comment,
+                       );
+               }
+
+               return $ret;
+       }
+}
diff --git a/includes/revisiondelete/RevDelLogList.php b/includes/revisiondelete/RevDelLogList.php
new file mode 100644 (file)
index 0000000..ad04042
--- /dev/null
@@ -0,0 +1,103 @@
+<?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
+ */
+
+/**
+ * List for logging table items
+ */
+class RevDelLogList extends RevDelList {
+       public function getType() {
+               return 'logging';
+       }
+
+       public static function getRelationType() {
+               return 'log_id';
+       }
+
+       public static function getRestriction() {
+               return 'deletelogentry';
+       }
+
+       public static function getRevdelConstant() {
+               return LogPage::DELETED_ACTION;
+       }
+
+       public static function suggestTarget( $target, array $ids ) {
+               $result = wfGetDB( DB_SLAVE )->select( 'logging',
+                       'log_type',
+                       array( 'log_id' => $ids ),
+                       __METHOD__,
+                       array( 'DISTINCT' )
+               );
+               if ( $result->numRows() == 1 ) {
+                       // If there's only one type, the target can be set to include it.
+                       return SpecialPage::getTitleFor( 'Log', $result->current()->log_type );
+               }
+
+               return SpecialPage::getTitleFor( 'Log' );
+       }
+
+       /**
+        * @param DatabaseBase $db
+        * @return mixed
+        */
+       public function doQuery( $db ) {
+               $ids = array_map( 'intval', $this->ids );
+
+               return $db->select( 'logging', array(
+                               'log_id',
+                               'log_type',
+                               'log_action',
+                               'log_timestamp',
+                               'log_user',
+                               'log_user_text',
+                               'log_namespace',
+                               'log_title',
+                               'log_page',
+                               'log_comment',
+                               'log_params',
+                               'log_deleted'
+                       ),
+                       array( 'log_id' => $ids ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'log_id DESC' )
+               );
+       }
+
+       public function newItem( $row ) {
+               return new RevDelLogItem( $this, $row );
+       }
+
+       public function getSuppressBit() {
+               return Revision::DELETED_RESTRICTED;
+       }
+
+       public function getLogAction() {
+               return 'event';
+       }
+
+       public function getLogParams( $params ) {
+               return array(
+                       implode( ',', $params['ids'] ),
+                       "ofield={$params['oldBits']}",
+                       "nfield={$params['newBits']}"
+               );
+       }
+}
diff --git a/includes/revisiondelete/RevDelRevisionItem.php b/includes/revisiondelete/RevDelRevisionItem.php
new file mode 100644 (file)
index 0000000..81ca3d6
--- /dev/null
@@ -0,0 +1,187 @@
+<?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
+ */
+
+/**
+ * Item class for a live revision table row
+ */
+class RevDelRevisionItem extends RevDelItem {
+       /** @var Revision */
+       var $revision;
+
+       public function __construct( $list, $row ) {
+               parent::__construct( $list, $row );
+               $this->revision = new Revision( $row );
+       }
+
+       public function getIdField() {
+               return 'rev_id';
+       }
+
+       public function getTimestampField() {
+               return 'rev_timestamp';
+       }
+
+       public function getAuthorIdField() {
+               return 'rev_user';
+       }
+
+       public function getAuthorNameField() {
+               return 'rev_user_text';
+       }
+
+       public function canView() {
+               return $this->revision->userCan( Revision::DELETED_RESTRICTED, $this->list->getUser() );
+       }
+
+       public function canViewContent() {
+               return $this->revision->userCan( Revision::DELETED_TEXT, $this->list->getUser() );
+       }
+
+       public function getBits() {
+               return $this->revision->getVisibility();
+       }
+
+       public function setBits( $bits ) {
+               $dbw = wfGetDB( DB_MASTER );
+               // Update revision table
+               $dbw->update( 'revision',
+                       array( 'rev_deleted' => $bits ),
+                       array(
+                               'rev_id' => $this->revision->getId(),
+                               'rev_page' => $this->revision->getPage(),
+                               'rev_deleted' => $this->getBits()
+                       ),
+                       __METHOD__
+               );
+               if ( !$dbw->affectedRows() ) {
+                       // Concurrent fail!
+                       return false;
+               }
+               // Update recentchanges table
+               $dbw->update( 'recentchanges',
+                       array(
+                               'rc_deleted' => $bits,
+                               'rc_patrolled' => 1
+                       ),
+                       array(
+                               'rc_this_oldid' => $this->revision->getId(), // condition
+                               // non-unique timestamp index
+                               'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
+                       ),
+                       __METHOD__
+               );
+
+               return true;
+       }
+
+       public function isDeleted() {
+               return $this->revision->isDeleted( Revision::DELETED_TEXT );
+       }
+
+       public function isHideCurrentOp( $newBits ) {
+               return ( $newBits & Revision::DELETED_TEXT )
+                       && $this->list->getCurrent() == $this->getId();
+       }
+
+       /**
+        * Get the HTML link to the revision text.
+        * Overridden by RevDelArchiveItem.
+        * @return string
+        */
+       protected function getRevisionLink() {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
+               if ( $this->isDeleted() && !$this->canViewContent() ) {
+                       return $date;
+               }
+
+               return Linker::linkKnown(
+                       $this->list->title,
+                       $date,
+                       array(),
+                       array(
+                               'oldid' => $this->revision->getId(),
+                               'unhide' => 1
+                       )
+               );
+       }
+
+       /**
+        * Get the HTML link to the diff.
+        * Overridden by RevDelArchiveItem
+        * @return string
+        */
+       protected function getDiffLink() {
+               if ( $this->isDeleted() && !$this->canViewContent() ) {
+                       return $this->list->msg( 'diff' )->escaped();
+               } else {
+                       return Linker::linkKnown(
+                                       $this->list->title,
+                                       $this->list->msg( 'diff' )->escaped(),
+                                       array(),
+                                       array(
+                                               'diff' => $this->revision->getId(),
+                                               'oldid' => 'prev',
+                                               'unhide' => 1
+                                       )
+                               );
+               }
+       }
+
+       public function getHTML() {
+               $difflink = $this->list->msg( 'parentheses' )
+                       ->rawParams( $this->getDiffLink() )->escaped();
+               $revlink = $this->getRevisionLink();
+               $userlink = Linker::revUserLink( $this->revision );
+               $comment = Linker::revComment( $this->revision );
+               if ( $this->isDeleted() ) {
+                       $revlink = "<span class=\"history-deleted\">$revlink</span>";
+               }
+
+               return "<li>$difflink $revlink $userlink $comment</li>";
+       }
+
+       public function getApiData( ApiResult $result ) {
+               $rev = $this->revision;
+               $user = $this->list->getUser();
+               $ret = array(
+                       'id' => $rev->getId(),
+                       'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ),
+               );
+               $ret += $rev->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+               $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+               $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? array( 'texthidden' => '' ) : array();
+               if ( $rev->userCan( Revision::DELETED_USER, $user ) ) {
+                       $ret += array(
+                               'userid' => $rev->getUser( Revision::FOR_THIS_USER ),
+                               'user' => $rev->getUserText( Revision::FOR_THIS_USER ),
+                       );
+               }
+               if ( $rev->userCan( Revision::DELETED_COMMENT, $user ) ) {
+                       $ret += array(
+                               'comment' => $rev->getComment( Revision::FOR_THIS_USER ),
+                       );
+               }
+
+               return $ret;
+       }
+}
diff --git a/includes/revisiondelete/RevDelRevisionList.php b/includes/revisiondelete/RevDelRevisionList.php
new file mode 100644 (file)
index 0000000..6c47d4a
--- /dev/null
@@ -0,0 +1,143 @@
+<?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
+ */
+
+/**
+ * List for revision table items
+ *
+ * This will check both the 'revision' table for live revisions and the
+ * 'archive' table for traditionally-deleted revisions that have an
+ * ar_rev_id saved.
+ *
+ * See RevDelRevisionItem and RevDelArchivedRevisionItem for items.
+ */
+class RevDelRevisionList extends RevDelList {
+       /** @var int */
+       var $currentRevId;
+
+       public function getType() {
+               return 'revision';
+       }
+
+       public static function getRelationType() {
+               return 'rev_id';
+       }
+
+       public static function getRestriction() {
+               return 'deleterevision';
+       }
+
+       public static function getRevdelConstant() {
+               return Revision::DELETED_TEXT;
+       }
+
+       public static function suggestTarget( $target, array $ids ) {
+               $rev = Revision::newFromId( $ids[0] );
+               return $rev ? $rev->getTitle() : $target;
+       }
+
+       /**
+        * @param DatabaseBase $db
+        * @return mixed
+        */
+       public function doQuery( $db ) {
+               $ids = array_map( 'intval', $this->ids );
+               $live = $db->select(
+                       array( 'revision', 'page', 'user' ),
+                       array_merge( Revision::selectFields(), Revision::selectUserFields() ),
+                       array(
+                               'rev_page' => $this->title->getArticleID(),
+                               'rev_id' => $ids,
+                       ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'rev_id DESC' ),
+                       array(
+                               'page' => Revision::pageJoinCond(),
+                               'user' => Revision::userJoinCond() )
+               );
+
+               if ( $live->numRows() >= count( $ids ) ) {
+                       // All requested revisions are live, keeps things simple!
+                       return $live;
+               }
+
+               // Check if any requested revisions are available fully deleted.
+               $archived = $db->select( array( 'archive' ), Revision::selectArchiveFields(),
+                       array(
+                               'ar_rev_id' => $ids
+                       ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'ar_rev_id DESC' )
+               );
+
+               if ( $archived->numRows() == 0 ) {
+                       return $live;
+               } elseif ( $live->numRows() == 0 ) {
+                       return $archived;
+               } else {
+                       // Combine the two! Whee
+                       $rows = array();
+                       foreach ( $live as $row ) {
+                               $rows[$row->rev_id] = $row;
+                       }
+                       foreach ( $archived as $row ) {
+                               $rows[$row->ar_rev_id] = $row;
+                       }
+                       krsort( $rows );
+                       return new FakeResultWrapper( array_values( $rows ) );
+               }
+       }
+
+       public function newItem( $row ) {
+               if ( isset( $row->rev_id ) ) {
+                       return new RevDelRevisionItem( $this, $row );
+               } elseif ( isset( $row->ar_rev_id ) ) {
+                       return new RevDelArchivedRevisionItem( $this, $row );
+               } else {
+                       // This shouldn't happen. :)
+                       throw new MWException( 'Invalid row type in RevDelRevisionList' );
+               }
+       }
+
+       public function getCurrent() {
+               if ( is_null( $this->currentRevId ) ) {
+                       $dbw = wfGetDB( DB_MASTER );
+                       $this->currentRevId = $dbw->selectField(
+                               'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
+               }
+               return $this->currentRevId;
+       }
+
+       public function getSuppressBit() {
+               return Revision::DELETED_RESTRICTED;
+       }
+
+       public function doPreCommitUpdates() {
+               $this->title->invalidateCache();
+               return Status::newGood();
+       }
+
+       public function doPostCommitUpdates() {
+               $this->title->purgeSquid();
+               // Extensions that require referencing previous revisions may need this
+               wfRunHooks( 'ArticleRevisionVisibilitySet', array( &$this->title ) );
+               return Status::newGood();
+       }
+}
diff --git a/includes/revisiondelete/RevisionDelete.php b/includes/revisiondelete/RevisionDelete.php
deleted file mode 100644 (file)
index 8a08fd1..0000000
+++ /dev/null
@@ -1,1137 +0,0 @@
-<?php
-/**
- * Base implementations 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
- */
-
-/**
- * List for revision table items
- *
- * This will check both the 'revision' table for live revisions and the
- * 'archive' table for traditionally-deleted revisions that have an
- * ar_rev_id saved.
- *
- * See RevDelRevisionItem and RevDelArchivedRevisionItem for items.
- */
-class RevDelRevisionList extends RevDelList {
-       /** @var int */
-       var $currentRevId;
-
-       public function getType() {
-               return 'revision';
-       }
-
-       public static function getRelationType() {
-               return 'rev_id';
-       }
-
-       public static function getRestriction() {
-               return 'deleterevision';
-       }
-
-       public static function getRevdelConstant() {
-               return Revision::DELETED_TEXT;
-       }
-
-       public static function suggestTarget( $target, array $ids ) {
-               $rev = Revision::newFromId( $ids[0] );
-               return $rev ? $rev->getTitle() : $target;
-       }
-
-       /**
-        * @param DatabaseBase $db
-        * @return mixed
-        */
-       public function doQuery( $db ) {
-               $ids = array_map( 'intval', $this->ids );
-               $live = $db->select(
-                       array( 'revision', 'page', 'user' ),
-                       array_merge( Revision::selectFields(), Revision::selectUserFields() ),
-                       array(
-                               'rev_page' => $this->title->getArticleID(),
-                               'rev_id' => $ids,
-                       ),
-                       __METHOD__,
-                       array( 'ORDER BY' => 'rev_id DESC' ),
-                       array(
-                               'page' => Revision::pageJoinCond(),
-                               'user' => Revision::userJoinCond() )
-               );
-
-               if ( $live->numRows() >= count( $ids ) ) {
-                       // All requested revisions are live, keeps things simple!
-                       return $live;
-               }
-
-               // Check if any requested revisions are available fully deleted.
-               $archived = $db->select( array( 'archive' ), Revision::selectArchiveFields(),
-                       array(
-                               'ar_rev_id' => $ids
-                       ),
-                       __METHOD__,
-                       array( 'ORDER BY' => 'ar_rev_id DESC' )
-               );
-
-               if ( $archived->numRows() == 0 ) {
-                       return $live;
-               } elseif ( $live->numRows() == 0 ) {
-                       return $archived;
-               } else {
-                       // Combine the two! Whee
-                       $rows = array();
-                       foreach ( $live as $row ) {
-                               $rows[$row->rev_id] = $row;
-                       }
-                       foreach ( $archived as $row ) {
-                               $rows[$row->ar_rev_id] = $row;
-                       }
-                       krsort( $rows );
-                       return new FakeResultWrapper( array_values( $rows ) );
-               }
-       }
-
-       public function newItem( $row ) {
-               if ( isset( $row->rev_id ) ) {
-                       return new RevDelRevisionItem( $this, $row );
-               } elseif ( isset( $row->ar_rev_id ) ) {
-                       return new RevDelArchivedRevisionItem( $this, $row );
-               } else {
-                       // This shouldn't happen. :)
-                       throw new MWException( 'Invalid row type in RevDelRevisionList' );
-               }
-       }
-
-       public function getCurrent() {
-               if ( is_null( $this->currentRevId ) ) {
-                       $dbw = wfGetDB( DB_MASTER );
-                       $this->currentRevId = $dbw->selectField(
-                               'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
-               }
-               return $this->currentRevId;
-       }
-
-       public function getSuppressBit() {
-               return Revision::DELETED_RESTRICTED;
-       }
-
-       public function doPreCommitUpdates() {
-               $this->title->invalidateCache();
-               return Status::newGood();
-       }
-
-       public function doPostCommitUpdates() {
-               $this->title->purgeSquid();
-               // Extensions that require referencing previous revisions may need this
-               wfRunHooks( 'ArticleRevisionVisibilitySet', array( &$this->title ) );
-               return Status::newGood();
-       }
-}
-
-/**
- * Item class for a live revision table row
- */
-class RevDelRevisionItem extends RevDelItem {
-       /** @var Revision */
-       var $revision;
-
-       public function __construct( $list, $row ) {
-               parent::__construct( $list, $row );
-               $this->revision = new Revision( $row );
-       }
-
-       public function getIdField() {
-               return 'rev_id';
-       }
-
-       public function getTimestampField() {
-               return 'rev_timestamp';
-       }
-
-       public function getAuthorIdField() {
-               return 'rev_user';
-       }
-
-       public function getAuthorNameField() {
-               return 'rev_user_text';
-       }
-
-       public function canView() {
-               return $this->revision->userCan( Revision::DELETED_RESTRICTED, $this->list->getUser() );
-       }
-
-       public function canViewContent() {
-               return $this->revision->userCan( Revision::DELETED_TEXT, $this->list->getUser() );
-       }
-
-       public function getBits() {
-               return $this->revision->getVisibility();
-       }
-
-       public function setBits( $bits ) {
-               $dbw = wfGetDB( DB_MASTER );
-               // Update revision table
-               $dbw->update( 'revision',
-                       array( 'rev_deleted' => $bits ),
-                       array(
-                               'rev_id' => $this->revision->getId(),
-                               'rev_page' => $this->revision->getPage(),
-                               'rev_deleted' => $this->getBits()
-                       ),
-                       __METHOD__
-               );
-               if ( !$dbw->affectedRows() ) {
-                       // Concurrent fail!
-                       return false;
-               }
-               // Update recentchanges table
-               $dbw->update( 'recentchanges',
-                       array(
-                               'rc_deleted' => $bits,
-                               'rc_patrolled' => 1
-                       ),
-                       array(
-                               'rc_this_oldid' => $this->revision->getId(), // condition
-                               // non-unique timestamp index
-                               'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
-                       ),
-                       __METHOD__
-               );
-               return true;
-       }
-
-       public function isDeleted() {
-               return $this->revision->isDeleted( Revision::DELETED_TEXT );
-       }
-
-       public function isHideCurrentOp( $newBits ) {
-               return ( $newBits & Revision::DELETED_TEXT )
-                       && $this->list->getCurrent() == $this->getId();
-       }
-
-       /**
-        * Get the HTML link to the revision text.
-        * Overridden by RevDelArchiveItem.
-        * @return string
-        */
-       protected function getRevisionLink() {
-               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() ) );
-
-               if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return $date;
-               }
-               return Linker::linkKnown(
-                       $this->list->title,
-                       $date,
-                       array(),
-                       array(
-                               'oldid' => $this->revision->getId(),
-                               'unhide' => 1
-                       )
-               );
-       }
-
-       /**
-        * Get the HTML link to the diff.
-        * Overridden by RevDelArchiveItem
-        * @return string
-        */
-       protected function getDiffLink() {
-               if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return $this->list->msg( 'diff' )->escaped();
-               } else {
-                       return Linker::linkKnown(
-                                       $this->list->title,
-                                       $this->list->msg( 'diff' )->escaped(),
-                                       array(),
-                                       array(
-                                               'diff' => $this->revision->getId(),
-                                               'oldid' => 'prev',
-                                               'unhide' => 1
-                                       )
-                               );
-               }
-       }
-
-       public function getHTML() {
-               $difflink = $this->list->msg( 'parentheses' )
-                       ->rawParams( $this->getDiffLink() )->escaped();
-               $revlink = $this->getRevisionLink();
-               $userlink = Linker::revUserLink( $this->revision );
-               $comment = Linker::revComment( $this->revision );
-               if ( $this->isDeleted() ) {
-                       $revlink = "<span class=\"history-deleted\">$revlink</span>";
-               }
-               return "<li>$difflink $revlink $userlink $comment</li>";
-       }
-
-       public function getApiData( ApiResult $result ) {
-               $rev = $this->revision;
-               $user = $this->list->getUser();
-               $ret = array(
-                       'id' => $rev->getId(),
-                       'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ),
-               );
-               $ret += $rev->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
-               $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
-               $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? array( 'texthidden' => '' ) : array();
-               if ( $rev->userCan( Revision::DELETED_USER, $user ) ) {
-                       $ret += array(
-                               'userid' => $rev->getUser( Revision::FOR_THIS_USER ),
-                               'user' => $rev->getUserText( Revision::FOR_THIS_USER ),
-                       );
-               }
-               if ( $rev->userCan( Revision::DELETED_COMMENT, $user ) ) {
-                       $ret += array(
-                               'comment' => $rev->getComment( Revision::FOR_THIS_USER ),
-                       );
-               }
-               return $ret;
-       }
-}
-
-/**
- * List for archive table items, i.e. revisions deleted via action=delete
- */
-class RevDelArchiveList extends RevDelRevisionList {
-       public function getType() {
-               return 'archive';
-       }
-
-       public static function getRelationType() {
-               return 'ar_timestamp';
-       }
-
-       /**
-        * @param DatabaseBase $db
-        * @return mixed
-        */
-       public function doQuery( $db ) {
-               $timestamps = array();
-               foreach ( $this->ids as $id ) {
-                       $timestamps[] = $db->timestamp( $id );
-               }
-               return $db->select( 'archive', Revision::selectArchiveFields(),
-                               array(
-                                       'ar_namespace' => $this->title->getNamespace(),
-                                       'ar_title' => $this->title->getDBkey(),
-                                       'ar_timestamp' => $timestamps
-                               ),
-                               __METHOD__,
-                               array( 'ORDER BY' => 'ar_timestamp DESC' )
-                       );
-       }
-
-       public function newItem( $row ) {
-               return new RevDelArchiveItem( $this, $row );
-       }
-
-       public function doPreCommitUpdates() {
-               return Status::newGood();
-       }
-
-       public function doPostCommitUpdates() {
-               return Status::newGood();
-       }
-}
-
-/**
- * Item class for a archive table row
- */
-class RevDelArchiveItem extends RevDelRevisionItem {
-       public function __construct( $list, $row ) {
-               RevDelItem::__construct( $list, $row );
-               $this->revision = Revision::newFromArchiveRow( $row,
-                       array( 'page' => $this->list->title->getArticleID() ) );
-       }
-
-       public function getIdField() {
-               return 'ar_timestamp';
-       }
-
-       public function getTimestampField() {
-               return 'ar_timestamp';
-       }
-
-       public function getAuthorIdField() {
-               return 'ar_user';
-       }
-
-       public function getAuthorNameField() {
-               return 'ar_user_text';
-       }
-
-       public function getId() {
-               # Convert DB timestamp to MW timestamp
-               return $this->revision->getTimestamp();
-       }
-
-       public function setBits( $bits ) {
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'archive',
-                       array( 'ar_deleted' => $bits ),
-                       array(
-                               'ar_namespace' => $this->list->title->getNamespace(),
-                               'ar_title' => $this->list->title->getDBkey(),
-                               // use timestamp for index
-                               'ar_timestamp' => $this->row->ar_timestamp,
-                               'ar_rev_id' => $this->row->ar_rev_id,
-                               'ar_deleted' => $this->getBits()
-                       ),
-                       __METHOD__ );
-               return (bool)$dbw->affectedRows();
-       }
-
-       protected function getRevisionLink() {
-               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() ) );
-
-               if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return $date;
-               }
-
-               return Linker::link(
-                       SpecialPage::getTitleFor( 'Undelete' ),
-                       $date,
-                       array(),
-                       array(
-                               'target' => $this->list->title->getPrefixedText(),
-                               'timestamp' => $this->revision->getTimestamp()
-                       )
-               );
-       }
-
-       protected function getDiffLink() {
-               if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return $this->list->msg( 'diff' )->escaped();
-               }
-
-               return Linker::link(
-                       SpecialPage::getTitleFor( 'Undelete' ),
-                       $this->list->msg( 'diff' )->escaped(),
-                       array(),
-                       array(
-                               'target' => $this->list->title->getPrefixedText(),
-                               'diff' => 'prev',
-                               'timestamp' => $this->revision->getTimestamp()
-                       )
-               );
-       }
-}
-
-/**
- * Item class for a archive table row by ar_rev_id -- actually
- * used via RevDelRevisionList.
- */
-class RevDelArchivedRevisionItem extends RevDelArchiveItem {
-       public function __construct( $list, $row ) {
-               RevDelItem::__construct( $list, $row );
-
-               $this->revision = Revision::newFromArchiveRow( $row,
-                       array( 'page' => $this->list->title->getArticleID() ) );
-       }
-
-       public function getIdField() {
-               return 'ar_rev_id';
-       }
-
-       public function getId() {
-               return $this->revision->getId();
-       }
-
-       public function setBits( $bits ) {
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'archive',
-                       array( 'ar_deleted' => $bits ),
-                       array( 'ar_rev_id' => $this->row->ar_rev_id,
-                               'ar_deleted' => $this->getBits()
-                       ),
-                       __METHOD__ );
-               return (bool)$dbw->affectedRows();
-       }
-}
-
-/**
- * List for oldimage table items
- */
-class RevDelFileList extends RevDelList {
-       /** @var array */
-       var $storeBatch;
-
-       /** @var array */
-       var $deleteBatch;
-
-       /** @var array */
-       var $cleanupBatch;
-
-       public function getType() {
-               return 'oldimage';
-       }
-
-       public static function getRelationType() {
-               return 'oi_archive_name';
-       }
-
-       public static function getRestriction() {
-               return 'deleterevision';
-       }
-
-       public static function getRevdelConstant() {
-               return File::DELETED_FILE;
-       }
-
-       /**
-        * @param DatabaseBase $db
-        * @return mixed
-        */
-       public function doQuery( $db ) {
-               $archiveNames = array();
-               foreach ( $this->ids as $timestamp ) {
-                       $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
-               }
-               return $db->select(
-                       'oldimage',
-                       OldLocalFile::selectFields(),
-                       array(
-                               'oi_name' => $this->title->getDBkey(),
-                               'oi_archive_name' => $archiveNames
-                       ),
-                       __METHOD__,
-                       array( 'ORDER BY' => 'oi_timestamp DESC' )
-               );
-       }
-
-       public function newItem( $row ) {
-               return new RevDelFileItem( $this, $row );
-       }
-
-       public function clearFileOps() {
-               $this->deleteBatch = array();
-               $this->storeBatch = array();
-               $this->cleanupBatch = array();
-       }
-
-       public function doPreCommitUpdates() {
-               $status = Status::newGood();
-               $repo = RepoGroup::singleton()->getLocalRepo();
-               if ( $this->storeBatch ) {
-                       $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
-               }
-               if ( !$status->isOK() ) {
-                       return $status;
-               }
-               if ( $this->deleteBatch ) {
-                       $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
-               }
-               if ( !$status->isOK() ) {
-                       // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
-                       // modified (but destined for rollback) causes data loss
-                       return $status;
-               }
-               if ( $this->cleanupBatch ) {
-                       $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
-               }
-               return $status;
-       }
-
-       public function doPostCommitUpdates() {
-               global $wgUseSquid;
-               $file = wfLocalFile( $this->title );
-               $file->purgeCache();
-               $file->purgeDescription();
-               $purgeUrls = array();
-               foreach ( $this->ids as $timestamp ) {
-                       $archiveName = $timestamp . '!' . $this->title->getDBkey();
-                       $file->purgeOldThumbnails( $archiveName );
-                       $purgeUrls[] = $file->getArchiveUrl( $archiveName );
-               }
-               if ( $wgUseSquid ) {
-                       // purge full images from cache
-                       SquidUpdate::purge( $purgeUrls );
-               }
-               return Status::newGood();
-       }
-
-       public function getSuppressBit() {
-               return File::DELETED_RESTRICTED;
-       }
-}
-
-/**
- * Item class for an oldimage table row
- */
-class RevDelFileItem extends RevDelItem {
-       /** @var File */
-       var $file;
-
-       public function __construct( $list, $row ) {
-               parent::__construct( $list, $row );
-               $this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
-       }
-
-       public function getIdField() {
-               return 'oi_archive_name';
-       }
-
-       public function getTimestampField() {
-               return 'oi_timestamp';
-       }
-
-       public function getAuthorIdField() {
-               return 'oi_user';
-       }
-
-       public function getAuthorNameField() {
-               return 'oi_user_text';
-       }
-
-       public function getId() {
-               $parts = explode( '!', $this->row->oi_archive_name );
-               return $parts[0];
-       }
-
-       public function canView() {
-               return $this->file->userCan( File::DELETED_RESTRICTED, $this->list->getUser() );
-       }
-
-       public function canViewContent() {
-               return $this->file->userCan( File::DELETED_FILE, $this->list->getUser() );
-       }
-
-       public function getBits() {
-               return $this->file->getVisibility();
-       }
-
-       public function setBits( $bits ) {
-               # Queue the file op
-               # @todo FIXME: Move to LocalFile.php
-               if ( $this->isDeleted() ) {
-                       if ( $bits & File::DELETED_FILE ) {
-                               # Still deleted
-                       } else {
-                               # Newly undeleted
-                               $key = $this->file->getStorageKey();
-                               $srcRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
-                               $this->list->storeBatch[] = array(
-                                       $this->file->repo->getVirtualUrl( 'deleted' ) . '/' . $srcRel,
-                                       'public',
-                                       $this->file->getRel()
-                               );
-                               $this->list->cleanupBatch[] = $key;
-                       }
-               } elseif ( $bits & File::DELETED_FILE ) {
-                       # Newly deleted
-                       $key = $this->file->getStorageKey();
-                       $dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
-                       $this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
-               }
-
-               # Do the database operations
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'oldimage',
-                       array( 'oi_deleted' => $bits ),
-                       array(
-                               'oi_name' => $this->row->oi_name,
-                               'oi_timestamp' => $this->row->oi_timestamp,
-                               'oi_deleted' => $this->getBits()
-                       ),
-                       __METHOD__
-               );
-               return (bool)$dbw->affectedRows();
-       }
-
-       public function isDeleted() {
-               return $this->file->isDeleted( File::DELETED_FILE );
-       }
-
-       /**
-        * Get the link to the file.
-        * Overridden by RevDelArchivedFileItem.
-        * @return string
-        */
-       protected function getLink() {
-               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() ) );
-
-               if ( !$this->isDeleted() ) {
-                       # Regular files...
-                       return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
-               }
-
-               # Hidden files...
-               if ( !$this->canViewContent() ) {
-                       $link = $date;
-               } else {
-                       $link = Linker::link(
-                               SpecialPage::getTitleFor( 'Revisiondelete' ),
-                               $date,
-                               array(),
-                               array(
-                                       'target' => $this->list->title->getPrefixedText(),
-                                       'file' => $this->file->getArchiveName(),
-                                       'token' => $this->list->getUser()->getEditToken(
-                                               $this->file->getArchiveName() )
-                               )
-                       );
-               }
-               return '<span class="history-deleted">' . $link . '</span>';
-       }
-
-       /**
-        * Generate a user tool link cluster if the current user is allowed to view it
-        * @return string HTML
-        */
-       protected function getUserTools() {
-               if ( $this->file->userCan( Revision::DELETED_USER, $this->list->getUser() ) ) {
-                       $uid = $this->file->getUser( 'id' );
-                       $name = $this->file->getUser( 'text' );
-                       $link = Linker::userLink( $uid, $name ) . Linker::userToolLinks( $uid, $name );
-               } else {
-                       $link = $this->list->msg( 'rev-deleted-user' )->escaped();
-               }
-               if ( $this->file->isDeleted( Revision::DELETED_USER ) ) {
-                       return '<span class="history-deleted">' . $link . '</span>';
-               }
-               return $link;
-       }
-
-       /**
-        * Wrap and format the file's comment block, if the current
-        * user is allowed to view it.
-        *
-        * @return string HTML
-        */
-       protected function getComment() {
-               if ( $this->file->userCan( File::DELETED_COMMENT, $this->list->getUser() ) ) {
-                       $block = Linker::commentBlock( $this->file->getDescription() );
-               } else {
-                       $block = ' ' . $this->list->msg( 'rev-deleted-comment' )->escaped();
-               }
-               if ( $this->file->isDeleted( File::DELETED_COMMENT ) ) {
-                       return "<span class=\"history-deleted\">$block</span>";
-               }
-               return $block;
-       }
-
-       public function getHTML() {
-               $data =
-                       $this->list->msg( 'widthheight' )->numParams(
-                               $this->file->getWidth(), $this->file->getHeight() )->text() .
-                       ' (' . $this->list->msg( 'nbytes' )->numParams( $this->file->getSize() )->text() . ')';
-
-               return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
-                       $data . ' ' . $this->getComment() . '</li>';
-       }
-
-       public function getApiData( ApiResult $result ) {
-               $file = $this->file;
-               $user = $this->list->getUser();
-               $ret = array(
-                       'title' => $this->list->title->getPrefixedText(),
-                       'archivename' => $file->getArchiveName(),
-                       'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
-                       'width' => $file->getWidth(),
-                       'height' => $file->getHeight(),
-                       'size' => $file->getSize(),
-               );
-               $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
-               $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
-               $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
-               if ( !$this->isDeleted() ) {
-                       $ret += array(
-                               'url' => $file->getUrl(),
-                       );
-               } elseif ( $this->canViewContent() ) {
-                       $ret += array(
-                               'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
-                                       array(
-                                               'target' => $this->list->title->getPrefixedText(),
-                                               'file' => $file->getArchiveName(),
-                                               'token' => $user->getEditToken( $file->getArchiveName() )
-                                       ),
-                                       false, PROTO_RELATIVE
-                               ),
-                       );
-               }
-               if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
-                       $ret += array(
-                               'userid' => $file->user,
-                               'user' => $file->user_text,
-                       );
-               }
-               if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
-                       $ret += array(
-                               'comment' => $file->description,
-                       );
-               }
-               return $ret;
-       }
-}
-
-/**
- * List for filearchive table items
- */
-class RevDelArchivedFileList extends RevDelFileList {
-       public function getType() {
-               return 'filearchive';
-       }
-
-       public static function getRelationType() {
-               return 'fa_id';
-       }
-
-       /**
-        * @param DatabaseBase $db
-        * @return mixed
-        */
-       public function doQuery( $db ) {
-               $ids = array_map( 'intval', $this->ids );
-               return $db->select(
-                       'filearchive',
-                       ArchivedFile::selectFields(),
-                       array(
-                               'fa_name' => $this->title->getDBkey(),
-                               'fa_id' => $ids
-                       ),
-                       __METHOD__,
-                       array( 'ORDER BY' => 'fa_id DESC' )
-               );
-       }
-
-       public function newItem( $row ) {
-               return new RevDelArchivedFileItem( $this, $row );
-       }
-}
-
-/**
- * Item class for a filearchive table row
- */
-class RevDelArchivedFileItem extends RevDelFileItem {
-       public function __construct( $list, $row ) {
-               RevDelItem::__construct( $list, $row );
-               $this->file = ArchivedFile::newFromRow( $row );
-       }
-
-       public function getIdField() {
-               return 'fa_id';
-       }
-
-       public function getTimestampField() {
-               return 'fa_timestamp';
-       }
-
-       public function getAuthorIdField() {
-               return 'fa_user';
-       }
-
-       public function getAuthorNameField() {
-               return 'fa_user_text';
-       }
-
-       public function getId() {
-               return $this->row->fa_id;
-       }
-
-       public function setBits( $bits ) {
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'filearchive',
-                       array( 'fa_deleted' => $bits ),
-                       array(
-                               'fa_id' => $this->row->fa_id,
-                               'fa_deleted' => $this->getBits(),
-                       ),
-                       __METHOD__
-               );
-               return (bool)$dbw->affectedRows();
-       }
-
-       protected function getLink() {
-               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() ) );
-
-               # Hidden files...
-               if ( !$this->canViewContent() ) {
-                       $link = $date;
-               } else {
-                       $undelete = SpecialPage::getTitleFor( 'Undelete' );
-                       $key = $this->file->getKey();
-                       $link = Linker::link( $undelete, $date, array(),
-                               array(
-                                       'target' => $this->list->title->getPrefixedText(),
-                                       'file' => $key,
-                                       'token' => $this->list->getUser()->getEditToken( $key )
-                               )
-                       );
-               }
-               if ( $this->isDeleted() ) {
-                       $link = '<span class="history-deleted">' . $link . '</span>';
-               }
-               return $link;
-       }
-
-       public function getApiData( ApiResult $result ) {
-               $file = $this->file;
-               $user = $this->list->getUser();
-               $ret = array(
-                       'title' => $this->list->title->getPrefixedText(),
-                       'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
-                       'width' => $file->getWidth(),
-                       'height' => $file->getHeight(),
-                       'size' => $file->getSize(),
-               );
-               $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
-               $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
-               $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
-               if ( $this->canViewContent() ) {
-                       $ret += array(
-                               'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
-                                       array(
-                                               'target' => $this->list->title->getPrefixedText(),
-                                               'file' => $file->getKey(),
-                                               'token' => $user->getEditToken( $file->getKey() )
-                                       ),
-                                       false, PROTO_RELATIVE
-                               ),
-                       );
-               }
-               if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
-                       $ret += array(
-                               'userid' => $file->getUser( 'id' ),
-                               'user' => $file->getUser( 'text' ),
-                       );
-               }
-               if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
-                       $ret += array(
-                               'comment' => $file->getRawDescription(),
-                       );
-               }
-               return $ret;
-       }
-}
-
-/**
- * List for logging table items
- */
-class RevDelLogList extends RevDelList {
-       public function getType() {
-               return 'logging';
-       }
-
-       public static function getRelationType() {
-               return 'log_id';
-       }
-
-       public static function getRestriction() {
-               return 'deletelogentry';
-       }
-
-       public static function getRevdelConstant() {
-               return LogPage::DELETED_ACTION;
-       }
-
-       public static function suggestTarget( $target, array $ids ) {
-               $result = wfGetDB( DB_SLAVE )->select( 'logging',
-                       'log_type',
-                       array( 'log_id' => $ids ),
-                       __METHOD__,
-                       array( 'DISTINCT' )
-               );
-               if ( $result->numRows() == 1 ) {
-                       // If there's only one type, the target can be set to include it.
-                       return SpecialPage::getTitleFor( 'Log', $result->current()->log_type );
-               }
-               return SpecialPage::getTitleFor( 'Log' );
-       }
-
-       /**
-        * @param DatabaseBase $db
-        * @return mixed
-        */
-       public function doQuery( $db ) {
-               $ids = array_map( 'intval', $this->ids );
-               return $db->select( 'logging', array(
-                               'log_id',
-                               'log_type',
-                               'log_action',
-                               'log_timestamp',
-                               'log_user',
-                               'log_user_text',
-                               'log_namespace',
-                               'log_title',
-                               'log_page',
-                               'log_comment',
-                               'log_params',
-                               'log_deleted'
-                       ),
-                       array( 'log_id' => $ids ),
-                       __METHOD__,
-                       array( 'ORDER BY' => 'log_id DESC' )
-               );
-       }
-
-       public function newItem( $row ) {
-               return new RevDelLogItem( $this, $row );
-       }
-
-       public function getSuppressBit() {
-               return Revision::DELETED_RESTRICTED;
-       }
-
-       public function getLogAction() {
-               return 'event';
-       }
-
-       public function getLogParams( $params ) {
-               return array(
-                       implode( ',', $params['ids'] ),
-                       "ofield={$params['oldBits']}",
-                       "nfield={$params['newBits']}"
-               );
-       }
-}
-
-/**
- * Item class for a logging table row
- */
-class RevDelLogItem extends RevDelItem {
-       public function getIdField() {
-               return 'log_id';
-       }
-
-       public function getTimestampField() {
-               return 'log_timestamp';
-       }
-
-       public function getAuthorIdField() {
-               return 'log_user';
-       }
-
-       public function getAuthorNameField() {
-               return 'log_user_text';
-       }
-
-       public function canView() {
-               return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED, $this->list->getUser() );
-       }
-
-       public function canViewContent() {
-               return true; // none
-       }
-
-       public function getBits() {
-               return $this->row->log_deleted;
-       }
-
-       public function setBits( $bits ) {
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'recentchanges',
-                       array(
-                               'rc_deleted' => $bits,
-                               'rc_patrolled' => 1
-                       ),
-                       array(
-                               'rc_logid' => $this->row->log_id,
-                               'rc_timestamp' => $this->row->log_timestamp // index
-                       ),
-                       __METHOD__
-               );
-               $dbw->update( 'logging',
-                       array( 'log_deleted' => $bits ),
-                       array(
-                               'log_id' => $this->row->log_id,
-                               'log_deleted' => $this->getBits()
-                       ),
-                       __METHOD__
-               );
-               return (bool)$dbw->affectedRows();
-       }
-
-       public function getHTML() {
-               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
-                       $this->row->log_timestamp, $this->list->getUser() ) );
-               $title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
-               $formatter = LogFormatter::newFromRow( $this->row );
-               $formatter->setContext( $this->list->getContext() );
-               $formatter->setAudience( LogFormatter::FOR_THIS_USER );
-
-               // Log link for this page
-               $loglink = Linker::link(
-                       SpecialPage::getTitleFor( 'Log' ),
-                       $this->list->msg( 'log' )->escaped(),
-                       array(),
-                       array( 'page' => $title->getPrefixedText() )
-               );
-               $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
-               // User links and action text
-               $action = $formatter->getActionText();
-               // Comment
-               $comment = $this->list->getLanguage()->getDirMark()
-                       . Linker::commentBlock( $this->row->log_comment );
-
-               if ( LogEventsList::isDeleted( $this->row, LogPage::DELETED_COMMENT ) ) {
-                       $comment = '<span class="history-deleted">' . $comment . '</span>';
-               }
-
-               return "<li>$loglink $date $action $comment</li>";
-       }
-
-       public function getApiData( ApiResult $result ) {
-               $logEntry = DatabaseLogEntry::newFromRow( $this->row );
-               $user = $this->list->getUser();
-               $ret = array(
-                       'id' => $logEntry->getId(),
-                       'type' => $logEntry->getType(),
-                       'action' => $logEntry->getSubtype(),
-               );
-               $ret += $logEntry->isDeleted( LogPage::DELETED_USER )
-                       ? array( 'userhidden' => '' )
-                       : array();
-               $ret += $logEntry->isDeleted( LogPage::DELETED_COMMENT )
-                       ? array( 'commenthidden' => '' )
-                       : array();
-               $ret += $logEntry->isDeleted( LogPage::DELETED_ACTION )
-                       ? array( 'actionhidden' => '' )
-                       : array();
-
-               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_ACTION, $user ) ) {
-                       ApiQueryLogEvents::addLogParams(
-                               $result,
-                               $ret,
-                               $logEntry->getParameters(),
-                               $logEntry->getType(),
-                               $logEntry->getSubtype(),
-                               $logEntry->getTimestamp(),
-                               $logEntry->isLegacy()
-                       );
-               }
-               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_USER, $user ) ) {
-                       $ret += array(
-                               'userid' => $this->row->log_user,
-                               'user' => $this->row->log_user_text,
-                       );
-               }
-               if ( LogEventsList::userCan( $this->row, LogPage::DELETED_COMMENT, $user ) ) {
-                       $ret += array(
-                               'comment' => $this->row->log_comment,
-                       );
-               }
-               return $ret;
-       }
-}
index 43fb016..914bc1c 100644 (file)
@@ -35,14 +35,14 @@ class SearchPostgres extends SearchDatabase {
         * latest revision article text (pagecontent.old_text)
         *
         * @param string $term Raw search term
-        * @return PostgresSearchResultSet
+        * @return SqlSearchResultSet
         */
        function searchTitle( $term ) {
                $q = $this->searchQuery( $term, 'titlevector', 'page_title' );
                $olderror = error_reporting( E_ERROR );
                $resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
                error_reporting( $olderror );
-               return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+               return new SqlSearchResultSet( $resultSet, $this->searchTerms );
        }
 
        function searchText( $term ) {
@@ -50,7 +50,7 @@ class SearchPostgres extends SearchDatabase {
                $olderror = error_reporting( E_ERROR );
                $resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
                error_reporting( $olderror );
-               return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+               return new SqlSearchResultSet( $resultSet, $this->searchTerms );
        }
 
        /**
@@ -195,32 +195,4 @@ class SearchPostgres extends SearchDatabase {
                return true;
        }
 
-} ## end of the SearchPostgres class
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResult extends SearchResult {
-       function __construct( $row ) {
-               parent::__construct( $row );
-               $this->score = $row->score;
-       }
-
-       function getScore() {
-               return $this->score;
-       }
-}
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResultSet extends SqlSearchResultSet {
-       function next() {
-               $row = $this->resultSet->fetchObject();
-               if ( $row === false ) {
-                       return false;
-               } else {
-                       return new PostgresSearchResult( $row );
-               }
-       }
 }
index 453211b..d51bff7 100644 (file)
@@ -142,13 +142,6 @@ class SearchResult {
                return $this->mImage;
        }
 
-       /**
-        * @return float|null If not supported
-        */
-       function getScore() {
-               return null;
-       }
-
        /**
         * Lazy initialization of article text from DB
         */
index 806a48a..c28aa86 100644 (file)
@@ -410,12 +410,11 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @return string
         */
        public static function makeLegend( IContextSource $context ) {
-               global $wgRecentChangesFlags;
                $user = $context->getUser();
                # The legend showing what the letters and stuff mean
                $legend = Html::openElement( 'dl' ) . "\n";
                # Iterates through them and gets the messages for both letter and tooltip
-               $legendItems = $wgRecentChangesFlags;
+               $legendItems = $context->getConfig()->get( 'RecentChangesFlags' );
                if ( !( $user->useRCPatrol() || $user->useNPPatrol() ) ) {
                        unset( $legendItems['unpatrolled'] );
                }
index b8fc05e..ae0003d 100644 (file)
@@ -203,8 +203,7 @@ abstract class QueryPage extends SpecialPage {
         * @return bool
         */
        function isExpensive() {
-               global $wgDisableQueryPages;
-               return $wgDisableQueryPages;
+               return $this->getConfig()->get( 'DisableQueryPages' );
        }
 
        /**
@@ -225,9 +224,7 @@ abstract class QueryPage extends SpecialPage {
         * @return bool
         */
        function isCached() {
-               global $wgMiserMode;
-
-               return $this->isExpensive() && $wgMiserMode;
+               return $this->isExpensive() && $this->getConfig()->get( 'MiserMode' );
        }
 
        /**
@@ -472,8 +469,6 @@ abstract class QueryPage extends SpecialPage {
         * @param string $par
         */
        function execute( $par ) {
-               global $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
-
                $user = $this->getUser();
                if ( !$this->userCanExecute( $user ) ) {
                        $this->displayRestrictionError();
@@ -508,7 +503,7 @@ abstract class QueryPage extends SpecialPage {
                                # Fetch the timestamp of this update
                                $ts = $this->getCachedTimestamp();
                                $lang = $this->getLanguage();
-                               $maxResults = $lang->formatNum( $wgQueryCacheLimit );
+                               $maxResults = $lang->formatNum( $this->getConfig()->get( 'QueryCacheLimit' ) );
 
                                if ( $ts ) {
                                        $updated = $lang->userTimeAndDate( $ts, $user );
@@ -523,8 +518,8 @@ abstract class QueryPage extends SpecialPage {
 
                                # If updates on this page have been disabled, let the user know
                                # that the data set won't be refreshed for now
-                               if ( is_array( $wgDisableQueryPageUpdate )
-                                       && in_array( $this->getName(), $wgDisableQueryPageUpdate )
+                               if ( is_array( $this->getConfig()->get( 'DisableQueryPageUpdate' ) )
+                                       && in_array( $this->getName(), $this->getConfig()->get( 'DisableQueryPageUpdate' ) )
                                ) {
                                        $out->wrapWikiMsg(
                                                "<div class=\"mw-querypage-no-updates\">\n$1\n</div>",
@@ -671,18 +666,17 @@ abstract class QueryPage extends SpecialPage {
         * @return bool
         */
        function doFeed( $class = '', $limit = 50 ) {
-               global $wgFeed, $wgFeedClasses, $wgFeedLimit;
-
-               if ( !$wgFeed ) {
+               if ( !$this->getConfig()->get( 'Feed' ) ) {
                        $this->getOutput()->addWikiMsg( 'feed-unavailable' );
                        return false;
                }
 
-               $limit = min( $limit, $wgFeedLimit );
+               $limit = min( $limit, $this->getConfig()->get( 'FeedLimit' ) );
 
-               if ( isset( $wgFeedClasses[$class] ) ) {
+               $feedClasses = $this->getConfig()->get( 'FeedClasses' );
+               if ( isset( $feedClasses[$class] ) ) {
                        /** @var RSSFeed|AtomFeed $feed */
-                       $feed = new $wgFeedClasses[$class](
+                       $feed = new $feedClasses[$class](
                                $this->feedTitle(),
                                $this->feedDesc(),
                                $this->feedUrl() );
@@ -743,9 +737,10 @@ abstract class QueryPage extends SpecialPage {
        }
 
        function feedTitle() {
-               global $wgLanguageCode, $wgSitename;
                $desc = $this->getDescription();
-               return "$wgSitename - $desc [$wgLanguageCode]";
+               $code = $this->getConfig()->get( 'LanguageCode' );
+               $sitename = $this->getConfig()->get( 'Sitename' );
+               return "$sitename - $desc [$code]";
        }
 
        function feedDesc() {
index 0070c74..4edd87a 100644 (file)
@@ -27,7 +27,6 @@
  * Includes some static functions for handling the special page list deprecated
  * in favor of SpecialPageFactory.
  *
- * @todo Turn this into a real ContextSource
  * @ingroup SpecialPage
  */
 class SpecialPage {
@@ -274,44 +273,20 @@ class SpecialPage {
        }
 
        /**
-        * If the user is not logged in, throws UserNotLoggedIn error.
+        * If the user is not logged in, throws UserNotLoggedIn error
         *
-        * Default error message includes a link to Special:Userlogin with properly set 'returnto' query
-        * parameter.
+        * The user will be redirected to Special:Userlogin with the given message as an error on
+        * the form.
         *
         * @since 1.23
-        * @param string|Message $reasonMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
-        *     will be used as message keys. If a string is given, the message will also receive a
-        *     formatted login link (generated using the 'loginreqlink' message) as first parameter. If a
-        *     Message is given, it will be passed on verbatim.
-        * @param string|Message $titleMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
-        *     will be used as message keys.
+        * @param string $reasonMsg [optional] Message key to be displayed on login page
+        * @param string $titleMsg [optional] Passed on to UserNotLoggedIn constructor
         * @throws UserNotLoggedIn
         */
-       public function requireLogin( $reasonMsg = null, $titleMsg = null ) {
+       public function requireLogin(
+               $reasonMsg = 'exception-nologin-text', $titleMsg = 'exception-nologin'
+       ) {
                if ( $this->getUser()->isAnon() ) {
-                       // Use default messages if not given or explicit null passed
-                       if ( !$reasonMsg ) {
-                               $reasonMsg = 'exception-nologin-text-manual';
-                       }
-                       if ( !$titleMsg ) {
-                               $titleMsg = 'exception-nologin';
-                       }
-
-                       // Convert to Messages with current context
-                       if ( is_string( $reasonMsg ) ) {
-                               $loginreqlink = Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Userlogin' ),
-                                       $this->msg( 'loginreqlink' )->escaped(),
-                                       array(),
-                                       array( 'returnto' => $this->getPageTitle()->getPrefixedText() )
-                               );
-                               $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
-                       }
-                       if ( is_string( $titleMsg ) ) {
-                               $titleMsg = $this->msg( $titleMsg );
-                       }
-
                        throw new UserNotLoggedIn( $reasonMsg, $titleMsg );
                }
        }
@@ -621,11 +596,9 @@ class SpecialPage {
         * @param array $params
         */
        protected function addFeedLinks( $params ) {
-               global $wgFeedClasses;
-
                $feedTemplate = wfScript( 'api' );
 
-               foreach ( $wgFeedClasses as $format => $class ) {
+               foreach ( $this->getConfig()->get( 'FeedClasses' ) as $format => $class ) {
                        $theseParams = $params + array( 'feedformat' => $format );
                        $url = wfAppendQuery( $feedTemplate, $theseParams );
                        $this->getOutput()->addFeedLink( $format, $url );
@@ -641,8 +614,8 @@ class SpecialPage {
         * @since 1.21
         */
        public function getFinalGroupName() {
-               global $wgSpecialPageGroups;
                $name = $this->getName();
+               $specialPageGroups = $this->getConfig()->get( 'SpecialPageGroups' );
 
                // Allow overbidding the group from the wiki side
                $msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
@@ -655,8 +628,8 @@ class SpecialPage {
                        // Group '-' is used as default to have the chance to determine,
                        // if the special pages overrides this method,
                        // if not overridden, $wgSpecialPageGroups is checked for b/c
-                       if ( $group === '-' && isset( $wgSpecialPageGroups[$name] ) ) {
-                               $group = $wgSpecialPageGroups[$name];
+                       if ( $group === '-' && isset( $specialPageGroups[$name] ) ) {
+                               $group = $specialPageGroups[$name];
                        }
                }
 
index 6db9e5f..572eacc 100644 (file)
@@ -52,11 +52,9 @@ class ActiveUsersPager extends UsersPager {
         * @param string $par Parameter passed to the page
         */
        function __construct( IContextSource $context = null, $group = null, $par = null ) {
-               global $wgActiveUserDays;
-
                parent::__construct( $context );
 
-               $this->RCMaxAge = $wgActiveUserDays;
+               $this->RCMaxAge = $this->getConfig()->get( 'ActiveUserDays' );
                $un = $this->getRequest()->getText( 'username', $par );
                $this->requestedUser = '';
                if ( $un != '' ) {
@@ -192,13 +190,11 @@ class ActiveUsersPager extends UsersPager {
        }
 
        function getPageHeader() {
-               global $wgScript;
-
                $self = $this->getTitle();
                $limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
 
                # Form tag
-               $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+               $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) );
                $out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
                $out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
 
@@ -247,17 +243,17 @@ class SpecialActiveUsers extends SpecialPage {
         * @param string $par Parameter passed to the page or null
         */
        public function execute( $par ) {
-               global $wgActiveUserDays;
+               $days = $this->getConfig()->get( 'ActiveUserDays' );
 
                $this->setHeaders();
                $this->outputHeader();
 
                $out = $this->getOutput();
                $out->wrapWikiMsg( "<div class='mw-activeusers-intro'>\n$1\n</div>",
-                       array( 'activeusers-intro', $this->getLanguage()->formatNum( $wgActiveUserDays ) ) );
+                       array( 'activeusers-intro', $this->getLanguage()->formatNum( $days ) ) );
 
                // Occasionally merge in new updates
-               $seconds = min( self::mergeActiveUsers( 600 ), $wgActiveUserDays * 86400 );
+               $seconds = min( self::mergeActiveUsers( 600, $days ), $days * 86400 );
                // Mention the level of staleness
                $out->addWikiMsg( 'cachedspecial-viewing-cached-ttl',
                        $this->getLanguage()->formatDuration( $seconds ) );
@@ -284,12 +280,11 @@ class SpecialActiveUsers extends SpecialPage {
        }
 
        /**
-        * @param intr $period Seconds (do updates no more often than this)
+        * @param int $period Seconds (do updates no more often than this)
+        * @param int $days How many days user must be idle before he is considered inactive
         * @return int How many seconds old the cache is
         */
-       public static function mergeActiveUsers( $period ) {
-               global $wgActiveUserDays;
-
+       public static function mergeActiveUsers( $period, $days ) {
                $dbr = wfGetDB( DB_SLAVE );
                $cTime = $dbr->selectField( 'querycache_info',
                        'qci_timestamp',
@@ -300,16 +295,16 @@ class SpecialActiveUsers extends SpecialPage {
                        if ( !$cTime || ( time() - wfTimestamp( TS_UNIX, $cTime ) ) > $period ) {
                                $dbw = wfGetDB( DB_MASTER );
                                if ( $dbw->estimateRowCount( 'recentchanges' ) <= 10000 ) {
-                                       $window = $wgActiveUserDays * 86400; // small wiki
+                                       $window = $days * 86400; // small wiki
                                } else {
                                        $window = $period * 2;
                                }
-                               $cTime = self::doQueryCacheUpdate( $dbw, $window ) ?: $cTime;
+                               $cTime = self::doQueryCacheUpdate( $dbw, $days, $window ) ?: $cTime;
                        }
                }
 
                return ( time() -
-                       ( $cTime ? wfTimestamp( TS_UNIX, $cTime ) : $wgActiveUserDays * 86400 ) );
+                       ( $cTime ? wfTimestamp( TS_UNIX, $cTime ) : $days * 86400 ) );
        }
 
        /**
@@ -319,19 +314,18 @@ class SpecialActiveUsers extends SpecialPage {
        public static function cacheUpdate( DatabaseBase $dbw ) {
                global $wgActiveUserDays;
 
-               self::doQueryCacheUpdate( $dbw, $wgActiveUserDays * 86400 );
+               self::doQueryCacheUpdate( $dbw, $wgActiveUserDays, $wgActiveUserDays * 86400 );
        }
 
        /**
         * Update the query cache as needed
         *
         * @param DatabaseBase $dbw
+        * @param int $days How many days user must be idle before he is considered inactive
         * @param int $window Maximum time range of new data to scan (in seconds)
         * @return int|bool UNIX timestamp the cache is now up-to-date as of (false on error)
         */
-       protected static function doQueryCacheUpdate( DatabaseBase $dbw, $window ) {
-               global $wgActiveUserDays;
-
+       protected static function doQueryCacheUpdate( DatabaseBase $dbw, $days, $window ) {
                $lockKey = wfWikiID() . '-activeusers';
                if ( !$dbw->lock( $lockKey, __METHOD__, 1 ) ) {
                        return false; // exclusive update (avoids duplicate entries)
@@ -347,7 +341,7 @@ class SpecialActiveUsers extends SpecialPage {
                // Pick the date range to fetch from. This is normally from the last
                // update to till the present time, but has a limited window for sanity.
                // If the window is limited, multiple runs are need to fully populate it.
-               $sTimestamp = max( $cTimeUnix, $now - $wgActiveUserDays * 86400 );
+               $sTimestamp = max( $cTimeUnix, $now - $days * 86400 );
                $eTimestamp = min( $sTimestamp + $window, $now );
 
                // Get all the users active since the last update
@@ -376,7 +370,7 @@ class SpecialActiveUsers extends SpecialPage {
                $dbw->delete( 'querycachetwo',
                        array(
                                'qcc_type' => 'activeusers',
-                               'qcc_value < ' . $dbw->addQuotes( $now - $wgActiveUserDays * 86400 ) // TS_UNIX
+                               'qcc_value < ' . $dbw->addQuotes( $now - $days * 86400 ) // TS_UNIX
                        ),
                        __METHOD__
                );
index 581619f..72f4e46 100644 (file)
@@ -117,15 +117,13 @@ class SpecialBookSources extends SpecialPage {
         * @return string
         */
        private function makeForm() {
-               global $wgScript;
-
                $form = Html::openElement( 'fieldset' ) . "\n";
                $form .= Html::element(
                        'legend',
                        array(),
                        $this->msg( 'booksources-search-legend' )->text()
                ) . "\n";
-               $form .= Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n";
+               $form .= Html::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) . "\n";
                $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) . "\n";
                $form .= '<p>' . Xml::inputLabel(
                        $this->msg( 'booksources-isbn' )->text(),
index 3367bd4..95f9efd 100644 (file)
@@ -180,11 +180,9 @@ class CategoryPager extends AlphabeticPager {
        }
 
        public function getStartForm( $from ) {
-               global $wgScript;
-
                return Xml::tags(
                        'form',
-                       array( 'method' => 'get', 'action' => $wgScript ),
+                       array( 'method' => 'get', 'action' => wfScript() ),
                        Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
                                Xml::fieldset(
                                        $this->msg( 'categories' )->text(),
index c57e33b..7fc4a17 100644 (file)
@@ -136,7 +136,6 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
        }
 
        protected function showForm() {
-               global $wgRequirePasswordforEmailChange;
                $user = $this->getUser();
 
                $oldEmailText = $user->getEmail()
@@ -160,7 +159,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                        array( 'wpOldEmail', 'changeemail-oldemail', 'text', $oldEmailText ),
                        array( 'wpNewEmail', 'changeemail-newemail', 'email', $this->mNewEmail ),
                );
-               if ( $wgRequirePasswordforEmailChange ) {
+               if ( $this->getConfig()->get( 'RequirePasswordforEmailChange' ) ) {
                        $items[] = array( 'wpPassword', 'changeemail-password', 'password', $this->mPassword );
                }
 
@@ -221,7 +220,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
         * @return bool|string True or string on success, false on failure
         */
        protected function attemptChange( User $user, $pass, $newaddr ) {
-               global $wgAuth, $wgPasswordAttemptThrottle;
+               global $wgAuth;
 
                if ( $newaddr != '' && !Sanitizer::validateEmail( $newaddr ) ) {
                        $this->error( 'invalidemailaddress' );
@@ -232,16 +231,16 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                $throttleCount = LoginForm::incLoginThrottle( $user->getName() );
                if ( $throttleCount === true ) {
                        $lang = $this->getLanguage();
+                       $throttleInfo = $this->getConfig()->get( 'PasswordAttemptThrottle' );
                        $this->error( array(
                                'changeemail-throttled',
-                               $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] )
+                               $lang->formatDuration( $throttleInfo['seconds'] )
                        ) );
 
                        return false;
                }
 
-               global $wgRequirePasswordforEmailChange;
-               if ( $wgRequirePasswordforEmailChange
+               if ( $this->getConfig()->get( 'RequirePasswordforEmailChange' )
                        && !$user->checkTemporaryPassword( $pass )
                        && !$user->checkPassword( $pass )
                ) {
index ad1d597..867fd1b 100644 (file)
@@ -77,8 +77,6 @@ class SpecialChangePassword extends FormSpecialPage {
        }
 
        protected function getFormFields() {
-               global $wgCookieExpiration;
-
                $user = $this->getUser();
                $request = $this->getRequest();
 
@@ -134,8 +132,9 @@ class SpecialChangePassword extends FormSpecialPage {
                        $fields['Remember'] = array(
                                'type' => 'check',
                                'label' => $this->msg( 'remembermypassword' )
-                                               ->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )
-                                               ->text(),
+                                               ->numParams(
+                                                       ceil( $this->getConfig()->get( 'CookieExpiration' ) / ( 3600 * 24 ) )
+                                               )->text(),
                                'default' => $request->getVal( 'wpRemember' ),
                        );
                }
@@ -233,8 +232,6 @@ class SpecialChangePassword extends FormSpecialPage {
         * @throws PasswordError When cannot set the new password because requirements not met.
         */
        protected function attemptReset( $oldpass, $newpass, $retype ) {
-               global $wgPasswordAttemptThrottle;
-
                $isSelf = ( $this->mUserName === $this->getUser()->getName() );
                if ( $isSelf ) {
                        $user = $this->getUser();
@@ -254,8 +251,9 @@ class SpecialChangePassword extends FormSpecialPage {
                $throttleCount = LoginForm::incLoginThrottle( $this->mUserName );
                if ( $throttleCount === true ) {
                        $lang = $this->getLanguage();
+                       $throttleInfo = $this->getConfig()->get( 'PasswordAttemptThrottle' );
                        throw new PasswordError( $this->msg( 'changepassword-throttled' )
-                               ->params( $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) )
+                               ->params( $lang->formatDuration( $throttleInfo['seconds'] ) )
                                ->text()
                        );
                }
index a884a39..15a5b74 100644 (file)
@@ -396,8 +396,6 @@ class SpecialContributions extends IncludableSpecialPage {
         * @return string HTML fragment
         */
        protected function getForm() {
-               global $wgScript;
-
                $this->opts['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $this->opts['target'] ) ) {
                        $this->opts['target'] = '';
@@ -449,7 +447,7 @@ class SpecialContributions extends IncludableSpecialPage {
                        'form',
                        array(
                                'method' => 'get',
-                               'action' => $wgScript,
+                               'action' => wfScript(),
                                'class' => 'mw-contributions-form'
                        )
                );
index b69eb63..934b7a3 100644 (file)
@@ -286,8 +286,6 @@ class DeletedContributionsPage extends SpecialPage {
         * @param string $par (optional) user name of the user for which to show the contributions
         */
        function execute( $par ) {
-               global $wgQueryPageDefaultLimit;
-
                $this->setHeaders();
                $this->outputHeader();
 
@@ -317,7 +315,7 @@ class DeletedContributionsPage extends SpecialPage {
                        return;
                }
 
-               $options['limit'] = $request->getInt( 'limit', $wgQueryPageDefaultLimit );
+               $options['limit'] = $request->getInt( 'limit', $this->getConfig()->get( 'QueryPageDefaultLimit' ) );
                $options['target'] = $target;
 
                $userObj = User::newFromName( $target, false );
@@ -507,8 +505,6 @@ class DeletedContributionsPage extends SpecialPage {
         * @return string
         */
        function getForm( $options ) {
-               global $wgScript;
-
                $options['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $options['target'] ) ) {
                        $options['target'] = '';
@@ -528,7 +524,7 @@ class DeletedContributionsPage extends SpecialPage {
                        $options['target'] = '';
                }
 
-               $f = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+               $f = Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) );
 
                foreach ( $options as $name => $value ) {
                        if ( in_array( $name, array( 'namespace', 'target', 'contribs' ) ) ) {
index ecbd353..60eec39 100644 (file)
@@ -52,7 +52,7 @@ class SpecialExpandTemplates extends SpecialPage {
         * Show the special page
         */
        function execute( $subpage ) {
-               global $wgParser, $wgUseTidy, $wgAlwaysUseTidy;
+               global $wgParser;
 
                $this->setHeaders();
 
@@ -112,7 +112,8 @@ class SpecialExpandTemplates extends SpecialPage {
                                );
                        }
 
-                       if ( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
+                       $config = $this->getConfig();
+                       if ( ( $config->get( 'UseTidy' ) && $options->getTidy() ) || $config->get( 'AlwaysUseTidy' ) ) {
                                $tmp = MWTidy::tidy( $tmp );
                        }
 
index 2cf5bfe..38c52a0 100644 (file)
@@ -37,12 +37,9 @@ class SpecialExport extends SpecialPage {
        }
 
        public function execute( $par ) {
-               global $wgSitename, $wgExportAllowListContributors, $wgExportFromNamespaces;
-               global $wgExportAllowHistory, $wgExportMaxHistory, $wgExportMaxLinkDepth;
-               global $wgExportAllowAll;
-
                $this->setHeaders();
                $this->outputHeader();
+               $config = $this->getConfig();
 
                // Set some variables
                $this->curonly = true;
@@ -74,7 +71,7 @@ class SpecialExport extends SpecialPage {
                                        }
                                }
                        }
-               } elseif ( $request->getCheck( 'addns' ) && $wgExportFromNamespaces ) {
+               } elseif ( $request->getCheck( 'addns' ) && $config->get( 'ExportFromNamespaces' ) ) {
                        $page = $request->getText( 'pages' );
                        $nsindex = $request->getText( 'nsindex', '' );
 
@@ -87,7 +84,7 @@ class SpecialExport extends SpecialPage {
                                        $page .= "\n" . implode( "\n", $nspages );
                                }
                        }
-               } elseif ( $request->getCheck( 'exportall' ) && $wgExportAllowAll ) {
+               } elseif ( $request->getCheck( 'exportall' ) && $config->get( 'ExportAllowAll' ) ) {
                        $this->doExport = true;
                        $exportall = true;
 
@@ -108,19 +105,20 @@ class SpecialExport extends SpecialPage {
                                $offset = null;
                        }
 
+                       $maxHistory = $config->get( 'ExportMaxHistory' );
                        $limit = $request->getInt( 'limit' );
                        $dir = $request->getVal( 'dir' );
                        $history = array(
                                'dir' => 'asc',
                                'offset' => false,
-                               'limit' => $wgExportMaxHistory,
+                               'limit' => $maxHistory,
                        );
                        $historyCheck = $request->getCheck( 'history' );
 
                        if ( $this->curonly ) {
                                $history = WikiExporter::CURRENT;
                        } elseif ( !$historyCheck ) {
-                               if ( $limit > 0 && ( $wgExportMaxHistory == 0 || $limit < $wgExportMaxHistory ) ) {
+                               if ( $limit > 0 && ( $maxHistory == 0 || $limit < $maxHistory ) ) {
                                        $history['limit'] = $limit;
                                }
 
@@ -152,13 +150,13 @@ class SpecialExport extends SpecialPage {
                        }
                }
 
-               if ( !$wgExportAllowHistory ) {
+               if ( !$config->get( 'ExportAllowHistory' ) ) {
                        // Override
                        $history = WikiExporter::CURRENT;
                }
 
                $list_authors = $request->getCheck( 'listauthors' );
-               if ( !$this->curonly || !$wgExportAllowListContributors ) {
+               if ( !$this->curonly || !$config->get( 'ExportAllowListContributors' ) ) {
                        $list_authors = false;
                }
 
@@ -172,7 +170,7 @@ class SpecialExport extends SpecialPage {
 
                        if ( $request->getCheck( 'wpDownload' ) ) {
                                // Provide a sane filename suggestion
-                               $filename = urlencode( $wgSitename . '-' . wfTimestampNow() . '.xml' );
+                               $filename = urlencode( $config->get( 'Sitename' ) . '-' . wfTimestampNow() . '.xml' );
                                $request->response()->header( "Content-disposition: attachment;filename={$filename}" );
                        }
 
@@ -197,7 +195,7 @@ class SpecialExport extends SpecialPage {
                        array( 'name' => 'addcat' )
                ) . '<br />';
 
-               if ( $wgExportFromNamespaces ) {
+               if ( $config->get( 'ExportFromNamespaces' ) ) {
                        $form .= Html::namespaceSelector(
                                array(
                                        'selected' => $nsindex,
@@ -214,7 +212,7 @@ class SpecialExport extends SpecialPage {
                        ) . '<br />';
                }
 
-               if ( $wgExportAllowAll ) {
+               if ( $config->get( 'ExportAllowAll' ) ) {
                        $form .= Xml::checkLabel(
                                $this->msg( 'exportall' )->text(),
                                'exportall',
@@ -231,7 +229,7 @@ class SpecialExport extends SpecialPage {
                );
                $form .= '<br />';
 
-               if ( $wgExportAllowHistory ) {
+               if ( $config->get( 'ExportAllowHistory' ) ) {
                        $form .= Xml::checkLabel(
                                $this->msg( 'exportcuronly' )->text(),
                                'curonly',
@@ -249,7 +247,7 @@ class SpecialExport extends SpecialPage {
                        $request->wasPosted() ? $request->getCheck( 'templates' ) : false
                ) . '<br />';
 
-               if ( $wgExportMaxLinkDepth || $this->userCanOverrideExportDepth() ) {
+               if ( $config->get( 'ExportMaxLinkDepth' ) || $this->userCanOverrideExportDepth() ) {
                        $form .= Xml::inputLabel(
                                $this->msg( 'export-pagelinks' )->text(),
                                'pagelink-depth',
@@ -274,7 +272,7 @@ class SpecialExport extends SpecialPage {
                        $request->wasPosted() ? $request->getCheck( 'wpDownload' ) : true
                ) . '<br />';
 
-               if ( $wgExportAllowListContributors ) {
+               if ( $config->get( 'ExportAllowListContributors' ) ) {
                        $form .= Xml::checkLabel(
                                $this->msg( 'exportlistauthors' )->text(),
                                'listauthors',
@@ -487,15 +485,14 @@ class SpecialExport extends SpecialPage {
         * @return int
         */
        private function validateLinkDepth( $depth ) {
-               global $wgExportMaxLinkDepth;
-
                if ( $depth < 0 ) {
                        return 0;
                }
 
                if ( !$this->userCanOverrideExportDepth() ) {
-                       if ( $depth > $wgExportMaxLinkDepth ) {
-                               return $wgExportMaxLinkDepth;
+                       $maxLinkDepth = $this->getConfig()->get( 'ExportMaxLinkDepth' );
+                       if ( $depth > $maxLinkDepth ) {
+                               return $maxLinkDepth;
                        }
                }
 
index 354960b..fc26c90 100644 (file)
@@ -96,8 +96,6 @@ class FileDuplicateSearchPage extends QueryPage {
        }
 
        function execute( $par ) {
-               global $wgScript;
-
                $this->setHeaders();
                $this->outputHeader();
 
@@ -115,7 +113,7 @@ class FileDuplicateSearchPage extends QueryPage {
                $out->addHTML(
                        Html::openElement(
                                'form',
-                               array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript )
+                               array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => wfScript() )
                        ) . "\n" .
                                Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                                Html::openElement( 'fieldset' ) . "\n" .
index 28e6479..2d72d62 100644 (file)
@@ -44,8 +44,7 @@ class SpecialImport extends SpecialPage {
         */
        public function __construct() {
                parent::__construct( 'Import', 'import' );
-               global $wgImportTargetNamespace;
-               $this->namespace = $wgImportTargetNamespace;
+               $this->namespace = $this->getConfig()->get( 'ImportTargetNamespace' );
        }
 
        /**
@@ -91,15 +90,13 @@ class SpecialImport extends SpecialPage {
         * Do the actual import
         */
        private function doImport() {
-               global $wgImportSources, $wgExportMaxLinkDepth;
-
                $isUpload = false;
                $request = $this->getRequest();
                $this->namespace = $request->getIntOrNull( 'namespace' );
                $sourceName = $request->getVal( "source" );
 
                $this->logcomment = $request->getText( 'log-comment' );
-               $this->pageLinkDepth = $wgExportMaxLinkDepth == 0
+               $this->pageLinkDepth = $this->getConfig()->get( 'ExportMaxLinkDepth' ) == 0
                        ? 0
                        : $request->getIntOrNull( 'pagelink-depth' );
                $this->rootpage = $request->getText( 'rootpage' );
@@ -119,7 +116,7 @@ class SpecialImport extends SpecialPage {
                                throw new PermissionsError( 'import' );
                        }
                        $this->interwiki = $request->getVal( 'interwiki' );
-                       if ( !in_array( $this->interwiki, $wgImportSources ) ) {
+                       if ( !in_array( $this->interwiki, $this->getConfig()->get( 'ImportSources' ) ) ) {
                                $source = Status::newFatal( "import-invalid-interwiki" );
                        } else {
                                $this->history = $request->getCheck( 'interwikiHistory' );
@@ -203,11 +200,10 @@ class SpecialImport extends SpecialPage {
        }
 
        private function showForm() {
-               global $wgImportSources, $wgExportMaxLinkDepth;
-
                $action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
                $user = $this->getUser();
                $out = $this->getOutput();
+               $importSources = $this->getConfig()->get( 'ImportSources' );
 
                if ( $user->isAllowed( 'importupload' ) ) {
                        $out->addHTML(
@@ -266,15 +262,15 @@ class SpecialImport extends SpecialPage {
                                        Xml::closeElement( 'fieldset' )
                        );
                } else {
-                       if ( empty( $wgImportSources ) ) {
+                       if ( empty( $importSources ) ) {
                                $out->addWikiMsg( 'importnosources' );
                        }
                }
 
-               if ( $user->isAllowed( 'import' ) && !empty( $wgImportSources ) ) {
+               if ( $user->isAllowed( 'import' ) && !empty( $importSources ) ) {
                        # Show input field for import depth only if $wgExportMaxLinkDepth > 0
                        $importDepth = '';
-                       if ( $wgExportMaxLinkDepth > 0 ) {
+                       if ( $this->getConfig()->get( 'ExportMaxLinkDepth' ) > 0 ) {
                                $importDepth = "<tr>
                                                        <td class='mw-label'>" .
                                        $this->msg( 'export-pagelinks' )->parse() .
@@ -311,7 +307,7 @@ class SpecialImport extends SpecialPage {
                                        )
                        );
 
-                       foreach ( $wgImportSources as $prefix ) {
+                       foreach ( $importSources as $prefix ) {
                                $selected = ( $this->interwiki === $prefix ) ? ' selected="selected"' : '';
                                $out->addHTML( Xml::option( $prefix, $prefix, $selected ) );
                        }
index a67d3c0..0efebb3 100644 (file)
@@ -134,16 +134,15 @@ class SpecialJavaScriptTest extends SpecialPage {
         * Initialize the page for QUnit.
         */
        private function initQUnitTesting() {
-               global $wgJavaScriptTestConfig;
-
                $out = $this->getOutput();
+               $testConfig = $this->getConfig()->get( 'JavaScriptTestConfig' );
 
                $out->addModules( 'test.mediawiki.qunit.testrunner' );
                $qunitTestModules = $out->getResourceLoader()->getTestModuleNames( 'qunit' );
                $out->addModules( $qunitTestModules );
 
                $summary = $this->msg( 'javascripttest-qunit-intro' )
-                       ->params( $wgJavaScriptTestConfig['qunit']['documentation'] )
+                       ->params( $testConfig['qunit']['documentation'] )
                        ->parseAsBlock();
                $header = $this->msg( 'javascripttest-qunit-heading' )->escaped();
                $userDir = $this->getLanguage()->getDir();
@@ -169,7 +168,7 @@ HTML;
                // $wgJavaScriptTestConfig in DefaultSettings.php
                $out->addJsConfigVars(
                        'QUnitTestSwarmInjectJSPath',
-                       $wgJavaScriptTestConfig['qunit']['testswarm-injectjs']
+                       $testConfig['qunit']['testswarm-injectjs']
                );
        }
 
index 10d1957..371469b 100644 (file)
@@ -78,8 +78,6 @@ class LinkSearchPage extends QueryPage {
        }
 
        function execute( $par ) {
-               global $wgUrlProtocols, $wgMiserMode, $wgScript;
-
                $this->initServices();
 
                $this->setHeaders();
@@ -93,7 +91,7 @@ class LinkSearchPage extends QueryPage {
                $namespace = $request->getIntorNull( 'namespace', null );
 
                $protocols_list = array();
-               foreach ( $wgUrlProtocols as $prot ) {
+               foreach ( $this->getConfig()->get( 'UrlProtocols' ) as $prot ) {
                        if ( $prot !== '//' ) {
                                $protocols_list[] = $prot;
                        }
@@ -122,7 +120,7 @@ class LinkSearchPage extends QueryPage {
                );
                $s = Html::openElement(
                        'form',
-                       array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $wgScript )
+                       array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => wfScript() )
                ) . "\n" .
                        Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
@@ -139,7 +137,7 @@ class LinkSearchPage extends QueryPage {
                                )
                        ) . "\n";
 
-               if ( !$wgMiserMode ) {
+               if ( !$this->getConfig()->get( 'MiserMode' ) ) {
                        $s .= Html::namespaceSelector(
                                array(
                                        'selected' => $namespace,
@@ -210,10 +208,9 @@ class LinkSearchPage extends QueryPage {
        }
 
        function linkParameters() {
-               global $wgMiserMode;
                $params = array();
                $params['target'] = $this->mProt . $this->mQuery;
-               if ( $this->mNs !== null && !$wgMiserMode ) {
+               if ( $this->mNs !== null && !$this->getConfig()->get( 'MiserMode' ) ) {
                        $params['namespace'] = $this->mNs;
                }
 
@@ -221,7 +218,6 @@ class LinkSearchPage extends QueryPage {
        }
 
        function getQueryInfo() {
-               global $wgMiserMode;
                $dbr = wfGetDB( DB_SLAVE );
                // strip everything past first wildcard, so that
                // index-based-only lookup would be done
@@ -248,7 +244,7 @@ class LinkSearchPage extends QueryPage {
                        'options' => array( 'USE INDEX' => $clause )
                );
 
-               if ( $this->mNs !== null && !$wgMiserMode ) {
+               if ( $this->mNs !== null && !$this->getConfig()->get( 'MiserMode' ) ) {
                        $retval['conds']['page_namespace'] = $this->mNs;
                }
 
index 2ce45ac..c62c1de 100644 (file)
@@ -86,8 +86,6 @@ class ImageListPager extends TablePager {
        function __construct( IContextSource $context, $userName = null, $search = '',
                $including = false, $showAll = false
        ) {
-               global $wgMiserMode;
-
                $this->mIncluding = $including;
                $this->mShowAll = $showAll;
 
@@ -98,7 +96,7 @@ class ImageListPager extends TablePager {
                        }
                }
 
-               if ( $search !== '' && !$wgMiserMode ) {
+               if ( $search !== '' && !$this->getConfig()->get( 'MiserMode' ) ) {
                        $this->mSearch = $search;
                        $nt = Title::newFromURL( $this->mSearch );
 
@@ -164,7 +162,6 @@ class ImageListPager extends TablePager {
         */
        function getFieldNames() {
                if ( !$this->mFieldNames ) {
-                       global $wgMiserMode;
                        $this->mFieldNames = array(
                                'img_timestamp' => $this->msg( 'listfiles_date' )->text(),
                                'img_name' => $this->msg( 'listfiles_name' )->text(),
@@ -178,7 +175,7 @@ class ImageListPager extends TablePager {
                        // img_description down here, in order so that its still after the username field.
                        $this->mFieldNames['img_description'] = $this->msg( 'listfiles_description' )->text();
 
-                       if ( !$wgMiserMode && !$this->mShowAll ) {
+                       if ( !$this->getConfig()->get( 'MiserMode' ) && !$this->mShowAll ) {
                                $this->mFieldNames['count'] = $this->msg( 'listfiles_count' )->text();
                        }
                        if ( $this->mShowAll ) {
@@ -190,7 +187,6 @@ class ImageListPager extends TablePager {
        }
 
        function isFieldSortable( $field ) {
-               global $wgMiserMode;
                if ( $this->mIncluding ) {
                        return false;
                }
@@ -202,14 +198,14 @@ class ImageListPager extends TablePager {
                 * In particular that means we cannot sort by timestamp when not filtering
                 * by user and including old images in the results. Which is sad.
                 */
-               if ( $wgMiserMode && !is_null( $this->mUserName ) ) {
+               if ( $this->getConfig()->get( 'MiserMode' ) && !is_null( $this->mUserName ) ) {
                        // If we're sorting by user, the index only supports sorting by time.
                        if ( $field === 'img_timestamp' ) {
                                return true;
                        } else {
                                return false;
                        }
-               } elseif ( $wgMiserMode && $this->mShowAll /* && mUserName === null */ ) {
+               } elseif ( $this->getConfig()->get( 'MiserMode' ) && $this->mShowAll /* && mUserName === null */ ) {
                        // no oi_timestamp index, so only alphabetical sorting in this case.
                        if ( $field === 'img_name' ) {
                                return true;
@@ -392,8 +388,7 @@ class ImageListPager extends TablePager {
        }
 
        function getDefaultSort() {
-               global $wgMiserMode;
-               if ( $this->mShowAll && $wgMiserMode && is_null( $this->mUserName ) ) {
+               if ( $this->mShowAll && $this->getConfig()->get( 'MiserMode' ) && is_null( $this->mUserName ) ) {
                        // Unfortunately no index on oi_timestamp.
                        return 'img_name';
                } else {
@@ -504,10 +499,9 @@ class ImageListPager extends TablePager {
        }
 
        function getForm() {
-               global $wgScript, $wgMiserMode;
                $inputForm = array();
                $inputForm['table_pager_limit_label'] = $this->getLimitSelect( array( 'tabindex' => 1 ) );
-               if ( !$wgMiserMode ) {
+               if ( !$this->getConfig()->get( 'MiserMode' ) ) {
                        $inputForm['listfiles_search_for'] = Html::input(
                                'ilsearch',
                                $this->mSearch,
@@ -533,7 +527,7 @@ class ImageListPager extends TablePager {
                ) );
 
                return Html::openElement( 'form',
-                       array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listfiles-form' )
+                       array( 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listfiles-form' )
                ) .
                        Xml::fieldset( $this->msg( 'listfiles' )->text() ) .
                        Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
index feeafbc..993285f 100644 (file)
@@ -191,8 +191,7 @@ class UsersPager extends AlphabeticPager {
                }
 
                $edits = '';
-               global $wgEdititis;
-               if ( !$this->including && $wgEdititis ) {
+               if ( !$this->including && $this->getConfig()->get( 'Edititis' ) ) {
                        // @todo fixme i18n issue: Hardcoded square brackets.
                        $edits = ' [' .
                                $this->msg( 'usereditcount' )->numParams( $row->edits )->escaped() .
@@ -232,14 +231,12 @@ class UsersPager extends AlphabeticPager {
         * @return string
         */
        function getPageHeader() {
-               global $wgScript;
-
                list( $self ) = explode( '/', $this->getTitle()->getPrefixedDBkey() );
 
                # Form tag
                $out = Xml::openElement(
                        'form',
-                       array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listusers-form' )
+                       array( 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listusers-form' )
                ) .
                        Xml::fieldset( $this->msg( 'listusers' )->text() ) .
                        Html::hidden( 'title', $self );
index 3382405..1c1f125 100644 (file)
@@ -38,11 +38,9 @@ class SpecialLockdb extends FormSpecialPage {
        }
 
        public function checkExecutePermissions( User $user ) {
-               global $wgReadOnlyFile;
-
                parent::checkExecutePermissions( $user );
                # If the lock file isn't writable, we can do sweet bugger all
-               if ( !is_writable( dirname( $wgReadOnlyFile ) ) ) {
+               if ( !is_writable( dirname( $this->getConfig()->get( 'ReadOnlyFile' ) ) ) ) {
                        throw new ErrorPageError( 'lockdb', 'lockfilenotwritable' );
                }
        }
@@ -69,14 +67,14 @@ class SpecialLockdb extends FormSpecialPage {
        }
 
        public function onSubmit( array $data ) {
-               global $wgContLang, $wgReadOnlyFile;
+               global $wgContLang;
 
                if ( !$data['Confirm'] ) {
                        return Status::newFatal( 'locknoconfirm' );
                }
 
                wfSuppressWarnings();
-               $fp = fopen( $wgReadOnlyFile, 'w' );
+               $fp = fopen( $this->getConfig()->get( 'ReadOnlyFile' ), 'w' );
                wfRestoreWarnings();
 
                if ( false === $fp ) {
index 36abeb0..dc33801 100644 (file)
@@ -45,8 +45,6 @@ class SpecialLog extends SpecialPage {
        }
 
        public function execute( $par ) {
-               global $wgLogRestrictions;
-
                $this->setHeaders();
                $this->outputHeader();
 
@@ -77,13 +75,14 @@ class SpecialLog extends SpecialPage {
                // If the user doesn't have the right permission to view the specific
                // log type, throw a PermissionsError
                // If the log type is invalid, just show all public logs
+               $logRestrictions = $this->getConfig()->get( 'LogRestrictions' );
                $type = $opts->getValue( 'type' );
                if ( !LogPage::isLogType( $type ) ) {
                        $opts->setValue( 'type', '' );
-               } elseif ( isset( $wgLogRestrictions[$type] )
-                       && !$this->getUser()->isAllowed( $wgLogRestrictions[$type] )
+               } elseif ( isset( $logRestrictions[$type] )
+                       && !$this->getUser()->isAllowed( $logRestrictions[$type] )
                ) {
-                       throw new PermissionsError( $wgLogRestrictions[$type] );
+                       throw new PermissionsError( $logRestrictions[$type] );
                }
 
                # Handle type-specific inputs
@@ -123,21 +122,18 @@ class SpecialLog extends SpecialPage {
         * @return string[] Matching subpages
         */
        public function prefixSearchSubpages( $search, $limit = 10 ) {
-               global $wgLogTypes;
-               $subpages = $wgLogTypes;
+               $subpages = $this->getConfig()->get( 'LogTypes' );
                $subpages[] = 'all';
                sort( $subpages );
                return self::prefixSearchArray( $search, $limit, $subpages );
        }
 
        private function parseParams( FormOptions $opts, $par ) {
-               global $wgLogTypes;
-
                # Get parameters
                $parms = explode( '/', ( $par = ( $par !== null ) ? $par : '' ) );
                $symsForAll = array( '*', 'all' );
                if ( $parms[0] != '' &&
-                       ( in_array( $par, $wgLogTypes ) || in_array( $par, $symsForAll ) )
+                       ( in_array( $par, $this->getConfig()->get( 'LogTypes' ) ) || in_array( $par, $symsForAll ) )
                ) {
                        $opts->setValue( 'type', $par );
                } elseif ( count( $parms ) == 2 ) {
@@ -211,10 +207,9 @@ class SpecialLog extends SpecialPage {
                }
 
                # Show button to hide log entries
-               global $wgScript;
                $s = Html::openElement(
                        'form',
-                       array( 'action' => $wgScript, 'id' => 'mw-log-deleterevision-submit' )
+                       array( 'action' => wfScript(), 'id' => 'mw-log-deleterevision-submit' )
                ) . "\n";
                $s .= Html::hidden( 'title', SpecialPage::getTitleFor( 'Revisiondelete' ) ) . "\n";
                $s .= Html::hidden( 'target', SpecialPage::getTitleFor( 'Log' ) ) . "\n";
index 4d9e7da..3f1850d 100644 (file)
@@ -105,8 +105,6 @@ class MIMEsearchPage extends QueryPage {
        }
 
        function execute( $par ) {
-               global $wgScript;
-
                $mime = $par ? $par : $this->getRequest()->getText( 'mime' );
                $mime = trim( $mime );
 
@@ -115,7 +113,7 @@ class MIMEsearchPage extends QueryPage {
                $this->getOutput()->addHTML(
                        Xml::openElement(
                                'form',
-                               array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => $wgScript )
+                               array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => wfScript() )
                        ) .
                                Xml::openElement( 'fieldset' ) .
                                Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
index e1700de..6efc12b 100644 (file)
@@ -159,14 +159,12 @@ class SpecialMergeHistory extends SpecialPage {
        }
 
        function showMergeForm() {
-               global $wgScript;
-
                $this->getOutput()->addWikiMsg( 'mergehistory-header' );
 
                $this->getOutput()->addHTML(
                        Xml::openElement( 'form', array(
                                'method' => 'get',
-                               'action' => $wgScript ) ) .
+                               'action' => wfScript() ) ) .
                                '<fieldset>' .
                                Xml::element( 'legend', array(),
                                        $this->msg( 'mergehistory-box' )->text() ) .
index ee144d6..ec9593f 100644 (file)
@@ -131,7 +131,7 @@ class MovePageForm extends UnlistedSpecialPage {
         *    parameters, like the second argument to OutputPage::wrapWikiMsg().
         */
        function showForm( $err ) {
-               global $wgContLang, $wgFixDoubleRedirects, $wgMaximumMovedPages;
+               global $wgContLang;
 
                $this->getSkin()->setRelevantTitle( $this->oldTitle );
 
@@ -190,7 +190,7 @@ class MovePageForm extends UnlistedSpecialPage {
                                );
                        }
 
-                       $out->addWikiMsg( $wgFixDoubleRedirects ?
+                       $out->addWikiMsg( $this->getConfig()->get( 'FixDoubleRedirects' ) ?
                                'movepagetext' :
                                'movepagetext-noredirectfixer'
                        );
@@ -221,7 +221,7 @@ class MovePageForm extends UnlistedSpecialPage {
                                || ( $oldTitleTalkSubpages && $canMoveSubpage ) );
 
                $dbr = wfGetDB( DB_SLAVE );
-               if ( $wgFixDoubleRedirects ) {
+               if ( $this->getConfig()->get( 'FixDoubleRedirects' ) ) {
                        $hasRedirects = $dbr->selectField( 'redirect', '1',
                                array(
                                        'rd_namespace' => $this->oldTitle->getNamespace(),
@@ -419,6 +419,7 @@ class MovePageForm extends UnlistedSpecialPage {
                }
 
                if ( $canMoveSubpage ) {
+                       $maximumMovedPages = $this->getConfig()->get( 'MaximumMovedPages' );
                        $out->addHTML( "
                                <tr>
                                        <td></td>
@@ -435,7 +436,7 @@ class MovePageForm extends UnlistedSpecialPage {
                                                        ( $this->oldTitle->hasSubpages()
                                                                ? 'move-subpages'
                                                                : 'move-talk-subpages' )
-                                               )->numParams( $wgMaximumMovedPages )->params( $wgMaximumMovedPages )->parse()
+                                               )->numParams( $maximumMovedPages )->params( $maximumMovedPages )->parse()
                                        ) .
                                        "</td>
                                </tr>"
@@ -480,8 +481,6 @@ class MovePageForm extends UnlistedSpecialPage {
        }
 
        function doSubmit() {
-               global $wgMaximumMovedPages, $wgFixDoubleRedirects;
-
                $user = $this->getUser();
 
                if ( $user->pingLimiter( 'move' ) ) {
@@ -557,7 +556,7 @@ class MovePageForm extends UnlistedSpecialPage {
                        return;
                }
 
-               if ( $wgFixDoubleRedirects && $this->fixRedirects ) {
+               if ( $this->getConfig()->get( 'FixDoubleRedirects' ) && $this->fixRedirects ) {
                        DoubleRedirectJob::fixRedirects( 'move', $ot, $nt );
                }
 
@@ -713,9 +712,10 @@ class MovePageForm extends UnlistedSpecialPage {
                                                ->rawParams( $oldLink, $newLink )->escaped();
                                        ++$count;
 
-                                       if ( $count >= $wgMaximumMovedPages ) {
+                                       $maximumMovedPages = $this->getConfig()->get( 'MaximumMovedPages' );
+                                       if ( $count >= $maximumMovedPages ) {
                                                $extraOutput[] = $this->msg( 'movepage-max-pages' )
-                                                       ->numParams( $wgMaximumMovedPages )->escaped();
+                                                       ->numParams( $maximumMovedPages )->escaped();
                                                break;
                                        }
                                } else {
index 1f3c63f..71b1893 100644 (file)
@@ -63,7 +63,6 @@ class SpecialMyLanguage extends RedirectSpecialArticle {
         * @return Title|null
         */
        public function findTitle( $par ) {
-               global $wgLanguageCode;
                // base = title without language code suffix
                // provided = the title as it was given
                $base = $provided = Title::newFromText( $par );
@@ -83,7 +82,7 @@ class SpecialMyLanguage extends RedirectSpecialArticle {
 
                $uiCode = $this->getLanguage()->getCode();
                $proposed = $base->getSubpage( $uiCode );
-               if ( $uiCode !== $wgLanguageCode && $proposed && $proposed->exists() ) {
+               if ( $uiCode !== $this->getConfig()->get( 'LanguageCode' ) && $proposed && $proposed->exists() ) {
                        return $proposed;
                } elseif ( $provided && $provided->exists() ) {
                        return $provided;
index 147d176..aff5947 100644 (file)
@@ -89,7 +89,6 @@ class NewFilesPager extends ReverseChronologicalPager {
        }
 
        function getQueryInfo() {
-               global $wgMiserMode;
                $conds = $jconds = array();
                $tables = array( 'image' );
 
@@ -109,7 +108,7 @@ class NewFilesPager extends ReverseChronologicalPager {
                        }
                }
 
-               if ( !$wgMiserMode && $this->like !== null ) {
+               if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $likeObj = Title::newFromURL( $this->like );
                        if ( $likeObj instanceof Title ) {
@@ -173,8 +172,6 @@ class NewFilesPager extends ReverseChronologicalPager {
        }
 
        function getForm() {
-               global $wgMiserMode;
-
                $fields = array(
                        'like' => array(
                                'type' => 'text',
@@ -198,7 +195,7 @@ class NewFilesPager extends ReverseChronologicalPager {
                        ),
                );
 
-               if ( $wgMiserMode ) {
+               if ( $this->getConfig()->get( 'MiserMode' ) ) {
                        unset( $fields['like'] );
                }
 
index 1ec7006..fbb2d73 100644 (file)
@@ -199,8 +199,6 @@ class SpecialNewpages extends IncludableSpecialPage {
        }
 
        protected function form() {
-               global $wgScript;
-
                // Consume values
                $this->opts->consumeValue( 'offset' ); // don't carry offset, DWIW
                $namespace = $this->opts->consumeValue( 'namespace' );
@@ -224,7 +222,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
                }
 
-               $form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
+               $form = Xml::openElement( 'form', array( 'action' => wfScript() ) ) .
                        Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                        Xml::fieldset( $this->msg( 'newpages' )->text() ) .
                        Xml::openElement( 'table', array( 'id' => 'mw-newpages-table' ) ) .
@@ -405,21 +403,20 @@ class SpecialNewpages extends IncludableSpecialPage {
         * @param string $type
         */
        protected function feed( $type ) {
-               global $wgFeed, $wgFeedClasses, $wgFeedLimit;
-
-               if ( !$wgFeed ) {
+               if ( !$this->getConfig()->get( 'Feed' ) ) {
                        $this->getOutput()->addWikiMsg( 'feed-unavailable' );
 
                        return;
                }
 
-               if ( !isset( $wgFeedClasses[$type] ) ) {
+               $feedClasses = $this->getConfig()->get( 'FeedClasses' );
+               if ( !isset( $feedClasses[$type] ) ) {
                        $this->getOutput()->addWikiMsg( 'feed-invalid' );
 
                        return;
                }
 
-               $feed = new $wgFeedClasses[$type](
+               $feed = new $feedClasses[$type](
                        $this->feedTitle(),
                        $this->msg( 'tagline' )->text(),
                        $this->getPageTitle()->getFullURL()
@@ -427,7 +424,7 @@ class SpecialNewpages extends IncludableSpecialPage {
 
                $pager = new NewPagesPager( $this, $this->opts );
                $limit = $this->opts->getValue( 'limit' );
-               $pager->mLimit = min( $limit, $wgFeedLimit );
+               $pager->mLimit = min( $limit, $this->getConfig()->get( 'FeedLimit' ) );
 
                $feed->outHeader();
                if ( $pager->getNumRows() > 0 ) {
@@ -439,10 +436,11 @@ class SpecialNewpages extends IncludableSpecialPage {
        }
 
        protected function feedTitle() {
-               global $wgLanguageCode, $wgSitename;
                $desc = $this->getDescription();
+               $code = $this->getConfig()->get( 'LanguageCode' );
+               $sitename = $this->getConfig()->get( 'Sitename' );
 
-               return "$wgSitename - $desc [$wgLanguageCode]";
+               return "$sitename - $desc [$code]";
        }
 
        protected function feedItem( $row ) {
index ba972ce..6e04762 100644 (file)
@@ -43,7 +43,6 @@ class SpecialPageLanguage extends FormSpecialPage {
        }
 
        protected function getFormFields() {
-               global $wgLanguageCode;
                // Get default from the subpage of Special page
                $defaultName = $this->par;
 
@@ -80,7 +79,7 @@ class SpecialPageLanguage extends FormSpecialPage {
                        'type' => 'select',
                        'options' => $options,
                        'label-message' => 'pagelang-language',
-                       'default' => $wgLanguageCode
+                       'default' => $this->getConfig()->get( 'LanguageCode' ),
                );
 
                return $page;
index c60b347..3061c85 100644 (file)
@@ -62,9 +62,10 @@ class SpecialPasswordReset extends FormSpecialPage {
        }
 
        protected function getFormFields() {
-               global $wgPasswordResetRoutes, $wgAuth;
+               global $wgAuth;
+               $resetRoutes = $this->getConfig()->get( 'PasswordResetRoutes' );
                $a = array();
-               if ( isset( $wgPasswordResetRoutes['username'] ) && $wgPasswordResetRoutes['username'] ) {
+               if ( isset( $resetRoutes['username'] ) && $resetRoutes['username'] ) {
                        $a['Username'] = array(
                                'type' => 'text',
                                'label-message' => 'passwordreset-username',
@@ -75,14 +76,14 @@ class SpecialPasswordReset extends FormSpecialPage {
                        }
                }
 
-               if ( isset( $wgPasswordResetRoutes['email'] ) && $wgPasswordResetRoutes['email'] ) {
+               if ( isset( $resetRoutes['email'] ) && $resetRoutes['email'] ) {
                        $a['Email'] = array(
                                'type' => 'email',
                                'label-message' => 'passwordreset-email',
                        );
                }
 
-               if ( isset( $wgPasswordResetRoutes['domain'] ) && $wgPasswordResetRoutes['domain'] ) {
+               if ( isset( $resetRoutes['domain'] ) && $resetRoutes['domain'] ) {
                        $domains = $wgAuth->domainList();
                        $a['Domain'] = array(
                                'type' => 'select',
@@ -103,7 +104,7 @@ class SpecialPasswordReset extends FormSpecialPage {
        }
 
        public function alterForm( HTMLForm $form ) {
-               global $wgPasswordResetRoutes;
+               $resetRoutes = $this->getConfig()->get( 'PasswordResetRoutes' );
 
                $form->setDisplayFormat( 'vform' );
                // Turn the old-school line around the form off.
@@ -115,13 +116,13 @@ class SpecialPasswordReset extends FormSpecialPage {
                $form->addHiddenFields( $this->getRequest()->getValues( 'returnto', 'returntoquery' ) );
 
                $i = 0;
-               if ( isset( $wgPasswordResetRoutes['username'] ) && $wgPasswordResetRoutes['username'] ) {
+               if ( isset( $resetRoutes['username'] ) && $resetRoutes['username'] ) {
                        $i++;
                }
-               if ( isset( $wgPasswordResetRoutes['email'] ) && $wgPasswordResetRoutes['email'] ) {
+               if ( isset( $resetRoutes['email'] ) && $resetRoutes['email'] ) {
                        $i++;
                }
-               if ( isset( $wgPasswordResetRoutes['domain'] ) && $wgPasswordResetRoutes['domain'] ) {
+               if ( isset( $resetRoutes['domain'] ) && $resetRoutes['domain'] ) {
                        $i++;
                }
 
@@ -222,19 +223,16 @@ class SpecialPasswordReset extends FormSpecialPage {
                // Check against password throttle
                foreach ( $users as $user ) {
                        if ( $user->isPasswordReminderThrottled() ) {
-                               global $wgPasswordReminderResendTime;
 
                                # Round the time in hours to 3 d.p., in case someone is specifying
                                # minutes or seconds.
                                return array( array(
                                        'throttled-mailpassword',
-                                       round( $wgPasswordReminderResendTime, 3 )
+                                       round( $this->getConfig()->get( 'PasswordReminderResendTime' ), 3 )
                                ) );
                        }
                }
 
-               global $wgNewPasswordExpiry;
-
                // All the users will have the same email address
                if ( $firstUser->getEmail() == '' ) {
                        // This won't be reachable from the email route, so safe to expose the username
@@ -273,7 +271,7 @@ class SpecialPasswordReset extends FormSpecialPage {
                        $passwordBlock,
                        count( $passwords ),
                        '<' . Title::newMainPage()->getCanonicalURL() . '>',
-                       round( $wgNewPasswordExpiry / 86400 )
+                       round( $this->getConfig()->get( 'NewPasswordExpiry' ) / 86400 )
                );
 
                $title = $this->msg( 'passwordreset-emailtitle' );
@@ -320,11 +318,12 @@ class SpecialPasswordReset extends FormSpecialPage {
        }
 
        protected function canChangePassword( User $user ) {
-               global $wgPasswordResetRoutes, $wgEnableEmail, $wgAuth;
+               global $wgAuth;
+               $resetRoutes = $this->getConfig()->get( 'PasswordResetRoutes' );
 
                // Maybe password resets are disabled, or there are no allowable routes
-               if ( !is_array( $wgPasswordResetRoutes ) ||
-                       !in_array( true, array_values( $wgPasswordResetRoutes ) )
+               if ( !is_array( $resetRoutes ) ||
+                       !in_array( true, array_values( $resetRoutes ) )
                ) {
                        return 'passwordreset-disabled';
                }
@@ -335,7 +334,7 @@ class SpecialPasswordReset extends FormSpecialPage {
                }
 
                // Maybe email features have been disabled
-               if ( !$wgEnableEmail ) {
+               if ( !$this->getConfig()->get( 'EnableEmail' ) ) {
                        return 'passwordreset-emaildisabled';
                }
 
index 7554e37..b64b029 100644 (file)
@@ -103,11 +103,9 @@ class SpecialProtectedpages extends SpecialPage {
        protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
                $size, $indefOnly, $cascadeOnly, $noRedirect
        ) {
-               global $wgScript;
-
                $title = $this->getPageTitle();
 
-               return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
+               return Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) .
                        Xml::openElement( 'fieldset' ) .
                        Xml::element( 'legend', array(), $this->msg( 'protectedpages' )->text() ) .
                        Html::hidden( 'title', $title->getPrefixedDBkey() ) . "\n" .
@@ -252,14 +250,12 @@ class SpecialProtectedpages extends SpecialPage {
         * @return string Formatted HTML
         */
        protected function getLevelMenu( $pr_level ) {
-               global $wgRestrictionLevels;
-
                // Temporary array
                $m = array( $this->msg( 'restriction-level-all' )->text() => 0 );
                $options = array();
 
                // First pass to load the log names
-               foreach ( $wgRestrictionLevels as $type ) {
+               foreach ( $this->getConfig()->get( 'RestrictionLevels' ) as $type ) {
                        // Messages used can be 'restriction-level-sysop' and 'restriction-level-autoconfirmed'
                        if ( $type != '' && $type != '*' ) {
                                $text = $this->msg( "restriction-level-$type" )->text();
index cb6ec3c..a40da87 100644 (file)
@@ -133,8 +133,7 @@ class SpecialProtectedtitles extends SpecialPage {
         * @private
         */
        function showOptions( $namespace, $type = 'edit', $level ) {
-               global $wgScript;
-               $action = htmlspecialchars( $wgScript );
+               $action = htmlspecialchars( wfScript() );
                $title = $this->getPageTitle();
                $special = htmlspecialchars( $title->getPrefixedDBkey() );
 
@@ -175,14 +174,12 @@ class SpecialProtectedtitles extends SpecialPage {
         * @private
         */
        function getLevelMenu( $pr_level ) {
-               global $wgRestrictionLevels;
-
                // Temporary array
                $m = array( $this->msg( 'restriction-level-all' )->text() => 0 );
                $options = array();
 
                // First pass to load the log names
-               foreach ( $wgRestrictionLevels as $type ) {
+               foreach ( $this->getConfig()->get( 'RestrictionLevels' ) as $type ) {
                        if ( $type != '' && $type != '*' ) {
                                // Messages: restriction-level-sysop, restriction-level-autoconfirmed
                                $text = $this->msg( "restriction-level-$type" )->text();
index 8c01ef2..28a1bc5 100644 (file)
@@ -68,8 +68,6 @@ class SpecialRandomInCategory extends SpecialPage {
        }
 
        public function execute( $par ) {
-               global $wgScript;
-
                $cat = false;
 
                $categoryStr = $this->getRequest()->getText( 'category', $par );
@@ -100,7 +98,7 @@ class SpecialRandomInCategory extends SpecialPage {
                        $submit = Html::input( '', $submitText, 'submit' );
 
                        $msg = $this->msg( 'randomincategory-selectcategory' );
-                       $form = Html::rawElement( 'form', array( 'action' => $wgScript ),
+                       $form = Html::rawElement( 'form', array( 'action' => wfScript() ),
                                Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                                $msg->rawParams( $input, $submit )->parse()
                        );
index ea785fa..5938f01 100644 (file)
@@ -192,8 +192,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
         */
        public function doMainQuery( $conds, $opts ) {
-               global $wgAllowCategorizedRecentChanges;
-
                $dbr = $this->getDB();
                $user = $this->getUser();
 
@@ -247,7 +245,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                );
 
                // Build the final data
-               if ( $wgAllowCategorizedRecentChanges ) {
+               if ( $this->getConfig()->get( 'AllowCategorizedRecentChanges' ) ) {
                        $this->filterByCategories( $rows, $opts );
                }
 
@@ -273,14 +271,14 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @return array
         */
        private function getFeedQuery() {
-               global $wgFeedLimit;
                $query = array_filter( $this->getOptions()->getAllValues(), function ( $value ) {
                        // API handles empty parameters in a different way
                        return $value !== '';
                } );
                $query['action'] = 'feedrecentchanges';
-               if ( $query['limit'] > $wgFeedLimit ) {
-                       $query['limit'] = $wgFeedLimit;
+               $feedLimit = $this->getConfig()->get( 'FeedLimit' );
+               if ( $query['limit'] > $feedLimit ) {
+                       $query['limit'] = $feedLimit;
                }
 
                return $query;
@@ -293,11 +291,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @param FormOptions $opts
         */
        public function outputChangesList( $rows, $opts ) {
-               global $wgRCShowWatchingUsers, $wgShowUpdatedMarker;
-
                $limit = $opts['limit'];
 
-               $showWatcherCount = $wgRCShowWatchingUsers
+               $showWatcherCount = $this->getConfig()->get( 'RCShowWatchingUsers' )
                        && $this->getUser()->getOption( 'shownumberswatching' );
                $watcherCache = array();
 
@@ -315,7 +311,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        $rc = RecentChange::newFromRow( $obj );
                        $rc->counter = $counter++;
                        # Check if the page has been updated since the last visit
-                       if ( $wgShowUpdatedMarker && !empty( $obj->wl_notificationtimestamp ) ) {
+                       if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) && !empty( $obj->wl_notificationtimestamp ) ) {
                                $rc->notificationtimestamp = ( $obj->rc_timestamp >= $obj->wl_notificationtimestamp );
                        } else {
                                $rc->notificationtimestamp = false; // Default
@@ -367,8 +363,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @param int $numRows Number of rows in the result to show after this header
         */
        public function doHeader( $opts, $numRows ) {
-               global $wgScript;
-
                $this->setTopText( $opts );
 
                $defaults = $opts->getAllValues();
@@ -420,7 +414,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
 
                $t = $this->getPageTitle();
                $out .= Html::hidden( 'title', $t->getPrefixedText() );
-               $form = Xml::tags( 'form', array( 'action' => $wgScript ), $out );
+               $form = Xml::tags( 'form', array( 'action' => wfScript() ), $out );
                $panel[] = $form;
                $panelString = implode( "\n", $panel );
 
@@ -470,8 +464,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $extraOpts = array();
                $extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
 
-               global $wgAllowCategorizedRecentChanges;
-               if ( $wgAllowCategorizedRecentChanges ) {
+               if ( $this->getConfig()->get( 'AllowCategorizedRecentChanges' ) ) {
                        $extraOpts['category'] = $this->categoryFilterForm( $opts );
                }
 
@@ -655,8 +648,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @return string
         */
        function optionsPanel( $defaults, $nondefaults, $numRows ) {
-               global $wgRCLinkLimits, $wgRCLinkDays;
-
                $options = $nondefaults + $defaults;
 
                $note = '';
@@ -680,12 +671,12 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                }
 
                # Sort data for display and make sure it's unique after we've added user data.
-               $linkLimits = $wgRCLinkLimits;
+               $linkLimits = $this->getConfig()->get( 'RCLinkLimits' );
                $linkLimits[] = $options['limit'];
                sort( $linkLimits );
                $linkLimits = array_unique( $linkLimits );
 
-               $linkDays = $wgRCLinkDays;
+               $linkDays = $this->getConfig()->get( 'RCLinkDays' );
                $linkDays[] = $options['days'];
                sort( $linkDays );
                $linkDays = array_unique( $linkDays );
index 6c617cd..9700638 100644 (file)
@@ -109,8 +109,8 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
                        $opts['tagfilter']
                );
 
-               if ( !$this->runMainQueryHook( $conds, $tables, $join_conds, $opts, $query_options,
-                       $select )
+               if ( !$this->runMainQueryHook( $tables, $select, $conds, $query_options, $join_conds,
+                       $opts )
                ) {
                        return false;
                }
index 864485c..bc1326b 100644 (file)
@@ -40,16 +40,15 @@ class SpecialResetTokens extends FormSpecialPage {
         * @return array
         */
        protected function getTokensList() {
-               global $wgHiddenPrefs;
-
                if ( !isset( $this->tokensList ) ) {
                        $tokens = array(
                                array( 'preference' => 'watchlisttoken', 'label-message' => 'resettokens-watchlist-token' ),
                        );
                        wfRunHooks( 'SpecialResetTokensTokens', array( &$tokens ) );
 
-                       $tokens = array_filter( $tokens, function ( $tok ) use ( $wgHiddenPrefs ) {
-                               return !in_array( $tok['preference'], $wgHiddenPrefs );
+                       $hiddenPrefs = $this->getConfig()->get( 'HiddenPrefs' );
+                       $tokens = array_filter( $tokens, function ( $tok ) use ( $hiddenPrefs ) {
+                               return !in_array( $tok['preference'], $hiddenPrefs );
                        } );
 
                        $this->tokensList = $tokens;
index 1caed0b..5f16239 100644 (file)
@@ -186,12 +186,11 @@ class SpecialSearch extends SpecialPage {
                # No match, generate an edit URL
                $title = Title::newFromText( $term );
                if ( !is_null( $title ) ) {
-                       global $wgGoToEdit;
                        wfRunHooks( 'SpecialSearchNogomatch', array( &$title ) );
                        wfDebugLog( 'nogomatch', $title->getFullText(), 'private' );
 
                        # If the feature is enabled, go straight to the edit page
-                       if ( $wgGoToEdit ) {
+                       if ( $this->getConfig()->get( 'GoToEdit' ) ) {
                                $this->getOutput()->redirect( $title->getFullURL( array( 'action' => 'edit' ) ) );
 
                                return;
@@ -204,7 +203,7 @@ class SpecialSearch extends SpecialPage {
         * @param string $term
         */
        public function showResults( $term ) {
-               global $wgDisableTextSearch, $wgSearchForwardUrl, $wgContLang, $wgScript;
+               global $wgContLang;
 
                $profile = new ProfileSection( __METHOD__ );
                $search = $this->getSearchEngine();
@@ -220,9 +219,10 @@ class SpecialSearch extends SpecialPage {
 
                $out = $this->getOutput();
 
-               if ( $wgDisableTextSearch ) {
-                       if ( $wgSearchForwardUrl ) {
-                               $url = str_replace( '$1', urlencode( $term ), $wgSearchForwardUrl );
+               if ( $this->getConfig()->get( 'DisableTextSearch' ) ) {
+                       $searchFowardUrl = $this->getConfig()->get( 'SearchForwardUrl' );
+                       if ( $searchFowardUrl ) {
+                               $url = str_replace( '$1', urlencode( $term ), $searchFowardUrl );
                                $out->redirect( $url );
                        } else {
                                $out->addHTML(
@@ -304,7 +304,7 @@ class SpecialSearch extends SpecialPage {
                                array(
                                        'id' => ( $this->profile === 'advanced' ? 'powersearch' : 'search' ),
                                        'method' => 'get',
-                                       'action' => $wgScript
+                                       'action' => wfScript(),
                                )
                        )
                );
@@ -651,16 +651,6 @@ class SpecialSearch extends SpecialPage {
 
                $lang = $this->getLanguage();
 
-               // format score
-               if ( is_null( $result->getScore() ) ) {
-                       // Search engine doesn't report scoring info
-                       $score = '';
-               } else {
-                       $percent = sprintf( '%2.1f', $result->getScore() * 100 );
-                       $score = $this->msg( 'search-result-score' )->numParams( $percent )->text()
-                               . ' - ';
-               }
-
                // format description
                $byteSize = $result->getByteSize();
                $wordCount = $result->getWordCount();
@@ -722,7 +712,7 @@ class SpecialSearch extends SpecialPage {
                                                '<td style="vertical-align: top;">' .
                                                "{$link} {$redirect} {$section} {$fileMatch}" .
                                                $extract .
-                                               "<div class='mw-search-result-data'>{$score}{$desc} - {$date}{$related}</div>" .
+                                               "<div class='mw-search-result-data'>{$desc} - {$date}{$related}</div>" .
                                                '</td>' .
                                                '</tr>' .
                                                '</table>' .
@@ -733,6 +723,7 @@ class SpecialSearch extends SpecialPage {
 
                $html = null;
 
+               $score = '';
                if ( wfRunHooks( 'ShowSearchHit', array(
                        $this, $result, $terms,
                        &$link, &$redirect, &$section, &$extract,
@@ -741,7 +732,7 @@ class SpecialSearch extends SpecialPage {
                ) ) ) {
                        $html = "<li><div class='mw-search-result-heading'>" .
                                "{$link} {$redirect} {$section} {$fileMatch}</div> {$extract}\n" .
-                               "<div class='mw-search-result-data'>{$score}{$size} - {$date}{$related}</div>" .
+                               "<div class='mw-search-result-data'>{$size} - {$date}{$related}</div>" .
                                "</li>\n";
                }
 
index 3ba50bb..eff06f4 100644 (file)
@@ -49,8 +49,6 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
        }
 
        private function getPageGroups() {
-               global $wgSortSpecialPages;
-
                $pages = SpecialPageFactory::getUsablePages( $this->getUser() );
 
                if ( !count( $pages ) ) {
@@ -76,10 +74,8 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                }
 
                /** Sort */
-               if ( $wgSortSpecialPages ) {
-                       foreach ( $groups as $group => $sortedPages ) {
-                               ksort( $groups[$group] );
-                       }
+               foreach ( $groups as $group => $sortedPages ) {
+                       ksort( $groups[$group] );
                }
 
                /** Always move "other" to end */
index 371e5ea..67c96a7 100644 (file)
@@ -36,7 +36,10 @@ class SpecialStatistics extends SpecialPage {
        }
 
        public function execute( $par ) {
-               global $wgMemc, $wgDisableCounters, $wgMiserMode;
+               global $wgMemc;
+
+               $disableCounters = $this->getConfig()->get( 'DisableCounters' );
+               $miserMode = $this->getConfig()->get( 'MiserMode' );
 
                $this->setHeaders();
                $this->getOutput()->addModuleStyles( 'mediawiki.special' );
@@ -52,12 +55,12 @@ class SpecialStatistics extends SpecialPage {
 
                # Staticic - views
                $viewsStats = '';
-               if ( !$wgDisableCounters ) {
+               if ( !$disableCounters ) {
                        $viewsStats = $this->getViewsStats();
                }
 
                # Set active user count
-               if ( !$wgMiserMode ) {
+               if ( !$miserMode ) {
                        $key = wfMemcKey( 'sitestats', 'activeusers-updated' );
                        // Re-calculate the count if the last tally is old...
                        if ( !$wgMemc->get( $key ) ) {
@@ -83,7 +86,7 @@ class SpecialStatistics extends SpecialPage {
                $text .= $viewsStats;
 
                # Statistic - popular pages
-               if ( !$wgDisableCounters && !$wgMiserMode ) {
+               if ( !$disableCounters && !$miserMode ) {
                        $text .= $this->getMostViewedPages();
                }
 
@@ -170,8 +173,6 @@ class SpecialStatistics extends SpecialPage {
        }
 
        private function getUserStats() {
-               global $wgActiveUserDays;
-
                return Xml::openElement( 'tr' ) .
                        Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( 'statistics-header-users' )->parse() ) .
                        Xml::closeElement( 'tr' ) .
@@ -187,16 +188,15 @@ class SpecialStatistics extends SpecialPage {
                                $this->getLanguage()->formatNum( $this->activeUsers ),
                                array( 'class' => 'mw-statistics-users-active' ),
                                'statistics-users-active-desc',
-                               $this->getLanguage()->formatNum( $wgActiveUserDays )
+                               $this->getLanguage()->formatNum( $this->getConfig()->get( 'ActiveUserDays' ) )
                        );
        }
 
        private function getGroupStats() {
-               global $wgGroupPermissions, $wgImplicitGroups;
                $text = '';
-               foreach ( $wgGroupPermissions as $group => $permissions ) {
+               foreach ( $this->getConfig()->get( 'GroupPermissions' ) as $group => $permissions ) {
                        # Skip generic * and implicit groups
-                       if ( in_array( $group, $wgImplicitGroups ) || $group == '*' ) {
+                       if ( in_array( $group, $this->getConfig()->get( 'ImplicitGroups' ) ) || $group == '*' ) {
                                continue;
                        }
                        $groupname = htmlspecialchars( $group );
index 73bdbd6..5e5588c 100644 (file)
@@ -37,9 +37,6 @@ class SpecialTrackingCategories extends SpecialPage {
        }
 
        function execute( $par ) {
-               // Global array containing names of tracking categories
-               global $wgTrackingCategories;
-
                $this->setHeaders();
                $this->outputHeader();
                $this->getOutput()->allowClickjacking();
@@ -59,7 +56,7 @@ class SpecialTrackingCategories extends SpecialPage {
                        </tr></thead>"
                );
 
-               foreach ( $wgTrackingCategories as $catMsg ) {
+               foreach ( $this->getConfig()->get( 'TrackingCategories' ) as $catMsg ) {
                        /*
                         * Check if the tracking category varies by namespace
                         * Otherwise only pages in the current namespace will be displayed
index 25f520e..8acf8a2 100644 (file)
@@ -36,11 +36,19 @@ class PageArchive {
        /** @var Status */
        protected $revisionStatus;
 
-       function __construct( $title ) {
+       /** @var Config */
+       protected $config;
+
+       function __construct( $title, Config $config = null ) {
                if ( is_null( $title ) ) {
                        throw new MWException( __METHOD__ . ' given a null title.' );
                }
                $this->title = $title;
+               if ( $config === null ) {
+                       wfDebug( __METHOD__ . ' did not have a Config object passed to it' );
+                       $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+               }
+               $this->config = $config;
        }
 
        /**
@@ -115,8 +123,6 @@ class PageArchive {
         * @return ResultWrapper
         */
        function listRevisions() {
-               global $wgContentHandlerUseDB;
-
                $dbr = wfGetDB( DB_SLAVE );
 
                $tables = array( 'archive' );
@@ -126,7 +132,7 @@ class PageArchive {
                        'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1',
                );
 
-               if ( $wgContentHandlerUseDB ) {
+               if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
                        $fields[] = 'ar_content_format';
                        $fields[] = 'ar_content_model';
                }
@@ -190,8 +196,6 @@ class PageArchive {
         * @return Revision|null
         */
        function getRevision( $timestamp ) {
-               global $wgContentHandlerUseDB;
-
                $dbr = wfGetDB( DB_SLAVE );
 
                $fields = array(
@@ -209,7 +213,7 @@ class PageArchive {
                        'ar_sha1',
                );
 
-               if ( $wgContentHandlerUseDB ) {
+               if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
                        $fields[] = 'ar_content_format';
                        $fields[] = 'ar_content_model';
                }
@@ -442,8 +446,6 @@ class PageArchive {
         * @return Status Status object containing the number of revisions restored on success
         */
        private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
-               global $wgContentHandlerUseDB;
-
                if ( wfReadOnly() ) {
                        throw new ReadOnlyError();
                }
@@ -516,7 +518,7 @@ class PageArchive {
                        'ar_sha1'
                );
 
-               if ( $wgContentHandlerUseDB ) {
+               if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
                        $fields[] = 'ar_content_format';
                        $fields[] = 'ar_content_model';
                }
@@ -806,12 +808,10 @@ class SpecialUndelete extends SpecialPage {
        }
 
        function showSearchForm() {
-               global $wgScript;
-
                $out = $this->getOutput();
                $out->setPageTitle( $this->msg( 'undelete-search-title' ) );
                $out->addHTML(
-                       Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
+                       Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) .
                                Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
                                Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                                Html::rawElement(
@@ -891,7 +891,7 @@ class SpecialUndelete extends SpecialPage {
                        return;
                }
 
-               $archive = new PageArchive( $this->mTargetObj );
+               $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
                if ( !wfRunHooks( 'UndeleteForm::showRevision', array( &$archive, $this->mTargetObj ) ) ) {
                        return;
                }
@@ -1198,7 +1198,7 @@ class SpecialUndelete extends SpecialPage {
                        array( 'undeletepagetitle', wfEscapeWikiText( $this->mTargetObj->getPrefixedText() ) )
                );
 
-               $archive = new PageArchive( $this->mTargetObj );
+               $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
                wfRunHooks( 'UndeleteForm::showHistory', array( &$archive, $this->mTargetObj ) );
                /*
                $text = $archive->getLastRevisionText();
@@ -1610,9 +1610,7 @@ class SpecialUndelete extends SpecialPage {
        }
 
        function undelete() {
-               global $wgUploadMaintenance;
-
-               if ( $wgUploadMaintenance && $this->mTargetObj->getNamespace() == NS_FILE ) {
+               if ( $this->getConfig()->get( 'UploadMaintenance' ) && $this->mTargetObj->getNamespace() == NS_FILE ) {
                        throw new ErrorPageError( 'undelete-error', 'filedelete-maintenance' );
                }
 
@@ -1621,7 +1619,7 @@ class SpecialUndelete extends SpecialPage {
                }
 
                $out = $this->getOutput();
-               $archive = new PageArchive( $this->mTargetObj );
+               $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
                wfRunHooks( 'UndeleteForm::undelete', array( &$archive, $this->mTargetObj ) );
                $ok = $archive->undelete(
                        $this->mTargetTimestamp,
index 35141d8..a8b97d7 100644 (file)
@@ -37,11 +37,9 @@ class SpecialUnlockdb extends FormSpecialPage {
        }
 
        public function checkExecutePermissions( User $user ) {
-               global $wgReadOnlyFile;
-
                parent::checkExecutePermissions( $user );
                # If the lock file isn't writable, we can do sweet bugger all
-               if ( !file_exists( $wgReadOnlyFile ) ) {
+               if ( !file_exists( $this->getConfig()->get( 'ReadOnlyFile' ) ) ) {
                        throw new ErrorPageError( 'lockdb', 'databasenotlocked' );
                }
        }
@@ -62,20 +60,19 @@ class SpecialUnlockdb extends FormSpecialPage {
        }
 
        public function onSubmit( array $data ) {
-               global $wgReadOnlyFile;
-
                if ( !$data['Confirm'] ) {
                        return Status::newFatal( 'locknoconfirm' );
                }
 
+               $readOnlyFile = $this->getConfig()->get( 'ReadOnlyFile' );
                wfSuppressWarnings();
-               $res = unlink( $wgReadOnlyFile );
+               $res = unlink( $readOnlyFile );
                wfRestoreWarnings();
 
                if ( $res ) {
                        return Status::newGood();
                } else {
-                       return Status::newFatal( 'filedeleteerror', $wgReadOnlyFile );
+                       return Status::newFatal( 'filedeleteerror', $readOnlyFile );
                }
        }
 
index 743c587..36ec09e 100644 (file)
@@ -44,7 +44,6 @@ class UnusedimagesPage extends ImageQueryPage {
        }
 
        function getQueryInfo() {
-               global $wgCountCategorizedImagesAsUsed;
                $retval = array(
                        'tables' => array( 'image', 'imagelinks' ),
                        'fields' => array(
@@ -58,7 +57,7 @@ class UnusedimagesPage extends ImageQueryPage {
                        'join_conds' => array( 'imagelinks' => array( 'LEFT JOIN', 'il_to = img_name' ) )
                );
 
-               if ( $wgCountCategorizedImagesAsUsed ) {
+               if ( $this->getConfig()->get( 'CountCategorizedImagesAsUsed' ) ) {
                        // Order is significant
                        $retval['tables'] = array( 'image', 'page', 'categorylinks',
                                'imagelinks' );
index cb821cb..ddb435d 100644 (file)
@@ -159,15 +159,13 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * @return bool Success
         */
        private function outputThumbFromStash( $file, $params ) {
-               // this global, if it exists, points to a "scaler", as you might find in
+               $flags = 0;
+               // this config option, if it exists, points to a "scaler", as you might find in
                // the Wikimedia Foundation cluster. See outputRemoteScaledThumb(). This
                // is part of our horrible NFS-based system, we create a file on a mount
                // point here, but fetch the scaled file from somewhere else that
                // happens to share it over NFS.
-               global $wgUploadStashScalerBaseUrl;
-
-               $flags = 0;
-               if ( $wgUploadStashScalerBaseUrl ) {
+               if ( $this->getConfig()->get( 'UploadStashScalerBaseUrl' ) ) {
                        $this->outputRemoteScaledThumb( $file, $params, $flags );
                } else {
                        $this->outputLocallyScaledThumb( $file, $params, $flags );
@@ -199,8 +197,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        throw new UploadStashFileNotFoundException( "no local path for scaled item" );
                }
 
-               // now we should construct a File, so we can get mime and other such info in a standard way
-               // n.b. mimetype may be different from original (ogx original -> jpeg thumb)
+               // now we should construct a File, so we can get MIME and other such info in a standard way
+               // n.b. MIME type may be different from original (ogx original -> jpeg thumb)
                $thumbFile = new UnregisteredLocalFile( false,
                        $this->stash->repo, $thumbnailImage->getStoragePath(), false );
                if ( !$thumbFile ) {
@@ -230,11 +228,10 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * @return bool Success
         */
        private function outputRemoteScaledThumb( $file, $params, $flags ) {
-               // This global probably looks something like
+               // This option probably looks something like
                // 'http://upload.wikimedia.org/wikipedia/test/thumb/temp'. Do not use
                // trailing slash.
-               global $wgUploadStashScalerBaseUrl;
-               $scalerBaseUrl = $wgUploadStashScalerBaseUrl;
+               $scalerBaseUrl = $this->getConfig()->get( 'UploadStashScalerBaseUrl' );
 
                if ( preg_match( '/^\/\//', $scalerBaseUrl ) ) {
                        // this is apparently a protocol-relative URL, which makes no sense in this context,
@@ -295,7 +292,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * Output HTTP response of raw content
         * Side effect: writes HTTP response to STDOUT.
         * @param string $content Content
-        * @param string $contentType Mime type
+        * @param string $contentType MIME type
         * @throws SpecialUploadStashTooLargeException
         * @return bool
         */
@@ -313,7 +310,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
        /**
         * Output headers for streaming
         * @todo Unsure about encoding as binary; if we received from HTTP perhaps
-        * we should use that encoding, concatted with semicolon to mimeType as it
+        * we should use that encoding, concatenated with semicolon to `$contentType` as it
         * usually is.
         * Side effect: preps PHP to write headers to STDOUT.
         * @param string $contentType String suitable for content-type header
index 46b4999..bd7457e 100644 (file)
@@ -42,6 +42,28 @@ class LoginForm extends SpecialPage {
        const NEED_TOKEN = 12;
        const WRONG_TOKEN = 13;
 
+       /**
+        * Valid error and warning messages
+        *
+        * Special:Userlogin can show an error or warning message on the form when
+        * coming from another page. This is done via the ?error= or ?warning= GET
+        * parameters.
+        *
+        * This array is the list of valid message keys. All other values will be
+        * ignored.
+        *
+        * @since 1.24
+        * @var string[]
+        */
+       public static $validErrorMessages = array(
+               'exception-nologin-text',
+               'watchlistanontext',
+               'changeemail-no-info',
+               'resetpass-no-info',
+               'confirmemail_needlogin',
+               'prefsnologintext2',
+       );
+
        public $mAbortLoginErrorMsg = null;
 
        protected $mUsername;
@@ -65,6 +87,8 @@ class LoginForm extends SpecialPage {
        protected $mType;
        protected $mReason;
        protected $mRealName;
+       protected $mEntryError = '';
+       protected $mEntryErrorType = 'error';
 
        private $mTempPasswordUsed;
        private $mLoaded = false;
@@ -128,6 +152,37 @@ class LoginForm extends SpecialPage {
                $this->mReturnTo = $request->getVal( 'returnto', '' );
                $this->mReturnToQuery = $request->getVal( 'returntoquery', '' );
 
+               // Show an error or warning passed on from a previous page
+               $entryError = $this->msg( $request->getVal( 'error', '' ) );
+               $entryWarning = $this->msg( $request->getVal( 'warning', '' ) );
+               // bc: provide login link as a parameter for messages where the translation
+               // was not updated
+               $loginreqlink = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       $this->msg( 'loginreqlink' )->escaped(),
+                       array(),
+                       array(
+                               'returnto' => $this->mReturnTo,
+                               'returntoquery' => $this->mReturnToQuery,
+                               'uselang' => $this->mLanguage,
+                               'fromhttp' => $this->mFromHTTP ? '1' : '0',
+                       )
+               );
+
+               // Only show valid error or warning messages.
+               if ( $entryError->exists()
+                       && in_array( $entryError->getKey(), self::$validErrorMessages )
+               ) {
+                       $this->mEntryErrorType = 'error';
+                       $this->mEntryError = $entryError->rawParams( $loginreqlink )->escaped();
+
+               } elseif ( $entryWarning->exists()
+                       && in_array( $entryWarning->getKey(), self::$validErrorMessages )
+               ) {
+                       $this->mEntryErrorType = 'warning';
+                       $this->mEntryError = $entryWarning->rawParams( $loginreqlink )->escaped();
+               }
+
                if ( $wgEnableEmail ) {
                        $this->mEmail = $request->getText( 'wpEmail' );
                } else {
@@ -182,6 +237,14 @@ class LoginForm extends SpecialPage {
                }
                $this->setHeaders();
 
+               // In the case where the user is already logged in, do not show the login page.
+               // The use case scenario for this is when a user opens a large number of tabs, is
+               // redirected to the login page on all of them, and then logs in on one, expecting
+               // all the others to work properly.
+               if ( $this->mType !== 'signup' && !$this->mPosted && $this->getUser()->isLoggedIn() ) {
+                       $this->successfulLogin();
+               }
+
                // If logging in and not on HTTPS, either redirect to it or offer a link.
                global $wgSecureLogin;
                if ( $this->mRequest->getProtocol() !== 'https' ) {
@@ -191,6 +254,7 @@ class LoginForm extends SpecialPage {
                                'returntoquery' => $this->mReturnToQuery !== '' ?
                                        $this->mReturnToQuery : null,
                                'title' => null,
+                               ( $this->mEntryErrorType === 'error' ? 'error' : 'warning' ) => $this->mEntryError,
                        ) + $this->mRequest->getQueryValues();
                        $url = $title->getFullURL( $query, false, PROTO_HTTPS );
                        if ( $wgSecureLogin
@@ -232,7 +296,7 @@ class LoginForm extends SpecialPage {
                                return;
                        }
                }
-               $this->mainLoginForm( '' );
+               $this->mainLoginForm( $this->mEntryError, $this->mEntryErrorType );
        }
 
        /**
index 0ec85ba..cefdad0 100644 (file)
@@ -328,9 +328,7 @@ class UserrightsPage extends SpecialPage {
         * @return Status
         */
        public function fetchUser( $username ) {
-               global $wgUserrightsInterwikiDelimiter;
-
-               $parts = explode( $wgUserrightsInterwikiDelimiter, $username );
+               $parts = explode( $this->getConfig()->get( 'UserrightsInterwikiDelimiter' ), $username );
                if ( count( $parts ) < 2 ) {
                        $name = trim( $username );
                        $database = '';
@@ -417,13 +415,12 @@ class UserrightsPage extends SpecialPage {
         * Output a form to allow searching for a user
         */
        function switchForm() {
-               global $wgScript;
                $this->getOutput()->addHTML(
                        Html::openElement(
                                'form',
                                array(
                                        'method' => 'get',
-                                       'action' => $wgScript,
+                                       'action' => wfScript(),
                                        'name' => 'uluser',
                                        'id' => 'mw-userrights-form1'
                                )
index 8ca9e23..50929a9 100644 (file)
@@ -212,7 +212,7 @@ class SpecialVersion extends SpecialPage {
                $software = array();
                $software['[https://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
                $phpKey = wfIsHHVM() ? '[http://hhvm.com/ HHVM]' :
-                       '[http://www.php.net/ PHP]';
+                       '[https://php.net/ PHP]';
                $software[$phpKey] = PHP_VERSION . " (" . PHP_SAPI . ")";
                $software[$dbr->getSoftwareLink()] = $dbr->getServerInfo();
 
index c54d9f4..38f1808 100644 (file)
@@ -54,8 +54,7 @@ class WantedPagesPage extends WantedQueryPage {
        }
 
        function getQueryInfo() {
-               global $wgWantedPagesThreshold;
-               $count = $wgWantedPagesThreshold - 1;
+               $count = $this->getConfig()->get( 'WantedPagesThreshold' ) - 1;
                $query = array(
                        'tables' => array(
                                'pagelinks',
index 5691e50..8f2f86b 100644 (file)
@@ -38,8 +38,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @param string $subpage
         */
        function execute( $subpage ) {
-               global $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
                // Anons don't get a watchlist
                $this->requireLogin( 'watchlistanontext' );
 
@@ -66,7 +64,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $user = $this->getUser();
                $opts = $this->getOptions();
 
-               if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker )
+               $config = $this->getConfig();
+               if ( ( $config->get( 'EnotifWatchlist' ) || $config->get( 'ShowUpdatedMarker' ) )
                        && $request->getVal( 'reset' )
                        && $request->wasPosted()
                ) {
@@ -198,8 +197,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
         */
        public function doMainQuery( $conds, $opts ) {
-               global $wgShowUpdatedMarker;
-
                $dbr = $this->getDB();
                $user = $this->getUser();
 
@@ -238,7 +235,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        ),
                );
 
-               if ( $wgShowUpdatedMarker ) {
+               if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
                        $fields[] = 'wl_notificationtimestamp';
                }
                if ( $limitWatchlist ) {
@@ -332,8 +329,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @param FormOptions $opts
         */
        public function outputChangesList( $rows, $opts ) {
-               global $wgShowUpdatedMarker, $wgRCShowWatchingUsers;
-
                $dbr = $this->getDB();
                $user = $this->getUser();
                $output = $this->getOutput();
@@ -366,13 +361,13 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $rc = RecentChange::newFromRow( $obj );
                        $rc->counter = $counter++;
 
-                       if ( $wgShowUpdatedMarker ) {
+                       if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
                                $updated = $obj->wl_notificationtimestamp;
                        } else {
                                $updated = false;
                        }
 
-                       if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+                       if ( $this->getConfig()->get( 'RCShowWatchingUsers' ) && $user->getOption( 'shownumberswatching' ) ) {
                                $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
                                        'COUNT(*)',
                                        array(
@@ -494,14 +489,13 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        }
 
        function setTopText( FormOptions $opts ) {
-               global $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
                $nondefaults = $opts->getChangedValues();
                $form = "";
                $user = $this->getUser();
 
                $dbr = $this->getDB();
                $numItems = $this->countItems( $dbr );
+               $showUpdatedMarker = $this->getConfig()->get( 'ShowUpdatedMarker' );
 
                // Show watchlist header
                $form .= "<p>";
@@ -509,16 +503,16 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $form .= $this->msg( 'nowatchlist' )->parse() . "\n";
                } else {
                        $form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n";
-                       if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
+                       if ( $this->getConfig()->get( 'EnotifWatchlist' ) && $user->getOption( 'enotifwatchlistpages' ) ) {
                                $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
                        }
-                       if ( $wgShowUpdatedMarker ) {
+                       if ( $showUpdatedMarker ) {
                                $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
                        }
                }
                $form .= "</p>";
 
-               if ( $numItems > 0 && $wgShowUpdatedMarker ) {
+               if ( $numItems > 0 && $showUpdatedMarker ) {
                        $form .= Xml::openElement( 'form', array( 'method' => 'post',
                                'action' => $this->getPageTitle()->getLocalURL(),
                                'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
index 60ac02f..7dc6da1 100644 (file)
@@ -42,7 +42,6 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
        }
 
        function execute( $par ) {
-               global $wgQueryPageDefaultLimit;
                $out = $this->getOutput();
 
                $this->setHeaders();
@@ -52,7 +51,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
 
                $opts->add( 'target', '' );
                $opts->add( 'namespace', '', FormOptions::INTNULL );
-               $opts->add( 'limit', $wgQueryPageDefaultLimit );
+               $opts->add( 'limit', $this->getConfig()->get( 'QueryPageDefaultLimit' ) );
                $opts->add( 'from', 0 );
                $opts->add( 'back', 0 );
                $opts->add( 'hideredirs', false );
@@ -101,8 +100,6 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
         * @param int $back Display from this article ID at backwards scrolling (default: 0)
         */
        function showIndirectLinks( $level, $target, $limit, $from = 0, $back = 0 ) {
-               global $wgMaxRedirectLinksRetrieved, $wgUseLinkNamespaceDBFields;
-
                $out = $this->getOutput();
                $dbr = wfGetDB( DB_SLAVE );
 
@@ -126,9 +123,10 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        'il_to' => $target->getDBkey(),
                );
 
+               $useLinkNamespaceDBFields = $this->getConfig()->get( 'UseLinkNamespaceDBFields' );
                $namespace = $this->opts->getValue( 'namespace' );
                if ( is_int( $namespace ) ) {
-                       if ( $wgUseLinkNamespaceDBFields ) {
+                       if ( $useLinkNamespaceDBFields ) {
                                $conds['pagelinks']['pl_from_namespace'] = $namespace;
                                $conds['templatelinks']['tl_from_namespace'] = $namespace;
                                $conds['imagelinks']['il_from_namespace'] = $namespace;
@@ -151,8 +149,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        $conds['pagelinks'][] = 'rd_from is NOT NULL';
                }
 
-               $queryFunc = function ( $dbr, $table, $fromCol ) use ( $conds, $target, $limit ) {
-                       global $wgUseLinkNamespaceDBFields;
+               $queryFunc = function ( $dbr, $table, $fromCol ) use ( $conds, $target, $limit, $useLinkNamespaceDBFields ) {
                        // Read an extra row as an at-end check
                        $queryLimit = $limit + 1;
                        $on = array(
@@ -160,7 +157,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                                'rd_title' => $target->getDBkey(),
                                'rd_interwiki = ' . $dbr->addQuotes( '' ) . ' OR rd_interwiki IS NULL'
                        );
-                       if ( $wgUseLinkNamespaceDBFields ) { // migration check
+                       if ( $useLinkNamespaceDBFields ) { // migration check
                                $on['rd_namespace'] = $target->getNamespace();
                        }
                        // Inner LIMIT is 2X in case of stale backlinks with wrong namespaces
@@ -278,7 +275,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
 
                        if ( $row->rd_from && $level < 2 ) {
                                $out->addHTML( $this->listItem( $row, $nt, $target, true ) );
-                               $this->showIndirectLinks( $level + 1, $nt, $wgMaxRedirectLinksRetrieved );
+                               $this->showIndirectLinks( $level + 1, $nt, $this->getConfig()->get( 'MaxRedirectLinksRetrieved' ) );
                                $out->addHTML( Xml::closeElement( 'li' ) );
                        } else {
                                $out->addHTML( $this->listItem( $row, $nt, $target ) );
@@ -415,8 +412,6 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
        }
 
        function whatlinkshereForm() {
-               global $wgScript;
-
                // We get nicer value from the title object
                $this->opts->consumeValue( 'target' );
                // Reset these for new requests
@@ -426,7 +421,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                $namespace = $this->opts->consumeValue( 'namespace' );
 
                # Build up the form
-               $f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
+               $f = Xml::openElement( 'form', array( 'action' => wfScript() ) );
 
                # Values that should not be forgotten
                $f .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
index e05faef..bd01461 100644 (file)
@@ -41,8 +41,6 @@ class WithoutInterwikiPage extends PageQueryPage {
        }
 
        function getPageHeader() {
-               global $wgScript;
-
                # Do not show useless input form if special page is cached
                if ( $this->isCached() ) {
                        return '';
@@ -51,7 +49,7 @@ class WithoutInterwikiPage extends PageQueryPage {
                $prefix = $this->prefix;
                $t = $this->getPageTitle();
 
-               return Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
+               return Html::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
                        Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
                        Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
index 6a6b358..4d74a2d 100644 (file)
@@ -377,11 +377,12 @@ abstract class UploadBase {
        }
 
        /**
-        * Verify the mime type.
+        * Verify the MIME type.
         *
-        * @note Only checks that it is not an evil mime. The "does it have
-        *  correct extension given its mime type?" check is in verifyFile.
-        * @param string $mime Representing the mime
+        * @note Only checks that it is not an evil MIME. The "does it have
+        *  correct extension given its MIME type?" check is in verifyFile.
+        *  in `verifyFile()` that MIME type and file extension correlate.
+        * @param string $mime Representing the MIME
         * @return mixed True if the file is verified, an array otherwise
         */
        protected function verifyMimeType( $mime ) {
@@ -396,7 +397,7 @@ abstract class UploadBase {
                                return array( 'filetype-badmime', $mime );
                        }
 
-                       # Check IE type
+                       # Check what Internet Explorer would detect
                        $fp = fopen( $this->mTempPath, 'rb' );
                        $chunk = fread( $fp, 256 );
                        fclose( $fp );
@@ -487,7 +488,7 @@ abstract class UploadBase {
 
                $this->mFileProps = FSFile::getPropsFromPath( $this->mTempPath, $this->mFinalExtension );
 
-               # check mime type, if desired
+               # check MIME type, if desired
                $mime = $this->mFileProps['file-mime'];
                $status = $this->verifyMimeType( $mime );
                if ( $status !== true ) {
@@ -995,9 +996,9 @@ abstract class UploadBase {
        }
 
        /**
-        * Checks if the mime type of the uploaded file matches the file extension.
+        * Checks if the MIME type of the uploaded file matches the file extension.
         *
-        * @param string $mime The mime type of the uploaded file
+        * @param string $mime The MIME type of the uploaded file
         * @param string $extension The filename extension that the file is to be served with
         * @return bool
         */
@@ -1050,7 +1051,7 @@ abstract class UploadBase {
         * positives in some situations.
         *
         * @param string $file Pathname to the temporary upload file
-        * @param string $mime The mime type of the file
+        * @param string $mime The MIME type of the file
         * @param string $extension The extension of the file
         * @return bool True if the file contains something looking like embedded scripts
         */
index 23a7a3a..7d80b44 100644 (file)
@@ -443,7 +443,7 @@ class UploadStash {
        }
 
        /**
-        * Find or guess extension -- ensuring that our extension matches our mime type.
+        * Find or guess extension -- ensuring that our extension matches our MIME type.
         * Since these files are constructed from php tempnames they may not start off
         * with an extension.
         * XXX this is somewhat redundant with the checks that ApiUpload.php does with incoming
@@ -460,7 +460,7 @@ class UploadStash {
                if ( $n !== false ) {
                        $extension = $n ? substr( $path, $n + 1 ) : '';
                } else {
-                       // If not, assume that it should be related to the mime type of the original file.
+                       // If not, assume that it should be related to the MIME type of the original file.
                        $magic = MimeMagic::singleton();
                        $mimeType = $magic->guessMimeType( $path );
                        $extensions = explode( ' ', MimeMagic::singleton()->getExtensionsForType( $mimeType ) );
index e1b03b5..2051a5b 100644 (file)
@@ -52,7 +52,7 @@
        'ar' => 'العربية',       # Arabic
        'arc' => 'ܐܪܡܝܐ',  # Aramaic
        'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
-       'arq' => 'جزائرÙ\8a', # Algerian Spoken Arabic
+       'arq' => 'جازاÙ\8aرÙ\8aØ©', # Algerian Spoken Arabic
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
        'as' => 'অসমীয়া',        # Assamese
index 1381688..e713e79 100644 (file)
        "returnto": "ارجع إلى $1.",
        "tagline": "من {{SITENAME}}",
        "help": "مساعدة",
-       "search": "ابحث",
+       "search": "بحث",
        "searchbutton": "ابحث",
        "go": "اذهب",
        "searcharticle": "اذهب",
        "searchprofile-advanced-tooltip": "ابحث في النطاقات المخصصة",
        "search-result-size": "$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$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": "(يطابق محتوى الملف)",
        "uploadwarning": "تحذير الرفع",
        "uploadwarning-text": "من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.",
        "savefile": "احفظ الملف",
-       "uploadedimage": "رفع \"[[$1]]\"",
-       "overwroteimage": "رفع نسخة جديدة من \"[[$1]]\"",
        "uploaddisabled": "تم تعطيل الرفع",
        "copyuploaddisabled": "الرفع من مسار معطل.",
        "uploaddisabledtext": "رفع الملفات معطل.",
        "version-hook-name": "اسم الخطاف",
        "version-hook-subscribedby": "يستخدم بواسطة",
        "version-version": "(نسخة $1)",
+       "version-no-ext-name": "[لا اسم]",
        "version-svn-revision": "ن$1",
        "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_generate_xml": "اعرض شجرة XML parse",
        "expand_templates_generate_rawhtml": "أظهر خام HTML",
        "expand_templates_preview": "عرض مسبق",
-       "pagelang-name": "صفحة"
+       "pagelanguage": "اختيار لغة الصفحة",
+       "pagelang-name": "صفحة",
+       "pagelang-language": "اللغة",
+       "pagelang-use-default": "استخدام اللغة الافتراضية",
+       "pagelang-select-lang": "اختر اللغة",
+       "right-pagelang": "تغيير لغة الصفحة",
+       "action-pagelang": "تغيير لغة الصفحة",
+       "log-name-pagelang": "تغيير سجل الصفحة"
 }
index 9b12248..c5e815b 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Bachounda",
                        "Oldstoneage",
-                       "아라"
+                       "아라",
+                       "Amire80"
                ]
        },
        "tog-underline": "تسطار الوصيلات:",
        "upload": "طلع فيشي",
        "uploadlogpage": "ريجيستر رفع الفيشيات",
        "filedesc": "ملخص",
-       "uploadedimage": "راه طلع \"[[$1]]\"",
        "license": "ترخيص:",
        "license-header": "ترخيص:",
        "file-anchor-link": "ملف",
        "sharedupload-desc-here": "هاذ الملف جاي من $1. يمكن يكون مستعمل من بروجيات وحد أخرين.\nالتوصيف نتاعو في [$2 باجت الصفات] محطوطه هنا لتحت.",
        "randompage": "باجة على الزهر",
        "statistics": "إحصاويّات",
-       "nbytes": "$1 اوكتي{{PLURAL:$1||s}}",
+       "nbytes": "{{PLURAL:$1|بايت 1|$1 بايت}}",
        "nmembers": "$1 اعضاء{{PLURAL:$1||s}}",
        "prefixindex": "كامل الباجات الباديه ب",
        "usercreated": "{{GENDER:$3|صنعه|صنعته}} في $1 الساعة $2",
index 45b37ee..fdaee92 100644 (file)
@@ -9,7 +9,8 @@
                        "Shirayuki",
                        "Xuacu",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Sorrayar enllaces:",
@@ -26,6 +27,7 @@
        "tog-watchdefault": "Amestar les páxines y ficheros qu'edite a la mio llista de siguimientu",
        "tog-watchmoves": "Amestar les páxines y ficheros que tresllade a la mio llista de siguimientu",
        "tog-watchdeletion": "Amestar les páxines y ficheros que desanicie a la mio llista de siguimientu",
+       "tog-watchrollback": "Amestar les páxines onde fici una reversión a la mio llista de siguimientu",
        "tog-minordefault": "Marcar toles ediciones como menores de mou predetermináu",
        "tog-previewontop": "Amosar previsualización enantes del cuadru d'edición",
        "tog-previewonfirst": "Amosar previsualización na primera edición",
        "policy-url": "Project:Polítiques",
        "portal": "Portal de la comunidá",
        "portal-url": "Project:Portal de la comunidá",
-       "privacy": "Política de proteición de datos",
-       "privacypage": "Project:Política de proteición de datos",
+       "privacy": "Política d'intimidá",
+       "privacypage": "Project:Política de privacidá",
        "badaccess": "Fallu de permisos",
        "badaccess-group0": "Nun tienes permisu pa executar l'aición solicitada.",
        "badaccess-groups": "L'aición solicitada ta acutada pa usuarios {{PLURAL:$2|del grupu|d'unu d'estos grupos}}: $1.",
        "preview": "Vista previa",
        "showpreview": "Amosar previsualización",
        "showdiff": "Amosar cambeos",
+       "blankarticle": "<strong>Atención:</strong> La páxina que tas a piques de crear ta balera.\nSi vuelves a facer click en «{{int:savearticle}}», crearáse la páxina ensin conteníu dengún.",
        "anoneditwarning": "<strong>Avisu:</strong> Nun anició sesión.\nLa direición IP quedará grabada nel historial d'edición d'esta páxina.",
        "anonpreviewwarning": "''Nun aniciasti sesión. Al guardar quedará rexistrada la to direición IP nel historial d'edición d'esta páxina.''",
        "missingsummary": "'''Recordatoriu:''' Nun conseñasti un resume d'edición.\nSi calques nuevamente \"{{int:savearticle}}\", la to edición guardaráse ensin nengún resume.",
        "rev-deleted-event": "(aición del rexistru desaniciada)",
        "rev-deleted-user-contribs": "[nome d'usuariu o direición IP desaniciáu - ediciones anubríes en contribuciones]",
        "rev-deleted-text-permission": "Esta revisión de la páxina se '''desanició'''.\nLos detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistru de desanicios].",
+       "rev-suppressed-text-permission": "Esta revisión de la páxina <strong>suprimióse</strong>.\nLos detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/supress|page={{FULLPAGENAMEE}}}} rexistru de supresiones].",
        "rev-deleted-text-unhide": "Esta revisión de la páxina se '''desanició'''.\nLos detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistru de desanicios].\nEntá pues [$1 ver esta revisión] si quies siguir.",
        "rev-suppressed-text-unhide": "Esta revisión de la páxina se '''suprimió'''.\nLos detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/supress|page={{FULLPAGENAMEE}}}} rexistru de supresiones].\nEntá pues [$1 ver esta revisión] si quies siguir.",
        "rev-deleted-text-view": "Esta revisión de la páxina se '''desanició'''.\nPues vela; los detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistru de desanicios].",
        "searchprofile-advanced-tooltip": "Buscar nos espacios de nomes personalizaos",
        "search-result-size": "$1 ({{PLURAL:$2|1 pallabra|$2 pallabres}})",
        "search-result-category-size": "{{PLURAL:$1|1 miembru|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategories}}, {{PLURAL:$3|1 ficheru|$3 ficheros}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(redireición de $1)",
        "search-section": "(seición $1)",
        "search-file-match": "(casa col conteníu del ficheru)",
        "right-deletedtext": "Ver el testu desaniciáu y los cambeos ente versiones desaniciaes",
        "right-browsearchive": "Buscar páxines desaniciaes",
        "right-undelete": "Restaurar una páxina",
-       "right-suppressrevision": "Revisar y restaurar revisiones ocultes a los alministradores",
+       "right-suppressrevision": "Ver, anubrir y amosar revisiones específiques de páxines de cualquier usuariu",
+       "right-viewsuppressed": "Ver revisiones anubríes de cualquier usuariu",
        "right-suppressionlog": "Ver rexistros privaos",
        "right-block": "Bloquiar la edición d'otros usuarios",
        "right-blockemail": "Bloquia-y l'unviu de corréu electrónicu a un usuariu",
        "recentchanges-legend-heading": "'''Lleenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ver tamién la  [[Special:NewPages|llista de páxines nueves]])",
        "recentchanges-legend-plusminus": "(''±123'')",
-       "rcnotefrom": "Abaxo tan los cambeos dende <strong>$2</strong> (s'amuesen fasta <strong>$1</strong>).",
+       "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l <strong>$3</strong>, a les <strong>$4</strong> (s'amuesen un máximu de <strong>$1</strong>).",
        "rclistfrom": "Amosar los nuevos cambios dende $3 $2",
        "rcshowhideminor": "$1 ediciones menores",
        "rcshowhideminor-show": "Amosar",
        "uploadwarning": "Avisu de xubíes de ficheros",
        "uploadwarning-text": "Por favor, camuda más abaxo la descripción del ficheru y vuelve a tentalo.",
        "savefile": "Guardar ficheru",
-       "uploadedimage": "xubió \"[[$1]]\"",
-       "overwroteimage": "xubió una versión nueva de \"[[$1]]\"",
        "uploaddisabled": "Deshabilitaes les xubíes",
        "copyuploaddisabled": "Xubir por URL ta desactivao.",
        "uploaddisabledtext": "Les xubíes de ficheros tán desactivaes.",
        "nolicense": "Nenguna seleicionada",
        "licenses-edit": "Editar les opciones de llicencia",
        "license-nopreview": "(Previsualización non disponible)",
-       "upload_source_url": " (una URL válida y accesible públicamente)",
-       "upload_source_file": " (un archivu del to ordenador)",
+       "upload_source_url": "(el ficheru qu'escoyisti dende una URL válida y accesible públicamente)",
+       "upload_source_file": "(el ficheru qu'escoyisti del to ordenador)",
        "listfiles-delete": "desaniciar",
        "listfiles-summary": "Esta páxina especial amuesa tolos ficheros xubíos.",
        "listfiles_search_for": "Buscar por nome d'archivu multimedia:",
        "watchlist-details": "{{PLURAL:$1|$1 páxina|$1 páxines}} na to llista de siguimientu, ensin cuntar aparte les páxines d'alderique.",
        "wlheader-enotif": "La notificación per corréu electrónicu ta activada.",
        "wlheader-showupdated": "Les páxines que camudaron dende que les visitasti anteriormente amuesense en '''negrina'''",
-       "wlnote2": "Abaxo tan los cambios {{PLURAL:$1|na cabera hora|nes caberes <strong>$1</strong> hores}}, el día $2 a les $3.",
+       "wlnote": "Abaxo {{PLURAL:$1|tá'l caberu cambiu|tan los caberos <strong>$1</strong> cambios}} {{PLURAL:$2|na cabera hora|nes caberes <strong>$2</strong> hores}}, a día $3, a les $4.",
        "wlshowlast": "Amosar les últimes $1 hores $2 díes $3",
        "watchlist-options": "Opciones de la llista de siguimientu",
        "watching": "Vixilando...",
        "protectlogpage": "Rexistru de proteiciones",
        "protectlogtext": "Darréu ta un rexistru de les protecciones de páxines.\nConsulta la [[Special:ProtectedPages|llista de páxines protexíes]] pa ver les proteiciones actives nestos momentos.",
        "protectedarticle": "protexó «[[$1]]»",
-       "modifiedarticleprotection": "camudó'l nivel de proteición de \"[[$1]]\"",
+       "modifiedarticleprotection": "camudó’l nivel de proteición de «[[$1]]»",
        "unprotectedarticle": "quitó-y la protección a \"[[$1]]\"",
-       "movedarticleprotection": "treslladó los parámetros de proteición dende \"[[$2]]\" a \"[[$1]]\"",
+       "movedarticleprotection": "treslladó los parámetros de proteición dende «[[$2]]» a «[[$1]]»",
        "protect-title": "Protexendo \"$1\"",
-       "protect-title-notallowed": "Ver el nivel de proteición de \"$1\"",
+       "protect-title-notallowed": "Ver el nivel de proteición de «$1»",
        "prot_1movedto2": "[[$1]] treslladáu a [[$2]]",
        "protect-badnamespace-title": "Espaciu de nomes non protexible",
        "protect-badnamespace-text": "Les páxines d'esti espaciu de nomes nun se puen protexer.",
        "import-upload": "Xubir datos XML",
        "import-token-mismatch": "Perdiéronse los datos de la sesión. Intentalo otra vuelta.",
        "import-invalid-interwiki": "Nun se puede importar d'esi wiki.",
-       "import-error-edit": "La páxina $1 nun s'importó porque nun tienes permisu pa editala.",
-       "import-error-create": "La páxina $1 nun s'importó porque nun tienes permisu pa creala.",
+       "import-error-edit": "La páxina «$1» nun s'importó porque nun tienes permisu pa editala.",
+       "import-error-create": "La páxina «$1» nun s'importó porque nun tienes permisu pa creala.",
        "import-error-interwiki": "La páxina «$1» nun s'importó porque'l so nome ta acutáu pa enllaces esternos (interwiki).",
        "import-error-special": "La páxina «$1» nun s'importó porque pertenez a un espaciu de nomes especial que nun permite les páxines.",
-       "import-error-invalid": "La páxina «$1» nun s'importó porque tien un nome inválidu.",
+       "import-error-invalid": "La páxina «$1» nun s'importó porque'l nome al que s'importaría ye inválidu nesta wiki.",
        "import-error-unserialize": "Nun se pudo quitar la serialización de la revisión $2 de la páxina \"$1\". Nel informe figura que la revisión usa'l modelu de conteníu $3 serializáu como $4.",
        "import-error-bad-location": "La revisión $2 qu'usa'l modelu de conteníu $3 nun pue guardase na páxina \"$1\" d'esta wiki, porque esi modelu nun tien sofitu na páxina.",
        "import-options-wrong": "{{PLURAL:$2|Opción enquivocada|Opciones enquivocaes}}: <nowiki>$1</nowiki>",
        "importlogpage": "Rexistru d'importaciones",
        "importlogpagetext": "Importaciones alministrativas de páxines con historial d'ediciones d'otres wikis.",
        "import-logentry-upload": "importada [[$1]] per aciu d'una xuba d'archivu",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisión|revisiones}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importaes}}",
        "import-logentry-interwiki": "treswikificada $1",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisión|revisiones}} dende $2",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importaes}} dende $2",
        "javascripttest": "Prueba de JavaScript",
        "javascripttest-title": "Executando pruebes de $1",
        "javascripttest-pagetext-noframework": "Esta páxina ta acutada pa executar pruebes de javascript.",
        "autosumm-replace": "Sustituyendo la páxina por '$1'",
        "autoredircomment": "Redirixendo a [[$1]]",
        "autosumm-new": "Páxina creada con «$1»",
+       "autosumm-newblank": "Creóse una páxina balera",
        "size-gigabytes": "$1 XB",
        "lag-warn-normal": "Los cambios más nuevos que $1 {{PLURAL:$1|segundu|segundos}} seique nun s'amuesen nesta llista.",
        "lag-warn-high": "Pola mor d'un importante retrasu nel sirvidor de la base de datos, los cambios más nuevos que $1 {{PLURAL:$1|segundu|segundos}} seique nun s'amuesen nesta llista.",
index d8ce916..839b732 100644 (file)
        "hidetoc": "схаваць",
        "collapsible-collapse": "Згарнуць",
        "collapsible-expand": "Разгарнуць",
+       "confirmable-confirm": "Вы ўпэўненыя?",
+       "confirmable-yes": "Так",
+       "confirmable-no": "Не",
        "thisisdeleted": "Праглядзець ці аднавіць $1?",
        "viewdeleted": "Паказаць $1?",
        "restorelink": "$1 {{PLURAL:$1|выдаленую зьмену|выдаленыя зьмены|выдаленых зьменаў}}",
        "searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
        "search-result-size": "$1 ($2 {{PLURAL:$2|слова|словы|словаў}})",
        "search-result-category-size": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}} ($2 {{PLURAL:$2|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}, $3 {{PLURAL:|файл|файлы|файлаў}})",
-       "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": "У Вашым сьпісе назіраньня $1 {{PLURAL:$1|старонка|старонкі|старонак}} за выключэньнем старонак абмеркаваньня.",
        "wlheader-enotif": "Апавяшчэньне па e-mail уключанае.",
        "wlheader-showupdated": "Старонкі, зьмененыя з часу вашага апошняга візыту, вылучаныя '''тоўстым''' шрыфтам.",
-       "wlnote": "Ніжэй {{PLURAL:$1|паказаная '''$1''' апошняя зьмена|паказаныя '''$1''' апошнія зьмены|паказаныя '''$1''' апошніх зьменаў}} за '''$2''' {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $3, $4.",
+       "wlnote": "Ніжэй {{PLURAL:$1|паказаная <strong>$1</strong> апошняя зьмена|паказаныя <strong>$1</strong> апошнія зьмены|паказаныя <strong>$1</strong> апошніх зьменаў}} за <strong>$2</strong> {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $4 $3.",
        "wlshowlast": "Паказаць: за апошнія $1 гадзінаў, $2 дзён, $3",
        "watchlist-options": "Налады сьпісу назіраньня",
        "watching": "Дадаецца ў сьпіс назіраньня…",
        "import-token-mismatch": "Страчаныя зьвесткі сэсіі. Калі ласка, паспрабуйце ізноў.",
        "import-invalid-interwiki": "Немагчыма імпартаваць з вызначанай вікі.",
        "import-error-edit": "Старонка «$1» не была імпартаваная, бо Вы ня маеце правоў на яе рэдагаваньне.",
-       "import-error-create": "Старонка «$1» не імпартаваная, бо Вы ня маеце правоў на яе стварэньне.",
-       "import-error-interwiki": "Старонка «$1» не была імпартаваная, таму што гэтая назва зарэзэрваваная для інтэрвікі.",
+       "import-error-create": "Старонка «$1» не была імпартаваная, бо Вы ня маеце правоў на яе стварэньне.",
+       "import-error-interwiki": "Старонка «$1» не была імпартаваная, таму што яе назва зарэзэрваваная для вонкавых спасылак (інтэрвікі).",
        "import-error-special": "Старонка «$1» не была імпартаваная, таму што яна належыць да спэцыяльнай прасторы назваў, старонкі ў якой не дазволеныя.",
-       "import-error-invalid": "Старонка «$1» не была імпартаваная з-за няслушнасьці назвы.",
+       "import-error-invalid": "Старонка «$1» не была імпартаваная, таму што назва зь якой яна павінна быць імпартаваная, не дазволеная ў гэтай вікі.",
        "import-error-unserialize": "Не атрымалася дэсэрыялізаваць вэрсію $2 старонкі «$1». Меркавалася, што вэрсія выкарыстоўвала мадэль зьвестак $3 і была сэрыялізавана ў фармаце $4.",
        "import-error-bad-location": "Праўка $2, якая выкарыстоўвае мадэль зьместу $3, ня можа быць захаваная ў «$1» гэтай вікі, таму што такая мадэль не падтрымліваецца на гэтай старонцы.",
        "import-options-wrong": "{{PLURAL:$2|1=Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>",
        "importlogpage": "Журнал імпартаваньняў",
        "importlogpagetext": "Імпартаваньне адміністратарамі старонак з гісторыяй зьменаў зь іншых вікі.",
        "import-logentry-upload": "імпартавана [[$1]] праз загрузку файла",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
+       "import-logentry-upload-detail": "$1 {{PLURAL:$1|вэрсія імпартаваная|вэрсіі імпартаваныя|вэрсіяў імпартаваныя}}",
        "import-logentry-interwiki": "імпартавана зь іншай вікі $1",
-       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} з $2",
+       "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вэрсія імпартаваная|вэрсіі імпартаваныя|вэрсіяў імпартаваныя}} з $2",
        "javascripttest": "Тэставаньне JavaScript",
        "javascripttest-title": "Праводзіцца тэставаньне $1",
        "javascripttest-pagetext-noframework": "Гэтая старонка трымаецца для правядзеньня тэстаў JavaScript.",
        "logentry-rights-rights": "$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групы з $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групаў",
        "logentry-rights-autopromote": "$1 {{GENDER:$1|быў аўтаматычна пераведзены|была аўтаматычна пераведзеная}} з групы $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 6b7f88a..40e840a 100644 (file)
        "thu": "Чц",
        "fri": "Пт",
        "sat": "Сб",
-       "january": "Студзень",
-       "february": "Ð\9bюты",
-       "march": "Сакавік",
-       "april": "Ð\9aрасавік",
-       "may_long": "ТÑ\80авенÑ\8c",
-       "june": "Чэрвень",
-       "july": "Ð\9bіпень",
-       "august": "Ð\96нівень",
-       "september": "Ð\92ерасень",
-       "october": "Ð\9aастрычнік",
-       "november": "Ð\9bістапад",
-       "december": "Снежань",
+       "january": "cтудзень",
+       "february": "люты",
+       "march": "сакавік",
+       "april": "красавік",
+       "may_long": "май",
+       "june": "чэрвень",
+       "july": "ліпень",
+       "august": "Ðнівень",
+       "september": "верасень",
+       "october": "кастрычнік",
+       "november": "лістапад",
+       "december": "снежань",
        "january-gen": "студзеня",
        "february-gen": "лютага",
        "march-gen": "сакавіка",
        "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)",
        "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
        "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
        "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў",
-       "node-count-exceeded-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82аÑ\80онак, Ñ\83 Ñ\8fкÑ\96Ñ\85 Ð¿ÐµÑ\80авÑ\8bÑ\88ана колькасць вузлоў.",
+       "node-count-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b Ð¿ÐµÑ\80авÑ\8bÑ\88ана Ð¼Ð°ÐºÑ\81Ñ\96малÑ\8cнаÑ\8f колькасць вузлоў.",
        "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онак, Ñ\83 Ñ\8fкÑ\96Ñ\85 Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83Ñ\82а глыбіня разгортвання.",
+       "expansion-depth-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83Ñ\82а Ð¼Ð°ÐºÑ\81Ñ\96малÑ\8cнаÑ\8f глыбіня разгортвання.",
        "expansion-depth-exceeded-warning": "Старонка перасягнула глыбіню разгортвання",
        "parser-unstrip-loop-warning": "Выяўлены закальцаваны unstrip",
        "parser-unstrip-recursion-limit": "Перавышаны ліміт рэкурсіі unstrip ($1)",
        "searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
        "search-result-size": "$1 ({{PLURAL:$2|1 слова|$2 словы|$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": "(адпавядае змесціву файла)",
        "preferences": "Настройкі",
        "mypreferences": "Настройкі",
        "prefs-edits": "Колькасць правак:",
-       "prefsnologintext2": "Трэба $1, каб мяняць свае настройкі.",
+       "prefsnologintext2": "Трэба прадставіцца сістэме, каб мяняць свае настройкі.",
        "prefs-skin": "Вокладка",
        "skin-preview": "Перадпаказ",
        "datedefault": "Не вызначана",
        "uploadwarning": "Папярэджанне пра ўкладанне",
        "uploadwarning-text": "Калі ласка, змяніце апісанне файла ніжэй і паўтарыце спробу.",
        "savefile": "Запісаць файл",
-       "uploadedimage": "укладзена \"[[$1]]\"",
-       "overwroteimage": "укладзена новая версія \"[[$1]]\"",
        "uploaddisabled": "Укладанні не дазваляюцца",
        "copyuploaddisabled": "Даданне па URL адключана.",
        "uploaddisabledtext": "Не дазваляюцца ўкладанні файлаў.",
        "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": "Ð\97анадÑ\82а Ñ\88маÑ\82 Ð¿Ñ\80аÑ\86аÑ\91мкÑ\96Ñ\85 Ð·Ð²Ð°Ñ\80оÑ\82аÑ\9e Ð´Ð° Ñ\84Ñ\83нкÑ\86Ñ\8bй Ð¿Ð°Ñ\80Ñ\81еÑ\80а (напÑ\80Ñ\8bклад, <code>#ifexist</code>) Ñ\83клÑ\8eÑ\87ана Ñ\9e Ñ\81Ñ\82аÑ\80онкÑ\83. Гл. [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": "Гэта катэгорыя змяшчае <code><nowiki>__HIDDENCAT__</nowiki></code>, што паводле прадвызначэння засцерагае яе ад паказу ў спісе катэгорый на старонках.",
+       "expensive-parserfunction-category-desc": "У Ñ\81Ñ\82аÑ\80онкÑ\83 Ñ\9eклÑ\8eÑ\87ана Ð·Ð°Ð½Ð°Ð´Ñ\82а Ñ\88маÑ\82 Ð¿Ñ\80аÑ\86аÑ\91мкÑ\96Ñ\85 Ð·Ð²Ð°Ñ\80оÑ\82аÑ\9e Ð´Ð° Ñ\84Ñ\83нкÑ\86Ñ\8bй Ð¿Ð°Ñ\80Ñ\81еÑ\80а (напÑ\80Ñ\8bклад, <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> на старонцы змесціва, што паводле прадвызначэння засцерагае яе ад паказу ў спісе катэгорый на старонках.",
        "trackingcategories-nodesc": "Апісанне адсутнічае.",
        "trackingcategories-disabled": "Катэгорыя адключана",
        "mailnologin": "Няма эл.адрасу",
        "mywatchlist": "Спіс назірання",
        "watchlistfor2": "Для $1 $2",
        "nowatchlist": "Ваш спіс назірання зараз пусты.",
-       "watchlistanontext": "Каб паглядзець ці змяніць спіс назірання, трэба $1.",
+       "watchlistanontext": "Каб паглядзець ці змяніць спіс назірання, трэба прадставіцца сістэме.",
        "watchnologin": "Без прадстаўлення",
        "addwatch": "Дадаць у спіс назірання",
        "addedwatchtext": "Старонка \"[[:$1]]\" была дададзена да [[Special:Watchlist|назіраных]] вамі.\nЗмяненні, якія адбудуцца з гэтай старонкай і з размовамі пра яе, будуць паказвацца ў спісе назірання.",
        "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": "Тэма:",
        "action-pagelang": "змяняць мову старонкі",
        "log-name-pagelang": "Журнал змянення мовы",
        "log-description-pagelang": "Гэта журнал змяненняў у мовах старонкі.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''выключана''')"
 }
index d279705..8de83ad 100644 (file)
        "talkpagelinktext": "Беседа",
        "specialpage": "Специална страница",
        "personaltools": "Лични инструменти",
-       "postcomment": "Нов раздел",
        "articlepage": "Преглед на страница",
        "talk": "Беседа",
        "views": "Прегледи",
        "externaldberror": "Или е станала грешка в базата от данни при външното удостоверяване, или не ви е позволено да обновявате външната си сметка.",
        "login": "Влизане",
        "nav-login-createaccount": "Регистриране или влизане",
-       "loginprompt": "За влизане в {{SITENAME}} е необходимо да въведете потребителското си име и парола и да натиснете бутона '''Влизане''', като, за да бъде това успешно, бисквитките (cookies) трябва да са разрешени в браузъра ви.\n\nАко все още не сте се регистрирали (нямате открита сметка), лесно можете да сторите това, като последвате препратката '''Създаване на сметка'''.",
        "userlogin": "Влизане / създаване на сметка",
        "userloginnocreate": "Влизане",
        "logout": "Излизане",
        "searchprofile-advanced-tooltip": "Търсене в избрани именни пространства",
        "search-result-size": "$1 ({{PLURAL:$2|една дума|$2 думи}})",
        "search-result-category-size": "{{PLURAL:$1|1 член|$1 члена}} ({{PLURAL:$2|1 подкатегория|$2 подкатегории}}, {{PLURAL:$3|1 файл|$3 файла}})",
-       "search-result-score": "Релевантност: $1%",
        "search-redirect": "(пренасочване $1)",
        "search-section": "(раздел $1)",
        "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": "{{PLURAL:$1|Показана е последната промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния час|последните '''$2''' часа}}.",
        "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": "Куки",
        "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-select-lang": "Избиране на език"
 }
index 5ac6601..66cce05 100644 (file)
        "hidetoc": "আড়ালে রাখো",
        "collapsible-collapse": "সংকোচন",
        "collapsible-expand": "প্রসারণ",
+       "confirmable-yes": "হ্যাঁ",
+       "confirmable-no": "না",
        "thisisdeleted": "$1 দেখানো বা পুনঃসৃষ্টি করা হোক?",
        "viewdeleted": "$1 দেখানো হোক?",
        "restorelink": "{{PLURAL:$1|একটি মুছে ফেলা সম্পাদনা|$1টি মুছে ফেলা সম্পাদনা}}",
        "searchprofile-advanced-tooltip": "স্বনির্ধারিত নামস্থানে অনুসন্ধান করো",
        "search-result-size": "$1 ({{PLURAL:$2|১টি শব্দ|$2টি শব্দ}})",
        "search-result-category-size": "{{PLURAL:$1 |১টি সদস্য |$1টি সদস্য}} ({{PLURAL:$2 |১টি উপবিষয়শ্রেণী|$2টি উপবিষয়শ্রেণী}}, {{PLURAL:$3 |১টি ফাইল |$3টি ফাইল}})",
-       "search-result-score": "মিলেছে: $1%",
        "search-redirect": "(পুনর্নিদেশনা $1)",
        "search-section": "(অনুচ্ছেদ $1)",
        "search-file-match": "(নথির বিষয়বস্তু মিলে যায়)",
        "uploadwarning": "আপলোড সতর্কবাণী",
        "uploadwarning-text": "অনুগ্রহ করে নিচে ফাইলের বর্ণনা পরিবর্তন করে আবার চেষ্টা করুন।",
        "savefile": "সংরক্ষণ",
-       "uploadedimage": "\"[[$1]]\" আপলোড করা হয়েছে।",
-       "overwroteimage": "\"[[$1]]\"-এর একটি নতুন সংস্করণ আপলোড করা হয়েছে",
        "uploaddisabled": "আপলোড নিষ্ক্রিয় আছে",
        "copyuploaddisabled": "ইউআরএল এর মাধ্যমে আপলোড নিস্ক্রিয় রয়েছে।",
        "uploaddisabledtext": "ফাইল আপলোড নিষ্ক্রিয়।",
        "nonfile-cannot-move-to-file": "কোনো ফাইলনয় এমন কোনো পাতা ফাইল নামস্থানে স্থানান্তর সম্ভব নয়",
        "imagetypemismatch": "নতুন ফাইল এক্সটেনশনটি ফাইলের ধরনের সাথে মিলছে না",
        "imageinvalidfilename": "ফাইল নামটি সঠিক নয়",
-       "fix-double-redirects": "মà§\82ল à¦¶à¦¿à¦°à¦¨à¦¾à¦®à¦\95à§\87 à¦¨à¦¿à¦°à§\8dদà§\87শ à¦\95রà§\87 à¦\8fমন à¦¸à¦\95ল à¦°à¦¿à¦¡à¦¾à¦\87রà§\87à¦\95à§\8dà¦\9f à¦\86পডà§\87à¦\9f করুন",
+       "fix-double-redirects": "মà§\82ল à¦¶à¦¿à¦°à¦¨à¦¾à¦®à¦\95à§\87 à¦¨à¦¿à¦°à§\8dদà§\87শ à¦\95রà§\87 à¦\8fমন à¦¸à¦\95ল à¦ªà§\81নরà§\8dনিরà§\8dদà§\87শ à¦¹à¦¾à¦²à¦¨à¦¾à¦\97াদ করুন",
        "move-leave-redirect": "পুনর্নির্দেশ রেখে দিন",
        "protectedpagemovewarning": "'''সতর্কীকরণ:''' এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি স্থানান্তর করতে পারবেন।\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
        "semiprotectedpagemovewarning": "'''নোট:''' এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি স্থানান্তর করতে পারবেন।\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো:",
        "mediawarning": "'''সতর্কীকরণ''': এই ফাইলের ধরনে ক্ষতিকর কোড থাকতে পারে। এটি চালালে আপনার সিস্টেমে ক্ষতি হতে পারে।",
        "imagemaxsize": "ছবির আকারের সর্বোচ্চ সীমা:<br />''(ছবির বিবরণ পাতার জন্য)''",
        "thumbsize": "থাম্বনেইল আকার:",
-       "widthheightpage": "$1 × $2, $3 {{PLURAL:$1|পাতাট|পাতাগুলো}}",
+       "widthheightpage": "$1 × $2, $3টি {{PLURAL:$1|পাতা}}",
        "file-info": "ফাইলের আকার: $1, MIME ধরণ: $2",
        "file-info-size": "$1 × $2 পিক্সেল, ফাইলের আকার: $3, এমআইএমই ধরণ: $4",
        "file-info-size-pages": "$1 × $2 পিক্সেল, fফাইলের আকার: $3, MIME ধরন: $4, $5 {{PLURAL:$5|পাতা|পাতাসমূহ}}",
index 3978647..5b5c7a0 100644 (file)
        "hidetoc": "kuzhat",
        "collapsible-collapse": "Pakañ",
        "collapsible-expand": "Dispakañ",
+       "confirmable-confirm": "Ha sur {{GENDER:$1|hoc'h}} ?",
+       "confirmable-yes": "Ya",
+       "confirmable-no": "Ket",
        "thisisdeleted": "Diskouez pe diziverkañ $1 ?",
        "viewdeleted": "Gwelet $1?",
        "restorelink": "{{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
        "searchprofile-advanced-tooltip": "Klask en esaouennoù anv personelaet",
        "search-result-size": "$1 ({{PLURAL:$2|1 ger|$2 ger}})",
        "search-result-category-size": "{{PLURAL:$1|1|$1}} ezel ({{PLURAL:$2|1|$2}} is-rummad, {{PLURAL:$3|1|$3}} restr)",
-       "search-result-score": "Klotadusted : $1%",
        "search-redirect": "(adkas $1)",
        "search-section": "(rann $1)",
        "search-file-match": "(klotañ a ra gant endalc'had ar restr)",
        "recentchanges-legend-heading": "'''Alc'hwez :'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])",
        "rcnotefrom": "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an <strong>$2</strong> (<strong>$1</strong> d'ar muiañ).",
-       "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an $3 $2",
+       "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an/ar $3 $2",
        "rcshowhideminor": "$1 ar c'hemmoù dister",
        "rcshowhideminor-show": "Diskouez",
        "rcshowhideminor-hide": "Kuzhat",
        "rcshowhidemine": "$1 ma c'hemmoù",
        "rcshowhidemine-show": "Diskouez",
        "rcshowhidemine-hide": "Kuzhat",
-       "rclinks": "Diskouez an $1 kemm diwezhañ c'hoarvezet e-pad an $2 devezh diwezhañ<br />$3",
+       "rclinks": "Diskouez an/ar $1 kemm diwezhañ c'hoarvezet e-pad an/ar $2 devezh diwezhañ.<br />$3",
        "diff": "diforc'h",
        "hist": "ist",
        "hide": "Kuzhat",
        "uploadwarning": "Kemenn diwall en ur ezporzhiañ",
        "uploadwarning-text": "Cheñchit deskrivadur ar restr a-is ha klaskit en-dro.",
        "savefile": "Enrollañ ar restr",
-       "uploadedimage": "\"[[$1]]\" enporzhiet",
-       "overwroteimage": "enporzhiet ur stumm nevez eus \"[[$1]]\"",
        "uploaddisabled": "Ho tigarez, diweredekaet eo bet kas ar restr-mañ.",
        "copyuploaddisabled": "Diweredekaet eo bet ar pellgargañ dre URL.",
        "uploaddisabledtext": "Diweredekaet eo an enporzhiañ restroù.",
        "pagelang-use-default": "Implijout ar yezh dre ziouer",
        "pagelang-select-lang": "Dibab ar yezh",
        "right-pagelang": "Cheñch yezh ar bajenn",
-       "action-pagelang": "cheñch yezh ar bajenn"
+       "action-pagelang": "cheñch yezh ar bajenn",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (gweredekaet)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''diweredekaet''')"
 }
index bb47166..69905d4 100644 (file)
        "searchprofile-advanced-tooltip": "Cerca als espais de noms predefinits",
        "search-result-size": "$1 ({{PLURAL:$2|1 paraula|$2 paraules}})",
        "search-result-category-size": "{{PLURAL:$1|1 membre|$1 membres}} ({{PLURAL:$2|1 subcategoria|$2 subcategories}}, {{PLURAL:$3|1 fitxer|$3 fitxers}})",
-       "search-result-score": "Rellevància: $1%",
        "search-redirect": "(redirigit des de $1)",
        "search-section": "(secció $1)",
        "search-file-match": "(coincideix amb el contingut del fitxer)",
        "uploadwarning": "Avís de càrrega",
        "uploadwarning-text": "Modifiqueu la descripció de la imatge i torneu a intentar-ho.",
        "savefile": "Desa el fitxer",
-       "uploadedimage": "ha carregat [[$1]]",
-       "overwroteimage": "ha carregat una nova versió de «[[$1]]»",
        "uploaddisabled": "S'ha inhabilitat la càrrega",
        "copyuploaddisabled": "Càrrega per URL deshabilitada.",
        "uploaddisabledtext": "S'ha inhabilitat la càrrega de fitxers.",
        "licenses-edit": "Modifica les opcions de llicència",
        "license-nopreview": "(Previsualització no disponible)",
        "upload_source_url": " (un URL vàlid i accessible públicament)",
-       "upload_source_file": " (un fitxer en el vostre ordinador)",
+       "upload_source_file": " (un fitxer triat del vostre ordinador)",
        "listfiles-delete": "elimina",
        "listfiles-summary": "Aquesta pàgina especial mostra tots els fitxers carregats.\nSi filtreu per usuari només es mostraran els fitxers la versió més recent dels quals hagi estat carregada per aquell.",
        "listfiles_search_for": "Cerca el nom d'un fitxer de medis:",
        "autosumm-replace": "Contingut canviat per «$1».",
        "autoredircomment": "Redirecció a [[$1]]",
        "autosumm-new": "Es crea la pàgina amb «$1».",
+       "autosumm-newblank": "S'ha creat una pàgina en blanc",
        "lag-warn-normal": "Els canvis més nous de $1 {{PLURAL:$1|segon|segons}} podrien no mostrar-se a la llista.",
        "lag-warn-high": "A causa de la lenta resposta del servidor de base de dades, els canvis més nous de $1 {{PLURAL:$1|segon|segons}} potser no es mostren aquesta llista.",
        "watchlistedit-normal-title": "Edita la llista de seguiment",
index d525b7b..e5f06a4 100644 (file)
@@ -8,7 +8,8 @@
                        "아라",
                        "Mywood",
                        "Impersonator 1",
-                       "LNDDYL"
+                       "LNDDYL",
+                       "唐吉訶德的侍從"
                ]
        },
        "tog-underline": "下劃綫鏈接",
        "editfont-monospace": "蜀様寬其字體",
        "editfont-sansserif": "無襯線其字體",
        "editfont-serif": "有襯線其字體",
-       "sunday": "禮拜",
-       "monday": "拜一",
-       "tuesday": "拜二",
-       "wednesday": "拜三",
-       "thursday": "拜四",
-       "friday": "拜五",
-       "saturday": "拜六",
-       "sun": "禮拜",
-       "mon": "拜一",
-       "tue": "拜二",
-       "wed": "拜三",
-       "thu": "拜四",
-       "fri": "拜五",
-       "sat": "拜六",
+       "sunday": "Lā̤ buái/禮拜",
+       "monday": "Buái ék/拜一",
+       "tuesday": "Buái nê/拜二",
+       "wednesday": "Buái săng / 拜三",
+       "thursday": "Buái sé/拜四",
+       "friday": "Buái ngô/拜五",
+       "saturday": "Buái lĕ̤k/拜六",
+       "sun": "Lā̤ buái/禮拜",
+       "mon": "Buái ék/拜一",
+       "tue": "Buái nê/拜二",
+       "wed": "Buái săng/拜三",
+       "thu": "Buái sé/拜四",
+       "fri": "Buái ngô/拜五",
+       "sat": "Buái lĕ̤k/拜六",
        "january": "一月",
        "february": "二月",
        "march": "三月",
        "fileexists": "名字蜀樣其文件已經存在去了。如果汝𣍐確定汝是伓是卜想刪掉伊,起動檢查蜀下<strong>[[:$1]]</strong>。\n[[$1|thumb]]",
        "uploadwarning": "上傳警告",
        "savefile": "保存文件",
-       "uploadedimage": "已經上傳其「[[$1]]」",
        "uploadvirus": "茲文件有病毒!\n細底:$1",
        "sourcefilename": "源文件名:",
        "destfilename": "目標文件名:",
index b14dcbe..31bdeca 100644 (file)
@@ -25,6 +25,7 @@
        "tog-watchdefault": "ТӀетоха ас нисйина агӀонаш тергаме могӀам чу",
        "tog-watchmoves": "ТӀетоха ас цӀераш хийцина агӀонаш тергаме могӀам чу",
        "tog-watchdeletion": "ТӀетоха ас дӀаяьхна агӀонаш тергаме могӀанан чу",
+       "tog-watchrollback": "Аса нисдар юхудаькхина агӀо сан тергаме могӀанан тӀетуху",
        "tog-minordefault": "Къастам бе нисйиначарн хlумцадеш кегийра долушсанна",
        "tog-previewontop": "Чуяккха хьалххьажар тадаран кора хьалха",
        "tog-previewonfirst": "Гайта хьалххьажар тадарш да долийча",
@@ -46,7 +47,7 @@
        "tog-ccmeonemails": "Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.",
        "tog-diffonly": "Ма гайта агlон чулацам шина башхонца цхьатерра йолуш",
        "tog-showhiddencats": "Гайта къайлаха йолу категореш",
-       "tog-norollbackdiff": "ЮÑ\85а Ñ\8fккÑ\85инаÑ\87Ñ\83л Ñ\82Ó\80аÑ\8cÑ\85Ñ\8cа Ð¼Ð° Ð³Ð°Ð¹Ñ\82а Ð²ÐµÑ\80Ñ\81еÑ\88ан башхо",
+       "tog-norollbackdiff": "ЮÑ\85а Ñ\8fккÑ\85инаÑ\87Ñ\83л Ñ\82Ó\80аÑ\8cÑ\85Ñ\8cа Ð¼Ð° Ð³Ð°Ð¹Ñ\82а Ð²ÐµÑ\80Ñ\81ийн башхо",
        "tog-useeditwarning": "Хаамбе бина хийцамаш дӀаязцабеш аса болх дӀатосучу хенахь",
        "tog-prefershttps": "Даима лела йе лардина системин чудалар",
        "underline-always": "Даимна",
        "hidetoc": "къайлаяккха",
        "collapsible-collapse": "къайлаяккха",
        "collapsible-expand": "схьаяста",
+       "confirmable-confirm": "Лаьий {{GENDER:$1|хьуна}}?",
+       "confirmable-yes": "ХӀаъ",
+       "confirmable-no": "ХӀахӀа",
        "thisisdeleted": "Хьажа я меттахӀоттайé $1?",
        "viewdeleted": "Хьожий $1?",
        "restorelink": "{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}",
        "changeemail-password": "Хьан пароль «{{SITENAME}}» проектан:",
        "changeemail-submit": "Хийца email",
        "changeemail-cancel": "Цаоьшу",
+       "changeemail-throttled": "Хьо дукха гӀиртира.\nДехар до, собар де $1 юха гӀортале.",
        "resettokens": "Токенаш кхоссар",
        "resettokens-text": "Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна. \n\nХьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.",
        "resettokens-no-tokens": "Кхосса токенаш яц.",
        "blankarticle": "<strong>ДӀахьедар:</strong> Ахьа кхуллуш йолу агӀо еса ю.\nЮху кнопка «{{int:savearticle}}» тӀетаӀаяхь, агӀо цхьа чулацам боцуш кхуллур ю.",
        "anoneditwarning": "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
        "anonpreviewwarning": "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+       "missingsummary": "'''Дагадаийтар.''' Ахьа хийцамаш лаьцна доца яздина дац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
        "missingcommenttext": "Дехар до дӀаязбе хайн хаам лахахь.",
+       "missingcommentheader": "'''Дагадаийтар.''' Ахьа хӀокху къамелан дӀахьедар/корта билгал бина бац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
        "summary-preview": "Цуьнах лаьцна хирду:",
        "subject-preview": "Коьрта могӀа хира бу:",
        "blockedtitle": "Декъашхочун блоктоьхана",
+       "blockedtext": "'''Хьан декъашхочун дӀаяздар я IP-адрес блоктоьхна ду.'''\n\nБлоктоьхна куьйгалхочо $1.\nБилгалдина бахьна: «''$2''».\n\n* Блоктохар доладелла: $8\n* Блоктохар чекхдолу: $6\n* Блоктохаран Ӏалашо: $7\n\nХьа йиш ю $1 декъашхочуьнга дехардан я кхечу муьлха [[{{MediaWiki:Grouppage-sysop}}|куьйгалхочуьнга]].\nТергам бе, хьа таро яц «декъашхочунга кехат» олу функци лелаян, хьан [[Special:Preferences|гӀирс нисбар чохь]] нийса электронан почтан адрес яздина дацахь, я кехаташ кхехӀитарна а блоктоьхна елахь.\nХьан IP-адрес — $3, блоктохаран идентификатор — $5.\nДехар до, хьайн хаам чохь билгалде и.",
        "blockednoreason": "бахьана билгалдина дац",
        "whitelistedittext": "Ахьа да деза $1 агӀона хийцамаш бан.",
        "nosuchsectiontitle": "Дакъа каро йиш яц.",
        "revdelete-radio-set": "Къайлаяьккхина",
        "revdelete-radio-unset": "Гуш ерг",
        "revdelete-suppress": "Къайлабаха хаамаш куьйгалхойх а",
-       "revdelete-unsuppress": "Ð\9cеÑ\82Ñ\82аÑ\85Ó\80оÑ\8cÑ\82Ñ\82ина Ð²ÐµÑ\80Ñ\81еÑ\88ан дихкар къайладаккха",
+       "revdelete-unsuppress": "Ð\9cеÑ\82Ñ\82аÑ\85Ó\80оÑ\8cÑ\82Ñ\82ина Ð²ÐµÑ\80Ñ\81ийн дихкар къайладаккха",
        "revdelete-log": "Бахьна:",
        "revdelete-submit": "Кхочушде {{PLURAL:$1|1=къастина версин|къастина версийн}}",
        "revdelete-success": "'''Версеш гуш хилар кхиамца хийцина.'''",
        "revertmerge": "Йекъа",
        "mergelogpagetext": "Лахахь гойту тӀеххьара вовшахтоьхна агӀонийн могӀам.",
        "history-title": "$1 — хийцаман истори",
-       "difference-title": "$1 â\80\94 Ð\92еÑ\80Ñ\81еÑ\88ан башхалла",
+       "difference-title": "$1 â\80\94 Ð\92еÑ\80Ñ\81ийн башхалла",
        "difference-title-multipage": "АгӀонийн башхалла «$1» а «$2» а",
        "difference-multipage": "(АгӀонийн башхалла)",
        "lineno": "МогӀа $1:",
        "searchprofile-advanced-tooltip": "Лаха дехарца хlокху ана цlерашкахь",
        "search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешнаш}})",
        "search-result-category-size": "$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).",
-       "search-result-score": "Релевант: $1%.",
        "search-redirect": "(дlасахьажийна $1)",
        "search-section": "(дакъа $1)",
        "search-file-match": "(файлан чулацаме тера хилар)",
        "uploadwarning": "Дlахьедар",
        "uploadwarning-text": "Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.",
        "savefile": "ДӀаязе йе файл",
-       "uploadedimage": "чуяьккхина «[[$1]]»",
-       "overwroteimage": "Чуяьккхина файлан керла верси «[[$1]]»",
        "uploaddisabled": "Чуяккхар магийна дац",
        "copyuploaddisabled": "URL тӀера чуяккхар дӀадайина ду.",
        "uploaddisabledtext": "Файлаш чуяхар дӀадайина ду.",
        "nolicense": "Яц",
        "licenses-edit": "Лицензин параметраш хийца",
        "license-nopreview": "(Хьалха муха ю хьажа цало)",
+       "upload_source_url": "(ахьа хаьржина нийса, массо тӀекхочу интернет-адрес)",
        "upload_source_file": "(файл хьан компьютер чохь ю)",
        "listfiles-delete": "дӀаяккха",
        "listfiles-summary": "Лахахь гойтуш ю ерриг файлаш.\nДекъашхо къастичи, цун керла файлаш гойту.",
        "import-token-mismatch": "Сеансан хаамаш дӀадайна. Дехар до, юху гӀорта.",
        "import-invalid-interwiki": "Билгалйина вики чура импорт ян йиш яц.",
        "import-error-edit": "«$1» агӀо хьуна таян цамагор бахьнехь и импорт цайина.",
+       "import-error-create": "«$1» агӀо хьуна кхолла цамагор бахьнехь и импорт цайина.",
+       "import-error-interwiki": "«$1» агӀо импорт ца йина, цуна цӀе арахьара хьажоргашна (юкъаравикешна) кечйина хилар бахьнехь.",
        "import-error-special": "«$1» агӀо импорт йина яц, и къастина цӀерийн меттигийн юкъайогӀуш хиларна.",
        "import-error-invalid": "«$1» агӀо импорт цайина, оцунна импорт еш йолу цӀе хӀокху вики чохь ца магийна хилар бахьнехь.",
        "importlogpage": "Импортан тептар",
        "logentry-rights-rights": "$1 {{GENDER:$2|хийцина}} $3 бакъо $4 → $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|вара|яра}} автоматически {{GENDER:$2|сихьа ваьлла|сихьа яьлла}} $4 $5 чу",
+       "logentry-upload-revert": "$1 {{GENDER:$2|чуяьккхина}} $3",
        "rightsnone": "(яц)",
        "feedback-bugornote": "Хьайн техникин халонах лаьцна яздан хӀума делахь, дехар до, [$1 хаам бе тхоьга].\nДацахь хьан йиш ю хӀокху атта кепаца «[$3 $2]» агӀонг къамел тӀетоха хьан декъашхочун цӀарца, кхин лелош йолу браузер билгал еш.",
        "feedback-subject": "Къамел:",
        "action-pagelang": "агӀона мотт хийца",
        "log-name-pagelang": "Мотт хийцаран тептар",
        "log-description-pagelang": "ХӀара агӀонашкахь мотт хийцаран тептар ду.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|хийцина}} агӀона мотт $3 $4 → $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|хийцина}} агӀона мотт $3 $4 → $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (латина)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''дӀаяйина''')"
 }
index db28279..284f7c4 100644 (file)
        "searchprofile-advanced-tooltip": "گەڕان لەناو بۆشایی‌ناوە دڵخوازەکان",
        "search-result-size": "$1 ({{PLURAL:$2|یەک وشە|$2 وشە}})",
        "search-result-category-size": "{{PLURAL:$1|١ ئەندام|$1 ئەندام}} ({{PLURAL:$2|١ ژێرپۆل|$2 ژێرپۆل}}, {{PLURAL:$3|١ پەڕگە|$3 پەڕگە}})",
-       "search-result-score": "پەیوەندی: $1%",
        "search-redirect": "(ڕەوانەکەر $1)",
        "search-section": "(بەشی $1)",
        "search-suggest": "ئایا مەبەستت ئەمە بوو: $1",
        "file-deleted-duplicate": "ئەم پەڕگەیە ڕێک وەک ئەم پەڕگە ([[:$1]]) دەچێت کە لەم دواییانەدا سڕاوەتەوە.\nپێش دەست‌پێ‌کردنی دیسان بارکردنەوەی، تکایە چاو لە مێژووی سڕینەوەی ئەو پەڕگە بکە.",
        "uploadwarning": "ئاگادارییەکانی بارکردن",
        "savefile": "پەڕگە پاشەکەوت بکە",
-       "uploadedimage": "«[[$1]]»ی بارکرد",
-       "overwroteimage": "وەشانێکی نوێی «[[$1]]» بار کرد",
        "uploaddisabled": "بارکردن قەدەخە کراوە",
        "uploaddisabledtext": "بارکردنی پەڕگەکان لە کار خستراوە.",
        "php-uploaddisabledtext": "بارکردنی پەڕگەکان لە PHPدا لە کار خستراوە.\nتکایە چاو لە هەڵبژاردەکانی بارکردنی_پەڕگەکان بکە.",
        "license-nopreview": "(پێشبینین ئامادەی کەڵک وەرگرتن نییە)",
        "upload_source_url": " (URLـی بەکار، بۆ دەست‌پێگەیشتنی  گشتی)",
        "upload_source_file": " (پەڕگەیەک لەسەر کۆمپیوتەرەکەت)",
+       "listfiles-delete": "بیسڕەوە",
        "listfiles-summary": "ئەم پەڕە تایبەتە ھەموو پەڕگە بارکراوەکان نیشان دەدات.",
        "listfiles_search_for": "بگەڕێ بۆ ناوی میدیای:",
        "imgfile": "پەڕگە",
        "watchlist-details": "{{PLURAL:$1|$1 پەڕە|$1 پەڕە}} لە لیستی چاودێریەکەتدایە، بێجگە پەڕەکانی لێدوان.",
        "wlheader-enotif": "ئاگاداری بە ئیمەیل چالاکە.",
        "wlheader-showupdated": "‏ئەو پەڕانە کە لە پاش دواین سەردانت دەستکاری کراون بە '''ئەستوور''' نیشان دراون",
+       "wlnote": "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین '''$1''' گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}}دا ھەتا $4 لە $3.",
        "wlshowlast": "دوایین $1 کاتژمێر $2 ڕۆژی $3 نیشان بدە",
        "watchlist-options": "ھەڵبژاردەکانی لیستی چاودێری",
        "watching": "چاودێری...",
index 8eb7191..6586a3d 100644 (file)
        "searchprofile-advanced-tooltip": "Nastavit jmenné prostory, ve kterých se má hledat",
        "search-result-size": "$1 ({{PLURAL:$2|1 slovo|$2 slova|$2 slov}})",
        "search-result-category-size": "{{PLURAL:$1|1 položka|$1 položky|$1 položek}} ({{PLURAL:$2|1 podkategorie|$2 podkategorie|$2 podkategorií}}, {{PLURAL:$3|1 soubor|$3 soubory|$3 souborů}})",
-       "search-result-score": "Relevantnost: $1 %",
        "search-redirect": "(přesměrování $1)",
        "search-section": "(část $1)",
        "search-file-match": "(odpovídá obsahu souboru)",
        "uploadwarning": "Upozornění k načítání",
        "uploadwarning-text": "Prosíme, upravte popis souboru níže a zkuste to znovu.",
        "savefile": "Uložit soubor",
-       "uploadedimage": "načítá „[[$1]]“",
-       "overwroteimage": "načtena nová verze \"[[$1]]\"",
        "uploaddisabled": "Načítání souborů vypnuto.",
        "copyuploaddisabled": "Načítání souborů prostřednictvím URL je vypnuto.",
        "uploaddisabledtext": "Načítání souborů je vypnuto.",
        "nolicense": "Bez udání licence",
        "licenses-edit": "Editovat nabídku licencí",
        "license-nopreview": "(Náhled není dostupný)",
-       "upload_source_url": " (platné, veřejně přístupné URL)",
-       "upload_source_file": " (soubor ve vašem počítači)",
+       "upload_source_url": "(vybraný soubor z platného, veřejně přístupného URL)",
+       "upload_source_file": "(vybraný soubor z vašeho počítače)",
        "listfiles-delete": "smazat",
        "listfiles-summary": "Tato speciální stránka zobrazuje všechny načtené soubory.",
        "listfiles_search_for": "Hledat soubor podle názvu:",
index b505ce4..32a907f 100644 (file)
@@ -46,7 +46,8 @@
                        "Søren Løvborg",
                        "Tjernobyl",
                        "Urhixidur",
-                       "아라"
+                       "아라",
+                       "Thomsen"
                ]
        },
        "tog-underline": "Understreg henvisninger:",
        "hidetoc": "skjul",
        "collapsible-collapse": "Fold sammen",
        "collapsible-expand": "Fold ud",
+       "confirmable-confirm": "Er {{GENDER:$1|du}} sikker?",
        "thisisdeleted": "Se eller gendan $1?",
        "viewdeleted": "Vis $1?",
        "restorelink": "{{PLURAL:$1|en slettet ændring|$1 slettede ændringer}}",
        "edit-gone-missing": "Kunne ikke opdatere siden.\nDen ser du til at være slettet.",
        "edit-conflict": "Redigeringskonflikt.",
        "edit-no-change": "Din ændring ignoreredes, fordi der ikke var ændring af teksten.",
+       "postedit-confirmation-created": "Siden er blevet oprettet.",
        "postedit-confirmation-saved": "Din redigering er gemt.",
        "edit-already-exists": "En ny side kunne ikke oprettes, fordi den allerede findes.",
        "defaultmessagetext": "Standardtekst",
        "searchprofile-advanced-tooltip": "Søg i bestemte navnerum",
        "search-result-size": "$1 ({{PLURAL:$2|et ord|$2 ord}})",
        "search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
-       "search-result-score": "Relevans: $1%",
        "search-redirect": "(omdirigering $1)",
        "search-section": "(afsnit $1)",
        "search-suggest": "Mente du: $1",
        "uploadwarning": "Advarsel",
        "uploadwarning-text": "Vær venlig at ændre filbeskrivelsen nedenfor og prøv igen.",
        "savefile": "Gem fil",
-       "uploadedimage": "lagde \"[[$1]]\" op",
-       "overwroteimage": "lagde en ny version af \"[[$1]]\" op",
        "uploaddisabled": "Desværre er funktionen til at lægge filer op afbrudt på denne server.",
        "copyuploaddisabled": "Upload via URL er slået fra.",
        "uploaddisabledtext": "Oplægning af filer er deaktiveret.",
        "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'''.",
-       "wlnote2": "Nedenfor ses ændringerne i {{PLURAL:$1|den sidste time|de sidste <strong>$1</strong> timer}} op til den $2 kl. $3.",
+       "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.",
        "wlshowlast": "Vis de seneste $1 timer $2 dage $3",
        "watchlist-options": "Indstillinger for overvågningslisten",
        "watching": "Tilføjer overvågning …",
index e99fb4d..64db0ad 100644 (file)
        "hidetoc": "Verbergen",
        "collapsible-collapse": "Einklappen",
        "collapsible-expand": "Ausklappen",
+       "confirmable-confirm": "Bist {{GENDER:$1|du}} sicher?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nein",
        "thisisdeleted": "$1 ansehen oder wiederherstellen?",
        "viewdeleted": "$1 anzeigen?",
        "restorelink": "$1 {{PLURAL:$1|gelöschte Version|gelöschte Versionen}}",
        "invalidtitle-knownnamespace": "Ungültiger Titel mit Namensraum „$2“ und Text „$3“",
        "invalidtitle-unknownnamespace": "Ungültiger Titel mit unbekannter Namensraumnummer $1 und Text „$2“",
        "exception-nologin": "Nicht angemeldet",
-       "exception-nologin-text": "Du musst dich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.",
+       "exception-nologin-text": "Du musst dich anmelden, um auf diese Seite oder Aktion zugreifen zu können.",
        "exception-nologin-text-manual": "Du musst dich $1, um auf diese Seite oder Aktion zugreifen zu können.",
        "virus-badscanner": "Fehlerhafte Konfiguration: unbekannter Virenscanner: <em>$1</em>",
        "virus-scanfailed": "Scan fehlgeschlagen (code $1)",
        "parser-template-recursion-depth-warning": "Vorlagenrekursionstiefengrenze überschritten ($1)",
        "language-converter-depth-warning": "Sprachkonvertertiefenlimit überschritten ($1)",
        "node-count-exceeded-category": "Seiten, die die Knotenanzahl überschritten haben",
-       "node-count-exceeded-category-desc": "Eine Kategorie für Seiten, bei denen die Knotenzahl überschritten wurde.",
+       "node-count-exceeded-category-desc": "Die Seite überschreitet die maximale Knotenanzahl.",
        "node-count-exceeded-warning": "Die Seite hat die Knotenpunktanzahl überschritten.",
        "expansion-depth-exceeded-category": "Seiten, die die Expansionstiefe überschritten haben",
-       "expansion-depth-exceeded-category-desc": "Dies ist eine Kategorie für Seiten, bei denen die Expandierungstiefe überschritten wurde.",
+       "expansion-depth-exceeded-category-desc": "Die Seite überschreitet die maximale Expandierungstiefe.",
        "expansion-depth-exceeded-warning": "Die Seite hat die Expansionstiefe überschritten.",
        "parser-unstrip-loop-warning": "Zirkelbezug festgestellt",
        "parser-unstrip-recursion-limit": "Rekursionsgrenze beim Auflösen überschritten ($1)",
        "searchprofile-advanced-tooltip": "Suche in weiteren Namensräumen",
        "search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})",
        "search-result-category-size": "{{PLURAL:$1|1 Seite|$1 Seiten}} ({{PLURAL:$2|1 Unterkategorie|$2 Unterkategorien}}, {{PLURAL:$3|1 Datei|$3 Dateien}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Weiterleitung von „$1“)",
        "search-section": "(Abschnitt $1)",
        "search-file-match": "(treffende Dateiinhalte)",
        "preferences": "Einstellungen",
        "mypreferences": "Einstellungen",
        "prefs-edits": "Anzahl der Bearbeitungen:",
-       "prefsnologintext2": "Du musst dich $1, um Benutzereinstellungen festzulegen.",
+       "prefsnologintext2": "Bitte anmelden, um deine Benutzereinstellungen festzulegen.",
        "prefs-skin": "Benutzeroberfläche",
        "skin-preview": "Vorschau",
        "datedefault": "Standard",
        "uploadwarning": "Warnung",
        "uploadwarning-text": "Bitte ändere unten die Dateibeschreibung und versuche es erneut.",
        "savefile": "Datei speichern",
-       "uploadedimage": "lud „[[$1]]“ hoch",
-       "overwroteimage": "lud eine neue Version von „[[$1]]“ hoch",
        "uploaddisabled": "Hochladen deaktiviert",
        "copyuploaddisabled": "Das Hochladen von URLs ist deaktiviert",
        "uploaddisabledtext": "Das Hochladen von Dateien ist deaktiviert.",
        "trackingcategories-desc": "Kategorieeinbindungskriterien",
        "noindex-category-desc": "Die Seite wird nicht von Bots indexiert, da sie das magische Wort <code><nowiki>__NOINDEX__</nowiki></code> enthält und sich in einem Namensraum befindet, wo dieses Flag erlaubt ist.",
        "index-category-desc": "Die Seite enthält ein <code><nowiki>__INDEX__</nowiki></code> und befindet sich in einem Namensraum, in dem dieses Flag nicht erlaubt ist und wird daher von Bots ausnahmsweise indexiert.",
-       "post-expand-template-inclusion-category-desc": "Nach dem Expandieren aller Vorlagen ist die Seitengröße größer als <code>$wgMaxArticleSize</code>, sodass einige Vorlagen nicht expandiert werden.",
-       "post-expand-template-argument-category-desc": "Nach dem Expandieren eines Vorlagenargumentes (etwas in dreifach geschweiften Klammern, z.&nbsp;B. <code>{{{Foo}}})</code> ist die Seite größer als <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Zu viele aufwändige Parserfunktionen (wie <code>#ifexist</code>) sind in der Seite eingebunden. Siehe das [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Benutzerhandbuch].",
-       "broken-file-category-desc": "Kategorie, die hinzugefügt wird, falls die Seite einen defekten Dateilink enthält (einen Link zu einer eingebetteten Datei, die nicht vorhanden ist).",
-       "hidden-category-category-desc": "Dies ist eine Kategorie mit <code><nowiki>__HIDDENCAT__</nowiki></code>, die standardmäßig nicht auf Seiten im Kategorienbereich angezeigt wird.",
+       "post-expand-template-inclusion-category-desc": "Die Seitengröße ist nach dem Expandieren aller Vorlagen größer als <code>$wgMaxArticleSize</code>, so dass einige Vorlagen nicht expandiert wurden.",
+       "post-expand-template-argument-category-desc": "Die Seite ist nach dem Expandieren eines Vorlagenargumentes größer als <code>$wgMaxArticleSize</code> (etwas in dreifachen Klammern, wie <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "Die Seite verwendet zu viele aufwändige Parserfunktionen (wie <code>#ifexist</code>). Siehe das [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Benutzerhandbuch].",
+       "broken-file-category-desc": "Die Seite enthält einen defekten Dateilink (einen Link zu einer eingebetteten Datei, die nicht vorhanden ist).",
+       "hidden-category-category-desc": "Die Kategorie enthält <code><nowiki>__HIDDENCAT__</nowiki></code> in ihrem Seiteninhalt, was verhindert, dass sie standardmäßig auf Seiten im Kategorielinkkasten angezeigt wird.",
        "trackingcategories-nodesc": "Keine Beschreibung verfügbar.",
        "trackingcategories-disabled": "Kategorie ist deaktiviert",
        "mailnologin": "Fehler beim E-Mail-Versand",
        "mywatchlist": "Beobachtungsliste",
        "watchlistfor2": "Von $1 $2",
        "nowatchlist": "Es befinden sich keine Einträge auf deiner Beobachtungsliste.",
-       "watchlistanontext": "Du musst dich $1, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
+       "watchlistanontext": "Du musst dich anmelden, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
        "watchnologin": "Du bist nicht angemeldet",
        "addwatch": "Zur Beobachtungsliste hinzufügen",
        "addedwatchtext": "Die Seite „[[:$1]]“ wurde zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.\nSpätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werden dort gelistet.",
        "logentry-rights-rights": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3 von $4 zu $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3",
        "logentry-rights-autopromote": "$1 wurde automatisch von $4 zu $5 {{GENDER:$2|zugeordnet}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|lud}} $3 hoch",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|lud}} eine neue Version von $3 hoch",
+       "logentry-upload-revert": "$1 {{GENDER:$2|lud}} $3 hoch",
        "rightsnone": "(–)",
        "feedback-bugornote": "Sofern du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].\nAnderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.",
        "feedback-subject": "Betreff:",
        "action-pagelang": "die Seitensprache zu ändern",
        "log-name-pagelang": "Sprachenänderungs-Logbuch",
        "log-description-pagelang": "Dies ist ein Logbuch mit Änderungen an Seitensprachen.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Seitensprache für $3 von $4 nach $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Seitensprache für $3 von $4 nach $5.",
+       "default-skin-not-found": "Hoppla! Die Standard-Benutzeroberfläche für dein Wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, ist nicht verfügbar.\n\nDeine Installation scheint die folgenden Benutzeroberflächen zu enthalten. Siehe das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch] für Informationen zur Aktivierung dieser und Auswahl des Standards.\n\n$2\n\n; Falls du gerade MediaWiki installiert hast:\n: Du hast vermutlich von Git oder direkt vom Quellcode mithilfe einer anderen Methode installiert. Dies wird erwartet.\n:* Versuche, einige Benutzeroberflächen aus dem [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Benutzeroberflächenverzeichnis] zu installieren.\n:* Lade den [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] herunter, der einige Benutzeroberflächen und Erweiterungen enthält. Du kannst das Verzeichnis <code>skins/</code> kopieren und einfügen.\n: Dies sollte nicht dein Git-Repositorium beeinträchtigen, falls du ein MediaWiki-Entwickler bist.\n\n; Falls du gerade MediaWiki aktualisiert hast:\n: MediaWiki 1.24 und neuere Versionen aktivieren installierte Benutzeroberflächen nicht mehr automatisch (siehe das [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Benutzerhandbuch]). Du kannst die folgenden Zeilen in die Datei <code>LocalSettings.php</code> einfügen, um alle derzeit installierten Benutzeroberflächen zu aktivieren:\n\n<pre>$3</pre>\n\n; Falls du gerade <code>LocalSettings.php</code> geändert hast:\n: Überprüfe die Namen der Benutzeroberflächen auf Tippfehler.",
+       "default-skin-not-found-no-skins": "Hoppla! Die Standard-Benutzeroberfläche für dein Wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, ist nicht verfügbar.\n\nDu hast keine installierten Benutzeroberflächen.\n\n; Falls du gerade MediaWiki installiert hast:\n: Du hast vermutlich von Git oder direkt vom Quellcode mithilfe einer anderen Methode installiert. Dies wird erwartet.\n:* Versuche, einige Benutzeroberflächen aus dem [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Benutzeroberflächenverzeichnis] zu installieren.\n:* Lade den [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] herunter, das mehrere Benutzeroberflächen und Erweiterungen enthält. Du kannst das Verzeichnis <code>skins/</code> kopieren und einfügen.\n: Dies sollte nicht dein Git-Repositorium beeinträchtigen, falls du ein MediaWiki-Entwickler bist. Siehe das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch] für Informationen zur Aktivierung von Benutzeroberflächen und Auswahl des Standards.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiviert)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''deaktiviert''')"
 }
index 0ed4a54..7b0a6ad 100644 (file)
        "editwarning-warning": "Wexto ke şıma na pele ra veciyê, beno ke vurnayışê şıma vindi bê.\nEke şıma kewtê hesabê xo, şıma şenê nê balantışi qısmê \"{{int:prefs-editing}}\"i de tercihanê xo ra bıvındarnê.",
        "editpage-notsupportedcontentformat-title": "Formatê zerreki qebul nêbeno",
        "content-model-wikitext": "wikimetin",
-       "content-model-text": "duz metin",
+       "content-model-text": "metno pan",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "expensive-parserfunction-warning": "Hişyari: No pel de fonksiyoni zaf esti.\n\nNo $2 daweti ra gani tay bıbo, na hel {{PLURAL:$1|1 dawet esto|$1 dawet esto}}.",
        "searchprofile-advanced-tooltip": "qe cayê nimeyî bigêre",
        "search-result-size": "$1 ({{PLURAL:$2|1 çekuyo|$2 çekuyê}})",
        "search-result-category-size": "{{PLURAL:$1|1 eza|$1 ezayan}} ({{PLURAL:$2|1 kategoriyê bini|$2 kategirayanê binan}}, {{PLURAL:$3|1 dosya|$3 dosyayan}})",
-       "search-result-score": "Eleqa: $1%",
        "search-redirect": "($1 ra ardış)",
        "search-section": "(qısmê $1)",
        "search-file-match": "(zerreyê dosya yewbini gêno)",
        "uploadwarning": "Îkazê bar kerdişî",
        "uploadwarning-text": "Bînê de deskripyonê dosyayî bivurne u reyna qeyd bike.",
        "savefile": "Dosya qeyd ke",
-       "uploadedimage": "\"[[$1]]\" bar bi",
-       "overwroteimage": "yew versiyonê \"$1\" newe bar bi",
        "uploaddisabled": "bar kerdişî iptal biyo",
        "copyuploaddisabled": "URL bar kerdiş kefiliyeyo.",
        "uploaddisabledtext": "Barkerdışê dosya dewre ra veta.",
        "watchlist-details": "{{PLURAL:$1|$1 pele|$1 peleyan}} listeyê seyr-kerdışi şıma dı, peleyanê vurnayışi dahil niyo.",
        "wlheader-enotif": "E-mail xeber dayiş abiyo.",
        "wlheader-showupdated": "ziyaretê şıma ye peyini de vuryayişê peli pê '''nuşteyo qalıni''' mocyayo.",
-       "wlnote2": "Cêr vurnayışê {{PLURAL:$1|saeta|<strong>$1</strong> saetanê}} peyênan estê, $2 ra be hetan $3.",
+       "wlnote": "$3 seate u bahde $4 deqa dıma {{PLURAL:$2|ju seate dı|'''$2''' ju seate dı}} {{PLURAL:$1|vurnayışe peyeni|vurnayışe '''$1''' peyeni}} cêrdeyê",
        "wlshowlast": "Peyni de vurnayışan ra  $1 seata u $2 roca $3 bımocnê",
        "watchlist-options": "Tercihê liste da seyri",
        "watching": "Seyr ke...",
index c34e9b3..2cebf9a 100644 (file)
@@ -16,7 +16,8 @@
                        "Shirayuki",
                        "Tlustulimu",
                        "Tlustulimu Nepl1",
-                       "아라"
+                       "아라",
+                       "TMg"
                ]
        },
        "tog-underline": "Wótkaze pódšmarnuś:",
@@ -85,7 +86,7 @@
        "april": "apryl",
        "may_long": "maj",
        "june": "junij",
-       "july": " julij",
+       "july": "julij",
        "august": "awgust",
        "september": "september",
        "october": "oktober",
        "talkpagelinktext": "diskusija",
        "specialpage": "Specialny bok",
        "personaltools": "Wósobinske pomocne srědki",
-       "postcomment": "Nowy wótrězk",
        "articlepage": "Nastawk",
        "talk": "Diskusija",
        "views": "Naglědy",
        "externaldberror": "Abo jo wustupiła eksterna zmólka awtentifikacije datoweje banki, abo njesmějoš swójo eksterne wužywarske konto aktualizěrowaś.",
        "login": "Pśizjawiś se",
        "nav-login-createaccount": "Pśizjawiś se/Konto załožyś",
-       "loginprompt": "Za pśizjawjenje do boka {{SITENAME}} muse cookije dowólone byś.",
        "userlogin": "Pśizjawiś se/Konto załožyś",
        "userloginnocreate": "Pśizjawiś",
        "logout": "wótzjawiś se",
        "searchprofile-advanced-tooltip": "W swójskich mjenjowych rumach pytaś",
        "search-result-size": "$1 ({{PLURAL:$2|1 słowow|$2 słowje|$2 słowa|$2 słowow}})",
        "search-result-category-size": "{{PLURAL:$1|1 cłonk|$1 cłonka|$1 cłonki|$1 cłonkow}} ({{PLURAL:$2|1 pódkategorija|$2 pódkategoriji|$2 pódkategorije|$2 pódkategorijow}}, {{PLURAL:$3|1 dataja|$3 dataji|$3 dataje|$3 datajow}})",
-       "search-result-score": "Relewanca: $1 %",
        "search-redirect": "(pśesměrowanje $1)",
        "search-section": "(sekcija $1)",
        "search-file-match": "(wótpowědujo datajowemu wopśimjeśeju)",
        "uploadwarning": "Warnowanje",
        "uploadwarning-text": "Pšosym změń slědujuce datajowe wopisanje a wopytaj hyšći raz.",
        "savefile": "Dataju składowaś",
-       "uploadedimage": "jo  \"[[$1]]\" nagrał.",
-       "overwroteimage": "Jo nowu wersiju \"[[$1]]\" nagrał.",
        "uploaddisabled": "Nagrawanje jo se znjemóžniło.",
        "copyuploaddisabled": "Nagraśe pśez URL znjemóžnjone.",
        "uploaddisabledtext": "Nagraśa datajow su znjemóžnjone.",
        "watchlist-details": "Wobglědujoš {{PLURAL:$1|$1 bok|$1 boka|$1 boki|$1 bokow}}, bźez diskusijnych bokow.",
        "wlheader-enotif": "E-mailowa zdźěleńska słužba jo zmóžnjona.",
        "wlheader-showupdated": "Boki, kótarež su wót twójogo slědnego woglěda se změnili, pokazuju se '''tucnje'''.",
-       "wlnote2": "Slěduju změny {{PLURAL:$1|zachadneje góźiny|zachadneju <strong>$1</strong> góźinowu|zachadnych <strong>$1</strong> góźinow}} Staw: $2, $3.",
+       "wlnote": "{{PLURAL:$1|Slědujo slědna změna|slědujotej '''$1''' slědnej změnje|slěduju slědne '''$1''' změny}} {{PLURAL:$2|slědneje góźiny|slědneju '''$2''' góźinowu|slědnych '''$2''' góźinow}}, staw: $3, $4.",
        "wlshowlast": "Pokaž změny slědnych $1 góźinow, $2 dnjow abo $3 (w slědnych 30 dnjach).",
        "watchlist-options": "Opcije wobglědowańki",
        "watching": "Wobglědowaś …",
        "duplicate-defaultsort": "Glědaj: Standardny sortěrowański kluc (DEFAULT SORT KEY) \"$2\" pśepišo pjerwjej wužyty kluc \"$1\".",
        "version": "Wersija",
        "version-extensions": "Instalowane rozšyrjenja",
+       "version-skins": "Suknje",
        "version-specialpages": "Specialne boki",
        "version-parserhooks": "Parserowe kokule",
        "version-variables": "Wariable",
        "version-antispam": "Šćit pśeśiwo spamoju",
-       "version-skins": "Suknje",
        "version-other": "Druge",
        "version-mediahandlers": "Pśeźěłaki medijow",
        "version-hooks": "Kokule",
index 6641fbd..5e2dd46 100644 (file)
@@ -22,6 +22,7 @@
        "tog-watchdefault": "Zûnta al pàgini e i file mudifichê int i tgnû 'd ôc specêl.",
        "tog-watchmoves": "Zûnta al pàgini e i file spustê int i tgnû 'd ôc specêl.",
        "tog-watchdeletion": "Zûnta al pàgini e i file scanşlê int i tgnû 'd ôc specêl.",
+       "tog-watchrollback": "Zûta al pàgini in dóv' ó fât al ritōren a la pàgina 'd préma a i tgnû 'd ôc specêl",
        "tog-minordefault": "Sògna ògni mudéfica cme céca (sōl cme pre-stabilî)",
        "tog-previewontop": "Fà vèder còl ch' ò fât sōver la caşèla ed mudéfica e mìa sòta.",
        "tog-previewonfirst": "Fà vèder còl ch' ò fât almēno 'na vôlta préma 'd salvêr",
        "preview": "Guêrda préma",
        "showpreview": "Guêrda préma 'd salvêr",
        "showdiff": "Guêrda i cambiamèint",
+       "blankarticle": "<strong>Atèinti:</strong>la pàgina che t'é drē fêr la gh'à gnînto dèinter. S' ét tōren a schisêr in sém a \"{{int:savearticle}}\", la pàgina la srà fât sèinsa gnînto dèinter.",
        "anoneditwarning": "'''Atensiòun:''' Ingrès mìa fât. Al tó indirés IP al srà sgnê int la stòria ed cla pàgina chè.",
        "anonpreviewwarning": "\"An n'é mìa stê fât l'ingrès. Mèinter es sêlva la pàgina, l'indirés IP al srà sgnê int la stòria 'd la pàgina.\"",
        "missingsummary": "'''Atensiòun:''' an n'é mìa stê precişê al mutîv de sté mudéfica. S'es tōrna a clichêr insém a \"{{int:savearticle}}\" la mudéfica la gnirà salvêda cun al mutîv vōd.",
        "rev-deleted-event": "(asiòun dal log armôsa)",
        "rev-deleted-user-contribs": "(nòm utèint o indirés IP armôs - mudéfica lughêda da la stòria)",
        "rev-deleted-text-permission": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. \nConsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
+       "rev-suppressed-text-permission": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/ suppress |page={{ FULLPAGENAMEE }}}} log dal canşladûri] per nōv particulêr.",
        "rev-deleted-text-unhide": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
        "rev-suppressed-text-unhide": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
        "rev-deleted-text-view": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. J aministradōr a pōlen incòra guardêrla; \nconsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
        "searchprofile-advanced-tooltip": "Sērca int i spâsi di nòm fât só mzûra.",
        "search-result-size": "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
        "search-result-category-size": "{{PLURAL:$1|1 utèint|$1 utèint}} ({{PLURAL:$2|1 sotcategoréia|$2 sotcategoréi}},{{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Impurtânsa: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(sesiòun $1)",
        "search-file-match": "(relasiòun dèinter al file)",
        "powersearch-togglenone": "Nisûn",
        "powersearch-remember": "Arcôrda la siēlta per êtri sèirchi ch'é vō fêr",
        "search-external": "Sèirca fâta fōra",
+       "searchdisabled": "La sèirca intêrna ed {{SITENAME}} l'a funsiòuna mìa; int al mèinter a s' pōl pruvêr a druvêr un mutōr ed sèirca d'ed fōra cme Google. (A gh' è da nutêr però che còl che gh'é dèinter in {{SITENAME}} che es câten in chi mutōr a prém èser mìa arnuvê.)",
+       "search-error": "É sucès un erōr mèinter a's fêva la sèirca:$1",
        "preferences": "Preferèinsa",
        "mypreferences": "Preferèinsi",
        "prefs-edits": "Mudéfichi fâti:",
+       "prefsnologintext2": "Es prèiga ed $1 per impustêr al preferèinsi 'd l'utèint.",
        "prefs-skin": "Aspèt grâfich (skin)",
        "skin-preview": "Guêrda préma",
        "datedefault": "Nisóna preferèinsa",
+       "prefs-labs": "Funsiòun adâti in sperimèint",
+       "prefs-user-pages": "Pàgini utèint",
+       "prefs-personal": "Prufîl utèint",
+       "prefs-rc": "Ûltmi mudéfichi",
+       "prefs-watchlist": "Tgnîr sòt ôc",
+       "prefs-watchlist-days": "Nómer ed dé da fêr vèder int i tgnû 'd ôc specêl:",
+       "prefs-watchlist-days-max": "Mâsim $1 {{PLURAL:$1|dé}}",
        "saveprefs": "Sêlva",
        "prefs-editing": "Caşèla 'd mudéfica",
        "rows": "Rîghi",
        "upload": "Cârga un 'file'",
        "uploadlogpage": "Fil carghê",
        "filedesc": "Sûnt.",
-       "uploadedimage": "l'à carghê \"[[$1]]\"",
        "license": "Licèinsa:",
        "license-header": "Licèinsa",
        "nolicense": "Nisóna licèinsa sgnêda",
index d506ad2..4352f36 100644 (file)
        "hidetoc": "hide",
        "collapsible-collapse": "Collapse",
        "collapsible-expand": "Expand",
+       "confirmable-confirm": "Are {{GENDER:$1|you}} sure?",
+       "confirmable-yes": "Yes",
+       "confirmable-no": "No",
        "thisisdeleted": "View or restore $1?",
        "viewdeleted": "View $1?",
        "restorelink": "{{PLURAL:$1|one deleted edit|$1 deleted edits}}",
        "invalidtitle-knownnamespace": "Invalid title with namespace \"$2\" and text \"$3\"",
        "invalidtitle-unknownnamespace": "Invalid title with unknown namespace number $1 and text \"$2\"",
        "exception-nologin": "Not logged in",
-       "exception-nologin-text": "Please [[Special:Userlogin|log in]] to be able to access this page or action.",
+       "exception-nologin-text": "Please log in to be able to access this page or action.",
        "exception-nologin-text-manual": "Please $1 to be able to access this page or action.",
        "virus-badscanner": "Bad configuration: Unknown virus scanner: <em>$1</em>",
        "virus-scanfailed": "scan failed (code $1)",
        "parser-template-loop-warning": "Template loop detected: [[$1]]",
        "parser-template-recursion-depth-warning": "Template recursion depth limit exceeded ($1)",
        "language-converter-depth-warning": "Language converter depth limit exceeded ($1)",
-       "node-count-exceeded-category": "Pages where node-count is exceeded",
-       "node-count-exceeded-category-desc": "A category for pages where the node-count is exceeded.",
-       "node-count-exceeded-warning": "Page exceeded the node-count",
+       "node-count-exceeded-category": "Pages where node count is exceeded",
+       "node-count-exceeded-category-desc": "The page exceeds the maximum node count.",
+       "node-count-exceeded-warning": "Page exceeded the node count",
        "expansion-depth-exceeded-category": "Pages where expansion depth is exceeded",
-       "expansion-depth-exceeded-category-desc": "This is a category for pages where the expansion depth is exceeded.",
+       "expansion-depth-exceeded-category-desc": "The page exceeds the maximum expansion depth.",
        "expansion-depth-exceeded-warning": "Page exceeded the expansion depth",
        "parser-unstrip-loop-warning": "Unstrip loop detected",
        "parser-unstrip-recursion-limit": "Unstrip recursion limit exceeded ($1)",
        "searchprofile-advanced-tooltip": "Search in custom namespaces",
        "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 words}})",
        "search-result-category-size": "{{PLURAL:$1|1 member|$1 members}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Relevance: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(section $1)",
        "search-file-match": "(matches file content)",
        "preferences-summary": "",
        "mypreferences": "Preferences",
        "prefs-edits": "Number of edits:",
-       "prefsnologintext2": "Please $1 to change your preferences.",
+       "prefsnologintext2": "Please login to change your preferences.",
        "prefs-skin": "Skin",
        "skin-preview": "Preview",
        "datedefault": "No preference",
        "trackingcategories-desc": "Category inclusion criteria",
        "noindex-category-desc": "The page is not indexed by robots because it has the magic word <code><nowiki>__NOINDEX__</nowiki></code> on it and is in a namespace where that flag is allowed.",
        "index-category-desc": "The page has a <code><nowiki>__INDEX__</nowiki></code> on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn't be.",
-       "post-expand-template-inclusion-category-desc": "After expanding all the templates, the page size is bigger than <code>$wgMaxArticleSize</code>, so some templates weren't expanded.",
-       "post-expand-template-argument-category-desc": "After expanding a template argument (something in triple braces, like <code>{{{Foo}}}</code>), the page is bigger than <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Too many expensive parser functions (like <code>#ifexist</code>) included on a page. See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Category added if the page contains a broken file link (a link to embed a file when the file does not exist).",
-       "hidden-category-category-desc": "This is a category with <code><nowiki>__HIDDENCAT__</nowiki></code> on it, which prevents it from showing up in the category links box on pages, by default.",
+       "post-expand-template-inclusion-category-desc": "The page size is bigger than <code>$wgMaxArticleSize</code> after expanding all the templates, so some templates were not expanded.",
+       "post-expand-template-argument-category-desc": "The page is bigger than <code>$wgMaxArticleSize</code> after expanding a template argument (something in triple braces, like <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "The page uses too many expensive parser functions (like <code>#ifexist</code>). See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "The page contains a broken file link (a link to embed a file when the file does not exist).",
+       "hidden-category-category-desc": "The category contains <code><nowiki>__HIDDENCAT__</nowiki></code> in its page content, which prevents it from showing up in the category links box on pages by default.",
        "trackingcategories-nodesc": "No description available.",
        "trackingcategories-disabled": "Category is disabled",
        "mailnologin": "No send address",
        "mywatchlist": "Watchlist",
        "watchlistfor2": "For $1 $2",
        "nowatchlist": "You have no items on your watchlist.",
-       "watchlistanontext": "Please $1 to view or edit items on your watchlist.",
+       "watchlistanontext": "Please login to view or edit items on your watchlist.",
        "watchnologin": "Not logged in",
        "addwatch": "Add to watchlist",
        "addedwatchtext": "The page \"[[:$1]]\" has been added to your [[Special:Watchlist|watchlist]].\nFuture changes to this page and its associated talk page will be listed there.",
        "version-software": "Installed software",
        "version-software-product": "Product",
        "version-software-version": "Version",
-       "version-db-mysql-url": "http://www.mysql.com/",
-       "version-db-mariadb-url": "http://mariadb.org/",
+       "version-db-mysql-url": "https://www.mysql.com/",
+       "version-db-mariadb-url": "https://mariadb.org/",
        "version-db-percona-url": "http://www.percona.com/software/percona-server",
        "version-db-postgres-url": "http://www.postgresql.org/",
        "version-db-oracle-url": "http://www.oracle.com/database/",
-       "version-db-sqlite-url": "http://www.sqlite.org/",
-       "version-db-mssql-url": "http://www.microsoft.com/sql/",
+       "version-db-sqlite-url": "https://www.sqlite.org/",
+       "version-db-mssql-url": "https://www.microsoft.com/sql/",
        "version-entrypoints": "Entry point URLs",
        "version-entrypoints-header-entrypoint": "Entry point",
        "version-entrypoints-header-url": "URL",
        "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
        "logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|uploaded}} a new version of $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|uploaded}} $3",
        "rightsnone": "(none)",
        "revdelete-logentry": "changed revision visibility of \"[[$1]]\"",
        "logdelete-logentry": "changed event visibility of \"[[$1]]\"",
        "action-pagelang": "change the page language",
        "log-name-pagelang": "Change language log",
        "log-description-pagelang": "This is a log of changes in page languages.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} page language for $3 from $4 to $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} page language for $3 from $4 to $5.",
+       "default-skin-not-found": "Whoops! The default skin for your wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, is not available.\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:\n:* 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; 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-no-skins": "Whoops! The default skin for your wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, is not available.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* 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. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.\n",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enabled)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disabled''')"
 }
index b8e5683..b3fcc26 100644 (file)
        "tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento",
        "tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento",
        "tog-watchdeletion": "Añadir las páginas y archivos que borre a mi lista de seguimiento",
+       "tog-watchrollback": "Añadir las páginas donde realicé una reversión a mi lista de seguimento",
        "tog-minordefault": "Marcar todas las ediciones como menores de manera predeterminada",
        "tog-previewontop": "Mostrar previsualización antes del cuadro de edición",
        "tog-previewonfirst": "Mostrar previsualización en la primera edición",
        "hidetoc": "ocultar",
        "collapsible-collapse": "Contraer",
        "collapsible-expand": "Expandir",
+       "confirmable-confirm": "¿Estás {{GENDER:$1|seguro|segura}}?",
+       "confirmable-yes": "Sí",
+       "confirmable-no": "No",
        "thisisdeleted": "¿Ver o restaurar $1?",
        "viewdeleted": "¿Quieres ver $1?",
        "restorelink": "{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}",
        "searchprofile-advanced-tooltip": "Buscar en espacios de nombres personalizados",
        "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
        "search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 fichero|$3 ficheros}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(redirige desde $1)",
        "search-section": "(sección $1)",
        "search-file-match": "(coincide con el contenido del archivo)",
        "uploadwarning": "Advertencia de subida de archivo",
        "uploadwarning-text": "Por favor, modifique la descripción del archivo abajo indicada e inténtelo de nuevo.",
        "savefile": "Guardar archivo",
-       "uploadedimage": "subió «[[$1]]»",
-       "overwroteimage": "subió una nueva versión de «[[$1]]»",
-       "uploaddisabled": "Subida de archivos deshabilitada",
+       "uploaddisabled": "Se desactivó la carga de archivos.",
        "copyuploaddisabled": "Carga por URL deshabilitada.",
-       "uploaddisabledtext": "No es posible subir archivos.",
+       "uploaddisabledtext": "Se desactivó la carga de archivos.",
        "php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP. Por favor compruebe <code>file_uploads</code> en php.ini.",
        "uploadscripted": "Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.",
        "uploadscriptednamespace": "Este archivo SVG contiene un espacio de nombre no permitido '$1'",
        "blocklist-userblocks": "Ocultar bloqueos de cuenta",
        "blocklist-tempblocks": "Ocultar bloqueos temporales",
        "blocklist-addressblocks": "Ocultar bloqueos de una sola dirección IP",
-       "blocklist-rangeblocks": "Ocultar bloqueos de rango",
+       "blocklist-rangeblocks": "Ocultar bloqueos por intervalo",
        "blocklist-timestamp": "Fecha y hora",
        "blocklist-target": "Destino",
        "blocklist-expiry": "Caduca",
        "logentry-rights-rights": "$1 modificó los grupos a los que pertenece $3: de $4 a $5",
        "logentry-rights-rights-legacy": "$1 modificó los grupos a los que pertenece $3",
        "logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|subió}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|subió}} una nueva versión de $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|subió}} $3",
        "rightsnone": "(ninguno)",
        "feedback-bugornote": "Si estás preparado para describir en detalle un problema técnico, [$1 informa de un bug] por favor.\n\nEn otro caso, puedes usar el siguiente formulario. Tu comentario será añadido a la página [$3 $2], junto con tu nombre de usuario y el navegador que usas.",
        "feedback-subject": "Asunto:",
        "action-pagelang": "cambiar el idioma de la página",
        "log-name-pagelang": "Registro de cambios en idiomas",
        "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."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activado)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactivado''')"
 }
index 9e7ebb1..a3879ff 100644 (file)
@@ -38,6 +38,7 @@
        "tog-watchdefault": "Lisa jälgimisloendisse minu muudetud leheküljed ja failid",
        "tog-watchmoves": "Lisa jälgimisloendisse minu teisaldatud leheküljed ja failid",
        "tog-watchdeletion": "Lisa jälgimisloendisse minu kustutatud leheküljed ja failid",
+       "tog-watchrollback": "Lisa jälgimisloendisse leheküljed, kus olen muudatuse tühistanud",
        "tog-minordefault": "Märgi kõik parandused vaikimisi pisiparandusteks",
        "tog-previewontop": "Näita eelvaadet toimetamiskasti ees",
        "tog-previewonfirst": "Näita eelvaadet esimesel redigeerimisel",
        "searchprofile-advanced-tooltip": "Otsi kohandatud nimeruumidest",
        "search-result-size": "$1 ({{PLURAL:$2|1 sõna|$2 sõna}})",
        "search-result-category-size": "{{PLURAL:$1|1 lehekülg|$1 lehekülge}} ({{PLURAL:$2|1 alamkategooria|$2 alamkategooriat}}, {{PLURAL:$3|1 fail|$3 faili}})",
-       "search-result-score": "Vastavus: $1%",
        "search-redirect": "(ümbersuunamine $1)",
        "search-section": "(alaosa $1)",
        "search-file-match": "(vastab faili sisule)",
        "uploadwarning": "Üleslaadimise hoiatus",
        "uploadwarning-text": "Muuda allpool olevat faili kirjeldust ning proovi uuesti.",
        "savefile": "Salvesta fail",
-       "uploadedimage": "laadis üles faili \"[[$1]]\"",
-       "overwroteimage": "laadis üles faili \"[[$1]]\" uue versiooni",
        "uploaddisabled": "Üleslaadimine hetkel keelatud",
        "copyuploaddisabled": "Internetiaadressilt üleslaadimine on keelatud.",
        "uploaddisabledtext": "Faili üleslaadimine on keelatud.",
        "nolicense": "pole valitud",
        "licenses-edit": "Redigeeri litsentsivalikut",
        "license-nopreview": "(Eelvaade ei ole saadaval)",
-       "upload_source_url": "(avalikult ligipääsetav URL)",
-       "upload_source_file": "(fail sinu arvutis)",
+       "upload_source_url": "(avalikult juurdepääsetavalt internetiaadressilt valitud fail)",
+       "upload_source_file": "(sinu arvutist valitud fail)",
        "listfiles-delete": "kustuta",
        "listfiles-summary": "Sellel erileheküljel näidatakse kõiki üles laaditud faile.",
        "listfiles_search_for": "Nimeotsing:",
        "watchlist-details": "Jälgimisloendis on {{PLURAL:$1|üks lehekülg|$1 lehekülge}}. Arutelulehekülgi pole eraldi välja toodud.",
        "wlheader-enotif": "E-posti teel teavitamine on lubatud.",
        "wlheader-showupdated": "Leheküljed, mida on muudetud peale sinu viimast külastust, on '''rasvases kirjas'''.",
-       "wlnote": "Allpool on {{PLURAL:$1|viimane muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|tunni|'''$2''' tunni}} jooksul seisuga $3, $4.",
+       "wlnote": "Allpool on {{PLURAL:$1|viimane muudatus|viimased <strong>$1</strong> muudatust}} viimase {{PLURAL:$2|tunni|<strong>$2</strong> tunni}} jooksul seisuga $3, kell $4.",
        "wlshowlast": "Näita viimast $1 tundi $2 päeva. $3",
        "watchlist-options": "Jälgimisloendi seaded",
        "watching": "Jälgimine...",
index 51e07bd..8b474a6 100644 (file)
@@ -53,6 +53,7 @@
        "tog-watchdefault": "صفحه‌ها و پرونده‌هایی که ویرایش می‌کنم به فهرست پی‌گیری‌هایم افزوده شود",
        "tog-watchmoves": "صفحه‌ها و پرونده‌هایی که منتقل می‌کنم به فهرست پی‌گیری‌هایم افزوده شود",
        "tog-watchdeletion": "صفحه‌ها و پرونده‌هایی که حذف می‌کنم به فهرست پی‌گیری‌هایم افزوده شود",
+       "tog-watchrollback": "افزودن صفحاتی که واگردانی کردم برای فهرست پیگیری‌هایم",
        "tog-minordefault": "همهٔ ویرایش‌ها به طور پیش‌فرض به عنوان «جزئی» علامت بخورد",
        "tog-previewontop": "پیش‌نمایش قبل از جعبهٔ ویرایش نمایش یابد",
        "tog-previewonfirst": "پیش‌نمایش هنگام اولین ویرایش نمایش یابد",
        "hidetoc": "نهفتن",
        "collapsible-collapse": "نهفتن",
        "collapsible-expand": "گسترش",
+       "confirmable-yes": "بله",
+       "confirmable-no": "خیر",
        "thisisdeleted": "نمایش یا احیای $1؟",
        "viewdeleted": "نمایش $1؟",
        "restorelink": "{{PLURAL:$1|یک|$1}} ویرایش حذف‌شده",
        "searchprofile-advanced-tooltip": "جستجو در فضاهای نام دلخواه",
        "search-result-size": "$1 ({{PLURAL:$2|یک واژه|$2 واژه}})",
        "search-result-category-size": "{{PLURAL:$1|یک عضو|$1 عضو}} ({{PLURAL:$2|یک زیررده|$2 زیررده}}، {{PLURAL:$3|یک پرونده|$3 پرونده}})",
-       "search-result-score": "ارتباط: $1٪",
        "search-redirect": "(تغییرمسیر $1)",
        "search-section": "(بخش $1)",
        "search-file-match": "(تشابه محتوی پرونده)",
        "uploadwarning": "هشدار بارگذاری",
        "uploadwarning-text": "لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.",
        "savefile": "ذخیرهٔ پرونده",
-       "uploadedimage": "«[[$1]]» را بارگذاری کرد",
-       "overwroteimage": "نسخه جدیدی از  «[[$1]]» را بارگذاری کرد",
        "uploaddisabled": "بارگذاری غیرفعال است.",
        "copyuploaddisabled": "بارگذاری از طریق نشانی اینترنتی غیرفعال است.",
        "uploaddisabledtext": "امکان بارگذاری پرونده غیرفعال است.",
        "nolicense": "هیچ کدام انتخاب نشده‌است",
        "licenses-edit": "گزینه‌های مجوز ویرایش",
        "license-nopreview": "(پیش‌نمایش وجود ندارد)",
-       "upload_source_url": "(یک نشانی اینترنتی معتبر و قابل دسترسی برای عموم)",
-       "upload_source_file": "(پرÙ\88Ù\86دÙ\87â\80\8cاÛ\8c Ø¯Ø± Ø±Ø§Û\8cاÙ\86Ù\87Ù\94 Ø´Ù\85ا)",
+       "upload_source_url": "(شما یک پرونده انتخاب از یک URL معتبر و دسترس عموم انتخاب کردید)",
+       "upload_source_file": "(پرÙ\88Ù\86دÙ\87â\80\8cاÛ\8c Ø§Ø² Ø±Ø§Û\8cاÙ\86Ù\87Ù\94 Ø´Ù\85ا Ø§Ù\86تخاب Ø´Ø¯Ù\87â\80\8cاست)",
        "listfiles-delete": "حذف",
        "listfiles-summary": "این صفحهٔ ویژه تمام پرونده‌های بارگذاری‌شده را نمایش می‌دهد.",
        "listfiles_search_for": "جستجو به دنبال نام پرونده چندرسانه‌ای:",
        "watchlist-details": "بدون احتساب صفحه‌های جداگانهٔ بحث، {{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پی‌گیری‌های شما قرار {{PLURAL:$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": "پی‌گیری...",
        "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 {{GENDER:$2|بارگذاری کرد}} $3",
+       "logentry-upload-overwrite": "$1 یک نسخهٔ جدید {{GENDER:$2|بارگذاری‌کرد}} $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|بارگذاری کرد}} $3",
        "rightsnone": "(هیچ)",
        "feedback-bugornote": "اگر آماده‌اید تا مشکلی فنی را با جزئیاتش شرح دهید لطفاً [$1 یک ایراد گزارش دهید]. در غیر این صورت می‌توانید از فرم سادهٔ زیر استفاده کنید. نظر شما به همراه نام کاربری و مرورگرتان به صفحهٔ «[$3 $2]» افزوده خواهد شد.",
        "feedback-subject": "موضوع:",
        "action-pagelang": "تغییر زبان صفحه",
        "log-name-pagelang": "تغییر سیاههٔ زبان",
        "log-description-pagelang": "این سیاههٔ تغییرات صفحهٔ زبان‌ها است.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای  $3  از  $4  به  $5 ."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای  $3  از  $4  به  $5 .",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (فعال)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر فعال''')"
 }
index 739356f..16cc141 100644 (file)
@@ -86,7 +86,7 @@
        "underline-never": "Ei koskaan",
        "underline-default": "Ulkoasun tai selaimen oletustapa",
        "editfont-style": "Muokkauskentän kirjasintyyppi",
-       "editfont-default": "Selaimen oletus",
+       "editfont-default": "Selaimen vakioasetus",
        "editfont-monospace": "Tasalevyinen kirjasin",
        "editfont-sansserif": "Sans-serif-kirjasin",
        "editfont-serif": "Serif-kirjasin",
        "hidetoc": "piilota",
        "collapsible-collapse": "Supista",
        "collapsible-expand": "Laajenna",
+       "confirmable-confirm": "Oletko varma?",
+       "confirmable-yes": "Kyllä",
+       "confirmable-no": "Ei",
        "thisisdeleted": "Näytä tai palauta $1?",
        "viewdeleted": "Näytä $1?",
        "restorelink": "{{PLURAL:$1|yksi poistettu muokkaus|$1 poistettua muokkausta}}",
        "suppressionlog": "Häivytysloki",
        "suppressionlogtext": "Alla on luettelo poistoista ja muokkausestoista, jotka sisältävät ylläpitäjiltä piilotettua materiaalia.\n[[Special:BlockList|Estolistassa]] on lueteltu voimassa olevat muokkauskiellot ja muokkausestot.",
        "mergehistory": "Yhdistä sivujen muutoshistoriat",
-       "mergehistory-header": "Tämä sivu mahdollistaa sivun muutoshistorian yhdistämisen uudemman sivun muutoshistoriaan.\nUuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa mennä ristikkäin.",
-       "mergehistory-box": "Yhdistä kahden sivun muutoshistoria",
-       "mergehistory-from": "Lähdesivu",
-       "mergehistory-into": "Kohdesivu",
+       "mergehistory-header": "Tällä sivulla voit yhdistää lähdesivun sivuhistorian versioita uudemman sivun historiaan.\nVarmista, että sivujen yhtenäinen muokkaushistoria säilyy eikä mene ristikkäin sekaisin!",
+       "mergehistory-box": "Yhdistä kahden sivun versioita:",
+       "mergehistory-from": "Lähdesivu:",
+       "mergehistory-into": "Kohdesivu:",
        "mergehistory-list": "Sivuhistoria, joka voidaan yhdistää",
-       "mergehistory-merge": "Seuraavat sivun [[:$1]] muutokset voidaan liittää sivun [[:$2]] muutoshistoriaan. Voit valita version, jota myöhempiä muutoksia ei liitetä. Selainlinkkien käyttäminen kadottaa tämän valinnan.",
-       "mergehistory-go": "Etsi muutokset",
+       "mergehistory-merge": "Seuraavat versiot sivusta [[:$1]] voidaan yhdistää sivuun [[:$2]]. \n\nValintamerkin sijoituksella voit yhdistää vain ne versiot, jotka on luotu valittuna ajankohtana tai sitä ennen (listassa alaspäin). \nOta huomioon, että jos käytät navigaatiolinkkejä, tekemäsi valinta poistuu.",
+       "mergehistory-go": "Etsi muokkaukset, jotka voidaan yhdistää",
        "mergehistory-submit": "Yhdistä versiot",
-       "mergehistory-empty": "Ei liitettäviä muutoksia.",
-       "mergehistory-success": "{{PLURAL:$3|Yksi versio|$3 versiota}} sivusta [[:$1]] liitettiin sivuun [[:$2]].",
-       "mergehistory-fail": "Muutoshistorian liittäminen epäonnistui. Tarkista määritellyt sivut ja versiot.",
+       "mergehistory-empty": "Mitään versioita ei voida yhdistää.",
+       "mergehistory-success": "$3 {{PLURAL:$3|versio|versiota}} sivusta [[:$1]] yhdistettiin onnistuneesti sivuun [[:$2]].",
+       "mergehistory-fail": "Sivuhistorioiden yhdistämistä ei voida suorittaa. Tarkista lähde- ja kohdesivujen nimet sekä versioiden aikamääritys.",
        "mergehistory-fail-toobig": "Sivuhistorian yhdistämistä ei voi tehdä, koska enemmän kuin sallittu määrä $1 {{PLURAL:$1|versio|versiota}} siirrettäisiin.",
        "mergehistory-no-source": "Lähdesivua $1 ei ole olemassa.",
        "mergehistory-no-destination": "Kohdesivua $1 ei ole olemassa.",
-       "mergehistory-invalid-source": "Lähdesivulla pitää olla kelvollinen nimi.",
-       "mergehistory-invalid-destination": "Kohdesivulla pitää olla kelvollinen nimi.",
-       "mergehistory-autocomment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]",
+       "mergehistory-invalid-source": "Lähdesivun nimen pitää olla kelvollinen.",
+       "mergehistory-invalid-destination": "Kohdesivun nimen pitää olla kelvollinen.",
+       "mergehistory-autocomment": "Ak: Yhdisti sivun [[:$1]] sivuun [[:$2]]",
        "mergehistory-comment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]: $3",
        "mergehistory-same-destination": "Lähde- ja kohdesivut eivät voi olla samat",
        "mergehistory-reason": "Syy:",
        "mergelog": "Yhdistämisloki",
-       "pagemerge-logentry": "liitti sivun [[$1]] sivuun [[$2]] (muokkaukseen $3 asti)",
-       "revertmerge": "Kumoa yhdistäminen",
+       "pagemerge-logentry": "yhdisti kohteen [[$1]] kohteeseen [[$2]] (muokkaukseen $3 saakka)",
+       "revertmerge": "Peru yhdistäminen",
        "mergelogpagetext": "Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.",
        "history-title": "Sivun ”$1” muutoshistoria",
        "difference-title": "Ero sivun ”$1” versioiden välillä",
        "searchprofile-advanced-tooltip": "Etsi määritellyistä nimiavaruuksista",
        "search-result-size": "$1 ({{PLURAL:$2|1 sana|$2 sanaa}})",
        "search-result-category-size": "{{PLURAL:$1|1 jäsen|$1 jäsentä}} ({{PLURAL:$2|1 alaluokka|$2 alaluokkaa}}, {{PLURAL:$3|1 tiedosto|$3 tiedostoa}})",
-       "search-result-score": "Asiaankuuluvuus: $1%",
        "search-redirect": "(ohjaus $1)",
        "search-section": "(osio $1)",
        "search-file-match": "(vastaa tiedoston sisältöä)",
        "group-bot": "botit",
        "group-sysop": "ylläpitäjät",
        "group-bureaucrat": "byrokraatit",
-       "group-suppress": "häivytysoikeuden käyttäjät",
+       "group-suppress": "häivyttäjät",
        "group-all": "(kaikki)",
        "group-user-member": "{{GENDER:$1|käyttäjä}}",
        "group-autoconfirmed-member": "{{GENDER:$1|automaattisesti hyväksytty käyttäjä}}",
        "group-bot-member": "{{GENDER:$1|botti}}",
        "group-sysop-member": "{{GENDER:$1|ylläpitäjä}}",
        "group-bureaucrat-member": "{{GENDER:$1|byrokraatti}}",
-       "group-suppress-member": "{{GENDER:$1|häivytysoikeuden käyttäjä}}",
+       "group-suppress-member": "{{GENDER:$1|häivyttäjä}}",
        "grouppage-user": "{{ns:project}}:Käyttäjät",
        "grouppage-autoconfirmed": "{{ns:project}}:Automaattisesti hyväksytyt käyttäjät",
        "grouppage-bot": "{{ns:project}}:Botit",
        "uploadwarning": "Tallennusvaroitus",
        "uploadwarning-text": "Muuta alla olevaa tiedostokuvausta ja yritä uudelleen.",
        "savefile": "Tallenna",
-       "uploadedimage": "tallensi tiedoston [[$1]]",
-       "overwroteimage": "tallensi uuden version [[$1]]",
        "uploaddisabled": "Tiedostojen tallennus ei ole käytössä.",
        "copyuploaddisabled": "Tallennus URL:n kautta on poistettu käytöstä.",
        "uploaddisabledtext": "Tiedostojen tallennus on poistettu käytöstä.",
        "upload_source_file": "(valitsemasi tiedosto omasta tietokoneestasi)",
        "listfiles-delete": "poista",
        "listfiles-summary": "Tämä toimintosivu näyttää kaikki tallennetut tiedostot.",
-       "listfiles_search_for": "Nimihaku",
+       "listfiles_search_for": "Etsi tiedoston nimellä:",
        "imgfile": "tiedosto",
        "listfiles": "Tiedostoluettelo",
        "listfiles_thumb": "Pienoiskuva",
        "filerevert-success": "'''[[Media:$1|$1]]''' on palautettu takaisin [$4 versioon, joka luotiin $2 kello $3].",
        "filerevert-badversion": "Tiedostosta ei ole luotu versiota kyseisellä ajan hetkellä.",
        "filedelete": "Poistetaan tiedosto $1",
-       "filedelete-legend": "Tiedoston poisto",
-       "filedelete-intro": "Olet poistamassa tiedoston '''[[Media:$1|$1]]''' ja kaiken sen historian.",
+       "filedelete-legend": "Poista tiedosto",
+       "filedelete-intro": "Olet poistamassa tiedoston '''[[Media:$1|$1]]''' ja lisäksi koko sen muokkaushistorian.",
        "filedelete-intro-old": "<span class=\"plainlinks\">Olet poistamassa tiedoston '''[[Media:$1|$1]]''' [$4 päivämäärällä $2 kello $3 luotua versiota].</span>",
        "filedelete-comment": "Syy:",
        "filedelete-submit": "Poista",
        "watchlist-details": "Tarkkailulistallasi on {{PLURAL:$1|$1 sivu|$1 sivua}}. Keskustelusivuja ei lasketa mukaan.",
        "wlheader-enotif": "Sähköposti-ilmoitus on käytössä.",
        "wlheader-showupdated": "Sivut, joita on muokattu viimeisen käyntisi jälkeen, on '''lihavoitu'''.",
-       "wlnote": "Alla on {{PLURAL:$1|yksi muutos|<strong>$1</strong> muutosta}} viimeisen {{PLURAL:$2|tunnin|<strong>$2</strong> tunnin}} ajalta $3 kello $4 asti.",
-       "wlshowlast": "Näytä viimeiset $1 tuntia tai $2 päivää, $3",
+       "wlnote": "Alla {{PLURAL:$1|on viimeisin muutos|ovat viimeisimmät <strong>$1</strong> muutosta}} edellisen {{PLURAL:$2|tunnin|<strong>$2</strong> tunnin}} ajalta $3 kello $4 lukien.",
+       "wlshowlast": "Näytä edelliset $1 tuntia tai $2 päivää tai $3",
        "watchlist-options": "Tarkkailulistan asetukset",
        "watching": "Lisätään tarkkailulistalle...",
        "unwatching": "Poistetaan tarkkailulistalta...",
        "movetalk": "Siirrä myös keskustelusivu",
        "move-subpages": "Siirrä kaikki alasivut (enintään $1)",
        "move-talk-subpages": "Siirrä kaikki keskustelusivun alasivut (enintään $1)",
-       "movepage-page-exists": "Sivu $1 on jo olemassa ja sitä ei voi automaattisesti korvata.",
+       "movepage-page-exists": "Sivu $1 on jo olemassa ja sen päälle ei voida automaattisesti siirtää.",
        "movepage-page-moved": "Sivu $1 on siirretty nimelle $2.",
        "movepage-page-unmoved": "Sivua $1 ei voitu siirtää nimelle $2.",
        "movepage-max-pages": "Enimmäismäärä sivuja on siirretty, eikä enempää siirretä enää automaattisesti.\n$1 {{PLURAL:$1|sivu|sivua}} siirrettiin.",
        "movelogpage": "Siirtoloki",
-       "movelogpagetext": "Tämä on loki siirretyistä sivuista.",
+       "movelogpagetext": "Tämä on luettelo kaikista sivujen siirroista.",
        "movesubpage": "{{PLURAL:$1|Alasivu|Alasivut}}",
        "movesubpagetext": "Tällä sivulla on $1 {{PLURAL:$1|alasivu|alasivua}}, jotka näkyvät alla.",
        "movenosubpage": "Tällä sivulla ei ole alasivuja.",
        "export-pagelinks": "Sisällytä linkkien kohteina olevat sivut syvyydelle:",
        "allmessages": "Järjestelmäviestit",
        "allmessagesname": "Nimi",
-       "allmessagesdefault": "Oletusarvo",
-       "allmessagescurrent": "Nykyinen arvo",
+       "allmessagesdefault": "Viestin tekstin perusmuoto",
+       "allmessagescurrent": "Viestin teksti tällä hetkellä",
        "allmessagestext": "Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.\nJos haluat muokata MediaWikin yleistä kotoistusta, käy [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWikin kotoistussivuilla] ja sivustolla [//translatewiki.net translatewiki.net].",
        "allmessagesnotsupportedDB": "Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.",
        "allmessages-filter-legend": "Suodata",
        "logentry-newusers-autocreate": "Käyttäjätunnus $1 {{GENDER:$2|luotiin}} automaattisesti",
        "logentry-rights-rights": "$1 {{GENDER:$2|muutti}} käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutti}} käyttäjän $3 jäsenyyttä ryhmässä",
-       "logentry-rights-autopromote": "$1 {{GENDER:$2|muutettiin}} automaattisesti ryhmistä $4 ryhmiin $5",
+       "logentry-rights-autopromote": "Käyttäjän $1 oikeudet {{GENDER:$2|muuttuivat}} automaattisesti ryhmistä $4 ryhmiin $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|tallensi}} tiedoston $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|tallensi}} uuden version tiedostosta $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|tallensi}} tiedoston $3",
        "rightsnone": "(ei oikeuksia)",
        "feedback-bugornote": "Jos voit kuvailla teknisen ongelman tarkasti – [$1 ilmoita ohjelmointivirheestä].\nMuussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi lisätään sivulle [$3 $2], ja siinä on mukana käyttäjätunnuksesi.",
        "feedback-subject": "Otsikko",
        "api-error-illegal-filename": "Tiedoston nimi ei kelpaa.",
        "api-error-internal-error": "Sisäinen virhe: jotain meni vikaan tallennuksesi käsittelyssä.",
        "api-error-invalid-file-key": "Sisäinen virhe: tiedostoa ei löytynyt välikaisvarastosta.",
-       "api-error-missingparam": "Sisäinen virhe: pyynnöstä puutuu parametrejä.",
+       "api-error-missingparam": "Sisäinen virhe: pyynnöstä puutuu parametreja.",
        "api-error-missingresult": "Sisäinen virhe: ei voitu varmistaa, että tallennus onnistui.",
        "api-error-mustbeloggedin": "Sinun pitää olla kirjautunut sisään, jotta voisit tallentaa tiedostoja.",
        "api-error-mustbeposted": "Sisäinen virhe: HTTP POST-pyyntö edellytetty.",
        "action-pagelang": "muuttaa sivun kieliasetuksia",
        "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."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5.",
+       "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 edd5e2c..10507cb 100644 (file)
        "hidetoc": "masquer",
        "collapsible-collapse": "masquer",
        "collapsible-expand": "afficher",
+       "confirmable-confirm": "Êtes-vous sûr{{GENDER:||e|(e)}} ?",
+       "confirmable-yes": "Oui",
+       "confirmable-no": "Non",
        "thisisdeleted": "Désirez-vous afficher ou restaurer $1 ?",
        "viewdeleted": "Voir $1 ?",
        "restorelink": "{{PLURAL:$1|la modification effacée|les $1 modifications effacées}}",
        "invalidtitle-knownnamespace": "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
        "invalidtitle-unknownnamespace": "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
        "exception-nologin": "Non connecté",
-       "exception-nologin-text": "Veuillez [[Special:Userlogin|vous connecter]] pour pouvoir accéder à cette page ou cette action.",
+       "exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.",
        "exception-nologin-text-manual": "Veuillez $1 pour pouvoir accéder à cette page ou cette action.",
        "virus-badscanner": "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
        "virus-scanfailed": "Échec de la recherche (code $1)",
        "virus-unknownscanner": "antivirus inconnu :",
-       "logouttext": "'''Vous êtes à présent déconnecté.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
+       "logouttext": "'''Vous êtes à présent déconnecté{{GENDER:||e|(e)}}.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
        "welcomeuser": "Bienvenue, $1&nbsp;!",
        "welcomecreation-msg": "Votre compte a été créé.\nN'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
        "yourname": "Nom d'utilisateur :",
        "resetpass-submit-cancel": "Annuler",
        "resetpass-wrong-oldpass": "Mot de passe actuel ou temporaire invalide.\nVous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.",
        "resetpass-recycled": "Veuillez réinitialiser votre mot de passe à quelque chose d’autre que l’actuel.",
-       "resetpass-temp-emailed": "Vous êtes connecté avec un code temporaire fourni par courriel.\nPour terminer la connexion, vous devez fournir un nouveau mot de passe ici :",
+       "resetpass-temp-emailed": "Vous êtes connecté{{GENDER:||e|(e)}} avec un code temporaire fourni par courriel.\nPour terminer la connexion, vous devez fournir un nouveau mot de passe ici :",
        "resetpass-temp-password": "Mot de passe temporaire :",
        "resetpass-abort-generic": "La modification du mot de passe a été annulée par une extension.",
        "resetpass-expired": "Votre mot de passe a expiré. Veuillez en fournir un nouveau pour vous connecter.",
        "passwordreset-capture-help": "Si vous cochez cette case, le courriel (avec le mot de passe temporaire) vous sera affiché en même temps qu'il sera envoyé à l'utilisateur.",
        "passwordreset-email": "Adresse de courriel :",
        "passwordreset-emailtitle": "Détails du compte sur {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Quelqu'un (probablement vous, depuis l'adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
-       "passwordreset-emailtext-user": "L'utilisateur $1 sur {{SITENAME}} a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+       "passwordreset-emailtext-ip": "Quelqu'un (probablement vous, depuis l'adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu{{GENDER:||e|(e)}} de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+       "passwordreset-emailtext-user": "L'utilisateur $1 sur {{SITENAME}} a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu{{GENDER:||e|(e)}} de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
        "passwordreset-emailelement": "Nom d'utilisateur : $1\nMot de passe temporaire : $2",
        "passwordreset-emailsent": "Un courriel de réinitialisation de mot de passe a été envoyé.",
        "passwordreset-emailsent-capture": "Un courriel de réinitialisation de mot de passe a été envoyé, qui est affiché ci-dessous.",
-       "passwordreset-emailerror-capture": "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur}} a échoué : $1",
+       "passwordreset-emailerror-capture": "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur|utilisatrice}} a échoué : $1",
        "changeemail": "Changer l’adresse de courriel",
        "changeemail-header": "Changer l’adresse de courriel du compte",
        "changeemail-text": "Remplissez ce formulaire pour changer votre adresse de courriel. Vous devrez entrer votre mot de passe pour confirmer ce changement.",
        "content-failed-to-parse": "Échec de l’analyse syntaxique du contenu de $2 pour le modèle $1: $3",
        "invalid-content-data": "Données du contenu non valides",
        "content-not-allowed-here": "Le contenu « $1 » n’est pas autorisé sur la page [[$2]]",
-       "editwarning-warning": "Quitter cette page vous fera perdre toutes les modifications que vous avez faites.\nSi vous êtes connecté, vous pouvez désactiver cet avertissement dans la section « {{int:prefs-editing}} » de vos préférences.",
+       "editwarning-warning": "Quitter cette page vous fera perdre toutes les modifications que vous avez faites.\nSi vous êtes connecté{{GENDER:||e|(e)}}, vous pouvez désactiver cet avertissement dans la section « {{int:prefs-editing}} » de vos préférences.",
        "editpage-notsupportedcontentformat-title": "Format de contenu non pris en charge",
        "editpage-notsupportedcontentformat-text": "Le format de contenu $1 n'est pas pris en charge par le modèle de contenu $2 .",
        "content-model-wikitext": "wikitexte",
        "parser-template-recursion-depth-warning": "Limite de profondeur des appels de modèles dépassée ($1)",
        "language-converter-depth-warning": "Limite de profondeur du convertisseur de langue dépassée ($1)",
        "node-count-exceeded-category": "Pages où nombre de nœuds est dépassé",
-       "node-count-exceeded-category-desc": "Une catégorie pour les pages où le nombre de nœuds est dépassé.",
+       "node-count-exceeded-category-desc": "Cette page dépasse le nombre maximal de nœuds.",
        "node-count-exceeded-warning": "Page dépassant le nombre de nœuds",
        "expansion-depth-exceeded-category": "Pages où la profondeur d'expansion est dépassée",
-       "expansion-depth-exceeded-category-desc": "Ceci est une catégorie pour les pages où la profondeur d’expansion est dépassée.",
+       "expansion-depth-exceeded-category-desc": "La page dépasse la profondeur d’expansion maximale.",
        "expansion-depth-exceeded-warning": "Page dépassant la profondeur d'expansion",
        "parser-unstrip-loop-warning": "Boucle non démontable détectée",
        "parser-unstrip-recursion-limit": "Limite de récursion non démontable dépassée ($1)",
        "revdelete-nooldid-title": "Version cible non valide",
        "revdelete-nooldid-text": "Vous n'avez pas précisé la version cible de cette fonction, elle n'existe pas, ou il s'agit de la version actuelle.",
        "revdelete-no-file": "Le fichier spécifié n'existe pas.",
-       "revdelete-show-file-confirm": "Êtes-vous sûr de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?",
+       "revdelete-show-file-confirm": "Êtes-vous sûr{{GENDER:||e|(e)}} de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?",
        "revdelete-show-file-submit": "Oui",
        "revdelete-selected-text": "{{PLURAL:$1|Révision sélectionnée|Révisions sélectionnées}} de [[:$2]] :",
        "revdelete-selected-file": "{{PLURAL:$1|Version de fichier sélectionnée|Versions de fichier sélectionnées}} de [[:$2]] :",
        "searchprofile-advanced-tooltip": "Choisir les espaces de noms pour la recherche",
        "search-result-size": "$1 ($2 mot{{PLURAL:$2||s}})",
        "search-result-category-size": "$1 membre{{PLURAL:$1||s}} ($2 sous-catégorie{{PLURAL:$2||s}}, $3 fichier{{PLURAL:$3||s}})",
-       "search-result-score": "Pertinence : $1%",
        "search-redirect": "(redirection depuis $1)",
        "search-section": "(section $1)",
        "search-file-match": "(correspond au contenu du fichier)",
        "preferences": "Préférences",
        "mypreferences": "Préférences",
        "prefs-edits": "Nombre de modifications :",
-       "prefsnologintext2": "Veuillez $1 pour définir les préférences utilisateur.",
+       "prefsnologintext2": "Veuillez vous connecter pour modifier vos préférences.",
        "prefs-skin": "Habillage",
        "skin-preview": "Prévisualiser",
        "datedefault": "Aucune préférence",
        "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}} '''[[User:$1|$1]]''' $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 :",
        "uploadwarning": "Attention !",
        "uploadwarning-text": "Modifiez la description du fichier et essayez de nouveau.",
        "savefile": "Sauvegarder le fichier",
-       "uploadedimage": "a importé « [[$1]] »",
-       "overwroteimage": "a importé une nouvelle version de « [[$1]] »",
        "uploaddisabled": "Désolé, l’import de fichiers est désactivé.",
        "copyuploaddisabled": "Import de fichier par URL désactivé.",
        "uploaddisabledtext": "L’import de fichiers est désactivé sur ce wiki.",
        "trackingcategories-desc": "Critère d’inclusion de la catégorie",
        "noindex-category-desc": "La page contient <code><nowiki>__NOINDEX__</nowiki></code> et est dans un espace de noms où ce marquage est autorisé ; elle ne sera donc pas indexée par les robots.",
        "index-category-desc": "La page contient <code><nowiki>__INDEX__</nowiki></code> et est dans un espace de noms où ce marquage est autorisé ; elle sera donc indexée par les robots alors qu’elle ne l’aurait pas été normalement.",
-       "post-expand-template-inclusion-category-desc": "Après avoir développé tous les modèles, la taille de la page dépasse <code>$wgMaxArticleSize</code> ; certains modèles n’ont donc pas été développés.",
-       "post-expand-template-argument-category-desc": "Après avoir développé l’argument d’un modèle (quelque chose entre accolades triples, comme <code>{{{Foo}}}</code>), la page dépasse <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Trop de fonctions coûteuses de l’analyseur (comme <code>#ifexist</code>) sont incluses dans une page. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "La catégorie ajoutée sur la page contient un lien de fichier incorrect (un lien pour inclure un fichier alors que celui-ci n’existe pas).",
-       "hidden-category-category-desc": "Catégorie contenant <code><nowiki>__HIDDENCAT__</nowiki></code>, ce qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
+       "post-expand-template-inclusion-category-desc": "La taille de la page dépasse <code>$wgMaxArticleSize</code> après le développement de tous ses modèles ; certains n’ont donc pas été développés.",
+       "post-expand-template-argument-category-desc": "La page dépasse <code>$wgMaxArticleSize</code> après avoir développé l’argument d’un modèle (quelque chose entre accolades triples, comme <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "La page utilise trop de fonctions coûteuses de l’analyseur (comme <code>#ifexist</code>). Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "La page contient un lien de fichier incorrect (un lien pour inclure un fichier alors que celui-ci n’existe pas).",
+       "hidden-category-category-desc": "La catégorie contient <code><nowiki>__HIDDENCAT__</nowiki></code> dans son contenu, ce qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
        "trackingcategories-nodesc": "Aucune description disponible.",
        "trackingcategories-disabled": "La catégorie est désactivée",
        "mailnologin": "Pas d'adresse d'expéditeur",
        "mywatchlist": "Liste de suivi",
        "watchlistfor2": "Pour $1 $2",
        "nowatchlist": "Votre liste de suivi ne référence aucune page.",
-       "watchlistanontext": "Veuillez vous $1 pour visualiser ou modifier les éléments de votre liste de suivi.",
+       "watchlistanontext": "Veuillez vous connecter pour visualiser ou modifier les éléments de votre liste de suivi.",
        "watchnologin": "Non connecté",
        "addwatch": "Ajouter à la liste de suivi",
        "addedwatchtext": "La page « [[:$1]] » a été ajoutée à votre [[Special:Watchlist|liste de suivi]].\nLes prochaines modifications de cette page et de la page de discussion associée y seront répertoriées.",
        "logentry-rights-rights": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3 de $4 à $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléchargé}} une nouvelle version de $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|a téléchargé}} $3",
        "rightsnone": "(aucun)",
        "feedback-bugornote": "Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].\nSinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d'utilisateur.",
        "feedback-subject": "Objet :",
        "action-pagelang": "changer la langue de la page",
        "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."
+       "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-row-enabled": "* <code>$1</code> / $2 (activé)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''désactivé''')"
 }
index 8b1a199..7c7f484 100644 (file)
        "uploadwarning": "Advertencia ao cargar o ficheiro",
        "uploadwarning-text": "Por favor, modifique a descrición do ficheiro e inténteo de novo.",
        "savefile": "Gardar o ficheiro",
-       "uploadedimage": "cargou \"[[$1]]\"",
-       "overwroteimage": "enviou unha nova versión de \"[[$1]]\"",
        "uploaddisabled": "Sentímolo, a subida de ficheiros está desactivada.",
        "copyuploaddisabled": "A carga mediante URL está desactivada.",
        "uploaddisabledtext": "A carga de ficheiros está desactivada.",
index 46f1539..8c16659 100644 (file)
        "permalink": "સ્થાયી કડી",
        "print": "છાપો",
        "view": "જુઓ",
+       "view-foreign": "$1 પર જુઓ",
        "edit": "ફેરફાર કરો",
+       "edit-local": "સ્થાનિક વર્ણનમાં ફેરફાર કરો",
        "create": "બનાવો",
+       "create-local": "સ્થાનિક વર્ણન ઉમેરો",
        "editthispage": "આ પાનામાં ફેરફાર કરો",
        "create-this-page": "આ પાનું બનાવો",
        "delete": "રદ કરો",
        "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ની મેલ() કામગીરીમાં અજ્ઞાત ત્રુટિ",
        "edit-gone-missing": "આ પાને અધ્યતન ન બનાવી શકાયું \nલાગે છે કોઇએ આ પાનું હટાવી દીધું છે",
        "edit-conflict": "સંપાદન સંઘર્ષ.",
        "edit-no-change": "તમારા ફેરફારો અવગણાયા, કેમકે અક્ષરકાયામાં કોઈ ફેરફારાના હતો",
+       "postedit-confirmation-created": "પાનું બનાવવામાં આવ્યું.",
        "postedit-confirmation-saved": "તમે કરેલો ફેરફાર સચવાઈ ગયો છે.",
        "edit-already-exists": "નવું પાનું બનાવી ન શકાયું\nતે પહેલેથી હાજર છે.",
        "defaultmessagetext": "મૂળભૂત સંદેશ લખાણ",
        "invalid-content-data": "અયોગ્ય વિગત માહિતી",
        "content-not-allowed-here": "\"$1\" વિગત [[$2]] પાનાં પર માન્ય નથી",
-       "editwarning-warning": "àª\86 àªªàª¾àª¨à«\81àª\82 àª\9bà«\8bડà«\80 àª¦à«\87શà«\8b àª¤à«\8b àª¤àª®àª¾àª°àª¾ àª«à«\87રફારà«\8b àª¸àª\9aવાશà«\87 àª¨àª¹à«\80àª\82.\nàª\9cà«\8b àª¤àª®à«\87 àªªà«\8dરવà«\87શ àª\95રà«\87લà«\8b àª¹à«\8bય àª¤à«\8b àª¤àª®à«\87 àª\86 àª\9aà«\87તવણà«\80નà«\87 àª¤àª®àª¾àª°à«\80 àªªàª¸àª\82દના \"ફà«\87રફાર\" વિભાગના વિકલ્પો બદલીને બંધ કરી શકો છો.",
+       "editwarning-warning": "àª\86 àªªàª¾àª¨à«\81àª\82 àª\9bà«\8bડà«\80 àª¦à«\87શà«\8b àª¤à«\8b àª¤àª®àª¾àª°àª¾ àª«à«\87રફારà«\8b àª¤àª®à«\87 àª\97à«\81માવà«\80 àª¶àª\95à«\8b àª\9bà«\8b.\nàª\9cà«\8b àª¤àª®à«\87 àªªà«\8dરવà«\87શ àª\95રà«\87લà«\8b àª¹à«\8bય àª¤à«\8b, àª¤àª®à«\87 àª\86 àª\9aà«\87તવણà«\80નà«\87 àª¤àª®àª¾àª°à«\80 àªªàª¸àª\82દàª\97à«\80ના \"{{int:prefs-editing}}\" વિભાગના વિકલ્પો બદલીને બંધ કરી શકો છો.",
        "content-model-wikitext": "વિકિલખાણ",
        "content-model-text": "સાદું લખાણ",
        "content-model-javascript": "જાવાસ્ક્રિપ્ટ",
        "searchprofile-advanced-tooltip": "સ્થાનીય નામસ્થળોમાં શોધો:",
        "search-result-size": "$1 ({{PLURAL:$2|૧ શબ્દ|$2 શબ્દો}})",
        "search-result-category-size": "{{PLURAL:$1|1 સભ્ય|$1 સભ્યો}} ({{PLURAL:$2|1 ઉપ શ્રેણી|$2 ઉપ શ્રેણીઓ}}, {{PLURAL:$3|1 ફાઇલ|$3 ફાઇલો}})",
-       "search-result-score": "પ્રસ્તુતિ: $1%",
        "search-redirect": "(અન્યત્ર પ્રસ્થાન $1)",
        "search-section": "(વિભાગ $1)",
        "search-suggest": "શું તમે $1 કહેવા માંગો છો?",
        "uploadwarning": "ફાઇલ ચઢાવ ચેતવણી",
        "uploadwarning-text": "કૃપયા ફાઈલ સંબધી વર્ણન સુધારો અને ફરી પ્રયત્ન કરો",
        "savefile": "સાચવો",
-       "uploadedimage": "\"[[$1]]\" ચઢાવ્યું",
-       "overwroteimage": " \"[[$1]]\" ની નવી આવૃત્તિ ચઢાવો.",
        "uploaddisabled": "ફાઇલ ચઢાવ પ્રતિબંધિત",
        "copyuploaddisabled": "URL દ્વાર ફાઇલ ચઢાવ પ્રતિબંધિત",
        "uploaddisabledtext": "ફાઇલ ચઢાવવું નિષ્ક્રીય બનાવ્યું છે",
        "protectedpages-indef": "ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના",
        "protectedpages-cascade": "માત્ર પગથિયામય સુરક્ષા વાળા પગ",
        "protectedpagesempty": "આ વિકલ્પો દ્વારા કોઈ પાના સુરક્ષિત કરાયા નથી.",
+       "protectedpages-timestamp": "સમયછાપ",
        "protectedpages-page": "પાનું",
+       "protectedpages-expiry": "સમાપ્તિ",
        "protectedpages-reason": "કારણ",
        "protectedpages-unknown-timestamp": "અજ્ઞાત",
        "protectedpages-unknown-performer": "અજ્ઞાત સભ્ય",
        "listgrouprights-removegroup-self": "તેમના પોતાના ખાતમાંથી  {{PLURAL:$2|group|groups}}  હટાવો : $1",
        "listgrouprights-addgroup-self-all": "દરેક જૂથને તેમના પોતાના ખાતા માં ઉમેરો",
        "listgrouprights-removegroup-self-all": "બધા જૂથને તેમના પોતાના ખાતામાંથી હટાવો",
+       "listgrouprights-namespaceprotection-namespace": "નામાવકાશ",
+       "trackingcategories-name": "સંદેશ નામ",
        "mailnologin": "મેળવનારનું સરનામું નથી",
        "mailnologintext": "અન્ય સભ્યને ઇ-મેલ મોકલવા માટે તમે [[Special:UserLogin|logged in]] પ્રવેશ કરેલ હોવો જોઈએ અને તમારા[[Special:Preferences|preferences]] વિકલ્પોમાં તમારા ઈ-મેલ સરનામાની પુષ્ટિ થયેલી હોવી જોઈએ",
        "emailuser": "સભ્યને ઇ-મેલ કરો",
        "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": "નજર રાખી રહ્યાં છો...",
        "months": "{{PLURAL:$1|$1 મહિનો|$1 મહિનાઓ}}",
        "years": "{{PLURAL:$1|$1 વર્ષ|$1 વર્ષો}}",
        "ago": "$1 પહેલાં",
-       "just-now": "હમણાં",
+       "just-now": "હમણાં જ",
        "hours-ago": "$1 {{PLURAL:$1|કલાક|કલાકો}} ago",
        "minutes-ago": "$1 {{PLURAL:$1|મિનિટ|મિનિટો}} ago",
        "seconds-ago": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}} ago",
        "confirm-watch-top": "આ પાનું તમારી ધ્યાનસૂચિમાં ઉમેરો?",
        "confirm-unwatch-button": "બરાબર",
        "confirm-unwatch-top": "આ પાનું તમારી ધ્યાનસૂચીમાથી કાઢી નાખો",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← પાછલું પાનું",
        "imgmultipagenext": "આગલું પાનું →",
        "imgmultigo": "જાઓ!",
        "watchlistedit-raw-done": "તમારી ધ્યાના સૂચિ અધ્યતન કરાઈ.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો}} ઉમેરાયા :",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો  }} હટાવાયા :",
+       "watchlistedit-clear-titles": "શીર્ષકો:",
        "watchlisttools-view": "બંધબેસતાં ફેરફારો નિહાળો",
        "watchlisttools-edit": "ધ્યાનસૂચી જુઓ અને બદલો",
        "watchlisttools-raw": "કાચી ધ્યાનસૂચિમાં ફેરફાર કરો",
        "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": "ખૂંટા",
        "version-hook-name": "ખૂંટાનું નામ્",
        "version-hook-subscribedby": "દ્વ્રારા લાભાન્વીત",
        "version-version": "(આવૃત્તિ $1)",
+       "version-no-ext-name": "[નામ નથી]",
        "version-license": "મીડિઆવિકિ લાયસન્સ",
        "version-ext-license": "લાયસન્સ",
+       "version-skin-colheader-name": "ફલક",
        "version-ext-colheader-version": "આવૃત્તિ",
        "version-ext-colheader-license": "લાયસન્સ",
        "version-ext-colheader-description": "વર્ણન",
        "htmlform-no": "ના",
        "htmlform-yes": "હા",
        "htmlform-chosen-placeholder": "વિકલ્પ પસંદ કરો",
+       "htmlform-cloner-create": "વધુ ઉમેરો",
+       "htmlform-cloner-delete": "હટાવો",
        "sqlite-has-fts": "$1 પૂર્ણ શબ્દ શોધ સહીત",
        "sqlite-no-fts": "$1 પૂર્ણ શબ્દ  શોધ વિકલ્પ વગર",
        "logentry-delete-delete": "$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}",
        "expand_templates_xml_output": "XML આઉટપુટ",
        "expand_templates_ok": "મંજૂર",
        "expand_templates_remove_comments": "ટીપ્પણીઓ દૂર કરો",
-       "expand_templates_preview": "પૂર્વાવલોકન"
+       "expand_templates_preview": "પૂર્વાવલોકન",
+       "pagelang-name": "પાનું",
+       "pagelang-language": "ભાષા",
+       "pagelang-select-lang": "ભાષા પસંદ કરો",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (સક્રિય)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''નિષ્ક્રિય''')"
 }
index df559b0..8925171 100644 (file)
        "hidetoc": "הסתרה",
        "collapsible-collapse": "הסתרה",
        "collapsible-expand": "הצגה",
+       "confirmable-confirm": "האם {{GENDER:$1|ברצונך}} להמשיך?",
+       "confirmable-yes": "כן",
+       "confirmable-no": "לא",
        "thisisdeleted": "לשחזר או להציג $1?",
        "viewdeleted": "להציג $1?",
        "restorelink": "{{PLURAL:$1|גרסה מחוקה אחת|$1 גרסאות מחוקות}}",
        "changeemail": "שינוי כתובת דוא\"ל",
        "changeemail-header": "שינוי כתובת הדואר האלקטרוני בחשבון",
        "changeemail-text": "מלאו טופס זה כדי לשנות את כתובת הדואר האלקטרוני שלכם. יהיה עליכם למלא סיסמה כדי לאשר את השינוי.",
-       "changeemail-no-info": "×¢×\9c×\99×\9b×\9d להיכנס לחשבון כדי לגשת לדף זה ישירות.",
+       "changeemail-no-info": "×\99ש להיכנס לחשבון כדי לגשת לדף זה ישירות.",
        "changeemail-oldemail": "כתובת דוא\"ל נוכחית:",
        "changeemail-newemail": "כתובת דוא\"ל חדשה:",
        "changeemail-none": "(אין)",
        "searchprofile-advanced-tooltip": "חיפוש במרחבי שם מותאמים אישית",
        "search-result-size": "$1 ({{PLURAL:$2|מילה אחת|$2 מילים}})",
        "search-result-category-size": "{{PLURAL:$1|חבר אחד|$1 חברים}} ({{PLURAL:$2|קטגוריית משנה אחת|$2 קטגוריות משנה}}, {{PLURAL:$3|קובץ אחד|$3 קבצים}})",
-       "search-result-score": "רלוונטיוּת: $1%",
        "search-redirect": "(הפניה $1)",
        "search-section": "(פסקה $1)",
        "search-file-match": "(התאמה בתוכן הקובץ)",
        "uploadwarning": "אזהרת העלאת קבצים",
        "uploadwarning-text": "אנא שנו את תיאור הקובץ שלמטה ונסו שוב.",
        "savefile": "שמירת קובץ",
-       "uploadedimage": "העלה את הקובץ [[$1]]",
-       "overwroteimage": "העלה גרסה חדשה של הקובץ [[$1]]",
        "uploaddisabled": "העלאת קבצים מבוטלת.",
        "copyuploaddisabled": "העלאת קבצים מכתובת URL מבוטלת.",
        "uploaddisabledtext": "אפשרות העלאת הקבצים מבוטלת.",
        "movepage-moved-redirect": "נוצרה הפניה.",
        "movepage-moved-noredirect": "יצירת ההפניה בוטלה.",
        "articleexists": "קיים כבר דף באותו שם, או שהשם שבחרת אינו תקין.\nנא לבחור שם אחר.",
-       "cantmove-titleprotected": "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94, כיוון שהשם החדש מוגן מפני יצירה",
+       "cantmove-titleprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 כיוון שהשם החדש מוגן מפני יצירה",
        "movetalk": "העברה גם של דף השיחה",
        "move-subpages": "העברת כל דפי המשנה (עד $1)",
        "move-talk-subpages": "העברת כל דפי המשנה של דף השיחה (עד $1)",
        "logentry-rights-rights": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3 מ$4 ל$5&rlm;",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3",
        "logentry-rights-autopromote": "$1 קודם אוטומטית מ$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": "נושא:",
        "action-pagelang": "לשנות את שפת הדף",
        "log-name-pagelang": "יומן שינוי שפה",
        "log-description-pagelang": "זהו יומן של שינויים בשפות של הדפים.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|שינה|שינתה}} את שפת הדף $3 מ$4 ל$5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|שינה|שינתה}} את שפת הדף $3 מ$4 ל$5.",
+       "default-skin-not-found": "אופס! עיצוב ברירת המחדל עבור אתר הוויקי שלכם  (<code>$wgDefaultSkin</code>),&rlm; <code>$1</code>, אינו זמין.\n\nנראה שההתקנה שלכם כוללת את העיצובים הבאים. ראו מידע בדף [https://www.mediawiki.org/wiki/Manual:Skin_configuration \"הגדרת עיצובים\" במדריך] על האפשרות להפעיל אותם ולבחור את עיצוב ברירת המחדל.\n\n$2\n\n; אם כרגע התקנתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה‏‏־<code>skins/</code>.\n:* שכפול אחת מה־git repostiroies ב־<code>mediawiki/skins/*</code> בעזרת git לתוך תיקיית ה־<code>skins/</code> בהתקנת מדיה־ויקי שלכם.\n: אם תעשו זאת, זה לא אמור להפריע ל‏‏־git repository שלכם (אם אתם מפתחים של מדיה־ויקי).\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>),&rlm; <code>$1</code>, אינו זמין.\n\nאין לכם עיצובים מותקנים.\n\n$2\n\n; אם כרגע התקנתם או שדרגתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. מדיה־ויקי 1.24 וגרסאות חדשות יותר אינן כוללות עיצובים ב־git repository הראשי. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה‏‏־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה‏‏־<code>skins/</code>.\n:* שכפול אחת מה־git repostiroies ב־<code>mediawiki/skins/*</code> בעזרת git לתוך תיקיית ה־<code>skins/</code> בהתקנת מדיה־ויקי שלכם.\n: אם תעשו זאת, זה לא אמור להפריע ל‏‏־git repository שלכם (אם אתם מפתחים של מדיה־ויקי). ראו מידע בדף [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 21f50ce..0062c26 100644 (file)
@@ -10,7 +10,8 @@
                        "Malafaya",
                        "Thakurji",
                        "아라",
-                       "Soul Train"
+                       "Soul Train",
+                       "Filipinayzd"
                ]
        },
        "tog-underline": "Jorr ke niche line khicho:",
        "talkpagelinktext": "Baat",
        "specialpage": "Khaas Panna",
        "personaltools": "Aapan aujaar",
-       "postcomment": "Nawaa section",
        "articlepage": "Content waala panna ke dekho",
        "talk": "Salah",
        "views": "Bichar",
        "externaldberror": "Koi bahaari database authentication error hai, nai to aap ke bahaari account badle ke adhikar nai hai.",
        "login": "Log in karo",
        "nav-login-createaccount": "Log in karo/ nawaa account banao",
-       "loginprompt": "Login kare ke khatir  {{SITENAME}} cookies ke laabu kare ke chaahi.",
        "userlogin": "Log in karo/ nawaa account banao",
        "userloginnocreate": "Log in karo",
        "logout": "Log out",
        "searchprofile-advanced-tooltip": "Custom namespaces me khojo",
        "search-result-size": "$1 ({{PLURAL:$2|1 sabd|$2 sabd}})",
        "search-result-category-size": " {{PLURAL:$1|1 sadasya|$1 sadasya}} ({{PLURAL:$2|1 chhota vibhag|$2 chhota vibhag}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Len den: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(section $1)",
        "search-suggest": "Ka aap ke matlab rahaa: $1",
        "saveprefs": "Save karo",
        "restoreprefs": "Sab default settings ke pahile jaise karo (sab vibhag me)",
        "prefs-editing": "Badaltaa hai",
-       "rows": "Line:",
+       "rows": "Taytay:",
        "columns": "Column:",
        "searchresultshead": "Khojo",
        "stub-threshold": "Threshold ke khatir <a href=\"#\" class=\"stub\">stub link</a> formatting (bytes):",
        "uploadwarning": "Upload ke baare me chetauni",
        "uploadwarning-text": "Meharbani kar ke file ke baaare me aur jankari ke niche badal ke aur fir se kosis karo.",
        "savefile": "File ke save karo",
-       "uploadedimage": "\"[[$1]]\" ke upload kar dewa gae",
-       "overwroteimage": "\"[[$1]]\" ke nawaa version ke upload karaa gais hai",
        "uploaddisabled": "Uploads ke disable kar dewa gais hai",
        "copyuploaddisabled": "URL se upload kare pe rok lagae dewa gais hae.",
        "uploaddisabledtext": "File uploads ke disable kar dewa gais hai.",
        "watchlist-details": "{{PLURAL:$1|$1 panna|$1 panna}} pe dhyan dewa jae hai, baat waala panna ke chhorr ke.",
        "wlheader-enotif": "E-mail notification ke enable kar dewa gais hai.",
        "wlheader-showupdated": "Panna jiske aap ke pichhla visit ke ke baad badal dewa gais hia ke '''bold''' me dekhawa jaawe hai.",
+       "wlnote": "Niche ke {{PLURAL:$1|pahile waala badlao hai| pahile '''$1''' badlao hai}} pichhle {{PLURAL:$2|ghanta|'''$2''' ghanta}} me as of $3, $4..",
        "wlshowlast": "Pichhla $1 ghanta $2 din $3 ke dekhao",
        "watchlist-options": "Dhyan suchi ke options",
        "watching": "Dekhtaa...",
index 8203833..374c088 100644 (file)
        "permalink": "Hivatkozás erre a változatra",
        "print": "Nyomtatás",
        "view": "Olvasás",
+       "view-foreign": "Megtekintés ezen: $1",
        "edit": "Szerkesztés",
        "edit-local": "Helyi leírás szerkesztése",
        "create": "Létrehozás",
        "jumptonavigation": "navigáció",
        "jumptosearch": "keresés",
        "view-pool-error": "A szerverek jelenleg túl vannak terhelve, mert túl sok felhasználó próbálta megtekinteni ezt az oldalt.\nKérjük, várj egy kicsit, mielőtt újra próbálkoznál a lap megtekintésével!\n\n$1",
+       "generic-pool-error": "Sajnálom, a szerverek jelenleg túl vannak terhelve.\nTúl sok felhasználó próbálja ezt az oldalt megtekinteni.\nKérjük, várj egy kicsit, mielőtt újra próbálkoznál az oldal megtekintésével!",
        "pool-timeout": "Letelt a zárolás feloldására szánt várakozási idő",
        "pool-queuefull": "A pool sor megtelt",
        "pool-errorunknown": "Ismeretlen hiba",
        "preview": "Előnézet",
        "showpreview": "Előnézet megtekintése",
        "showdiff": "Változtatások megtekintése",
+       "blankarticle": "<strong>Figyelem:</strong> A létrehozandó szócikk üres.\nHa ismét a \"{{int:savearticle}}\" gombra kattintasz, a szócikket tartalom nélkül fogod létrehozni.",
        "anoneditwarning": "'''Figyelem:''' Nem vagy bejelentkezve, ha szerkesztesz, az IP-címed látható lesz a laptörténetben.",
        "anonpreviewwarning": "''Nem vagy bejelentkezve. A mentéskor az IP-címed rögzítve lesz a laptörténetben.''",
        "missingsummary": "'''Emlékeztető:''' Nem adtál meg szerkesztési összefoglalót. Ha összefoglaló nélkül akarod elküldeni a szöveget, kattints újra a mentésre.",
        "parser-template-recursion-depth-warning": "A sablon rekurzív beillesztésének mélysége átlépte a határérékét ($1)",
        "language-converter-depth-warning": "A nyelvátalakító rekurzióinak száma túllépve ($1)",
        "node-count-exceeded-category": "Lapok, ahogy a csomópont szám túl nagy",
+       "node-count-exceeded-category-desc": "Azon oldalaknak a kategóriája, ahol a csomópont szám túl nagy.",
        "node-count-exceeded-warning": "Az oldal meghaladta a csomópont számot",
        "expansion-depth-exceeded-category": "Lapok, melyeken a sablonok kibontása meghaladja a megengedett szintet",
        "expansion-depth-exceeded-warning": "A lap meghaladta az engedélyezett kiterjesztési mélységet",
        "undo-norev": "A szerkesztés nem állítható vissza, mert nem létezik vagy törölve lett.",
        "undo-nochange": "A szerkesztés már vissza lett állítva.",
        "undo-summary": "Visszavontam [[Special:Contributions/$2|$2]] ([[User talk:$2|vita]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]]) szerkesztését (oldid: $1)",
+       "undo-summary-username-hidden": "A rejtett felhasználó által végzett $1 változat visszavonása",
        "cantcreateaccounttitle": "Felhasználói fiók létrehozása sikertelen",
        "cantcreateaccount-text": "Erről az IP-címről ('''$1''') nem lehet regisztrálni, mert [[User:$3|$3]] blokkolta az alábbi indokkal:\n\n:''$2''",
+       "cantcreateaccount-range-text": "A regisztrációt a(z) '''$1''' IP-címtartományban, amelybe a te IP-címed ('''$4''') is tartozik, [[User:$3|$3]] blokkolta.",
        "viewpagelogs": "A lap a rendszernaplókban",
        "nohistory": "A lap nem rendelkezik laptörténettel.",
        "currentrev": "Aktuális változat",
        "revdelete-no-file": "A megadott fájl nem létezik.",
        "revdelete-show-file-confirm": "Biztosan meg szeretnéd nézni a(z) „<nowiki>$1</nowiki>” $2, $3-i törölt változatát?",
        "revdelete-show-file-submit": "Igen",
+       "revdelete-selected-text": "[[:$2]] {{PLURAL:$1|kiválasztott változata|kiválasztott változatai}}",
        "logdelete-selected": "{{PLURAL:$1|Kiválasztott naplóesemény|Kiválasztott naplóesemények}}:",
        "revdelete-confirm": "Kérlek erősítsd meg, hogy valóban ezt szeretnéd tenni; megértetted a következményeket, és amit teszel, az összhangban van [[{{MediaWiki:Policy-url}}|az irányelvekkel]].",
        "revdelete-suppress-text": "Az elrejtés '''csak''' a következő esetekben használható:\n* Illetlen személyes információk\n*: ''otthoni cím, telefonszámok, társadalombiztosítási számok stb.''",
        "searchprofile-advanced-tooltip": "Keresés adott névterekben",
        "search-result-size": "$1 ({{PLURAL:$2|egy|$2}} szó)",
        "search-result-category-size": "$1 oldal, $2 alkategória, $3 fájl",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(átirányítva innen: $1)",
        "search-section": "($1 szakasz)",
        "search-suggest": "Keresési javaslat: $1",
        "right-reupload-shared": "felülírhatja a közös megosztóhelyen lévő fájlokat helyben",
        "right-upload_by_url": "fájl feltöltése URL-cím alapján",
        "right-purge": "oldal gyorsítótárának ürítése megerősítés nélkül",
-       "right-autoconfirmed": "félig védett lapok szerkesztése",
+       "right-autoconfirmed": "Nem érinti az IP-alapú szerkesztéskorlátozás",
        "right-bot": "automatikus folyamatként való kezelés",
        "right-nominornewtalk": "felhasználói lapok nem apró szerkesztésével megjelenik az új üzenet szöveg",
        "right-apihighlimits": "nagyobb mennyiségű lekérdezés az API-n keresztül",
        "right-deletedtext": "törölt változatok szövegének és a változatok közötti eltérés megtekintése",
        "right-browsearchive": "keresés a törölt lapok között",
        "right-undelete": "lap helyreállítása",
-       "right-suppressrevision": "az adminisztrátorok elől elrejtett változatok megtekintése és helyreállítása",
+       "right-suppressrevision": "Bármely felhasználó által végzett változatok megtekintése, elrejtése és felfedése",
        "right-suppressionlog": "privát naplók megtekintése",
        "right-block": "szerkesztők blokkolása",
        "right-blockemail": "szerkesztő e-mail küldési lehetőségének blokkolása",
        "recentchanges-label-plusminus": "Az oldal mérete ennyi bájttal módosult",
        "recentchanges-legend-heading": "Jelmagyarázat:",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lásd még: [[Special:NewPages|új lapok listája]])",
-       "rcnotefrom": "Alább a <b>$2</b> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).",
+       "rcnotefrom": "Alább a <strong>$3 $4</strong> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).",
        "rclistfrom": "$3 $2 után történt változtatások megtekintése",
        "rcshowhideminor": "apró szerkesztések $1",
        "rcshowhideminor-show": "megjelenítése",
        "largefileserver": "A fájl mérete meghaladja a kiszolgálón beállított maximális értéket.",
        "emptyfile": "Az általad feltöltött fájl üresnek tűnik.\nEz valószínűleg azért van, mert hibásan adtad meg a feltöltendő fájl nevét.\nEllenőrizd, hogy valóban fel akarod-e tölteni ezt a fájlt.",
        "windows-nonascii-filename": "A wiki nem támogatja a speciális karaktereket tartalmazó fájlneveket.",
-       "fileexists": "<strong>[[:$1]]</strong> névvel már létezik egy állomány.\nEllenőrizd, hogy biztosan felül akarod-e írni! [[$1|thumb]]",
+       "fileexists": "<strong>[[:$1]]</strong> névvel már létezik egy állomány. Ellenőrizd, hogy biztosan felül akarod-e írni!\n[[$1|thumb]]",
        "filepageexists": "Ehhez a fájlnévhez már létezik leírás a <strong>[[:$1]]</strong> lapon, de jelenleg nincs feltöltve ilyen nevű fájl.\nA leírás, amit ebbe az űrlapba írsz, nem fogja felülírni a már létezőt.\nHa meg szeretnéd változtatni a leírást, meg kell nyitnod szerkesztésre a lapjot.\n[[$1|thumb]]",
-       "fileexists-extension": "Már van egy hasonló nevű feltöltött fájl: [[$2|thumb]]\n* A feltöltendő fájl neve: <strong>[[:$1]]</strong>\n* A már létező fájl neve: <strong>[[:$2]]</strong>\nKérjük, hogy válassz másik nevet.",
+       "fileexists-extension": "Már van egy hasonló nevű feltöltött fájl: [[$2|thumb]]\n* A feltöltendő fájl neve: <strong>[[:$1]]</strong>\n* A már létező fájl neve: <strong>[[:$2]]</strong>\nSzeretnél egy jobban megkülönböztethető nevet használni?",
        "fileexists-thumbnail-yes": "A fájl egy kisméretű képnek ''(bélyegképnek)'' tűnik. [[$1|thumb]]\nKérjük, hogy ellenőrizd a(z) <strong>[[:$1]]</strong> fájlt.\nHa az ellenőrzött fájl ugyanakkora, mint az eredeti méretű kép, akkor nincs szükség bélyegkép feltöltésére.",
        "file-thumbnail-no": "A fájlnév a(z) <strong>$1</strong> karakterlánccal kezdődik.\nÚgy tűnik, hogy ez egy kisméretű kép ''(bélyegkép)''.\nHa rendelkezel a teljesméretű képpel, akkor töltsd fel azt, egyébként kérjük, hogy változtasd meg a fájlnevet.",
        "fileexists-forbidden": "Már létezik egy ugyanilyen nevű fájl, és nem lehet felülírni.\nHa még mindig fel szeretnéd tölteni a fájlt, menj vissza, és adj meg egy új nevet. [[File:$1|thumb|center|$1]]",
        "uploadwarning": "Feltöltési figyelmeztetés",
        "uploadwarning-text": "Kérlek módosítsd a fájl leírását alább, majd próbáld újra.",
        "savefile": "Fájl mentése",
-       "uploadedimage": "„[[$1]]” felküldve",
-       "overwroteimage": "feltöltötte a(z) „[[$1]]” fájl új változatát",
        "uploaddisabled": "Feltöltések kikapcsolva",
        "copyuploaddisabled": "A feltöltés URL alapján le van tiltva.",
        "uploaddisabledtext": "A fájlfeltöltés nem engedélyezett.",
        "license-header": "Licenc",
        "nolicense": "Válassz licencet!",
        "license-nopreview": "(Előnézet nem elérhető)",
-       "upload_source_url": " (egy érvényes, nyilvánosan elérhető URL)",
-       "upload_source_file": " (egy fájl a számítógépeden)",
+       "upload_source_url": "(a kiválasztott fájlod egy nyilvánosan elérhető URL-ről)",
+       "upload_source_file": "(a számítógépeden kiválasztott fájl)",
+       "listfiles-delete": "törlés",
        "listfiles-summary": "Ezen a speciális lapon látható az összes feltöltött fájl.",
        "listfiles_search_for": "Keresés fájl nevére:",
        "imgfile": "fájl",
        "statistics-mostpopular": "Legtöbbször megtekintett lapok",
        "doubleredirects": "Dupla átirányítások",
        "doubleredirectstext": "Ez a lap azokat a lapokat listázza, melyek átirányító lapokra irányítanak át.\nMinden sor tartalmaz egy hivatkozást az első, valamint a második átirányításra, valamint a második átirányítás céljára, ami általában a valódi céllap, erre kellene az első átirányításnak mutatnia.\nAz <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.",
-       "double-redirect-fixed-move": "[[$1]] átnevezve, a továbbiakban átirányításként működik a(z) [[$2]] lapra",
+       "double-redirect-fixed-move": "[[$1]] áthelyezve.\nAutomatikusan frissült, és mostantól a(z) [[$2]] lapra irányít át.",
        "double-redirect-fixed-maintenance": "[[$1]] dupla átirányítás automatikus javítása karbantartás során a következőre: [[$2]]",
        "double-redirect-fixer": "Átirányításjavító",
        "brokenredirects": "Nem létező lapra mutató átirányítások",
        "protectedpages-indef": "Csak a meghatározatlan idejű védelmek",
        "protectedpages-cascade": "Csak a kaszkádvédelmek",
        "protectedpagesempty": "Jelenleg nincsenek ilyen paraméterekkel védett lapok.",
+       "protectedpages-timestamp": "Időbélyeg",
+       "protectedpages-expiry": "Lejárat",
+       "protectedpages-reason": "Indoklás",
+       "protectedpages-unknown-timestamp": "Ismeretlen",
+       "protectedpages-unknown-performer": "Ismeretlen felhasználó",
        "protectedtitles": "Létrehozás ellen védett lapok",
        "protectedtitlesempty": "Jelenleg nincsenek ilyen típusú védett lapok.",
        "listusers": "Szerkesztők",
        "listgrouprights-removegroup-self": "eltávolíthatja a következő {{PLURAL:$2|csoportból|csoportokból}} a saját fiókját: $1",
        "listgrouprights-addgroup-self-all": "az összes csoportot hozzáadhatja a saját fiókjához",
        "listgrouprights-removegroup-self-all": "az összes csoporból eltávolíthatja a saját fiókját",
+       "listgrouprights-namespaceprotection-namespace": "Névtér",
+       "trackingcategories-nodesc": "Nem található leírás.",
+       "trackingcategories-disabled": "A kategória le van tiltva",
        "mailnologin": "Nincs feladó",
        "mailnologintext": "Ahhoz hogy másoknak e-mailt küldhess, [[Special:UserLogin|be kell jelentkezned]] és meg kell adnod egy érvényes e-mail címet a [[Special:Preferences|beállításaidban]].",
        "emailuser": "E-mail küldése ezen szerkesztőnek",
        "watchlist-details": "A vitalapokon kívül {{PLURAL:$1|egy|$1}} lap van a figyelőlistádon.",
        "wlheader-enotif": "Az e-mailen keresztül történő értesítés engedélyezve.",
        "wlheader-showupdated": "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagítva''' láthatók.",
-       "wlnote2": "Alább az utolsó {{PLURAL:$1| <strong> $1 </strong> óra}} változásai láthatók. A lista frissítésének ideje  $2 $3",
+       "wlnote": "Alább {{PLURAL:$1|az utolsó változás|az utolsó <strong>$1</strong> változás}} látható az elmúlt {{PLURAL:$2|órában|<strong>$2</strong> órában}}, $3 $4-kor.",
        "wlshowlast": "Az elmúlt $1 órában | $2 napon | $3 történt változtatások legyenek láthatóak",
        "watchlist-options": "A figyelőlista beállításai",
        "watching": "Figyelés...",
        "enotif_reset": "Az összes lap megjelölése felkeresettként",
        "enotif_impersonal_salutation": "{{SITENAME}} felhasználó",
        "enotif_subject_deleted": "$2 törölte a $1 {{SITENAME}} oldalt.",
+       "enotif_subject_created": "$2 létrehozta a(z) $1 {{SITENAME}} oldalt",
        "enotif_subject_moved": "$2 átmozgatta a $1 {{SITENAME}} oldalt.",
        "enotif_subject_restored": "$2 visszaállította a $1 {{SITENAME}} oldalt.",
-       "enotif_subject_changed": "$2 megváltoztatta a $1 {{SITENAME}} oldalt.",
+       "enotif_subject_changed": "$2 megváltoztatta a(z) $1 {{SITENAME}} oldalt",
        "enotif_body_intro_deleted": "$2 törölte a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd $3.",
        "enotif_body_intro_created": "$2 létrehozta a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
        "enotif_body_intro_moved": "$2 átmozgatta a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
        "protect-locked-blocked": "Nem változtathatod meg a védelmi szinteket, amíg blokkolnak. Itt vannak a(z)\n'''$1''' lap jelenlegi beállításai:",
        "protect-locked-dblock": "A védelmi szinteket egy aktív adatbázis zárolás miatt nem változtathatod meg.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
        "protect-locked-access": "A fiókod számára nem engedélyezett a védelmi szintek megváltoztatása.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
-       "protect-cascadeon": "A lap le van védve, mert {{PLURAL:$1|tartalmazza az alábbi lap, amelyen|tartalmazzák az alábbi lapok, amelyeken}}\nbe van kapcsolva a kaszkád védelem.\nMegváltoztathatod ezen lap védelmi szintjét, de az nem lesz hatással a kaszkád védelemre.",
+       "protect-cascadeon": "A lap jelenleg le van védve, mert {{PLURAL:$1|tartalmazza az alábbi lap, amelyen|tartalmazzák az alábbi lapok, amelyeken}} be van kapcsolva a kaszkád védelem.\nEzen lap védelmi szintjének megváltoztatása nem lesz hatással a kaszkád védelemre.",
        "protect-default": "Minden szerkesztő számára engedélyezett",
        "protect-fallback": "\"$1\" engedély szükséges hozzá",
        "protect-level-autoconfirmed": "Csak automatikusan ellenőrzött szerkesztőknek engedélyezett (nem vagy frissen regisztráltaknak nem)",
        "allmessages-prefix": "Előtag szerint:",
        "allmessages-language": "Nyelv:",
        "allmessages-filter-submit": "Szűrés",
+       "allmessages-filter-translate": "Fordítás",
        "thumbnail-more": "A kép nagyítása",
        "filemissing": "A fájl nincs meg",
        "thumbnail_error": "Hiba a bélyegkép létrehozásakor: $1",
        "import-error-create": "„$1” lap nem került importálásra, mert nem hozhatod létre azt.",
        "import-error-interwiki": "„$1” lap nem került importálásra, mert a név külső hivatkozásokra van fenntartva (interwiki).",
        "import-error-special": "„$1” lap nem került importálásra, mert olyan speciális névtérbe tartozik, amelyen nem engedélyezettek a lapok.",
-       "import-error-invalid": "„$1” lap nem került importálásra, mert a neve nem érvényes.",
+       "import-error-invalid": "„$1” lap nem került importálásra, mert a név, amelyen importálásra kerülne nem érvényes ezen a wikin.",
        "import-options-wrong": "Rossz {{PLURAL:$2|opció|opciók}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "A megadott gyökér oldal címe érvénytelen.",
        "import-rootpage-nosubpage": "A(z) \"$1\" névtér nem engedi meg aloldalak használatát.",
        "importlogpage": "Importnapló",
        "importlogpagetext": "Lapok szerkesztési előzményekkel történő adminisztratív imporálása más wikikből.",
        "import-logentry-upload": "[[$1]] importálása fájlfeltöltéssel kész",
-       "import-logentry-upload-detail": "{{PLURAL:$1|egy|$1}} változat",
+       "import-logentry-upload-detail": "$1 változat importálva",
        "import-logentry-interwiki": "$1 más wikiből áthozva",
-       "import-logentry-interwiki-detail": "{{PLURAL:$1|egy|$1}} változat innen: $2",
+       "import-logentry-interwiki-detail": "$1 változat innen: $2",
        "javascripttest": "JavaScript tesztelés",
        "javascripttest-title": "$1 tesztek futtatása",
        "javascripttest-pagetext-noframework": "Ez az oldal JavaStript tesztek futtatására van fenntartva.",
        "version-entrypoints": "Belépési pont URL-címek",
        "version-entrypoints-header-entrypoint": "Belépési pont",
        "version-entrypoints-header-url": "URL",
+       "redirect-lookup": "Keresés:",
+       "redirect-value": "Érték:",
        "redirect-user": "Felhasználói azonosító",
+       "redirect-page": "Lapazonosító",
        "redirect-revision": "Oldal felülvizsgálata",
        "redirect-file": "Fájlnév",
        "redirect-not-exists": "Érték nem található",
        "htmlform-selectorother-other": "egyéb",
        "htmlform-no": "Nem",
        "htmlform-yes": "Igen",
+       "htmlform-chosen-placeholder": "Válasszon egy opciót",
+       "htmlform-cloner-delete": "Eltávolítás",
+       "htmlform-cloner-required": "Legalább egy érték szükséges.",
        "sqlite-has-fts": "$1 teljes szöveges keresés támogatással",
        "sqlite-no-fts": "$1 teljes szöveges keresés támogatása nélkül",
        "logentry-delete-delete": "$1 törölte a következő lapot: $3",
        "api-error-overwrite": "Létező fájlok felülírására nem engedélyezett.",
        "api-error-stashfailed": "Belső hiba: a kiszolgálünak nem sikerült eltárolni az ideiglenes fájlt.",
        "api-error-publishfailed": "Belső hiba: a kiszolgálónak nem sikerült közzétennie az ideiglenes fájlt.",
+       "api-error-stasherror": "Hiba történt a fájl feltöltése közben.",
        "api-error-timeout": "A kiszolgáló nem adott választ a várt időn belül.",
        "api-error-unclassified": "Ismeretlen hiba történt",
        "api-error-unknown-code": "Ismeretlen hiba: „$1”",
        "duration-centuries": "{{PLURAL:$1|egy|$1}} évszázad",
        "duration-millennia": "{{PLURAL:$1|egy|$1}} évezred",
        "rotate-comment": "Elforgattam a képet $1 fokkal, az óramutató járásával megegyező irányban",
+       "limitreport-cputime": "A CPU idő használata",
+       "limitreport-cputime-value": "$1 másodperc",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bájt}}",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bájt}}",
        "expandtemplates": "Sablonok kibontása",
index d9cabd3..07f2fd1 100644 (file)
        "searchprofile-advanced-tooltip": "Cercar in spatios de nomines personalisate",
        "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Relevantia: $1%",
        "search-redirect": "(redirection ab $1)",
        "search-section": "(section $1)",
        "search-file-match": "(corresponde al contento del file)",
        "uploadwarning": "Advertimento de incargamento",
        "uploadwarning-text": "Per favor modifica le description del file ci infra e reproba.",
        "savefile": "Salveguardar file",
-       "uploadedimage": "incargava \"[[$1]]\"",
-       "overwroteimage": "incargava un nove version de \"[[$1]]\"",
        "uploaddisabled": "Incargamento de files disactivate",
        "copyuploaddisabled": "Incargamento per URL disactivate.",
        "uploaddisabledtext": "Le incargamento de files es disactivate.",
index bfb5a74..360cf5c 100644 (file)
        "badtitle": "Madi a titulo",
        "badtitletext": "Ti kiniddaw idi a titulo ti panid ket imbalido, blanko, wenno maysa a saan a husto a naisilpo a silpo ti pagsasao wenno interwiki a titulo.\nMabalin nga aglaon ti a maysa wenno ad-adu a karakter a saan a mausar kadagiti titulo.",
        "perfcached": "Ti sumaganad a datos ket naidulin ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagan|dagiti $1 a nagbanagan}} ket magun-od idiay nagidulinan.",
-       "perfcachedts": "Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan|dagiti $4 nagbanagan}} ket magun-od idiay pagidulinan.",
+       "perfcachedts": "Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu {{PLURAL:$4|iti maysa a nagbanagan|kadagiti $4 a nagbanagan}} ket magun-od iti pagidulinan.",
        "querypage-no-updates": "Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. \nSaan a mapasadiwa ita dagiti datos ditoy.",
        "viewsource": "Kitaen ti taudan",
        "viewsource-title": "Kitaen ti taudan para iti $1",
        "userpage-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro. \nPangngaasi a kitaem no kayatmo ti agpartuat/agurnos iti daytoy a panid.",
        "userpage-userdoesnotexist-view": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro.",
        "blocked-notice-logextract": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a listaan ti pannakaserra ket naited dita baba para iti reperensia:",
-       "clearyourcache": "<strong>Nota:</strong> Kalpasan ti panangidulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* <strong>Firefox / Safari:</strong>  Tenglen ti <em>Shift</em> bayat a pinduten ti <em>Reload</em>, wenno talmegan ti <em>Ctrl-F5</em> wenno <em>Ctrl-R</em> (<em>⌘-R</em> iti Mac)\n* <strong>Google Chrome:</strong> Talmegan ti <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> iti Mac)\n* <strong>Internet Explorer:</strong> Tenglen ti <em>Ctrl</em> bayat a pinduten ti <em>Refresh</em>, wenno talmegan ti <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Dalusan ti cache iidiay <em>Tools → Preferences</em>",
+       "clearyourcache": "<strong>Nota:</strong> Kalpasan ti panangidulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* <strong>Firefox / Safari:</strong>  Tenglen ti <em>Shift</em> bayat a pinduten ti <em>Reload</em>, wenno talmegan ti <em>Ctrl-F5</em> wenno <em>Ctrl-R</em> (<em>⌘-R</em> iti Mac)\n* <strong>Google Chrome:</strong> Talmegan ti <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> iti Mac)\n* <strong>Internet Explorer:</strong> Tenglen ti <em>Ctrl</em> bayat a pinduten ti <em>Refresh</em>, wenno talmegan ti <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Dalusan ti cache idiay <em>Tools → Preferences</em>",
        "usercssyoucanpreview": "<strong>Paammo:</strong>  Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a CSS sakbay nga agidulin.",
        "userjsyoucanpreview": "<strong>Pammo:</strong> Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a JavaScript sakbay nga agidulin.",
        "usercsspreview": "<strong>Laglagipem nga ipadpadasmo laeng ti bukodmo a CSS ti agar-aramat.\nSaan pay a naidulin!</strong>",
        "titlematches": "Dagiti kapadpada a titulo ti panid",
        "textmatches": "Dagiti agpapada a testo ti panid",
        "notextmatches": "Awan dagiti kapadpada a testo ti panid",
-       "prevn": "napalabas {{PLURAL:$1|$1}}",
-       "nextn": "sumaruno {{PLURAL:$1|$1}}",
+       "prevn": "napalabas {{PLURAL:$1|$1}}",
+       "nextn": "sumaruno {{PLURAL:$1|$1}}",
        "prevn-title": "Napalabas a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}",
        "nextn-title": "Sumaruno a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}",
        "shown-title": "Ipakita ti $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}  ti tunggal maysa a panid",
-       "viewprevnext": "Kitaen ($1 {{int:pipe-separator}} $2) ($3)",
+       "viewprevnext": "Kitaen dagiti ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>Adda panid a nanaganan ti \"[[:$1]]\" iti daytoy a wiki.</strong> {{PLURAL:$2|0=|Kitaen pay ti sabali a nabirukan a nagbanagan ti panagbiruk.}}",
        "searchmenu-new": "<strong>Partuaten ti panid ti \"[[:$1]]\" iti daytoy a wiki!</strong> {{PLURAL:$2|0=|Kitaen pay ti panid a nabirukan ti panagbirukmo.|Kitaen pay dagiti resulta a nabirukan ti panagbiruk.}}",
        "searchprofile-articles": "Dagiti naglaon a panid",
        "searchprofile-advanced-tooltip": "Agbirukka kadagiti naiduma a nagan ti espasio",
        "search-result-size": "$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})",
        "search-result-category-size": "{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 a subkategoria|dagiti $2  a subkategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})",
-       "search-result-score": "Kaitutopan: $1%",
        "search-redirect": "(baw-ing ti $1)",
        "search-section": "(paset $1)",
        "search-file-match": "(maipada ti linaon a papeles)",
        "uploadwarning": "Ballaag ti panagikarga",
        "uploadwarning-text": "Pangngaasi a baliwam ti deskripsion ti papeles dita baba ken padasen manen.",
        "savefile": "Idulin ti papeles",
-       "uploadedimage": "naikarga ti \"[[$1]]\"",
-       "overwroteimage": "nagikarga ti baro a bersion ti \"[[$1]]\"",
        "uploaddisabled": "Nabaldado dagiti panagikarga.",
        "copyuploaddisabled": "Nabaldado ti panagikarga babaen ti URL.",
        "uploaddisabledtext": "Nabaldado dagiti panagikarga ti papeles.",
        "notargettext": "Saanmo a nainagan ti puntaan a panid wenno agar-aramat ti mangtungpal iti daytoy nga annong.",
        "nopagetitle": "Awan ti kasta a puntaan a panid",
        "nopagetext": "Awan ti puntaan a panid a nainaganam.",
-       "pager-newer-n": "{{PLURAL:$1|nabarbaro 1|dagiti nabarbaro $1}}",
-       "pager-older-n": "{{PLURAL:$1|nadadaan 1|nadadaan $1}}",
+       "pager-newer-n": "{{PLURAL:$1|nabarbaro a 1|nabarbaro a $1}}",
+       "pager-older-n": "{{PLURAL:$1|nadadaan a 1|nadadaan a $1}}",
        "suppress": "Pakapansin",
        "querypage-disabled": "Daytoy nga espesial a panid ket nabaldado gapu kadagiti rason ti kasayaat ti panagpataray.",
        "booksources": "Dagiti taudan ti libro",
        "linksearch-pat": "Tabas ti panagbiruk:",
        "linksearch-ns": "Nagan ti espasio:",
        "linksearch-ok": "Biruken",
-       "linksearch-text": "Ti naataap a tarheta a kas ti \"*.wikipedia.org\" ket mabalin nga usaren.\nMasapul ti saan a basbassit ngem kangatuan a dominio, kas pagarigan \"*.org\".<br />\n{{PLURAL:$2|Ti protokol|Dagiti protokol}} a nasuportaran: <code>$1</code> (kasisigud iti http:// no awan ti nainaganan a protokol).",
+       "linksearch-text": "Dagiti naatap a tarheta a kas ti \"*.wikipedia.org\" ket mabalin nga usaren.\nMasapul ti saan a basbassit ngem kangatuan a dominio, kas pagarigan \"*.org\".<br />\n{{PLURAL:$2|Ti protokol|Dagiti protokol}} a nasuportaran: <code>$1</code> (kasisigud iti http:// no awan ti nainaganan a protokol).",
        "linksearch-line": "Ti $1 ket naisilpo manipud ti $2",
        "linksearch-error": "Ti naatap a tarheta ket mabalin nga agparang laeng iti rugi ti nagan ti agsangaili.",
        "listusersfrom": "Iparang dagiti agar-aramat a mangrugi iti:",
        "listusers-noresult": "Awan ti nasarakan nga agar-aramat.",
        "listusers-blocked": "(naserraan)",
        "activeusers": "Listaan dagiti aktibo nga agar-aramat",
-       "activeusers-intro": "Daytoy ti listaan dagiti agar-aramat nga adda inararamidda kadagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|a tignay|tigtignay}} iti napalabas {{PLURAL:$3|nga aldaw|$3 nga al-aldaw}}",
+       "activeusers-intro": "Daytoy ti listaan dagiti agar-aramat nga adda inar-aramid iti kaunegan dagiti napalabas a $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}.",
+       "activeusers-count": "$1 a {{PLURAL:$1|tignay|tigtignay}} iti napalabas {{PLURAL:$3|nga aldaw|a $3 nga al-aldaw}}",
        "activeusers-from": "Iparang dagiti agar-aramat a mangrugi iti:",
        "activeusers-hidebots": "Ilemmeng dagiti bot",
        "activeusers-hidesysops": "Ilemmeng dagiti administrador",
        "index-category-desc": "Ti panid ket addaan iti <code><nowiki>__INDEX__</nowiki></code> (ken adda iti nagan ti espasio a maipalubos ti wagayway), ken isu a naipagsurotan babaen dagiti robot ngem no iti kadawyan ket saan.",
        "post-expand-template-inclusion-category-desc": "Kalpasan ti panagpadakkel kadagiti amin a plantilia, ti kadakkel ti panid ket dakdakkel ngem ti <code>$wgMaxArticleSize</code>, isu a dagiti plantilia ket saan a napadakkel.",
        "post-expand-template-argument-category-desc": "Kalpasan ti panagpadakkel ti argumento ti plantilia (dagiti addaan iti tallo a pangrikep, kasla ti <code>{{{Foo}}}</code>), ti panid ket dakdakkel ngem ti <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Adu unay dagiti nangina nga annong ti parser (kasla ti <code>#ifexist</code>) a nairaman iti panid. Kitaen ti[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "expensive-parserfunction-category-desc": "Adu unay dagiti nangina nga annong ti parser (kasla ti <code>#ifexist</code>) a nairaman iti panid. Kitaen ti [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Kategoria a nainayon no ti panid ket aglaon ti nadadael a silpo ti papeles (ti silpo a panangisengngat ti papeles no awan ti papeles).",
        "hidden-category-category-desc": "Daytoy ket kategoria nga addaan iti <code><nowiki>__HIDDENCAT__</nowiki></code> , a mangpawil daytoy nga agparang kadagiti silpo ti kahon ti kategoria kadagiti panid, babaen ti kasisigud.",
        "trackingcategories-nodesc": "Awan ti magun-od a deskripsion.",
        "api-error-unknownerror": "Di ammo a biddut: \"$1\".",
        "api-error-uploaddisabled": "Nabaldado ti panagikarga iti daytoy a wiki.",
        "api-error-verification-error": "Mabalin a dakes daytoy a papeles, wenno addaan iti madi a pagpaatiddog.",
-       "duration-seconds": "$1 {{PLURAL:$1|segundo|segsegundo}}",
-       "duration-minutes": "$1 {{PLURAL:$1|minuto|minminuto}}",
-       "duration-hours": "$1 {{PLURAL:$1|oras|or-oras}}",
-       "duration-days": "$1 {{PLURAL:$1|aldaw|al-aldaw}}",
+       "duration-seconds": "$1 {{PLURAL:$1|segundo|segsegundo}}",
+       "duration-minutes": "$1 {{PLURAL:$1|minuto|minminuto}}",
+       "duration-hours": "$1 nga {{PLURAL:$1|oras|or-oras}}",
+       "duration-days": "$1 nga {{PLURAL:$1|aldaw|al-aldaw}}",
        "duration-weeks": "$1 {{PLURAL:$1|lawas|lawlawas}}",
        "duration-years": "$1 {{PLURAL:$1|tawen|tawtawen}}",
        "duration-decades": "$1 {{PLURAL:$1|dekada|dekdekada}}",
index d9180fa..59fd0fc 100644 (file)
        "hidetoc": "nascondi",
        "collapsible-collapse": "Comprimi",
        "collapsible-expand": "Espandi",
+       "confirmable-yes": "Sì",
+       "confirmable-no": "No",
        "thisisdeleted": "Vedi o ripristina $1?",
        "viewdeleted": "Vedi $1?",
        "restorelink": "{{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}",
        "searchprofile-advanced-tooltip": "Cerca nei namespace personalizzati",
        "search-result-size": "$1 ({{PLURAL:$2|una parola|$2 parole}})",
        "search-result-category-size": "{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sottocategoria|$2 sottocategorie}}, {{PLURAL:$3|1 file|$3 files}})",
-       "search-result-score": "Rilevanza: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(sezione $1)",
        "search-file-match": "(corrispondenza nel contenuto del file)",
        "uploadwarning": "Avviso di caricamento",
        "uploadwarning-text": "Per favore modifica qui sotto la descrizione del file e prova di nuovo.",
        "savefile": "Salva file",
-       "uploadedimage": "ha caricato \"[[$1]]\"",
-       "overwroteimage": "ha caricato una nuova versione di \"[[$1]]\"",
        "uploaddisabled": "Il caricamento dei file è disabilitato.",
        "copyuploaddisabled": "Il caricamento tramite URL è disabilitato.",
        "uploaddisabledtext": "Il caricamento dei file non è attivo.",
        "logentry-rights-rights": "$1 {{GENDER:$2|ha modificato}} l'appartenenza di $3 dal gruppo $4 al gruppo $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ha modificato}} l'appartenenza a gruppi di $3",
        "logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa|stato/a promosso/a}} automaticamente da $4 a $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ha caricato}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|ha caricato}} una nuova versione di $3.",
+       "logentry-upload-revert": "$1 {{GENDER:$2|ha caricato}} $3",
        "rightsnone": "(nessuno)",
        "feedback-bugornote": "Se si è in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnalate il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina \"[$3 $2]\", insieme al proprio nome utente e al browser in uso.",
        "feedback-subject": "Oggetto:",
index 2abccf1..b3ba7e9 100644 (file)
@@ -77,6 +77,7 @@
        "tog-watchdefault": "自分が編集したページやファイルをウォッチリストに追加",
        "tog-watchmoves": "自分が移動したページやファイルをウォッチリストに追加",
        "tog-watchdeletion": "自分が削除したページやファイルをウォッチリストに追加",
+       "tog-watchrollback": "ロールバックしたページをウォッチリストに追加",
        "tog-minordefault": "細部の編集に既定でチェックを入れる",
        "tog-previewontop": "プレビューを編集ボックスの前に配置",
        "tog-previewonfirst": "編集開始時にもプレビューを表示",
        "tog-fancysig": "署名をウィキ文として扱う (自動リンクなし)",
        "tog-uselivepreview": "ライブプレビューを使用 (開発中)",
        "tog-forceeditsummary": "要約欄が空欄の場合に確認を促す",
-       "tog-watchlisthideown": "ウォッチリストに自分の編集を表示しない",
-       "tog-watchlisthidebots": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92表示しない",
-       "tog-watchlisthideminor": "ウォッチリストに細部の編集を表示しない",
-       "tog-watchlisthideliu": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\83­ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92表示しない",
-       "tog-watchlisthideanons": "ウォッチリストに匿名利用者による編集を表示しない",
-       "tog-watchlisthidepatrolled": "ウォッチリストに巡回済みの編集を表示しない",
+       "tog-watchlisthideown": "自分の編集をウォッチリストに表示しない",
+       "tog-watchlisthidebots": "ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«表示しない",
+       "tog-watchlisthideminor": "細部の編集をウォッチリストに表示しない",
+       "tog-watchlisthideliu": "ã\83­ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«表示しない",
+       "tog-watchlisthideanons": "匿名利用者による編集をウォッチリストに表示しない",
+       "tog-watchlisthidepatrolled": "巡回済みの編集をウォッチリストに表示しない",
        "tog-ccmeonemails": "他の利用者に送信したメールの控えを自分にも送信",
        "tog-diffonly": "差分の下にページ内容を表示しない",
        "tog-showhiddencats": "隠しカテゴリを表示",
        "moredotdotdot": "続き...",
        "morenotlisted": "この一覧は完全ではありません。",
        "mypage": "ページ",
-       "mytalk": "トーク",
-       "anontalk": "ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81®ã\83\88ã\83¼ã\82¯",
+       "mytalk": "議論",
+       "anontalk": "ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81«ã\81¤ã\81\84ã\81¦ã\81®è­°è«\96",
        "navigation": "案内",
-       "and": "&#32;ã\81\8aã\82\88ã\81³&#32;",
+       "and": "&#32;ã\81¨",
        "qbfind": "検索",
        "qbbrowse": "閲覧",
        "qbedit": "編集",
        "searcharticle": "表示",
        "history": "ページの履歴",
        "history_short": "履歴",
-       "updatedmarker": "最終閲覧以降に変更されました",
+       "updatedmarker": "前回の閲覧以降に更新されました",
        "printableversion": "印刷用バージョン",
        "permalink": "この版への固定リンク",
        "print": "印刷",
        "hidetoc": "非表示",
        "collapsible-collapse": "折り畳む",
        "collapsible-expand": "展開する",
+       "confirmable-confirm": "本当にいいですか?",
+       "confirmable-yes": "はい",
+       "confirmable-no": "いいえ",
        "thisisdeleted": "$1を閲覧または復元しますか?",
        "viewdeleted": "$1を閲覧しますか?",
        "restorelink": "{{PLURAL:$1|削除された$1編集}}",
        "preview": "プレビュー",
        "showpreview": "プレビューを表示",
        "showdiff": "差分を表示",
+       "blankarticle": "<strong>警告:</strong>作成しようとしているページの内容がありません。{{Int:savearticle}}\"をもう一度クリックすると、中身の無いページが作成されます。",
        "anoneditwarning": "<strong>警告:</strong> ログインしていません。\n編集すると、IPアドレスがこのページの編集履歴に記録されます。",
        "anonpreviewwarning": "<em>ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。</em>",
        "missingsummary": "<strong>注意:</strong> 編集内容の要約が空欄です。\n「{{int:savearticle}}」をもう一度クリックすると、編集内容は要約なしで保存されます。",
        "rev-deleted-event": "(記録は除去されています)",
        "rev-deleted-user-contribs": "[利用者名またはIPアドレスは除去されました - その編集は投稿記録で非表示にされています]",
        "rev-deleted-text-permission": "この版は<strong>削除されています</strong>。\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+       "rev-suppressed-text-permission": "この版は<strong>秘匿されています</strong>。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
        "rev-deleted-text-unhide": "この版は<strong>削除されています</strong>。\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。\nこのまま[$1 この版を閲覧]できます。",
        "rev-suppressed-text-unhide": "この版は<strong>秘匿されています</strong>。\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。\nこのまま[$1 この版を閲覧]できます。",
        "rev-deleted-text-view": "この版は<strong>削除されています</strong>。\n内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
        "searchprofile-advanced-tooltip": "特定の名前空間内を検索",
        "search-result-size": "$1 ({{PLURAL:$2|$2 単語}})",
        "search-result-category-size": "{{PLURAL:$1|$1 件}} ({{PLURAL:$2|$2 下位カテゴリ}}、{{PLURAL:$3|$3 ファイル}})",
-       "search-result-score": "関連度: $1%",
        "search-redirect": "($1からのリダイレクト)",
        "search-section": "($1の節)",
        "search-file-match": "(ファイルの内容との一致)",
        "uploadwarning": "アップロード警告",
        "uploadwarning-text": "下記のファイル解説を修正して再試行してください。",
        "savefile": "ファイルを保存",
-       "uploadedimage": "「[[$1]]」をアップロードしました",
-       "overwroteimage": "「[[$1]]」の新しい版をアップロードしました",
        "uploaddisabled": "アップロード機能は無効になっています。",
        "copyuploaddisabled": "URL からのアップロードは無効になっています。",
        "uploaddisabledtext": "ファイルのアップロードは、無効になっています。",
        "nolicense": "選択なし",
        "licenses-edit": "ライセンスオプションを編集",
        "license-nopreview": "(プレビューはありません)",
-       "upload_source_url": "(有効かつ一般に公開されている URL)",
-       "upload_source_file": "(ã\81\82ã\81ªã\81\9fã\81®ã\82³ã\83³ã\83\94ã\83¥ã\83¼ã\82¿ã\83¼ä¸\8aã\81®ã\83\95ã\82¡ã\82¤ã\83«)",
+       "upload_source_url": "(一般に公開されている、有効な URL からファイルを選択)",
+       "upload_source_file": "(ã\81\82ã\81ªã\81\9fã\81®ã\82³ã\83³ã\83\94ã\83¥ã\83¼ã\82¿ã\83¼ä¸\8aã\81\8bã\82\89ã\83\95ã\82¡ã\82¤ã\83«ã\82\92é\81¸æ\8a\9e)",
        "listfiles-delete": "削除",
        "listfiles-summary": "この特別ページでは、アップロードされたファイルをすべて表示します。",
        "listfiles_search_for": "検索するメディア名:",
        "wlheader-enotif": "メール通知が有効になっています。",
        "wlheader-showupdated": "最終訪問以降に変更されたページは、<strong>太字</strong>で表示されます。",
        "wlnote": "$3 $4 までの{{PLURAL:$2|<strong>$2</strong>時間}}になされた{{PLURAL:$1|<strong>$1</strong>件の変更}}は以下の通りです。",
-       "wlshowlast": "次の期間で表示: $1時間、$2日間、$3",
+       "wlshowlast": "表示する期間: $1時間、$2日間、$3",
        "watchlist-options": "ウォッチリストのオプション",
        "watching": "ウォッチリストに追加中...",
        "unwatching": "ウォッチリストから除去中...",
        "import-error-create": "あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。",
        "import-error-interwiki": "ページ名が外部リンク (ウィキ間リンク) に予約されているため、ページ「$1」を取り込みませんでした。",
        "import-error-special": "ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みませんでした。",
-       "import-error-invalid": "名前が正しくないため、ページ「$1」を取り込みませんでした。",
+       "import-error-invalid": "ページ「$1」は、このウィキでは名前が無効であるため、取り込めませんでした。",
        "import-error-unserialize": "ページ「$1」の版 $2 はシリアライズ解除できませんでした。この版は $4 としてシリアライズされたコンテンツモデル $3 を使用していると報告されています。",
        "import-error-bad-location": "コンテンツモデル $3 はこのページではサポート外のため、モデル $3 を使用している版 $2 はこのウィキ上の「$1」に保存できません。",
        "import-options-wrong": "間違った{{PLURAL:$2|オプション}}です: <nowiki>$1</nowiki>",
        "importlogpage": "取り込み記録",
        "importlogpagetext": "管理された他のウィキから編集履歴を伴ったページ取り込みです。",
        "import-logentry-upload": "ファイルのアップロードにより[[$1]]を取り込みました",
-       "import-logentry-upload-detail": "$1{{PLURAL:$1|版}}",
+       "import-logentry-upload-detail": "$1{{PLURAL:$1|版}} をインポートしました",
        "import-logentry-interwiki": "$1をウィキ間移動しました",
-       "import-logentry-interwiki-detail": "$2の$1{{PLURAL:$1|版}}",
+       "import-logentry-interwiki-detail": "$2ã\81\8bã\82\89ã\82¤ã\83³ã\83\9dã\83¼ã\83\88æ¸\88ã\81¿ã\81®$1{{PLURAL:$1|ç\89\88}}",
        "javascripttest": "JavaScript をテスト中",
        "javascripttest-title": "$1 のテストの実行",
        "javascripttest-pagetext-noframework": "このページは JavaScript のテストを実行するために予約されています。",
        "autosumm-replace": "内容を「$1」で置換",
        "autoredircomment": "[[$1]]への転送ページ",
        "autosumm-new": "ページの作成:「$1」",
+       "autosumm-newblank": "空白のページを作成しました",
        "size-bytes": "$1バイト",
        "size-kilobytes": "$1キロバイト",
        "size-megabytes": "$1メガバイト",
        "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": "おっと! あなたのウィキのデフォルト外装「<code>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\nあなたのインストールには以下の外装が含まれています。外装の有効化とデフォルトの選択については、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル: 外装設定] をご覧ください。\n\n$2\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これにはいくつかの外装と拡張機能が含まれています。 <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>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\n外装をインストールしていません。\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これには外装と拡張機能がいくつか含まれています。 <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 ('''無効''')"
 }
index 13cea46..6046b72 100644 (file)
@@ -7,7 +7,8 @@
                        "Bakytgul Salykhova",
                        "Daniyar",
                        "GaiJin",
-                       "Kaztrans"
+                       "Kaztrans",
+                       "Balnur.s"
                ]
        },
        "tog-underline": "Сілтеменің астын сызу:",
        "hidetoc": "жасыру",
        "collapsible-collapse": "Түру",
        "collapsible-expand": "Жазу",
+       "confirmable-yes": "Иә",
+       "confirmable-no": "Жоқ",
        "thisisdeleted": "$1 қарайсыз ба немесе қалпына келтіресіз бе?",
        "viewdeleted": "$1 қарайсыз ба?",
        "restorelink": "{{PLURAL:$1|жойылған өңдемені|$1 жойылған өңдемені}}",
        "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]]» файлын жүктеді",
-       "overwroteimage": "«[[$1]]» деген файлдың жаңа нұсқасын жүктеді",
        "uploaddisabled": "Жүктеу өшірілген",
        "copyuploaddisabled": "URL арқылы жүктеу өшірілген.",
        "uploaddisabledtext": "Файл жүктеу өшірілген.",
index d49f438..bc0d91a 100644 (file)
        "preview": "미리 보기",
        "showpreview": "미리 보기",
        "showdiff": "차이 보기",
+       "blankarticle": "<strong>경고:</strong> 만들려는 문서가 비어 있습니다.\n\"{{int:savearticle}}\"을 다시 클릭하면, 문서에 내용이 없이 만들어집니다.",
        "anoneditwarning": "'''경고''': 로그인하고 있지 않습니다.\nIP 주소가 문서 역사에 남게 됩니다.",
        "anonpreviewwarning": "'''로그인하고 있지 않습니다. 문서를 저장하면 당신의 IP 주소가 문서 역사에 남게 됩니다.'''",
        "missingsummary": "'''알림:''' 편집 요약을 적지 않았습니다.\n이대로 \"{{int:savearticle}}\"을 클릭하면 편집 요약 없이 저장됩니다.",
        "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": "파일 올리기 기능이 비활성화되어 있습니다.",
        "licenses-edit": "라이선스 옵션 편집",
        "license-nopreview": "(미리 보기 불가능)",
        "upload_source_url": "(올바르고, 공개적으로 접근할 수 있는 URL)",
-       "upload_source_file": " (당신의 컴퓨터에 있는 파일)",
+       "upload_source_file": "(당신의 컴퓨터에서 선택한 파일)",
        "listfiles-delete": "삭제",
        "listfiles-summary": "이 특수 문서는 모든 올려진 파일을 보여줍니다.",
        "listfiles_search_for": "다음 미디어 이름 검색:",
        "undeletedrevisions-files": "{{PLURAL:$1|판 1개|판 $1개}}와 {{PLURAL:$2|파일 1개|파일 $2개}}를 되살렸습니다",
        "undeletedfiles": "{{PLURAL:$1|파일 1개|파일 $1개}}를 되살렸습니다",
        "cannotundelete": "되살리는 데 실패했습니다:\n$1",
-       "undeletedpage": "'''$1 문서를 되살렸습니다.'''\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제와 되살리기 기록을 볼 수 있습니다.",
+       "undeletedpage": "<strong>$1 문서를 되살렸습니다.</strong>\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제 및 되살리기 기록을 볼 수 있습니다.",
        "undelete-header": "최근에 삭제한 문서에 대한 기록은 [[Special:Log/delete|여기]]에서 볼 수 있습니다.",
        "undelete-search-title": "삭제된 문서 검색",
        "undelete-search-box": "삭제된 문서 검색",
index 583b573..da11257 100644 (file)
        "talkpagelinktext": "Klaaf",
        "specialpage": "{{int:nstab-special}}",
        "personaltools": "Metmaacher Werkzüch",
-       "postcomment": "Neu Avschnedd op de Klaafsigg donn",
        "articlepage": "Aanluure wat op dä Sigg drop steiht",
        "talk": "Klaafe",
        "views": "Aansichte",
        "externaldberror": "Do wor ene Fähler en de externe Daatebank, oder Do darfs Ding extern Daate nit ändere. Dat Aanmelde jingk jedenfalls donevve.",
        "login": "Enlogge",
        "nav-login-createaccount": "Enlogge, Aanmälde",
-       "loginprompt": "Öm heh enlogge ze künne, muss De de <i lang=\"en\">Cookies</i> en Dingem Brauser enjeschalt han.",
        "userlogin": "Enlogge odder Metmaacher wääde",
        "userloginnocreate": "Enlogge",
        "logout": "Ußlogge",
        "searchprofile-advanced-tooltip": "Donn en ußjesohte Appachtemangs sööke",
        "search-result-size": "$1 ({{PLURAL:$2|Eij Woot|$2 Wööter|Keij Woot}})",
        "search-result-category-size": "{{PLURAL:$1|1 Saach|$1 Saache|0 Saache}} ({{PLURAL:$2|1 Ongerjropp|$2 Ongerjroppe|0 Ongerjroppe}}, {{PLURAL:$3|1 Datei|$3 Dateie|0 Dateie}})",
-       "search-result-score": "Jeweesch: $1%",
        "search-redirect": "(Ömleitung $1)",
        "search-section": "(Avschnett $1)",
        "search-file-match": "(en dä Dattei dren)",
        "uploadwarning": "Warnung beim Huhlade",
        "uploadwarning-text": "Donn onge dä Täx övver di Dattei ändere, un versöhg_et norr_ens.",
        "savefile": "Datei avspeichere",
-       "uploadedimage": "hät huhjelade: „[[$1]]“",
-       "overwroteimage": "hät en neue Version huhjelade vun: „[[$1]]“",
        "uploaddisabled": "Huhlade jesperrt",
        "copyuploaddisabled": "Et Huhlaade us URLs es afjeschalldt",
        "uploaddisabledtext": "Et Huhlade es jesperrt.",
        "license-nopreview": "(Kein Vör-Aansich ze hann)",
        "upload_source_url": " (richtije öffentlije URL)",
        "upload_source_file": " (en Datei op Dingem Kompjuter)",
+       "listfiles-delete": "fottschmieße",
        "listfiles-summary": "Heh sin de huhjelade Dateije opjeleß.",
        "listfiles_search_for": "Sök noh däm Name vun dä Datei:",
        "imgfile": "Dattei",
        "watchlist-details": "Do häß {{PLURAL:$1|ein Sigg|$1 Sigge|kein Sigg}} en Dinge Oppaßleß{{PLURAL:$1|, un di Klaafsigg dohzoh|, un de Klaafsigge dohzoh|}}.",
        "wlheader-enotif": "Et <i lang=\"en\">e-mail</i> Schecke es enjeschalt.",
        "wlheader-showupdated": "Wann se Einer jeändert hätt, zickdäm De se et letzte Mol aanjeluurt häs, sin die Sigge <strong>extra markeet</strong>.",
-       "wlnote2": "Heh sin de Änderonge us de läzde {{PLURAL:$1|Schtond|<strong>$1</strong> Schtonde|kein Schtond}} bes zom $2 öm $3 Uhr.",
+       "wlnote": "{{PLURAL:$1|Hee es de letzte Änderung us|Hee sin de letzte <strong>$1</strong> Änderunge us|Mer han kein Äbderunge en}} de letzte {{PLURAL:$2|Stund|<strong>$2</strong> Stunde|<strong>noll</strong> Stunde}} zigg em $3 öm $4 Uhr.",
        "wlshowlast": "Zeich de letzte | $1 | Stunde | $2 | Dage | $3 | aan, dun",
        "watchlist-options": "Eijeschaffte fun de Oppassless",
        "watching": "Drop oppasse…",
        "autosumm-replace": "Dä jannze Enhallt fon dä Sigk ußjetuusch: '$1'",
        "autoredircomment": "Leit öm op „[[$1]]“",
        "autosumm-new": "De Sigg wood neu aanjelaat met däm Aanfang: $1",
+       "autosumm-newblank": "En läddijje Sigg wood aanjelaat",
        "size-bytes": "$1&nbsp;Bytes",
        "size-kilobytes": "$1&nbsp;KB",
        "size-megabytes": "$1&nbsp;MB",
        "version-hook-name": "De Schnettstelle ier Name",
        "version-hook-subscribedby": "Opjeroofe vun",
        "version-version": "(Väsjohn $1)",
+       "version-no-ext-name": "[keine Nahme]",
        "version-license": "MediaWiki sing Lėzänz",
        "version-ext-license": "‎Lėzänz",
        "version-ext-colheader-name": "Zohsazprojramm",
+       "version-skin-colheader-name": "Et Ußsinn",
        "version-ext-colheader-version": "Väsjohn",
        "version-ext-colheader-license": "Lėzänz",
        "version-ext-colheader-description": "Beschrevve",
        "expand_templates_remove_nowiki": "Donn de <nowiki>-Befähle ongerdröcke en dämm, wadd_eruß kütt",
        "expand_templates_generate_xml": "Och dä XML-Parser-Boum zeije",
        "expand_templates_generate_rawhtml": "Donn de Röh HTML Ußjaav aanzeije",
-       "expand_templates_preview": "Vör-Aansich"
+       "expand_templates_preview": "Vör-Aansich",
+       "pagelanguage": "De Schprohch för di Sigg faßlääje",
+       "pagelang-name": "Sigg",
+       "pagelang-language": "De Schprooch",
+       "pagelang-use-default": "Nemm de Schtandatt_Schprohch",
+       "pagelang-select-lang": "Söhg_en Schprooch uß"
 }
index 3cf2b88..65f2a50 100644 (file)
        "fileexists-forbidden": "Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.\n[[File:$1|thumb|center|$1]]",
        "uploadwarning": "Hişyariya barkirinê",
        "savefile": "Dosyayê tomar bike",
-       "uploadedimage": "\"[[$1]]\" hate barkirin",
-       "overwroteimage": "versiyonekî nû ya \"[[$1]]\" hate barkirin",
        "uploaddisabled": "Barkirin hatîye qedexekirin",
        "uploaddisabledtext": "Barkirinê data'yan  hatiye qedexekirin.",
        "uploadvirus": "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
index 14f9fa3..5da1b59 100644 (file)
        "searcharticle": "Ire",
        "history": "Historia paginae",
        "history_short": "Historia",
+       "updatedmarker": "mutata postquam vidi",
        "printableversion": "Forma impressibilis",
        "permalink": "Nexus perpetuus",
        "print": "Imprimere",
        "view": "Legere",
+       "view-foreign": "Legere apud {{grammar:accusative|$1}}",
        "edit": "Recensere",
        "create": "Creare",
        "editthispage": "Recensere hanc paginam",
        "talkpagelinktext": "Disputatio",
        "specialpage": "Pagina specialis",
        "personaltools": "Instrumenta personalia",
-       "postcomment": "Nova pars",
        "articlepage": "Videre rem",
        "talk": "Disputatio",
        "views": "Visae",
        "yourdomainname": "Regnum tuum:",
        "login": "Conventum aperire",
        "nav-login-createaccount": "Conventum aperire / conventum creare",
-       "loginprompt": "Cookies potestatem facere debes ut conventum aperire.",
        "userlogin": "Conventum aperire / conventum creare",
        "userloginnocreate": "Conventum aperire",
        "logout": "Conventum concludere",
        "gotaccount": "Habesne iam rationem? '''$1'''.",
        "gotaccountlink": "Conventum aperi",
        "userlogin-resetlink": "Num tesserae tuae oblitus es?",
+       "userlogin-resetpassword-link": "Num tesserae oblivisceris?",
        "createacct-emailrequired": "Inscriptio electronica",
        "createacct-emailoptional": "Inscriptio electronica (non necesse)",
        "createacct-email-ph": "Inscriptionem electronicam tuam inscribe",
        "searchprofile-everything-tooltip": "Omnia perscrutari (etiam paginae disputationis)",
        "searchprofile-advanced-tooltip": "In spatiis nominalibus accommotis quaerere",
        "search-result-size": "$1 ({{PLURAL:$2|1 verbum|$2 verba}})",
-       "search-result-score": "Gravitas: $1%",
        "search-redirect": "(redirectio $1)",
        "search-section": "(pars $1)",
        "search-suggest": "Nonne dicere voluisti: $1",
        "large-file": "Suasum est ut fasciculi $1 magnitudine non excedant; magnitudo huius fasciculi est $2.",
        "uploadwarning": "Monitus imponendi",
        "savefile": "Servare fasciculum",
-       "uploadedimage": "imposuit \"[[$1]]\"",
        "uploaddisabled": "Fasciculos imponere prohibitum est",
        "uploaddisabledtext": "Fasciculos imponere prohibitum est.",
        "uploadvirus": "Fasciculi huic est virus! Singula: $1",
        "notanarticle": "Res non est",
        "notvisiblerev": "Emendatio deleta est",
        "watchlist-details": "{{PLURAL:$1|$1 pagina|$1 paginae}} in indice paginarum custoditarum tuarum, sine paginis disputationis.",
+       "wlnote": "Subter {{PLURAL:$1|est mutatio proxima|sunt '''$1''' mutationes proximae}} in {{PLURAL:$2|proxima hora|proximis '''$2''' horis}} ex $4, $3.",
        "wlshowlast": "Monstrare proximas $1 horas $2 dies $3",
        "watchlist-options": "Indicis paginarum custoditarum praeferentiae",
        "watching": "Custodiens...",
        "tooltip-pt-userpage": "Pagina usoris tua",
        "tooltip-pt-mytalk": "Pagina disputationis tua",
        "tooltip-pt-preferences": "Praeferentiae tuae",
-       "tooltip-pt-watchlist": "Paginae quae custodis ut eorum mutationes facilius vides",
+       "tooltip-pt-watchlist": "Paginae quas custodis ut earum mutationes facilius videas",
        "tooltip-pt-mycontris": "Index conlationum tuarum",
        "tooltip-pt-login": "Te conventum aperire hortamur, non autem requisitum",
        "tooltip-pt-logout": "Conventum concludere",
index 1d04b98..2e30448 100644 (file)
@@ -32,6 +32,7 @@
        "tog-watchdefault": "Säiten a Fichieren déi ech änneren op meng Iwwerwaachungslëscht derbäisetzen",
        "tog-watchmoves": "Säiten a Fichieren déi ech réckelen automatesch op meng Iwwerwaachungslëscht derbäisetzen",
        "tog-watchdeletion": "Säiten a Fichieren déi ech läschen op meng Iwwerwaachungslëscht derbäisetzen",
+       "tog-watchrollback": "Säiten déi ech zréckgesat hunn op meng Iwwerwaachungslëscht derbäisetzen",
        "tog-minordefault": "All Ännerungen automatesch als 'Kleng Ännerungen' markéieren.",
        "tog-previewontop": "Déi ''nach-net gespäichert Versioun'' iwwer der Ännerungsfënster weisen",
        "tog-previewonfirst": "Beim éischten Änneren déi  ''nach net gespäichert Versioun'' weisen.",
        "hidetoc": "verstoppen",
        "collapsible-collapse": "Zesummeklappen",
        "collapsible-expand": "Opklappen",
+       "confirmable-confirm": "Sidd {{GENDER:$1|Dir}} sécher?",
+       "confirmable-yes": "Jo",
+       "confirmable-no": "Neen",
        "thisisdeleted": "$1 kucken oder zrécksetzen?",
        "viewdeleted": "Weis $1?",
        "restorelink": "$1 geläscht {{PLURAL:$1|Versioun|Versiounen}}",
        "searchprofile-advanced-tooltip": "Sich an den Nummraim déi an de perséinlichen Astellungen festgeluecht sinn",
        "search-result-size": "$1 ({{PLURAL:$2|1 Wuert|$2 Wierder}})",
        "search-result-category-size": "{{PLURAL:$1|1 Säit|$1 Säiten}} ({{PLURAL:$2|1 Ënnerkategorie|$2 Ënnerkategorien}}, {{PLURAL:$3|1 Fichier|$3 Fichieren}})",
-       "search-result-score": "Relevanz: $1 %",
        "search-redirect": "(Viruleedung $1)",
        "search-section": "(Abschnitt $1)",
        "search-file-match": "(Inhalt vum Fichier passt)",
        "uploadwarning": "Opgepasst",
        "uploadwarning-text": "Ännert d'Beschreiwung hei ënnedrënner w.e.g. a versicht et nach eng Kéier.",
        "savefile": "Fichier späicheren",
-       "uploadedimage": "huet \"[[$1]]\" eropgelueden",
-       "overwroteimage": "huet eng nei Versioun vun \"[[$1]]\" eropgelueden",
        "uploaddisabled": "Pardon, d'Eropluede vu Fichieren ass ausgeschalt.",
        "copyuploaddisabled": "D'Eroplueden iwwer URL ass desaktivéiert.",
        "uploaddisabledtext": "D'Eropluede vu Fichieren ass ausgeschalt.",
        "unlockdbsuccesssub": "D'Spär vun der Datebank gouf opgehuewen",
        "lockdbsuccesstext": "D'{{SITENAME}}-Datebank gouf gespaart. <br />\nDenkt drun [[Special:UnlockDB|d'Spär erëm ewechzehuele]] soubaal d'Maintenance-Aarbechte fäerdeg sinn.",
        "unlockdbsuccesstext": "D'Spär vun der Datebank ass opgehuewen.",
-       "lockfilenotwritable": "De Fichier mat de Späre vun der Datebank kann net geännert ginn.\nFir d'Datebank ze spären oder fir d'Spär opzehiewen muss dëse Fichier vum Webserver geännert kënne ginn.",
+       "lockfilenotwritable": "De Fichier mat de Späre vun der Datebank kann net geännert ginn.\nFir d'Datebank ze spären oder fir d'Spär opzehiewe muss dëse Fichier vum Webserver geännert kënne ginn.",
        "databasenotlocked": "D'Datebank ass net gespaart.",
        "lockedbyandtime": "(vum $1 de(n) $2 ëm $3 Auer)",
        "move-page": "Réckel $1",
        "thumbnail_image-missing": "De Fichier schengt ze feelen: $1",
        "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 derbäi erhalen.\nAll Transwiki-Import-Aktioune ginn am [[Special:Log/import|Import-Logbuch]] protokolléiert.",
+       "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-history": "Importéier all d'Versioune vun dëser Säit",
        "import-interwiki-templates": "Mat alle Schablounen",
        "confirmemail_pending": "Dir krut schonn e Confirmatiouns-Code per E-Mail geschéckt. Wenn Dir Äre Benotzerkont eréischt elo kuerz opgemaach hutt, da gedëllegt Iech nach e puer Minutten bis Är E-Mail ukomm ass, ier Dir een neie Code ufrot.",
        "confirmemail_send": "Confirmatiouns-E-Mail schécken",
        "confirmemail_sent": "Confirmatiouns-E-Mail gouf geschéckt.",
-       "confirmemail_oncreate": "E Confirmatiouns-Code gouf op Är E-Mail-Adress geschéckt.\nDëse Code gëtt fir d'Umeldung net gebraucht. Dir braucht en awer bei der Aktivéierung vun den E-Mail-Funktiounen bannert der Wiki.",
+       "confirmemail_oncreate": "E Confirmatiouns-Code gouf op Är E-Mail-Adress geschéckt.\nDëse Code gëtt fir d'Umeldung net gebraucht. Dir braucht en awer bei der Aktivéierung vun den E-Mail-Funktioune bannert der Wiki.",
        "confirmemail_sendfailed": "{{SITENAME}} konnt är Confirmatiouns-E-Mail net schécken.\nIwwerpréift w.e.g. är E-Mailadress op ongëlteg Zeechen.\n\nFeelermeldung vum Mailserver: $1",
        "confirmemail_invalid": "Ongëltege Confirmatiounscode. Eventuell ass d'Gëltegkeetsdauer vum Code ofgelaf.",
        "confirmemail_needlogin": "Dir musst Iech $1, fir Är E-Mail-Adress ze confirméieren.",
        "confirmemail_loggedin": "Är E-Mail-Adress gouf elo confirméiert.",
        "confirmemail_subject": "Confirmatioun vun der E-Mail-Adress fir {{SITENAME}}",
        "confirmemail_body": "E Benotzer, waarscheinlech dir selwer, hutt mat der IP Adress $1 de Benotzerkont \"$2\" um Site {{SITENAME}} opgemaach.\n\nFir ze bestätegen, datt dee Kont iech wierklech gehéiert a fir d'E-Mail-Funktiounen um Site {{SITENAME}} z'aktivéieren, maacht w.e.g. dëse Link an ärem Browser op:\n$3\n\nWann dir dëse Benotzerkont *net* opgemaach hutt, maacht w.e.g. dëse Link an ärem Browser op fir d'E-Mailconfirmation z'annulléieren:\n\n$5\n\nSollt et sech net ëm äre Benotzerkont handelen, da maacht de Link *net* op. De Confirmatiounscode ass gëlteg bis de(n) $4.",
-       "confirmemail_body_changed": "E Benotzer, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
+       "confirmemail_body_changed": "E Benotzer, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dëse Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
        "confirmemail_body_set": "Iergendeen, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
        "confirmemail_invalidated": "Confirmatioun vun der E-Mail-Adress annulléiert",
        "invalidateemail": "Annulléier d'E-Mailconfirmation",
        "logentry-rights-rights": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert vu(n) $4 op $5 geännert",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert geännert",
        "logentry-rights-autopromote": "De Benotzer $1 {{GENDER:$2|krut}} d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
+       "logentry-upload-upload": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
+       "logentry-upload-overwrite": "$1 huet eng nei Versioun vu(n) $3 {{GENDER:$2|eropgelueden}}",
+       "logentry-upload-revert": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
        "rightsnone": "(keen)",
        "feedback-bugornote": "Wann Dir bereet sidd fir en technesche Problem am Detail ze beschreiwen da [$1 mellt w.e.g. e Feeler (Bug)].\nSoss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gëtt op d'Säit \"[$3 $2]\" derbäigesat, zesumme mat Ärem Benotzernumm an dem Numm vum Browser deen Dir benotzt.",
        "feedback-subject": "Sujet:",
        "right-pagelang": "Sprooch vun der Säit änneren",
        "action-pagelang": "d'Sprooch vun der Säit änneren",
        "log-name-pagelang": "Log vum Ännere vun der Sprooch",
-       "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten."
+       "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktivéiert)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desaktivéiert''')"
 }
index bc79ee7..83dbafd 100644 (file)
@@ -20,6 +20,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": "ويرايشت ای بلگه",
        "create-this-page": "راس كردن ای بلگه",
        "delete": "حذف كردن",
        "jumpto": "پئرستن د",
        "jumptonavigation": "ناوگشتن",
        "jumptosearch": "پی جوری",
+       "view-pool-error": "د بدبختی،ایسنی سروریا فره شلوغ.\nکاریاریا فره زیادی میهان ای بلگه نه بوینن.\nیه گری صب بکیتو دما یه که میهات دوواره ای بلگه نه بوینیت.",
+       "generic-pool-error": "د بدبختی،ایسنی سروریا فره شلوغ.\nکاریاریا فره زیادی میهان ای بلگه نه بوینن.\nیه گری صب بکیتو دما یه که میهات دوواره ای بلگه نه بوینیت.",
        "pool-timeout": "وخت سی تیه وه ره منن سی قلف بیئن تموم بی",
        "pool-queuefull": "ذخیره گی گرتن پر بیه",
        "pool-errorunknown": "خطا ناشناس",
+       "pool-servererror": "پول سنتر خذمتگه د دسرس نئ($1).",
        "aboutsite": "دباره {{SITENAME}}",
        "aboutpage": "پروجه:دباره",
        "copyright": "محتوا د دسرس هئ سی $1 مر وه شلک هنی نوشته بوئه",
        "mainpage-description": "سرآسونه",
        "policy-url": "پروجه:خط و مش",
        "portal": "درآسونه کومله یکی",
-       "portal-url": "پرÙ\88جÙ\87ªÙ\84Ú¯ه کومله یکی",
+       "portal-url": "پرÙ\88جÙ\87³Ø±Ø¢Ø³Ù\88Ù\86ه کومله یکی",
        "privacy": "رهبرد رازداری",
        "privacypage": "پروجه: خط مشی راز واداشتن",
        "badaccess": "خطا :اجازه بئیر",
        "hidetoc": "قام كردن",
        "collapsible-collapse": "جم كردن",
        "collapsible-expand": "وا كردن",
+       "confirmable-yes": "هری",
+       "confirmable-no": "نه",
        "thisisdeleted": "دیئن یا ورگنين $1?",
        "viewdeleted": "دیئن$1?",
        "restorelink": "{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}",
        "no-null-revision": "سی بلگه$1 دوواره خنثی دیئن راس بکید",
        "badtitle": "موضو گن",
        "badtitletext": "عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.\nیه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن",
+       "perfcached": "رسینه یا نهایی د ویرگه نهونی موکشت بینه و شایت هنی وه هنگوم سازی نبینه.بیشترونه {{جمی:$4|یه گل نتیجه|$4 یه گل نتیجه}} د ویرگه نهونی هان د دسرس.",
+       "perfcachedts": "رسینه یا نهایی د ویرگه نهونی موکشت بینه و شایت هنی وه هنگوم سازی نبینه.بیشترونه {{جمی:$4|یه گل نتیجه|$4 یه گل نتیجه}} د ویرگه نهونی هان د دسرس.",
+       "querypage-no-updates": "نبوئه ای بلگه وه هنگوم سازی با.\nرسینه یا ایچه تازه نبیه.",
        "viewsource": "سرچشمه نه بوينيت",
        "viewsource-title": "سرچشمه $1 بوينيت",
        "actionthrottled": "کنشت جلوگئری بیه",
+       "actionthrottledtext": "سی جلوگئری د درتیچ اسپم نبوئه که شما چنی کارینه د یه گات کؤچک چن گل انجوم بیئتو.\nلطفن مئن چن دیقه هنی تلاش بکیت.",
        "protectedpagetext": "دای بلگه نبوئه ویرایشت یا کاریا هنی بکید",
        "viewsourcetext": "شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:",
        "viewyourtext": "شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت",
+       "protectedinterface": "ای بلگه سی نرم افزار د ای ویکی نیسسه آماده می که، و د   .\nسی اضاف کردن یا آلشت دئن د همه ویکی یا لطفا [//translatewiki.net/ translatewiki.net] نه به کار بؤریت، ولات نشین کنی پروجه ویکی وارسگر.",
+       "editinginterface": "<strong>زئنار دئن:</strong> شما داریت بلگه ای نه که سی      بیه ویرایشت می کید.",
+       "cascadeprotected": "ای بلگه د ویرایشت محافظت بیه سی یه که {{جمی:$1|وه بلگه یه |ونو بلگه یان}} که ها دش د                 :\n$2",
+       "namespaceprotected": "شما حقی سی ویرایشت بلگه یایی که هان د نومجا  <strong>$1</strong> ناریت.",
+       "customcssprotected": "شما سی ویرایشت ای بلگه سی اس اس اجازه ناریت سی یه که میزونکاری دونسمنیا شخصی یه کاریار هنی ها د وه.",
+       "customjsprotected": "شما سی ویرایشت ای بلگه جاوا اسکریپت اجازه ناریت سی یه که میزونکاری دونسمنیا شخصی یه کاریار هنی ها د وه.",
        "mycustomcssprotected": "شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید",
        "mycustomjsprotected": "شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید",
        "myprivateinfoprotected": "شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید",
        "mypreferencesprotected": "شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید",
        "ns-specialprotected": "بلگیا ویجه نتونن ویرایشت بوئن",
+       "titleprotected": "ای دیارگر د دروس بیئن وه دس [[کاریار:$1|$1]].\n نهاگری بیه.\nدلیلش ونه\"<em>$2</em>\".",
+       "filereadonlyerror": "نبوئه جانیا \"$1\" آلشت بکیتو سی یه که اماییه گه \"$2\" فقط د حال و بال حننیه.\n\nدیوونداری که یه نه قلف کرده موئه د واشکافت \"$3\" بکیتو.",
        "invalidtitle-knownnamespace": "نوم نامعتور سی نوم جا \"$2\" و نیسه \"$3\"",
        "invalidtitle-unknownnamespace": "نوم نامعتور سی شماره نومجا ناشناس $1 و نیسه \"$2\"",
        "exception-nologin": "نبوئه وارد بوئيد",
+       "exception-nologin-text": "شما وارد [[ویجه:وامین اومائن کاریار|وامین اومائن]] بوئیت سی یه تونستویت که د ای بلگه یا کنشت دسرسی داشتویت.",
        "exception-nologin-text-manual": "خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.",
+       "virus-badscanner": "سازواره گن:ویروس ناشناس:<em>$1</em>",
        "virus-scanfailed": "زل بیئن شکست حرد($1)",
        "virus-unknownscanner": "ويروس كش ناآشگار",
+       "logouttext": "<strong>شما هنی نریتته وه در.</strong>\n\nد ویرتو با که ویرگه نهو انجومیارتو نه پاکسا نکیت، سی یه پاره ای د بلگه یا ممکنه جوری نشو دئه بوئن چی یه که منیستی  شما هنی هایین وامین.",
        "welcomeuser": "خوش اومايت،$1!",
+       "welcomecreation-msg": "حساوتو دروس بیه.\nد ویرتو نروئه که{{نوم دیارگه}} [[Special:Preferences|preferences]]  خوتونه آلشت بکیت",
        "yourname": "نوم کاریاری:",
        "userlogin-yourname": "نوم كاروری",
        "userlogin-yourname-ph": "نوم کاریاری تو نه وارد بكيد",
        "userlogin-signwithsecure": "د وصل بيئن امن استفاده كو",
        "yourdomainname": "پوشگیر شما:",
        "password-change-forbidden": "شما نتونید پاسوردیانه د ای ویکی آلشت بکید",
+       "externaldberror": "اشتوایی د ارتواط وا رسینه گا پیش اومائه یا ینه که شما اجازه وه هنگوم سازی حساو خارجی تونه ناریت.",
        "login": "اومائن",
        "nav-login-createaccount": " اومائن د سيستم/راس كردن حساو",
        "userlogin": " اومائن د سيستم/راس كردن حساو",
        "noname": "شما یه گل نوم کاروری خو ناریت",
        "loginsuccesstitle": "اومائن د سيستم موفق بی",
        "loginsuccess": "شما ایسه وارد بیته {{SITENAME}} د دعنوان \"$1\".'",
-       "nosuchuser": "چنی کاروری و نوم  \"$1\" نئیش.\nنوم کاروری وه حرفیا حساس هئ.\nروشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کارور/ثوت نام کردن|یه گل حساو تازه راس بکید]].",
+       "nosuchuser": "چنی کاریاری و نوم  \"$1\" نئیش.\nنوم کاریاری وه حرفیا حساس هئ.\nروشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کاریار/ثوت نام کردن|یه گل حساو تازه راس بکید]].",
        "nosuchusershort": "چنو کاروری وا ای نوم $1 نی ئیش.\nنیسنن تونه دوواره نئری بکیتو",
        "nouserspecified": "شما باید یه نوم کارور اختصاص بئیتو",
        "login-userblocked": "کارور قلف بیه.وامین اومائن اجازه نی ئن",
        "passwordremindertitle": "پاسورد موقت تازه سی {{SITENAME}}",
        "noemail": "هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.",
        "noemailcreate": "شما باید یه نشونی نومه معتور فراهم بکید",
+       "passwordsent": "یه گل پاسورد هنی سی تیرنشون انجانامه ای که \"$1\" واش ثوت نام کرده بی کل بیه.\nخواهش میکیم هنی رویئت وامین و اوسه بئریتش.",
+       "blocked-mailpassword": "نها آی پی شما سی ویرایشت گرته بیه، و",
        "mailerror": "خطا داره کل موئه:$1",
        "emailauthenticated": "نشونی انجومانامه تونه د $2 سی 3$ مئکم بیه.",
        "emailconfirmlink": "نشونی ايملتو نه محكم بكيد",
        "cannotchangeemail": "نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.",
        "emaildisabled": "ای مالگه نتونه ایمیل بفرسنه",
        "accountcreated": "حساو راس بی",
+       "accountcreatedtext": "حساو کاریاری سی [[{{ns:کاریار}}:$1|$1]] ([[{{ns:کاریار چک چنه}}:$1|چک چنه]]) دروس بیه.",
        "createaccount-title": "حساو راس کرده سی  {{SITENAME}}",
+       "createaccount-text": "یه نفر وا تیرنشون انجونامه تو یه گل حساو راس کرده{{نوم دیارگه}} ($4) نومشه نیائه\"$2\", با پاسورد \"$3\".\nشما همی ایسه باید روئیت وامین و پاسوردتونه آلشت بکیت.\n\nار شما ای پیغوم نه وش التفات نکیت، د راس بیین ای حساو خطا دروس موئه.",
        "login-throttled": "شما ایسنی فره سی وامین اومائن تلاش کردیته.\n$1 لطفن سی تلاش هنی صبر بکید",
        "login-abort-generic": "اومائن وامین تو شکست حرد-شکست حرده",
        "loginlanguagelabel": "زون:$1",
        "yourtext": "متن شما",
        "storedversion": "دوواره دیئن انبار بیه.",
        "yourdiff": "فرخيا",
-       "templatesused": "{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:",
-       "templatesusedpreview": "{{جمی:$1|قالو|قالویا}}استفاده بیه د ای پیش سیل:",
-       "templatesusedsection": "{{جمی:$1|قالو|قالویا}} استفاده بیه د ای بخش:",
+       "templatesused": "{{جمی:$1|چوئه|چوئه یا}}د ای بلگه استفاده بیه:",
+       "templatesusedpreview": "{{جمی:$1|چوئه|چوئه یا}}استفاده بیه د ای پیش سیل:",
+       "templatesusedsection": "{{جمی:$1|چوئه|چوئه یا}} استفاده بیه د ای بخش:",
        "template-protected": "(حمايت بيه)",
        "template-semiprotected": "(نيم-حفاظت بيه)",
        "hiddencategories": "ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ",
-       "nocreatetext": "{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.\nشما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کارور|بیایت وامین یا یه گل حساو بسازیت]].",
+       "nocreatetext": "{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.\nشما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کاریار|بیایت وامین یا یه گل حساو بسازیت]].",
        "nocreate-loggedin": "شما حق ناریت  که بلگه یا تازه نه راس بکید.",
        "sectioneditnotsupported-title": "ویرایشت بخش حمایت نبوئه",
        "sectioneditnotsupported-text": "ویرایشت بشقی د ای بلگه نئیش.",
        "moveddeleted-notice": "ای بلگه پاک بیه.\nپاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه",
        "log-fulllog": "دیئن همه پهرستنومه یا",
        "edit-conflict": "مخالفت نه ویرایشت بکید",
+       "postedit-confirmation-created": "بلگه دروس بیه.",
+       "postedit-confirmation-restored": "بلگه د نو اماییه بیه.",
        "postedit-confirmation-saved": "ویرایشتتو اماییه بی",
        "edit-already-exists": "نبوئه یه گل بلگه تازه راس بکید.\nوه هئیش.",
        "defaultmessagetext": "متن پیغوم پیش فرض",
        "searchresults": "نتيجه يا پی جوری",
        "searchresults-title": "نتيجه يا پی جوری سی \"$1\"",
        "titlematches": "عنوان بلگه مطاوقت داره",
+       "textmatches": "هومسازی نیسسه بلگه.",
+       "notextmatches": "نیسسه بلگه هومسازی ناره",
        "prevn": "وادما {{PLURAL:$1|$1}}",
        "nextn": "نيايی {{PLURAL:$1|$1}}",
        "prevn-title": "پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
        "searchprofile-images-tooltip": "بگرد سی فايليا",
        "searchprofile-everything-tooltip": "همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)",
        "searchprofile-advanced-tooltip": "نوم جايا نوم ديار بگرد",
-       "search-result-size": "$1 ({{جمی:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})",
+       "search-result-size": "$1 ({{جمی:$2|1 کلیمه|$2 کلیمه یا}})",
        "search-result-category-size": "{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 جانیا|$3 جانیایا}}",
        "search-redirect": "(ورگشتن $1)",
        "search-section": "(بشق $1)",
        "prefs-rc": "آلشتیا تازه باو",
        "prefs-watchlist": "سیل برگ",
        "prefs-watchlist-days": "روزیا نه د سیل برگ نشو دئه بو:",
+       "prefs-watchlist-days-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
        "prefs-watchlist-edits-max": "شماره بیشترونه:1000",
        "prefs-misc": "شيوسن",
        "prefs-resetpass": "پاسورد نه آلشت بكيت",
        "stub-threshold-disabled": "د كار ونن",
        "recentchangesdays": "روزیا آلشتیا تازه باو نه نشو بیه:",
        "recentchangesdays-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
+       "recentchangescount": "انازه ویرایشتیایی که دیاری می که:",
        "prefs-help-recentchangescount": "یه شامل آلشتیا تازه،ویرگاریا بلگه و پهرستنومه یا هئ.",
        "savedprefs": "ویجه گیا هنی تو اماییه بیه.",
        "timezonelegend": "وخت راساگه",
        "localtime": "وخت ولاتی:",
        "timezoneuseserverdefault": "وخت راساگه",
+       "timezoneuseoffset": "هنی",
        "servertime": "وخت سرور:",
        "guesstimezone": "وا جاگرد پر بوئه",
        "timezoneregion-africa": "افرقا",
        "prefs-namespaces": "نوم جایا",
        "default": "پيش فرض",
        "prefs-files": "فايلا",
+       "prefs-custom-css": "سی اس اس جاافتائه",
+       "prefs-custom-js": "جاوا نیسسه جاافتائه",
        "prefs-common-css-js": " سی اس اس/جاوا اسکریپت بهر بیه سی همه پوسه یا:",
        "prefs-emailconfirm-label": "مئکم کردن ایمیل:",
        "youremail": "ايميل:",
        "prefs-i18n": "جهون ولاتمنی",
        "prefs-signature": "امضا",
        "prefs-dateformat": "شلک وخت",
+       "prefs-timeoffset": "جا وه جایی زمونی",
        "prefs-advancedediting": "گزینه یا عمومی",
        "prefs-editor": "ويرايشتگر",
        "prefs-preview": "پیش سیل",
        "prefs-advancedwatchlist": "گزینه یا پیشکرده",
        "prefs-displayrc": "گزینه یا نه نشو بیه",
        "prefs-displaywatchlist": "گزینه یا نه نشو بیه",
+       "prefs-tokenwatchlist": "نشو",
        "prefs-diffs": "فرخیا",
        "email-address-validity-valid": "نشونی ایمیل دیار بیه خوئه",
        "email-address-validity-invalid": "یه گل نشونی ایمیل خو وارد بکید",
+       "userrights": "حقوق دیوونداری کاریار",
        "userrights-lookup-user": "دسه یا کاروری نه دیوون داری بکیت",
        "userrights-user-editname": "نوم كاروری ته وارد كو",
        "editusergroup": "ویرایشت گرویا کاروری",
        "group-bureaucrat": "بروکراتیا",
        "group-all": "(همه)",
        "group-user-member": "{{جنس:$1|کارور}}",
+       "group-autoconfirmed-member": "{{جنس:$1|کاریار خودانجومکار}}",
        "group-bot-member": "{{حنس:$1|بوت}}",
        "group-sysop-member": "{{جنس:$1|مدیر}}",
        "group-bureaucrat-member": "{{جنس:$1|بروکرات}}",
        "grouppage-user": "{{ns:project}}:کاروریا",
+       "grouppage-autoconfirmed": "{{ns:project}}:کاریار خودانجومکار",
        "grouppage-bot": "{{ns:project}}:بوت یا",
+       "grouppage-sysop": "{{ns:project}}:دیوونداریا",
        "grouppage-bureaucrat": "{{ns:project}}:دیوونداریا",
        "right-read": "حنن بلگیا",
        "right-edit": "ویرایشت بلگیا",
+       "right-createpage": "بلگه یا نه راس بکیت(ونو که دشو بلگه یا چک چنه نئ)",
        "right-createtalk": "بلگه یا چک چنه نه راس بکید",
        "right-createaccount": "یه گل حساو کاروری تازه راس بکیت",
        "right-move": "بلگه یا جا وه جا کو",
        "right-move-subpages": "بلگه یا و زیر بلگه یا شونه جا وه جا کو",
        "right-move-rootuserpages": "بلگه یا ریشه ای کارور نه جا وه جا کو",
+       "right-move-categorypages": "دسه بلگه یا نه جا وه جا بکیت",
        "right-movefile": "فایلیا نه جا وه جا کو",
        "right-suppressredirect": "اوسه که بلگه یا د بین رئتنه هیچ واگردونی سی بلگه یا سرچشمه دروس نبیه",
        "right-upload": "سوار کردن فايلا",
        "right-upload_by_url": "سوار کرد فایلیا د یو آر ال",
        "right-writeapi": "د نیسنن ای پی آی استفاده بکید",
        "right-delete": "بلگیا نه پاکسا کو",
+       "right-bigdelete": "بلگه یایی که ویرگار گپی دارن پاکسا بکیت",
        "right-browsearchive": "بلگه یا پاک بیه نه پی جوری کو",
        "right-undelete": "ای بلگه نه حذف نكيد",
        "right-suppressionlog": "دیئن پهرستنومه یا خصوصی",
+       "right-block": "کاریاریا هنی د ویرایشت منع بوئن",
+       "right-blockemail": "کاریار نه د کل کردن انجومانامه منع کو",
        "right-unblockself": "خوشه قلف نکید",
        "right-editinterface": "راوط کارور نه ویرایشت کو",
        "right-editusercssjs": "فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو",
        "action-createpage": "راس کردن بلگیا",
        "action-createtalk": "بلگه یا چک چنه نه راس بکید",
        "action-createaccount": "حساو ای کارور نه راس بکید",
+       "action-history": "ویرگار ای بلگه نه بوینیت",
        "action-minoredit": "ای ویرایشت نه چی یه حیرده ویرایشت نشو بیئت",
        "action-move": "لی بلگه جا وه جا کو",
        "action-move-subpages": "ای بلگه و زیر بلگه یاشه جا وه جا بکید",
        "recentchanges-label-minor": "يه ويرايشت كؤچكيه",
        "recentchanges-label-bot": "ای ويرايشت نه يه بوت انجوم ديئه",
        "recentchanges-label-unpatrolled": "ای ويرايشت هنی تيه واداشت نبيه",
+       "recentchanges-label-plusminus": "انازه بلگه وه شمار ای بایتیا آلشت کرده.",
        "recentchanges-legend-heading": "'''میراث:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنو بوینیت [[ویجه:بلگیا تازه|نوم گه بلگیا تازه]])",
        "rcnotefrom": "د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)",
        "uploadnologin": "وارد نبیه",
        "uploadnologintext": "لطفن $1 سی سوارکرد جانیایا.",
        "uploaderror": "خطا د سوار کردن",
+       "upload-permitted": "جورا جانیا مجاز:$1.",
+       "upload-preferred": "جورا جانیا مجاز:$1.",
+       "upload-prohibited": "جورا جانیا مجاز:$1.",
        "uploadlogpage": "سوارکرد",
        "filename": "نوم فایل",
        "filedesc": "چكسته",
        "filestatus": "حال و بال کپی رایت",
        "filesource": "سرچشمه:",
        "ignorewarnings": "د هر زنهار تیه پوشی کو",
+       "filename-toolong": "نوم جانیا شایت گپتر د 240 بایت نبا.",
        "badfilename": "نوم جانیا د \"$1\" آلشت بیه.",
        "empty-file": "فایلی که دئی ته حالی بیه.",
        "file-too-large": "فایلی که دئی ته فره گپ بی.",
        "filename-tooshort": "نوم فایل فره کؤچکه.",
+       "filetype-banned": "چنی جانیا قدقه بیه.",
        "illegal-filename": "نوم فایل اجاره ندئه بیه.",
        "unknown-error": "یه گل خطا نادیار ری ون کرده.",
+       "tmp-create-error": "نبوئه جانیا موقتی نه راس بکیتو.",
+       "tmp-write-error": "خطا د نیسنن جانیا موقتی.",
+       "uploadwarning": "هشدار سوارکرد",
        "savefile": "جانیا نه اماییه کو",
-       "uploadedimage": "سوارکرد\"[[$1]]\"",
-       "overwroteimage": "یه گل نسقه تازه د \"[[$1]]\" سوار بیه",
        "uploaddisabled": "سوار کردن د کار نئ.",
        "copyuploaddisabled": "سوار کردن وا یو آر ال د کار نئ.",
        "uploaddisabledtext": "سوار کرد فایلیا د کار نئ.",
        "uploadinvalidxml": "ایکس ام الی که سوار بیه نبوئه نوتیج با.",
+       "uploadvirus": "د ای جانیا ویروس هئ!\nجزیات:$1",
        "upload-source": "سرچشمه فایل",
        "sourcefilename": "سرچشمه نوم جانیا:",
        "sourceurl": "سرچشمه يو آر ال:",
        "destfilename": "نوم فایل مقصد:",
+       "upload-maxfilesize": "بیشترونه انازه جانیا:$1",
        "watchthisupload": "ای جانیا نه بوینیت",
        "upload-success-subj": "سوار کرد خوش سرانجوم",
        "upload-success-msg": "سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]",
        "upload-failure-subj": "مشگل د سوارکردن",
        "upload-failure-msg": "یه گل مشلگل د سوارکردتو سی [$2] بی:$1",
+       "upload-warning-subj": "هشدار سوارکرد",
        "upload-proto-error": "پروتکل نادروس",
        "upload-file-error": "خطا مینونه",
        "upload-misc-error": "خطا سوار کرد ناشناخته",
        "upload-too-many-redirects": "ای یو آر ال د ورگیرنه واگردونیا فرئی هئ",
+       "upload-http-error": "یه گل خطا اچ تی تی پی پیش اومائه:$1",
        "upload-copy-upload-invalid-domain": "ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.",
        "backend-fail-notexists": "فایل $1 وجود ناره.",
+       "backend-fail-invalidpath": "\"$1\" ره خوئی سی امائیه کردن نئ.",
        "backend-fail-delete": "نبوئه جانیا $1 پاکسا بوئه",
        "backend-fail-describe": "نبوئه گپ دونسمنیا سی جانیا\"$1\" آلشت بوئه.",
+       "backend-fail-alreadyexists": "جانیا \"$1\" ایسه هیئش.",
        "backend-fail-store": "نبوئه جانیا \"$1\" د \"$2\" امبار بوئه.",
+       "backend-fail-copy": "نبوئه جانیا $1 د $2 ورداشته بوئه",
        "backend-fail-move": "نبوئه جانیا \"$1\" د \"$2\" جا وه جا بوئه",
        "backend-fail-opentemp": "نبوئه جانیا موقتی وا بوئه.",
        "backend-fail-writetemp": "نبوئه د جانیا موقتی چی بنیسیت.",
+       "backend-fail-closetemp": "نبوئه جانیا موقتی بسته با.",
        "backend-fail-read": "نبوئه جانیا\"$1\" حنه بوئه.",
+       "backend-fail-create": "نبوئه د جانیا\"$1\" نوشته با.",
        "lockmanager-fail-closelock": "نبوئه قلف جانیا سی \"$1\" بسه بوئه.",
        "lockmanager-fail-openlock": "نبوئه قلف جانیا سی \"$1\" وا بوئه.",
+       "uploadstash": "اماییه جا سوارکرد",
+       "uploadstash-clear": "پاک کردن جانیایا اماییه بیه",
+       "uploadstash-nofiles": "شما هیژ جانیا اماییه بیه ای ناریت.",
        "uploadstash-refresh": "نومه گه جانیایا نه د نو تازه کو",
+       "invalid-chunk-offset": "جا وه جایی نامعتور برشت",
        "img-auth-accessdenied": "دسرسی منع بی",
        "img-auth-nofile": "فایل $1 وجود ناره.",
        "http-invalid-url": "یو آر ال نامعتور:$1",
        "license-header": "د شكل ليسانس دار بيئن",
        "nolicense": "هیچی انتخاو نبیه",
        "license-nopreview": "(پیش سیل د دسرس نئ)",
-       "upload_source_file": "(یه گل فایل د انجومیار تو)",
+       "upload_source_file": "(یه گل جانیا د انجومیار تو انتخاو بکیت)",
        "listfiles-delete": "پاکسا کردن",
        "listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
        "listfiles_search_for": "پی جوری سی نوم رسانه:",
        "imagelinks": "استفاده د فايل",
        "linkstoimage": "دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:",
        "nolinkstoimage": "ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی",
-       "morelinkstoimage": " [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.",
+       "morelinkstoimage": " [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای جانیا نه بونیت.",
        "linkstoimage-redirect": "$1 (واگردونی جانیا) $2",
        "sharedupload": "ای جانیا که د $1 هئ شایت د پروجه یا هنی استفاده بیه.",
        "sharedupload-desc-here": "فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.\nتوضی دباره[$2 file description page] د هار نشو دئئه بیه",
        "filepage-nofile": "چنو فایلی وا ای نوم نئ.",
        "uploadnewversion-linktext": "یه گل نسقه تازه د ای جانیا سوار بکید",
        "shared-repo-from": "د $1",
+       "filerevert": "د سرگرتن سی $1",
+       "filerevert-legend": "د سرگرتن جانیا",
        "filerevert-comment": "دليل:",
        "filerevert-submit": "ورگنین",
        "filedelete": "$1 پاکسا کو",
        "doubleredirects": "واگردونیا دوتایی",
        "double-redirect-fixed-move": "[[$1]]جا وه جا بیه .\nوه خودکارونه وه روز بیه و ایسه وه د[[$2]] واگردونی بیه.",
        "double-redirect-fixer": "تعمیر کننه واگردونی",
+       "brokenredirects": "واگردونیا بی سرانجوم",
        "brokenredirectstext": "واگردونیا نهاتر د بلگه یایی که وجود نارن هوم پیوند بینه.",
        "brokenredirects-edit": "ویرایشت",
        "brokenredirects-delete": "پاكسا كردن",
        "withoutinterwiki": "بلگه یایی که هوم پیوند زون نارن",
        "withoutinterwiki-legend": "پیشون",
        "withoutinterwiki-submit": "نشون دائن",
-       "nbytes": "$1{{جمی:$1|كلی|بايت|بايت}}",
-       "ncategories": "{{جمی:$1|دسه|دسه يا}}",
+       "fewestrevisions": "بلگه یایی که کمتری وانئری نه دارن",
+       "nbytes": "$1{{جمی:$1|بايت|بایتیا}}",
+       "ncategories": "$1{{جمی:$1|دسه|دسه يا}}",
        "ninterwikis": "$1 {{جمی:$1|مئن ویکی|مئن ویکیا}}",
        "nlinks": "$1 {{جمی:$1|هوم پیوند|هوم پیوندیا}}",
        "nmembers": "$1 {{PLURAL:$1|اندوم|اندوميا}}",
        "nmemberschanged": "$1 → $2 {{جمی:$2|اندوم|اندومیا}}",
+       "nrevisions": "$1 {{جمس:$1|وانئری|وانئریا}}",
        "nviews": "$1 {{جمی:$1|دیئن|دیئنیا}}",
        "nimagelinks": "$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه",
        "ntransclusions": "$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه",
+       "specialpage-empty": "نتیجه ای د ای گزارشت نئ.",
        "lonelypages": "بلگه یا تک منه",
        "uncategorizedpages": "بلگه یا دسه بنی نبیه",
        "uncategorizedcategories": "دسه یا دسه بنی نبیه",
        "wantedtemplates": "قالویا حاستنی",
        "mostlinked": "بلگه یا که بیشتر هوم پیوند بینه",
        "mostlinkedcategories": "دسه یایی که بیشتر هوم پیوند بیه",
-       "mostlinkedtemplates": "قالویایی که بیشتر هوم پیوند بینه",
+       "mostlinkedtemplates": "چوئه یایی که بیشتر هوم پیوند بینه",
        "mostcategories": "بلگه یا که بیشتر دسه بنی بینه",
        "mostimages": "فایلیایی که بیشتر هوم پیوند بینه",
+       "mostinterwikis": "بلگه یایی که بیشتری مینجا ویکی نه دارن",
+       "mostrevisions": "بلگه یایی که بیشتری وانئری نه دارن",
        "prefixindex": "همه بلگيا وا پيشون",
        "shortpages": "بلگه یا کؤچک",
        "longpages": "بلگه یا گپ",
        "deadendpages": "بلگه یا نابود بیئنی",
        "protectedpages": "بلگه یا حفاظت بيه",
        "protectedpages-noredirect": "واگردونیا قام بیه",
+       "protectedpages-timestamp": "سردیس گات",
        "protectedpages-page": "بلگه",
        "protectedpages-expiry": "تموم بیه آ",
        "protectedpages-performer": "کارور حفاظت بیه",
        "protectedpages-unknown-performer": "کارور ناشناس",
        "listusers": "نوم گه کارور",
        "listusers-editsonly": "فقط کاروریایی که ویرایشت می کن نشو بیه",
+       "listusers-creationsort": "سرجاخودگری د اساس گات دروس بیین",
+       "listusers-desc": "سرجاخودگری د اساس گپ د کؤچک",
+       "usereditcount": "$1{{جمی:$1|ویرایشت|ویرایشتیا}}",
        "usercreated": "{{جنسیت:$3|راس بیه}}د $1 at $2",
        "newpages": "بلگيا نو",
        "newpages-username": "نوم كاروری:",
        "booksources": "سرچشمه يل كتاو",
        "booksources-search-legend": "پی جوری سی سرچشمه یا کتاو",
        "booksources-go": "رو",
+       "specialloguserlabel": "انجومکار:",
        "log": "نیسنن رخ ونیا",
        "all-logs-page": "همه پهرستنومه یا عمومی",
        "allpages": "همه بلگيا",
        "nextpage": "بلگه نهایی($1)",
        "prevpage": "بلگه دمایی($1)",
+       "allpagesfrom": "بلگه یای که د شرو بینه نشو بیه:",
+       "allpagesto": "بلگه یایی که د تموم بینه نشو بیه.",
        "allarticles": "همه بلگيا",
+       "allinnamespace": "همه بلگه یا($1 نوم جا)",
        "allpagessubmit": "رو",
+       "allpagesprefix": "بلگه یایی که پس نوم دارن نشو بیه:",
        "allpagesbadtitle": "عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.\nیه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه که سی ای موضوعیا استفاده بوئن",
+       "allpages-bad-ns": "{{نوم دیارگه}} د ای نوم جا نئ \"$1\".",
        "allpages-hide-redirects": "واگردونیا قام بیه",
        "cachedspecial-refresh-now": "دیئن آخری.",
        "categories": "دسه يا",
+       "special-categories-sort-count": "سرجاخودگری د اساس شمارشت",
+       "special-categories-sort-abc": "سرجاخودگری د اساس الفبا",
        "deletedcontributions": "هومیاریا پاکسا بیه کارور",
        "deletedcontributions-title": "هومیاریا پاک بیه کارور",
        "sp-deletedcontributions-contribs": "هومیاریا",
+       "linksearch": "هوم پیوند پی جوری خارجی",
+       "linksearch-pat": "سازه یار پی جوری:",
        "linksearch-ns": "نوم جا:",
        "linksearch-ok": "پی جوری",
        "linksearch-line": "$1 داره د $2 هوم پیوند بوئه",
+       "listusersfrom": "کاریاریایی که د شرو بینه نشو بیه:",
        "listusers-submit": "نشو دئن",
        "listusers-noresult": "هیچ کاروری پیدا نبی",
        "listusers-blocked": "(قلف بيه)",
        "activeusers": "نوم گه کاروریا کارکو",
+       "activeusers-from": "کاریاریایی که د شرو بینه نشو بیه:",
        "activeusers-hidebots": "بوتیا قام کو",
        "activeusers-hidesysops": "دیوون داریا نه قام کو",
        "activeusers-noresult": "هیچ کاروری پیدا نبی",
+       "listgrouprights": "حقوق گرو کاریاری",
+       "listgrouprights-key": "Legend:\n* <span class=\"listgrouprights-granted\">دئه بیه د سمت راست</span>\n* <span class=\"listgrouprights-revoked\">انجوم شیو بیه د سمت راست</span>",
        "listgrouprights-group": "دسه",
        "listgrouprights-rights": "حقوقیا",
+       "listgrouprights-helppage": "هومیاری:حقوق گرو",
        "listgrouprights-members": "(نوم گه اندومیا)",
+       "listgrouprights-addgroup": "{{جمی:$2|گرویا|گرویا}} اضاف بکیتو: $1",
+       "listgrouprights-removegroup": "{{جمی:$2|گرویا|گرویا}} ورداریت: $1",
        "listgrouprights-addgroup-all": "همه گرویا نه اضاف کو",
        "listgrouprights-removegroup-all": "همه گرویا نه وردار",
        "listgrouprights-addgroup-self": " {{جمی:$2|گروه|گرویا}} نه د حساو: $1 اضاف کو",
+       "listgrouprights-removegroup-self": "{{جمی:$2|گرویا|گرویا}} نه د حساو ورداریت: $1",
+       "listgrouprights-addgroup-self-all": "همه گرویا نه د حساو خوشو اضاف بکیت",
+       "listgrouprights-removegroup-self-all": "همه گرویا نه د حساو خوشو ورداریت",
+       "listgrouprights-namespaceprotection-namespace": "نوم جا",
+       "trackingcategories-name": "نوم پیغوم",
+       "trackingcategories-disabled": "دسه ناکشتگر بیه",
        "mailnologin": "هیپچ نشونی یی کل نبیه",
        "emailuser": "ای كارور نه ايميل كو",
        "emailuser-title-target": "ایمیل سی ای {{جنس:$1|کارور}}",
        "defemailsubject": "{{نوم سیل جا}} ایمیل د کارور \"$1\"",
        "usermaildisabled": "ایمیل کارور د کار افتائه",
        "noemailtitle": "هیچ نشونی ایمیلی نئ",
+       "emailtarget": "یه گل نوم کاریاری سی پذریشتگر وارد بکیت",
        "emailusername": "نوم كاروری:",
        "emailusernamesubmit": "دئن",
        "emailfrom": "د:",
        "emailccsubject": " پیغومتو سی $1:$2 ورداشته بی",
        "emailsent": "ایمیل کل بیه",
        "emailsenttext": "پیغوم ایمیلی تو کل بیه.",
+       "usermessage-summary": "رئتن د سامونه پیغوم",
        "usermessage-editor": "پیغوم فرسن سیستم",
        "watchlist": "سیل برگ",
        "mywatchlist": "سیل برگ",
        "watchlistfor2": "سي $1 $2",
+       "nowatchlist": "شما هیچی د سیل برگ خوتو ناریت",
        "watchnologin": "وارد نبیه",
+       "addwatch": "اضاف کردن د سیل برگ",
+       "removewatch": "جا وه جا کردن د سیل برگ",
+       "removedwatchtext": "بلگه\"[[:$1]]\" د [[Special:سیل برگ|سیل برگ خوتو]] جا وه جا بیه.",
+       "removedwatchtext-short": "بلگه \"$1\" د سیل برگ جا وه جا بیه.",
        "watch": "سيل كردن",
        "watchthispage": "ديئن ای بلگه",
        "unwatch": "ديه نبيه",
        "unwatchthispage": "واداشتن دیئن",
        "notanarticle": "مینونه هیچ بلگه ای نئ",
+       "notvisiblerev": "آخری وانئری که د دس یه کاریار هنی انجوم بیه پاکسا بیه.",
        "watchlist-details": "{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .",
        "wlheader-enotif": "وارسیاری ایمیل فعال بیه.",
        "wlheader-showupdated": "بلگه یایی که د آخرین کرتی که شما دشو دیئن کردیته آلشت بینه د <strong>توپر</strong>نشون دئه بینه",
        "deleteotherreason": "دليليا هنی:",
        "deletereasonotherlist": "دلیل هنی",
        "deletereason-dropdown": "* دلیلیا پاکسا کردن رسم بیه\n** اسپم\n** خراوکاری\n** رعایت نبین کپی رایت\n** درحاست نیسنه\n** نهاورگشت شکست حرده",
+       "delete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
        "rollbacklink": "ورگشتن",
        "sessionfailure-title": "شکست حردن نشینگه",
        "protectlogpage": "حفاظت کردن",
        "modifiedarticleprotection": "ریتراز حفاظت د \"[[$1]]\" آلشت بیه",
        "protect-title": "ریتراز حفاظت د \"$1\" آلشت بیه",
        "prot_1movedto2": "[[$1]] د [[$2]] جا وه جا بی",
+       "protectcomment": "دلیل:",
        "protect-default": "همه کاروریا اجازه دارن",
        "protect-othertime": "وخت هنی:",
+       "protect-othertime-op": "گات هنی",
+       "protect-otherreason-op": "دلیل هنی",
        "protect-expiry-options": "1 ساعت:1 ساعت,1 روز:1 روز,1 هفته:1 هفته,2 هفته:2 هفته,1 ما:1 ما,3 ما:3 ما,6 ما:6 ما,1 سال:1 سال,بی حساو:بی حساو",
        "restriction-type": "دسرسی:",
+       "minimum-size": "انازه کمترونه",
+       "maximum-size": "انازه بیشترونه",
+       "pagesize": "(بایتیا)",
        "restriction-edit": "ويرايشت",
        "restriction-move": "جاوه جا بوئيت",
        "restriction-create": "راس كردن",
        "whatlinkshere-filters": "فيلتريا",
        "block": "منع کارور",
        "blockip": "منع کارور",
+       "ipaddressorusername": "نوم نشون آی پی يا نوم كاروری:",
        "ipbreason": "دليل:",
+       "ipbemailban": "نهاگرتن کاریار د کل کردن انجومانامه",
        "ipbother": "وخت هنی:",
        "ipboptions": "2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,بی حساو:بی حساو",
        "ipbhidename": "نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو",
+       "ipb-disableusertalk": "نها ای کاریار نه اوسه که میها د بلگه چک چنه ش ویرایشت بکه و وه قلف بیه بئر",
        "unblockip": "کارور منع نبیه",
        "blocklist": "كاروريا منع بيه",
        "ipblocklist": "كاروريا منع بيه",
        "unblocklink": "بی قطی",
        "change-blocklink": "اجازه نديئن سی  آلشت",
        "contribslink": "هومكاری",
+       "emaillink": "انجومانامه نه کل کو",
        "blocklogpage": "قلف",
        "blocklogentry": " [[$1]] وا یه گل وخت تموم بیئن $2 و $3  قلف بیه",
        "block-log-flags-nocreate": "حساو راس کردن عاجز بیه.",
        "block-log-flags-nousertalk": "نبوئه بلگه چک چنه خوتونه ویرایشت بکید",
+       "proxyblocker": "قلف کننه پروکسی",
        "lockdb": "قلف کردن رسینه گا",
        "unlockconfirm": "هره، مه واقعند میهام که رسینه گا وا بوئه.",
+       "lockbtn": "قلف کردن رسینه گا",
        "unlockbtn": "رسینه گا قلف نبیه",
        "lockdbsuccesssub": "رسینه گا د خوئی قلف بیه",
        "move-page": "$1 جا وه جا کو",
+       "move-page-legend": "بلگه نه جا وه جا کو",
        "movenotallowed": "شما وه جا وه جا کردن بلگه دسرسی ناریت",
        "movenotallowedfile": "شما وه جا وه جا کردن جانیایا دسرسی ناریت",
        "movepagebtn": "بلگه جا وه جا کو",
+       "pagemovedsub": "د خوئی جا وه جا بیه",
        "movepage-moved-redirect": "یه گل واگردونی دروس بیه.",
        "movelogpage": "جاوه جا کردن",
        "movelogpagetext": "د هار یه گل نوم گه د جا وه جایی یا بلگه هئ",
+       "movereason": "دلیل:",
        "revertmove": "لرستن",
        "delete_and_move": "پاکسا و جا وه جا بوئه",
        "export": "وه صحرا ديئن بلگيا",
+       "export-addcat": "اضاف کو",
+       "export-addns": "اضاف كو",
        "export-download": "ذخیره کردن جانیا",
+       "export-templates": "شامل چوئه یا",
+       "allmessages": "سامونه پیغومیا",
        "allmessagesname": "نوم",
        "allmessagesdefault": "سفارشت متنی پيش فرض",
+       "allmessages-filter-legend": "فیلتر",
+       "allmessages-filter-all": "همه",
+       "allmessages-filter-modified": "آلشت بیه",
+       "allmessages-prefix": "فیلتر بیه وا نهاون:",
        "allmessages-language": "زون:",
        "allmessages-filter-submit": "رو",
+       "allmessages-filter-translate": "والرن",
        "thumbnail-more": "گپ كردن",
        "filemissing": "گم بیئن جانیا",
        "thumbnail_error": "خطا د راس بیئن بن کلئکی:$1",
        "watchlisttools-edit": "سیل برگ بوینیتو و ویرایشت بکید",
        "watchlisttools-raw": "سیل برگ نه ردیفی ویرایشت کو",
        "duplicate-defaultsort": "زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.",
+       "version-antispam": "نهاگرتن هرزنومه",
        "version-ext-license": "ليسانس",
        "version-ext-colheader-version": "نسقه",
        "version-ext-colheader-license": "ليسانس",
index e76302d..0e6f431 100644 (file)
        "searchprofile-advanced-tooltip": "Izvēlēties nosaukumvietas, kurās meklēt",
        "search-result-size": "$1 ({{PLURAL:$2|1 vārds|$2 vārdi}})",
        "search-result-category-size": "$1 {{PLURAL:$1|apakšelements|apakšelementi}} ($2 {{PLURAL:$2|apakškategorija|apakškategorijas}}, $3 {{PLURAL:$3|fails|faili}})",
-       "search-result-score": "Atbilstība: $1%",
        "search-redirect": "(pāradresēts no $1)",
        "search-section": "(sadaļa $1)",
        "search-file-match": "(atbilst faila saturam)",
        "uploadwarning": "Augšupielādes brīdinājums",
        "uploadwarning-text": "Lūdzu, pārveido zemāk esošo faila aprakstu un mēģini vēlreiz.",
        "savefile": "Saglabāt failu",
-       "uploadedimage": "augšupielādēja \"[[$1]]\"",
-       "overwroteimage": "augšupielādēta jauna \"[[$1]]\" versija",
        "uploaddisabled": "Augšupielāde atslēgta",
        "copyuploaddisabled": "URL augšupielādes nav atļautas.",
        "uploaddisabledtext": "Failu augšupielāde ir atslēgta.",
        "movepagetext": "Šajā lapā tu vari pārdēvēt vai pārvietot lapu, kopā tās izmaiņu hronoloģiju pārvietojot to uz citu nosaukumu.\nIepriekšējā lapa kļūs par lapu, kas pāradresēs uz jauno lapu.\nŠeit var automātiski izmainīt visas pāradresācijas (redirektus) uz šo lapu (2. ķeksis apakšā).\nSaites pārējās lapās uz iepriekšējo lapu netiks mainītas. Ja izvēlies neizmainīt pāradresācijas automātiski, noteikti pārbaudi un izlabo, izskaužot [[Special:DoubleRedirects|dubultu pāradresāciju]] vai [[Special:BrokenRedirects|pāradresāciju uz neesošu lapu]].\nTev ir jāpārliecinās, vai saites vēl aizvien ved tur, kur tās ir paredzētas.\n\nŅem vērā, ka lapa '''netiks''' pārvietota, ja jau eksistē kāda cita lapa ar vēlamo nosaukumu (izņemot gadījumus, kad tā ir tukša vai kad tā ir pāradresācijas lapa, kā arī tad, ja tai nav izmaiņu hronoloģijas).\nTas nozīmē, ka tu vari pārvietot lapu atpakaļ, no kurienes tu jau reiz to esi pārvietojis, ja būsi kļūdījies, bet tu nevari pārrakstīt jau esošu lapu.\n\n'''BRĪDINĀJUMS!'''\nPopulārām lapām tā var būt krasa un negaidīta pārmaiņa;\npirms turpināšanas vēlreiz pārdomā, vai tu izproti visas iespējamās sekas.",
        "movepagetalktext": "Saistītā diskusiju lapa, ja tāda eksistē, tiks automātiski pārvietota, '''izņemot gadījumus, kad''':\n*tu pārvieto lapu uz citu palīglapu,\n*ar jauno nosaukumu jau eksistē diskusiju lapa, vai arī\n*atzīmēsi zemāk atrodamo lauciņu.\n\nJa tomēr vēlēsies, tad tev šī diskusiju lapa būs jāpārvieto vai jāapvieno pašam.",
        "movearticle": "Pārvietot lapu",
+       "movecategorypage-warning": "<strong>Brīdinājums:</strong> Tu grasies pārvietot kategoriju. Lūgums ievērot, ka pārvietota tiks tikai šī lapa, kategorijas saturs <em>netiks</em> pārvietots.",
        "movenologintext": "Tev ir jābūt reģistrētam lietotājam un jābūt [[Special:UserLogin|iegājušam]] {{grammar:lokatīvs|{{SITENAME}}}}, lai pārvietotu lapu.",
        "movenotallowed": "Tev nav atļaujas pārvietot lapas.",
        "movenotallowedfile": "Tev nav atļaujas pārvietot failus.",
index 6d4b38f..91574c5 100644 (file)
        "searchprofile-advanced-tooltip": "自定名集中尋",
        "search-result-size": "$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",
        "uploadwarning": "慎焉!",
        "uploadwarning-text": "改下檔述再試之。",
        "savefile": "存之",
-       "uploadedimage": "進獻\"[[$1]]\"",
-       "overwroteimage": "新置「[[$1]]」矣",
        "uploaddisabled": "進獻已阻",
        "copyuploaddisabled": "由URL之貢被禁也。",
        "uploaddisabledtext": "檔之貢被禁也。",
index d71bd77..e6169e6 100644 (file)
@@ -17,7 +17,8 @@
                        "Rillke",
                        "Umeshberma",
                        "Vinitutpal",
-                       "아라"
+                       "아라",
+                       "बिप्लब आनन्द"
                ]
        },
        "tog-underline": "लिंककेँ रेखांकित करू:",
@@ -25,7 +26,7 @@
        "tog-hidepatrolled": "सन्निकट परिवर्त्तनमे छोट परिवर्त्तन नुकाऊ",
        "tog-newpageshidepatrolled": "नियंत्रित सम्पादनकेँ नव पन्ना सूचीसँ नुकाऊ",
        "tog-extendwatchlist": "ध्यानसूचीमे सभ परिवर्तन देखाऊ,खाली हालक परिवर्तन नै",
-       "tog-usenewrc": "नà¥\80à¤\95 à¤¸à¤¨à¥\8dनिà¤\95à¤\9f à¤ªà¤°à¤¿à¤µà¤°à¥\8dतà¥\8dतन à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\82 (à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\9aाहà¥\80)",
+       "tog-usenewrc": "नीक सन्निकट परिवर्तन प्रयोग करू (जावास्क्रिप्ट चाही)",
        "tog-numberheadings": "शीर्षक स्वयं-क्रमांकित करू",
        "tog-showtoolbar": "संपादन ओजारपेटी देखाऊ (जावास्क्रीप्ट)",
        "tog-editondblclick": "दू बेर क्लीक कए पन्ना संपादित करू (जावास्क्रीप्ट)",
@@ -34,6 +35,7 @@
        "tog-watchdefault": "हमर संपादित पृष्ठ हमर साकांक्ष सूचीमे देखाऊ",
        "tog-watchmoves": "हमरा द्वारा हटाओल पृष्ठ हमर साकांक्ष सूचीमे राखू",
        "tog-watchdeletion": "हमरा द्वारा हटाओल पृष्ठ हमर साकांक्ष सूचीमे राखू",
+       "tog-watchrollback": "हमरा द्वारा जोडलगेल पृष्ठ हमार सांकक्ष सूचीमे राखू",
        "tog-minordefault": "हमर सभ सम्पादन पूर्वन्यस्त रूपेँ मामूली कहू",
        "tog-previewontop": "संपादन पेटीक ऊपर दृश्य देखाऊ",
        "tog-previewonfirst": "पहिल सम्पादनक बाद पूर्वावलोकन देखाउ",
@@ -56,6 +58,8 @@
        "tog-diffonly": "फाइल-अन्तर प्रणालीक नीचाँ पन्नाक सामिग्री नै देखाउ",
        "tog-showhiddencats": "नुकाएल संवर्ग देखाउ",
        "tog-norollbackdiff": "प्रत्यावर्तनक बाद फाइल-अन्तर प्रणालीकेँ बिसरू",
+       "tog-useeditwarning": "जब हम कोनो संपादन पृष्ठके बिना सुरक्षित केनै बदलाव संग छोइड दि त हमरा सूचित करु ।",
+       "tog-prefershttps": "सम्प्रवेशित करलाक बाद सदैव सुरक्षित कनेक्शनके प्रयोग करु",
        "underline-always": "सदिखन",
        "underline-never": "कखनो नै",
        "underline-default": "पूर्वन्यस्त गवेषक",
        "oct": "अक्टू.",
        "nov": "नव.",
        "dec": "दिस.",
+       "january-date": "जनवरी $1",
+       "february-date": "फरवरी $1",
+       "march-date": "मार्च $1",
+       "april-date": "अप्रैल $1",
+       "may-date": "मई $1",
+       "june-date": "जून $1",
+       "july-date": "जुलाई $1",
+       "august-date": "अगस्त $1",
+       "september-date": "सितम्बर $1",
+       "october-date": "अक्टूबर $1",
+       "november-date": "नवम्बर $1",
+       "december-date": "दिसम्बर $1",
        "pagecategories": "{{PLURAL:$1|खाढी|कएटा खाढी}}",
        "category_header": "संवर्ग \"$1\" मे पन्ना सभ",
        "subcategories": "उपसंवर्ग",
        "newwindow": "(नव खिड़कीसँ खुजैछ)",
        "cancel": "समाप्त",
        "moredotdotdot": "आर...",
+       "morenotlisted": "ई पुरा सूची नै अछी ।",
        "mypage": "हमर पन्ना",
        "mytalk": "वार्त्ता",
        "anontalk": "ऐ अनिकेत पता लेल विमर्श",
        "actions": "क्रिया सभ",
        "namespaces": "चेन्हासी समूह सभ",
        "variants": "प्रकार सभ",
+       "navigation-heading": "दिक्चालन सूची",
        "errorpagetitle": "गलती",
        "returnto": "$1 पर घुरु।",
        "tagline": "कतयसँ {{SITENAME}}",
        "permalink": "स्थायी लिंक",
        "print": "छापू",
        "view": "देखू",
+       "view-foreign": "$1 पर देखु",
        "edit": "संपादन",
+       "edit-local": "स्थानीय विवरण संपादन",
        "create": "बनाउ",
+       "create-local": "स्थानीय विवरण निर्माण",
        "editthispage": "एहि पृष्ठक संपादन",
        "create-this-page": "ई पन्ना बनाउ",
        "delete": "मेटाउ",
        "deletethispage": "ई पन्ना मेटाउ",
+       "undeletethispage": "ई पन्ना मेटाउ",
        "undelete_short": "आपस आनू  {{PLURAL:$1|एक सम्पादनt|$1 सम्पादन सभ}}",
        "viewdeleted_short": "देखू {{PLURAL:$1|एकटा मेटाएल सम्पादन|$1 मेटाएल सम्पादन सभ}}",
        "protect": "बचाउ",
        "talkpagelinktext": "कहू",
        "specialpage": "विशेष पन्ना",
        "personaltools": "व्यक्तिगत उपकरण",
-       "postcomment": "नव खण्ड",
        "articlepage": "विषय-सूची पन्ना देखू",
        "talk": "वार्तालाप",
        "views": "दृष्टि",
        "jumptonavigation": "हेलू",
        "jumptosearch": "ताकू",
        "view-pool-error": "दुखी छी, वितरक सभ एखन व्यस्त अछि।\nबड्ड बेशी लोक ऐ पन्नाकेँ देखबामे लागल छथि।\nऐ पन्नाकेँ फेरसँ देखबा लेल कनी बिलमू। \n$1",
+       "generic-pool-error": "दुखी छी, वितरक सभ एखन व्यस्त अछि।\nबड्ड बेशी लोक ऐ पन्नाकेँ देखबामे लागल छथि।\nऐ पन्नाकेँ फेरसँ देखबा लेल कनी बिलमू। \n$1",
        "pool-timeout": "प्रतीक्षा निगृहीत कालावसान",
        "pool-queuefull": "प्रतीक्षा-पाँती पौती भरल",
        "pool-errorunknown": "अज्ञात भ्रम",
+       "pool-servererror": "पूल काउंटर सेवा उपलब्ध नै अछि ($1)।",
        "aboutsite": "विषयमे {{SITENAME}}",
        "aboutpage": "Project:विवरण",
        "copyright": "$1क अंतर्गत विषय सूची उपलब्ध अछि",
        "backlinksubtitle": "← $1",
        "retrievedfrom": "प्राप्ति स्थल \"$1\"",
        "youhavenewmessages": "अहाँ लग अछि $1 ($2).",
+       "youhavenewmessagesfromusers": "अहाके लेल {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यसभ}} के $1 छि । ($2)",
+       "youhavenewmessagesmanyusers": "अहाके $1 छि । ($2)",
+       "newmessageslinkplural": "{{PLURAL:$1|एगो नया पत्र|999=नया पत्र}}",
+       "newmessagesdifflinkplural": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तन सभ}}",
        "youhavenewmessagesmulti": "$1 पर अहाँ लेल नव सन्देश अछि",
        "editsection": "संपादन करू",
        "editold": "सम्पादित करू",
        "hidetoc": "नुकाऊ",
        "collapsible-collapse": "भखड़ाउ",
        "collapsible-expand": "बढ़ाउ",
+       "confirmable-confirm": "कि {{GENDER:$1|अहाँ}} छी?",
+       "confirmable-yes": "हँ",
+       "confirmable-no": "नै",
        "thisisdeleted": "देखू वा जाउ $1?",
        "viewdeleted": "देखू $1?",
        "restorelink": "{{PLURAL:$1|एकटा मेटाएल सम्पादन|$1 मेटाएल सम्पादन सभ}}",
        "nospecialpagetext": "<strong> अहाँ एकटा अमान्य पन्नाक आग्रह केने छी। </strong>\nमान्य विशेष पन्नाक सूची एतए अछि [[Special:SpecialPages|{{int:specialpages}}]]।",
        "error": "भ्रम",
        "databaseerror": "दत्तनिधि भ्रम",
+       "databaseerror-text": "डाटाबेस अनुरोध त्रुटि भेल अछि।\nसंभवतः सफ्टवेयरमे गड़बड़ी अछि।",
+       "databaseerror-textcl": "डाटाबेस अनुरोध त्रुटि भेल अछि।",
+       "databaseerror-query": "अनुरोध: $1",
+       "databaseerror-function": "फंक्सन: $1",
+       "databaseerror-error": "त्रुटि: $1",
        "laggedslavemode": "'''चेतौनी:''' पन्नापर सम्भव जे अद्यतन परिवर्तन नै हुअए।",
        "readonly": "दत्तनिधि प्रतिबन्धित",
        "enterlockreason": "प्रतिबन्ध लेल कारण बताउ, संगमे एकटा अंदाज सेहो बताउ जे कखन ई प्रतिबन्ध हटाएल जाएत।",
        "badarticleerror": "ई क्रिया ऐ पन्नापर नै कएल जा सकैए।",
        "cannotdelete": "पन्ना व संचिका \"$1\" मेटाएल नै जा सकल।",
        "cannotdelete-title": "पन्ना \"$1\" नै मेटा सकल",
+       "delete-hook-aborted": "सम्पादन नोकसीसँ खतम भेल।\nई कोनो कारण नै देलक।",
        "badtitle": "खराप शीर्षक",
        "badtitletext": "आग्रह कएल पन्नाक शीर्षक गलत, खाली, वा गलत सम्बन्धित अन्तर-न्हाषा अन्तर विकी शीर्षक छी। ई एक वा बेशी कलाकार युक्त भऽ सकैए जे शीर्षकमे प्रयुक्त नै कएल जा सकैए।",
-       "perfcached": "ई दत्तांश उपस्मृतिक आधारपर अछि आ भऽ सकैए जे अद्यतन नै हुअए। A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
+       "perfcached": "ई दत्तांश उपस्मृतिक आधारपर अछि आ भऽ सकैए जे अद्यतन नै हुअए। अधिकतम {{PLURAL:$1|एकटा परिणाम|$1 परिणाम सभ}} क्याचेमे उपलब्ध अछि ।",
        "perfcachedts": "ई दत्तांश उपस्मृतिमे अछि, आ एकर अन्तिम परिवर्धन भेल अछि $1 केँ। A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
        "querypage-no-updates": "ऐ पन्नाक नवीनीकरण अखन बन्न अछि।\nएतुक्का दत्तांश अखन नवीकरण नै कएल जाएत।",
        "viewsource": "जड़ि देखू",
        "namespaceprotected": "अहाँकेँ '''$1''' नाम-पेटारमे सम्पादनक अनुमति नै अछि।",
        "customcssprotected": "अहांकें ऐ सी.एस.एस.पन्नाकें सम्पादित करबाक अधिकार नै अछि, कारण ऐमे दोसर प्रयोक्ताक व्यक्तिगत विकल्प छै।",
        "customjsprotected": "अहांकें ऐ जावास्क्रिप्ट पन्नाकें सम्पादित करबाक अधिकार नै अछि, कारण ऐमे दोसर प्रयोक्ताक व्यक्तिगत विकल्प छै।",
+       "mycustomcssprotected": "अहाके लेल ई CSS पन्नाके सम्पादित करवाक अधिकार नै अछि।",
+       "mycustomjsprotected": "अहके लेल इ जावास्क्रिप्ट पन्नाके सम्पादित करवाक अधिकार नै अछि।",
+       "myprivateinfoprotected": "अहाके अपन व्यक्तिगत जानकारी बदलैक अनुमति नै अछि।",
+       "mypreferencesprotected": "अहाके अपन प्राथमिकता बदलैक अनुमति नै अछि।",
        "ns-specialprotected": "विशेष पन्ना सभकेँ सम्पादित नै कएल जा सकैए।",
        "titleprotected": "ऐ शीर्षकक निर्माण प्रतिबन्धित अछि [[User:$1|$1]] द्वारा।\nकारण एतऽ देल अछि \"''$2''\"।",
+       "filereadonlyerror": "\"$1\" फाइलके बदलैलेल अक्षम कियाक भण्डार \"$2\" इ समय 'मात्र पाठन के लेल' (रीड ओनली) अछि।\n\nजे प्रबंधक इ प्रबंध लगोनै अछि हुनका निम्न विवरण प्रदान कएल गेल अछि: \"$3\"।",
+       "invalidtitle-knownnamespace": "\"$2\" नामस्थान आर \"$3\" नाम बला गलत शीर्षक",
+       "invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 आर नाम \"$2\" वाला गलत शीर्षक",
+       "exception-nologin": "सम्प्रवेशित नै",
+       "exception-nologin-text-manual": "इ पन्ना वा काजके सक्षम करवाक लेल कृपया $1 करु।",
        "virus-badscanner": "खराप विन्यास: अज्ञात विषविधि बिम्बक: ''$1''",
        "virus-scanfailed": "बिम्ब विफल (विध्यादेश $1)",
        "virus-unknownscanner": "अज्ञात विषविधि निरोधक",
        "logouttext": "'''अहाँ निष्क्रमण कऽ गेल छी।'''\n\nअहाँ {{अन्तर्जाल}} प्रयोग अनाम भऽ कऽ सकै छी, वा अहाँ <span class='plainlinks'>[$1 log in again]</span> वएह आकि कोनो आन प्रयोक्ताक रूपमे सेहू प्रयोक कऽ सकै छी।\nई मोन राखू जे किछु पन्ना एना देखा पड़ि सकैए जेना अहाँ अखनो सम्प्रवेशित होइ, जावत अहाँ अपन गवेषकक उपस्मृति मेटा नै दै छी।",
+       "welcomeuser": "अहाके स्वागत अछि, $1!",
+       "welcomecreation-msg": "अहाके खाता बनावोल गेल अछि ।\nअपन [[Special:Preferences|{{SITENAME}} प्राथमिकतासभ]] बदलैल नै बिसरब।",
        "yourname": "प्रयोक्ता:",
+       "userlogin-yourname": "प्रयोक्ता:",
+       "userlogin-yourname-ph": "अपन प्रयोक्तानाम लिखु",
+       "createacct-another-username-ph": "एकटा प्रयोक्तानाम लिखू:",
        "yourpassword": "कूटशब्द:",
+       "userlogin-yourpassword": "कूटशब्द:",
+       "userlogin-yourpassword-ph": "अपन कूटशब्द लिखु",
+       "createacct-yourpassword-ph": "कूटशब्द ई ठाम राखु",
        "yourpasswordagain": "कूटशब्द फेरसँ टाइप करू:",
+       "createacct-yourpasswordagain": "कूटशब्दके जाँच करु",
+       "createacct-yourpasswordagain-ph": "कूटशब्द पुनः लिखु",
        "remembermypassword": "हमर सम्प्रवेश ऐ गवेषकपर मोन राखू (बेशीसँ बेशी $1 {{PLURAL:$1|दिन|दिन}})",
+       "userlogin-remembermypassword": "हमरा सम्प्रवेशित राखु",
+       "userlogin-signwithsecure": "सुरक्षित कनेक्शनके प्रयोग करु",
        "yourdomainname": "अहाँक प्रभावक्षेत्र:",
+       "password-change-forbidden": "अहा इ विकिमे कूटशब्द नै बदल सकैत छि ।",
        "externaldberror": "खाहे सत्यापन दतांश भ्रम छल वा अहाँ अपन बाह्य खाताकेँ अद्यतन करबामे असमर्थ छी।",
        "login": "सम्प्रवेश",
        "nav-login-createaccount": "सदस्य लॉग इन",
-       "loginprompt": "{{अन्तर्जाल}} सम्प्रवेश लेल अहाँकेँ आवश्यक रूपेँ ज्ञापक सक्रिय करबाक चाही।",
        "userlogin": "लॉग इन / खेसरा बनाऊ",
        "userloginnocreate": "सम्प्रवेश",
        "logout": "निष्क्रमण",
        "userlogout": "फेर आयब",
        "notloggedin": "सम्प्रवेशित नै छी",
+       "userlogin-noaccount": "खाता नै अछि?",
+       "userlogin-joinproject": "{{SITENAME}} से जोडु",
        "nologin": "खाता नै अछि? $1।",
        "nologinlink": "नव खाता खोलू",
        "createaccount": "खाता खोली",
        "gotaccount": "पहिनहियेसँ खाता अछि? $1",
        "gotaccountlink": "सम्प्रवेश",
        "userlogin-resetlink": "अपन सम्प्रवेश विवरण बिसरि गेलहुँ?",
+       "userlogin-resetpassword-link": "अपन कूटशब्द बिसर गेलौ ?",
+       "userlogin-helplink2": "सम्प्रवेशित करवाकलेल मदत",
+       "userlogin-loggedin": "अहा {{GENDER:$1|$1}} के रूपमे पहिले स सम्प्रवेशित छि।\nकोनो दोसर सदस्यके रुपमे सम्प्रवेशित करवाक लेल देल गेल फारमके प्रयोग करु।",
+       "userlogin-createanother": "दोसर खाता बनाउ",
+       "createacct-emailrequired": "ई-पत्र संकेत",
+       "createacct-emailoptional": "ई-पत्र संकेत (वैकल्पिक)",
+       "createacct-email-ph": "अपन ई-पत्र संकेत सत्यापित करू",
+       "createacct-another-email-ph": "ई-पत्र संकेत सत्यापित करू",
        "createaccountmail": "ई-पत्र द्वारा",
+       "createacct-realname": "असली नाम (वैकल्पिक)",
        "createaccountreason": "कारण:",
+       "createacct-reason": "कारण:",
+       "createacct-reason-ph": "अहा इगो आर दोसर खाता कियाक बनउने जा रहल छि",
+       "createacct-captcha": "सुरक्षा जाँच",
+       "createacct-imgcaptcha-ph": "उपरोक्त पाठ लिखु",
+       "createacct-submit": "अपन खाता बनाउ",
+       "createacct-another-submit": "दोसर खाता बनाउ",
+       "createacct-benefit-heading": "{{SITENAME}} अहि जोका लोकनिसभ द्वारा बनावल गेल अछि।",
+       "createacct-benefit-body1": "$1 {{PLURAL:$1|सम्पादन|सम्पादन सभ}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|पन्ना}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|योगदानकर्ता}}",
        "badretype": "कूटशब्द जे अहाँ भरलहुँ से मेल नै खाइए।",
        "userexists": "सम्प्रवेशित प्रयोक्तानाम पहिनहियेसँ प्रयोगमे अछि।\nकृपा कऽ कोनो दोसर नाम चुनू।",
        "loginerror": "सम्प्रवेश भ्रम",
+       "createacct-error": "खाता निर्माण त्रुटि",
        "createaccounterror": "खाता नै बना सकल: $1",
        "nocookiesnew": "प्रयोक्ता खाता खुजि गेल, मुदा अहाँ सम्प्रवेशित नै छी।\n{{अन्तर्जाल}} सम्प्रवेशित प्रयोक्ताक लेल ज्ञापकक प्रयोग करैत अछि।\nअहाँ ज्ञापककेँ अशक्त केने छी।\nकृपा कऽ ओकरा सक्रिप करू, तखन अपन प्रयोक्तानाम आ कूटशब्दक संग सम्प्रवेश करू।",
        "nocookieslogin": "{{अन्तर्जाल}} प्रयोक्ताकेँ सम्प्रवेशित करबा लेल ज्ञापकक प्रयोग करैत अछि।\nअहाँ ज्ञापककेँ अशक्त केने छी।\nकृपा कऽ ओकरा सक्रिय करू आ फेरसँ प्रयास करू।",
        "emailconfirmlink": "अपन ई-पत्र संकेत सत्यापित करू",
        "invalidemailaddress": "अमान्य प्रारूपक कारण ऐ ई-पत्र संकेतकेँ स्वीकार नै कएल जा सकैए।\nएकटा मान्य ई-पत्र संकेत लिखू वा ओइ स्थानकेँ खाली करू।",
        "cannotchangeemail": "खाता ई-पत्र संकेत ऐ विकीपर बदलल नै जा सकैए।",
+       "emaildisabled": "ई साइट ई-पत्र नै पठाएत।",
        "accountcreated": "खाता खुजि गेल",
        "accountcreatedtext": "$1 लेल प्रयोक्ता खाता खुजि गेल।",
        "createaccount-title": "{{अन्तर्जाल}} लेल खाता निर्माण",
        "login-abort-generic": "अहाँक सम्प्रवेश सफल नै भेल- खतम",
        "loginlanguagelabel": "भाषा : $1",
        "suspicious-userlogout": "अहाँक निष्क्रमणक अनुरोध नै मानल गेल कारण ई लागल जे ई पुरान गवेषकक लागि वा दोसराइत उपस्मृति द्वारा पठाओल गेल छल।",
+       "createacct-another-realname-tip": "मूल नाम वैकल्पिक अछि।\nजँ अहाँ एकरा देबा लेल प्रयोग करै छी, ई अहाँकेँ काजक श्रेय देबा लेल एकर प्रयोग कएल जाएत।",
+       "pt-login": "सम्प्रवेश",
+       "pt-login-button": "सम्प्रवेश",
+       "pt-createaccount": "खाता खोली",
+       "pt-userlogout": "निष्क्रमण",
        "php-mail-error-unknown": "पी.एच.पी.क संदेश कार्य() मे अज्ञात दोष",
        "user-mail-no-addy": "बिन ई-पत्र संकेतक ई-पत्र पठेबाक प्रयास",
+       "user-mail-no-body": "एकटा खाली वा बहुत कनिका ई-पत्र भेजवाक प्रयास कल गेल ।",
        "changepassword": "कूटशब्द बदलू",
-       "resetpass_announce": "अहाँ अस्थायी ई-पत्र विध्यादेशसँ सम्प्रवेश केने छी।\nसम्प्रवेश सम्पूर्ण करबा लेल, अहाँ एकटा नव कूटशब्द एतए निर्धारित करू:",
+       "resetpass_announce": "अहाँ अस्थायी ई-पत्र विध्यादेशसँ सम्प्रवेश केने छी।\nसम्प्रवेश सम्पूर्ण करबा लेल, अहाँ एकटा नव कूटशब्द एतए निर्धारित करू:",
        "resetpass_text": "<!-- पाठ एतऽ लिखू -->",
        "resetpass_header": "खाता कूटशब्द बदलू",
        "oldpassword": "पुरान कूटशब्द",
        "newpassword": "नव कूटशब्द",
        "retypenew": "नव कूटशब्द फेरसँ टंकित करू",
        "resetpass_submit": "कूटशब्द बनाउ आ सम्प्रवेश करू",
-       "changepassword-success": "अहाँक कूटशब्द सफलतासँ बदलि देल गेल!\nआब अहाँकेँ सम्प्रवेशित कऽ रहल छी...",
+       "changepassword-success": "अहाँक कूटशब्द सफलतासँ बदलि देल गेल!",
+       "changepassword-throttled": "अहाँ ढ़ेर रास सम्प्रवेश प्रयास केलहुँ।\nफेर प्रयास करबासँ पहिने कने काल थम्हू।",
        "resetpass_forbidden": "कूटशब्द सभ नै बदलल जा सकैए।",
        "resetpass-no-info": "अहाँकेँ ऐ पन्नाकेँ पढ़बाले सम्प्रवेशित हुअए पड़त।",
        "resetpass-submit-loggedin": "कूटशब्द बदलू",
        "resetpass-wrong-oldpass": "अमान्य अस्थायी वा अखुनका कूटशब्द।\nअहाँ पहिनहिये सफलतासँ कूटशब्द बदलि लेने छी वा एकटा नव अस्थायी कूटशब्द लेल आग्रह केने छी।",
        "resetpass-temp-password": "तात्कालिक कूटशब्द",
        "passwordreset": "कूटशब्द फेरसँ बनाउ",
+       "passwordreset-text-one": "अपन कूटशब्द रीसेट करवाक लेल इ फारम भरु ।",
+       "passwordreset-text-many": "{{PLURAL:$1|ई-पत्रके माध्यमसऽ एकटा अस्थायी कूटशब्द पावैलेल कोनो एकटा डिब्बा भरु ।}}",
        "passwordreset-legend": "कूटशब्द फेरसँ बनाउ",
        "passwordreset-disabled": "कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।",
+       "passwordreset-emaildisabled": "कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।",
        "passwordreset-username": "प्रयोक्तानाम",
        "passwordreset-domain": "क्षेत्र:",
        "passwordreset-capture": "परिणाम ई-पत्र देखू?",
        "changeemail-oldemail": "अखुनका ई-पत्र संकेत:",
        "changeemail-newemail": "नव ई-पत्र संकेत:",
        "changeemail-none": "(कोनो नै)",
+       "changeemail-password": "अहाके {{SITENAME}} कूटशब्द:",
        "changeemail-submit": "ई-पत्र संकेत बदलू",
        "changeemail-cancel": "खतम",
+       "changeemail-throttled": "अहाँ ढ़ेर रास सम्प्रवेश प्रयास केलहुँ।\nफेर प्रयास करबासँ पहिने कने काल थम्हू।",
+       "resettokens": "टोकन रीसेट करी",
+       "resettokens-no-tokens": "रीसेट करवाक लेल कोनो टोकन नै अछि।",
+       "resettokens-legend": "टोकन रीसेट करी",
+       "resettokens-tokens": "टोकन:",
+       "resettokens-token-label": "$1 (वर्तमान मूल्य: $2)",
+       "resettokens-done": "टोकन रीसेट भेल अछि।",
+       "resettokens-resetbutton": "छानल टोकन रीसेट करु",
        "bold_sample": "गँहीर लेखन",
        "bold_tip": "गँहीर लेखन",
        "italic_sample": "कटि लेखन",
        "updated": "(अद्यतन  कएल)",
        "note": "'''टिप्पणी:'''",
        "previewnote": "'''मोन राखू ई मातर पूर्वावलोकन छी।'''\nअहाँक परिवर्तन अखन धरि सँचिआएल नै गेल अछि!",
+       "continue-editing": "संपादन क्षेत्र जाउ",
        "previewconflict": "ई पूर्वदृश्य देखबैए उपरका सम्पादन क्षेत्रक पाठ , ई आएत जखन अहाँ संरक्षित करब।",
        "session_fail_preview": "''' दुखी छी! अहाँक सत्रक दत्तांश खतम भऽ गेल तै कारणसँ अहाँक सम्पादनक निपटारा नै भऽ सकल।'''\nफेरसँ प्रयास करू।\nजँ ई फेरसँ काज नै करैए, प्रयोग करू [[Special:UserLogout|निष्क्रमण]] आ फेर सम्प्रवेश करू।",
        "session_fail_preview_html": "''' दुखी छी! हम अहाँक सम्पादनक निष्पादन नै कऽ सकलहुँ कारण सत्रक दत्तांश खतम भऽ गेल।'''\n''कारण {{अन्तर्जाल}} लग काँच एच.टी.एम.एल. दत्तांश सक्रिय छै, पूर्वदृश्य जावास्क्रिप्ट आक्रमणक डरसँ नुकाएल राखल गेल अछि।''\n'''जँ ई वैध सम्पादन प्रयास अछि, कृपा कऽ पुनः प्रयास करू।'''\nजँ ई अखनो काज नै कऽ रहल अछि, प्रयास करू [[Special:UserLogout|निष्क्रमण कऽ रहल छी]] आ फेरसँ सम्प्रवेश।",
        "token_suffix_mismatch": "'''अहाँक सम्पादन अस्वीकार कऽ देल गेल अछि कारण अहाँक ग्राहक प्रेष्यमान अंक विधानक विराम चेन्ह सभकेँ नष्ट कऽ देलन्हि।'''\nई सम्पादन पन्नाक पाठकेँ दूषित होएबासँ बचेबा लेल अमान्य कऽ देल गेल।\nई कखनो काल होइए जखन अहाँ जाल आधारित अनाम दोसरा लेल चल सेवा प्रयुक्त करै छी।",
        "edit_form_incomplete": "'''सम्पादन आवेदनक किछु भाग वितरक धरि नै पहुँचल; एक बेर फेर देखू जे अहाँक सम्पादन दुरुस्त अछि आ फेरसँ प्रयास करू।'''",
        "editing": "सम्पादन होइए $1",
+       "creating": "$1 बनाउ",
        "editingsection": "सम्पादन कऽ रहल छी $1 (खण्ड)",
        "editingcomment": "सम्पादन कऽ रहल छी $1 (नव खण्ड)",
        "editconflict": "सम्पादन अन्तर: $1",
        "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": "अवैध डाटा सामग्री",
+       "editpage-notsupportedcontentformat-title": "सामग्री स्वरूप समर्थित नै अछि",
+       "content-model-wikitext": "विकिटेक्स्ट",
+       "content-model-text": "सामान्य पाठ",
+       "content-model-javascript": "जावास्क्रिप्ट",
+       "content-model-css": "सी॰एस॰एस",
        "expensive-parserfunction-warning": "'''चेतौनी:''' ई पन्ना बड्ड बेसी महग विभाजक प्रकार्य आह्वान करैत अछि।\n एकरा $2 सँ कम {{PLURAL:$2|call|calls}}, ओतऽ {{PLURAL:$1|ई अछि $1 call|ई सभ अछि $1 calls}}",
        "expensive-parserfunction-category": "बड बेसी महग विभाजक आह्वानबला पन्ना सभ",
        "post-expand-template-inclusion-warning": "'''चेतौनी:''' नमूना लेबाक आकार बड्ड पैघ अछि।\nकिछु नमूना नै लेल जा सकत।",
        "revertmerge": "नै मिज्झर",
        "mergelogpagetext": "नीचाँ एक पन्ना इतिहासक दोसरमे अद्यतन मिश्रणक सूची अछि।",
        "history-title": "\"$1\" क संशोधन इतिहास",
+       "difference-title": "\"$1\" के अवतरणसभमे अंतर",
+       "difference-title-multipage": "\"$1\" आर \"$2\" पृष्ठसभ मे अंतर",
        "difference-multipage": "(पन्ना सभक बीचमे अन्तर)",
        "lineno": "पंक्त्ति $1:",
        "compareselectedversions": "चयन कएल संशोधन सभक तुलना करू",
        "showhideselectedversions": "देखाउ/ नुकाउ चयनित संशोधन सभ",
        "editundo": "असंपादन",
+       "diff-empty": "(कोनो अंतर नै)",
+       "diff-multi-sameuser": "(इ प्रयोक्ताद्वारा {{PLURAL:$1|कएल गेल बीचके एक अवतरण नै देखाओल गेल |कएल गेल बीचके $1 अवतरण नै देखाओल गेल}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)",
        "diff-multi-manyusers": "({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)",
+       "difference-missing-revision": "इ अंतर {{PLURAL:$2|के एकटा अवतरण|के $2 अवतरण}} ($1) नै {{PLURAL:$2|पाओल गेल|पाओल गेल}}।\n\nइ सामन्य ढंगमे हटाओल गेल पृष्ठके अवतरसभ मे अंतर खोजला स होएत अछि । आर जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाओल लग] मे भेट सकैत अछि।",
        "searchresults": "तकबाक फलाफल",
        "searchresults-title": "तकबाक फलाफल \"$1\" लेल",
        "titlematches": "पन्ना शीर्ष मेल",
        "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": "(फाइल सामग्रीसे मेल खेलक अछि)",
        "search-suggest": "अहाँ मोने अछि जे:$1",
        "search-interwiki-caption": "सम्बन्धित परियोजना सभ",
        "search-interwiki-default": "$1 सभटा परिणाम:",
        "searchrelated": "सम्बन्धी",
        "searchall": "सभटा",
        "showingresults": "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}}  #'''$2''' सँ प्रारम्भ भऽ कऽ।",
+       "showingresultsinrange": "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}}  #'''$2''' सँ प्रारम्भ भऽ कऽ।",
        "showingresultsheader": "{{PLURAL:$5|परिणाम '''$1''' एकर '''$3'''|परिणाम सभ '''$1 - $2''' एकर '''$3'''}} ऐ लेल '''$4'''",
        "search-nonefound": "अभ्यर्थनासँ मेल खाइत कोनो परिणाम नै भेटल।",
        "powersearch-legend": "विशेष खोज",
        "powersearch-togglelabel": "जाँचू:",
        "powersearch-toggleall": "सभटा",
        "powersearch-togglenone": "कोनो नै",
+       "powersearch-remember": "याद राखु भविष्यकऽ खोजीके लेल",
        "search-external": "बाह्य खोज",
        "searchdisabled": "{{अन्तर्जाल}} खोज बन्न अछि।\nअहाँक गूगलक माध्यमसँ ऐ बीच ताकि सकै छी।\nमोन राखू जे तकर विवरणी {{अन्तर्जाल}} सामिग्री समयातीत भऽ सकैए।",
+       "search-error": "खोजवाके समय निम्न त्रुटि उत्पन्न भेल: $1",
        "preferences": "विकल्प",
        "mypreferences": "खासमखास",
        "prefs-edits": "सम्पादनक संख्या",
+       "prefsnologintext2": "अपन वरीयतासभके बदलैक लेल $1 करू।",
        "prefs-skin": "रूप",
        "skin-preview": "पूर्वावलोकन",
        "datedefault": "कोनो मोनपसंद नै",
        "prefs-labs": "प्रायोगिक गुण सभ",
+       "prefs-user-pages": "उपयोगकर्ताक पृष्ठ",
        "prefs-personal": "प्रयोक्ता परिचय",
        "prefs-rc": "हालक परिवर्तन",
        "prefs-watchlist": "साकांक्ष-सूची",
        "prefs-watchlist-days": "साकांक्ष-सूचीमे एतेक दिन देखाएल:",
-       "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}",
+       "prefs-watchlist-days-max": "बेसीसँ बेसी $1 {{PLURAL:$1|दिन|दिन}}",
        "prefs-watchlist-edits": "बढ़ाएल साकांक्ष सूचीमे अधिकतम परिवर्तन देखाएब:",
        "prefs-watchlist-edits-max": "बेसीसँ बेसी:१०००",
        "prefs-watchlist-token": "साकांक्ष-सूची खेप:",
        "recentchangesdays-max": "बेसीसँ बेसी $1 {{PLURAL:$1|दिन|दिन}}",
        "recentchangescount": "पूर्वनिर्धारित रूपेँ एतेक सम्पादन देखाएल गेल:",
        "prefs-help-recentchangescount": "ऐ मे सम्मिलित अछि आइ-काल्हिक परिवर्तन, पन्नाक इतिहास आ वृत्तलेख",
+       "prefs-help-watchlist-token2": "इ अहाँके कंक्षाकसूचीके वेब फिडके गोपनीय चाभी छी ।\nइ जे कोइ लंग अछि उ अपन कंक्षाकसूची पैढ सकैत अछि, ऐ लेल इ क्यों गोटा स नै बाटब ।\n[[Special:ResetTokens|एकरा रीसेट करवाक लेल यै ठाम क्लिक करु]]।",
        "savedprefs": "अहाँक पसिन्न सुरक्षित कएल गेल",
        "timezonelegend": "समय क्षेत्र",
        "localtime": "स्थानीय समए:",
        "prefs-dateformat": "तिथिक बगेबानी",
        "prefs-timeoffset": "समए संशोधक",
        "prefs-advancedediting": "विशिष्ट विकल्प सभ",
+       "prefs-editor": "संपादक",
+       "prefs-preview": "पूर्वावलोकन",
        "prefs-advancedrc": "विशिष्ट विकल्प सभ",
        "prefs-advancedrendering": "विशिष्ट विकल्प सभ",
        "prefs-advancedsearchoptions": "विशिष्ट विकल्प सभ",
        "prefs-advancedwatchlist": "विशिष्ट विकल्प सभ",
        "prefs-displayrc": "दृश्य विकल्प सभ",
        "prefs-displaywatchlist": "दृश्य विकल्प सभ",
+       "prefs-tokenwatchlist": "टोकन",
        "prefs-diffs": "अन्तर निर्धारक सभ",
+       "prefs-help-prefershttps": "इ प्राथमिकता अहाँके फेर स सम्प्रवेश करलाक बाद प्रभाव पडत।",
+       "prefs-tabs-navigation-hint": "सुझाव: अहाँ टैब्स सूचीमे टैब्सके बीच आवागमन करवाक लेल बाम आर दाहिना बागलके कुंजिसभके उपयोग कइर सकैत छी।",
        "email-address-validity-valid": "ई-पत्र संकेत मान्य बुझाइत अछि",
        "email-address-validity-invalid": "एकटा मान्य ई-पत्र संकेत लिखू",
        "userrights": "प्रयोक्ता अधिकारक प्रबन्धन",
        "userrights-changeable-col": "वर्ग जे अहाँ बदलि सकै छी",
        "userrights-unchangeable-col": "वर्ग जे अहाँ नै बदलि सकै छी",
        "userrights-irreversible-marker": "$1*",
+       "userrights-conflict": "प्रयोक्ता अधिकार बदलावक समयमे अंतर्विरोध! कृपया अपन बदलाव जाँच करु आ पुनः सुनिश्चित करु।",
+       "userrights-removed-self": "अहाँ सफलतापूर्वक अपन अधिकार हटा देने छी। अतः अहाँ आब ई पृष्ठ नै देख सकैत छी।",
        "group": "वर्ग:",
        "group-user": "प्रयोक्ता सभ",
        "group-autoconfirmed": "स्वतःअनुमोदित प्रयोक्ता सभ",
        "right-move": "पन्ना सभ घसकाउ",
        "right-move-subpages": "पन्ना सभकेँ उपपन्ना सभक संग घसकाउ",
        "right-move-rootuserpages": "मूल प्रयोक्ता पन्ना सभ घसकाउ",
+       "right-move-categorypages": "श्रेणी पृष्ठ स्थानांतरित करू",
        "right-movefile": "संचिका सभकेँ घसकाउ",
        "right-suppressredirect": "पन्ना घसकेबा काल मूल पन्ना सभसँ लागि सभ नै बनाउ",
        "right-upload": "संचिका सभ उपारोपित करू",
        "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-unblockself": "स्वयंकेँ प्रतिबन्धसँ हटाउ",
        "right-protect": "सुरक्षा स्तर बदलू आ संरक्षित पन्ना सम्पादित करू",
        "right-editprotected": "संरक्षित पन्ना सम्पादित करू (बिना तराउपड़ी सुरक्षाक)",
+       "right-editsemiprotected": "संरक्षित पन्ना सम्पादित करू (बिना तराउपड़ी सुरक्षाक)",
        "right-editinterface": "प्रयोक्ता मध्यस्थक सम्पादन करू",
        "right-editusercssjs": "दोसर प्रयोक्ताक सी.एस.एस. आ जावास्क्रिप्ट संचिका सभक सम्पादन करू",
        "right-editusercss": "दोसर प्रयोक्ता सभक सी.एस.एस. संचिका सभक सम्पादन करू",
        "right-edituserjs": "दोसर प्रयोक्ताक जावास्क्रिप्ट संचिका सभक सम्पादन करू",
+       "right-editmyusercss": "अपन प्रयोक्ता स्तरके सी.एस.एस.फाइल स संपादित करु",
+       "right-editmyuserjs": "दोसर प्रयोक्ताक जावास्क्रिप्ट संचिका सभक सम्पादन करू",
+       "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-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": "ऐ पन्नापर विकीमे भेल सभसँ अद्यतन परिवर्तनपर नजरि राखू।",
+       "recentchanges-noresult": "इ अवधिके दौरान इ मापदंडके पूर्ण करेत समय कोनो परिवर्तन नै केएल गेल अछि।",
        "recentchanges-feed-description": "ऐ सूचना-तंत्रांशमे विकीमे भेल सभसँ लगक परिवर्तन ताकू",
        "recentchanges-label-newpage": "ई सम्पादन एकटा नव पन्नाक निर्माण केलक।",
        "recentchanges-label-minor": "ई एकटा लघु सम्पादन छी",
        "recentchanges-label-bot": "ई सम्पादन यांत्रिक छल।",
        "recentchanges-label-unpatrolled": "ऐ सम्पादनक पुनरीक्षण अखन धरि नै कएल गेल अछि।",
+       "recentchanges-label-plusminus": "पन्नाके आकार इ बाइट संख्यासे बदलल गेल",
+       "recentchanges-legend-heading": "'''कुंजी:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नयाँ पन्नसभके सूची]] सहो देखु)",
        "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": "देखाऊ अंतिम $1 परिवर्त्तन अंतिम $2 दिनमे<br />$3",
        "diff": "अंतर",
        "hist": "इति.",
        "rc_categories": "संवर्ग सीमित (\"|\" सँ हटाउ)",
        "rc_categories_any": "कोनो",
        "rc-change-size": "$1",
+       "rc-change-size-new": "बदललाके बाद $1 {{PLURAL:$1|बाइट}}",
        "newsectionsummary": "/* $1 */ नव संवर्ग",
        "rc-enhanced-expand": "वर्णन देखाउ (जावास्क्रिप्ट चाही)",
        "rc-enhanced-hide": "वर्णन नुकाउ",
+       "rc-old-title": "मूल रूप स \"$1\" नाम स बनाएल गेल रह",
        "recentchangeslinked": "संबंधित परिवर्त्तन",
        "recentchangeslinked-feed": "संबंधित परिवर्त्तन",
        "recentchangeslinked-toolbox": "संबंधित परिवर्त्तन",
        "fileexists-shared-forbidden": "ऐ नामसँ एकटा संचिका साझी संचिका बखारीमे पहिनहियेसँ अछि।\nजँ अहाँ अखनो अपन संचिका उपारोपित करए चाहै छी, कृपा कऽ पाछाँ जाउ आ एकटा नव नाम चुनू।\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "ई फाइल एकर {{PLURAL:$1|file|files}} द्वितीयक अछि:",
        "file-deleted-duplicate": "ऐ संचिका ([[:$1]]) सँ मेल खाइत संचिका पहिनहिये मेटा देल गेल अछि।\nअहाँ ओइ संचिकाक मेटाएल जएबाक इतिहास फेरसँ उपारोपित करबासँ पहिने देखू।",
+       "file-deleted-duplicate-notitle": "ऐ स पहिले इ फाइलके अहिने एगो फाइलके हटाएल गेल अछि , आर शीर्षक नुकाएल गेल अछि।\nएकरा फेर स अपलोड करै स पहिले अहाँ कोनो एहन व्यक्ति स स्थितिके  समीक्षा करै लेल कहु जेकरा लंग नुकाएल गेल फाइल देखवाक क्षमता अछि।",
        "uploadwarning": "उपारोपण चेतौनी",
        "uploadwarning-text": "कृपा कऽ नीचाँ देल संचिका वर्णनकेँ संशोधित करू आ फेरसँ प्रयास करू।",
        "savefile": "संचिका संरक्षण करू",
-       "uploadedimage": "अपलोड भेल \"[[$1]]\"",
-       "overwroteimage": "एकर \"[[$1]]\" नव संस्करण उपारोपित भेल।",
        "uploaddisabled": "उपारोपण सभ अशक्त कएल गेल।",
        "copyuploaddisabled": "सार्वत्रिक विभव संकेत उपारोपण अशक्त कएल गेल।",
        "uploaddisabledtext": "संचिका उपारोपण सभ अशक्त अछि।",
        "php-uploaddisabledtext": "पी.एच.पी.मे संचिका उपारोपण अशक्त अछि।\nकृपा कऽ संचिका उपारोपण विकल्प जाँचू।",
        "uploadscripted": "ई संचिका पर्यंकभाषा वा कूटलिपि युक्त अछि जे गवेषक द्वारा गलत रूपमे व्याख्यायित कएल जा सकैए।",
+       "uploadscriptednamespace": "इ एस॰वी॰जी फाइलमे अमान्य नामस्थान \"$1\" अछि।",
+       "uploadinvalidxml": "अपलोड केएल गेल फाइलमे स्थित XML पार्स नै केएल जा सकैत अछि।",
        "uploadvirus": "ई संचिका विषविधियुक्त अछि।\nवर्णन:$1",
        "uploadjava": "ई संचिका एकटा संकुचित संचिका अछि जइमे अछि एकटा जावा .class संचिका।\nजावा संचिका सभक उपारोपण प्रतिबन्धित अछि, कारण ओ सभ सुरक्षा प्रतिबन्ध सभ छी जकरासँ ई तड़पल जा सकैए।",
        "upload-source": "मूल संचिका",
        "upload-misc-error-text": "उपारोपण काल एकटा विचित्र भ्रम आएल।\nकृपा कऽ जाँचू कि सार्वत्रिक विभव संकेत मान्य आ प्रवेश-उपयुक्त अछि आ फेरसँ प्रयास करू।\nजँ समस्या रहिते अछि तँ [[Special:ListUsers/sysop|संचालक]] सँ सम्पर्क करू।",
        "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-hashes": "तुलना के लेल फाइलसहके हैश नै मिलल।",
+       "backend-fail-notsame": "एकटा गैर-समान फाइल $1 मे पहिले स अछि।",
+       "backend-fail-invalidpath": "$1 मान्य भंडारण पथ नै छी।",
+       "backend-fail-delete": "\"$1\" फाइल केँ नै मेटा सकल।",
+       "backend-fail-describe": "फाइल \"$1\" के मेटाडाटा बदल नै सकल।",
+       "backend-fail-alreadyexists": "फाइल $1 पहिने स अछि।",
+       "backend-fail-store": "फाइल $1, $2 मे संग्रहीत नै कऽ सकल।",
+       "backend-fail-copy": "फाइल $1 के $2 मे प्रतिलिपि नै कऽ सकल।",
+       "backend-fail-move": "फाइल $1 सऽ $2 मे स्थानांतरित नै भऽ सकल।",
+       "backend-fail-opentemp": "अस्थायी संचिका नै खोइज सकल।",
+       "backend-fail-writetemp": "अस्थायी संचिका पर नै लिखाल जा सकल।",
+       "backend-fail-closetemp": "अस्थायी संचिका नै बन्द भऽ सकल।",
+       "backend-fail-read": "फाइल $1 पैढ नै जा सकल ।",
+       "backend-fail-create": "फाइल $1 नै लिखल जा सकल।",
+       "backend-fail-maxsize": "फाइल $1 नै लिखल जा सकल कियाक कि ई {{PLURAL:$2|$2 बाईट}} सऽ बडका अछि।",
        "zip-file-open-error": "संकुचित संचिका जाँचमे संचिका खोललापर एकटा भ्रम आएल।",
        "zip-wrong-format": "खास संचिका संकुचित संचिका नै छी।",
        "zip-bad": "ई संचिका एकटा टूटल आ ओहिनो बिन पढ़बा योग्य संकुचित फाइल छी।",
        "license-nopreview": "(पूर्वावलोकन उपलब्ध नै अछि)",
        "upload_source_url": "(एकटा मान्य, सार्वजनिक प्रवेशबला सार्वत्रिक विभव संकेत)",
        "upload_source_file": "(अहाँक संगणकपर एकटा संचिका)",
+       "listfiles-delete": "मिटाउ",
        "listfiles-summary": "ई विशिष्ट पन्ना सभटा उपारोपित संचिका देखबैए।\nप्रयोक्ता द्वारा चुनलापर अन्तिम उपारोपित संचिका देखबैत अछि।",
        "listfiles_search_for": "ऐ दृश्य-श्रव्य नामले ताकू:",
        "imgfile": "संचिका",
        "listfiles_size": "आकार",
        "listfiles_description": "वर्णन",
        "listfiles_count": "संस्करण सभ",
+       "listfiles-latestversion": "बर्तमान भर्जन",
+       "listfiles-latestversion-yes": "हँ",
+       "listfiles-latestversion-no": "नै",
        "file-anchor-link": "संचिका",
        "filehist": "फाइल इतिहास",
        "filehist-help": "तखुनका तिथि/ समए पर क्लिक करू जखुनका फाइल देखबाक अछि",
        "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": "प्रयोक्ता सूची",
        "allpagesprefix": "उपसर्गक संग दृश्य पन्ना सभ:",
        "allpagesbadtitle": "देल पन्नाक शीर्षक गलत, गलत सम्बन्धित अन्तर-भाषा अन्तर विकी शीर्षक छी। ई एक वा बेशी कलाकार युक्त भऽ सकैए जे शीर्षकमे प्रयुक्त नै कएल जा सकैए।",
        "allpages-bad-ns": "{{जालस्थल}} मे \"$1\" नामगाम नै अछि।",
+       "cachedspecial-refresh-now": "लब्का देखु",
        "categories": "संवर्ग सभ",
        "categoriespagetext": "ई {{PLURAL:$1|संवर्गमे अछि|संवर्ग सभमे अछि}} पन्ना वा मीडिया।\n[[Special:UnusedCategories|Unused categories]] एतए देखाएल नै अछि।\nईहो देखू [[Special:WantedCategories|wanted categories]]।",
        "categoriesfrom": "पन्ना प्रदर्शन प्रारम्भ भेल:",
        "listgrouprights-removegroup-self": "निकालू {{PLURAL:$2|वर्ग|वर्ग}} अपन खातामे: $1",
        "listgrouprights-addgroup-self-all": "सभटा वर्गकेँ अपन खातामे जोड़ू",
        "listgrouprights-removegroup-self-all": "सभटा वर्गकेँ अपन खातासँ निकालू",
+       "listgrouprights-namespaceprotection-header": "नामस्थान वर्जित",
+       "listgrouprights-namespaceprotection-namespace": "नामस्थान :",
+       "listgrouprights-namespaceprotection-restrictedto": "सांच(सभ) के संपादन करए लेल",
+       "trackingcategories": "श्रेणीके ट्रयाक करु",
        "mailnologin": "कोनो पठेबाक पता नै",
        "mailnologintext": "अहाँ [[Special:UserLogin|सम्प्रवेशित]] हेबाक चाही आ अहाँक विकल्प [[Special:Preferences|preferences]]  मे एकटा मान्य ई-पत्र संकेत दोसर प्रयोक्ताकेँ पठेबा लेल हेबाक चाही।",
        "emailuser": "ऐ प्रयोक्ताकेँ ई-पत्र पठाउ",
        "watchlist-details": "{{PLURAL:$1|$1 पन्ना|$1 पन्ना सभ}} अहाँक साकांक्षसूचीमे, चौबटिया पन्ना नै गानल गेल।",
        "wlheader-enotif": "ई-पत्र सूचना लागू अछि।",
        "wlheader-showupdated": "पन्ना सभ जे अहाँक एतए अन्तिम बेर अएलाक बाद बदलल अछि तकर सूची देल अछि '''गाढ़''' मे",
+       "wlnote": "नीचाँ {{PLURAL:$1|is the last change|are the last '''$1''' changes}} अन्तिम {{PLURAL:$2|hour|'''$2''' hours}} $3, $4 जेना।",
        "wlshowlast": "देखाउ अन्तिम $1 घण्टा $2 दिन $3",
        "watchlist-options": "साकांक्षसूचीक विकल्प सभ",
        "watching": "ताकिमे...",
        "enotif_lastvisited": "देखू $1 अपन अन्तिम बेर अएलाक बादक परिवर्तन लेल।",
        "enotif_lastdiff": "ऐ परिवर्तनकेँ देखबा लेल $1 देखू।",
        "enotif_anon_editor": "गुप्त प्रयोक्ता $1",
-       "enotif_body": "पà¥\8dरिय $WATCHINGUSERNAME,\n\n\nà¤\88 {{à¤\85नà¥\8dतरà¥\8dà¤\9cाल}} à¤ªà¤¨à¥\8dना $पनà¥\8dनाशà¥\80रà¥\8dषà¤\95 $CHANGEDORCREATED à¤\95à¤\8fल à¤\97à¥\87ल $PAGEEDITDATE à¤¤à¤¿à¤¥à¤¿à¤\95à¥\87à¤\81 $PAGEEDITOR à¤¦à¥\8dवारा, à¤¦à¥\87à¤\96à¥\82 $PAGETITLE_URL à¤µà¤°à¥\8dतमान à¤¸à¤\82सà¥\8dà¤\95रण à¤²à¥\87ल।\n\n$NEWPAGE\n\nसमà¥\8dपादà¤\95à¥\80य: $PAGESUMMARY $PAGEMINOREDIT\n\nसमà¥\8dपादà¤\95सà¤\81 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤\95रà¥\82:\nà¤\88-पतà¥\8dर: $PAGEEDITOR_EMAIL\nविà¤\95à¥\80: $PAGEEDITOR_WIKI\n\nà¤\86न à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤­à¥\87लापर à¤\95à¥\8bनà¥\8b à¤¸à¥\82à¤\9aना à¤¨à¥\88 à¤¦à¥\87ल à¤\9cाà¤\8fत à¤\9cà¤\81 à¤\85हाà¤\81 à¤\88 à¤ªà¤¨à¥\8dना à¤¨à¥\88 à¤¦à¥\87à¤\96ब।\nà¤\85पन à¤¸à¤¾à¤\95ाà¤\82à¤\95à¥\8dष à¤¸à¥\82à¤\9aà¥\80à¤\95 à¤¸à¥\82à¤\9aना à¤ªà¥\87बाà¤\95 à¤ªà¥\8dरà¤\95ार à¤\85हाà¤\81 à¤¬à¤¦à¤²à¤¿ à¤¸à¤\95à¥\88 à¤\9bà¥\80।\n\n             à¤\85हाà¤\81à¤\95 à¤ªà¥\8dरिय {{ानà¥\8dतर्जाल}} सूचना प्रणाली\n\n--\nअपन ई-पत्र सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:Preferences}}}}\nअपन साकांक्ष-सूची सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nअपन साकांक्ष-सूचीसँ कोनो पन्ना मेटेबाक लेल देखू\n$UNWATCHURL\n\nअपन अनुभव बतेबा वा कोनो सहायता लेल:\n$HELPPAGE",
+       "enotif_body": "पà¥\8dरिय $WATCHINGUSERNAME,\n\n\nà¤\88 {{à¤\85नà¥\8dतरà¥\8dà¤\9cाल}} à¤ªà¤¨à¥\8dना $पनà¥\8dनाशà¥\80रà¥\8dषà¤\95 $CHANGEDORCREATED à¤\95à¤\8fल à¤\97à¥\87ल $PAGEEDITDATE à¤¤à¤¿à¤¥à¤¿à¤\95à¥\87à¤\81 $PAGEEDITOR à¤¦à¥\8dवारा, à¤¦à¥\87à¤\96à¥\82 $PAGETITLE_URL à¤µà¤°à¥\8dतमान à¤¸à¤\82सà¥\8dà¤\95रण à¤²à¥\87ल।\n\n$NEWPAGE\n\nसमà¥\8dपादà¤\95à¥\80य: $PAGESUMMARY $PAGEMINOREDIT\n\nसमà¥\8dपादà¤\95सà¤\81 à¤¸à¤®à¥\8dपरà¥\8dà¤\95 à¤\95रà¥\82:\nà¤\88-पतà¥\8dर: $PAGEEDITOR_EMAIL\nविà¤\95à¥\80: $PAGEEDITOR_WIKI\n\nà¤\86न à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤­à¥\87लापर à¤\95à¥\8bनà¥\8b à¤¸à¥\82à¤\9aना à¤¨à¥\88 à¤¦à¥\87ल à¤\9cाà¤\8fत à¤\9cà¤\81 à¤\85हाà¤\81 à¤\88 à¤ªà¤¨à¥\8dना à¤¨à¥\88 à¤¦à¥\87à¤\96ब।\nà¤\85पन à¤¸à¤¾à¤\95ाà¤\82à¤\95à¥\8dष à¤¸à¥\82à¤\9aà¥\80à¤\95 à¤¸à¥\82à¤\9aना à¤ªà¥\87बाà¤\95 à¤ªà¥\8dरà¤\95ार à¤\85हाà¤\81 à¤¬à¤¦à¤²à¤¿ à¤¸à¤\95à¥\88 à¤\9bà¥\80।\n\n             à¤\85हाà¤\81à¤\95 à¤ªà¥\8dरिय {{à¤\85à¤\82तर्जाल}} सूचना प्रणाली\n\n--\nअपन ई-पत्र सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:Preferences}}}}\nअपन साकांक्ष-सूची सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nअपन साकांक्ष-सूचीसँ कोनो पन्ना मेटेबाक लेल देखू\n$UNWATCHURL\n\nअपन अनुभव बतेबा वा कोनो सहायता लेल:\n$HELPPAGE",
        "created": "बनाएल गेल",
        "changed": "बदलल गेल",
        "deletepage": "पन्ना मेटाउ",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}}",
        "import-logentry-interwiki": "$1 क विकीअन्तरण",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
+       "javascripttest": "जावास्क्रिप्ट परिक्षण",
        "tooltip-pt-userpage": "अहाँक खेसरा पन्ना",
        "tooltip-pt-anonuserpage": "सम्पाद्न कएल जा रहल स्थानक  अनिकेतक प्रयोक्ता पन्ना",
        "tooltip-pt-mytalk": "अहाँक वार्त्ता पृष्ठ",
        "spam_blanking": "सभटा संशोधन $1 लागिसँ युक्त अि, खतम कऽ रहल छी",
        "pageinfo-title": "\"$1\"पृष्ठक लेल नब गप",
        "pageinfo-header-edits": "संपादन",
+       "pageinfo-header-restrictions": "पन्ना संरक्षण",
        "pageinfo-views": "देखहि बला के संख्या",
        "pageinfo-watchers": "जानकारक संख्या",
        "pageinfo-edits": "सम्पादनक संख्या",
        "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": "हूक",
        "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-ext-colheader-credits": "लेखक",
+       "version-license-title": "$1 के लेल अधिकार",
+       "version-credits-title": "$1 के लेल श्रेय",
        "version-poweredby-credits": "ई विकी चालित अछि '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
        "version-poweredby-others": "आन",
+       "version-poweredby-translators": "translatewiki.net अनुवादक",
+       "version-credits-summary": "[[Special:Version|मिडियाविकि]]",
        "version-license-info": "मीडियाविकी एकटा मंगनीक तंत्रांश अछि; अहाँ एकरा बाँटि सकै छी आ/ वा संशोधित कऽ सकै छीगी.एन.यू. सामान्य जन लाइसेन्सक अन्तर्गत जेना फ्री सॉफ्टवेयर फाउन्डेशन एकरा प्रकाशित केने अछि; चाहे तँ लाइसेन्सक संस्करण २, वा (अहाँक विकल्पपर) कोनो बादक दोसर संस्करणक अन्तर्गत।\n\nमीडियाविकी ऐ आशामेँ बाँटल जा रहल अछि कि ई उपयोगी हएत, मुदा बिना कोनो गारन्टीक; बिना कोनो व्यापारिक अन्तर्निहित वारन्टीक वा कोनो विशेष काजक लेल उपयोगी हेबाले। देखू गी.एन.यू. सामान्य जन लाइसेन्स विशेष वर्णन लेल।\n\nअहाँ प्राप्त केने हएब [{{SERVER}}{{SCRIPTPATH}}/ अनुकरण गी.एन.यू. सामान्य जन लाइसेन्सक प्रति] ऐ तंत्रांशक संग; जँ नै, लिखू फ्री सॉफ्टवेयर फाउन्डेशन, आइ.एन.सी., ५१, फ्रैंकलिन स्ट्रीट, पाँचम तल, बोस्टन, एम.ए. ०२११०-१३०१, यू.एस.ए. वा [//www.gnu.org/licenses/old-licenses/gpl-2.0.html अन्तर्भूत पढ़बा लेल]।",
        "version-software": "प्रतिष्ठापित तंत्रांश",
        "version-software-product": "उत्पाद",
        "version-software-version": "संस्करण",
+       "version-entrypoints-header-url": "यू॰आर॰एल",
        "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": "नै",
        "tags-edit": "सम्पादन करू",
        "tags-hitcount": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तन सभ}}",
        "comparepages": "पन्ना सभक तुलना करू",
        "dberr-problems": "दुखी छी! ई जालस्थल तकनीकी समस्या अनुभव कऽ अछि।",
        "dberr-again": "किछु काल बाट ताकू आ फेरसँ भारित करू।",
        "dberr-info": "(दत्तनिधि वितरककेँ सम्पर्क नै कऽ सकल: $1)",
+       "dberr-info-hidden": "(दत्तनिधि वितरककेँ सम्पर्क नै कऽ सकल: $1)",
        "dberr-usegoogle": "ऐ बीचमे अहाँ गूगलसँ खोज कऽ सकै छी।",
        "dberr-outofdate": "मोन राखू जे हमर सामिग्रीक ओकर सूची पुरान भऽ सकैए।",
        "dberr-cachederror": "ई आग्रह कएल पन्नाक उपस्मृति संरक्षित द्वितीयक अछि, आ भऽ सकैए जे अद्यतन नै हुअए।",
        "htmlform-submit": "दिअ",
        "htmlform-reset": "परिवर्तन खतम करू",
        "htmlform-selectorother-other": "आन",
+       "htmlform-no": "नै",
+       "htmlform-yes": "हँ",
+       "htmlform-chosen-placeholder": "एकटा विकल्प चुनु",
+       "htmlform-cloner-create": "आर जोडु",
+       "htmlform-cloner-delete": "हटाउ",
        "sqlite-has-fts": "$1 पूर्ण-पाठ खोज सहायता युक्त",
        "sqlite-no-fts": "$1 बिन पूर्ण-पाठ खोज सहायताक",
        "logentry-delete-delete": "$1 {{लिंग:$2|deleted}} page $3",
        "logentry-newusers-create2": "$1 {{लिंग:$2|बनाएल}} {{लिंग:$4|एकटा प्रयोक्ता खाता}} $3",
        "logentry-newusers-autocreate": "खाता $1 छल {{लिंग:$2|बनाएल}} स्वतः",
        "rightsnone": "(कोनो नै)",
+       "feedback-subject": "विषय:",
+       "feedback-message": "संदेश:",
+       "feedback-cancel": "रद्द करु",
+       "feedback-submit": "प्रतिक्रिया भेजु",
+       "feedback-adding": "पन्ना उपर प्रतिक्रिया जोडु ...",
+       "feedback-error2": "त्रुटि: संपादन विफल भेल",
+       "feedback-close": "भ गेल",
+       "feedback-bugcheck": "बहुत निक! जांच करु कि [ $1 known bugs] पहिले स त नै अछि ।",
+       "searchsuggest-search": "ताकू",
+       "searchsuggest-containing": "...सऽ युक्त",
        "api-error-badaccess-groups": "अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.",
        "api-error-filename-tooshort": "ई संचिका नाम बड छोट अछि |",
        "api-error-filetype-banned": "ऐ तरहक संचिका नाम प्रतिबंधित  अछि।",
        "api-error-ok-but-empty": "आन्तरिक भ्रम: वितरकसँ कोनो सम्पर्क नै",
        "api-error-unclassified": "एकटा अबूझ भ्रम आएल",
        "api-error-unknown-code": "अबूझ भ्रम:\"$1\"",
-       "api-error-uploaddisabled": "ऐ विकीपर उपारोपण अशक्त कएल गेल अछि।"
+       "api-error-uploaddisabled": "ऐ विकीपर उपारोपण अशक्त कएल गेल अछि।",
+       "pagelang-name": "पन्ना",
+       "pagelang-language": "भाषा"
 }
index 57fe8cf..bdd4460 100644 (file)
        "oct": "Кем",
        "nov": "Эйн",
        "dec": "Куч",
+       "january-date": "Кельмеков $1",
+       "february-date": "Уфайков $1",
+       "march-date": "Марайков $1",
+       "april-date": "Шудиков $1",
+       "may-date": "Панжиков $1",
+       "june-date": "Лямбеков $1",
+       "july-date": "Псиков $1",
+       "august-date": "Сёроньков $1",
+       "september-date": "Тюжягов $1",
+       "october-date": "Кельмазаков $1",
+       "november-date": "Эйндамков $1",
+       "december-date": "Кучкаков $1",
        "pagecategories": "{{PLURAL:$1|Категорие|Категориет}}",
        "category_header": "\"$1\" категориеса лопатне",
        "subcategories": "Субкатегориет",
        "newwindow": "(панчсеви од вальмаса)",
        "cancel": "Мърдамс меки",
        "moredotdotdot": "Сяда лама...",
-       "mypage": "Монь лопазе",
-       "mytalk": "Монь корхтамазе",
+       "morenotlisted": "Лемгярькссь апак тик",
+       "mypage": "Лопазе",
+       "mytalk": "Корхтамазе",
        "anontalk": "Корхтамс тя IP-ть мархта",
        "navigation": "Навигацие",
        "and": "&#32;эди",
        "actions": "Тефне",
        "namespaces": "Лемботмот",
        "variants": "Вариатт",
+       "navigation-heading": "Навигациень меню",
        "errorpagetitle": "Эльбятькс",
        "returnto": "Мърдамс $1-с.",
        "tagline": "{{SITENAME}}ста",
        "permalink": "Ялань сюлмафкс",
        "print": "Нолдамс",
        "view": "Ваномс",
+       "view-foreign": "Ванк $1са",
        "edit": "Петнеме",
+       "edit-local": "Петнемс тя азондомать",
        "create": "Тиемс",
+       "create-local": "Поладомс азондомать",
        "editthispage": "Петнемс тя лопать",
        "create-this-page": "Тиемс тя лопать",
        "delete": "Нардамс",
        "deletethispage": "Нардамс тя лопать",
+       "undeletethispage": "Мърдафтомс лопать",
        "undelete_short": "Мърдафтомс {{PLURAL:$1|петнема|$1 петнемат}}",
        "viewdeleted_short": "Ваномс {{PLURAL:$1|фкя нардаф видептема|$1 нардаф видептемат}}",
        "protect": "Араламс",
        "talkpagelinktext": "Корхтама",
        "specialpage": "Башка тевонь лопа",
        "personaltools": "Эсь кядьёнкст",
-       "postcomment": "Од пакш",
        "articlepage": "Ваномс потмакслопать",
        "talk": "Корхнема",
        "views": "Ванфт",
-       "toolbox": "Кядьёнкс кярькс",
+       "toolbox": "Кядьёнкст",
        "userpage": "Ваномс тиить лопанц",
        "projectpage": "Ваномс проектть лопанц",
        "imagepage": "Ваномс файлонь лопать",
        "jumptonavigation": "навигацие",
        "jumptosearch": "вешендема",
        "view-pool-error": "Ужяль, тя пингть серверхнень вийсна аф сатовихть.\nВельф лама тиихть тяряфнихть ваномс тя лопать.\nЭняльттяма учт аф ламос тя лопанди одукс сама инголе.\n$1",
+       "generic-pool-error": "Ужяль, тя пингть серверхнень вийсна аф сатыхть.\nВельф лама тиида тяряфнихть ваномс тя лопать лангс.\nЭняльттяма учт аф ламос тя лопанди одукс самда инголе.",
        "pool-timeout": "Пигонь кирдемась учи пякстаманц",
        "pool-queuefull": "Тяряфнемада вельф лама",
        "pool-errorunknown": "Аф содаф эльбятькс",
+       "pool-servererror": "Пърдафкс лувома лезкссь аф сатови ($1).",
        "aboutsite": "{{SITENAME}} колга",
        "aboutpage": "Project:Колга",
-       "copyright": "Сёрматфсь ули кода мумс $1-са.",
+       "copyright": "Сёрматфсь ули кода мумс $1са, къда илякс апак аст.",
        "copyrightpage": "{{ns:project}}:Копияма видекст",
        "currentevents": "Мезе тяса моли",
        "currentevents-url": "Project:Мезе тяса моли",
        "nospecialpagetext": "<strong>Аш стама башка лопа.</strong>\n\nВанк [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Эльбятькс",
        "databaseerror": "Датабаза эльбятькс",
+       "databaseerror-text": "Содамошинь паргонь вешемста лиссь эльбятькс.\nУлема, програмонь лездомбяльсь аржиясь.",
        "laggedslavemode": "Шарфтк мяльце: Тя лопась, улема, сирелгодсь.",
        "readonly": "Датабазась пякстаф",
        "enterlockreason": "Сёрматк тязк пякстама туфтал тонь арьсемацень мархта эли няфтть тяса мъзярда ули кода пякстамать валхтомс.",
        "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-suggest": "Афкукс тонь мяльсот: $1",
        "file-deleted-duplicate": "Файлсь сяка кода файл ([[:$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''' мекольце полафнемат}} ётай {{PLURAL:$2| ойста (часста)|'''$2''' ойста (часста)}}.",
        "wlshowlast": "Няфтемс мекольце $1 ойхть (част) $2 шит $3",
        "watchlist-options": "Мельгеваномать латцемасна",
        "watching": "Ванома...",
index 272c889..b513149 100644 (file)
        "hidetoc": "скриј",
        "collapsible-collapse": "Собери",
        "collapsible-expand": "прикажи",
+       "confirmable-confirm": "Дали {{GENDER:$1|сте}} сигурни?",
+       "confirmable-yes": "Да",
+       "confirmable-no": "Не",
        "thisisdeleted": "Да прикажам или вратам $1?",
        "viewdeleted": "Да погледате $1?",
        "restorelink": "{{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}",
        "searchprofile-advanced-tooltip": "Пребарување во именски простори по избор",
        "search-result-size": "$1 ({{PLURAL:$2|еден збор|$2 збора}})",
        "search-result-category-size": "{{PLURAL:$1|1 член|$1 члена}} ({{PLURAL:$2|1 поткатегорија|$2 поткатегории}}, {{PLURAL:$3|1 податотека|$3 податотеки}})",
-       "search-result-score": "Релевантност: $1%",
        "search-redirect": "(пренасочување $1)",
        "search-section": "(пасус $1)",
        "search-file-match": "(се совпаѓа со содржината на податотеката)",
        "uploadwarning": "Предупредување при подигање",
        "uploadwarning-text": "Изменете го описот на податотеката подолу и обидете се повторно.",
        "savefile": "Зачувај податотека",
-       "uploadedimage": "подигнато „[[$1]]“",
-       "overwroteimage": "подигнато нова верзија на „[[$1]]“",
        "uploaddisabled": "Забрана за подигања",
        "copyuploaddisabled": "Подигањето од URL е оневозможено.",
        "uploaddisabledtext": "Подигањето на податотеки е оневозможено.",
        "upload-misc-error": "Непозната грешка при подигањето",
        "upload-misc-error-text": "Се појави грешка при подигањето.\nПроверете дали URL-адресата е правилна и достапна, па обидете се повторно.\nАко пак се појави проблем, обратете се кај некој [[Special:ListUsers/sysop|администратор]].",
        "upload-too-many-redirects": "Оваа URL адреса содржеше премногу пренасочувања",
-       "upload-http-error": "HTTP грешка: $1",
+       "upload-http-error": "Се појави грешка во HTTP: $1.",
        "upload-copy-upload-invalid-domain": "Примероци од подигањата не се достапни на овој домен.",
        "backend-fail-stream": "Не можев да ја емитувам податотеката $1.",
        "backend-fail-backup": "Не можев да направам резерва на податотеката $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": "Наслов:",
        "action-pagelang": "менување јазик на страница",
        "log-name-pagelang": "Дневник на менување на јазикот",
        "log-description-pagelang": "Ова е дневник на менувања на јазикот на страницата.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|го смени}} јазикот на страницата $3 од $4 на $5."
+       "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: Веројатно сте го воспоставиле од git, или пак непосредно од изворниот код на некој друг начин. Ова е очекувано.\n:* Пробајте да воспоставите некои рува од [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's именикот на рува].\n:* Преземете го [https://www.mediawiki.org/wiki/Download tarball-воспоставувачот], кој самиот содржи неколку рува и додатоци. Можете да ја прекопирате папката <code>skins/</code> од него.\n: Ова не би требало да прави пречки на вашето git-складиште ако сте програмер на МедијаВики.\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: Веројатно сте го воспоставиле од git, или пак непосредно од изворниот код на некој друг начин. Ова е очекувано.\n:* Пробајте да воспоставите некои рува од [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's именикот на рува].\n:* Преземете го [https://www.mediawiki.org/wiki/Download tarball-воспоставувачот], кој самиот содржи неколку рува и додатоци. Можете да ја прекопирате папката <code>skins/</code> од него.\n: Ова не би требало да прави пречки на вашето 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 cf77e05..8eb34ad 100644 (file)
@@ -44,6 +44,7 @@
        "tog-watchdefault": "ഞാൻ തിരുത്തുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക",
        "tog-watchmoves": "ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക",
        "tog-watchdeletion": "ഞാൻ നീക്കം ചെയ്യുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക",
+       "tog-watchrollback": "ഞാൻ മുൻപ്രാപനം ചെയ്ത താളുകളും ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക",
        "tog-minordefault": "എല്ലാ തിരുത്തുകളും സ്വതേ ചെറുതിരുത്തുകളായി അടയാളപ്പെടുത്തുക",
        "tog-previewontop": "തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക",
        "tog-previewonfirst": "ആദ്യത്തെ തിരുത്തിന്റെ പ്രിവ്യൂ കാണിക്കുക",
        "hidetoc": "മറയ്ക്കുക",
        "collapsible-collapse": "ചുരുക്കുക",
        "collapsible-expand": "വികസിപ്പിക്കുക",
+       "confirmable-confirm": "{{GENDER:$1|താങ്കൾക്ക്}} ഉറപ്പാണോ?",
+       "confirmable-yes": "അതെ",
+       "confirmable-no": "അല്ല",
        "thisisdeleted": "$1 കാണുകയോ പുനഃസ്ഥാപിക്കുകയോ ചെയ്യേണ്ടതുണ്ടോ?",
        "viewdeleted": "$1 കാണണോ?",
        "restorelink": "{{PLURAL:$1|നീക്കംചെയ്ത ഒരു തിരുത്ത്|നീക്കംചെയ്ത $1 തിരുത്തുകൾ}}",
        "preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
        "showpreview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
        "showdiff": "മാറ്റങ്ങൾ കാണിക്കുക",
+       "blankarticle": "<strong>മുന്നറിയിപ്പ്:</strong> താങ്കൾ സൃഷ്ടിക്കുന്ന താൾ ശൂന്യമാണ്.\n\"{{int:savearticle}}\" ഒന്നുകൂടി അമർത്തിയാൽ, ഉള്ളടക്കമൊന്നുമില്ലാതെ താൾ സൃഷ്ടിക്കപ്പെടും.",
        "anoneditwarning": "'''മുന്നറിയിപ്പ്:''' താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല. താങ്കളുടെ ഐ.പി. വിലാസം താളിന്റെ തിരുത്തൽ ചരിത്രത്തിൽ ചേർക്കുന്നതാണ്.",
        "anonpreviewwarning": "''താങ്കൾ ലോഗിൻ ചെയ്തിട്ടില്ല. സേവ് ചെയ്യുമ്പോൾ താളിന്റെ തിരുത്തൽ ചരിത്രത്തിൽ താങ്കളുടെ ഐ.പി. വിലാസം ചേർത്തു സൂക്ഷിക്കപ്പെടും.''",
        "missingsummary": "'''ഓർമ്മക്കുറിപ്പ്:''' താങ്കൾ തിരുത്തലിന്റെ ചുരുക്കരൂപം നൽകിയിട്ടില്ല. ''സേവ് ചെയ്യുക'' ബട്ടൺ ഒരുവട്ടം കൂടി അമർത്തിയാൽ താങ്കൾ വരുത്തിയ മാറ്റം കാത്തുസൂക്ഷിക്കുന്നതാണ്.",
        "rev-deleted-event": "(പ്രവൃത്തിയുടെ രേഖ ഒഴിവാക്കിയിരിക്കുന്നു)",
        "rev-deleted-user-contribs": "[ഉപയോക്തൃനാമം അഥവാ ഐ.പി. വിലാസം ഒഴിവാക്കപ്പെട്ടിരിക്കുന്നു - തിരുത്തൽ സേവനങ്ങളിൽ നിന്നും മറച്ചിരിക്കുന്നു]",
        "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}}}} മായ്ക്കൽ രേഖയിൽ] ഉണ്ട്.",
        "searchprofile-advanced-tooltip": "തിരഞ്ഞെടുത്ത നാമമേഖലകളിൽ തിരച്ചിൽ നടത്തുവാൻ",
        "search-result-size": "$1 ({{PLURAL:$2|ഒരു വാക്ക്|$2 വാക്കുകൾ}})",
        "search-result-category-size": "{{PLURAL:$1|ഒരു അംഗം|$1 അംഗങ്ങൾ}} ({{PLURAL:$2|ഒരു ഉപവർഗ്ഗം|$2 ഉപവർഗ്ഗങ്ങൾ}}, {{PLURAL:$3|ഒരു പ്രമാണം|$3 പ്രമാണങ്ങൾ}})",
-       "search-result-score": "സാംഗത്യം: $1%",
        "search-redirect": "(തിരിച്ചുവിടൽ താൾ $1)",
        "search-section": "(വിഭാഗം $1)",
        "search-file-match": "(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)",
        "recentchanges-label-plusminus": "താളിന്റെ വലിപ്പം ഇത്രയും ബൈറ്റുകൾ മാറിയിരിക്കുന്നു",
        "recentchanges-legend-heading": "'''സൂചന:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)",
-       "rcnotefrom": "<strong>$2</strong> മുതലുള്ള മാറ്റങ്ങൾ (<strong>$1</strong> എണ്ണം വരെ കാണാം).",
+       "rcnotefrom": "<strong>$3, $4</strong> മുതലുള്ള {{PLURAL:$5|മാറ്റം|മാറ്റങ്ങൾ}} ആണ് താഴെയുള്ളത്  (<strong>$1</strong> എണ്ണം വരെ കൊടുക്കുന്നതാണ്).",
        "rclistfrom": "$3 $2 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക",
        "rcshowhideminor": "ചെറുതിരുത്തലുകൾ $1",
        "rcshowhideminor-show": "പ്രദർശിപ്പിക്കുക",
        "uploadwarning": "അപ്‌ലോഡ് മുന്നറിയിപ്പ്",
        "uploadwarning-text": "ദയവായി താഴെയുള്ള പ്രമാണ വിവരണങ്ങൾ പുതുക്കി വീണ്ടും ശ്രമിക്കുക.",
        "savefile": "പ്രമാണം കാത്ത് സൂക്ഷിക്കുക",
-       "uploadedimage": "\"[[$1]]\" അപ്‌ലോഡ് ചെയ്തു.",
-       "overwroteimage": "\"[[$1]]\" എന്ന പ്രമാണത്തിന്റെ പുതിയ പതിപ്പ് അപ്‌ലോഡ് ചെയ്തിരിക്കുന്നു",
        "uploaddisabled": "അപ്‌ലോഡുകൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.",
        "copyuploaddisabled": "യൂ.ആർ.എൽ. വഴിയുള്ള അപ്‌‌ലോഡ് നിർജ്ജീവമാക്കിയിരിക്കുന്നു.",
        "uploaddisabledtext": "പ്രമാണം അപ്‌ലോഡ് ചെയ്യുന്നതു സാദ്ധ്യമല്ലാതാക്കിയിരിക്കുന്നു.",
        "nolicense": "ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല",
        "licenses-edit": "ഉപയോഗാനുമതി ഐച്ഛികങ്ങൾ തിരുത്തുക",
        "license-nopreview": "(പ്രിവ്യൂ ലഭ്യമല്ല)",
-       "upload_source_url": "(സാധàµ\81വായ, à´\86ർà´\95àµ\8dà´\95àµ\81à´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95ാവàµ\81à´¨àµ\8dà´¨ à´¯àµ\82.à´\86ർ.à´\8eൽ.)",
-       "upload_source_file": "(താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95à´®àµ\8dà´ªàµ\8dà´¯àµ\82à´\9fàµ\8dà´\9fറിലàµ\81à´³àµ\8dà´³ à´\92à´°àµ\81 à´ªàµ\8dരമാണà´\82)",
+       "upload_source_url": "(താà´\99àµ\8dà´\95ൾ à´¤à´¿à´°à´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´¤àµ\8dà´¤ à´ªàµ\8dരമാണà´\82 à´¸à´¾à´§àµ\81വായ, à´\86ർà´\95àµ\8dà´\95àµ\81à´\82 à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95ാവàµ\81à´¨àµ\8dà´¨ à´¯àµ\82.à´\86ർ.à´\8eലിൽ à´¨à´¿à´¨àµ\8dനാണàµ\8d)",
+       "upload_source_file": "(താà´\99àµ\8dà´\95ൾ à´¤à´¿à´°à´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´¤àµ\8dതതàµ\8d à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95à´®àµ\8dà´ªàµ\8dà´¯àµ\82à´\9fàµ\8dà´\9fറിലàµ\81à´³àµ\8dà´³ à´ªàµ\8dരമാണമാണàµ\8d)",
        "listfiles-delete": "മായ്ക്കുക",
        "listfiles-summary": "അപ്‌ലോഡ് ചെയ്തിട്ടുള്ള എല്ലാ പ്രമാണങ്ങളും ഈ പ്രത്യേക താളിൽ കാണാവുന്നതാണ്.",
        "listfiles_search_for": "മീഡിയ പ്രമാണം തിരയുക:",
        "watchlist-details": "സം‌വാദത്താളുകൾ ഉൾപ്പെടുത്താതെ {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലുണ്ട്.",
        "wlheader-enotif": "ഇമെയിൽ അറിയിപ്പുകൾ സജ്ജമാക്കിയിരിക്കുന്നു.",
        "wlheader-showupdated": "താങ്കളുടെ അവസാന സന്ദർശനത്തിനു ശേഷം മാറ്റം വന്ന താളുകൾ  '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു",
-       "wlnote2": "$2, $3-നു കഴിഞ്ഞ {{PLURAL:$1|ഒരു മണിക്കൂറിലെ|<strong>$1</strong> മണിക്കൂറുകളിലെ}} മാറ്റങ്ങൾ താഴെക്കൊടുത്തിരിക്കുന്നു.",
+       "wlnote": "$3, $4-നു കഴിഞ്ഞ {{PLURAL:$2|മണിക്കൂറിൽ|<strong>$2</strong> മണിക്കൂറിൽ}} നടന്ന {{PLURAL:$1|ഒരു പുതിയ മാറ്റം|<strong>$1</strong> പുതിയ മാറ്റങ്ങൾ}} താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു.",
        "wlshowlast": "ഒടുവിലത്തെ $1 മണിക്കൂറുകൾ $2 ദിനങ്ങൾ, $3 പ്രദർശിപ്പിക്കുക",
        "watchlist-options": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ സജ്ജീകരണങ്ങൾ",
        "watching": "ശ്രദ്ധിക്കുന്നു...",
        "import-error-create": "\"$1\" എന്ന താൾ സൃഷ്ടിക്കാനുള്ള അനുമതി താങ്കൾക്ക് ഇല്ലാത്തതിനാൽ അത് ഇറക്കുമതി ചെയ്തില്ല.",
        "import-error-interwiki": "ബാഹ്യ കണ്ണിചേർക്കലിനു (അന്തർവിക്കി) കരുതിവെച്ചിരിക്കുന്ന പേര് ആയതിനാൽ, \"$1\" എന്ന താൾ ഇറക്കുമതി ചെയ്തില്ല.",
        "import-error-special": "താളുകൾ അനുവദിക്കാത്ത പ്രത്യേക നാമമേഖലയിൽ പെടുന്നതായതിനാൽ \"$1\" എന്ന താൾ ഇറക്കുമതി ചെയ്തില്ല.",
-       "import-error-invalid": "à´ªàµ\87à´°àµ\8d à´\85സാധàµ\81വായതിനാൽ \"$1\" à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ à´\87à´±à´\95àµ\8dà´\95àµ\81മതി à´\9aàµ\86à´¯àµ\8dà´¯ില്ല.",
+       "import-error-invalid": "à´\87à´±à´\95àµ\8dà´\95àµ\81മതി à´\9aàµ\86à´¯àµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fാൽ à´ªàµ\87à´°àµ\8d à´\88 à´µà´¿à´\95àµ\8dà´\95ിയിൽ à´\85സാധàµ\81വാà´\95àµ\81à´®àµ\86à´¨àµ\8dനതിനാൽ \"$1\" à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ à´\87à´±à´\95àµ\8dà´\95àµ\81മതി à´\9aàµ\86à´¯àµ\8dà´¤ില്ല.",
        "import-options-wrong": "തെറ്റായ {{PLURAL:$2|ഐച്ഛികം|ഐച്ഛികങ്ങൾ}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "നൽകിയ മൂലതാൾ അസാധുവാണ്.",
        "import-rootpage-nosubpage": "മൂലതാളിന്റെ നാമമേഖലയായ \"$1\" ഉപതാളുകൾ അനുവദിക്കുന്നില്ല.",
        "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 പതിപ്പുകൾ}}",
+       "import-logentry-interwiki-detail": "$2 എന്നതിൽ നിന്ന് {{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} ഇറക്കുമതി ചെയ്തു",
        "javascripttest": "ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണം",
        "javascripttest-title": "$1 പരീക്ഷണങ്ങൾ നടക്കുന്നുണ്ട്",
        "javascripttest-pagetext-noframework": "ഈ താൾ ജാവാസ്ക്രിപ്റ്റ് പരീക്ഷണങ്ങൾ നടത്താനായി മാറ്റിവെച്ചിരിക്കുന്നതാണ്.",
        "autosumm-replace": "താളിലെ വിവരങ്ങൾ $1 എന്നാക്കിയിരിക്കുന്നു",
        "autoredircomment": "[[$1]] എന്ന താളിലേക്ക് തിരിച്ചുവിടുന്നു",
        "autosumm-new": "'$1' താൾ സൃഷ്ടിച്ചിരിക്കുന്നു",
+       "autosumm-newblank": "ശൂന്യമായ താൾ സൃഷ്ടിച്ചു",
        "size-bytes": "$1 ബൈ",
        "size-kilobytes": "$1 കെ.ബി.",
        "size-megabytes": "$1 എം.ബി.",
        "logentry-rights-rights": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം, $4 എന്നതിൽ നിന്നു $5 എന്നതിലേക്കു, $1 {{GENDER:$2|മാറ്റിയിരിക്കുന്നു}}",
        "logentry-rights-rights-legacy": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1 {{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": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}."
+       "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (സജ്ജം)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''സജ്ജമല്ല''')"
 }
index d659ff7..7a2d8f4 100644 (file)
        "badfilename": "Iáⁿ-siōng ê miâ í-keng kái chò \"$1\".",
        "uploadwarning": "Upload kéng-kò",
        "savefile": "Pó-chûn tóng-àn",
-       "uploadedimage": "thoân \"[[$1]]\" chiūⁿ-bāng",
        "uploaddisabled": "Pháiⁿ-sè, sàng chiūⁿ-bāng ê kong-lêng bô khui.",
        "sourcefilename": "Tóng-àn goân miâ:",
        "destfilename": "Tóng-àn sin miâ:",
index aaedc84..2efb817 100644 (file)
@@ -57,6 +57,7 @@
        "tog-watchdefault": "Legg til sider og filer jeg endrer på i min overvåkingsliste",
        "tog-watchmoves": "Legg til sider og filer jeg flytter til min overvåkingsliste",
        "tog-watchdeletion": "Legg til sider og filer jeg sletter i min overvåkingsliste",
+       "tog-watchrollback": "Legg til sider jeg har utført tilbakestilling på i min overvåkningsliste",
        "tog-minordefault": "Merk i utgangspunktet alle redigeringer som mindre",
        "tog-previewontop": "Vis forhåndsvisningen over redigeringsboksen",
        "tog-previewonfirst": "Vis forhåndsvisning når du begynner å redigere",
        "hidetoc": "skjul",
        "collapsible-collapse": "skjul",
        "collapsible-expand": "vis",
+       "confirmable-confirm": "Er {{GENDER:$1|du}} sikker?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nei",
        "thisisdeleted": "Se eller gjenopprett $1?",
        "viewdeleted": "Vis $1?",
        "restorelink": "{{PLURAL:$1|én slettet revisjon|$1 slettede revisjoner}}",
        "searchprofile-advanced-tooltip": "Søk i visse navnerom",
        "search-result-size": "$1 ({{PLURAL:$2|ett|$2}} ord)",
        "search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
-       "search-result-score": "Relevans: $1&nbsp;%",
        "search-redirect": "(omdirigering $1)",
        "search-section": "(avsnitt $1)",
        "search-file-match": "(matcher filinnhold)",
        "uploadwarning": "Opplastingsadvarsel",
        "uploadwarning-text": "Vennligst endre filbeskrivelsen nedenfor og prøv igjen.",
        "savefile": "Lagre fil",
-       "uploadedimage": "lastet opp «[[$1]]»",
-       "overwroteimage": "last opp en ny versjon av «[[$1]]»",
        "uploaddisabled": "Opplastingsfunksjonen er slått av",
        "copyuploaddisabled": "Opplasting via nettadresse deaktivert.",
        "uploaddisabledtext": "Opplasting er slått av.",
        "nolicense": "Ingen spesifisert",
        "licenses-edit": "Rediger lisensvalg",
        "license-nopreview": "(Forhåndsvisning ikke tilgjengelig)",
-       "upload_source_url": " (en gyldig, offentlig tilgjengelig adresse)",
-       "upload_source_file": " (en fil på din datamaskin)",
+       "upload_source_url": "(din fil fra en gyldig, offentlig tilgjengelig adresse)",
+       "upload_source_file": "(en fil på din datamaskin)",
        "listfiles-delete": "slett",
        "listfiles-summary": "Denne spesialsiden viser alle opplastede filer.",
        "listfiles_search_for": "Søk etter filnavn:",
        "watchlist-details": "{{PLURAL:$1|Én side|$1 sider}} på din overvåkningsliste, teller ikke diskusjonssider.",
        "wlheader-enotif": "E-postvarsling er slått på.",
        "wlheader-showupdated": "Sider som har blitt forandret siden du sist besøkte dem vises i '''fet tekst'''",
-       "wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste '''$1''' endringene}} {{PLURAL:$2|den siste timen|de siste '''$2''' timene}}, fra den $3, kl. $4",
+       "wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste <strong>$1</strong> endringene}} {{PLURAL:$2|den siste timen|de siste <strong>$2</strong> timene}}, per $3 kl. $4",
        "wlshowlast": "Vis siste $1 timer $2 dager $3",
        "watchlist-options": "Alternativ for overvåkningslisten",
        "watching": "Overvåker…",
        "logentry-rights-rights": "$1 {{GENDER:$2|endret}} gruppemedlemskap for $3 fra $4 til $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|endret}} gruppemedlemskap for $3",
        "logentry-rights-autopromote": "$1 ble automatisk {{GENDER:$2|forfremmet}} fra $4 til $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|lastet opp}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|lastet opp}} en ny versjon av $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|lastet opp}} $3",
        "rightsnone": "(ingen)",
        "feedback-bugornote": "Hvis du er klar til å sende inn en detaljert feilrapport, vennligst [$1 rapporter en feil].\nOm det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. Kommentaren din vil bli lagt til siden \"[$3 $2]\", sammen med brukernavnet ditt og informasjon om hvilken nettleser du bruker.",
        "feedback-subject": "Emne:",
        "action-pagelang": "endre sidespråket",
        "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."
+       "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-row-enabled": "* <code>$1</code> / $2 (slått på)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''slått av''')"
 }
index 91597b1..63be861 100644 (file)
        "hidetoc": "Verbarg",
        "collapsible-collapse": "Inklappen",
        "collapsible-expand": "Uutklappen",
+       "confirmable-confirm": "{{GENDER:$1|Bi'j}} daor wisse van?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nee",
        "thisisdeleted": "Bekieken of herstellen van $1?",
        "viewdeleted": "Bekiek $1?",
        "restorelink": "{{PLURAL:$1|versie die vortedaon is|versies die vortedaon bin}}",
        "invalidtitle-knownnamespace": "Ongeldige titel mit naamruumte \"$2\" en tekste \"$3\"",
        "invalidtitle-unknownnamespace": "Ongeldige titel mit onbekend naamruumtenummer $1 en tekste \"$2\"",
        "exception-nologin": "Niet an-emeld",
-       "exception-nologin-text": "Um disse zied te bekieken of disse haandeling uut te kunnen voeren mu'j an-emeld ween bie disse wiki.",
+       "exception-nologin-text": "Um disse zied te bekieken of disse haandeling uut te kunnen voeren mu'j [[Special:Userlogin|an-emeld]] ween bie disse wiki.",
        "virus-badscanner": "Slichte konfigurasie: onbekend antivirusprogramma: ''$1''",
        "virus-scanfailed": "inlezen is mislokt (kode $1)",
        "virus-unknownscanner": "onbekend antivirusprogramma:",
        "searchprofile-advanced-tooltip": "Zeuken in de an-egeven naamruumtes",
        "search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorden}})",
        "search-result-category-size": "{{PLURAL:$1|1 kategorielid|$1 kategorielejen}} ({{PLURAL:$2|1 onderkategorie|$2 onderkategorieën}}, {{PLURAL:$3|1 bestaand|$3 bestaanden}})",
-       "search-result-score": "Relevansie: $1%",
        "search-redirect": "(deurverwiezing $1)",
        "search-section": "(onderwarp $1)",
        "search-suggest": "Bedoelden je: $1",
        "uploadwarning": "Waorschuwing",
        "uploadwarning-text": "Pas de bestaandsbeschrieving hieronder an en probeer t opniej",
        "savefile": "Bestaand opslaon",
-       "uploadedimage": "Op-estuurd: [[$1]]",
-       "overwroteimage": "Nieje versie van \"[[$1]]\" op-estuurd",
        "uploaddisabled": "t Opsturen van bestaanden is uutezet.",
        "copyuploaddisabled": "t Opsturen van bestaanden via n webadres is uutezet.",
        "uploaddisabledtext": "t Opsturen van bestaanden is uutezet.",
index bcce965..80dca86 100644 (file)
@@ -84,7 +84,7 @@
        "may_long": "मे",
        "june": "जुन",
        "july": "जुलाई",
-       "august": "à¤\85à¤\97सà¥\8dत",
+       "august": "à¤\85à¤\97सà¥\8dà¤\9f",
        "september": "सेप्टेम्बर",
        "october": "अक्टोबर",
        "november": "नोभेम्बर",
@@ -96,7 +96,7 @@
        "may-gen": "मे",
        "june-gen": "जुन",
        "july-gen": "जुलाई",
-       "august-gen": "à¤\85à¤\97सà¥\8dत",
+       "august-gen": "à¤\85à¤\97सà¥\8dà¤\9f",
        "september-gen": "सेप्टेम्बर",
        "october-gen": "अक्टोबर",
        "november-gen": "नोभेम्बर",
        "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 सदस्यहरु}} ({{PLURAL:$2|1 उपश्रेणी|$2  उपश्रेणीहरु}}, {{PLURAL:$3|एउटा फाइल|$3 फाइलहरु}})",
-       "search-result-score": "मिल्ने :$1%",
        "search-redirect": "(जाने $1)",
        "search-section": "(खण्ड $1)",
        "search-suggest": "के तपाईको खोजाई : $1 हो?",
        "uploadwarning": "उर्ध्वभरण चेतावनी",
        "uploadwarning-text": "कृपया तल फाइलको वर्णन परिवर्तन गर्नुहोस र पुन: प्रयास गर्नुहोस् ।",
        "savefile": "फाइल बचत गर्नुहोस्",
-       "uploadedimage": "उर्ध्वभरण(upload) गरियो  \"[[$1]]\"",
-       "overwroteimage": " \"[[$1]]\"को एउटा नयाँ संस्करण उर्ध्वभरण गरियो",
        "uploaddisabled": "उर्ध्वभरण अक्षम पारिएकोछ",
        "copyuploaddisabled": " URL प्रयोग गरी उर्ध्वभरण निश्कृय पारिएको छ।",
        "uploaddisabledtext": "फाइल उर्ध्वभरण अक्षम पारिएकोछ",
        "watchlist-details": "तपाईको निगरानी सूचीमा रहेका{{PLURAL:$1|$1 पृष्ठ|$1 पृष्ठहरु}}वार्तालापमा पृष्ठमा गनिएका छैनन् ।",
        "wlheader-enotif": "ईमेल जानकारी सक्रिय गरियो ।",
        "wlheader-showupdated": "तपाईँले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
+       "wlnote": "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरुमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम  '''$1''' परिवर्तनहरु तल दिइएका छन्}}।",
        "wlshowlast": "पछिल्ला $2 दिनहरूका $3 $1 घण्टाहरूका देखाउनुहोस्",
        "watchlist-options": "निगरानि सूची विकल्प",
        "watching": "निगरानी गर्दै...",
        "duplicate-defaultsort": "'''चेतावनी:''' पूर्व निर्धारित छोटकरी \"$2\" ले पुरानो पूर्वनिर्धारित छोटकरी\"$1\"लाई विस्थापन गरेको छ ।",
        "version": "संस्करण",
        "version-extensions": "स्थापना गरिएका एक्सटेन्सनहरु",
+       "version-skins": "खोलहरु",
        "version-specialpages": "विशेष पृष्ठहरू",
        "version-parserhooks": "पार्सर हुकहरु",
        "version-variables": "चल राशी(variables)",
        "version-antispam": "स्प्याम रोकथाम",
-       "version-skins": "खोलहरु",
        "version-api": "एपिआइ(API)",
        "version-other": "अन्य",
        "version-mediahandlers": "मिडिया  ह्यान्डलरहरू",
index 1af8c9f..132dfb7 100644 (file)
@@ -76,6 +76,7 @@
        "tog-watchdefault": "Pagina’s en bestanden die ik bewerk automatisch volgen",
        "tog-watchmoves": "Pagina’s en bestanden die ik hernoem automatisch volgen",
        "tog-watchdeletion": "Pagina’s en bestanden die ik verwijder automatisch volgen",
+       "tog-watchrollback": "Pagina's waarop ik heb teruggedraaid automatisch volgen",
        "tog-minordefault": "Mijn bewerkingen standaard als ‘klein’ markeren",
        "tog-previewontop": "Voorvertoning boven bewerkingsveld weergeven",
        "tog-previewonfirst": "Voorvertoning bij eerste bewerking weergeven",
        "hidetoc": "verbergen",
        "collapsible-collapse": "Inklappen",
        "collapsible-expand": "Uitvouwen",
+       "confirmable-confirm": "Weet {{GENDER:$1|u}} het zeker?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nee",
        "thisisdeleted": "$1 bekijken of terugplaatsen?",
        "viewdeleted": "$1 bekijken?",
        "restorelink": "$1 verwijderde {{PLURAL:$1|versie|versies}}",
        "noname": "U hebt geen geldige gebruikersnaam opgegeven.",
        "loginsuccesstitle": "Aanmelden geslaagd",
        "loginsuccess": "'''U bent nu aangemeld bij {{SITENAME}} als \"$1\".'''",
-       "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuwe gebruiker aan]].",
+       "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuw account aan]].",
        "nosuchusershort": "De gebruiker \"$1\" bestaat niet.\nControleer de schrijfwijze.",
        "nouserspecified": "Geef een gebruikersnaam op.",
        "login-userblocked": "Deze gebruiker is geblokkeerd.\nAanmelden is niet mogelijk.",
        "searchprofile-advanced-tooltip": "Zoeken in opgegeven naamruimten",
        "search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorden}})",
        "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": "Relevantie: $1%",
        "search-redirect": "(doorverwijzing $1)",
        "search-section": "(subkop $1)",
        "search-file-match": "(komt overeen met de inhoud van het bestand)",
        "recentchanges-summary": "Op deze pagina kunt u de recentste wijzigingen in deze wiki bekijken.",
        "recentchanges-noresult": "Er zijn in deze periode geen wijzigingen gemaakt die aan de criteria voldoen.",
        "recentchanges-feed-description": "Met deze feed kunt u de recentste wijzigingen in deze wiki bekijken.",
-       "recentchanges-label-newpage": "Met deze bewerking is een nieuwe pagina aangemaakt.",
+       "recentchanges-label-newpage": "Met deze bewerking is een nieuwe pagina aangemaakt",
        "recentchanges-label-minor": "Dit is een kleine bewerking",
        "recentchanges-label-bot": "Deze bewerking is uitgevoerd door een bot",
        "recentchanges-label-unpatrolled": "Deze bewerking is nog niet gecontroleerd",
        "uploadwarning": "Uploadwaarschuwing",
        "uploadwarning-text": "Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.",
        "savefile": "Bestand opslaan",
-       "uploadedimage": "heeft \"[[$1]]\" geüpload",
-       "overwroteimage": "heeft een nieuwe versie van \"[[$1]]\" toegevoegd",
        "uploaddisabled": "Uploaden is uitgeschakeld",
        "copyuploaddisabled": "Het uploaden van bestanden via een URL is uitgeschakeld.",
        "uploaddisabledtext": "Het uploaden van bestanden is uitgeschakeld.",
        "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|heeft}} versie $4 van pagina $3 automatisch gemarkeerd als gecontroleerd",
        "logentry-newusers-newusers": "Gebruiker $1 {{GENDER:$2|is}} aangemaakt",
        "logentry-newusers-create": "Gebruikersaccount $1 {{GENDER:$2|is}} aangemaakt",
-       "logentry-newusers-create2": "Gebruiker $3 {{GENDER:$2|is}} aangemaakt door $1",
+       "logentry-newusers-create2": "Gebruikersaccount $3 {{GENDER:$2|is}} aangemaakt door $1",
        "logentry-newusers-byemail": "Gebruiker $3 {{GENDER:$2|is}} aangemaakt door $1 en het wachtwoord is per e-mail verzonden",
        "logentry-newusers-autocreate": "Gebruikersaccount $1 {{GENDER:$2|is}} automatisch aangemaakt",
        "logentry-rights-rights": "$1 {{GENDER:$2|heeft}} groepslidmaatschap voor $3 gewijzigd van $4 naar $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|heeft}} het groepslidmaatschap gewijzigd voor $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|is}} automatisch gepromoveerd van $4 naar $5",
+       "logentry-upload-upload": "$1 heeft $3 {{GENDER:$2|geupload}}",
+       "logentry-upload-overwrite": "$1 heeft een nieuwe versie van $3 {{GENDER:$2|geupload}}",
+       "logentry-upload-revert": "$1 heeft $3 {{GENDER:$2|geupload}}",
        "rightsnone": "(geen)",
        "feedback-bugornote": "Als u zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].\nAnders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt dan toegevoegd aan de pagina \"[$3 $2]\", samen met uw gebruikersnaam en de browser die u gebruikt.",
        "feedback-subject": "Onderwerp:",
index f3c6636..91a323d 100644 (file)
        "hidetoc": "gøym",
        "collapsible-collapse": "Slå saman.",
        "collapsible-expand": "Vid ut",
+       "confirmable-confirm": "Er {{GENDER:$1|du}} viss på dette?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nei",
        "thisisdeleted": "Sjå eller attopprett $1?",
        "viewdeleted": "Sjå historikk for $1?",
        "restorelink": "{{PLURAL:$1|Éin sletta versjon|$1 sletta versjonar}}",
        "searchprofile-advanced-tooltip": "Søk i visse namnerom",
        "search-result-size": "$1 ({{PLURAL:$2|eitt|$2}} ord)",
        "search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategoriar}}, {{PLURAL:$3|1 fil|$3 filer}})",
-       "search-result-score": "Relevans: $1&nbsp;%",
        "search-redirect": "(omdirigering $1)",
        "search-section": "(bolken $1)",
        "search-suggest": "Meinte du: «$1»",
        "search-interwiki-caption": "Systerprosjekt",
-       "search-interwiki-default": "$1-resultat:",
+       "search-interwiki-default": "Resultat frå $1:",
        "search-interwiki-more": "(meir)",
        "search-relatedarticle": "Relatert",
        "searchrelated": "relatert",
        "uploadwarning": "Opplastingsåtvaring",
        "uploadwarning-text": "Ver venleg og endra filskildringa nedanfor og prøv på nytt",
        "savefile": "Lagre fil",
-       "uploadedimage": "lasta opp «[[$1]]»",
-       "overwroteimage": "lasta opp ein ny versjon av «[[$1]]»",
        "uploaddisabled": "Beklagar, funksjonen for opplasting er deaktivert på denne nettenaren.",
        "copyuploaddisabled": "Opplasting gjennom URL er slege av.",
        "uploaddisabledtext": "Filopplasting er slått av.",
        "download": "last ned",
        "unwatchedpages": "Uovervaka sider",
        "listredirects": "Omdirigeringsliste",
+       "listduplicatedfiles": "Liste over filer med duplikat",
+       "listduplicatedfiles-summary": "Dette er ei liste over filer der den siste versjonen av fila er eit duplikat av den siste versjonen av ei anna fil. Berre lokale filer vert rekna med.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] har [[$3|{{PLURAL:$2|eit duplikat|$2 duplikat}}]].",
        "unusedtemplates": "Ubrukte malar",
        "unusedtemplatestext": "Denne sida viser alle sidene i mal-namnerommet ({{ns:template}}:) som ikkje er brukte på andre sider. Hugs også å sjå etter andre lenkjer til malane før du slettar dei.",
        "unusedtemplateswlh": "andre lenkjer",
        "randompage": "Tilfeldig side",
        "randompage-nopages": "Det finst ingen sider i {{PLURAL:$2|dette namnerommet|desse namneromma}}: $1.",
+       "randomincategory": "Tilfeldig side frå kategori",
+       "randomincategory-invalidcategory": "«$1» er ikkje eit gildt kategorinamn.",
+       "randomincategory-nopages": "Det er ingen sider i kategorien [[:Category:$1|$1]].",
        "randomincategory-selectcategory": "Hent tilfeldig side frå kategori: $1 $2.",
        "randomincategory-selectcategory-submit": "Hent",
        "randomredirect": "Tilfeldig omdirigering",
        "deletedcontributions-title": "Sletta brukarbidrag",
        "sp-deletedcontributions-contribs": "bidrag",
        "linksearch": "Søk i eksterne lenkjer",
-       "linksearch-pat": "Søkemønster:",
+       "linksearch-pat": "Søkjemønster:",
        "linksearch-ns": "Namnerom:",
        "linksearch-ok": "Søk",
        "linksearch-text": "Jokerteikn som «*.wikipedia.org» kan nyttast.\nDet er påkravt med eit toppnivådomene, til dømes «*.org».<br />\n{{PLURAL:$2|Stødd protokoll|Stødde protokollar}}: <code>$1</code> (nyttar http:// som standard om ingen protokoll er oppgjeven)",
        "trackingcategories-name": "Meldingsnamn",
        "trackingcategories-desc": "Inkluderingsgrunnlag",
        "noindex-category-desc": "Sida vert ikkje indeksert av robotar av di ho inneheld trylleordet <code><nowiki>__NOINDEX__</nowiki></code> og er i eit namnerom der dette flagget er tillate.",
+       "trackingcategories-disabled": "Kategorien er avslegen",
        "mailnologin": "Inga avsendaradresse",
        "mailnologintext": "Du lyt vera [[Special:UserLogin|innlogga]] og ha ei gyldig e-postadresse sett i [[Special:Preferences|brukarinnstillingane]] for å sende e-post åt andre brukarar.",
        "emailuser": "Send e-post åt denne brukaren",
        "watchnologin": "Ikkje innlogga",
        "addwatch": "↓Legg til i overvakingslista",
        "addedwatchtext": "Sida «[[:$1]]» er lagd til i [[Special:Watchlist|overvakingslista]] di. Framtidige endringar av henne og den tilhøyrande diskusjonssida hennar vil bli oppførte der.",
+       "addedwatchtext-short": "Sida «$1» vart lagd til i overvakingslista di.",
        "removewatch": "Fjerna frå overvakingslista",
        "removedwatchtext": "Sida «[[:$1]]» er fjerna frå [[Special:Watchlist|overvakingslista di]].",
+       "removedwatchtext-short": "Sida «$1» vart fjerna frå overvakingslista di.",
        "watch": "Overvak",
        "watchthispage": "Overvak sida",
        "unwatch": "Fjern overvaking",
        "unwatchthispage": "Fjern overvaking",
        "notanarticle": "Ikkje innhaldsside",
        "notvisiblerev": "Sideversjonen er sletta",
-       "watchlist-details": "{{PLURAL:$1|Éi side|$1 sider}} er overvaka, utanom diskusjonssider.",
+       "watchlist-details": "{{PLURAL:$1|Éi side|$1 sider}} på overvakingslista di, utan separat teljing av diskusjonssider.",
        "wlheader-enotif": "Funksjonen for endringsmeldingar per e-post er på.",
        "wlheader-showupdated": "Sider som har vorte endra sidan du sist såg på dei er '''utheva'''",
        "wlnote": "Nedanfor er {{PLURAL:$1|den siste endringa|dei siste '''$1''' endringane}} {{PLURAL:$2|den siste timen|dei siste '''$2''' timane}}, for $3, kl. $4.",
index 6d6cb71..dd2dc0d 100644 (file)
@@ -83,6 +83,7 @@
        "tog-watchdefault": "Dodawaj do obserwowanych strony i pliki, które edytuję",
        "tog-watchmoves": "Dodawaj do obserwowanych strony i pliki, które przenoszę",
        "tog-watchdeletion": "Dodawaj do obserwowanych strony i pliki, które usuwam",
+       "tog-watchrollback": "Dodawaj do obserwowanych strony, w których {{GENDER:|wycofałem|wycofałam}} edycję",
        "tog-minordefault": "Wszystkie edycje domyślnie oznaczaj jako drobne",
        "tog-previewontop": "Pokazuj podgląd powyżej obszaru edycji",
        "tog-previewonfirst": "Pokazuj podgląd strony podczas pierwszej edycji",
        "hidetoc": "ukryj",
        "collapsible-collapse": "Zwiń",
        "collapsible-expand": "Rozwiń",
+       "confirmable-confirm": "Jesteś {{GENDER:$1|pewny|pewna}}?",
+       "confirmable-yes": "Tak",
+       "confirmable-no": "Nie",
        "thisisdeleted": "Pokazać lub odtworzyć $1?",
        "viewdeleted": "Zobacz $1",
        "restorelink": "{{PLURAL:$1|jedną usuniętą wersję|$1 usunięte wersje|$1 usuniętych wersji}}",
        "searchprofile-advanced-tooltip": "Szukanie w wybranych przestrzeniach nazw",
        "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 kategoria|$2 kategorie|$2 kategorii}}, {{PLURAL:$3|1 plik|$3 pliki|$3 plików}})",
-       "search-result-score": "Trafność: $1%",
        "search-redirect": "(przekierowanie $1)",
        "search-section": "(sekcja $1)",
        "search-file-match": "(odpowiada zawartości pliku)",
        "uploadwarning": "Ostrzeżenie o przesyłaniu",
        "uploadwarning-text": "Zmień poniższy opis pliku i spróbuj ponownie.",
        "savefile": "Zapisz plik",
-       "uploadedimage": "przesłał [[$1]]",
-       "overwroteimage": "przesłano nową wersję pliku „[[$1]]“",
        "uploaddisabled": "Przesyłanie plików wyłączone",
        "copyuploaddisabled": "Przesyłanie poprzez podanie adres URL jest wyłączone.",
        "uploaddisabledtext": "Możliwość przesyłania plików została wyłączona.",
        "nolicense": "Nie wybrano",
        "licenses-edit": "Edytuj opcje licencji",
        "license-nopreview": "(Podgląd niedostępny)",
-       "upload_source_url": " (poprawny, publicznie dostępny adres URL)",
-       "upload_source_file": " (plik na twoim komputerze)",
+       "upload_source_url": "(wybrany plik z prawidłowego, publicznie dostępnego adresu URL)",
+       "upload_source_file": "(wybrany plik na twoim komputerze)",
        "listfiles-delete": "usuń",
        "listfiles-summary": "Na tej stronie specjalnej prezentowane są wszystkie przesłane pliki.",
        "listfiles_search_for": "Szukaj pliku o nazwie",
        "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ę",
-       "deletedtext": "Usunięto „$1”.\nZobacz na stronie $2 rejestr ostatnio wykonanych usunięć.",
+       "deletedtext": "Usunięto „$1”.\nZobacz $2, które zostały ostatnio wykonane.",
        "dellogpage": "Usunięte",
        "dellogpagetext": "Poniżej znajduje się lista ostatnio wykonanych usunięć.",
        "deletionlog": "rejestr usunięć",
        "logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup",
        "logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)",
+       "logentry-upload-upload": "$1 {{GENDER:$2|przesłał|przesłała}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|przesłał|przesłała}} nową wersję $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|przesłał|przesłała}} $3",
        "rightsnone": "brak",
        "feedback-bugornote": "Jeśli jesteś w stanie szczegółowo opisać problem techniczny, proszę [$1 zgłoś błąd].\nW przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zostanie dodany do strony \"[$3  $2]\", wraz z nazwą użytkownika.",
        "feedback-subject": "Temat",
        "action-pagelang": "zmiany języka strony",
        "log-name-pagelang": "Rejestr zmian języka",
        "log-description-pagelang": "Rejestr zmian języków przypisanych do poszczególnych stron",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (włączone)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''wyłączone''')"
 }
index c20deed..6e4bcf4 100644 (file)
@@ -31,6 +31,7 @@
        "tog-watchdefault": "Gionté le pàgine e j'archivi che i modìfico mi a la lista dle ròbe ch'i ten-o sot-euj",
        "tog-watchmoves": "Gionté le pàgine e j'archivi che i tramudo a lòn che im ten-o sot-euj",
        "tog-watchdeletion": "Gionté le pàgine e j'archivi che i scancelo via a la lista ëd lòn che im ten-o sot-euj",
+       "tog-watchrollback": "Gionté a la lista dle ròbe che i ten-o sot-euj le pàgine anté ch'i l'hai fàit n'operassion ëd riprìstin.",
        "tog-minordefault": "Marché tute le modìfiche coma cite coma predefinission",
        "tog-previewontop": "Smon-e la preuva dzora al quàder ëd modìfica dël test e nen sota",
        "tog-previewonfirst": "Smon-e na preuva la prima vira che as fa na modìfica",
        "preview": "Previsualisassion",
        "showpreview": "Mostré na preuva",
        "showdiff": "Smon-me le modìfiche",
+       "blankarticle": "<strong>Atension:</strong> La pàgina ch'a l'ha creà a l'é veuida. S'a sgnaca torna «{{int:savearticle}}», la pàgina a sarà creà sensa contnù.",
        "anoneditwarning": "'''Atension:''' A l'é nen rintrà ant ël sistema. Soa adrëssa IP a sarà registrà ant la stòria dle modìfiche ëd sa pàgina.",
        "anonpreviewwarning": "''A l'é nen rintrà ant ël sistema. An salvand a sarà memorisà soa adrëssa IP ant la stòria dle modìfiche ëd sa pàgina.''",
        "missingsummary": "'''Nòta:''' a l'ha butà gnun resumé dla modìfica. Se a sgnaca «{{int:savearticle}}» n'àutra vira, soa modìfica a resterà salvà sensa resumé.",
        "rev-deleted-event": "(assion dël registr gavà)",
        "rev-deleted-user-contribs": "[nòm utent o adrëssa IP gavà - modìfica stërmà ai contributor]",
        "rev-deleted-text-permission": "Sta revision-sì dla pàgina a l'é staita '''scancelà'''.\nA-i peulo essnie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
+       "rev-suppressed-text-permission": "Costa revision dla pàgina-sì a l'é stàita <stong>gavà via<strong>.\nIj detaj as treuvo ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
        "rev-deleted-text-unhide": "Sta version-sì dla pàgina a l'é stàita '''scancelà'''.\nA peulo ess-ie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd la scancelassion].\nA peul anco' [$1 vardé sta version-sì] se a veul.",
        "rev-suppressed-text-unhide": "Sta version-sì dla pàgina a l'é stàita '''gavà via'''.\nA peulo ess-ie dle marche ant ël [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registr ëd le scancelassion]. \nA peul anco' [$1 vëdde sta version] se a veul.",
        "rev-deleted-text-view": "Costa revision dla pàgina-sì a l'é staita '''scancelà'''.\nChiel a peul ës-ciairela; a peulo ess-ie dle marche ant ël [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registr ëd jë scancelament].",
        "searchprofile-advanced-tooltip": "Sërché ant jë spassi nominaj përsonalisà",
        "search-result-size": "$1 ({{PLURAL:$2|un|$2}} mòt)",
        "search-result-category-size": "{{PLURAL:$1|1 mèmber|$1 mèmber}} ({{PLURAL:$2|1 sot-categorìa|$2 sot-categorìe}}, {{PLURAL:$3|1 archivi|$3 archivi}})",
-       "search-result-score": "Arlevansa: $1%",
        "search-redirect": "(ridiression $1)",
        "search-section": "(session $1)",
        "search-file-match": "(a corëspond al contnù d'archivi)",
        "powersearch-togglelabel": "Buté na marca:",
        "powersearch-toggleall": "Tùit",
        "powersearch-togglenone": "Gnun",
+       "powersearch-remember": "Visesse dla selession për j'arserche a vnì",
        "search-external": "Arserca esterna",
        "searchdisabled": "L'arserca anterna ëd {{SITENAME}} a l'é nen abilità; për adess a peul prové a dovré un motor d'arserca estern coma Google. (Però che a ten-a da ment che ij contnù ëd {{SITENAME}} listà ant ij motor pùblich a podrìo ëdcò esse nen d'autut agiornà)",
        "search-error": "A l'é rivaje n'eror durant l'arserca: $1",
        "right-move": "Tramudé le pàgine",
        "right-move-subpages": "Tramudé dle pàgine con soe sot-pàgine",
        "right-move-rootuserpages": "Tramudé le pàgine prinsipaj ëd j'utent",
+       "right-move-categorypages": "Tramudé dle pàgine ëd categorìa",
        "right-movefile": "Tramudé j'archivi",
        "right-suppressredirect": "Creé nen ëd ridiression da la pàgina sorgiss an tramudand le pàgine",
        "right-upload": "Carié d'archivi",
        "right-deletedtext": "Vëdde ël test ëscancelà e le modìfiche antra le revision ëscancelà",
        "right-browsearchive": "Sërché dle pàgine scancelà",
        "right-undelete": "Arcuperé na pàgina",
-       "right-suppressrevision": "Esaminé e arcuperé le revision stërmà da j'aministrator",
+       "right-suppressrevision": "Vëdde, stërmé e smon-e torna dle revision ëspessìfiche ëd pàgine për qualsëssìa utent",
+       "right-viewsuppressed": "Smon-e le revision ëstermà për qualsëssìa utent",
        "right-suppressionlog": "Vardé ij registr privà",
        "right-block": "Bloché le modìfiche d'àutri utent",
        "right-blockemail": "Bloché n'utent da mandé 'd mëssagi an pòsta eletrònica",
        "action-createpage": "creé dle pàgine",
        "action-createtalk": "creé dle pàgine ëd discussion",
        "action-createaccount": "creé ës cont utent",
+       "action-history": "smon-e la stòria ëd costa pàgina",
        "action-minoredit": "marché sta modìfica-sì com minor",
        "action-move": "tramudé sta pàgina-sì",
        "action-move-subpages": "tramudé sta pàgina-sì e soe sot-pàgine",
        "action-move-rootuserpages": "tramudé le pàgine prinsipaj dj'utent",
+       "action-move-categorypages": "tramudé dle pàgine ëd categorìa",
        "action-movefile": "tramudé cost'archivi",
        "action-upload": "carié st'archivi",
        "action-reupload": "coaté cost archivi esistent",
        "recentchanges-legend-heading": "'''Legend:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vëdde ëdcò la [[Special:NewPages|lista dle pàgine neuve]])",
        "recentchanges-legend-plusminus": "(''±123'')",
-       "rcnotefrom": "Ambelessì sota a-i é la lista dle modìfiche da <strong>$2</strong> (mostrà fin-a a <strong>$1</strong>).",
+       "rcnotefrom": "Ambelessì sota a-i é {{PLURAL:$5|la modìfica|le modìfiche}} da <strong>$3, $4</strong> (mostrà fin-a a <strong>$1</strong>).",
        "rclistfrom": "Mostré le modìfiche a parte da $3 $2",
        "rcshowhideminor": "$1 le modìfiche cite",
        "rcshowhideminor-show": "Smon-e",
        "largefileserver": "St'archivi-sì a resta pì gròss che lòn che la màchina sentral a përmet.",
        "emptyfile": "L'archivi che a l'ha pen-a carià a smija veujd.\nSòn a podrìa esse rivà përchè che chiel a l'ha scrivù mal ël nòm dl'archivi midem.\nPër piasì che a contròla se a l'é pro cost l'archivi che a veul carié.",
        "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 a l'é pa sigur dë vorèj cangelo.\n[[$1|thumb]]",
+       "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-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.",
        "uploadwarning": "Avis che i soma dapress a carié",
        "uploadwarning-text": "Për piasì, ch'a modìfica la descrission ëd l'archivi sì-sota e ch'a preuva torna.",
        "savefile": "Salvé l'archivi",
-       "uploadedimage": "a l'ha carià \"[[$1]]\"",
-       "overwroteimage": "a l'ha carìa na version neuva ëd \"[[$1]]\"",
        "uploaddisabled": "Càrich blocà.",
        "copyuploaddisabled": "Ël càrich për mojen ëd n'adrëssa dl'aragnà a l'é disabilità.",
        "uploaddisabledtext": "La possibilità ëd carié dj'archivi a l'é staita disabilità.",
        "watchlist-details": "A l'é dëmentrè ch'as ten sot-euj {{PLURAL:$1|$1 pàgina|$1 pàgine}}, nen contand cole ëd discussion.",
        "wlheader-enotif": "La notìfica për pòsta eletrònica a l'é abilità.",
        "wlheader-showupdated": "Le pàgine che a son ëstàite modificà da quand che a l'é passaje ansima l'ùltima vira a resto marcà an '''grassèt'''",
-       "wlnote2": "Sì-sota a-i son le modìfiche {{PLURAL:$1|ant l'ùltima ora|ant j'ùltime <strong>$1</strong> ore}}, a parte da $2, $3.",
+       "wlnote": "Ambelessì sota a-i {{PLURAL:$1|é l'ùltima modìfica|son j'ùltime '''$1''' modìfiche}} ant {{PLURAL:$2|l'ùltima ora|j'ùltime '''$2''' ore}}, a parte da $3, $4.",
        "wlshowlast": "Smon-e j'ùltime $1 ore $2 dì $3",
        "watchlist-options": "Opsion ëd la lista dla ròba ch'as ten sot-euj",
        "watching": "Sot-euj...",
index f9cc76c..c81fa5b 100644 (file)
        "searchprofile-advanced-tooltip": "Personalizar os espaços nominais onde pesquisar",
        "search-result-size": "$1 ({{PLURAL:$2|1 palavra|$2 palavras}})",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 arquivo|$3 arquivos}})",
-       "search-result-score": "Relevância: $1%",
        "search-redirect": "(redirecionamento de $1)",
        "search-section": "(seção $1)",
        "search-file-match": "(coincide com o conteúdo do arquivo)",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veja também a [[Special:NewPages|lista de páginas novas]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "rcnotefrom": "Abaixo estão mostradas as alterações desde <strong>$2</strong> (até <strong>$1</strong>).",
-       "rclistfrom": "Mostrar as novas alterações a partir das $3 $2",
+       "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3",
        "rcshowhideminor": "$1 edições menores",
        "rcshowhideminor-show": "Exibir",
        "rcshowhideminor-hide": "Ocultar",
        "uploadwarning": "Aviso de envio",
        "uploadwarning-text": "Modifique a descrição do arquivo abaixo e tente novamente.",
        "savefile": "Salvar arquivo",
-       "uploadedimage": "enviou \"[[$1]]\"",
-       "overwroteimage": "enviou uma nova versão de \"[[$1]]\"",
        "uploaddisabled": "Envio de arquivos desativado.",
        "copyuploaddisabled": "O upload por URL encontra-se desativado.",
        "uploaddisabledtext": "O envio de arquivos encontra-se desativado.",
index 003602c..9113aac 100644 (file)
@@ -60,7 +60,8 @@
                        "Yves Marques Junqueira",
                        "לערי ריינהארט",
                        "555",
-                       "아라"
+                       "아라",
+                       "Leon saudanha"
                ]
        },
        "tog-underline": "Sublinhar ligações:",
        "hidetoc": "esconder",
        "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}}",
        "invalidtitle-knownnamespace": "Título inválido com o domínio \"$2\" e texto \"$3\"",
        "invalidtitle-unknownnamespace": "Título inválido com número de domínio $1 desconhecido e texto \"$2\"",
        "exception-nologin": "Não está autenticado",
-       "exception-nologin-text": "Por favor, [[Special:Userlogin|inicie sessão]] para poder aceder a esta página ou acção.",
+       "exception-nologin-text": "Por favor, inicie sessão para poder aceder a esta página ou ação.",
        "exception-nologin-text-manual": "Por favor $1, para poder aceder a esta página ou acção.",
        "virus-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
        "virus-scanfailed": "a verificação falhou (código $1)",
        "parser-template-recursion-depth-warning": "Foi excedido o limite da profundidade de recursividade nas predefinições ($1)",
        "language-converter-depth-warning": "O limite de profundidade do conversor de idiomas 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 dos nós foi excedida.",
+       "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": "Uma categoria para páginas onde a profundidade de expansão foi excedida.",
+       "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)",
        "searchprofile-advanced-tooltip": "Personalizar os domínios onde pesquisar",
        "search-result-size": "$1 ({{PLURAL:$2|1 palavra|$2 palavras}})",
        "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 ficheiro|$3 ficheiros}})",
-       "search-result-score": "Relevancia: $1%",
        "search-redirect": "(redirecionamento de $1)",
        "search-section": "(seção $1)",
        "search-file-match": "(coincide com o conteúdo do ficheiro)",
        "preferences": "Preferências",
        "mypreferences": "Preferências",
        "prefs-edits": "Número de edições:",
-       "prefsnologintext2": "Por favor, precisa de $1 para definir as suas preferências.",
+       "prefsnologintext2": "Por favor, inicie sessão para alterar as suas preferências.",
        "prefs-skin": "Tema",
        "skin-preview": "Antever tema",
        "datedefault": "Sem preferência",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|lista de páginas novas]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).",
-       "rclistfrom": "Mostrar as novas mudanças a partir das $3 $2",
+       "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3",
        "rcshowhideminor": "$1 edições menores",
        "rcshowhideminor-show": "Mostrar",
        "rcshowhideminor-hide": "Ocultar",
        "uploadwarning": "Aviso de envio",
        "uploadwarning-text": "Modifique a descrição do ficheiro abaixo e tente novamente, por favor.",
        "savefile": "Gravar ficheiro",
-       "uploadedimage": "carregou \"[[$1]]\"",
-       "overwroteimage": "enviou uma nova versão de \"[[$1]]\"",
        "uploaddisabled": "Carregamentos desativados",
        "copyuploaddisabled": "Carregamento por URL desativado.",
        "uploaddisabledtext": "O carregamento de ficheiros está desativado.",
        "wantedpages-badtitle": "Título inválido no conjunto de resultados: $1",
        "wantedfiles": "Ficheiros desejados",
        "wantedfiletext-cat": "Os seguintes ficheiros são usados, mas não existem. Ficheiros de repositórios externos podem ser listados apesar de existirem. Tais falsos positivos aparecerão <del>riscados</del>. Adicionalmente, as páginas que incorporam ficheiros que não existem estão listadas em [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Os seguintes ficheiros são usados, mas não existem. Além disso, as páginas que incorporam ficheiros que não existem são listadas em [[:$1]].",
        "wantedfiletext-nocat": "Os seguintes ficheiros são usados, mas não existem. Ficheiros de repositórios externos podem ser listados apesar de existirem. Tais falsos positivos aparecerão <del>riscados</del>.",
+       "wantedfiletext-nocat-noforeign": "Os seguintes ficheiros são usados, mas não existem.",
        "wantedtemplates": "Predefinições desejadas",
        "mostlinked": "Páginas com mais afluentes",
        "mostlinkedcategories": "Categorias com mais membros",
        "trackingcategories-desc": "Critérios de inclusão",
        "noindex-category-desc": "A página não é indexada por robôs porque contém a palavra mágica <code><nowiki>__NOINDEX__</nowiki></code> e está num domínio onde o estatuto é permitido.",
        "index-category-desc": "A página contém a palavra mágica <code><nowiki>__INDEX__</nowiki></code> (e está num domínio em que essa marca é permitida) e, portanto, será indexada pelos robôs mesmo quando normalmente não o seria.",
-       "post-expand-template-inclusion-category-desc": "A expansão de todas as predefinições faria com que o tamanho da página ultrapassasse <code>$wgMaxArticleSize</code>, pelo que algumas predefinições não foram expandidas.",
-       "post-expand-template-argument-category-desc": "A expansão de um argumento de prefefinição (algo em chavetas triplas, como <code>{{{Foo}}}</code> ) torna a página maior do que <code>$wgMaxArticleSize</code>.",
-       "expensive-parserfunction-category-desc": "Demasiadas funções do analisador custosas (como <code>#ifexist</code>) incluídas numa página. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
-       "broken-file-category-desc": "Categoria adicionada se a página contém um link quebrado para um ficheiro (um link para incorporar um ficheiro que não existe).",
-       "hidden-category-category-desc": "Esta é uma categoria com a marca <code><nowiki>__HIDDENCAT__</nowiki></code>, que faz com que ela não apareça na caixa de links de categoria nas páginas, por omissão.",
+       "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.",
+       "post-expand-template-argument-category-desc": "O tamanho da página é superior a <code>$wgMaxArticleSize</code>, após a expansão de um argumento de predefinição (algo em chavetas triplas, como <code>{{{Foo}}}</code>).",
+       "expensive-parserfunction-category-desc": "A página tem demasiadas funções do analisador custosas (como <code>#ifexist</code>) incluídas. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "A página contém uma ligação quebrada para um ficheiro (uma ligação para incorporar um ficheiro que não existe).",
+       "hidden-category-category-desc": "Esta é uma categoria com a marca <code><nowiki>__HIDDENCAT__</nowiki></code>, que faz com que ela não apareça na caixa de ligações de categoria nas páginas, por omissão.",
        "trackingcategories-nodesc": "Nenhuma descrição disponível.",
        "trackingcategories-disabled": "A categoria está desactivada.",
        "mailnologin": "Não existe endereço de envio",
        "mywatchlist": "Páginas vigiadas",
        "watchlistfor2": "Para $1 $2",
        "nowatchlist": "A sua lista de páginas vigiadas está vazia.",
-       "watchlistanontext": "Precisa de $1 para ver ou editar a sua lista de páginas vigiadas, por favor.",
+       "watchlistanontext": "Por favor, inicie sessão para ver ou editar itens da sua lista de páginas vigiadas.",
        "watchnologin": "Não está autenticado(a)",
        "addwatch": "Adicionar às páginas vigiadas",
        "addedwatchtext": "A página \"[[:$1]]\" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].\nModificações futuras desta página e da respetiva página de discussão serão listadas lá.",
        "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} em sua lista de páginas vigiadas, excluindo-se as páginas de discussão.",
        "wlheader-enotif": "A notificação por correio eletrónico está ativa.",
        "wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.",
-       "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas '''$1''' alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas '''$2''' horas}} até $3, $4.",
+       "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas <strong>$1</strong> alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} até $3, $4.",
        "wlshowlast": "Ver últimas $1 horas $2 dias $3",
        "watchlist-options": "Opções da lista de páginas vigiadas",
        "watching": "A vigiar...",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
        "unknown_extension_tag": "\"$1\" é uma marca de extensão desconhecida",
        "duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
+       "duplicate-displaytitle": "<strong> Aviso: </ strong> Exibir título \"$ 2\" substituindo o título anteriormente em exibição \"$ 1\".",
        "version": "Versão",
        "version-extensions": "Extensões instaladas",
        "version-skins": "Temas instalados",
        "logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
        "logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
        "logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|carregou}} uma nova versão de $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|carregou}} $3",
        "rightsnone": "(nenhum)",
        "feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
        "feedback-subject": "Assunto:",
        "action-pagelang": "alterar o idioma da página",
        "log-name-pagelang": "Alterar registo de idioma",
        "log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ativado)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desativado''')"
 }
index 9a1d2e1..9ac5b67 100644 (file)
        "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-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}}",
        "viewdeleted": "Message shown on a deleted page when the user does not have the undelete right (but has the deletedhistory right).\n\nParameters:\n* $1 - a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text\nSee also:\n* {{msg-mw|thisisdeleted}}",
        "restorelink": "This text is always displayed in conjunction with the {{msg-mw|thisisdeleted}} message (View or restore $1?). The user will see\nView or restore <nowiki>{{PLURAL:$1|one deleted edit|$1 deleted edits}}</nowiki>?    i.e ''View or restore one deleted edit?''     or\n''View or restore n deleted edits?''",
        "searchprofile-advanced-tooltip": "Used as tooltip for the option {{msg-mw|Searchprofile-advanced}} in [[Special:Search]].\n\nSee also:\n* {{msg-mw|Searchprofile-advanced|message}}\n* {{msg-mw|Searchprofile-advanced-tooltip|tooltip}}",
        "search-result-size": "Shown per line of a [[Special:Search|search result]]\n* $1 - the size of the page in bytes, but no need to add \"byte\" or similar as the unit is added by special function\n* $2 - the sum of all words in this page",
        "search-result-category-size": "Parameters:\n* $1 - number of members in this category. $1 is equal to $2+$3.\n* $2 - number of subcategories\n* $3 - number of files",
-       "search-result-score": "Shown per line of a [[Special:Search|search result]]. Parameters:\n* $1 - the relevance of this result in percent\n{{Identical|Relevance: $1%}}",
        "search-redirect": "\"Redirect\" is a noun here, not a verb.\n\nParameters:\n* $1 - a link to the redirect to the page (so, $1 is the page that the search result is redirected '''from''')",
        "search-section": "This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that section is more relevant than the rest of the page. $1 is a section title.\n{{Identical|Section}}",
        "search-file-match": "This text will be shown on the search result listing after the page title of a result if the search engine got search results from the contents of files, rather than the pages.",
        "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.",
-       "prefsnologintext2": "Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description",
+       "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}}",
        "datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-datetime|user preferences]], {{msg-mw|prefs-datetime}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).",
        "uploadwarning": "Used as section header in [[Special:Upload]].",
        "uploadwarning-text": "Used in [[Special:Upload]].",
        "savefile": "When uploading a file",
-       "uploadedimage": "This is the text of an entry in the [[Special:Log|upload log]] (and Recent Changes), after hour (and date, only in the Upload log) and user name. $1 is the name of the file uploaded.",
-       "overwroteimage": "This is the text of an entry in the [[Special:Log|upload log]] (and Recent Changes), after hour (and date, only in the Upload log) and user name. $1 is the name of the file uploaded.",
+       "uploadedimage": "{{ignored}}This is ''logentry'' message only used on IRC. $1 is the name of the file uploaded.",
+       "overwroteimage": "{{ignored}}This is ''logentry'' message only used on IRC. $1 is the name of the file uploaded.",
        "uploaddisabled": "Title of the [[Special:Upload]] page when upload is disabled.\n\nSee also:\n* {{msg-mw|Copyuploaddisabled}}",
        "copyuploaddisabled": "See also:\n* {{msg-mw|Uploaddisabled}}",
        "uploaddisabledtext": "Parameters:\n* $1 - (Optional) the name of the target file. See r22243 and [[bugzilla:8818|bug 8818]].",
        "mywatchlist": "Link at the upper right corner of the screen.\n\nSee also:\n* {{msg-mw|Mywatchlist}}\n* {{msg-mw|Accesskey-pt-watchlist}}\n* {{msg-mw|Tooltip-pt-watchlist}}\n{{Identical|Watchlist}}",
        "watchlistfor2": "Subtitle on [[Special:Watchlist]].\nParameters:\n* $1 - Username of current user\n* $2 - Tool links (View relevant changes | View and edit watchlist | Edit raw watchlist)\n{{Identical|For $1}}",
        "nowatchlist": "Displayed when there is no pages in the watchlist.",
-       "watchlistanontext": "Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description",
+       "watchlistanontext": "Shown on Special:Userlogin when user tries to access their watchlist before logging in",
        "watchnologin": "Used as error page title.\n\nThe error message for this title is:\n* {{msg-mw|Watchnologintext}}\n{{Identical|Not logged in}}",
        "addwatch": "Link to a dialog box, displayed at the end of the list of categories at the foot of each page.\n\nSee also:\n* {{msg-mw|Removewatch}}",
        "addedwatchtext": "Explanation shown when clicking on the {{msg-mw|Watch}} tab. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatch}}",
        "excontent": "Automated deletion reason when deleting a page for admins. Parameters:\n* $1 - content before deletion",
        "excontentauthor": "Automated deletion reason when deleting a page for admins providing that the page has one author only.\n\nParameters:\n* $1 - content before deletion\n* $2 - username",
        "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",
+       "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",
        "confirmdeletetext": "Introduction shown when deleting a page.\n\nRefers to {{msg-mw|Policy-url}}.",
        "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
+       "logentry-upload-upload": "{{Logentry|[[Special:Log/upload]]}}",
+       "logentry-upload-overwrite": "{{Logentry|[[Special:Log/upload]]}}",
+       "logentry-upload-revert": "{{Logentry|[[Special:Log/upload]]}}",
        "rightsnone": "Default rights for registered users.\n\n{{Identical|None}}",
        "revdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for page revisions.\n\nFollowed by the message {{msg-mw|revdelete-log-message}} in brackets.\n\nPreceded by the name of the user doing this task.\n\nParameters:\n* $1 - the page name\nSee also:\n* {{msg-mw|Logdelete-logentry}}",
        "logdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for log events.\n\nFollowed by the message {{msg-mw|logdelete-log-message}} in brackets.\n\nPreceded by the name of the user who did this task.\n\nParameters:\n* $1 - the log name in brackets\nSee also:\n* {{msg-mw|Revdelete-logentry}}",
        "action-pagelang": "{{Doc-action|pagelang}}",
        "log-name-pagelang": "Display entry for log name for changes in page language in Special:Log.",
        "log-description-pagelang": "Display description for log name for changes in page language in Special:Log.",
-       "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)"
+       "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"
 }
index 8c084e4..db720ce 100644 (file)
        "searchprofile-advanced-tooltip": "Caută în spații de nume personalizate",
        "search-result-size": "$1 ({{PLURAL:$2|1 cuvânt|$2 cuvinte}})",
        "search-result-category-size": "$1 {{PLURAL:$1|element|elemente}} ($2 {{PLURAL:$2|categorie|categorii}}, $3 {{PLURAL:$3|fișier|fișiere}})",
-       "search-result-score": "Relevanță: $1%",
        "search-redirect": "(redirecționare de la $1)",
        "search-section": "(secțiunea $1)",
        "search-file-match": "(se regăsește în conținutul fișierului)",
        "uploadwarning": "Avertizare la trimiterea fișierului",
        "uploadwarning-text": "Vă rugăm să modificați descrierea fișierului mai jos și să încercați din nou.",
        "savefile": "Salvează fișierul",
-       "uploadedimage": "a trimis [[$1]]",
-       "overwroteimage": "încărcat o versiune nouă a fișierului \"[[$1]]\"",
        "uploaddisabled": "Ne pare rău, trimiterea de imagini este dezactivată.",
        "copyuploaddisabled": "Trimiterea prin URL este dezactivată.",
        "uploaddisabledtext": "Încărcările de fișiere sunt dezactivate.",
        "logentry-rights-rights": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3 de la $4 la $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a fost promovat|a fost promovată}} în mod automat de la $4 la $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|a încărcat}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|a încărcat}} o nouă versiune pentru $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|a încărcat}} $3",
        "rightsnone": "(niciunul)",
        "feedback-bugornote": "Dacă sunteți pregătit să descrieți o problemă tehnică în detaliu vă rugăm să [$1 raportați un bug].\nÎn caz contrar, puteți utiliza formularul de mai jos. Comentariul dumneavoastră va fi adăugat pe pagina „[$3 $2]”, împreună cu numele de utilizator și numele navigatorului pe care îl folosiți.",
        "feedback-subject": "Subiect:",
index 5760970..331d7fd 100644 (file)
@@ -85,6 +85,7 @@
        "tog-watchdefault": "Добавлять в список наблюдения изменённые мной страницы и описания файлов",
        "tog-watchmoves": "Добавлять в список наблюдения переименованные мной страницы и файлы",
        "tog-watchdeletion": "Добавлять в список наблюдения удалённые мной страницы и файлы",
+       "tog-watchrollback": "Добавлять страницы, где я выполнил откат, в мой список наблюдения",
        "tog-minordefault": "Помечать по умолчанию правки как малозначимые",
        "tog-previewontop": "Помещать предпросмотр перед окном редактирования",
        "tog-previewonfirst": "Показывать предпросмотр при переходе к редактированию",
        "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": "Необходимо [[Special:Userlogin|представиться]], чтобы иметь доступ к этой странице или действию.",
+       "exception-nologin-text": "Необходимо представиться, чтобы иметь доступ к этой странице или действию.",
        "exception-nologin-text-manual": "Необходимо $1, чтобы иметь доступ к этой странице или действию.",
        "virus-badscanner": "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
        "virus-scanfailed": "ошибка сканирования (код $1)",
        "parser-template-recursion-depth-warning": "Превышен предел глубины рекурсии шаблона ($1)",
        "language-converter-depth-warning": "Превышен предел глубины преобразователя языков ($1)",
        "node-count-exceeded-category": "Странице, на которых превышено число узлов",
-       "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80иÑ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82Ñ\80аниÑ\86, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80Ñ\8bÑ\85 Ð¿Ñ\80евÑ\8bÑ\88ено число узлов.",
-       "node-count-exceeded-warning": "Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð¿Ñ\80евÑ\8bÑ\88ено Ñ\87иÑ\81ло Ñ\83злов",
+       "node-count-exceeded-category-desc": "У Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ð¿Ñ\80евÑ\8bÑ\88ено Ð¼Ð°ÐºÑ\81ималÑ\8cно Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имое число узлов.",
+       "node-count-exceeded-warning": "СÑ\82Ñ\80аниÑ\86а, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ой Ð¿Ñ\80евÑ\8bÑ\88ено Ð¼Ð°ÐºÑ\81ималÑ\8cно Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имое Ñ\87иÑ\81ло Ñ\83злов.",
        "expansion-depth-exceeded-category": "Страницы с превышением глубины раскрытия",
-       "expansion-depth-exceeded-category-desc": "ЭÑ\82о ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82Ñ\80аниÑ\86 Ñ\81 Ð¿Ñ\80евÑ\8bÑ\88ением Ð³Ð»Ñ\83бинÑ\8b раскрытия.",
+       "expansion-depth-exceeded-category-desc": "У Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ð¿Ñ\80евÑ\8bÑ\88ена Ð¼Ð°ÐºÑ\81ималÑ\8cно Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имаÑ\8f Ð³Ð»Ñ\83бина раскрытия.",
        "expansion-depth-exceeded-warning": "На странице превышен предел вложенности",
        "parser-unstrip-loop-warning": "Обнаружен незакрытый pre",
        "parser-unstrip-recursion-limit": "Превышен предел рекурсии ($1)",
        "searchprofile-advanced-tooltip": "Искать в заданных пространствах имён",
        "search-result-size": "$1 ({{PLURAL:$2|$2 слово|$2 слов|$2 слова}})",
        "search-result-category-size": "$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}})",
-       "search-result-score": "Релевантность: $1%.",
        "search-redirect": "(перенаправление с $1)",
        "search-section": "(раздел «$1»)",
        "search-file-match": "(совпадает с содержимым файла)",
        "preferences": "Настройки",
        "mypreferences": "Настройки",
        "prefs-edits": "Количество правок:",
-       "prefsnologintext2": "Ð\9dеобÑ\85одимо $1, Ñ\87Ñ\82обÑ\8b Ð¸Ð·Ð¼ÐµÐ½Ñ\8fть настройки.",
+       "prefsnologintext2": "Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ð¾Ð¹Ð´Ð¸Ñ\82е, Ñ\87Ñ\82обÑ\8b Ð¸Ð·Ð¼ÐµÐ½Ð¸ть настройки.",
        "prefs-skin": "Тема оформления",
        "skin-preview": "Предпросмотр",
        "datedefault": "По умолчанию",
        "uploadwarning": "Предупреждение",
        "uploadwarning-text": "Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.",
        "savefile": "Записать файл",
-       "uploadedimage": "загрузил «[[$1]]»",
-       "overwroteimage": "загружена новая версия «[[$1]]»",
        "uploaddisabled": "Загрузка запрещена",
        "copyuploaddisabled": "Загрузка по URL отключена.",
        "uploaddisabledtext": "Загрузка файлов отключена.",
        "trackingcategories-desc": "Критерий включения в категорию",
        "noindex-category-desc": "Страница не индексируются поисковыми роботами, потому что на ней имеется «волшебное слово» <code><nowiki>__NOINDEX__</nowiki></code>, и она находится в пространстве имён, где разрешён этот флаг).",
        "index-category-desc": "На странице имеется «волшебное слово» __INDEX__ (и страница находится в пространстве имён, где разрешён этот флаг), поэтому она индексируются поисковыми роботами в тех случаях, когда этого обычно не происходит.",
-       "post-expand-template-inclusion-category-desc": "Ð\9fоÑ\81ле Ð¿Ð¾ÐºÐ°Ð·Ð° Ð²Ñ\81еÑ\85 Ñ\88аблонов Ñ\80азмеÑ\80 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\82анеÑ\82 Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем <code>$wgMaxArticleSize</code>, Ð¿Ð¾Ñ\8dÑ\82омÑ\83 Ð½ÐµÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ñ\88аблонÑ\8b не были показаны полностью.",
-       "post-expand-template-argument-category-desc": "Ð\9fоÑ\81ле Ñ\80аÑ\81кÑ\80Ñ\8bÑ\82иÑ\8f Ð°Ñ\80гÑ\83менÑ\82а Ñ\88аблона (Ñ\87Ñ\82о-нибÑ\83дÑ\8c Ð² Ñ\82Ñ\80ойнÑ\8bÑ\85 Ñ\84игÑ\83Ñ\80нÑ\8bÑ\85 Ñ\81кобкаÑ\85, Ð½Ð°Ð¿Ñ\80имеÑ\80, <code>{{{Foo}}})</code>, Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81Ñ\82анеÑ\82 Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем <code>$wgMaxArticleSize</code>.",
+       "post-expand-template-inclusion-category-desc": "РазмеÑ\80 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\82анеÑ\82 Ð±Ð¾Ð»Ñ\8cÑ\88е <code>$wgMaxArticleSize</code> Ð¿Ð¾Ñ\81ле Ð¿Ð¾ÐºÐ°Ð·Ð° Ð²Ñ\81еÑ\85 Ñ\88аблонов, Ð¿Ð¾Ñ\8dÑ\82омÑ\83 Ð½ÐµÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð¸Ð· Ð½Ð¸Ñ\85 не были показаны полностью.",
+       "post-expand-template-argument-category-desc": "СÑ\82Ñ\80аниÑ\86а Ñ\81Ñ\82анеÑ\82 Ð±Ð¾Ð»Ñ\8cÑ\88е <code>$wgMaxArticleSize</code> Ð¿Ð¾Ñ\81ле Ñ\80аÑ\81кÑ\80Ñ\8bÑ\82иÑ\8f Ð°Ñ\80гÑ\83менÑ\82а Ñ\88аблона (Ñ\87Ñ\82о-нибÑ\83дÑ\8c Ð² Ñ\82Ñ\80ойнÑ\8bÑ\85 Ñ\84игÑ\83Ñ\80нÑ\8bÑ\85 Ñ\81кобкаÑ\85, Ð½Ð°Ð¿Ñ\80имеÑ\80, <code>{{{Foo}}})</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егоÑ\80иÑ\8f Ð´Ð¾Ð±Ð°Ð²Ð»Ñ\8fеÑ\82Ñ\81Ñ\8f, ÐµÑ\81ли Ñ\81траница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
-       "hidden-category-category-desc": "ЭÑ\82о ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81 Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½Ð¾Ð¹ Ð¼ÐµÑ\82кой <code><nowiki>__HIDDENCAT__</nowiki></code> Ð² Ð½ÐµÐ¹, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
+       "broken-file-category-desc": "Страница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
+       "hidden-category-category-desc": "ЭÑ\82а ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 Ð¼ÐµÑ\82кÑ\83 <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\81одеÑ\80жимом Ñ\81Ñ\82Ñ\80аниÑ\86е, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
        "trackingcategories-nodesc": "Описание отсутствует.",
        "trackingcategories-disabled": "Категория отключена",
        "mailnologin": "Адрес для отправки отсутствует",
        "mywatchlist": "Список наблюдения",
        "watchlistfor2": "Для $1 $2",
        "nowatchlist": "Ваш список наблюдения пуст.",
-       "watchlistanontext": "Вы должны $1, чтобы просмотреть или отредактировать список наблюдения.",
+       "watchlistanontext": "Вы должны войти, чтобы просмотреть или отредактировать элементы в списке наблюдения.",
        "watchnologin": "Нужно представиться системе",
        "addwatch": "Добавить в список наблюдения",
        "addedwatchtext": "Страница «[[:$1]]» была добавлена в ваш [[Special:Watchlist|список наблюдения]].\nТам будут отмечаться последующие изменения этой страницы, а также связанной с ней страницы обсуждения.",
        "logentry-rights-rights": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3 с $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3",
        "logentry-rights-autopromote": "$1 был{{GENDER:$2||а}} автоматически переведен{{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": "Тема:",
        "action-pagelang": "изменять язык страницы",
        "log-name-pagelang": "Журнал изменения языка",
        "log-description-pagelang": "Это журнал изменений в языках страницы.",
-       "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5."
+       "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 Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n\n\n$ 2\n\n\n; Если вы только что установили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code>skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n; Если вы только что обновили MediaWiki:\n: MediaWiki версии 1.24 и более новых больше не включает автоматически установленные темы (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВы можете вставить следующие строчки в <code>LocalSettings.php</code>, чтобы включить все установленные темы оформления: \n\n\n<pre>$3</pre>\n\n\n; Если вы только что изменили <code>LocalSettings.php</code>:\n: Перепроверьте названия тем на наличие опечаток.",
+       "default-skin-not-found-no-skins": "Упс! Тема оформления по умолчанию для вашей вики (<code>$wgDefaultSkin</code>), <code>$1</code> недоступна.\n\n\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 архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code>skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''отключено''')"
 }
index c3484c8..a1ce286 100644 (file)
@@ -11,7 +11,7 @@
                        "Uharteko"
                ]
        },
-       "tog-underline": "Sutalìnia sos collegamentos",
+       "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-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
@@ -49,7 +49,7 @@
        "tog-prefershttps": "Imprea semper una lìnia segura candu fatzo s'intrada.",
        "underline-always": "Semper",
        "underline-never": "Mai",
-       "underline-default": "Definitziones dae su browser tuo",
+       "underline-default": "Definitziones dae su navigadore tuo",
        "editfont-style": "Istile de sos caràteres in s'àrea de càmbiu:",
        "editfont-default": "Definidu dae su navigadore",
        "editfont-monospace": "Caràtere monospàtziu",
        "aug": "Aus",
        "sep": "Cab",
        "oct": "Stg",
-       "nov": "Std",
+       "nov": "Sta",
        "dec": "Nad",
        "january-date": "Ghennàrgiu $1",
        "february-date": "Freàrgiu $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 mitza",
+       "viewsource": "Càstia testu codificadu",
        "actionthrottled": "Atzione rimandada",
        "namespaceprotected": "Non tenes su permissu de acontzare is pàginas in su nùmene-lugu '''$1'''.",
        "ns-specialprotected": "Is pàginas ispetziales non podent èssere acontzadas.",
        "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 usuàriu",
-       "yourpassword": "Password:",
-       "yourpasswordagain": "Repite sa password:",
-       "remembermypassword": "Ammenta sa password in custu carculadore (pro unu màssimu de $1 {{PLURAL:$1|die|dies}})",
-       "yourdomainname": "Spetzificare su domìniu",
+       "yourname": "Nùmene utente",
+       "yourpassword": "Paràula de òrdine:",
+       "yourpasswordagain": "Repiti sa paràula de òrdine:",
+       "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",
-       "nav-login-createaccount": "Intra / crea account",
-       "userlogin": "Intra / crea account",
+       "nav-login-createaccount": "Intra / crea contu",
+       "userlogin": "Intra / crea contu",
        "userloginnocreate": "Intra",
        "logout": "Serra sessione",
        "userlogout": "Essida",
        "notloggedin": "Non ses intradu",
-       "nologin": "Non tenes unu account? '''$1'''.",
-       "nologinlink": "Crea unu account",
-       "createaccount": "Crea account",
-       "gotaccount": "Tenes giai unu account? $1.",
-       "gotaccountlink": "Identifica·ti",
+       "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",
        "createaccountreason": "Motivu:",
-       "badretype": "Sas passwords chi as insertau non currenspundint.",
+       "badretype": "Sas paràulas de òrdine 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 usuàriu insertadu no est vàlidu.",
+       "noname": "Su nùmene utente insertadu no est vàlidu.",
        "loginsuccesstitle": "Ti ses identificadu",
-       "loginsuccess": "'''Immoe ses intradu in {{SITENAME}} cun su nùmene usuàriu \"$1\".'''",
-       "nosuchuser": "Non bi est 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 account nou]].",
-       "nouserspecified": "Depes spetzificare unu nùmene usuàriu.",
-       "wrongpassword": "Sa password insertada no est bona. Prova torra.",
-       "wrongpasswordempty": "No as scritu sa password.\nProva torra.",
-       "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.",
+       "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.",
+       "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": "Servitziu Password Reminder di {{SITENAME}}",
+       "passwordremindertitle": "Servìtziu Password Reminder di {{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 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.",
+       "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.",
        "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": "Account creadu",
+       "accountcreated": "Contu creadu",
        "accountcreatedtext": "S'account usuàriu pro $1 est stadu creadu.",
-       "createaccount-title": "Creatzione de unu account pro {{SITENAME}}",
+       "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-login": "Intra",
        "pt-login-button": "Intra",
-       "pt-createaccount": "Arregistradì",
-       "pt-userlogout": "Bessida",
+       "pt-createaccount": "Registra·ti",
+       "pt-userlogout": "Essida",
        "changepassword": "Càmbia password",
-       "resetpass_header": "Càmbia sa password de su account",
-       "oldpassword": "Password betza:",
-       "newpassword": "Password noa:",
-       "retypenew": "Re-scrie sa password noa:",
-       "resetpass_submit": "Càmbia sa password e identifica·ti",
-       "resetpass_forbidden": "No est possìbile cambiare is passwords",
-       "resetpass-no-info": "Depes èsser identificadu pro abèrrer custa pàgina deretu.",
-       "resetpass-submit-loggedin": "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-submit-cancel": "Burra",
-       "resetpass-temp-password": "Password temporànea:",
-       "bold_sample": "Grassu",
-       "bold_tip": "Grassu",
-       "italic_sample": "Corsivu",
-       "italic_tip": "Corsivu",
-       "link_sample": "Tìtulu cullegamentu",
-       "link_tip": "Cullegamentu internu",
-       "extlink_sample": "http://www.example.com tìtulu de s'acàpiu",
-       "extlink_tip": "Acàpiu a foras (ammenta su prefissu http://)",
+       "resetpass-temp-password": "Paràula de òrdine temporànea:",
+       "bold_sample": "Testu Grassu",
+       "bold_tip": "Testu Grassu",
+       "italic_sample": "Testu Cursivu",
+       "italic_tip": "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://)",
        "headline_sample": "Testu de su tìtulu",
-       "headline_tip": "Tìtulu de su de duos livellu",
+       "headline_tip": "Tìtulu de su segundu livellu",
        "nowiki_sample": "Inserta su testu non-formatadu inoghe",
        "nowiki_tip": "Ignora sa formatatzione wiki",
        "image_sample": "Esèmpiu.jpg",
        "image_tip": "Incòrpora una pintura",
        "media_sample": "Esèmpiu.ogg",
-       "media_tip": "Cullegamentu a unu file",
+       "media_tip": "Ligàmene a unu documentu",
        "sig_tip": "Firma cun data e ora",
-       "hr_tip": "Lìnia orizontale (de usare cun critèriu)",
+       "hr_tip": "Lìnia orizontale (de impreare cun critèriu)",
        "summary": "Ogetu:",
        "subject": "Tema/tìtulu:",
-       "minoredit": "Custu est un'acontzu minore:",
+       "minoredit": "Custu est unu càmbiu minore:",
        "watchthis": "Pone custa pàgina in sa watchlist mea",
        "savearticle": "Sarva sa pàgina",
-       "preview": "Antiprima",
-       "showpreview": "Ammustra s'antiprima",
-       "showdiff": "Ammustra is mudàntzias",
-       "anoneditwarning": "'''Atentzione:''' Non ses identificadu (log in).\nS'indiritzu IP tuo at a èsser registradu in sa stòria de custa pàgina.",
-       "anonpreviewwarning": "''Non ses identificadu. Sarbende s'indiritzu IP tuo at a èsser registradu in sa stòria de sa pàgina.''",
-       "missingcommenttext": "Inserta unu cummentu inoghe suta.",
-       "summary-preview": "Antiprima ogetu:",
-       "subject-preview": "Antiprima tema/tìtulu:",
-       "blockedtitle": "S'usuàriu est istadu bloccau",
+       "preview": "Anteprima",
+       "showpreview": "Ammustra s'anteprima",
+       "showdiff": "Ammustra sos 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",
        "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 indicadu",
-       "loginreqtitle": "Identificatzione rekesta",
-       "loginreqlink": "identifica·ti",
-       "loginreqpagetext": "Depes èsser $1 pro bìer àteras pàginas.",
-       "accmailtitle": "Password ispedia.",
+       "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.",
        "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.",
-       "updated": "(Agiornadu)",
+       "updated": "(Atualizadu)",
        "note": "'''Nota:'''",
        "previewnote": "'''Regorda·ti ca custa est feti una ANTIPRIMA. Is mudàntzias tuas non sunt galu sarbadas!'''",
        "previewconflict": "Custa antiprima rapresentat su testu in s'àrea acontzu testu de susu comente at a pàrrer si dda sarbas.",
-       "editing": "Acontzu de $1",
-       "editingsection": "Acontzende $1 (setzione)",
+       "editing": "Càmbiu de $1",
+       "editingsection": "Cambiende $1 (setzione)",
        "editingcomment": "Acontzu de $1 (setzione noa)",
        "editconflict": "Cunflitu de editzione: $1",
        "explainconflict": "Calicunu àteru at acontzadu custa pàgina in su tempus ki dda fias acontzende tue.\nS'àrea de testu de susu cuntènnet su testu de sa pàgina in sa forma atuale.\nIs mudàntzias tuas sunt ammustradas in s'àrea de testu de bàsciu.\nAs a dèper insertare is mudàntzias tuas in su testu atuale, e pro custu a ddas scrìer in s'àrea de susu.\n'''Solu''' su testu in s'àrea de susu at a èsser sarbadu si carcas su butone \"{{int:savearticle}}\".",
        "yourtext": "Su testu tuo",
-       "storedversion": "Revisione in arkìvio",
+       "storedversion": "Revisione in archìviu",
        "editingold": "'''ATENTZIONE: Ses acontzende una revisione non-agiornada de sa pàgina.'''\nSi dda sarbas de aici, totu is acontzos fatos a pustis de custa revisione ant a bènner pèrdidos pro semper.",
        "yourdiff": "Diferèntzias",
        "copyrightwarning": "Abbàida, pro praxere, ki totu is contributziones a {{SITENAME}} sunt cunsideradas lassadas a suta permissu de tipu $2 (càstia $1 pro nde schire de prus). Si non keris ki su scritu tuo potzat èsser acontzadu e re-distribuidu dae kie si siat sena piedade e sena àteros lìmites, non ddu imbies a {{SITENAME}}.<br />\nCun s'imbiu de custu scritu ses garantende, a responsabilidade tua, si su scritu ddu as cumpostu tue de persona e in originale, o puru si est stadu copiadu dae una fonte de domìniu pùblicu, o una fonte de gasi, o puru si as otentu permissu craru de impreare custu scritu e si ddu podes dimustrare. '''NO IMPREARE MATERIALE COBERTU DAE DERETU DE AUTORE SENA PERMISSU CRARU!'''",
        "mergehistory-into": "Pàgina de destinatzione:",
        "mergehistory-no-source": "Sa pàgina de orìgine $1 no esistit.",
        "mergehistory-reason": "Motivu:",
-       "revertmerge": "Fùrria s'unione",
+       "revertmerge": "Iscontza s'unione",
        "history-title": "Istòria de is revisiones de \"$1\"",
        "lineno": "Lìnia $1:",
        "compareselectedversions": "Cumpara versiones scioberadas",
-       "editundo": "annudda",
+       "editundo": "annulla",
        "searchresults": "Resurtados de sa chirca",
        "searchresults-title": "Resurtados pro sa chirca de \"$1\"",
        "titlematches": "Currispondèntzias in su tìtulu de s'artìculu",
        "searchprofile-articles-tooltip": "Chirca in $1",
        "searchprofile-images-tooltip": "Chirca files",
        "search-result-size": "$1 ({{PLURAL:$2|1 faeddu|$2 faeddos}})",
-       "search-result-score": "Rilevàntzia: $1%",
        "search-redirect": "(redirect $1)",
        "search-section": "(setzione $1)",
-       "search-suggest": "Fortzis fias chirkende: $1",
+       "search-suggest": "Fortzis fias chirchende: $1",
        "search-interwiki-caption": "Progetos frades",
        "search-interwiki-default": "$1 resurtados:",
        "search-interwiki-more": "(àteru)",
        "prefs-editing": "Box de acontzadura",
        "rows": "Lìnias:",
        "columns": "Colunnas:",
-       "searchresultshead": "Settaggio delle preferenze per la ricerca",
+       "searchresultshead": "Chirca",
        "stub-threshold-disabled": "Disativadu",
        "recentchangescount": "Nùmeru de acontzos de amostare pro definidura:",
        "savedprefs": "Is preferèntzias tuas sunt stadas sarbadas.",
        "badfilename": "Su nùmene de su file est stadu cunvertidu in \"$1\".",
        "uploadwarning": "Avvisu de carrigamentu",
        "savefile": "Sarva file",
-       "uploadedimage": "carrigadu \"[[$1]]\"",
        "upload-source": "File de orìgine",
        "sourcefilename": "Nùmene de su file de orìgine:",
        "sourceurl": "Diretzione originària:",
        "tooltip-pt-watchlist": "Sa lista de is pàginas chi tue ses ponende ogru",
        "tooltip-pt-mycontris": "Sa lista de is contributziones meas",
        "tooltip-pt-login": "Si cunsìgiat sa registratzione; mancari non siat obligatoria",
-       "tooltip-pt-logout": "Bessida (log out)",
+       "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-addsection": "Incumintza una setzione noa",
index 73d1f14..afb888d 100644 (file)
@@ -26,6 +26,7 @@
        "tog-watchdefault": "Na spisek nadzorov dodaj vse članke in datoteke, ki sem jih spremenil/-a",
        "tog-watchmoves": "Dodaj strani in datoteke, ki jih premaknem, na moj spisek nadzorov",
        "tog-watchdeletion": "Dodaj strani in datoteke, ki jih izbrišem, na moj spisek nadzorov",
+       "tog-watchrollback": "Dodaj strani, na katerih sem izvedel vrnitev, na moj spisek nadzorov",
        "tog-minordefault": "Vsa urejanja označi kot manjša",
        "tog-previewontop": "Prikaži predogled pred urejevalnim poljem",
        "tog-previewonfirst": "Ob začetku urejanja prikaži predogled",
        "hidetoc": "skrij",
        "collapsible-collapse": "Skrči",
        "collapsible-expand": "Razširi",
+       "confirmable-confirm": "{{GENDER:$1|Ste}} prepričani?",
+       "confirmable-yes": "Da",
+       "confirmable-no": "Ne",
        "thisisdeleted": "Prikažem ali vrnem $1?",
        "viewdeleted": "Prikažem $1?",
        "restorelink": "$1 {{PLURAL:$1|izbrisano redakcijo|izbrisani redakciji|izbrisane redakcije|izbrisanih redakcij}}",
        "searchprofile-advanced-tooltip": "Iskanje v imenskih prostorih po meri",
        "search-result-size": "$1 ({{PLURAL:$2|1 beseda|2 besedi|$2 besede|$2 besed|$2 besed}})",
        "search-result-category-size": "$1 {{PLURAL:$1|član|člana|člani|članov}} ($1 {{PLURAL:$2|podkategorija|podkategoriji|podkategorije|podkategorij}}, $1 {{PLURAL:$3|datoteka|datoteki|datoteke|datotek}})",
-       "search-result-score": "Ustreznost: $1%",
        "search-redirect": "(preusmeritev $1)",
        "search-section": "(razdelek $1)",
        "search-file-match": "(ujema se z vsebino datoteke)",
        "uploadwarning": "Opozorilo!",
        "uploadwarning-text": "Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.",
        "savefile": "Shrani datoteko",
-       "uploadedimage": "je naložil(-a) datoteko »[[$1]]«",
-       "overwroteimage": "je naložil(-a) novo različico datoteke »[[$1]]«",
        "uploaddisabled": "Nalaganje je onemogočeno",
        "copyuploaddisabled": "Nalaganje preko URL je onemogočeno",
        "uploaddisabledtext": "Nalaganje datotek je onemogočeno.",
        "logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3 z $4 na $5",
        "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3",
        "logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
+       "logentry-upload-upload": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
+       "logentry-upload-overwrite": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} novo različico $3",
+       "logentry-upload-revert": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
        "rightsnone": "(nobeno)",
        "feedback-bugornote": "Če ste pripravljeni podrobno opisati tehnično težavo, vložite [$1 poročilo o hrošču].\nV nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bomo dodali na stran »[$3 $2]«, skupaj z vašim uporabniškim imenom in podatkom o brskalniku, ki ga uporabljate.",
        "feedback-subject": "Zadeva:",
        "action-pagelang": "spreminjanje jezika strani",
        "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."
+       "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5.",
+       "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 5a5cc53..549d25b 100644 (file)
@@ -42,6 +42,7 @@
        "tog-watchdefault": "Додај странице и датотеке које изменим у списак надгледања",
        "tog-watchmoves": "Додај странице и датотеке које преместим у списак надгледања",
        "tog-watchdeletion": "Додај странице и датотеке које обришем у списак надгледања",
+       "tog-watchrollback": "Додај странице на којима сам вратио измене у списак надгледања",
        "tog-minordefault": "Означавај све измене као мање",
        "tog-previewontop": "Прикажи преглед пре оквира за уређивање",
        "tog-previewonfirst": "Прикажи преглед на првој измени",
        "hidetoc": "сакриј",
        "collapsible-collapse": "скупи",
        "collapsible-expand": "прошири",
+       "confirmable-confirm": "Да ли {{GENDER:$1|сте}} сигурни?",
+       "confirmable-yes": "Да",
+       "confirmable-no": "Не",
        "thisisdeleted": "Погледати или вратити $1?",
        "viewdeleted": "Погледати $1?",
        "restorelink": "{{PLURAL:$1|обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
        "viewsourcetext": "Можете читати и копирати садржај ове странице:",
        "viewyourtext": "Можете да погледате и копирате извор '''ваших измена''' на овој страници:",
        "protectedinterface": "Ова страница садржи текст корисничког окружења за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
-       "editinginterface": "'''Упозорење:''' уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.\nДа бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Транслејтвики], пројекат за локализацију Медијавикија.",
+       "editinginterface": "<strong>Упозорење:</strong> уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.\nДа бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
        "cascadeprotected": "Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:\n$2",
        "namespaceprotected": "Немате дозволу да уређујете странице у именском простору '''$1'''.",
        "customcssprotected": "Немате дозволу да мењате ову CSS страницу јер садржи личне поставке другог корисника.",
        "eauthentsent": "На наведену е-адресу је послат потврдни код.\nПре него што пошаљемо даљње поруке, пратите упутства с е-поште да бисте потврдили да сте ви отворили налог.",
        "throttled-mailpassword": "Порука за промену лозинке је послата у {{PLURAL:$1|последњих сат времена|последња $1 сата|последњих $1 сати}}.\nДа бисмо спречили злоупотребу, подсетник шаљемо само једном у року од {{PLURAL:$1|сат времена|$1 сата|$1 сати}}.",
        "mailerror": "Грешка при слању поруке: $1",
-       "acct_creation_throttle_hit": "Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.\nЗбог тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.",
+       "acct_creation_throttle_hit": "Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|1=један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.\nЗбог тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.",
        "emailauthenticated": "Ваша е-адреса је потврђена $2 у $3.",
        "emailnotauthenticated": "Ваша е-адреса још није потврђена.\nПоруке неће бити послате ни у једном од следећих случајева.",
        "noemailprefs": "Унесите е-адресу како би ове могућности радиле.",
        "undo-failure": "Ова измена се не може поништити због сукоба измена.",
        "undo-norev": "Не могу да вратим измену јер не постоји или је обрисана.",
        "undo-nochange": "Изгледа да је измена већ поништена.",
-       "undo-summary": "Поништена измена $1 {{GENDER:$2|корисника|кориснице}} [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]])",
+       "undo-summary": "Поништена измена $1 {{GENDER:$2|корисника|кориснице}} [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]])",
        "undo-summary-username-hidden": "Поништи измену $1 скривеног корисника",
        "cantcreateaccounttitle": "Не могу да отворим налог",
        "cantcreateaccount-text": "Отварање налога с ове IP адресе ('''$1''') је {{GENDER:$3|блокирао|блокирала|блокирао}} [[User:$3|$3]].\n\nРазлог који је навео {{GENDER:$3|корисник|корисница|корисник}} $3 је ''$2''",
        "searchprofile-advanced-tooltip": "Претражите прилагођене именске просторе",
        "search-result-size": "$1 ({{PLURAL:$2|1 реч|$2 речи|$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": "Отпремање датотека је онемогућено.",
        "cachedspecial-viewing-cached-ts": "Гледате кеширану верзију ове странице, која може да се разликује од тренутне.",
        "cachedspecial-refresh-now": "Погледај најновију.",
        "categories": "Категоријe",
-       "categoriespagetext": "{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.\n[[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.\nПогледајте и [[Special:WantedCategories|тражене категорије]].",
+       "categoriespagetext": "{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.\n[[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.\nПогледајте и [[Special:WantedCategories|тражене категорије]].",
        "categoriesfrom": "Прикажи категорије почев од:",
        "special-categories-sort-count": "поређај по броју",
        "special-categories-sort-abc": "поређај по азбучном реду",
        "deletepage": "Обриши страницу",
        "confirm": "Потврди",
        "excontent": "садржај је био: „$1“",
-       "excontentauthor": "садржај је био: „$1“ (а једини уредник је био „[[Special:Contributions/$2|$2]]“)",
+       "excontentauthor": "садржај је био: „$1“ (а једини уредник је био „[[Special:Contribs/$2|$2]]“)",
        "exbeforeblank": "садржај пре брисања је био: „$1“",
        "delete-confirm": "Брисање странице „$1“",
        "delete-legend": "Обриши",
        "cantrollback": "Не могу да вратим измену.\nПоследњи аутор је уједно и једини.",
        "alreadyrolled": "Враћање последње измене странице [[:$1]] од стране {{GENDER:$2|корисника|кориснице|корисника}} [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); неко други је већ изменио или вратио страницу.\n\nПоследњу измену је {{GENDER:$3|направио|направила|направио}} [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Опис измене: „''$1''“.",
-       "revertpage": "Враћене измене [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]",
+       "revertpage": "Враћене измене [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]",
        "revertpage-nouser": "Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]",
        "rollback-success": "Враћене су измене {{GENDER:$1|корисника|кориснице}} $1\nна последњу измену {{GENDER:$2|корисника|кориснице}} $2.",
        "sessionfailure-title": "Сесија је окончана",
        "expiringblock": "истиче $1 у $2",
        "anononlyblock": "само анонимни",
        "noautoblockblock": "аутоматско блокирање је онемогућено",
-       "createaccountblock": "оÑ\82ваÑ\80аÑ\9aе Ð½Ð°Ð»Ð¾Ð³Ð° Ñ\98е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ано",
+       "createaccountblock": "оÑ\82ваÑ\80аÑ\9aе Ð½Ð°Ð»Ð¾Ð³Ð° Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bено",
        "emailblock": "е-пошта је блокирана",
        "blocklist-nousertalk": "забрањено уређивање сопствене странице за разговор",
        "ipblocklist-empty": "Списак блокирања је празан.",
        "exif-isospeedratings": "ISO осетљивост на светло",
        "exif-shutterspeedvalue": "Брзина затварача",
        "exif-aperturevalue": "Отвор бленде",
-       "exif-brightnessvalue": "Осветљеност",
+       "exif-brightnessvalue": "APEX осветљеност",
        "exif-exposurebiasvalue": "Компензација експозиције",
        "exif-maxaperturevalue": "Највећи број отвора бленде",
        "exif-subjectdistance": "Удаљеност до објекта",
        "watchlistedit-normal-legend": "Уклањање наслова са списка надгледања",
        "watchlistedit-normal-explain": "Наслови на вашем списку надгледања су приказани испод.\nДа бисте уклонили наслов, означите кућицу до њега и кликните на „{{int:Watchlistedit-normal-submit}}“.\nМожете и да [[Special:EditWatchlist/raw|уредите сиров списак]].",
        "watchlistedit-normal-submit": "Уклони наслове",
-       "watchlistedit-normal-done": "{{PLURAL:$1|Једна страница је уклоњена|$1 странице су уклоњене|$1 страница је уклоњено}} с вашег списка надгледања:",
+       "watchlistedit-normal-done": "{{PLURAL:$1|1=Једна страница је уклоњена|$1 странице су уклоњене|$1 страница је уклоњено}} с вашег списка надгледања:",
        "watchlistedit-raw-title": "Измени сиров списак надгледања",
        "watchlistedit-raw-legend": "Измени сиров списак надгледања",
        "watchlistedit-raw-explain": "Наслови са списка надгледања су приказани испод и могу се уређивати додавањем или уклањањем ставки са списка;\nједан наслов по реду.\nКада завршите, кликните на „{{int:Watchlistedit-raw-submit}}“.\nМожете да [[Special:EditWatchlist|користите и обичан уређивач]].",
        "watchlistedit-raw-titles": "Наслови:",
        "watchlistedit-raw-submit": "Ажурирај списак",
        "watchlistedit-raw-done": "Ваш списак надгледања је ажуриран.",
-       "watchlistedit-raw-added": "{{PLURAL:$1|Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:",
+       "watchlistedit-raw-added": "{{PLURAL:$1|1=Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 наслов је уклоњен|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:",
        "watchlistedit-clear-title": "Испразни списак надгледања",
        "watchlistedit-clear-legend": "Испразни списак надгледања",
        "watchlistedit-clear-submit": "Испразни списак надгледања (Ово је трајно!)",
        "watchlistedit-clear-done": "Ваш списак надгледања је испражњен.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|1 наслов је уклоњен|$1 наслова је уклоњено}}:",
-       "watchlisttools-clear": "испразни списак ндгледања",
+       "watchlisttools-clear": "иÑ\81пÑ\80азни Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа",
        "watchlisttools-view": "прикажи сродне измене",
        "watchlisttools-edit": "прикажи и уреди списак надгледања",
        "watchlisttools-raw": "измени сиров списак надгледања",
index 89d2c88..cc1c11e 100644 (file)
@@ -34,6 +34,7 @@
        "tog-watchdefault": "Dodaj stranice i datoteke koje izmenim u spisak nadgledanja",
        "tog-watchmoves": "Dodaj stranice i datoteke koje premestim u spisak nadgledanja",
        "tog-watchdeletion": "Dodaj stranice i datoteke koje obrišem u spisak nadgledanja",
+       "tog-watchrollback": "Dodaj stranice na kojima sam vratio izmene u spisak nadgledanja",
        "tog-minordefault": "Označavaj sve izmene kao manje",
        "tog-previewontop": "Prikaži pregled pre okvira za uređivanje",
        "tog-previewonfirst": "Prikaži pregled na prvoj izmeni",
        "viewsourcetext": "Možete čitati i kopirati sadržaj ove stranice:",
        "viewyourtext": "Možete da pogledate i umnožite izvor '''vaših izmena''' na ovoj stranici:",
        "protectedinterface": "Ova stranica sadrži tekst korisničkog okruženja za softver na ovom vikiju i zaštićena je radi sprečavanja zloupotrebe.\nDa biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.",
-       "editinginterface": "'''Upozorenje:''' uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.\nIzmene na ovoj stranici će uticati na sve korisnike ovog vikija.\nDa biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Translejtviki], projekat za lokalizaciju Medijavikija.",
+       "editinginterface": "<strong>Upozorenje:</strong> uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.\nIzmene na ovoj stranici će uticati na sve korisnike ovog vikija.\nDa biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.",
        "cascadeprotected": "Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:\n$2",
        "namespaceprotected": "Nemate dozvolu da uređujete stranice u imenskom prostoru '''$1'''.",
        "customcssprotected": "Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.",
        "eauthentsent": "Na navedenu e-adresu je poslat potvrdni kod.\nPre nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da ste vi otvorili nalog.",
        "throttled-mailpassword": "Poruka za promenu lozinke je poslata u {{PLURAL:$1|poslednjih sat vremena|poslednja $1 sata|poslednjih $1 sati}}.\nDa bismo sprečili zloupotrebu, podsetnik šaljemo samo jednom u roku od {{PLURAL:$1|sat vremena|$1 sata|$1 sati}}.",
        "mailerror": "Greška pri slanju poruke: $1",
-       "acct_creation_throttle_hit": "Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|jedan nalog|$1 naloga|$1 naloga}} prethodni dan, što je najveći dozvoljeni broj u tom vremenskom periodu.\nZbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.",
+       "acct_creation_throttle_hit": "Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|1=jedan nalog|$1 naloga|$1 naloga}} prethodni dan, što je najveći dozvoljeni broj u tom vremenskom periodu.\nZbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.",
        "emailauthenticated": "Vaša e-adresa je potvrđena $2 u $3.",
        "emailnotauthenticated": "Vaša e-adresa još nije potvrđena.\nPoruke neće biti poslate ni u jednom od sledećih slučajeva.",
        "noemailprefs": "Unesite e-adresu kako bi ove mogućnosti radile.",
        "preview": "Pregled",
        "showpreview": "Prikaži pretpregled",
        "showdiff": "Prikaži izmene",
+       "blankarticle": "<strong>Upozorenje:</strong> stranica koju pravite nema nikakav sadržaj.\nAko još jednom pritisnete „{{int:savearticle}}“ napravićete stranicu bez sadržaja.",
        "anoneditwarning": "'''Upozorenje:''' niste prijavljeni.\nVaša IP adresa će biti zabeležena u istoriji ove stranice.",
        "anonpreviewwarning": "''Niste prijavljeni. Vaša IP adresa će biti zabeležena u istoriji ove stranice.''",
        "missingsummary": "'''Napomena:''' niste uneli opis izmene.\nAko ponovo kliknete na „{{int:savearticle}}“, vaša izmena će biti sačuvana bez opisa.",
        "undo-failure": "Ova izmena se ne može poništiti zbog sukoba izmena.",
        "undo-norev": "Ne mogu da vratim izmenu jer ne postoji ili je obrisana.",
        "undo-nochange": "Izgleda da je izmena već poništena.",
-       "undo-summary": "Poništena izmena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])",
+       "undo-summary": "Poništena izmena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contribs/$2|$2]] ([[User talk:$2|razgovor]])",
        "undo-summary-username-hidden": "Poništi izmenu $1 skrivenog korisnika",
        "cantcreateaccounttitle": "Ne mogu da otvorim nalog",
        "cantcreateaccount-text": "Otvaranje naloga s ove IP adrese ('''$1''') je {{GENDER:$3|blokirao|blokirala|blokirao}} [[User:$3|$3]].\n\nRazlog koji je naveo {{GENDER:$3|korisnik|korisnica|korisnik}} $3 je ''$2''",
        "searchprofile-advanced-tooltip": "Pretražite prilagođene imenske prostore",
        "search-result-size": "$1 ({{PLURAL:$2|1 reč|$2 reči|$2 reč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": "Relevantnost: $1%",
        "search-redirect": "(preusmerenje $1)",
        "search-section": "(odeljak $1)",
        "search-suggest": "Da li ste mislili na: $1",
        "action-rollback": "brzo vraćanje izmena poslednjeg korisnika koji je menjao određenu stranicu",
        "action-import": "uvoženje stranica iz drugih vikija",
        "action-importupload": "uvoženje stranica iz otpremljene datoteke",
-       "action-patrol": "označavanje tuđih izmena pregledanim",
+       "action-patrol": "označavanje tuđih izmena patroliranim",
        "action-autopatrol": "označavanje sopstvenih izmena patroliranim",
        "action-unwatchedpages": "pregledanje spiska nenadgledanih stranica",
        "action-mergehistory": "spajanje istorije ove stranice",
        "uploadwarning": "Upozorenje pri otpremanju",
        "uploadwarning-text": "Izmenite opis datoteke i pokušajte ponovo.",
        "savefile": "Sačuvaj datoteku",
-       "uploadedimage": "je poslao „[[$1]]“",
-       "overwroteimage": "je poslao novu verziju datoteke „[[$1]]“",
        "uploaddisabled": "Otpremanje je onemogućeno.",
        "copyuploaddisabled": "Slanje putem URL adrese je onemogućeno.",
        "uploaddisabledtext": "Otpremanje datoteka je onemogućeno.",
        "cachedspecial-viewing-cached-ts": "Gledate keširanu verziju ove stranice, koja može da se razlikuje od trenutne.",
        "cachedspecial-refresh-now": "Pogledaj najnoviju.",
        "categories": "Kategorije",
-       "categoriespagetext": "{{PLURAL:$1|Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.\nPogledajte i [[Special:WantedCategories|tražene kategorije]].",
+       "categoriespagetext": "{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.\n[[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.\nPogledajte i [[Special:WantedCategories|tražene kategorije]].",
        "categoriesfrom": "Prikaži kategorije počev od:",
        "special-categories-sort-count": "poređaj po broju",
        "special-categories-sort-abc": "poređaj po azbučnom redu",
        "deletepage": "Obriši stranicu",
        "confirm": "Potvrdi",
        "excontent": "sadržaj je bio: „$1“",
-       "excontentauthor": "sadržaj je bio: „$1“ (a jedini urednik je bio „[[Special:Contributions/$2|$2]]“)",
+       "excontentauthor": "sadržaj je bio: „$1“ (a jedini urednik je bio „[[Special:Contribs/$2|$2]]“)",
        "exbeforeblank": "sadržaj pre brisanja je bio: „$1“",
        "delete-confirm": "Brisanje stranice „$1“",
        "delete-legend": "Obriši",
        "cantrollback": "Ne mogu da vratim izmenu.\nPoslednji autor je ujedno i jedini.",
        "alreadyrolled": "Vraćanje poslednje izmene stranice [[:$1]] od strane {{GENDER:$2|korisnika|korisnice|korisnika}} [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmenio ili vratio stranicu.\n\nPoslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Opis izmene: „''$1''“.",
-       "revertpage": "Vraćene izmene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]",
+       "revertpage": "Vraćene izmene [[Special:Contribs/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]",
        "revertpage-nouser": "Vraćene su izmene skrivenog korisnika na poslednju izmenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]",
        "rollback-success": "Vraćene su izmene {{GENDER:$1|korisnika|korisnice}} $1\nna poslednju izmenu {{GENDER:$2|korisnika|korisnice}} $2.",
        "sessionfailure-title": "Sesija je okončana",
        "expiringblock": "ističe $1 u $2",
        "anononlyblock": "samo anonimni",
        "noautoblockblock": "automatsko blokiranje je onemogućeno",
-       "createaccountblock": "otvaranje naloga je blokirano",
+       "createaccountblock": "otvaranje naloga je onemogućeno",
        "emailblock": "e-pošta je blokirana",
        "blocklist-nousertalk": "zabranjeno uređivanje sopstvene stranice za razgovor",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "exif-isospeedratings": "ISO osetljivost na svetlo",
        "exif-shutterspeedvalue": "Brzina zatvarača",
        "exif-aperturevalue": "Otvor blende",
-       "exif-brightnessvalue": "Osvetljenost",
+       "exif-brightnessvalue": "APEX osvetljenost",
        "exif-exposurebiasvalue": "Kompenzacija ekspozicije",
        "exif-maxaperturevalue": "Najveći broj otvora blende",
        "exif-subjectdistance": "Udaljenost do objekta",
        "autosumm-replace": "Zamena sadržaja stranice sa „$1“",
        "autoredircomment": "Preusmerenje na [[$1]]",
        "autosumm-new": "Nova stranica: $1",
+       "autosumm-newblank": "Napravljena prazna stranica",
        "size-bytes": "$1 B",
        "size-kilobytes": "$1 kB",
        "size-megabytes": "$1 MB",
        "watchlistedit-normal-legend": "Uklanjanje naslova sa spiska nadgledanja",
        "watchlistedit-normal-explain": "Naslovi na vašem spisku nadgledanja su prikazani ispod.\nDa biste uklonili naslov, označite kućicu do njega i kliknite na „{{int:Watchlistedit-normal-submit}}“.\nMožete i da [[Special:EditWatchlist/raw|uredite sirov spisak]].",
        "watchlistedit-normal-submit": "Ukloni naslove",
-       "watchlistedit-normal-done": "{{PLURAL:$1|Jedna stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} s vašeg spiska nadgledanja:",
+       "watchlistedit-normal-done": "{{PLURAL:$1|1=Jedna stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} s vašeg spiska nadgledanja:",
        "watchlistedit-raw-title": "Izmeni sirov spisak nadgledanja",
        "watchlistedit-raw-legend": "Izmeni sirov spisak nadgledanja",
        "watchlistedit-raw-explain": "Naslovi sa spiska nadgledanja su prikazani ispod i mogu se uređivati dodavanjem ili uklanjanjem stavki sa spiska;\njedan naslov po redu.\nKada završite, kliknite na „{{int:Watchlistedit-raw-submit}}“.\nMožete da [[Special:EditWatchlist|koristite i običan uređivač]].",
        "watchlistedit-raw-titles": "Naslovi:",
        "watchlistedit-raw-submit": "Ažuriraj spisak",
        "watchlistedit-raw-done": "Vaš spisak nadgledanja je ažuriran.",
-       "watchlistedit-raw-added": "{{PLURAL:$1|Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:",
+       "watchlistedit-raw-added": "{{PLURAL:$1|1=Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 naslov je uklonjen|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:",
        "watchlistedit-clear-title": "Isprazni spisak nadgledanja",
        "watchlistedit-clear-legend": "Isprazni spisak nadgledanja",
        "duplicate-defaultsort": "'''Upozorenje:''' podrazumevani ključ svrstavanja „$2“ menja nekadašnji ključ „$1“.",
        "version": "Verzija",
        "version-extensions": "Instalirana proširenja",
-       "version-skins": "Teme",
+       "version-skins": "Instalirane teme",
        "version-specialpages": "Posebne stranice",
        "version-parserhooks": "Kuke raščlanjivača",
        "version-variables": "Promenljive",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Poništava efekat <nowiki> tagova u prikazu članaka",
        "expand_templates_generate_xml": "Prikaži XML stablo",
-       "expand_templates_preview": "Prikaz"
+       "expand_templates_preview": "Prikaz",
+       "right-pagelang": "menjanje jezika stranice"
 }
index 66c348e..c607f55 100644 (file)
@@ -75,6 +75,7 @@
        "tog-watchdefault": "Lägg till sidor och filer jag redigerar i min bevakningslista",
        "tog-watchmoves": "Lägg till sidor och filer jag flyttar i min bevakningslista",
        "tog-watchdeletion": "Lägg till sidor och filer jag raderar i min bevakningslista",
+       "tog-watchrollback": "Lägg till sidor som jag har utfört en tillbakarullning på i min övervakningslista",
        "tog-minordefault": "Markera automatiskt ändringar som mindre",
        "tog-previewontop": "Visa förhandsgranskningen ovanför redigeringsrutan",
        "tog-previewonfirst": "Visa förhandsgranskning vid första redigeringen",
        "tog-prefershttps": "Använd alltid en säker anslutning när jag är inloggad",
        "underline-always": "Alltid",
        "underline-never": "Aldrig",
-       "underline-default": "Webbläsarens standardinställning",
+       "underline-default": "Webbläsarens eller utseendets standardinställning",
        "editfont-style": "Typsnitt i redigeringsrutan:",
        "editfont-default": "Webbläsarens standard",
        "editfont-monospace": "Fast bredd",
        "hidetoc": "göm",
        "collapsible-collapse": "Dölj",
        "collapsible-expand": "Visa",
+       "confirmable-confirm": "Är {{GENDER:$1|du}} säker?",
+       "confirmable-yes": "Ja",
+       "confirmable-no": "Nej",
        "thisisdeleted": "Visa eller återställ $1?",
        "viewdeleted": "Visa $1?",
        "restorelink": "{{PLURAL:$1|en raderad version|$1 raderade versioner}}",
        "searchprofile-advanced-tooltip": "Sök i vissa namnrymder",
        "search-result-size": "$1 ({{PLURAL:$2|1 ord|$2 ord}})",
        "search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmar}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
-       "search-result-score": "Relevans: $1%",
        "search-redirect": "(omdirigering $1)",
        "search-section": "(avsnitt $1)",
        "search-file-match": "(överensstämmer filens innehåll)",
        "uploadwarning": "Uppladdningsvarning",
        "uploadwarning-text": "Var god och ändra filbeskrivningen nedanför och försök igen.",
        "savefile": "Spara fil",
-       "uploadedimage": "laddade upp \"[[$1]]\"",
-       "overwroteimage": "laddade upp ny version av \"[[$1]]\"",
        "uploaddisabled": "Uppladdningsfunktionen är avstängd",
        "copyuploaddisabled": "Uppladdning med URL avstängt.",
        "uploaddisabledtext": "Uppladdning av filer är avstängd.",
        "nolicense": "Ingen angiven",
        "licenses-edit": "Redigera licensalternativ",
        "license-nopreview": "(Förhandsvisning är inte tillgänglig)",
-       "upload_source_url": " (en giltig URL som är allmänt åtkomlig)",
-       "upload_source_file": " (en fil på din dator)",
+       "upload_source_url": "(din valda fil från en giltig webbadress som är allmänt åtkomlig)",
+       "upload_source_file": "(din valda fil från din dator)",
        "listfiles-delete": "radera",
        "listfiles-summary": "Den här specialsidan visar alla filer som laddats upp.",
        "listfiles_search_for": "Sök efter filnamn:",
        "watchlist-details": "Du har {{PLURAL:$1|en sida|$1 sidor}} på din bevakningslista (diskussionssidor är inte separat medräknade).",
        "wlheader-enotif": "E-postmeddelanden är aktiverade.",
        "wlheader-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i '''fetstil.'''",
-       "wlnote": "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste '''$1''' ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste '''$2''' timmarna}} från den $3 kl. $4.",
+       "wlnote": "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste <strong>$1</strong> ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste <strong>$2</strong> timmarna}} från den $3 kl. $4.",
        "wlshowlast": "Visa senaste $1 timmarna $2 dygnen $3",
        "watchlist-options": "Alternativ för bevakningslistan",
        "watching": "Bevakar...",
        "logentry-rights-rights": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3 från $4 till $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|befordrades}} automatiskt från $4 till $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|laddade upp}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|laddade upp}} en ny version av $3",
+       "logentry-upload-revert": "$1 {{GENDER:$2|laddade upp}} $3",
        "rightsnone": "(inga)",
        "feedback-bugornote": "Om du är redo att beskriva ett tekniskt problem detaljerat, var god [$1 rapporterar en bugg].\nAnnars kan du använda det enkla formuläret nedan. Din kommentar kommer att läggas till på sidan \"[$3 $2]\", tillsammans med ditt användarnamn och vilken webbläsare du använder.",
        "feedback-subject": "Ämne:",
        "action-pagelang": "ändra sidspråket",
        "log-name-pagelang": "Språkändringslogg",
        "log-description-pagelang": "Detta är en logg över ändringar i sidspråken.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5.",
+       "default-skin-not-found": "Ojsan! Standardutseendet för din wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, är inte tillgängligt.\n\nDin installation verkar innehålla följande utseenden. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur dessa aktiveras och hur standard väljs.\n\n$2\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta.\n:* Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog].\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code>skins/</code>-katalogen från den.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare.\n\n; Om du precis har uppgraderat MediaWiki:\n: MediaWiki 1.24 och nyare aktiverar ej längre automatiskt utseenden (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Automatisk identifiering av utseenden]). Du kan klistra in följande rader i <code>LocalSettings.php</code> för att aktivera alla för närvarande installerade utseenden:\n\n<pre>$3</pre>\n\n; Om du precis har ändrat i <code>LocalSettings.php</code>:\n: Dubbelkolla namnen för utseendena för att identifiera stavfel.",
+       "default-skin-not-found-no-skins": "Ojsan! Standardutseendet för din wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, är inte tillgängligt.\n\nDu har inga installerade utseenden.\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta.\n:* Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog].\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code>skins/</code>-katalogen från den.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur utseenden aktiveras och hur standardutseendet väljs.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiverad)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''inaktiverad''')"
 }
index 61e3cf9..8aa5a8b 100644 (file)
        "file-deleted-duplicate": "Identyczny plik jak tyn plik ([[:$1]]) zostoł wyćepany. Sprowdź historyja wyćepań tamtygo plika ńim wćepńesz go nazod.",
        "uploadwarning": "Uostřežyńe uo wćepywańu",
        "savefile": "Spamjyntej plik",
-       "uploadedimage": "wćepano \"[[$1]]\"",
-       "overwroteimage": "wćepano nowszo wersyjo \"[[$1]]\"",
        "uploaddisabled": "Wćepywanie sam plikůw je zawarte",
        "uploaddisabledtext": "Wćepywańe plikůw je zawarte.",
        "uploadscripted": "Tyn plik zawjyro kod HTML abo skrypt kery može zostać felerńe zinterpretowany bez přyglůndarka internetowo.",
index 9698a35..9063d93 100644 (file)
        "uploadwarning": "பதிவேற்றல் எச்சரிக்கை",
        "uploadwarning-text": "கீழுள்ள கோப்புச் சுருக்கத்தை மாற்றி விட்டு மீண்டும் சமர்ப்பியுங்கள்",
        "savefile": "கோப்பைச் சேமி",
-       "uploadedimage": "\"[[$1]]\" பதிவேற்றப்பட்டது",
-       "overwroteimage": "\"[[$1]]\" கோப்பின் புதிய பதிப்பை பதிவேற்று",
        "uploaddisabled": "பதிவேற்றம் செயலிழக்கச் செய்யப்பட்டுள்ளது",
        "copyuploaddisabled": "URL வழியாக தகவலேற்றல் முடக்கப்பட்டுள்ளது.",
        "uploaddisabledtext": "கோப்பு பதிவேற்றங்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன.",
index 7858c2a..c9f1b95 100644 (file)
@@ -37,6 +37,7 @@
        "tog-watchdefault": "เพิ่มหน้าและไฟล์ที่ฉันแก้ไขเข้ารายการเฝ้าดู",
        "tog-watchmoves": "เพิ่มและไฟล์ที่ฉันเปลี่ยนชื่อเข้ารายการเฝ้าดู",
        "tog-watchdeletion": "เพิ่มหน้าและไฟล์ที่ฉันลบเข้ารายการเฝ้าดู",
+       "tog-watchrollback": "เพิ่มหน้าที่ฉันย้อนกลับฉุกเฉินเข้ารายการเฝ้าดู",
        "tog-minordefault": "กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
        "tog-previewontop": "ให้ตัวอย่างการแก้ไขแสดงก่อนกล่องแก้ไข",
        "tog-previewonfirst": "แสดงตัวอย่างการแก้ไขสำหรับการแก้ไขครั้งแรก",
@@ -63,9 +64,9 @@
        "tog-prefershttps": "ใช้การเชื่อมต่อปลอดภัยทุกครั้งเมื่อล็อกอิน",
        "underline-always": "ทุกครั้ง",
        "underline-never": "ไม่",
-       "underline-default": "à¸\84à¹\88าà¸\95ัà¹\89à¸\87à¸\95à¹\89à¸\99ของหน้าตาหรือเบราว์เซอร์",
+       "underline-default": "à¸\84à¹\88าà¹\82à¸\94ยà¸\9bริยายของหน้าตาหรือเบราว์เซอร์",
        "editfont-style": "รูปแบบชุดแบบอักษรในพื้นที่แก้ไข:",
-       "editfont-default": "à¸\84à¹\88าà¸\95ัà¹\89à¸\87à¸\95à¹\89à¸\99ของเบราว์เซอร์",
+       "editfont-default": "à¸\84à¹\88าà¹\82à¸\94ยà¸\9bริยายของเบราว์เซอร์",
        "editfont-monospace": "ชุดอักษรแบบความกว้างคงที่",
        "editfont-sansserif": "ชุดอักษรแบบไม่มีเชิง",
        "editfont-serif": "ชุดอักษรแบบมีเชิง",
        "hidetoc": "ซ่อน",
        "collapsible-collapse": "ยุบ",
        "collapsible-expand": "ขยาย",
+       "confirmable-confirm": "คุณแน่ใจหรือ",
+       "confirmable-yes": "ใช่",
+       "confirmable-no": "ไม่",
        "thisisdeleted": "ดูหรือกู้คืน $1 หรือไม่",
        "viewdeleted": "ดู $1 หรือไม่",
        "restorelink": "$1 การแก้ไขที่ถูกลบ",
        "media_sample": "ตัวอย่าง.ogg",
        "media_tip": "เชื่อมโยงไฟล์",
        "sig_tip": "ลายเซ็นของคุณพร้อมตราเวลา",
-       "hr_tip": "à¹\80สà¹\89à¸\99à¸\99อà¸\99 (à¹\82à¸\9bรà¸\94à¹\83à¸\8aà¹\89อยà¹\88าà¸\87à¸\88ำà¸\81ัà¸\94)",
+       "hr_tip": "เส้นนอน (ใช้อย่างจำกัด)",
        "summary": "คำอธิบายโดยย่อ:",
-       "subject": "หัวข้อ:",
+       "subject": "หัวข้อ/พาดหัว:",
        "minoredit": "เป็นการแก้ไขเล็กน้อย",
        "watchthis": "เฝ้าดูหน้านี้",
        "savearticle": "บันทึก",
        "preview": "ตัวอย่าง",
        "showpreview": "ดูตัวอย่าง",
        "showdiff": "แสดงความเปลี่ยนแปลง",
+       "blankarticle": "<strong>คำเตือน:</strong> หน้าที่คุณกำลังสร้างว่าง หากคุณคลิก \"{{int:savearticle}}\" อีกครั้ง จะสร้างหน้าโดยไม่มีเนื้อหาใด",
        "anoneditwarning": "'''คำเตือน:''' คุณมิได้ล็อกอิน เลขที่อยู่ไอพีของคุณจะถูกบันทึกไว้ในประวัติการแก้ไขของหน้านี้",
        "anonpreviewwarning": "'''คุณมิได้ล็อกอิน การบันทึกจะเก็บเลขที่อยู่ไอพีของคุณในประวัติการแก้ไขของหน้านี้'''",
        "missingsummary": "'''อย่าลืม:''' คุณยังไม่ได้ระบุคำอธิบายการแก้ไข ถ้าคุณกด \"บันทึก\" อีกครั้ง การแก้ไขของคุณจะถูกบันทึกโดยไม่มีคำอธิบายการแก้ไข",
        "accmailtext": "รหัสผ่านแบบสุ่มของ [[User talk:$1|$1]] ถูกส่งไปยัง $2 แล้ว สามารถเปลี่ยนรหัสผ่านในหน้า''[[Special:ChangePassword|เปลี่ยนรหัสผ่าน]]'' หลังล็อกอิน",
        "newarticle": "(ใหม่)",
        "newarticletext": "คุณตามลิงก์ไปยังหน้าที่ยังไม่มีในขณะนี้\nในการสร้างหน้า เริ่มพิมพ์ในกล่องด้านล่าง (ดูข้อมูลเพิ่มเติมใน[$1 หน้าคำอธิบาย])\nถ้าคุณเข้ามาหน้านี้โดยผิดพลาด ให้กดปุ่ม'''ถอยหลัง''' (back) ของเบราว์เซอร์",
-       "anontalkpagetext": "----''หน้านี้เป็นหน้าคุยกับผู้ใช้สำหรับผู้ใช้นิรนามซึ่งยังไม่ได้สร้างบัญชีหรือไม่ได้ล็อกอิน\nดังนั้นเราจึงระบุตัวตนโดยใช้เลขที่อยู่ไอพีแทน\nเลขที่อยู่ไอพีนี้อาจมีผู้ใช้ร่วมกันหลายคน\nถ้าคุณเป็นผู้ใช้นิรนาม และรู้สึกว่าความเห็นที่คุณได้รับไม่เกี่ยวข้องกับคุณแต่อย่างใด กรุณา[[Special:UserLogin/signup|สร้างบัญชีผู้ใช้]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่น''",
-       "noarticletext": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88มีà¹\80à¸\99ืà¹\89อหาในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
-       "noarticletext-nopermission": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88มีà¹\80à¸\99ืà¹\89อหาในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span> แต่คุณไม่มีสิทธิสร้างหน้านี้",
+       "anontalkpagetext": "----\n<em>หน้านี้เป็นหน้าคุยกับผู้ใช้สำหรับผู้ใช้นิรนามซึ่งยังไม่ได้สร้างบัญชีหรือไม่ได้ล็อกอิน</em>\nดังนั้นเราจึงระบุตัวตนโดยใช้เลขที่อยู่ไอพีแทน\nเลขที่อยู่ไอพีนี้อาจมีผู้ใช้ร่วมกันหลายคน\nถ้าคุณเป็นผู้ใช้นิรนาม และรู้สึกว่าคุณได้รับความเห็นที่ไม่เกี่ยวข้อง กรุณา[[Special:UserLogin/signup|สร้างบัญชี]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่นในอนาคต",
+       "noarticletext": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88มีà¸\82à¹\89อà¸\84วามในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
+       "noarticletext-nopermission": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88มีà¸\82à¹\89อà¸\84วามในหน้านี้\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}}}} ปูมการลบ]",
        "userpage-userdoesnotexist": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน \nกรุณาตรวจสอบหากคุณต้องการสร้าง/แก้ไขหน้านี้",
        "userpage-userdoesnotexist-view": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน",
        "edit-gone-missing": "ไม่สามารถอัปเดตหน้าดังกล่าวได้\nเนื่องจากหน้านี้ถูกลบไปแล้ว",
        "edit-conflict": "แก้ชนกัน",
        "edit-no-change": "การแก้ไขของคุณถูกเพิกเฉย เพราะไม่มีการเปลี่ยนแปลงใด ๆ",
-       "postedit-confirmation-created": "หà¸\99à¹\89าà¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99",
+       "postedit-confirmation-created": "หà¸\99à¹\89าà¸\96ูà¸\81สรà¹\89าà¸\87à¹\81ลà¹\89ว",
        "postedit-confirmation-restored": "หน้าถูกกู้คืน",
        "postedit-confirmation-saved": "บันทึกการแก้ไขของคุณแล้ว",
        "edit-already-exists": "ไม่สามารถสร้างหน้าใหม่ได้\nเพราะมีหน้านี้แล้ว",
        "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-file-match": "(จับคู่เนื้อหาไฟล์)",
        "right-browsearchive": "ค้นหาหน้าที่ถูกลบ",
        "right-undelete": "กู้คืนหน้า",
        "right-suppressrevision": "ดูรุ่นต่าง ๆ หรือ ซ่อน/เลิกซ่อนรุ่นที่กำหนดจากผู้ใช้ใด ๆ",
+       "right-viewsuppressed": "ดูรุนที่ถูกซ่อนจากผู้ใช้อื่น",
        "right-suppressionlog": "ดูปูมส่วนตัว",
        "right-block": "บล็อกมิให้ผู้ใช้อื่นแก้ไข",
        "right-blockemail": "บล็อกมิให้ผู้ใช้ส่งอีเมล",
        "uploadwarning": "คำเตือนการอัปโหลด",
        "uploadwarning-text": "กรุณาแก้ไขคำอธิบายไฟล์ด้านล่างนี้ แล้วลองใหม่อีกครั้ง",
        "savefile": "บันทึกไฟล์",
-       "uploadedimage": "อัปโหลด \"[[$1]]\"",
-       "overwroteimage": "อัปโหลดรุ่นใหม่ของ \"[[$1]]\"",
        "uploaddisabled": "ปิดใช้งานการอัปโหลด",
        "copyuploaddisabled": "ปิดใช้งานการอัปโหลดโดยยูอาร์แอล",
        "uploaddisabledtext": "ปิดใช้งานการอัปโหลดไฟล์",
        "license-header": "การอนุญาตใช้สิทธิ",
        "nolicense": "ไม่ได้เลือก",
        "license-nopreview": "(ไม่สามารถแสดงตัวอย่าง)",
-       "upload_source_url": " (ยูอาร์แอลถูกต้องที่สาธารณะสามารถเข้าถึงได้)",
-       "upload_source_file": " (ไฟล์จากคอมพิวเตอร์คุณ)",
+       "upload_source_url": "(ไฟล์ที่คุณเลือกจากยูอาร์แอลที่สมเหตุสมผลและสาธารณะเข้าถึงได้)",
+       "upload_source_file": "(ไฟล์ที่คุณเลือกจากคอมพิวเตอร์ของคุณ)",
+       "listfiles-delete": "ลบ",
        "listfiles-summary": "หน้าพิเศษนี้แสดงไฟล์ทั้งหมดที่อัปโหลด",
        "listfiles_search_for": "ค้นหาชื่อสื่อ:",
        "imgfile": "ไฟล์",
        "autosumm-replace": "แทนที่ข้อความทั้งหมดด้วย '$1'",
        "autoredircomment": "เปลี่ยนทางไปที่ [[$1]]",
        "autosumm-new": "หน้าที่ถูกสร้างด้วย '$1'",
+       "autosumm-newblank": "สร้างหน้าว่าง",
        "size-bytes": "$1 ไบต์",
        "size-kilobytes": "$1 กิโลไบต์",
        "size-megabytes": "$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 อัปโหลด $3",
+       "logentry-upload-overwrite": "$1 อัปโหลดรุ่นใหม่ของ $3",
+       "logentry-upload-revert": "$1 อัปโหลด $3",
        "rightsnone": "(ไม่มี)",
        "feedback-bugornote": "หากคุณได้อธิบายปัญหาทางเทคนิคในรายละเอียดแล้ว โปรด[$1 รายงานจุดบกพร่อง]\nมิฉะนั้น คุณสามารถแบบอย่างง่ายด้านล่าง ความเห็นของคุณจะถูกเพิ่มเข้าสู่ \"[$3 $2]\" ร่วมกับชื่อผู้ใช้ของคุณ",
        "feedback-subject": "เรื่อง:",
        "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": "ปูมการเปลี่ยนภาษา",
+       "log-description-pagelang": "นี่คือปูมการเปลี่ยนภาษาหน้า",
+       "logentry-pagelang-pagelang": "$1 เปลี่ยนภาษาของ $3 จาก $4 เป็น $5",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (เปิดใช้งาน)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ปิดใช้งาน''')"
 }
index 82f0cef..24de905 100644 (file)
        "versionrequiredtext": "Bu sayfayı kullanmak için MediaWiki'nin $1 sürümü gerekmektedir. [[Special:Version|Sürüm sayfasına]] bakınız.",
        "ok": "Tamam",
        "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "←$1",
        "retrievedfrom": "\"$1\" adresinden alındı.",
        "youhavenewmessages": "$1 {{PLURAL:$3|var}} ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).",
        "hidetoc": "gizle",
        "collapsible-collapse": "Daralt",
        "collapsible-expand": "Genişlet",
+       "confirmable-confirm": "Emin misiniz?",
+       "confirmable-yes": "Evet",
+       "confirmable-no": "Hayır",
        "thisisdeleted": "$1 görmek veya geri getirmek istermisiniz?",
        "viewdeleted": "$1 gör?",
        "restorelink": "{{PLURAL:$1|bir silinmiş değişikliği|$1 silinmiş değişikliği}}",
        "searchprofile-advanced-tooltip": "Özel ad alanlarında ara",
        "search-result-size": "$1 ({{PLURAL:$2|1 kelime|$2 kelime}})",
        "search-result-category-size": "{{PLURAL:$1|1 üye|$1 üye}} ({{PLURAL:$2|1 altkategori|$2 altkategori}}, {{PLURAL:$3|1 dosya|$3 dosya}})",
-       "search-result-score": "Uygunluk: $1%",
        "search-redirect": "($1 sayfasından yönlendirme)",
        "search-section": "($1 bölümü)",
        "search-file-match": "(dosya içeriğiyle eşleşiyor)",
        "uploadwarning": "Yükleme uyarısı",
        "uploadwarning-text": "Lütfen aşağıdaki dosya açıklamasını değiştirin ve tekrar deneyin.",
        "savefile": "Dosyayı kaydet",
-       "uploadedimage": "Yüklenen: \"[[$1]]\"",
-       "overwroteimage": "\"[[$1]]\" resminin yeni sürümü yüklenmiştir",
        "uploaddisabled": "Geçici olarak şu anda herhangi bir dosya yüklenmez. Biraz sonra bir daha deneyiniz.",
        "copyuploaddisabled": "URL ile yükleme devre dışı.",
        "uploaddisabledtext": "Dosya yüklemeleri devredışı bırakılmıştır.",
        "license-header": "Lisanslama",
        "nolicense": "Hiçbirini seçme",
        "license-nopreview": "(Önizleme etkin değil)",
-       "upload_source_url": " (geçerli, herkesin ulaşabileceği bir URL)",
-       "upload_source_file": " (bilgisayarınızdaki bir dosya)",
+       "upload_source_url": "(geçerli, herkesin ulaşabileceği bir URL'den seçtiğiniz dosya)",
+       "upload_source_file": "(bilgisayarınızdan seçtiğiniz dosya)",
        "listfiles-delete": "sil",
        "listfiles-summary": "Bu özel sayfa yüklenen tüm dosyaları gösterir.",
        "listfiles_search_for": "Medya adı ara:",
index 6a640c8..8e9e18e 100644 (file)
                        "Максим Підліснюк",
                        "Тест",
                        "아라",
-                       "Calak"
+                       "Calak",
+                       "Mykola Swarnyk"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "tog-hideminor": "Приховати незначні редагування у списку останніх змін",
        "tog-hidepatrolled": "Приховувати патрульовані редагування у списку нових редагувань",
        "tog-newpageshidepatrolled": "Приховувати патрульовані сторінки у списку нових сторінок",
-       "tog-extendwatchlist": "Розширений список спостереження, що містить усі зміни, а не лише останню",
-       "tog-usenewrc": "Ð\9dа Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85 Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96ни Ñ\82а Ñ\81пиÑ\81кÑ\83 Ñ\81Ñ\82оÑ\81Ñ\82еÑ\80еженнÑ\8f Ð³Ñ\80Ñ\83пÑ\83ваÑ\82и Ñ\80едагÑ\83вання",
+       "tog-extendwatchlist": "Розгорнути список спостереження, щоб показати всі зміни, а не лише останні",
+       "tog-usenewrc": "Ð\93Ñ\80Ñ\83пÑ\83ваÑ\82и Ñ\80едагÑ\83ваннÑ\8f Ð½Ð° Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85 Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н Ñ\82а Ñ\81пиÑ\81кÑ\83 Ñ\81поÑ\81Ñ\82еÑ\80еження",
        "tog-numberheadings": "Автоматично нумерувати заголовки",
        "tog-showtoolbar": "Показувати панель інструментів",
-       "tog-editondblclick": "РедагÑ\83ваÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¿Ñ\80и Ð¿Ð¾Ð´Ð²Ñ\96йномÑ\83 ÐºÐ»Ð°Ñ\86аннÑ\96 Ð¼Ð¸Ñ\88коÑ\8e",
-       "tog-editsectiononrightclick": "РедагÑ\83ваÑ\82и Ñ\80оздÑ\96ли Ð¿Ñ\80и ÐºÐ»Ð°Ñ\86аннÑ\96 Ð¿Ñ\80авоÑ\8e ÐºÐ½Ð¾Ð¿ÐºÐ¾Ñ\8e Ð¼Ð¸Ñ\88ки Ð½Ð° Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ðºу",
+       "tog-editondblclick": "Ð\9fеÑ\80ейÑ\82и Ð² Ñ\80ежим Ñ\80едагÑ\83ваннÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¿Ð¾Ð´Ð²Ñ\96йним ÐºÐ»Ð°Ñ\86аннÑ\8fм Ð¼Ð¸Ñ\88ки",
+       "tog-editsectiononrightclick": "Ð\9fеÑ\80ейÑ\82и Ð² Ñ\80ежим Ñ\80едагÑ\83ваннÑ\8f Ñ\80оздÑ\96лÑ\83 ÐºÐ»Ð°Ñ\86аннÑ\8fм Ð¿Ñ\80авоÑ\8e ÐºÐ½Ð¾Ð¿ÐºÐ¾Ñ\8e Ð¼Ð¸Ñ\88ки Ð½Ð° Ð½Ð°Ð·Ð²Ñ\83 Ñ\80оздÑ\96лу",
        "tog-watchcreations": "Додавати створені мною сторінки і завантажені мною файли до мого списку спостереження",
        "tog-watchdefault": "Додавати змінені мною сторінки та файли до мого списку спостереження",
        "tog-watchmoves": "Додавати перейменовані мною сторінки та файли до мого списку спостереження",
        "tog-watchdeletion": "Додавати вилучені мною сторінки та файли до мого списку спостереження",
+       "tog-watchrollback": "Додавати відкочені мною сторінки до мого списку спостереження",
        "tog-minordefault": "Спочатку позначати всі зміни незначними",
        "tog-previewontop": "Показувати попередній перегляд перед вікном редагування, а не після",
        "tog-previewonfirst": "Показувати попередній перегляд під час першого редагування",
        "tog-enotifwatchlistpages": "Повідомляти електронною поштою про зміну сторінки або файлу з мого списку спостереження",
-       "tog-enotifusertalkpages": "Повідомляти електронною поштою про зміну моєї сторінки обговорення",
+       "tog-enotifusertalkpages": "Повідомляти електронною поштою про зміни на моїй сторінці обговорення",
        "tog-enotifminoredits": "Надсилати мені електронного листа навіть при незначних редагуваннях сторінок та файлів",
        "tog-enotifrevealaddr": "Показувати мою поштову адресу в повідомленнях",
        "tog-shownumberswatching": "Показувати число користувачів, які додали сторінку до свого списку спостереження",
        "tog-oldsig": "Існуючий підпис:",
-       "tog-fancysig": "Ð\92лаÑ\81на Ð²Ñ\96кÑ\96\80озмÑ\96Ñ\82ка Ð¿Ñ\96дпиÑ\81Ñ\83 (без автоматичного посилання)",
+       "tog-fancysig": "СпÑ\80иймаÑ\82и Ð¿Ñ\96дпиÑ\81 Ñ\8fк Ð²Ñ\96кÑ\96\82екÑ\81Ñ\82 (без автоматичного посилання)",
        "tog-uselivepreview": "Використовувати швидкий попередній перегляд (експериментально)",
        "tog-forceeditsummary": "Попереджати, коли не зазначений короткий опис редагування",
        "tog-watchlisthideown": "Приховати мої редагування у списку спостереження",
@@ -81,7 +83,7 @@
        "tog-watchlisthideminor": "Приховати незначні редагування у списку спостереження",
        "tog-watchlisthideliu": "Приховати редагування зареєстрованих дописувачів у списку спостереження",
        "tog-watchlisthideanons": "Приховати редагування анонімних користувачів у списку спостереження",
-       "tog-watchlisthidepatrolled": "Приховувати патрульовані редагування у списку спостереження",
+       "tog-watchlisthidepatrolled": "Приховати відпатрульовані правки у списку спостереження",
        "tog-ccmeonemails": "Надсилати мені копії листів, які я надсилаю іншим користувачам",
        "tog-diffonly": "Не показувати вміст сторінки під різницею версій",
        "tog-showhiddencats": "Показувати приховані категорії",
        "november-date": "$1 листопада",
        "december-date": "$1 грудня",
        "pagecategories": "{{PLURAL:$1|1=Категорія|Категорії|Категорій}}",
-       "category_header": "СÑ\82оÑ\80Ñ\96нки в категорії «$1»",
+       "category_header": "СÑ\82оÑ\80Ñ\96нок в категорії «$1»",
        "subcategories": "Підкатегорії",
        "category-media-header": "Файли в категорії «$1»",
        "category-empty": "''Ця категорія зараз порожня.''",
        "deletethispage": "Вилучити цю сторінку",
        "undeletethispage": "Відновити цю сторінку",
        "undelete_short": "Відновити $1 {{PLURAL:$1|редагування|редагування|редагувань}}",
-       "viewdeleted_short": "Переглянути {{PLURAL:$1|одне вилучене редагування|$1 вилучених редагування|$1 вилучених редагувань}}",
+       "viewdeleted_short": "Переглянути {{PLURAL:$1|одне вилучене редагування|$1 вилучені редагування|$1 вилучених редагувань}}",
        "protect": "Захистити",
        "protect_change": "змінити",
        "protectthispage": "Захистити цю сторінку",
-       "unprotect": "Ð\97мÑ\96на Ð·Ð°Ñ\85иÑ\81Ñ\82Ñ\83",
-       "unprotectthispage": "Ð\97мÑ\96на Ð·Ð°Ñ\85иÑ\81Ñ\82Ñ\83 цієї сторінки",
+       "unprotect": "Ð\97мÑ\96ниÑ\82и Ð·Ð°Ñ\85иÑ\81Ñ\82",
+       "unprotectthispage": "Ð\97мÑ\96ниÑ\82и Ð·Ð°Ñ\85иÑ\81Ñ\82 цієї сторінки",
        "newpage": "Нова сторінка",
        "talkpage": "Обговорити цю сторінку",
        "talkpagelinktext": "обговорення",
        "otherlanguages": "Іншими мовами",
        "redirectedfrom": "(Перенаправлено з $1)",
        "redirectpagesub": "Сторінка-перенаправлення",
-       "lastmodifiedat": "Ð\9eÑ\81Ñ\82аннÑ\8f Ð·Ð¼Ñ\96на Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки: $2, $1.",
+       "lastmodifiedat": "ЦÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð²Ð¾Ñ\81Ñ\82аннÑ\94 Ð·Ð¼Ñ\96нено: $2, $1.",
        "viewcount": "Цю сторінку переглядали $1 {{PLURAL:$1|раз|рази|разів}}.",
        "protectedpage": "Захищена сторінка",
        "jumpto": "Перейти до:",
        "privacypage": "Project:Політика конфіденційності",
        "badaccess": "Помилка доступу",
        "badaccess-group0": "Вам не дозволено виконувати цю дію.",
-       "badaccess-groups": "Ð\94Ñ\96Ñ\8f, Ñ\8fкÑ\83 Ð\92и хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|1=групи|груп}}: $1.",
+       "badaccess-groups": "Ð\94Ñ\96Ñ\8f, Ñ\8fкÑ\83 Ð²и хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|1=групи|груп}}: $1.",
        "versionrequired": "Потрібна MediaWiki версії $1",
        "versionrequiredtext": "Для роботи з цією сторінкою потрібна MediaWiki версії $1. Див. [[Special:Version|інформацію про версії програмного забезпечення, яке використовується]].",
        "ok": "Гаразд",
        "hidetoc": "сховати",
        "collapsible-collapse": "згорнути",
        "collapsible-expand": "розгорнути",
+       "confirmable-confirm": "{{GENDER:$1|Ви}} впевнені?",
+       "confirmable-yes": "Так",
+       "confirmable-no": "Ні",
        "thisisdeleted": "Переглянути чи відновити $1?",
        "viewdeleted": "Переглянути $1?",
-       "restorelink": "$1 {{PLURAL:$1|вилучене редагування|вилучених редагування|вилучених редагувань}}",
+       "restorelink": "$1 {{PLURAL:$1|вилучене редагування|вилучені редагування|вилучених редагувань}}",
        "feedlinks": "У вигляді:",
        "feed-invalid": "Неправильний тип каналу для підписки.",
        "feed-unavailable": "Стрічки синдикації не доступні",
        "page-atom-feed": "«$1» — Atom-стрічка",
        "feed-atom": "Atom",
        "feed-rss": "RSS",
-       "red-link-title": "$1 (Ñ\82ака Ñ\81Ñ\82оÑ\80Ñ\96нка не існує)",
-       "sort-descending": "Ð\92Ñ\96дÑ\81ортувати за спаданням",
-       "sort-ascending": "Ð\92Ñ\96дÑ\81ортувати за зростанням",
+       "red-link-title": "$1 (Ñ\82акоÑ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки не існує)",
+       "sort-descending": "Сортувати за спаданням",
+       "sort-ascending": "Сортувати за зростанням",
        "nstab-main": "Стаття",
        "nstab-user": "Сторінка користувача",
        "nstab-media": "Медіа-сторінка",
        "nstab-help": "Сторінка довідки",
        "nstab-category": "Категорія",
        "nosuchaction": "Такої дії нема",
-       "nosuchactiontext": "Ð\94Ñ\96Ñ\8f, Ð·Ð°Ð·Ð½Ð°Ñ\87ена Ð² URL, Ð½ÐµÐ¿Ñ\80авилÑ\8cна.\nÐ\92и Ð¼Ð¾Ð³Ð»Ð¸ Ð½ÐµÐ¿Ñ\80авилÑ\8cно Ð½Ð°Ð±Ñ\80аÑ\82и URL Ð°Ð±Ð¾ Ð¿ÐµÑ\80ейÑ\82и Ð¿Ð¾ Ð½ÐµÐºÐ¾Ñ\80екÑ\82номÑ\83 Ð¿Ð¾Ñ\81иланнÑ\8e.\nЦе також може означати помилку в програмному забезпеченні {{GRAMMAR:genitive|{{SITENAME}}}}.",
+       "nosuchactiontext": "Ð\94Ñ\96Ñ\8f, Ð·Ð°Ð·Ð½Ð°Ñ\87ена Ð² URL, Ð½ÐµÐ¿Ñ\80авилÑ\8cна.\nÐ\92и Ð¼Ð¾Ð³Ð»Ð¸ Ð½ÐµÐ¿Ñ\80авилÑ\8cно Ð½Ð°Ð±Ñ\80аÑ\82и URL Ð°Ð±Ð¾ Ð¿ÐµÑ\80ейÑ\82и Ð·Ð° Ð½ÐµÐºÐ¾Ñ\80екÑ\82ним Ð¿Ð¾Ñ\81иланнÑ\8fм.\nЦе також може означати помилку в програмному забезпеченні {{GRAMMAR:genitive|{{SITENAME}}}}.",
        "nosuchspecialpage": "Такої спеціальної сторінки нема",
        "nospecialpagetext": "<strong>Такої спеціальної сторінки не існує.</strong>\n\nДив. [[Special:SpecialPages|список спеціальних сторінок]].",
        "error": "Помилка",
        "laggedslavemode": "Увага: сторінка може не містити останніх редагувань.",
        "readonly": "Запис до бази даних заблокований",
        "enterlockreason": "Зазначте причину і приблизний термін блокування",
-       "readonlytext": "Додавання нових статей та інші зміни бази даних у даний момент заблоковані, ймовірно, через планове сервісне обслуговування бази даних, після закінчення якого буде відновлено нормальний стан.\n\nАдміністратор, що заблокував базу, дав наступне пояснення: $1",
-       "missing-article": "У Ð±Ð°Ð·Ñ\96 Ð´Ð°Ð½Ð¸Ñ\85 Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð·Ð°Ð¿Ð¸Ñ\82аний Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нки Â«$1» $2.\n\nÐ\9fодÑ\96бна Ñ\81иÑ\82Ñ\83аÑ\86Ñ\96Ñ\8f Ð·Ð°Ð·Ð²Ð¸Ñ\87ай Ð²Ð¸Ð½Ð¸ÐºÐ°Ñ\94 Ð¿Ñ\80и Ñ\81пÑ\80обÑ\96 Ð¿ÐµÑ\80еÑ\85одÑ\83 Ð·Ð° Ð·Ð°Ñ\81Ñ\82аÑ\80Ñ\96лим Ð¿Ð¾Ñ\81иланнÑ\8fм Ð°Ð±Ð¾ Ð½Ð° Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\8e Ð·Ð¼Ñ\96н Ñ\81Ñ\82оÑ\80Ñ\96нки, Ñ\8fка Ð±Ñ\83ла Ð²Ð¸Ð»Ñ\83Ñ\87ена.\n\nЯкÑ\89о Ñ\81пÑ\80ава Ð½Ðµ Ð² Ñ\86Ñ\8cомÑ\83, Ñ\82о, Ñ\88видÑ\88е Ð·Ð° Ð²Ñ\81е, Ð²Ð¸ Ð²Ð¸Ñ\8fвили Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑ\83 у програмному забезпеченні.\nБудь ласка, повідомте про це [[Special:ListUsers/sysop|адміністратора]], зазначивши URL.",
+       "readonlytext": "Додавання нових статей та інші зміни бази даних у даний момент заблоковані, ймовірно, через планове сервісне обслуговування бази даних, після закінчення якого буде відновлено нормальний стан.\n\nАдміністратор, що заблокував базу, дав таке пояснення: $1",
+       "missing-article": "У Ð±Ð°Ð·Ñ\96 Ð´Ð°Ð½Ð¸Ñ\85 Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð·Ð°Ð¿Ð¸Ñ\82аного Ñ\82екÑ\81Ñ\82Ñ\83 Ñ\81Ñ\82оÑ\80Ñ\96нки Â«$1» $2.\n\nÐ\9fодÑ\96бна Ñ\81иÑ\82Ñ\83аÑ\86Ñ\96Ñ\8f Ð·Ð°Ð·Ð²Ð¸Ñ\87ай Ð²Ð¸Ð½Ð¸ÐºÐ°Ñ\94 Ð¿Ñ\80и Ñ\81пÑ\80обÑ\96 Ð¿ÐµÑ\80еÑ\85одÑ\83 Ð·Ð° Ð·Ð°Ñ\81Ñ\82аÑ\80Ñ\96лим Ð¿Ð¾Ñ\81иланнÑ\8fм Ð°Ð±Ð¾ Ð·Ð° Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\94Ñ\8e Ð·Ð¼Ñ\96н Ñ\81Ñ\82оÑ\80Ñ\96нки, Ñ\8fка Ð±Ñ\83ла Ð²Ð¸Ð»Ñ\83Ñ\87ена.\n\nЯкÑ\89о Ñ\81пÑ\80ава Ð½Ðµ Ð² Ñ\86Ñ\8cомÑ\83, Ñ\82о Ð¹Ð¼Ð¾Ð²Ñ\96Ñ\80но, Ð²Ð°Ð¼ Ñ\82Ñ\80апилаÑ\81Ñ\8c Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° у програмному забезпеченні.\nБудь ласка, повідомте про це [[Special:ListUsers/sysop|адміністратора]], зазначивши URL.",
        "missingarticle-rev": "(версія № $1)",
        "missingarticle-diff": "(Різниця: $1, $2)",
-       "readonly_lag": "Ð\91аза Ð´Ð°Ð½Ð¸Ñ\85 Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð° Ð²Ñ\96д Ð·Ð¼Ñ\96н, Ð´Ð¾ÐºÐ¸ Ð²Ñ\82оÑ\80инний Ñ\81еÑ\80веÑ\80 Ð\91Ð\94 не синхронізується з первинним.",
+       "readonly_lag": "Ð\91аза Ð´Ð°Ð½Ð¸Ñ\85 Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð° Ð²Ñ\96д Ð·Ð¼Ñ\96н, Ð´Ð¾ÐºÐ¸ Ð²Ñ\82оÑ\80инний Ñ\81еÑ\80веÑ\80 Ð±Ð°Ð·Ð¸ Ð´Ð°Ð½Ð¸Ñ\85 не синхронізується з первинним.",
        "internalerror": "Внутрішня помилка",
        "internalerror_info": "Внутрішня помилка: $1",
-       "filecopyerror": "Неможливо скопіювати файл «$1» в «$2».",
-       "filerenameerror": "Неможливо перейменувати файл «$1» в «$2».",
-       "filedeleteerror": "Неможливо вилучити файл «$1».",
-       "directorycreateerror": "Неможливо створити директорію «$1».",
-       "filenotfound": "Неможливо знайти файл «$1».",
+       "filecopyerror": "Не вдалося скопіювати файл «$1» в «$2».",
+       "filerenameerror": "Не вдалося перейменувати файл «$1» на «$2».",
+       "filedeleteerror": "Не вдалося вилучити файл «$1».",
+       "directorycreateerror": "Не вдалося створити каталог \"$1\".",
+       "filenotfound": "Не вдалося знайти файл «$1».",
        "unexpected": "Неочікуване значення: «$1»=«$2».",
        "formerror": "Помилка: неможливо передати дані форми",
        "badarticleerror": "Ця дія не може бути виконана на цій сторінці.",
-       "cannotdelete": "Ð\9dеможливо Ð²Ð¸Ð»Ñ\83Ñ\87иÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð°Ð±Ð¾ Ñ\84айл Â«$1».\nÐ\9cожливо, Ñ\97Ñ\97 (його) Ð²Ð¶Ðµ Ð²Ð¸Ð»Ñ\83Ñ\87ив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий.",
+       "cannotdelete": "Ð\9dеможливо Ð²Ð¸Ð»Ñ\83Ñ\87иÑ\82и Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð°Ð±Ð¾ Ñ\84айл Â«$1».\nÐ\9cожливо, Ñ\86е Ð²Ð¶Ðµ Ð·Ñ\80облено ÐºÐ¸Ð¼Ð¾Ñ\81Ñ\8c Ñ\96нÑ\88им.",
        "cannotdelete-title": "Не вдається видалити сторінку «$1»",
        "delete-hook-aborted": "Вилучення було скасовано процедурою-перехоплювачем. \nНіяких поясненень надано не було.",
        "no-null-revision": "Не вдалося створити нульову версію сторінки «$1»",
        "badtitle": "Неприпустима назва",
-       "badtitletext": "Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.\nМожливо, в назві використовуються недопустимі символи.",
+       "badtitletext": "Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна назва чи інтервікі.\nМожливо, в назві вжиті недопустимі символи.",
        "perfcached": "Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше {{PLURAL:$1|1=одного запису|$1 записів}}.",
        "perfcachedts": "Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|1=запису|записів}}.",
-       "querypage-no-updates": "Ð\97мÑ\96ни Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð·Ð°Ñ\80аз Ð·Ð°Ð±Ð¾Ñ\80оненÑ\96. Ð\94анÑ\96 Ñ\82Ñ\83Ñ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ñ\96 Ð·Ð°Ñ\80аз.",
+       "querypage-no-updates": "Ð\97мÑ\96ни Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð·Ð°Ñ\80аз Ð·Ð°Ð±Ð¾Ñ\80оненÑ\96. Ð\94анÑ\96 Ñ\82Ñ\83Ñ\82 Ð½Ð°Ñ\80азÑ\96 Ð½Ðµ Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ñ\96.",
        "viewsource": "Перегляд",
        "viewsource-title": "Перегляд вихідного коду сторінки $1",
        "actionthrottled": "Обмеження за швидкістю",
-       "actionthrottledtext": "Як Ð·Ð°Ñ\85Ñ\96д Ð±Ð¾Ñ\80оÑ\82Ñ\8cби Ð·Ñ\96 Ñ\81памом, Ñ\83Ñ\81Ñ\82ановлено Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f Ð½Ð° Ð±Ð°Ð³Ð°Ñ\82оÑ\80азове Ð·Ð°Ñ\81Ñ\82оÑ\81Ñ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ð´Ñ\96Ñ\97 Ð¿Ñ\80оÑ\82Ñ\8fгом ÐºÐ¾Ñ\80оÑ\82кого Ð¿Ñ\80омÑ\96жкÑ\83 Ñ\87аÑ\81Ñ\83. Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿Ð¾Ð²Ñ\82оÑ\80Ñ\96Ñ\82Ñ\8c Ñ\81пÑ\80обÑ\83 Ñ\87еÑ\80ез кілька хвилин.",
+       "actionthrottledtext": "Ð\94лÑ\8f Ð±Ð¾Ñ\80оÑ\82Ñ\8cби Ð·Ñ\96 Ñ\81памом Ð²Ñ\81Ñ\82ановлено Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f Ð½Ð° Ð¿Ð¾Ð²Ñ\82оÑ\80не Ð·Ð°Ñ\81Ñ\82оÑ\81Ñ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ð´Ñ\96Ñ\97 Ð·Ð° ÐºÐ¾Ñ\80оÑ\82кий Ñ\87аÑ\81. Ð\92и Ð¿ÐµÑ\80евиÑ\89или Ñ\86е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f. Ð\9cожеÑ\82е Ñ\81пÑ\80обÑ\83ваÑ\82и Ð·Ð½Ð¾Ð² Ð·Ð° кілька хвилин.",
        "protectedpagetext": "Ця сторінка захищена від редагування та інших дій.",
        "viewsourcetext": "Ви можете переглянути та скопіювати початковий текст цієї сторінки:",
        "viewyourtext": "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
-       "protectedinterface": "Ця сторінка є частиною інтерфейсу програмного забезпечення цієї вікі і її можуть редагувати лише адміністратори проекту. Щоб додати або змінити переклади для усіх вікі, відвідайте [//translatewiki.net/ translatewiki.net], проект локалізації MediaWiki.",
-       "editinginterface": "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
-       "cascadeprotected": "Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|1=сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2",
+       "protectedinterface": "Ця сторінка містить текст інтерфейсу програмного забезпечення цієї Вікі, захищений від небажаного втручання. Щоб додати або змінити переклади для всіх вікі, перейдіть до [//translatewiki.net/ translatewiki.net], проекту локалізації MediaWiki.",
+       "editinginterface": "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу програм. \nЗміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів цієї Вікі. \nЩоб додати чи змінити переклади для всіх вікі, використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект локалізації MediaWiki.",
+       "cascadeprotected": "Сторінка захищена від змін, оскільки вона належить до {{PLURAL:$1|1=сторінки, для якої|сторінок, для яких}} установлено каскадний захист: $2",
        "namespaceprotected": "У вас нема дозволу редагувати сторінки в просторі назв «$1».",
-       "customcssprotected": "У Ð²Ð°Ñ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð¿Ñ\80ав Ð½Ð° Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 CSS-Ñ\81Ñ\82оÑ\80Ñ\96нки, Ñ\82ак Ñ\8fк вона містить особисті налаштування іншого користувача.",
-       "customjsprotected": "У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.",
-       "mycustomcssprotected": "У Ð\92аÑ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð¿Ñ\80ав для редагування цієї CSS сторінки.",
+       "customcssprotected": "У Ð²Ð°Ñ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð½Ð° Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 CSS-Ñ\81Ñ\82оÑ\80Ñ\96нки, Ð±Ð¾ вона містить особисті налаштування іншого користувача.",
+       "customjsprotected": "У вас немає дозволу на редагування цієї JavaScript-сторінки, бо вона містить особисті налаштування іншого користувача.",
+       "mycustomcssprotected": "У Ð²Ð°Ñ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 для редагування цієї CSS сторінки.",
        "mycustomjsprotected": "Ви не маєте дозволу для редагування цієї сторінки JavaScript.",
-       "myprivateinfoprotected": "У Ð\92ас немає дозволу на редагування своєї приватної інформації.",
-       "mypreferencesprotected": "У Ð\92ас немає дозволу на редагування своїх налаштувань.",
+       "myprivateinfoprotected": "У Ð²ас немає дозволу на редагування своєї приватної інформації.",
+       "mypreferencesprotected": "У Ð²ас немає дозволу на редагування своїх налаштувань.",
        "ns-specialprotected": "Спеціальні сторінки не можна редагувати.",
        "titleprotected": "Створення сторінки з такою назвою було заборонене користувачем [[User:$1|$1]].\nЗазначена наступна причина: ''$2''.",
        "filereadonlyerror": "Неможливо змінити файл «$1» тому, що файловий архів «$2» перебуває в режимі «лише для читання».\nАдміністратор, що заблокував його, залишив таке пояснення: «''$3''».",
        "virus-badscanner": "Помилка налаштування: невідомий сканер вірусів: ''$1''",
        "virus-scanfailed": "помилка сканування (код $1)",
        "virus-unknownscanner": "невідомий антивірус:",
-       "logouttext": "'''ТепеÑ\80 Ð²Ð¸ Ð¿Ñ\80аÑ\86Ñ\8eÑ\94Ñ\82е Ð² Ñ\82омÑ\83 Ð¶ Ñ\80ежимÑ\96, Ñ\8fкий Ð±Ñ\83в Ð´Ð¾ Ð²Ð°Ñ\88ого Ð²Ñ\85одÑ\83 Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми.'''\n\nÐ\94еÑ\8fкÑ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f, Ð½Ñ\96би Ð²Ð¸ Ñ\89е Ð¿Ñ\80едÑ\81Ñ\82авленÑ\96 Ñ\81иÑ\81Ñ\82емÑ\96 Ð¿Ñ\96д Ñ\96менем, Ñ\89об Ñ\83никнÑ\83Ñ\82и Ñ\86Ñ\8cого, Ð¾Ð½Ð¾Ð²Ñ\96Ñ\82Ñ\8c кеш браузера.",
+       "logouttext": "'''Ð\92и Ð²Ð¸Ð¹Ñ\88ли Ð· Ñ\81иÑ\81Ñ\82еми.'''\n\nÐ\94еÑ\8fкÑ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f, Ð½Ñ\96би Ð²Ð¸ Ñ\89е Ð² Ñ\81иÑ\81Ñ\82емÑ\96, Ð°Ð¶ Ð¿Ð¾ÐºÐ¸ Ð²Ð¸ Ð½Ðµ Ð¾Ð½Ð¾Ð²Ð¸Ñ\82е кеш браузера.",
        "welcomeuser": "Вітаємо, $1!",
-       "welcomecreation-msg": "Ð\92аÑ\88 Ð°ÐºÐ°Ñ\83нÑ\82 Ð±Ñ\83ло Ñ\81Ñ\82воÑ\80ено.\nÐ\9dе Ð·Ð°Ð±Ñ\83дÑ\8cÑ\82е Ð·Ð¼Ñ\96ниÑ\82и Ñ\81воÑ\97 [[Special:Preferences|налаштування у {{GRAMMAR:genitive|{{SITENAME}}}}]].",
+       "welcomecreation-msg": "Ð\92аÑ\88 Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 Ñ\81Ñ\82воÑ\80ено.\nТепеÑ\80 Ð¼Ð°Ñ\94Ñ\82е Ð·Ð¼Ð¾Ð³Ñ\83 Ð·Ð° Ð±Ð°Ð¶Ð°Ð½Ð½Ñ\8fм Ð·Ð¼Ñ\96нÑ\8eваÑ\82и Ð²Ð°Ñ\88Ñ\96 [[Special:Preferences|налаштування у {{GRAMMAR:genitive|{{SITENAME}}}}]].",
        "yourname": "Ім'я користувача:",
        "userlogin-yourname": "Ім'я користувача",
        "userlogin-yourname-ph": "Введіть ім'я користувача",
        "userlogin-noaccount": "Немає облікового запису?",
        "userlogin-joinproject": "Приєднатися до {{GRAMMAR:genitive|{{SITENAME}}}}",
        "nologin": "Ви ще не зареєструвались? $1.",
-       "nologinlink": "Створіть обліковий запис",
+       "nologinlink": "Створити обліковий запис",
        "createaccount": "Зареєструватися",
        "gotaccount": "Ви вже зареєстровані? '''$1'''.",
-       "gotaccountlink": "Увійдіть",
+       "gotaccountlink": "Увійти",
        "userlogin-resetlink": "Забули дані, потрібні для входу?",
        "userlogin-resetpassword-link": "Забули пароль?",
        "userlogin-helplink2": "Допомога з входом у систему",
        "createacct-realname": "Справжнє ім'я (не обов'язково)",
        "createaccountreason": "Причина:",
        "createacct-reason": "Причина",
-       "createacct-reason-ph": "ЧомÑ\83 Ð\92и створюєте інший обліковий запис",
+       "createacct-reason-ph": "ЧомÑ\83 Ð²и створюєте інший обліковий запис",
        "createacct-captcha": "Перевірка безпеки",
-       "createacct-imgcaptcha-ph": "Ð\92ведÑ\96Ñ\82Ñ\8c Ñ\82екÑ\81Ñ\82, Ñ\89о Ð\92и бачите вище",
-       "createacct-submit": "СÑ\82воÑ\80Ñ\96Ñ\82Ñ\8c Ð\92аш обліковий запис",
+       "createacct-imgcaptcha-ph": "Ð\92ведÑ\96Ñ\82Ñ\8c Ñ\82екÑ\81Ñ\82, Ñ\8fкий Ð²и бачите вище",
+       "createacct-submit": "СÑ\82воÑ\80Ñ\96Ñ\82Ñ\8c Ð²аш обліковий запис",
        "createacct-another-submit": "Створити інший обліковий запис",
-       "createacct-benefit-heading": "{{SITENAME}} створюється такими ж людьми, як і ви.",
+       "createacct-benefit-heading": "{{SITENAME}} створюється такими самими людьми, як і ви.",
        "createacct-benefit-body1": "{{PLURAL:$1|редагування|редагування|редагувань}}",
        "createacct-benefit-body2": "{{PLURAL:$1|сторінка|сторінки|сторінок}}",
        "createacct-benefit-body3": "{{PLURAL:$1|дописувач|дописувачі|дописувачів}} цього місяця",
-       "badretype": "УведенÑ\96 Ð²Ð°Ð¼Ð¸ Ð¿Ð°Ñ\80олÑ\96 Ð½Ðµ Ð·Ð±Ñ\96гаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f.",
-       "userexists": "Уведене ім'я користувача вже існує.\nБудь ласка оберіть інше ім'я.",
+       "badretype": "Ð\92веденÑ\96 Ð¿Ð°Ñ\80олÑ\96 Ð½Ðµ Ñ\81пÑ\96впадаÑ\8eÑ\82Ñ\8c.",
+       "userexists": "Ð\92ведене ім'я користувача вже існує.\nБудь ласка оберіть інше ім'я.",
        "loginerror": "Помилка при вході до системи",
        "createacct-error": "Помилка створення облікового запису",
        "createaccounterror": "Не в змозі створити обліковий запис: $1",
-       "nocookiesnew": "Ð\9aоÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87 Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80Ñ\83вавÑ\81Ñ\8f, Ð°Ð»Ðµ Ð½Ðµ Ð²Ð²Ñ\96йÑ\88ов Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми.\n{{SITENAME}} Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94 ÐºÑ\83ки Ð´Ð»Ñ\8f Ð²Ñ\85одÑ\83 Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми.\nУ Ð²Ð°Ñ\81 ÐºÑ\83ки Ð·Ð°Ð±Ð¾Ñ\80оненÑ\96.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8cÑ\82е їх, а потім увійдіть з вашим новим іменем користувача і паролем.",
+       "nocookiesnew": "Ð\92и Ð·Ð°Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96, Ð°Ð»Ðµ Ð½Ðµ Ð²Ð²Ñ\96йÑ\88ли Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми.\n{{SITENAME}} Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\94 ÐºÑ\83ки Ð´Ð»Ñ\8f Ð²Ñ\85одÑ\83 Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми.\nУ Ð²Ð°Ñ\81 Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ\96 ÐºÑ\83ки.\nÐ\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ñ\83вÑ\96мкнÑ\96Ñ\82Ñ\8c їх, а потім увійдіть з вашим новим іменем користувача і паролем.",
        "nocookieslogin": "{{SITENAME}} використовує куки (''cookies'') для входу до системи.\nВи їх вимкнули.\nБудь ласка, ввімкніть куки і спробуйте знову.",
-       "nocookiesfornew": "Ð\9eблÑ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð½Ðµ Ð±Ñ\83в Ñ\81Ñ\82воÑ\80ений Ñ\87еÑ\80ез Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ñ\96Ñ\81Ñ\82Ñ\8c Ð¿ÐµÑ\80евÑ\96Ñ\80иÑ\82и Ð¹Ð¾Ð³Ð¾ Ð´Ð¶ÐµÑ\80ело.\nÐ\9fеÑ\80еконайÑ\82еÑ\81Ñ\8f, Ñ\89о cookie ввімкнено, оновіть сторінку і спробуйте ще раз.",
+       "nocookiesfornew": "Ð\9eблÑ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð½Ðµ Ð±Ñ\83в Ñ\81Ñ\82воÑ\80ений Ñ\87еÑ\80ез Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ñ\96Ñ\81Ñ\82Ñ\8c Ð¿ÐµÑ\80евÑ\96Ñ\80иÑ\82и Ð¿Ð¾Ñ\85одженнÑ\8f Ð´Ð°Ð½Ð¸Ñ\85.\nÐ\9fеÑ\80еконайÑ\82еÑ\81Ñ\8f, Ñ\89о ÐºÑ\83ки ввімкнено, оновіть сторінку і спробуйте ще раз.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
        "noname": "Ви зазначили неправильне ім'я користувача.",
        "loginsuccesstitle": "Успішний вхід до системи",
-       "loginsuccess": "'''Тепер ви працюєте {{grammar:locative|{{SITENAME}}}} під іменем $1.'''",
-       "nosuchuser": "Користувач з іменем «$1» не існує.\nІмена користувачів регістрозалежні.\nПеревірте правильність написання або скористайтеся формою нижче, щоб [[Special:UserLogin/signup|зареєструвати нового користувача]].",
-       "nosuchusershort": "Користувач з іменем $1 не існує.\nПеревірте правильність написання імені.",
+       "loginsuccess": "'''Тепер ви працюєте в {{grammar:locative|{{SITENAME}}}} під іменем $1.'''",
+       "nosuchuser": "Користувача з іменем «$1» не існує.\nВ іменах користувачів розрізняються великі і малі символи.\nПеревірте правильність написання або скористайтеся формою нижче, щоб [[Special:UserLogin/signup|зареєструвати нового користувача]].",
+       "nosuchusershort": "Користувача з іменем $1 не існує.\nПеревірте правильність написання імені.",
        "nouserspecified": "Ви повинні зазначити ім'я користувача.",
        "login-userblocked": "Цей користувач заблокований. Вхід в систему не дозволений.",
        "wrongpassword": "Ви ввели хибний пароль. Спробуйте ще раз.",
        "wrongpasswordempty": "Ви не ввели пароль. Будь ласка, спробуйте ще раз.",
        "passwordtooshort": "Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.",
-       "password-name-match": "Уведений пароль має відрізнятися від імені користувача.",
+       "password-name-match": "Ð\92аÑ\88 пароль має відрізнятися від імені користувача.",
        "password-login-forbidden": "Використання цього імені користувача і пароля заборонено.",
        "mailmypassword": "Перевстановити пароль",
-       "passwordremindertitle": "Ð\9fам'Ñ\8fÑ\82ка Ð¿Ð°Ñ\80олÑ\8f ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а {{grammar:genitive|{{SITENAME}}}}",
-       "passwordremindertext": "Хтось (можливо, ви, з IP-адреси $1) зробив запит\nна надсилання вам нового пароля користувача {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача\n«$2» створено новий пароль: <code>$3</code>. Якщо це зробили ви,\nто вам слід увійти до системи, ввівши новий пароль.\nВаш тимчасовий пароль втратить силу через {{PLURAL:$5|$5 день|$5 дні|$5 днів}}.\n\nЯкщо ви не надсилали запиту на зміну пароля або якщо ви вже згадали свій пароль\nі не хочете його змінювати, ви можете ігнорувати це повідомлення і\nпродовжувати використовувати свій старий пароль.",
-       "noemail": "Для користувача \"$1\" не вказано адресу електронної пошти.",
+       "passwordremindertitle": "Ð\9dовий Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c Ð´Ð»Ñ\8f {{grammar:genitive|{{SITENAME}}}}",
+       "passwordremindertext": "Хтось (можливо ви, з IP-адреси $1) зробив запит на новий пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача «$2» створено новий пароль: <code>$3</code>. Якщо це зробили ви, то вам слід увійти до системи, ввівши новий пароль.\nВаш тимчасовий пароль втратить силу через {{PLURAL:$5|$5 день|$5 дні|$5 днів}}.\n\nЯкщо ви не надсилали запиту на зміну пароля або якщо ви вже згадали свій пароль і не хочете його змінювати, ви можете ігнорувати це повідомлення і продовжувати використовувати свій старий пароль.",
+       "noemail": "Для користувача \"$1\" не вказано адреси електронної пошти.",
        "noemailcreate": "Вам треба вказати правильну адресу електронної пошти",
        "passwordsent": "Новий пароль був надісланий на адресу електронної пошти, зазначену для \"$1\".\nБудь ласка, ввійдіть до системи після отримання пароля.",
-       "blocked-mailpassword": "Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.",
-       "eauthentsent": "На вказану адресу електронної пошти відправлено лист.\nЩоб отримувати листи надалі, дотримуйтесь викладених там інструкцій для підтвердження того, що ця адреса належить вам.",
-       "throttled-mailpassword": "Ð\86нÑ\81Ñ\82Ñ\80Ñ\83кÑ\86Ñ\96Ñ\8f Ð¿Ð¾ Ð²Ñ\96дновленнÑ\8e Ð¿Ð°Ñ\80олÑ\8e Ð²Ð¶Ðµ Ð±Ñ\83ла Ð²Ð¸Ñ\81лана ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ð¿Ð¾Ñ\88Ñ\82оÑ\8e Ð¿Ñ\80оÑ\82Ñ\8fгом {{PLURAL:$1|1=оÑ\81Ñ\82аннÑ\8cоÑ\97 Ð³Ð¾Ð´Ð¸Ð½Ð¸|оÑ\81Ñ\82аннÑ\96Ñ\85 $1 Ð³Ð¾Ð´Ð¸Ð½}}.\nÐ\94лÑ\8f Ð¿Ð¾Ð¿ÐµÑ\80едженнÑ\8f Ð·Ð»Ð¾Ð²Ð¶Ð¸Ð²Ð°Ð½Ñ\8c Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð½Ð°Ð´Ñ\81илаÑ\82и Ñ\82Ñ\96лÑ\8cки Ð¾Ð´Ð½Ñ\83 Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83кÑ\86Ñ\96Ñ\8e за {{PLURAL:$1|годину|$1 години|$1 годин}}.",
-       "mailerror": "Ð\9fомилка Ð¿Ñ\80и Ð²Ñ\96дпÑ\80авÑ\86Ñ\96 пошти: $1",
+       "blocked-mailpassword": "Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля, щоб запобігти зловживанням.",
+       "eauthentsent": "На вказану адресу електронної пошти відправлено лист підтвердження.\nЩоб отримувати надалі будь-які повідомлення, необхідно підтвердити, що обліковий рахунок належить справді вам, за процедурою, описаною в листі.",
+       "throttled-mailpassword": "Ð\9bиÑ\81Ñ\82а Ð´Ð»Ñ\8f Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ\8f Ð¿Ð°Ñ\80олÑ\8f Ð²Ð¶Ðµ Ð±Ñ\83ло Ð½Ð°Ð´Ñ\96Ñ\81лано ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ð¿Ð¾Ñ\88Ñ\82оÑ\8e Ð¿Ñ\80оÑ\82Ñ\8fгом {{PLURAL:$1|1=оÑ\81Ñ\82аннÑ\8cоÑ\97 Ð³Ð¾Ð´Ð¸Ð½Ð¸|оÑ\81Ñ\82аннÑ\96Ñ\85 $1 Ð³Ð¾Ð´Ð¸Ð½}}.\nÐ\94лÑ\8f Ð¿Ð¾Ð¿ÐµÑ\80едженнÑ\8f Ð·Ð»Ð¾Ð²Ð¶Ð¸Ð²Ð°Ð½Ñ\8c Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾ Ð½Ð°Ð´Ñ\81илаÑ\82и Ñ\82Ñ\96лÑ\8cки Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ð»Ð¸Ñ\81Ñ\82а Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ\8f Ð¿Ð°Ñ\80олÑ\8f за {{PLURAL:$1|годину|$1 години|$1 годин}}.",
+       "mailerror": "Ð\9fомилка Ð½Ð°Ð´Ñ\81иланнÑ\8f пошти: $1",
        "acct_creation_throttle_hit": "Відвідувачі з вашої IP-адреси вже створили $1 {{PLURAL:$1|обліковий запис|облікових записи|облікових записів}} за останню добу, що є максимумом для цього відрізка часу.\nТаким чином, користувачі з цієї IP-адреси не можуть на цей момент створювати нових облікових записів.",
        "emailauthenticated": "Вашу адресу електронної пошти було підтверджено на  $2  о  $3.",
-       "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\83 Ð²Ð°Ñ\88оÑ\97 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ñ\89е Ð½Ðµ Ð¿Ñ\96дÑ\82веÑ\80джено. Ð\96одна Ð»Ð¸Ñ\81Ñ\82 Ð½Ðµ Ð±Ñ\83де Ð½Ð°Ð´Ñ\96Ñ\81лано Ð´Ð»Ñ\8f Ð±Ñ\83дÑ\8c\8fкоÑ\97 Ð· Ð½Ð°Ñ\81Ñ\82Ñ\83пниÑ\85 Ñ\84Ñ\83нкцій.",
-       "noemailprefs": "Ð\90дÑ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾, Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97 Ð²Ñ\96кÑ\96 Ñ\80обоÑ\82и Ð· ÐµÐ». Ð¿Ð¾Ñ\88Ñ\82оÑ\8e Ð²Ñ\96дклÑ\8eÑ\87ені.",
-       "emailconfirmlink": "Підтвердити адресу вашої електронної пошти",
-       "invalidemailaddress": "Уведена Ð°Ð´Ñ\80еÑ\81а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ð¿Ñ\80ийнÑ\8fÑ\82а, Ð±Ð¾ Ð²Ð¾Ð½Ð° Ð½Ðµ Ð²Ñ\96дповÑ\96даÑ\94 Ñ\84оÑ\80маÑ\82Ñ\83 Ð°Ð´Ñ\80еÑ\81 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и.\nБудь ласка, введіть коректну адресу або залиште поле порожнім.",
-       "cannotchangeemail": "У цій вікі не можна міняти свою адресу ел. пошти.",
-       "emaildisabled": "Цей Ñ\81айÑ\82 Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð½Ð°Ð´Ñ\96Ñ\81лати електронні листи.",
+       "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\83 Ð²Ð°Ñ\88оÑ\97 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ñ\89е Ð½Ðµ Ð¿Ñ\96дÑ\82веÑ\80джено. Ð\9dадÑ\81иланнÑ\8f Ð»Ð¸Ñ\81Ñ\82Ñ\96в Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ñ\83 Ð¶Ð¾Ð´Ð½Ñ\96й Ð· Ð½Ð°Ñ\81Ñ\82Ñ\83пниÑ\85 Ð¾Ð¿цій.",
+       "noemailprefs": "Ð\92кажÑ\96Ñ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и, Ñ\89об Ñ\83можливиÑ\82и Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\96 Ð¿Ð¾Ñ\88Ñ\82овÑ\96 Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97 Ð²Ñ\96кі.",
+       "emailconfirmlink": "Підтвердіть адресу вашої електронної пошти",
+       "invalidemailaddress": "Ð\92казана Ð°Ð´Ñ\80еÑ\81а Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ð¿Ñ\80ийнÑ\8fÑ\82а Ñ\87еÑ\80ез Ð½ÐµÐ²Ñ\96дповÑ\96дний Ñ\84оÑ\80маÑ\82.\nБудь ласка, введіть коректну адресу або залиште поле порожнім.",
+       "cannotchangeemail": "У цій вікі не можна міняти адресу електронної пошти, закріплену за обліковим записом.",
+       "emaildisabled": "Ð\97 Ñ\86Ñ\8cого Ñ\81айÑ\82Ñ\83 Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð½Ð°Ð´Ñ\81илати електронні листи.",
        "accountcreated": "Обліковий запис створено.",
        "accountcreatedtext": "Обліковий запис користувача для [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|обговорення]]) був створений.",
        "createaccount-title": "Створення облікового запису для {{SITENAME}}",
-       "createaccount-text": "Ð¥Ñ\82оÑ\81Ñ\8c Ñ\81Ñ\82воÑ\80ив Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 Â«$2» Ð½Ð° Ñ\81еÑ\80веÑ\80Ñ\96 Ð¿Ñ\80оекÑ\82Ñ\83 {{SITENAME}} ($4) Ð· Ð¿Ð°Ñ\80олем Â«$3», Ð·Ð°Ð·Ð½Ð°Ñ\87ивÑ\88и Ð²Ð°Ñ\88Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и. Ð\92ам Ñ\81лÑ\96д Ð·Ð°Ð¹Ñ\82и Ñ\96 Ð·Ð¼Ñ\96ниÑ\82и Ð¿Ð°Ñ\80олÑ\8c.\n\nÐ\9fÑ\80оÑ\96гноруйте дане повідомлення, якщо обліковий запис було створено помилково.",
+       "createaccount-text": "Ð¥Ñ\82оÑ\81Ñ\8c Ñ\81Ñ\82воÑ\80ив Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 Â«$2» Ð½Ð° Ñ\81еÑ\80веÑ\80Ñ\96 Ð¿Ñ\80оекÑ\82Ñ\83 {{SITENAME}} ($4) Ð· Ð¿Ð°Ñ\80олем Â«$3», Ð·Ð°Ð·Ð½Ð°Ñ\87ивÑ\88и Ð²Ð°Ñ\88Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и. Ð\92ам Ñ\81лÑ\96д Ð·Ð°Ð¹Ñ\82и Ñ\96 Ð·Ð¼Ñ\96ниÑ\82и Ð¿Ð°Ñ\80олÑ\8c.\n\nÐ\86гноруйте дане повідомлення, якщо обліковий запис було створено помилково.",
        "login-throttled": "Ви зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
        "login-abort-generic": "Не вдалося ввійти до системи",
        "loginlanguagelabel": "Мова: $1",
-       "suspicious-userlogout": "Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.",
-       "createacct-another-realname-tip": "Справжнє ім'я є необов'язковим.\nЯкщо ви вирішите надати його, то воно буде використовуватися для присвоєння користувачу авторства до його роботи.",
+       "suspicious-userlogout": "Ваш запит на завершення сеансу відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.",
+       "createacct-another-realname-tip": "Справжнє ім'я є необов'язковим.\nЯкщо ви вирішите надати його, воно буде використовуватись для позначення редагувань та інших дій користувача.",
        "pt-login": "Увійти",
        "pt-login-button": "Вхід",
        "pt-createaccount": "Створити обліковий запис",
        "pt-userlogout": "Вийти",
        "php-mail-error-unknown": "Невідома помилка в PHP-функції mail()",
-       "user-mail-no-addy": "СпÑ\80оба Ð½Ð°Ð´Ñ\81иланнÑ\8f ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð±ÐµÐ· Ð·Ð°Ð·Ð½Ð°Ñ\87еноÑ\97 Ð°Ð´Ñ\80еÑ\81и ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и.",
+       "user-mail-no-addy": "СпÑ\80оба Ð½Ð°Ð´Ñ\81иланнÑ\8f ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð±ÐµÐ· Ð·Ð°Ð·Ð½Ð°Ñ\87еннÑ\8f Ð°Ð´Ñ\80еÑ\81и.",
        "user-mail-no-body": "Спроба надіслати електронного листа з порожнім або надто коротким вмістом.",
        "changepassword": "Змінити пароль",
        "resetpass_announce": "Для завершення входу ви повинні встановити новий пароль.",
        "oldpassword": "Старий пароль:",
        "newpassword": "Новий пароль:",
        "retypenew": "Ще раз введіть новий пароль:",
-       "resetpass_submit": "Установити пароль і ввійти",
+       "resetpass_submit": "Ð\92становити пароль і ввійти",
        "changepassword-success": "Ваш пароль успішно змінено!",
        "changepassword-throttled": "Ви нещодавно зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
-       "resetpass_forbidden": "Пароль не можна змінювати",
+       "resetpass_forbidden": "Пароль не можна змінити",
        "resetpass-no-info": "Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.",
        "resetpass-submit-loggedin": "Змінити пароль",
        "resetpass-submit-cancel": "Скасувати",
        "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|Ð\97аповнÑ\96Ñ\82Ñ\8c Ð¾Ð´Ð½Ðµ Ð· Ð¿Ð¾Ð»Ñ\96в Ð´Ð»Ñ\8f Ð¾Ñ\82Ñ\80иманнÑ\8f Ñ\82имÑ\87аÑ\81ового Ð¿Ð°Ñ\80олÑ\8e Ñ\87еÑ\80ез ÐµÐ»ÐµÐºÑ\82Ñ\80оннÑ\83 Ð¿Ð¾Ñ\88Ñ\82Ñ\83.}}",
+       "passwordreset-text-one": "Заповніть цю форму, щоб отримати тимчасовий пароль електронною поштою.",
+       "passwordreset-text-many": "{{PLURAL:$1|Ð\97аповнÑ\96Ñ\82Ñ\8c Ð¾Ð´Ð½Ðµ Ð· Ð¿Ð¾Ð»Ñ\96в Ð´Ð»Ñ\8f Ð¾Ñ\82Ñ\80иманнÑ\8f Ñ\82имÑ\87аÑ\81ового Ð¿Ð°Ñ\80олÑ\8f ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ð¿Ð¾Ñ\88Ñ\82оÑ\8e.}}",
        "passwordreset-legend": "Перевстановити пароль",
        "passwordreset-disabled": "У цій вікі вимкнена можливість скидання пароля.",
-       "passwordreset-emaildisabled": "ФÑ\83нкÑ\86Ñ\96Ñ\97 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð²Ð¸Ð¼ÐºÐ½Ñ\83Ñ\82о Ð² Ñ\86Ñ\96й Ð²Ñ\96кÑ\96.",
+       "passwordreset-emaildisabled": "Ð\92 Ñ\86Ñ\96й Ð²Ñ\96кÑ\96 Ð²Ð¸Ð¼ÐºÐ½Ñ\83Ñ\82о Ð¤Ñ\83нкÑ\86Ñ\96Ñ\97 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и.",
        "passwordreset-username": "Ім'я користувача:",
        "passwordreset-domain": "Домен:",
        "passwordreset-capture": "Продивитись результуючий електронний лист?",
-       "passwordreset-capture-help": "ЯкÑ\89о Ð\92и Ð²Ñ\81Ñ\82ановиÑ\82е Ð²Ñ\96дмÑ\96Ñ\82кÑ\83, Ð\92ам Ð±Ñ\83де Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐµÐ»ÐµÐºÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 (Ñ\96з Ñ\82имÑ\87аÑ\81овим Ð¿Ð°Ñ\80олем), Ñ\8fкий Ð±Ñ\83де Ð²Ñ\96дпÑ\80авлений користувачеві.",
+       "passwordreset-capture-help": "ЯкÑ\89о Ð²Ð¸ Ð·Ñ\80обиÑ\82е Ð¿Ð¾Ð¼Ñ\96Ñ\82кÑ\83 Ñ\83 Ð²Ñ\96конÑ\86Ñ\96, Ð²Ð°Ð¼ Ð±Ñ\83де Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹ ÐµÐ»ÐµÐºÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 (Ñ\96з Ñ\82имÑ\87аÑ\81овим Ð¿Ð°Ñ\80олем), Ñ\8fкий Ñ\82акож Ð±Ñ\83де Ð½Ð°Ð´Ñ\96Ñ\81ланий користувачеві.",
        "passwordreset-email": "Адреса електронної пошти:",
        "passwordreset-emailtitle": "Деталі облікового запису на {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Ð¥Ñ\82оÑ\81Ñ\8c (Ñ\96мовÑ\96Ñ\80но Ð\92и, Ð· IP-адÑ\80еÑ\81и $1) Ð¿Ð¾Ð¿Ñ\80оÑ\81ив Ð½Ð°Ð³Ð°Ð´Ð°Ñ\82и Ð´ÐµÑ\82алÑ\96 Ð\92аÑ\88ого Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ð´Ð»Ñ\8f {{SITENAME}} ($4). Ð\97 Ð\92аÑ\88оÑ\8e ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e Ð¿Ð¾Ð²'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий Ð·Ð°Ð¿Ð¸Ñ\81\96 Ñ\82акÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c Ñ\81Ñ\82ане Ð½ÐµÐ´Ñ\96йÑ\81ним|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 Ð¿Ð°Ñ\80олÑ\96 Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c Ð½ÐµÐ´Ñ\96йÑ\81ними}} Ñ\87еÑ\80ез $5 {{PLURAL:$5|денÑ\8c|днÑ\96|днÑ\96в}}.\nÐ\92и Ð¼Ð°Ñ\94Ñ\82е Ð²Ð²Ñ\96йÑ\82и Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c. Ð¯ÐºÑ\89о Ð¶ Ñ\86ей Ð·Ð°Ð¿Ð¸Ñ\82 Ð·Ñ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, Ð°Ð±Ð¾ Ð\92и Ð¿Ð°Ð¼'Ñ\8fÑ\82аÑ\94Ñ\82е Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е Ð¹Ð¾Ð³Ð¾ Ð·Ð¼Ñ\96нÑ\8eваÑ\82и, Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80оÑ\81Ñ\82о Ð¿Ñ\80оігнорувати це повідомлення та продовжувати використовувати старий пароль.",
-       "passwordreset-emailtext-user": "Ð\9aоÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87 $1 Ð· {{SITENAME}} Ð¿Ð¾Ð¿Ñ\80оÑ\81ив Ð½Ð°Ð³Ð°Ð´Ð°Ñ\82и Ð´ÐµÑ\82алÑ\96 Ð\92аÑ\88ого Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ð´Ð»Ñ\8f {{SITENAME}} ($4). Ð\97 Ð\92аÑ\88оÑ\8e ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e Ð¿Ð¾Ð²'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий Ð·Ð°Ð¿Ð¸Ñ\81\96 Ñ\82акÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 Ð¿Ð°Ñ\80олÑ\96}} Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c Ð½ÐµÑ\87иннÑ\96 Ñ\87еÑ\80ез {{PLURAL:$5|денÑ\8c|$5 Ð´Ð½Ñ\96|$5 Ð´Ð½Ñ\96в}}.\nÐ\92и Ð¼Ð°Ñ\94Ñ\82е Ð²Ð²Ñ\96йÑ\82и Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c. Ð¯ÐºÑ\89о Ð¶ Ñ\86ей Ð·Ð°Ð¿Ð¸Ñ\82 Ð·Ñ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, Ð°Ð±Ð¾ Ð\92и Ð¿Ð°Ð¼'Ñ\8fÑ\82аÑ\94Ñ\82е Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е Ð¹Ð¾Ð³Ð¾ Ð·Ð¼Ñ\96нÑ\8eваÑ\82и, Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80оÑ\81Ñ\82о Ð¿Ñ\80оігнорувати це повідомлення та продовжувати використовувати старий пароль.",
+       "passwordreset-emailtext-ip": "Ð¥Ñ\82оÑ\81Ñ\8c (Ñ\96мовÑ\96Ñ\80но Ð²Ð¸, Ð· IP-адÑ\80еÑ\81и $1) Ð¿Ð¾Ð¿Ñ\80оÑ\81ив Ð½Ð°Ð³Ð°Ð´Ð°Ñ\82и Ð´ÐµÑ\82алÑ\96 Ð²Ð°Ñ\88ого Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ð´Ð»Ñ\8f {{SITENAME}} ($4). Ð\97 Ð²Ð°Ñ\88оÑ\8e ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e Ð¿Ð¾Ð²'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий Ð·Ð°Ð¿Ð¸Ñ\81\96 Ñ\82акÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c Ñ\81Ñ\82ане Ð½ÐµÐ´Ñ\96йÑ\81ним|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 Ð¿Ð°Ñ\80олÑ\96 Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c Ð½ÐµÐ´Ñ\96йÑ\81ними}} Ñ\87еÑ\80ез $5 {{PLURAL:$5|денÑ\8c|днÑ\96|днÑ\96в}}.\nÐ\92и Ð¼Ð°Ñ\94Ñ\82е Ð²Ð²Ñ\96йÑ\82и Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c. Ð¯ÐºÑ\89о Ð¶ Ñ\86ей Ð·Ð°Ð¿Ð¸Ñ\82 Ð·Ñ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий Ð°Ð±Ð¾ Ð²Ð¸ Ð·Ð³Ð°Ð´Ð°Ð»Ð¸ Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е Ð¹Ð¾Ð³Ð¾ Ð·Ð¼Ñ\96нÑ\8eваÑ\82и, Ð¼Ð¾Ð¶ÐµÑ\82е ігнорувати це повідомлення та продовжувати використовувати старий пароль.",
+       "passwordreset-emailtext-user": "Ð\9aоÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87 $1 Ð· {{SITENAME}} Ð¿Ð¾Ð¿Ñ\80оÑ\81ив Ð½Ð°Ð³Ð°Ð´Ð°Ñ\82и Ð´ÐµÑ\82алÑ\96 Ð²Ð°Ñ\88ого Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ð´Ð»Ñ\8f {{SITENAME}} ($4). Ð\97 Ð²Ð°Ñ\88оÑ\8e ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e Ð¿Ð¾Ð²'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий Ð·Ð°Ð¿Ð¸Ñ\81\96 Ñ\82акÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 Ð¿Ð°Ñ\80олÑ\96}} Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c Ð½ÐµÑ\87иннÑ\96 Ñ\87еÑ\80ез {{PLURAL:$5|денÑ\8c|$5 Ð´Ð½Ñ\96|$5 Ð´Ð½Ñ\96в}}.\nÐ\92и Ð¼Ð°Ñ\94Ñ\82е Ð²Ð²Ñ\96йÑ\82и Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c. Ð¯ÐºÑ\89о Ð¶ Ñ\86ей Ð·Ð°Ð¿Ð¸Ñ\82 Ð·Ñ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, Ð°Ð±Ð¾ Ð²Ð¸ Ð·Ð³Ð°Ð´Ð°Ð»Ð¸ Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е Ð¹Ð¾Ð³Ð¾ Ð·Ð¼Ñ\96нÑ\8eваÑ\82и, Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80оÑ\81Ñ\82о ігнорувати це повідомлення та продовжувати використовувати старий пароль.",
        "passwordreset-emailelement": "Ім'я користувача: $1\nТимчасовий пароль: $2",
-       "passwordreset-emailsent": "Ð\95лекÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 Ð´Ð»Ñ\8f Ð²Ñ\96дновленнÑ\8f Ð¿Ð°Ñ\80олÑ\8f Ð²Ñ\96дпÑ\80авлений.",
-       "passwordreset-emailsent-capture": "Ð\95лекÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 Ñ\81киданнÑ\8f Ð¿Ð°Ñ\80олÑ\8e було надіслано, як показано нижче.",
+       "passwordreset-emailsent": "Ð\95лекÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 Ð´Ð»Ñ\8f Ð²Ñ\96дновленнÑ\8f Ð¿Ð°Ñ\80олÑ\8f Ð½Ð°Ð´Ñ\96Ñ\81ланий.",
+       "passwordreset-emailsent-capture": "Ð\95лекÑ\82Ñ\80онний Ð»Ð¸Ñ\81Ñ\82 Ñ\81киданнÑ\8f Ð¿Ð°Ñ\80олÑ\8f було надіслано, як показано нижче.",
        "passwordreset-emailerror-capture": "Електронний лист для відновлення пароля мав бути надісланий, як показано нижче, але його надсилання {{GENDER:$2|користувачеві|користувачці}} $1 не вдалося.",
        "changeemail": "Змінити адресу електронної пошти",
        "changeemail-header": "Зміна адреси електронної пошти",
        "changeemail-cancel": "Скасувати",
        "changeemail-throttled": "Ви зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
        "resettokens": "Скидання жетонів",
-       "resettokens-text": "Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81кинÑ\83Ñ\82и Ð¶ÐµÑ\82они, Ñ\89о Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ\87Ñ\83Ñ\8eÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð¾ Ð¿ÐµÐ²Ð½Ð¸Ñ\85 Ð¾Ñ\81обиÑ\81Ñ\82иÑ\85 Ð´Ð°Ð½Ð¸Ñ\85, Ð¿Ð¾Ð²'Ñ\8fзаниÑ\85 Ñ\82Ñ\83Ñ\82 Ñ\96з Ð\92аÑ\88им Ð¾Ð±Ð»Ñ\96ковим Ð·Ð°Ð¿Ð¸Ñ\81ом.\nÐ\92ам Ñ\81лÑ\96д Ñ\86е Ð·Ñ\80обиÑ\82и, Ñ\8fкÑ\89о Ð\92и Ð²Ð¸Ð¿Ð°Ð´ÐºÐ¾Ð²Ð¾ Ð¿Ð¾Ð´Ñ\96лилиÑ\81Ñ\8c Ð¶ÐµÑ\82онами Ð· ÐºÐ¸Ð¼Ð¾Ñ\81Ñ\8c, Ð°Ð±Ð¾ Ñ\8fкÑ\89о Ð\92аш обліковий запис було зламано.",
+       "resettokens-text": "Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81кинÑ\83Ñ\82и Ð¶ÐµÑ\82они, Ñ\89о Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ\87Ñ\83Ñ\8eÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð¾ Ð¿ÐµÐ²Ð½Ð¸Ñ\85 Ð¾Ñ\81обиÑ\81Ñ\82иÑ\85 Ð´Ð°Ð½Ð¸Ñ\85, Ð¿Ð¾Ð²'Ñ\8fзаниÑ\85 Ñ\82Ñ\83Ñ\82 Ñ\96з Ð²Ð°Ñ\88им Ð¾Ð±Ð»Ñ\96ковим Ð·Ð°Ð¿Ð¸Ñ\81ом.\nÐ\92ам Ñ\81лÑ\96д Ñ\86е Ð·Ñ\80обиÑ\82и, Ñ\8fкÑ\89о Ð²Ð¸ Ð²Ð¸Ð¿Ð°Ð´ÐºÐ¾Ð²Ð¾ Ð¿Ð¾Ð´Ñ\96лилиÑ\81Ñ\8c Ð¶ÐµÑ\82онами Ð· ÐºÐ¸Ð¼Ð¾Ñ\81Ñ\8c, Ð°Ð±Ð¾ Ñ\8fкÑ\89о Ð²аш обліковий запис було зламано.",
        "resettokens-no-tokens": "Немає жетонів до скидання.",
        "resettokens-legend": "Скинути жетони",
        "resettokens-tokens": "Жетони:",
        "resettokens-token-label": "$1 (поточне значення: $2)",
-       "resettokens-watchlist-token": "Маркер стрічки новин (Atom/RSS) з [[Special:Watchlist|змін на сторінку у вашому списку спостереження]]",
+       "resettokens-watchlist-token": "Маркер стрічки новин (Atom/RSS) щодо [[Special:Watchlist|зміни на сторінці з вашого списку спостереження]]",
        "resettokens-done": "Жетони скинуто.",
        "resettokens-resetbutton": "Скинути обрані жетони",
        "bold_sample": "Жирний текст",
        "italic_tip": "Курсив",
        "link_sample": "Назва посилання",
        "link_tip": "Внутрішнє посилання",
-       "extlink_sample": "http://www.example.com назва посилання",
+       "extlink_sample": "назва посилання http://www.example.com",
        "extlink_tip": "Зовнішнє посилання (не забудьте про префікс http://)",
        "headline_sample": "Текст заголовка",
        "headline_tip": "Заголовок 2-го рівня",
-       "nowiki_sample": "Ð\92Ñ\81Ñ\82авлÑ\8fйÑ\82е Ñ\81Ñ\8eди Ð½ÐµÐ²Ñ\96дформатований текст.",
+       "nowiki_sample": "Ð\92Ñ\81Ñ\82авиÑ\82и Ñ\81Ñ\8eди Ð½Ðµформатований текст.",
        "nowiki_tip": "Ігнорувати вікі-форматування",
        "image_sample": "Example.jpg",
        "image_tip": "Файл",
        "preview": "Попередній перегляд",
        "showpreview": "Попередній перегляд",
        "showdiff": "Показати зміни",
-       "blankarticle": "<strong>Попередження:</strong> Ви створюєте пусту сторінку.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
-       "anoneditwarning": "'''Увага''': Ð\92и Ð½Ðµ Ñ\83вÑ\96йÑ\88ли Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми. Ð\92аÑ\88а IP-адÑ\80еÑ\81а Ð±Ñ\83де Ð·Ð°Ð¿Ð¸Ñ\81ана Ð´Ð¾ Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 Ð·Ð¼Ñ\96н Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки.",
+       "blankarticle": "'''Попередження:''' Створена вами сторінка порожня.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
+       "anoneditwarning": "'''Увага''': Ð\92и Ð½Ðµ Ñ\83вÑ\96йÑ\88ли Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми. Ð\94о Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 Ð·Ð¼Ñ\96н Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð±Ñ\83де Ð·Ð°Ð¿Ð¸Ñ\81ана Ð²Ð°Ñ\88а IP-адÑ\80еÑ\81а.",
        "anonpreviewwarning": "''Ви не увійшли в систему. Якщо ви виконаєте збереження, то в історію сторінки буде записана ваша IP-адреса.''",
        "missingsummary": "'''Нагадування''': Ви не дали короткого опису змін.\nНатиснувши кнопку «Зберегти» ще раз, ви збережете зміни без коментаря.",
        "missingcommenttext": "Будь ласка, введіть нижче ваше повідомлення.",
        "subject-preview": "Заголовок буде:",
        "blockedtitle": "Користувача заблоковано",
        "blockedtext": "'''Ваш обліковий запис або IP-адреса заблоковані.'''\n\nБлокування виконане адміністратором $1.\nЗазначена наступна причина: ''$2''.\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністратору, якщо ви не зареєстровані або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте ці дані у своїх запитах.",
-       "autoblockedtext": "Ваша IP-адреса автоматично заблокована у зв'язку з тим, що вона раніше використовувалася кимось із заблокованих користувачів. Адміністратор ($1), що її заблокував, зазначив наступну причину блокування:\n\n:''$2''\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Був заблокований: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністраторові, якщо ви не зареєстровані у проекті або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте його у своїх запитах.",
+       "autoblockedtext": "Ваша IP-адреса автоматично заблокована у зв'язку з тим, що вона раніше використовувалася кимось із заблокованих користувачів. Адміністратор ($1), що її заблокував, зазначив наступну причину блокування:\n\n:''$2''\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністраторові, якщо ви не зареєстровані у проекті або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте його у своїх запитах.",
        "blockednoreason": "не вказано причини",
        "whitelistedittext": "Ви повинні $1 щоб редагувати сторінки.",
-       "confirmedittext": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð¿Ñ\96дÑ\82веÑ\80диÑ\82и Ð²Ð°Ñ\88Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð¿ÐµÑ\80ед Ñ\80едагÑ\83ваннÑ\8fм Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c-лаÑ\81ка Ð·Ð°Ð·Ð½Ð°Ñ\87Ñ\82е і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].",
+       "confirmedittext": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð¿Ñ\96дÑ\82веÑ\80диÑ\82и Ð²Ð°Ñ\88Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и Ð¿ÐµÑ\80ед Ñ\80едагÑ\83ваннÑ\8fм Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c-лаÑ\81ка Ð²ÐºÐ°Ð¶Ñ\96Ñ\82Ñ\8c і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].",
        "nosuchsectiontitle": "Не вдається знайти розділ",
        "nosuchsectiontext": "Ви намагаєтесь редагувати розділ, якого не існує.\nМожливо, він був перейменований або вилучений, поки ви переглядали сторінку.",
        "loginreqtitle": "Необхідно ввійти до системи",
        "loginreqlink": "ввійти в систему",
-       "loginreqpagetext": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 $1, Ñ\89об Ð¿ÐµÑ\80еглÑ\8fнÑ\83ти інші сторінки.",
+       "loginreqpagetext": "Ð\92и Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 $1, Ñ\89об Ð¿ÐµÑ\80еглÑ\8fдати інші сторінки.",
        "accmailtitle": "Пароль надіслано.",
        "accmailtext": "Пароль для користувача [[User talk:$1|$1]], згенерований випадковим чином, надісланий на адресу $2.\nПісля реєстрації в системі ви зможете ''[[Special:ChangePassword|змінити пароль]]''.",
        "newarticle": "(Нова)",
        "newarticletext": "Ви перейшли на сторінку, яка поки що не існує.\n\nЩоб створити нову сторінку, наберіть текст у вікні нижче (див. [$1 довідкову статтю], щоб отримати більше інформації).\nЯкщо ви опинились тут помилково, просто натисніть кнопку браузера '''назад'''.",
-       "anontalkpagetext": "----''Це сторінка обговорення анонімного користувача, який ще не зареєструвався або не скористався зареєстрованим обліковим записом.\nТому ми вимушені використовувати IP-адресу для його ідентифікації.\nОдна IP-адреса може використовуватися декількома користувачами.\nЯкщо ви — анонімний користувач і вважаєте, що отримали коментарі, адресовані не вам, будь ласка [[Special:UserLogin/signup|зареєструйтесь]] або [[Special:UserLogin|увійдіть до системи]], щоб у майбутньому уникнути можливої плутанини з іншими анонімними користувачами.''",
+       "anontalkpagetext": "----''Це сторінка обговорення анонімного користувача, який ще не зареєструвався або не скористався зареєстрованим обліковим записом.''\nТому ми вимушені використовувати IP-адресу для його ідентифікації.\nОдна IP-адреса може використовуватись кількома користувачами.\nЯкщо ви — анонімний користувач і вважаєте, що отримали коментарі, адресовані не вам, будь ласка [[Special:UserLogin/signup|зареєструйтесь]] або [[Special:UserLogin|увійдіть до системи]], щоб у майбутньому уникнути можливої плутанини з іншими анонімними користувачами.",
        "noarticletext": "Зараз на цій сторінці нема тексту.\nВи можете [[Special:Search/{{PAGENAME}}|пошукати цю назву]] на інших сторінках,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати в журналах]\nабо [{{fullurl:{{FULLPAGENAME}}|action=edit}} створити сторінку з такою назвою]</span>.",
        "noarticletext-nopermission": "Зараз на цій сторінці немає тексту.\nВи можете [[Special:Search/{{PAGENAME}}|пошукати цю назву]] на інших сторінках,\nабо <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов'язані записи в журналах]</span>, але ви не маєте дозволу на створення такої сторінки.",
        "missing-revision": "Версія #$1 сторінки «{{FULLPAGENAME}}» не існує.\n\nІмовірно, Ви перейшли за застарілим посиланням на вилучену сторінку.\nПодробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].",
        "usercssyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий css-файл перед збереженням.",
        "userjsyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий код JavaScript перед збереженням.",
        "usercsspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого css-файлу.'''\n'''Його ще не збережено!'''",
-       "userjspreview": "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е Ñ\82Ñ\96лÑ\8cки Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð²Ð°Ñ\88ого JavaScript-Ñ\84айлÑ\83 Ñ\96 Ð¿Ð¾ÐºÐ¸ Ð²Ñ\96н Ñ\89е не збережений!'''",
+       "userjspreview": "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е Ñ\82Ñ\96лÑ\8cки Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð²Ð°Ñ\88ого JavaScript-Ñ\84айлÑ\83 Ñ\96 Ð²Ñ\96н Ð¿Ð¾ÐºÐ¸-Ñ\89о не збережений!'''",
        "sitecsspreview": "'''Пам'ятайте, що це тільки попередній перегляд цього CSS.'''\n'''Його ще не збережено!'''",
        "sitejspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого JavaScript-коду.'''\n'''Його ще не збережено!'''",
        "userinvalidcssjstitle": "'''Увага:''' тема оформлення «$1» не знайдена.\nПам'ятайте, що користувацькі .css та .js сторінки повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
        "note": "'''Зауваження:'''",
        "previewnote": "'''Це лише попередній перегляд.'''\nВаші зміни ще не збережено!",
        "continue-editing": "Продовжити редагування",
-       "previewconflict": "Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядіти, якщо ви вирішите зберегти його.",
-       "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і зайти знову.'''",
-       "session_fail_preview_html": "<strong>Ð\92ибаÑ\87Ñ\82е! Ð\9dеможливо Ð·Ð±ÐµÑ\80егÑ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\87еÑ\80ез Ð²Ñ\82Ñ\80аÑ\82Ñ\83 Ð´Ð°Ð½Ð¸Ñ\85 HTML-Ñ\81еÑ\81Ñ\96Ñ\97.</strong>\n\n''Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\87иÑ\81Ñ\82ий HTML, Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð²Ñ\96дклÑ\8eÑ\87ено, Ñ\89об Ð¿Ð¾Ð¿ÐµÑ\80едиÑ\82и JavaScript-аÑ\82аки.''\n\n<strong>ЯкÑ\89о Ñ\86е Ð´Ð¾Ð±Ñ\80оÑ\8fкÑ\96Ñ\81на спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, - спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
-       "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма не правильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
-       "edit_form_incomplete": "'''Частина даних із форми редагування не досягла сервера. Уважно перевірте чи не пошкоджено ваших правок і спробуйте ще раз.'''",
+       "previewconflict": "Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядати, якщо ви вирішите зберегти його.",
+       "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову.'''",
+       "session_fail_preview_html": "<strong>Ð\92ибаÑ\87Ñ\82е! Ð\9dеможливо Ð·Ð±ÐµÑ\80егÑ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\87еÑ\80ез Ð²Ñ\82Ñ\80аÑ\82Ñ\83 Ð´Ð°Ð½Ð¸Ñ\85 HTML-Ñ\81еÑ\81Ñ\96Ñ\97.</strong>\n\n''Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\87иÑ\81Ñ\82ий HTML, Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð²Ñ\96дклÑ\8eÑ\87ено, Ñ\89об Ð¿Ð¾Ð¿ÐµÑ\80едиÑ\82и JavaScript-аÑ\82аки.''\n\n<strong>ЯкÑ\89о Ñ\86е Ð»ÐµÐ³Ñ\96Ñ\82имна спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, - спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
+       "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма неправильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
+       "edit_form_incomplete": "'''Частина даних із форми редагування не досягла сервера. Уважно перевірте, чи не пошкоджені ваші правки і спробуйте ще раз.'''",
        "editing": "Редагування $1",
        "creating": "Створення $1",
        "editingsection": "Редагування $1 (розділ)",
        "editingcomment": "Редагування $1 (новий розділ)",
        "editconflict": "Конфлікт редагування: $1",
-       "explainconflict": "Ще Ñ\85Ñ\82оÑ\81Ñ\8c Ð·Ð¼Ñ\96нив Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð· Ñ\82ого Ñ\87аÑ\81Ñ\83, Ñ\8fк Ð²Ð¸ Ñ\80озпоÑ\87али Ñ\97Ñ\97 Ð·Ð¼Ñ\96нÑ\8eваÑ\82и.\nУ Ð²ÐµÑ\80Ñ\85нÑ\8cомÑ\83 Ð²Ñ\96кнÑ\96 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð¾Ñ\82оÑ\87ний Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нки.\nÐ\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð² Ð½Ð¸Ð¶Ð½Ñ\8cомÑ\83 Ð²Ñ\96кнÑ\96.\nÐ\92ам Ð½ÐµÐ¾Ð±Ñ\85Ñ\96дно Ð¿ÐµÑ\80енеÑ\81Ñ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни Ð² Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ий Ñ\82екÑ\81Ñ\82.\nЯкÑ\89о Ð²Ð¸ Ð½Ð°Ñ\82иÑ\81неÑ\82е Â«{{int:savearticle}}», Ñ\82о Ð±Ñ\83де Ð·Ð±ÐµÑ\80ежено '''Ñ\82Ñ\96лÑ\8cки''' Ñ\82екÑ\81Ñ\82 Ñ\83 Ð²ÐµÑ\80Ñ\85нÑ\8cомÑ\83 Ð²Ñ\96кнÑ\96 редагування.",
+       "explainconflict": "Ще Ñ\85Ñ\82оÑ\81Ñ\8c Ð·Ð¼Ñ\96нив Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð· Ñ\82ого Ñ\87аÑ\81Ñ\83, Ñ\8fк Ð²Ð¸ Ñ\80озпоÑ\87али Ñ\97Ñ\97 Ð¿Ñ\80авиÑ\82и.\nУ Ð²ÐµÑ\80Ñ\85нÑ\8cомÑ\83 Ð²Ñ\96кнÑ\96 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð¾Ñ\82оÑ\87ний Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нки.\nÐ\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð² Ð½Ð¸Ð¶Ð½Ñ\8cомÑ\83 Ð²Ñ\96кнÑ\96.\nÐ\92ам Ð½ÐµÐ¾Ð±Ñ\85Ñ\96дно Ð¿ÐµÑ\80енеÑ\81Ñ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни Ð² Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ий Ñ\82екÑ\81Ñ\82.\nЯкÑ\89о Ð²Ð¸ Ð½Ð°Ñ\82иÑ\81неÑ\82е Â«{{int:savearticle}}», Ñ\82о Ð±Ñ\83де Ð·Ð±ÐµÑ\80ежено '''лиÑ\88е''' Ñ\82екÑ\81Ñ\82 Ð· Ð²ÐµÑ\80Ñ\85нÑ\8cого Ð²Ñ\96кна редагування.",
        "yourtext": "Ваш текст",
        "storedversion": "Збережена версія",
-       "nonunicodebrowser": "'''Ð\9fÐ\9eÐ\9fÐ\95РÐ\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ð\92аÑ\88 [[бÑ\80аÑ\83зеÑ\80]] Ð½Ðµ Ð¿Ñ\96дÑ\82Ñ\80имÑ\83Ñ\94 [[ЮнÑ\96код]].''' \nЩоб Ð¿Ð¾Ð´Ð¾Ð»Ð°Ñ\82и Ñ\86е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f Ñ\82а Ð´Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82и Ð\92ам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
-       "editingold": "'''Ð\9fÐ\9eÐ\9fÐ\95РÐ\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ви редагуєте застарілу версію даної статті.\nЯкщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
+       "nonunicodebrowser": "'''Ð\9fопеÑ\80едженнÑ\8f: Ð\92аÑ\88 Ð±Ñ\80аÑ\83зеÑ\80 Ð½Ðµ Ð¿Ñ\96дÑ\82Ñ\80имÑ\83Ñ\94 Ð®Ð½Ñ\96код.''' \nЩоб Ð¿Ð¾Ð´Ð¾Ð»Ð°Ñ\82и Ñ\86е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f Ñ\82а Ð´Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82и Ð²ам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
+       "editingold": "'''Ð\9fопеÑ\80едженнÑ\8f: Ви редагуєте застарілу версію даної статті.\nЯкщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
        "yourdiff": "Відмінності",
-       "copyrightwarning": "Ð\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ð±Ñ\83дÑ\8c\8fкÑ\96 Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ñ\96 Ð·Ð¼Ñ\96ни Ð´Ð¾ {{grammar:genitive|{{SITENAME}}}} Ñ\80озглÑ\8fдаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк Ð²Ð¸Ð¿Ñ\83Ñ\89енÑ\96 Ð½Ð° Ñ\83моваÑ\85 Ð»Ñ\96Ñ\86ензÑ\96Ñ\97 $2 (див. $1).\nЯкÑ\89о Ð²Ð¸ Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е, Ñ\89об Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ð±ÐµÐ·Ð¶Ð°Ð»Ñ\96Ñ\81но Ñ\80едагÑ\83валоÑ\81Ñ\8c Ñ\96 Ñ\80озповÑ\81Ñ\8eджÑ\83валоÑ\81Ñ\8f Ð·Ð° Ð±Ð°Ð¶Ð°Ð½Ð½Ñ\8fм Ð±Ñ\83дÑ\8c-кого, Ð½Ðµ Ð¿Ð¸Ñ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож Ð¿Ñ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ñ\82Ñ\83Ñ\82 Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð²Ð°Ð¼ Ð°Ð±Ð¾ Ð²Ð·Ñ\8fÑ\82е Ð· Ð´Ð¶ÐµÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8fм Ñ\87и Ð¿Ð¾Ð´Ñ\96бним Ð²Ñ\96лÑ\8cним Ð´Ð¶ÐµÑ\80елом.\n'''Ð\9dÐ\95 Ð\9fУÐ\91Ð\9bÐ\86Ð\9aУÐ\99ТÐ\95 Ð¢Ð£Ð¢ Ð\91Ð\95Ð\97 Ð\94Ð\9eÐ\97Ð\92Ð\9eÐ\9bУ Ð\9cÐ\90ТÐ\95РÐ\86Ð\90Ð\9bÐ\98, Ð©Ð\9e Ð\9eÐ¥Ð\9eРÐ\9eÐ\9dЯЮТЬСЯ Ð\90Ð\92ТÐ\9eРСЬÐ\9aÐ\98Ð\9c Ð\9fРÐ\90Ð\92Ð\9eÐ\9c!'''",
-       "copyrightwarning2": "Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð·Ð²ÐµÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ð²Ñ\81Ñ\96 Ð²Ð½ÐµÑ\81енÑ\96 Ð²Ð°Ð¼Ð¸ Ð·Ð¼Ñ\96ни Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ñ\80едагÑ\83ваÑ\82иÑ\81Ñ\8f, Ð´Ð¾Ð¿Ð¾Ð²Ð½Ñ\8eваÑ\82иÑ\81Ñ\8f Ð°Ð±Ð¾ Ð²Ð¸Ð»Ñ\83Ñ\87аÑ\82иÑ\81Ñ\8f Ñ\96нÑ\88ими ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами.\nЯкÑ\89о Ð²Ð¸ Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е, Ñ\89об Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ð±ÐµÐ·Ð¶Ð°Ð»Ñ\96Ñ\81но Ñ\80едагÑ\83валоÑ\81Ñ\8c â\80\94 Ð½Ðµ Ð¿Ð¸Ñ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож Ð·Ð¾Ð±Ð¾Ð²'Ñ\8fзÑ\83Ñ\94Ñ\82еÑ\81Ñ\8c, Ñ\89о Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ñ\82Ñ\83Ñ\82 Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð²Ð°Ð¼ Ð°Ð±Ð¾ Ð²Ð·Ñ\8fÑ\82е Ð· Ð´Ð¶ÐµÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8fм, Ð°Ð±Ð¾ Ð¿Ð¾Ð´Ñ\96бного Ð²Ñ\96лÑ\8cного Ð´Ð¶ÐµÑ\80ела (див. $1).<br />\n'''Ð\9dÐ\95 Ð\9fУÐ\91Ð\9bÐ\86Ð\9aУÐ\99ТÐ\95 Ð¢Ð£Ð¢ Ð\91Ð\95Ð\97 Ð\94Ð\9eÐ\97Ð\92Ð\9eÐ\9bУ Ð\9cÐ\90ТÐ\95РÐ\86Ð\90Ð\9bÐ\98, Ð©Ð\9e Ð\84 Ð\9eÐ\91\84Ð\9aТÐ\9eÐ\9c Ð\90Ð\92ТÐ\9eРСЬÐ\9aÐ\9eÐ\93Ð\9e Ð\9fРÐ\90Ð\92Ð\90!'''",
-       "longpageerror": "'''Ð\9fомилка: Ð¢ÐµÐºÑ\81Ñ\82, Ñ\89о Ð²Ð¸ Ð½Ð°Ð´Ñ\96Ñ\81лали Ð·Ð°Ð¹Ð¼Ð°Ñ\94 $1 {{PLURAL:$1|кÑ\96лобайÑ\82|кÑ\96лобайÑ\82и|кÑ\96лобайÑ\82Ñ\96в}}, Ñ\89о Ð±Ñ\96лÑ\8cÑ\88е Ð·Ð° Ð²Ñ\81Ñ\82ановленÑ\83 Ð¼ÐµÐ¶Ñ\83 Ñ\83 $2 {{PLURAL:$2|кілобайт|кілобайти|кілобайтів}}.'''\nЙого неможливо зберегти.",
-       "readonlywarning": "'''Ð\9fÐ\9eÐ\9fÐ\95РÐ\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ð\91аза Ð´Ð°Ð½Ð¸Ñ\85 Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð° Ð² Ð·Ð²'Ñ\8fзкÑ\83 Ð· Ð¿Ñ\80оÑ\86едÑ\83Ñ\80ами Ð¾Ð±Ñ\81лÑ\83говÑ\83ваннÑ\8f,\nÑ\82омÑ\83, Ð½Ð° Ð´Ð°Ð½Ð¸Ð¹ Ð¼Ð¾Ð¼ÐµÐ½Ñ\82, Ð²Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ð¿Ð¸Ñ\81аÑ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни.\nÐ\9cожливо, Ð²Ð°Ð¼ Ð²Ð°Ñ\80Ñ\82о Ð·Ð±ÐµÑ\80егÑ\82и Ñ\82екÑ\81Ñ\82 Ð² Ð»Ð¾ÐºÐ°Ð»Ñ\8cний Ñ\84айл (на Ñ\81воÑ\94мÑ\83 Ð´Ð¸Ñ\81кÑ\83) Ð¹ Ð·Ð±ÐµÑ\80егÑ\82и Ð¹Ð¾Ð³Ð¾ пізніше.'''\n\nАдміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
+       "copyrightwarning": "Ð\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ð±Ñ\83дÑ\8c\8fкÑ\96 Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ñ\96 Ð·Ð¼Ñ\96ни Ð´Ð¾ {{grammar:genitive|{{SITENAME}}}} Ñ\80озглÑ\8fдаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк Ð²Ð¸Ð¿Ñ\83Ñ\89енÑ\96 Ð½Ð° Ñ\83моваÑ\85 Ð»Ñ\96Ñ\86ензÑ\96Ñ\97 $2 (деÑ\82алÑ\8cнÑ\96Ñ\88е Ð´Ð¸Ð². $1).\nЯкÑ\89о Ð²Ð¸ Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е, Ñ\89об Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ð±ÐµÐ·Ð¶Ð°Ð»Ñ\8cно Ñ\80едагÑ\83валоÑ\81Ñ\8c Ñ\96 Ñ\80озповÑ\81Ñ\8eджÑ\83валоÑ\81Ñ\8f Ð·Ð° Ð±Ð°Ð¶Ð°Ð½Ð½Ñ\8fм Ð±Ñ\83дÑ\8c-кого, Ð½Ðµ Ð¿Ð¸Ñ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож Ð¿Ñ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ñ\82Ñ\83Ñ\82 Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ\82Ñ\8c Ð²Ð°Ð¼ Ð°Ð±Ð¾ Ð²Ð·Ñ\8fÑ\82е Ð· Ð´Ð¶ÐµÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8fм Ñ\87и Ð¿Ð¾Ð´Ñ\96бного Ð²Ñ\96лÑ\8cного Ð´Ð¶ÐµÑ\80ела.\n'''Ð\9dе Ð¿Ñ\83блÑ\96кÑ\83йÑ\82е Ñ\82Ñ\83Ñ\82 Ð±ÐµÐ· Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð¼Ð°Ñ\82еÑ\80Ñ\96али, Ð·Ð°Ñ\85иÑ\89енÑ\96 Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\8cким Ð¿Ñ\80авом!'''",
+       "copyrightwarning2": "Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð·Ð²ÐµÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о Ð²Ñ\81Ñ\96 Ð·Ð¼Ñ\96ни, Ð²Ð½ÐµÑ\81енÑ\96 Ð²Ð°Ð¼Ð¸ Ð´Ð¾ {{SITENAME}}, Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ñ\80едагÑ\83ваÑ\82иÑ\81Ñ\8f, Ð´Ð¾Ð¿Ð¾Ð²Ð½Ñ\8eваÑ\82иÑ\81Ñ\8f Ð°Ð±Ð¾ Ð²Ð¸Ð»Ñ\83Ñ\87аÑ\82иÑ\81Ñ\8f Ñ\96нÑ\88ими ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами.\nЯкÑ\89о Ð²Ð¸ Ð½Ðµ Ð±Ð°Ð¶Ð°Ñ\94Ñ\82е, Ñ\89об Ð½Ð°Ð¿Ð¸Ñ\81ане Ð²Ð°Ð¼Ð¸ Ð±ÐµÐ·Ð¶Ð°Ð»Ñ\8cно Ñ\80едагÑ\83валоÑ\81Ñ\8c â\80\94 Ð½Ðµ Ð¿Ð¸Ñ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож Ð¿Ñ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ñ\82Ñ\83Ñ\82 Ð½Ð°Ð¿Ð¸Ñ\81ано Ð²Ð°Ð¼Ð¸ Ð¾Ñ\81обиÑ\81Ñ\82о Ð°Ð±Ð¾ Ð·Ð°Ð¿Ð¾Ð·Ð¸Ñ\87ено Ð· Ð´Ð¶ÐµÑ\80ела, Ñ\8fке Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним Ð½Ð°Ð´Ð±Ð°Ð½Ð½Ñ\8fм, Ð°Ð±Ð¾ Ð¿Ð¾Ð´Ñ\96бного Ð²Ñ\96лÑ\8cного Ð´Ð¶ÐµÑ\80ела (див. $1).<br />\n'''Ð\9dе Ð¿Ñ\83блÑ\96кÑ\83йÑ\82е Ñ\82Ñ\83Ñ\82 Ð±ÐµÐ· Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð¼Ð°Ñ\82еÑ\80Ñ\96али, Ð·Ð°Ñ\85иÑ\89енÑ\96 Ð°Ð²Ñ\82оÑ\80Ñ\81Ñ\8cким Ð¿Ñ\80авом!'''",
+       "longpageerror": "'''Ð\9fомилка: Ð\9fоданий Ð²Ð°Ð¼Ð¸ Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82ановиÑ\82Ñ\8c $1 {{PLURAL:$1|кÑ\96лобайÑ\82|кÑ\96лобайÑ\82и|кÑ\96лобайÑ\82Ñ\96в}}, Ñ\89о Ð±Ñ\96лÑ\8cÑ\88е Ð·Ð° Ð²Ñ\81Ñ\82ановленÑ\83 Ð¼ÐµÐ¶Ñ\83 Ñ\83 {{PLURAL:$2|кілобайт|кілобайти|кілобайтів}}.'''\nЙого неможливо зберегти.",
+       "readonlywarning": "'''Ð\9fопеÑ\80едженнÑ\8f: Ð\91аза Ð´Ð°Ð½Ð¸Ñ\85 Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð° Ð½Ð° Ð¾Ð±Ñ\81лÑ\83говÑ\83ваннÑ\8f, Ñ\82омÑ\83, Ð½Ð° Ð´Ð°Ð½Ð¸Ð¹ Ð¼Ð¾Ð¼ÐµÐ½Ñ\82, Ð²Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ð¿Ð¸Ñ\81аÑ\82и Ð²Ð°Ñ\88Ñ\96 Ð·Ð¼Ñ\96ни.\nÐ\9cожливо, Ð²Ð°Ð¼ Ð²Ð°Ñ\80Ñ\82о Ñ\81копÑ\96Ñ\8eваÑ\82и Ñ\82екÑ\81Ñ\82 Ñ\83 Ñ\84айл Ð½Ð° Ð²Ð°Ñ\88омÑ\83 ÐºÐ¾Ð¼Ð¿'Ñ\8eÑ\82еÑ\80Ñ\96 Ð¹ Ð·Ð±ÐµÑ\80егÑ\82и Ð¹Ð¾Ð³Ð¾ Ð½Ð° пізніше.'''\n\nАдміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
        "protectedpagewarning": "'''Попередження: Ця сторінка була захищена від змін так, що тільки користувачі з правами адміністратора можуть її редагувати.'''\nОстанній запис журналу наведений нижче для довідки:",
        "semiprotectedpagewarning": "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.\nОстанній запис журналу наведений нижче для довідки:",
        "cascadeprotectedwarning": "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|1=до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
        "titleprotectedwarning": "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''\nОстанній запис журналу наведений нижче для довідки:",
        "templatesused": "{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} на цій сторінці:",
        "templatesusedpreview": "{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:",
-       "templatesusedsection": "{{PLURAL:$1|1=Шаблон, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82аний|Шаблони, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82анÑ\96}} Ñ\83 Ñ\86Ñ\96й Ñ\81екÑ\86Ñ\96Ñ\97:",
+       "templatesusedsection": "{{PLURAL:$1|1=Шаблон, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82аний|Шаблони, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82анÑ\96}} Ñ\83 Ñ\86Ñ\8cомÑ\83 Ñ\80оздÑ\96лÑ\96:",
        "template-protected": "(захищено)",
        "template-semiprotected": "(частково захищено)",
        "hiddencategories": "Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:",
        "edittools": "<!-- Розміщений тут текст буде відображатися під формою редагування і формою завантаження. -->",
        "edittools-upload": "-",
-       "nocreatetext": "Ð\9dа Ñ\86Ñ\8cомÑ\83 Ñ\81айÑ\82Ñ\96 Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ\96Ñ\81Ñ\82Ñ\8c Ñ\81Ñ\82воÑ\80еннÑ\8f Ð½Ð¾Ð²Ð¸Ñ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ð²ÐµÑ\80нÑ\83Ñ\82Ñ\8cÑ\81Ñ\8f Ð½Ð°Ð·Ð°Ð´ Ð¹ змінити існуючу сторінку, [[Special:UserLogin|ввійти в систему, або створити новий обліковий запис]].",
+       "nocreatetext": "Ð\9dа Ñ\81айÑ\82Ñ\96 {{SITENAME}} Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ\96Ñ\81Ñ\82Ñ\8c Ñ\81Ñ\82воÑ\80еннÑ\8f Ð½Ð¾Ð²Ð¸Ñ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ð²ÐµÑ\80нÑ\83Ñ\82Ñ\8cÑ\81Ñ\8c Ð½Ð°Ð·Ð°Ð´ Ñ\96 змінити існуючу сторінку, [[Special:UserLogin|ввійти в систему, або створити новий обліковий запис]].",
        "nocreate-loggedin": "У вас нема дозволу створювати нові сторінки.",
        "sectioneditnotsupported-title": "Редагування окремих розділів не підтримується",
        "sectioneditnotsupported-text": "На цій сторінці не підтримується редагування окремих розділів",
        "permissionserrors": "Помилка доступу",
        "permissionserrorstext": "У вас нема прав на виконання цієї операції з {{PLURAL:$1|1=наступної причини|наступних причин}}:",
        "permissionserrorstext-withaction": "У вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:",
-       "recreate-moveddeleted-warn": "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи справді вам потрібно знову створювати цю сторінку.\nНижче наведений журнал вилучень і перейменувань:",
+       "recreate-moveddeleted-warn": "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи справді вам справді потрібно створювати цю сторінку.\nНижче, для зручності, наведений журнал вилучень і перейменувань:",
        "moveddeleted-notice": "Ця сторінка була вилучена.\nДля довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.",
        "log-fulllog": "Переглянути весь журнал",
        "edit-hook-aborted": "Редагування скасоване процедурою-перехоплювачем.\nДодаткові пояснення не наведені.",
        "postedit-confirmation-restored": "Сторінка була відновлена.",
        "postedit-confirmation-saved": "Ваше редагування збережено",
        "edit-already-exists": "Неможливо створити нову сторінку.\nВона вже існує.",
-       "defaultmessagetext": "ТекÑ\81Ñ\82 Â«Ð·Ð° Ð·Ð°Ð¼Ð¾Ð²Ñ\87Ñ\83ваннÑ\8f»",
-       "content-failed-to-parse": "Не вдалось проаналізувати $2 як тип $1: $3",
+       "defaultmessagetext": "СÑ\82андаÑ\80Ñ\82ний Ñ\82екÑ\81Ñ\82 Ð¿Ð¾Ð²Ñ\96домленнÑ\8f",
+       "content-failed-to-parse": "Не вдалось ідентифікувати $2 як тип $1 через: $3",
        "invalid-content-data": "Неприпустимі дані",
        "content-not-allowed-here": "Вміст «$1» недопустимий на сторінці [[$2]]",
        "editwarning-warning": "Перехід на іншу сторінку призведе до втрати ваших змін.\nЯкщо ви ввійшли до системи, то ви можете відключити це попередження в розділі \"{{int:prefs-editing}}\" ваших налаштувань.",
-       "editpage-notsupportedcontentformat-title": "Ð\9dепÑ\96дÑ\82Ñ\80имÑ\83ваний Ñ\84оÑ\80маÑ\82 Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\83",
+       "editpage-notsupportedcontentformat-title": "ФоÑ\80маÑ\82 Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\83 Ð½Ðµ Ð¿Ñ\96дÑ\82Ñ\80имÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f",
        "editpage-notsupportedcontentformat-text": "Формат вмісту $1 не підтримується моделлю вмісту $2.",
        "content-model-wikitext": "вікітекст",
        "content-model-text": "звичайний текст",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
-       "expensive-parserfunction-warning": "Увага: Ця сторінка містить дуже багато викликів ресурсомістких функцій.\n\nКількість викликів не повинна перевищувати $2, зараз потрібно зробити $1 {{PLURAL:$1|виклик|виклики|викликів}}.",
+       "expensive-parserfunction-warning": "'''Увага:''' Ця сторінка містить дуже багато викликів ресурсомістких функцій.\n\nКількість викликів не повинна перевищувати $2, зараз потрібно зробити $1 {{PLURAL:$1|виклик|виклики|викликів}}.",
        "expensive-parserfunction-category": "Сторінки з дуже великою кількістю викликів ресурсомістких функцій",
-       "post-expand-template-inclusion-warning": "Увага: розмір шаблонів для включення занадто великий.\nДеякі шаблони не буде включено.",
+       "post-expand-template-inclusion-warning": "'''Увага:''' розмір шаблонів для включення занадто великий.\nДеякі шаблони не буде включено.",
        "post-expand-template-inclusion-category": "Сторінки з перевищеним розміром включених шаблонів",
-       "post-expand-template-argument-warning": "'''Увага:''' Ð¦Ñ\8f Ñ\81Ñ\82оÑ\80Ñ\96нка Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ð¿Ñ\80инаймнÑ\96 Ð¾Ð´Ð¸Ð½ Ð°Ñ\80гÑ\83менÑ\82 Ñ\88аблонÑ\83, Ñ\8fкий Ð¼Ð°Ñ\94 Ð½Ð°Ð´Ñ\82о Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ\80озмÑ\96Ñ\80 Ð´Ð»Ñ\8f Ñ\80озгоÑ\80Ñ\82аннÑ\8f.\nТакÑ\96 Ð°Ñ\80гÑ\83менÑ\82и Ð±Ñ\83ли Ð¾Ð¿Ñ\83Ñ\89ені.",
+       "post-expand-template-argument-warning": "'''Увага:''' Ð¦Ñ\8f Ñ\81Ñ\82оÑ\80Ñ\96нка Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ð¿Ñ\80инаймнÑ\96 Ð¾Ð´Ð¸Ð½ Ð°Ñ\80гÑ\83менÑ\82 Ñ\88аблонÑ\83, Ñ\8fкий Ð¼Ð°Ñ\94 Ð½Ð°Ð´Ñ\82о Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ\80озмÑ\96Ñ\80 Ð´Ð»Ñ\8f Ñ\80озгоÑ\80Ñ\82аннÑ\8f.\nЦÑ\96 Ð°Ñ\80гÑ\83менÑ\82и Ð±Ñ\83ли Ð¿Ñ\80оÑ\96гноÑ\80овані.",
        "post-expand-template-argument-category": "Сторінки, які містять пропущені аргументи шаблонів",
        "parser-template-loop-warning": "Виявлена петля у шаблонах: [[$1]]",
        "parser-template-recursion-depth-warning": "Перевищене обмеження глибини рекурсії шаблону ($1)",
        "language-converter-depth-warning": "Перевищене обмеження глибини мовного конвертора ($1)",
        "node-count-exceeded-category": "Сторінки, на яких перевищено лічильник вузлів",
-       "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80Ñ\96Ñ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82оÑ\80Ñ\96нок, Ð½Ð° Ñ\8fкиÑ\85 Ð¿ÐµÑ\80ебÑ\96лÑ\8cÑ\88ена кількість вузлів.",
+       "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80Ñ\96Ñ\8f Ð´Ð»Ñ\8f Ñ\81Ñ\82оÑ\80Ñ\96нок, Ð½Ð° Ñ\8fкиÑ\85 Ð¿ÐµÑ\80евиÑ\89ена кількість вузлів.",
        "node-count-exceeded-warning": "Кількість вузлів препроцесора на сторінці перевищила встановлену межу.",
        "expansion-depth-exceeded-category": "Сторінки, де перевищено глибину розгортання",
        "expansion-depth-exceeded-category-desc": "Це категорія для сторінок з перевищеною глибиною розкриття.",
        "converter-manual-rule-error": "Помилка в ручному правилі перетворення мови",
        "undo-success": "Редагування може бути скасовано.\nБудь ласка, перевірте порівняння нижче, щоб впевнитись, що це те, що ви хочете зробити, а потім збережіть зміни, щоб закінчити скасування редагування.",
        "undo-failure": "Неможливо скасувати редагування через несумісність проміжних змін.",
-       "undo-norev": "РедагÑ\83ваннÑ\8f Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ñ\81каÑ\81оване, Ð±Ð¾ Ð²Ð¾Ð½Ð¾ Ð½Ðµ Ñ\96Ñ\81нÑ\83Ñ\94 Ð°Ð±Ð¾ Ð±Ñ\83ло Ð²Ð¸Ð»Ñ\83Ñ\87ене.",
-       "undo-nochange": "Схоже, редагування уже було скасовано.",
+       "undo-norev": "РедагÑ\83ваннÑ\8f Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ñ\83Ñ\82и Ñ\81каÑ\81оване, Ð±Ð¾ Ð¹Ð¾Ð³Ð¾ Ð½Ðµ Ñ\96Ñ\81нÑ\83Ñ\94 Ð°Ð±Ð¾ Ð±Ñ\83ло Ð²Ð¸Ð»Ñ\83Ñ\87ено.",
+       "undo-nochange": "Схоже, редагування вже було скасовано.",
        "undo-summary": "Скасування редагування № $1 користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]])",
-       "undo-summary-username-hidden": "Скасувати перевірку $1 прихованого користувача",
+       "undo-summary-username-hidden": "Скасувати правку $1, виконану прихованим користувачем",
        "cantcreateaccounttitle": "Неможливо створити обліковий запис",
        "cantcreateaccount-text": "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].\n\n$3 зазначив таку причину: ''$2''",
-       "cantcreateaccount-range-text": "СÑ\82воÑ\80еннÑ\8f Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ñ\96з IP-адÑ\80еÑ\81 Ñ\83 Ð´Ñ\96апазонÑ\96  '''$1''', Ñ\8fкий Ð²ÐºÐ»Ñ\8eÑ\87аÑ\94 Ð²Ð°Ñ\88Ñ\83 IP-адÑ\80еÑ\81Ñ\83 ('''$4'''), Ð²Ð¶Ðµ заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину ''$2''",
+       "cantcreateaccount-range-text": "СÑ\82воÑ\80еннÑ\8f Ð¾Ð±Ð»Ñ\96кового Ð·Ð°Ð¿Ð¸Ñ\81Ñ\83 Ñ\96з IP-адÑ\80еÑ\81 Ñ\83 Ð´Ñ\96апазонÑ\96  '''$1''', Ñ\8fкий Ð²ÐºÐ»Ñ\8eÑ\87аÑ\94 Ð²Ð°Ñ\88Ñ\83 IP-адÑ\80еÑ\81Ñ\83 ('''$4'''), Ð±Ñ\83ло заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину ''$2''",
        "viewpagelogs": "Показати журнали для цієї сторінки",
        "nohistory": "Для цієї статті відсутній журнал редагувань.",
        "currentrev": "Поточна версія",
        "currentrevisionlink": "Поточна версія",
        "cur": "поточн.",
        "next": "наст.",
-       "last": "оÑ\81Ñ\82.",
+       "last": "попеÑ\80.",
        "page_first": "перша",
        "page_last": "остання",
-       "histlegend": "Пояснення: (поточн.) = відмінності від поточної версії,\n(ост.) = відмінності від попередньої версії, '''м''' = незначне редагування",
+       "histlegend": "Ð\92ибÑ\96Ñ\80 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97: Ð\9fознаÑ\87Ñ\82е Ñ\83 ÐºÑ\80Ñ\83глиÑ\85 Ð²Ñ\96конÑ\86Ñ\8fÑ\85 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 Ð´Ð»Ñ\8f Ð¿Ð¾Ñ\80Ñ\96внÑ\8fннÑ\8f Ñ\96 Ð½Ð°Ñ\82иÑ\81нÑ\96Ñ\82Ñ\8c Â«Enter» Ð°Ð±Ð¾ ÐºÐ½Ð¾Ð¿ÐºÑ\83 Ð²Ð½Ð¸Ð·Ñ\83.\n\nÐ\9fоÑ\8fÑ\81неннÑ\8f: (поÑ\82оÑ\87н.) = Ð²Ñ\96дмÑ\96нноÑ\81Ñ\82Ñ\96 Ð²Ñ\96д Ð¿Ð¾Ñ\82оÑ\87ноÑ\97 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97,\n(оÑ\81Ñ\82.) = Ð²Ñ\96дмÑ\96нноÑ\81Ñ\82Ñ\96 Ð²Ñ\96д Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\8cоÑ\97 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97, '''м''' = Ð½ÐµÐ·Ð½Ð°Ñ\87не Ñ\80едагÑ\83ваннÑ\8f",
        "history-fieldset-title": "Переглянути історію",
        "history-show-deleted": "Тільки вилучені",
        "histfirst": "найдавніші",
        "histlast": "найновіші",
        "historysize": "($1 {{PLURAL:$1|байт|байти|байтів}})",
-       "historyempty": "(поÑ\80ожнÑ\8cо)",
+       "historyempty": "(поÑ\80ожнÑ\8f)",
        "history-feed-title": "Історія редагувань",
        "history-feed-description": "Історія редагувань цієї сторінки в вікі",
        "history-feed-item-nocomment": "$1 в $2",
        "rev-deleted-comment": "(опис редагування вилучено)",
        "rev-deleted-user": "(ім'я автора стерто)",
        "rev-deleted-event": "(запис журналу вилучений)",
-       "rev-deleted-user-contribs": "[ім'я користувача або IP-адреса вилучені — редагування приховане у внеску]",
+       "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 переглянути цю версію], якщо забажаєте.",
        "revdelete-selected-text": "{{PLURAL:$1|Вибрана редакція|Вибрані редакції}} із [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Вибрана версія файлу|Вибрані версії файлу}} із [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:",
-       "revdelete-text-text": "Видалені версії будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
+       "revdelete-text-text": "Видалені версії будуть як і раніше, показані в історії сторінки, але частини їх вмісту будуть недоступні для учасників.",
        "revdelete-text-file": "Видалені версії файлу будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
-       "logdelete-text": "Видалені події в журналі будуть як і раніше видно в журналах, але частини їх вмісту будуть доступні для учасників.",
-       "revdelete-text-others": "Інші адміністратори на як і раніше будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
-       "revdelete-confirm": "Будь ласка, підтвердить, що ви справді бажаєте це здійснити, усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
+       "logdelete-text": "Ð\92идаленÑ\96 Ð¿Ð¾Ð´Ñ\96Ñ\97 Ð² Ð¶Ñ\83Ñ\80налÑ\96 Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ñ\8fк Ñ\96 Ñ\80анÑ\96Ñ\88е Ð²Ð¸Ð´Ð½Ð¾ Ð² Ð¶Ñ\83Ñ\80налаÑ\85, Ð°Ð»Ðµ Ñ\87аÑ\81Ñ\82ини Ñ\97Ñ\85 Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\83 Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пнÑ\96 Ð´Ð»Ñ\8f Ñ\83Ñ\87аÑ\81никÑ\96в.",
+       "revdelete-text-others": "Інші адміністратори, як і раніше, будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
+       "revdelete-confirm": "Будь ласка, підтвердіть, що ви справді бажаєте це здійснити, що усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
        "revdelete-suppress-text": "Приховування може відбуватися '''лише''' в таких випадках:\n* Потенційно наклепницькі відомості\n* Недоречна особиста інформація\n*: ''домашні адреси, номери телефонів, номер паспорта тощо.''",
        "revdelete-legend": "Встановити обмеження видимості",
        "revdelete-hide-text": "Текст версії сторінки",
        "logdelete-failure": "'''Не вдалося встановити видимість журналу:'''\n$1",
        "revdel-restore": "Змінити видимість",
        "pagehist": "Історія сторінки",
-       "deletedhist": "Історія вилучень",
+       "deletedhist": "Історія вилучена",
        "revdelete-hide-current": "Помилка приховування запису від $2, $1: це поточна версія.\nЇї не можна приховати.",
        "revdelete-show-no-access": "Помилка показу запису від $2, $1: він позначений як «з обмеженим доступом».\nВи не маєте доступу до нього.",
        "revdelete-modify-no-access": "Помилка редгування запису від $2, $1: його поначено як \"з обмеженим доступом\".\nВи не маєте доступу до нього.",
        "revdelete-no-change": "'''Увага:''' запис від $2, $1 вже має запрошені налаштування видимості.",
        "revdelete-concurrent-change": "Помилка редагування запису від $2, $1: його стан змінений кимось іншим, поки ви робили свої зміни.\nБудь ласка, перевірте журнал.",
        "revdelete-only-restricted": "Помилка приховання запису від $2, $1: ви не можете приховати записи від перегляду адміністраторів без одночасного вибору однієї з інших опцій приховання.",
-       "revdelete-reason-dropdown": "* Типові причини вилучення\n** Порушення авторських прав\n** Недоречна особиста інформація\n** Невідповідне ім'я користувача\n** Потенційно наклепна інформація",
+       "revdelete-reason-dropdown": "* Типові причини вилучення\n** Порушення авторських прав\n** Недоречні коментарі чи особиста інформація\n** Невідповідне ім'я користувача\n** Потенційно наклепницька інформація",
        "revdelete-otherreason": "Інша/додаткова причина:",
        "revdelete-reasonotherlist": "Інша причина",
-       "revdelete-edit-reasonlist": "Редагувати причини вилучень",
+       "revdelete-edit-reasonlist": "Редагувати причини вилучення",
        "revdelete-offender": "Автор версії:",
        "suppressionlog": "Журнал приховувань",
        "suppressionlogtext": "Нижче наведено список вилучень та блокувань, включаючи матеріали, приховані від адміністраторів.\nДивіться [[Special:BlockList|список блокувань]] для перегляду поточних блокувань.",
-       "mergehistory": "Об'єднання історій редагувань",
+       "mergehistory": "Об'єднати історії редагувань",
        "mergehistory-header": "Ця сторінка дозволяє вам об'єднати історії редагувань двох різних сторінок.\nПереконайтеся, що ця зміна збереже цілісність історії сторінки.",
        "mergehistory-box": "Об'єднати історії редагувань двох сторінок:",
        "mergehistory-from": "Вихідна сторінка:",
        "mergehistory-into": "Цільова сторінка:",
        "mergehistory-list": "Історія редагувань, що об'єднується",
-       "mergehistory-merge": "Ð\9dаÑ\81Ñ\82Ñ\83пнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 [[:$1]] Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð¾Ð±'Ñ\94днанÑ\96 Ñ\83 [[:$2]]. Ð\92икоÑ\80иÑ\81Ñ\82айÑ\82е Ð¿ÐµÑ\80емикаÑ\87Ñ\96 Ð´Ð»Ñ\8f Ñ\82ого, Ñ\89об Ð¾Ð±'Ñ\94днаÑ\82и Ñ\82Ñ\96лÑ\8cки Ð²Ð¸Ð±Ñ\80аний Ð´Ñ\96апазон Ñ\80едагÑ\83ванÑ\8cВрахуйте, що при використанні навігаційних посилань дані будуть втрачені.",
+       "mergehistory-merge": "Ð\9dаÑ\81Ñ\82Ñ\83пнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 [[:$1]] Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð¾Ð±'Ñ\94днанÑ\96 Ñ\83 [[:$2]]. Ð\92икоÑ\80иÑ\81Ñ\82айÑ\82е ÐºÑ\80Ñ\83глÑ\96 Ð²Ñ\96конÑ\86Ñ\8f, Ñ\89об Ð¾Ð±'Ñ\94днаÑ\82и Ñ\82Ñ\96лÑ\8cки Ð²Ð¸Ð±Ñ\80аний Ð´Ñ\96апазон Ñ\80едагÑ\83ванÑ\8c. \nВрахуйте, що при використанні навігаційних посилань дані будуть втрачені.",
        "mergehistory-go": "Показати редагування, що об'єднуються",
-       "mergehistory-submit": "Об'єднати редагування",
-       "mergehistory-empty": "Не знайдені редагування для об'єднання.",
+       "mergehistory-submit": "Об'єднати версії",
+       "mergehistory-empty": "Не знайдено версій для об'єднання.",
        "mergehistory-success": "$3 {{PLURAL:$3|редагування|редагування|редагувань}} з [[:$1]] успішно перенесені до [[:$2]].",
        "mergehistory-fail": "Не вдалося здійснити об'єднання історій сторінок, будь ласка, перевірте параметри сторінки й часу.",
        "mergehistory-fail-toobig": "Не вдалося виконати злиття історії оскільки буде перейменовано більше, ніж ліміт у $1 {{PLURAL:$1|версію|версії|версій}}.",
        "mergehistory-no-source": "Вихідна сторінка «$1» не існує.",
        "mergehistory-no-destination": "Цільова сторінка «$1» не існує.",
-       "mergehistory-invalid-source": "Ð\94жеÑ\80ело Ð¿Ð¾Ð²Ð¸Ð½Ð½Ðµ мати правильний заголовок.",
+       "mergehistory-invalid-source": "Ð\92иÑ\85Ñ\96дна Ñ\81Ñ\82оÑ\80Ñ\96нка Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð° мати правильний заголовок.",
        "mergehistory-invalid-destination": "Цільова сторінка повинна мати правильний заголовок.",
        "mergehistory-autocomment": "Редагування з [[:$1]] перенесені до [[:$2]]",
        "mergehistory-comment": "Редагування [[:$1]] перенесені до [[:$2]]: $3",
        "searchprofile-advanced-tooltip": "Шукати в заданих просторах назв",
        "search-result-size": "$1 ($2 {{PLURAL:$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": "(збігається із вмістом файлу)",
        "uploadwarning": "Попередження",
        "uploadwarning-text": "Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.",
        "savefile": "Зберегти файл",
-       "uploadedimage": "завантажив «[[$1]]»",
-       "overwroteimage": "завантажив нову версію «[[$1]]»",
        "uploaddisabled": "Завантаження заборонене",
        "copyuploaddisabled": "Завантаження через URL вимкнене.",
        "uploaddisabledtext": "Можливість завантаження файлів відключена.",
        "logentry-rights-rights": "$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3 із $4 на $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3",
        "logentry-rights-autopromote": "$1 було автоматично переведено із $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": "Тема:",
        "action-pagelang": "змінити мову сторінки",
        "log-name-pagelang": "Журнал змін мови",
        "log-description-pagelang": "Це журнал змін мови сторінок.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5."
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (увімкнено)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''вимкнено''')"
 }
index 2394e91..b8bdf65 100644 (file)
        "uploadwarning": "Cảnh báo!",
        "uploadwarning-text": "Xin hãy chỉnh sửa miêu tả tập tin ở dưới và thử lại.",
        "savefile": "Lưu tập tin",
-       "uploadedimage": "đã tải “[[$1]]” lên",
-       "overwroteimage": "đã tải lên một phiên bản mới của “[[$1]]”",
        "uploaddisabled": "Chức năng tải lên đã bị khóa.",
        "copyuploaddisabled": "Chức năng tải lên từ địa chỉ URL đã bị tắt.",
        "uploaddisabledtext": "Chức năng tải tập tin đã bị tắt.",
index af52399..32dc1d2 100644 (file)
        "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",
        "windows-nonascii-filename": "箇wiki弗支持文件名用特別個字符。",
        "uploadwarning": "上载警告",
        "savefile": "保存文件",
-       "uploadedimage": "上传 \"[[$1]]\"",
        "sourcefilename": "源文件:",
        "destfilename": "目标文件名:",
        "watchthisupload": "關注箇文件",
index 5a8b7e7..45675e0 100644 (file)
        "searchprofile-advanced-tooltip": "זוכן אין צוגעשטעלטע ָנאָמענטיילן",
        "search-result-size": "$1 ({{PLURAL:$2|איין ווארט|$2 ווערטער}})",
        "search-result-category-size": "{{PLURAL:$1|1 מיטגליד|$1 מיטגלידער}} ({{PLURAL:$2|1 אונטער־קאַטעגאריע|$2 אונטער־קאַטעגאריעס}}, {{PLURAL:$3|1 טעקע|$3 טעקעס}})",
-       "search-result-score": "שייכותדיקייט: $1%",
        "search-redirect": "(ווײַטערפֿירן $1)",
        "search-section": "(אפטיילונג $1)",
        "search-file-match": "(פאסט צו טעקע אינהאלט)",
        "uploadwarning": "אַרויפֿלאָדן וואָרענונג",
        "uploadwarning-text": "זײַט אַזוי גוט מאדיפֿיצירן די טעקע באַשרייבונג און פרובירט נאכאַמאָל.",
        "savefile": "אױפֿהיטן טעקע",
-       "uploadedimage": "אַרױפֿגעלאָדן \"[[$1]]\"",
-       "overwroteimage": "אַרויפֿגעלאָדן א נײַע ווערסיע פון \"[[$1]]\"",
        "uploaddisabled": "אַרויפֿלאָדן טעקעס מבוטל",
        "copyuploaddisabled": "ארויפלאדן דורך URL אומאקטיווירט",
        "uploaddisabledtext": "אַרויפֿלאָדן טעקעס נישט דערמעגלעכט.",
index 1bb63c5..f501be3 100644 (file)
@@ -77,7 +77,8 @@
                        "아라",
                        "Mywood",
                        "Impersonator 1",
-                       "Duolaimi"
+                       "Duolaimi",
+                       "TianyinLee"
                ]
        },
        "tog-underline": "链接下划线:",
        "mainpage": "首页",
        "mainpage-description": "首页",
        "policy-url": "Project:方针",
-       "portal": "社å\8cºä¸\93页",
+       "portal": "社å\8cºä¸»页",
        "portal-url": "Project:社区专页",
        "privacy": "隐私权政策",
        "privacypage": "Project:隐私权政策",
        "hidetoc": "隐藏",
        "collapsible-collapse": "折叠",
        "collapsible-expand": "展开",
+       "confirmable-confirm": "{{GENDER:$1|你}}确定么?",
+       "confirmable-yes": "是",
+       "confirmable-no": "否",
        "thisisdeleted": "查看或还原$1?",
        "viewdeleted": "查看$1?",
        "restorelink": "$1个已被删除的编辑",
        "showdiff": "显示更改",
        "blankarticle": "<strong>警告</strong>:您创建的页面是空白的。如果您再次点击“{{int:savearticle}}”,您将真的创建没有任何内容的页面。",
        "anoneditwarning": "<strong>警告:</strong>您没有登录。您的IP地址将被记录在该页面的编辑历史中。",
-       "anonpreviewwarning": "''你没有登录。保存会记录你的IP地址于该页面的编辑历史中。''",
+       "anonpreviewwarning": "<em>你没有登录。保存会记录你的IP地址于该页面的编辑历史中。</em>",
        "missingsummary": "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
        "missingcommenttext": "请在下面输入评论。",
        "missingcommentheader": "'''提示:''' 您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。",
        "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-file-match": "(匹配文件内容)",
        "uploadwarning": "上传警告",
        "uploadwarning-text": "请修改下面的文件说明并重试。",
        "savefile": "保存文件",
-       "uploadedimage": "上传“[[$1]]”",
-       "overwroteimage": "上传“[[$1]]”的新版本",
        "uploaddisabled": "上传己停用。",
        "copyuploaddisabled": "URL上传已停用。",
        "uploaddisabledtext": "文件上传已停用。",
        "group-user.css": "/* 放置于此的CSS将只会影响注册用户 */",
        "group-bot.css": "/* 放置于这里的CSS将只影响机器人 */",
        "group-sysop.css": "/* 放置于这里的CSS将只影响管理员 */",
-       "group-bureaucrat.css": "/* 放置于这里的CSS将只影响行政员 */",
+       "group-bureaucrat.css": "/* 放置于这里的CSS将只影响行政员 */",
        "common.js": "/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */",
        "group-autoconfirmed.js": "/* 这里的任何JavaScript将只为自动确认用户加载 */",
        "group-user.js": "/* 放置于此的JavaScript将只为注册用户加载 */",
        "logentry-rights-rights": "$1{{GENDER:$2|更改}}$3的用户组自$4至$5",
        "logentry-rights-rights-legacy": "$1更改$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 报告bug]。或者你可以使用下面的简单表格。你的评论将被添加至页面“[$3 $2]”,附有你的用户名。",
        "feedback-subject": "主题:",
        "action-pagelang": "更改页面语言",
        "log-name-pagelang": "更改语言日志",
        "log-description-pagelang": "这是页面语言更改的日志。",
-       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。"
+       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。",
+       "default-skin-not-found": "天哪!您wiki的默认皮肤(<code>$wgDefaultSkin</code>)<code>$1</code>不可用。您的安装版本看起来需要包含以下皮肤。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。\n\n$2\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。\n:* 尝试从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤。\n:* 下载[https://www.mediawiki.org/wiki/Download 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。\n\n; 如果您升级了您的MediaWiki的话:\n: MediaWiki 1.24版本起不再自动启用已安装皮肤(参见[https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 此手册])。您可复制粘贴以下文本至您wiki的<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; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。\n:* 尝试从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤。\n:* 下载[https://www.mediawiki.org/wiki/Download 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。参见MediaWiki官网手册[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 5c2a3d9..d8adda9 100644 (file)
@@ -67,7 +67,7 @@
        "tog-numberheadings": "標題自動編號",
        "tog-showtoolbar": "顯示編輯工具列",
        "tog-editondblclick": "啟用滑鼠雙擊編輯頁面",
-       "tog-editsectiononrightclick": "啟用滑鼠右鍵點選章節標題編輯",
+       "tog-editsectiononrightclick": "開啟滑鼠右鍵點選章節標題編輯",
        "tog-watchcreations": "將我建立的頁面和上傳的檔案加入監視清單",
        "tog-watchdefault": "將我編輯的頁面和檔案新增至監視清單",
        "tog-watchmoves": "將我移動的頁面和檔案加入監視清單",
        "edithelp": "編輯説明",
        "mainpage": "首頁",
        "mainpage-description": "首頁",
-       "policy-url": "Project:方針",
+       "policy-url": "Project:Policy",
        "portal": "社群主頁",
        "portal-url": "Project:社群專頁",
        "privacy": "隱私政策",
        "hidetoc": "隱藏",
        "collapsible-collapse": "合併",
        "collapsible-expand": "展開",
+       "confirmable-confirm": "{{GENDER:$1|您}}確定嗎?",
+       "confirmable-yes": "是",
+       "confirmable-no": "否",
        "thisisdeleted": "檢視或還原 $1 ?",
        "viewdeleted": "檢視 $1?",
        "restorelink": "$1 個已刪除的編輯",
        "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-file-match": "(符合檔案內容)",
        "timezoneregion-europe": "歐洲",
        "timezoneregion-indian": "印度洋",
        "timezoneregion-pacific": "太平洋",
-       "allowemail": "啟用來自其他使用者的郵件通知功能",
+       "allowemail": "開啟來自其他使用者的郵件通知功能",
        "prefs-searchoptions": "搜尋",
        "prefs-namespaces": "命名空間",
        "default": "預設",
        "uploadwarning": "上傳警告",
        "uploadwarning-text": "請修改以下的檔案描述並重試。",
        "savefile": "儲存檔案",
-       "uploadedimage": "已上傳 \"[[$1]]\"",
-       "overwroteimage": "已上傳新版本的 \"[[$1]]\"",
        "uploaddisabled": "己停用上傳。",
        "copyuploaddisabled": "己停用使用 URL 上傳。",
        "uploaddisabledtext": "已停用檔案上傳。",
        "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": "頁面包含太多高開銷函數解析器(例如<code>#ifexist</code>)。參見[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
-       "broken-file-category-desc": "黨頁面包含受損檔案連接(連入被嵌入之不存在檔案)時。",
+       "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": "分類被禁用",
        "mailnologin": "沒有傳送位址",
        "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件位址才可以傳送信件給其他使用者。",
-       "emailuser": "E-mail該使用者",
-       "emailuser-title-target": "E-mail該{{GENDER:$1|使用者}}",
+       "emailuser": "Email 給此使用者",
+       "emailuser-title-target": "Email 給此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "E-mail給使用者",
        "emailpage": "E-mail 給使用者",
        "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件位址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "emailccsubject": "您寄給 $1 的訊息副本:$2",
        "emailsent": "電子郵件已寄出",
        "emailsenttext": "您的電子郵件訊息已經寄出。",
-       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"E-mail該使用者\" 功能寄給 $2。",
+       "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"Email 給此使用者\" 功能寄給 $2。",
        "usermessage-summary": "留給系統訊息。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視清單",
        "block-log-flags-noautoblock": "停用自動封鎖",
        "block-log-flags-noemail": "停用電子郵件",
        "block-log-flags-nousertalk": "無法編輯自己的對話頁面",
-       "block-log-flags-angry-autoblock": "加強自動封鎖已啟用",
+       "block-log-flags-angry-autoblock": "加強自動封鎖已開啟",
        "block-log-flags-hiddenname": "隱藏使用者名稱",
        "range_block_disabled": "管理員可建立範圍封鎖的權限以被關閉。",
        "ipb_expiry_invalid": "無效的終止時間。",
        "exif-compression-2": "CCITT第3組一維修改霍夫曼遊程編碼",
        "exif-compression-3": "CCITT第3組傳真編碼",
        "exif-compression-4": "CCITT第4組傳真編碼",
-       "exif-compression-6": "JPEG(舊)",
+       "exif-compression-6": "JPEG (舊)",
        "exif-copyrighted-true": "受版權保護",
        "exif-copyrighted-false": "版權所屬者不明",
        "exif-unknowndate": "未知的日期",
        "exif-sharpness-1": "低",
        "exif-sharpness-2": "高",
        "exif-subjectdistancerange-0": "未知",
-       "exif-subjectdistancerange-1": "自動處理程式(宏)",
+       "exif-subjectdistancerange-1": "巨集",
        "exif-subjectdistancerange-2": "近景",
        "exif-subjectdistancerange-3": "遠景",
        "exif-gpslatitude-n": "北緯",
        "watchlistedit-clear-legend": "清空監視清單",
        "watchlistedit-clear-explain": "將會移除您的監視清單中所有的標題",
        "watchlistedit-clear-titles": "標題:",
-       "watchlistedit-clear-submit": "清空監視清單無法還原)",
+       "watchlistedit-clear-submit": "清空監視清單 (無法還原)",
        "watchlistedit-clear-done": "已清空您的監視清單。",
        "watchlistedit-clear-removed": "已移除 $1 個標題:",
        "watchlistedit-too-many": "太多要在此處顯示的頁面。",
        "specialpages-group-spam": "反垃圾訊息工具",
        "blankpage": "空白頁面",
        "intentionallyblankpage": "此頁面被故意設為空白。",
-       "external_image_whitelist": " #留下這行一樣的文字<pre>\n#在下面(//之中間部份)輸入正規表達式\n#這些將會跟外部(已超連結的)圖片配合\n#那些配合到出來的會顯示成圖片,否則就只會顯示成連結\n#有 # 開頭的行會當成註解\n#大小寫並無區分\n\n#在這行上面輸入所有的regex。留下這行一樣的文字</pre>",
+       "external_image_whitelist": " #請勿修改本行文字<pre>\n#請於下方填寫正規表示法 (只需 // 之間的內容)\n#將會檢查外部連結的圖片是否符合這些條件\n#符合條件的連結會以圖片顯示,否則只顯示連結\n#以 # 開頭的行會被做為註解\n#此條件不區分大小寫\n\n#請將所有正規表示法輸入在此行上方,請勿修改本行文字</pre>",
        "tags": "有效變更標籤",
        "tag-filter": "[[Special:Tags|標籤]]搜尋:",
        "tag-filter-submit": "搜尋",
        "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": "主旨:",
        "action-pagelang": "更改頁面語言",
        "log-name-pagelang": "更改語言日誌",
        "log-description-pagelang": "這是頁面語言更改日誌。",
-       "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3頁面語言從$4到$5。"
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5。",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (已開啟)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''已關閉''')"
 }
index 0fcf660..15c8142 100644 (file)
@@ -8,5 +8,12 @@
  *
  */
 
+$digitTransformTable = array();
+
+$separatorTransformTable = array(
+       '.' => ',',
+       ',' => '.'
+);
+
 $fallback = 'ar';
 
index bd348c4..8d9426e 100644 (file)
@@ -1,4 +1,4 @@
--- Add indexes to the mime types in image for use on Special:MIMEsearch,
+-- Add indexes to the MIME types in image for use on Special:MIMEsearch,
 -- changes a query like
 --
 -- SELECT img_name FROM image WHERE img_major_mime = "image" AND img_minor_mime = "svg";
index 246d6fc..0a65e31 100644 (file)
@@ -80,7 +80,7 @@ if ( !$mime ) {
        }
 }
 if ( $mime ) {
-       # Use custom handling to serve files with a known mime type
+       # Use custom handling to serve files with a known MIME type
        # This way we can serve things like .svg files that the built-in
        # PHP webserver doesn't understand.
        # ;) Nicely enough we just happen to bundle a mime.types file
diff --git a/maintenance/findMissingFiles.php b/maintenance/findMissingFiles.php
new file mode 100644 (file)
index 0000000..8c71699
--- /dev/null
@@ -0,0 +1,85 @@
+<?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
+ * @author Aaron Schulz
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+class FindMissingFiles extends Maintenance {
+       function __construct() {
+               parent::__construct();
+
+               $this->mDescription = 'Find registered files with no corresponding file.';
+               $this->addOption( 'start', 'Starting file name', false, true );
+               $this->setBatchSize( 200 );
+       }
+
+       function execute() {
+               $lastName = $this->getOption( 'start', '' );
+
+               $repo = RepoGroup::singleton()->getLocalRepo();
+               $dbr = $repo->getSlaveDB();
+               $be = $repo->getBackend();
+
+               do {
+                       $res = $dbr->select( 'image',
+                               'img_name',
+                               array( "img_name >= " . $dbr->addQuotes( $lastName ) ),
+                               __METHOD__,
+                               array( 'ORDER BY' => 'img_name', 'LIMIT' => $this->mBatchSize )
+                       );
+
+                       // Check if any of these files are missing...
+                       $pathsByName = array();
+                       foreach ( $res as $row ) {
+                               $file = $repo->newFile( $row->img_name );
+                               $pathsByName[$row->img_name] = $file->getPath();
+                               $lastName = $row->img_name;
+                       }
+                       $be->preloadFileStat( array( 'srcs' => $pathsByName ) );
+                       foreach ( $pathsByName as $path ) {
+                               if ( $be->fileExists( array( 'src' => $path ) ) === false ) {
+                                       $this->output( "$path\n" );
+                               }
+                       }
+
+                       // Find all missing old versions of any of the files in this batch...
+                       if ( count( $pathsByName ) ) {
+                               $ores = $dbr->select( 'oldimage',
+                                       array( 'oi_name', 'oi_archive_name' ),
+                                       array( 'oi_name' => array_keys( $pathsByName ) ),
+                                       __METHOD__
+                               );
+                               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" );
+                                       }
+                               }
+                       }
+               } while ( $res->numRows() >= $this->mBatchSize );
+       }
+}
+
+$maintClass = 'FindMissingFiles';
+require_once RUN_MAINTENANCE_IF_MAIN;
index 8efabef..0660e55 100644 (file)
@@ -45,6 +45,7 @@ rfc|http://www.rfc-editor.org/rfc/rfc$1.txt|0
 s23wiki|http://s23.org/wiki/$1|0
 seattlewireless|http://seattlewireless.net/$1|0
 senseislibrary|http://senseis.xmp.net/?$1|0
+shoutwiki|http://www.shoutwiki.com/wiki/$1|0
 sourceforge|http://sourceforge.net/$1|0
 sourcewatch|http://www.sourcewatch.org/index.php?title=$1|0
 squeak|http://wiki.squeak.org/squeak/$1|0
@@ -54,6 +55,7 @@ tmnet|http://www.technomanifestos.net/?$1|0
 theopedia|http://www.theopedia.com/$1|0
 twiki|http://twiki.org/cgi-bin/view/$1|0
 uea|http://uea.org/vikio/index.php/$1|0
+uncyclopedia|http://en.uncyclopedia.co/wiki/$1|0
 unreal|http://wiki.beyondunreal.com/$1|0
 usemod|http://www.usemod.com/cgi-bin/wiki.pl?$1|0
 webseitzwiki|http://webseitz.fluxent.com/wiki/$1|0
index 53559ef..aad0cc3 100644 (file)
@@ -47,6 +47,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
 ('s23wiki','http://s23.org/wiki/$1',0),
 ('seattlewireless','http://seattlewireless.net/$1',0),
 ('senseislibrary','http://senseis.xmp.net/?$1',0),
+('shoutwiki','http://www.shoutwiki.com/wiki/$1',0),
 ('sourceforge','http://sourceforge.net/$1',0),
 ('sourcewatch','http://www.sourcewatch.org/index.php?title=$1',0),
 ('squeak','http://wiki.squeak.org/squeak/$1',0),
@@ -56,6 +57,7 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
 ('theopedia','http://www.theopedia.com/$1',0),
 ('twiki','http://twiki.org/cgi-bin/view/$1',0),
 ('uea','http://uea.org/vikio/index.php/$1',0),
+('uncyclopedia','http://en.uncyclopedia.co/wiki/$1',0),
 ('unreal','http://wiki.beyondunreal.com/$1',0),
 ('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1',0),
 ('webseitzwiki','http://webseitz.fluxent.com/wiki/$1',0),
index eed76b6..e97f292 100644 (file)
@@ -26,6 +26,7 @@
                "../../resources/src/jquery/jquery.checkboxShiftClick.js",
                "../../resources/src/jquery/jquery.client.js",
                "../../resources/src/jquery/jquery.colorUtil.js",
+               "../../resources/src/jquery/jquery.confirmable.js",
                "../../resources/src/jquery/jquery.footHovzer.js",
                "../../resources/src/jquery/jquery.getAttrs.js",
                "../../resources/src/jquery/jquery.hidpi.js",
index 8cb23fd..831118c 100644 (file)
@@ -70,7 +70,7 @@ class RefreshImageMetadata extends Maintenance {
 
                $this->addOption(
                        'mime',
-                       '(Inefficient!) Only refresh files with this mime type. Can accept wild-card image/*',
+                       '(Inefficient!) Only refresh files with this MIME type. Can accept wild-card image/*',
                        false,
                        true
                );
index c890c69..adebd27 100644 (file)
@@ -47,7 +47,7 @@ class Undelete extends Maintenance {
                if ( !$wgUser ) {
                        $this->error( "Invalid username", true );
                }
-               $archive = new PageArchive( $title );
+               $archive = new PageArchive( $title, RequestContext::getMain()->getConfig() );
                $this->output( "Undeleting " . $title->getPrefixedDBkey() . '...' );
                $archive->undelete( array(), $reason );
                $this->output( "done\n" );
index d3f8f7d..e5d80ca 100644 (file)
@@ -191,6 +191,19 @@ return array(
        'jquery.colorUtil' => array(
                'scripts' => 'resources/src/jquery/jquery.colorUtil.js',
        ),
+       'jquery.confirmable' => array(
+               'scripts' => array(
+                       'resources/src/jquery/jquery.confirmable.js',
+                       'resources/src/jquery/jquery.confirmable.mediawiki.js',
+               ),
+               'messages' => array(
+                       'confirmable-confirm',
+                       'confirmable-yes',
+                       'confirmable-no',
+               ),
+               'styles' => 'resources/src/jquery/jquery.confirmable.css',
+               'dependencies' => 'mediawiki.jqueryMsg',
+       ),
        // Use mediawiki.cookie in new code, rather than jquery.cookie.
        'jquery.cookie' => array(
                'scripts' => 'resources/lib/jquery/jquery.cookie.js',
@@ -798,6 +811,9 @@ return array(
                        'user.tokens',
                ),
        ),
+       'mediawiki.content.json' => array(
+               'styles' => 'resources/src/mediawiki/mediawiki.content.json.css',
+       ),
        'mediawiki.debug' => array(
                'scripts' => array(
                        'resources/src/mediawiki/mediawiki.debug.js',
@@ -862,6 +878,9 @@ return array(
        ),
        'mediawiki.htmlform' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.htmlform.js',
+               'dependencies' => array(
+                       'jquery.mwExtension',
+               ),
                'messages' => array( 'htmlform-chosen-placeholder' ),
        ),
        'mediawiki.icon' => array(
index 50df67a..02bdafa 100644 (file)
                        "Xiaomingyan",
                        "Yfdyh000",
                        "Zhangjintao",
-                       "乌拉跨氪"
+                       "乌拉跨氪",
+                       "Great Brightstar"
                ]
        },
        "ooui-outline-control-move-down": "下移项",
        "ooui-outline-control-move-up": "上移项",
        "ooui-outline-control-remove": "删除项",
        "ooui-toolbar-more": "更多",
-       "ooui-dialog-message-accept": "",
+       "ooui-dialog-message-accept": "确定",
        "ooui-dialog-message-reject": "取消",
        "ooui-dialog-process-error": "发生一些错误",
        "ooui-dialog-process-dismiss": "解除",
index 525304c..22c3079 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * 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-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
  */
 .oo-ui-dialog-content > .oo-ui-window-head,
 .oo-ui-dialog-content > .oo-ui-window-body,
index 1267a3c..c53772e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * 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-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
  */
 .oo-ui-dialog-content > .oo-ui-window-head,
 .oo-ui-dialog-content > .oo-ui-window-body,
index 737113e..6f63575 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * 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-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
  */
 ( function ( OO ) {
 
@@ -1114,6 +1114,7 @@ OO.ui.Frame = function OoUiFrame( config ) {
        // Properties
        this.loading = null;
        this.config = config;
+       this.dir = null;
 
        // Initialize
        this.$element
@@ -1287,7 +1288,7 @@ OO.ui.Frame.prototype.load = function () {
        win = this.$element.prop( 'contentWindow' );
        doc = win.document;
 
-       // Figure out directionality:
+       // Cache directionality
        this.dir = OO.ui.Element.getDir( this.$element ) || 'ltr';
 
        // Initialize contents
@@ -1298,7 +1299,7 @@ OO.ui.Frame.prototype.load = function () {
        doc.write(
                '<!doctype html>' +
                '<html>' +
-                       '<body class="oo-ui-frame-content oo-ui-' + this.dir + '" dir="' + this.dir + '">' +
+                       '<body class="oo-ui-frame-content oo-ui-' + this.getDir() + '" dir="' + this.getDir() + '">' +
                        '</body>' +
                '</html>'
        );
@@ -1331,6 +1332,15 @@ OO.ui.Frame.prototype.setSize = function ( width, 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.
  *
index bffc230..aa5e6ac 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * 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-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
  */
 /* Textures */
 
diff --git a/resources/src/jquery/jquery.confirmable.css b/resources/src/jquery/jquery.confirmable.css
new file mode 100644 (file)
index 0000000..de69072
--- /dev/null
@@ -0,0 +1,28 @@
+.jquery-confirmable-button {
+       /* Automatically flipped */
+       margin-left: 1ex;
+}
+
+.jquery-confirmable-wrapper {
+       /* Line breaks within the interface text are unpleasant */
+       white-space: nowrap;
+       /* Hiding the original text when it slides to the left */
+       overflow: hidden;
+}
+
+.jquery-confirmable-wrapper,
+.jquery-confirmable-element,
+.jquery-confirmable-interface {
+       /* We need inline-block to be able to size the elements and calculate their dimensions */
+       display: inline-block;
+       /* inline-block elements in this context align to baseline by default */
+       vertical-align: bottom;
+}
+
+.jquery-confirmable-element {
+       transition: margin 250ms cubic-bezier(0.2, 0.8, 0.2, 0.8);
+}
+
+.jquery-confirmable-interface {
+       transition: width 250ms cubic-bezier(0.2, 0.8, 0.2, 0.8);
+}
diff --git a/resources/src/jquery/jquery.confirmable.js b/resources/src/jquery/jquery.confirmable.js
new file mode 100644 (file)
index 0000000..4b80d95
--- /dev/null
@@ -0,0 +1,168 @@
+/**
+ * jQuery confirmable plugin
+ *
+ * Released under the MIT License.
+ *
+ * @author Bartosz Dziewoński
+ *
+ * @class jQuery.plugin.confirmable
+ */
+( function ( $ ) {
+       var identity = function ( data ) {
+               return data;
+       };
+
+       /**
+        * Enable inline confirmation for given clickable element (like `<a />` or `<button />`).
+        *
+        * An additional inline confirmation step being shown before the default action is carried out on
+        * click.
+        *
+        * Calling `.confirmable( { handler: function () { … } } )` will fire the handler only after the
+        * confirmation step.
+        *
+        * The element will have the `jquery-confirmable-element` class added to it when it's clicked for
+        * the first time, which has `white-space: nowrap;` and `display: inline-block;` defined in CSS.
+        * If the computed values for the element are different when you make it confirmable, you might
+        * encounter unexpected behavior.
+        *
+        * @param {Object} [options]
+        * @param {string} [options.events='click'] Events to hook to.
+        * @param {Function} [options.wrapperCallback] Callback to fire when preparing confirmable
+        *     interface. Receives the interface jQuery object as the only parameter.
+        * @param {Function} [options.buttonCallback] Callback to fire when preparing confirmable buttons.
+        *     It is fired separately for the 'Yes' and 'No' button. Receives the button jQuery object as
+        *     the first parameter and 'yes' or 'no' as the second.
+        * @param {Function} [options.handler] Callback to fire when the action is confirmed (user clicks
+        *     the 'Yes' button).
+        * @param {string} [options.i18n] Text to use for interface elements.
+        * @param {string} [options.i18n.confirm] Text to use for the confirmation question.
+        * @param {string} [options.i18n.yes] Text to use for the 'Yes' button.
+        * @param {string} [options.i18n.no] Text to use for the 'No' button.
+        *
+        * @chainable
+        */
+       $.fn.confirmable = function ( options ) {
+               options = $.extend( true, {}, $.fn.confirmable.defaultOptions, options || {} );
+
+               return this.on( options.events, function ( e ) {
+                       var $element, $text, $buttonYes, $buttonNo, $wrapper, $interface, $elementClone,
+                               interfaceWidth, elementWidth, rtl, positionOffscreen, positionRestore, sideMargin;
+
+                       $element = $( this );
+
+                       if ( $element.data( 'jquery-confirmable-button' ) ) {
+                               // We're running on a clone of this element that represents the 'Yes' or 'No' button.
+                               // (This should never happen for the 'No' case unless calling code does bad things.)
+                               return;
+                       }
+
+                       // Only prevent native event handling. Stopping other JavaScript event handlers
+                       // is impossible because they might have already run (we have no control over the order).
+                       e.preventDefault();
+
+                       rtl = $element.css( 'direction' ) === 'rtl';
+                       if ( rtl ) {
+                               positionOffscreen = { position: 'absolute', right: '-9999px' };
+                               positionRestore = { position: '', right: '' };
+                               sideMargin = 'marginRight';
+                       } else {
+                               positionOffscreen = { position: 'absolute', left: '-9999px' };
+                               positionRestore = { position: '', left: '' };
+                               sideMargin = 'marginLeft';
+                       }
+
+                       if ( $element.hasClass( 'jquery-confirmable-element' ) ) {
+                               $wrapper = $element.closest( '.jquery-confirmable-wrapper' );
+                               $interface = $wrapper.find( '.jquery-confirmable-interface' );
+                               $text = $interface.find( '.jquery-confirmable-text' );
+                               $buttonYes = $interface.find( '.jquery-confirmable-button-yes' );
+                               $buttonNo = $interface.find( '.jquery-confirmable-button-no' );
+
+                               interfaceWidth = $interface.data( 'jquery-confirmable-width' );
+                               elementWidth = $element.data( 'jquery-confirmable-width' );
+                       } else {
+                               $elementClone = $element.clone( true );
+                               $element.addClass( 'jquery-confirmable-element' );
+
+                               elementWidth = $element.width();
+                               $element.data( 'jquery-confirmable-width', elementWidth );
+
+                               $wrapper = $( '<span>' )
+                                       .addClass( 'jquery-confirmable-wrapper' );
+                               $element.wrap( $wrapper );
+
+                               // Build the mini-dialog
+                               $text = $( '<span>' )
+                                       .addClass( 'jquery-confirmable-text' )
+                                       .text( options.i18n.confirm );
+
+                               // Clone original element along with event handlers to easily replicate its behavior.
+                               // We could fiddle with .trigger() etc., but that is troublesome especially since
+                               // Safari doesn't implement .click() on <a> links and jQuery follows suit.
+                               $buttonYes = $elementClone.clone( true )
+                                       .addClass( 'jquery-confirmable-button jquery-confirmable-button-yes' )
+                                       .data( 'jquery-confirmable-button', true )
+                                       .text( options.i18n.yes );
+                               if ( options.handler ) {
+                                       $buttonYes.on( options.events, options.handler );
+                               }
+                               $buttonYes = options.buttonCallback( $buttonYes, 'yes' );
+
+                               // Clone it without any events and prevent default action to represent the 'No' button.
+                               $buttonNo = $elementClone.clone( false )
+                                       .addClass( 'jquery-confirmable-button jquery-confirmable-button-no' )
+                                       .data( 'jquery-confirmable-button', true )
+                                       .text( options.i18n.no )
+                                       .on( options.events, function ( e ) {
+                                               $element.css( sideMargin, 0 );
+                                               $interface.css( 'width', 0 );
+                                               e.preventDefault();
+                                       } );
+                               $buttonNo = options.buttonCallback( $buttonNo, 'no' );
+
+                               // Prevent memory leaks
+                               $elementClone.remove();
+
+                               $interface = $( '<span>' )
+                                       .addClass( 'jquery-confirmable-interface' )
+                                       .append( $text, $buttonYes, $buttonNo );
+                               $interface = options.wrapperCallback( $interface );
+
+                               // Render offscreen to measure real width
+                               $interface.css( positionOffscreen );
+                               // Insert it in the correct place while we're at it
+                               $element.after( $interface );
+                               interfaceWidth = $interface.width();
+                               $interface.data( 'jquery-confirmable-width', interfaceWidth );
+                               $interface.css( positionRestore );
+
+                               // Hide to animate the transition later
+                               $interface.css( 'width', 0 );
+                       }
+
+                       // Hide element, show interface. This triggers both transitions.
+                       // In a timeout to trigger the 'width' transition.
+                       setTimeout( function () {
+                               $element.css( sideMargin, -elementWidth );
+                               $interface.css( 'width', interfaceWidth );
+                       }, 1 );
+               } );
+       };
+
+       /**
+        * Default options. Overridable primarily for internationalisation handling.
+        * @property {Object} defaultOptions
+        */
+       $.fn.confirmable.defaultOptions = {
+               events: 'click',
+               wrapperCallback: identity,
+               buttonCallback: identity,
+               handler: null,
+               i18n: {
+                       confirm: 'Are you sure?',
+                       yes: 'Yes',
+                       no: 'No'
+               }
+       };
+}( jQuery ) );
diff --git a/resources/src/jquery/jquery.confirmable.mediawiki.js b/resources/src/jquery/jquery.confirmable.mediawiki.js
new file mode 100644 (file)
index 0000000..7ac04f4
--- /dev/null
@@ -0,0 +1,13 @@
+/*!
+ * jQuery confirmable plugin customization for MediaWiki
+ *
+ * This file serves to inject our localised messages into it.
+ */
+
+( function ( mw, $ ) {
+       $.fn.confirmable.defaultOptions.i18n = {
+               confirm: mw.message( 'confirmable-confirm', mw.user ).text(),
+               yes: mw.message( 'confirmable-yes' ).text(),
+               no: mw.message( 'confirmable-no' ).text()
+       };
+}( mediaWiki, jQuery ) );
index 5b1e2a7..b46ab37 100644 (file)
                        colspan,
                        headerCount,
                        longestTR,
-                       matrixRowIndex,
-                       matrixColumnIndex,
                        exploded,
                        $tableHeaders = $( [] ),
                        $tableRows = $( 'thead:eq(0) > tr', table );
                        // Loop through all the dom cells of the thead
                        $tableRows.each( function ( rowIndex, row ) {
                                $.each( row.cells, function ( columnIndex, cell ) {
+                                       var matrixRowIndex,
+                                               matrixColumnIndex;
+
                                        rowspan = Number( cell.rowSpan );
                                        colspan = Number( cell.colSpan );
 
index dc44c84..64471b2 100644 (file)
@@ -17,8 +17,6 @@
 
 #mw-createaccount-join {
        margin-left: 0.75em;
-       /* Separate from background image */
-       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
        width: auto;
        display: inline-block;
 }
index eced8cf..6d6fdde 100644 (file)
@@ -3,10 +3,10 @@
 // Checkbox
 //
 // Styling checkboxes in a way that works cross browser is a tricky problem to solve.
-// In MediaWiki UI we wrap a checkbox and label inside mw-ui-checkbox
-// This renders in all browsers except IE6-8 which do not support the :checked selector
-// these are kept backwards compatible using the :not(#noop) selector
-// Ensure to markup the checkbox and label with id and for attributes respectively
+// In MediaWiki UI put a checkbox and label inside a mw-ui-checkbox div.
+// This renders in all browsers except IE6-8 which do not support the :checked selector;
+// these are kept backwards-compatible using the :not(#noop) selector.
+// You should give the checkbox and label matching "id" and "for" attributes, respectively.
 //
 // Markup:
 // <div class="mw-ui-checkbox">
index 25dba78..6996ab8 100644 (file)
@@ -11,7 +11,7 @@
 }
 // Inputs
 //
-// When using an input or textarea apply the mw-ui-input class.
+// Apply the mw-ui-input class to input and textarea fields.
 //
 // Styleguide 1.
 
@@ -22,8 +22,8 @@
 // When focused a progressive highlight appears to the left of the field.
 //
 // Markup:
-// <input value="input" class="mw-ui-input" value="input">
-// <textarea class="mw-ui-input">textarea</textarea>
+// <input class="mw-ui-input" placeholder="Enter your name">
+// <textarea class="mw-ui-input">Text here</textarea>
 //
 // Styleguide 1.1.
 .mw-ui-input {
@@ -34,6 +34,7 @@
        width: 100%;
        padding: .3em .3em .3em .6em;
        display: block;
+       vertical-align: middle;
        // Override user agent stylesheet properties. Instead use parent element.
        color: inherit;
        font-family: inherit;
@@ -72,7 +73,7 @@ textarea.mw-ui-input {
 // Use mw-ui-input-inline with mw-ui-input in cases where you want a button to line up with the input.
 //
 // Markup:
-// <input value="input" class="mw-ui-input mw-ui-input-inline" value="input">
+// <input class="mw-ui-input mw-ui-input-inline">
 // <button class="mw-ui-button mw-ui-constructive">go</button>
 //
 // Styleguide 1.2.
@@ -84,21 +85,27 @@ textarea.mw-ui-input {
 // mw-ui-input-large
 //
 // Use mw-ui-input-large with mw-ui-input in cases where there are multiple inputs on a screen and you
-// want to draw more attention to one instance. For example add topic / reply to post forms.
-// Currently in draft status and subject to change. When used on an input, the text is styled
-// in a large font. When used alongside another mw-ui-input large they are pushed together to seem like
-// one contiguous input.
+// want to draw attention to one instance. For example, replying with a subject line and more text.
+// Currently in draft status and subject to change. When used on an input field, the text is styled
+// in a large font. When used alongside another mw-ui-input large they are pushed together to form one
+// contiguous block.
 //
 // Markup:
-// <input value="input" class="mw-ui-input mw-ui-input-large" value="input">
-// <textarea class="mw-ui-input mw-ui-input-large">textarea</textarea>
+// <input value="input" class="mw-ui-input mw-ui-input-large" value="input" placeholder="Enter subject">
+// <textarea class="mw-ui-input mw-ui-input-large" placeholder="Provide additional details"></textarea>
 //
 // Styleguide 1.3.
 .mw-ui-input-large {
        margin-top: 0;
        margin-bottom: 0;
+
+       // When two large inputs are together, we make them flush by hiding one of the borders
        & + .mw-ui-input-large {
-               border-top-width: 0;
+               margin-top: -1px;
+       }
+       // When focusing, make the input relative to raise it above any attached inputs to unhide its borders
+       &:focus {
+               position: relative;
        }
 }
 
diff --git a/resources/src/mediawiki/mediawiki.content.json.css b/resources/src/mediawiki/mediawiki.content.json.css
new file mode 100644 (file)
index 0000000..583dd39
--- /dev/null
@@ -0,0 +1,54 @@
+/**
+ * CSS for styling HTML-formatted JSON Schema objects
+ *
+ * @file
+ * @author Munaf Assaf <massaf@wikimedia.org>
+ */
+
+.mw-json {
+       border-collapse: collapse;
+       border-spacing: 0;
+       font-family: 'Bitstream Vera Sans', 'DejaVu Sans', 'Lucida Sans', 'Lucida Grande', sans-serif;
+       font-style: normal;
+}
+
+.mw-json th,
+.mw-json td {
+       border: 1px solid gray;
+       font-size: 16px;
+       padding: 0.5em 1em;
+}
+
+.mw-json td {
+       background-color: #eee;
+       font-style: italic;
+}
+
+.mw-json .value {
+       background-color: #dcfae3;
+       font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace;
+       white-space: pre-wrap;
+}
+
+.mw-json tr {
+       margin-bottom: 0.5em;
+}
+
+.mw-json th {
+       background-color: #fff;
+       font-weight: normal;
+}
+
+.mw-json caption {
+       /* For stylistic reasons, suppress the caption of the outermost table */
+       display: none;
+}
+
+.mw-json table caption {
+       color: gray;
+       display: inline-block;
+       font-size: 10px;
+       font-style: italic;
+       margin-bottom: 0.5em;
+       text-align: left;
+}
index 9eea492..5027f7a 100644 (file)
                        $ul = $( this ).prev( 'ul.mw-htmlform-cloner-ul' );
 
                        html = $ul.data( 'template' ).replace(
-                               $ul.data( 'uniqueId' ), 'clone' + ( ++cloneCounter ), 'g'
+                               new RegExp( $.escapeRE( $ul.data( 'uniqueId' ) ), 'g' ),
+                               'clone' + ( ++cloneCounter )
                        );
 
                        $li = $( '<li>' )
index 380e4e6..d50fe48 100644 (file)
                                 *
                                 * @param {string|Array} modules Either the name of a module, array of modules,
                                 *  or a URL of an external script or style
-                                * @param {string} [type='text/javascript'] mime-type to use if calling with a URL of an
+                                * @param {string} [type='text/javascript'] MIME type to use if calling with a URL of an
                                 *  external script or style; acceptable values are "text/css" and
                                 *  "text/javascript"; if no type is provided, text/javascript is assumed.
                                 * @param {boolean} [async] Whether to load modules asynchronously.
index b5fd69c..79ec310 100644 (file)
                /**
                 * Display a notification message to the user.
                 *
-                * @param {HTMLElement|jQuery|mw.Message|string} message
+                * @param {HTMLElement|HTMLElement[]|jQuery|mw.Message|string} message
                 * @param {Object} options The options to use for the notification.
                 *  See #defaults for details.
                 * @return {mw.Notification} Notification object
index cd21ecc..e2f47f5 100644 (file)
@@ -24,10 +24,10 @@ function isCompatible( ua ) {
                ua = navigator.userAgent;
        }
 
-       // MediaWiki JS or jQuery is known to have issues with:
+       // Browsers with outdated or limited JavaScript engines get the no-JS experience
        return !(
-               // Internet Explorer < 6
-               ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 6 ) ||
+               // Internet Explorer < 7
+               ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 7 ) ||
                // Firefox < 3
                ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[1] ) < 3 ) ||
                // BlackBerry < 6
index 1a9569f..6719bdd 100644 (file)
@@ -1,5 +1,3 @@
 /*
 !/common/
-!/MonoBook/
-!/Vector/
 !/.gitignore
diff --git a/skins/MonoBook/COPYING b/skins/MonoBook/COPYING
deleted file mode 100644 (file)
index 019694a..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-== GNU GENERAL PUBLIC LICENSE ==
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-=== Preamble ===
-
-The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
-
-'''0.''' This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-'''1.''' You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-'''2.''' You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-       '''a)''' You must cause the modified files to carry prominent notices
-       stating that you changed the files and the date of any change.
-
-       '''b)''' You must cause any work that you distribute or publish, that in
-       whole or in part contains or is derived from the Program or any
-       part thereof, to be licensed as a whole at no charge to all third
-       parties under the terms of this License.
-
-       '''c)''' If the modified program normally reads commands interactively
-       when run, you must cause it, when started running for such
-       interactive use in the most ordinary way, to print or display an
-       announcement including an appropriate copyright notice and a
-       notice that there is no warranty (or else, saying that you provide
-       a warranty) and that users may redistribute the program under
-       these conditions, and telling the user how to view a copy of this
-       License.  (Exception: if the Program itself is interactive but
-       does not normally print such an announcement, your work based on
-       the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-'''3.''' You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-       '''a)''' Accompany it with the complete corresponding machine-readable
-       source code, which must be distributed under the terms of Sections
-       1 and 2 above on a medium customarily used for software interchange; or,
-
-       '''b)''' Accompany it with a written offer, valid for at least three
-       years, to give any third party, for a charge no more than your
-       cost of physically performing source distribution, a complete
-       machine-readable copy of the corresponding source code, to be
-       distributed under the terms of Sections 1 and 2 above on a medium
-       customarily used for software interchange; or,
-
-       '''c)''' Accompany it with the information you received as to the offer
-       to distribute corresponding source code.  (This alternative is
-       allowed only for noncommercial distribution and only if you
-       received the program in object code or executable form with such
-       an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-'''4.''' You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-'''5.''' You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-'''6.''' Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-'''7.''' If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-'''8.''' If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-'''9.''' The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-'''10.''' If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-=== NO WARRANTY ===
-
-'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-       '''END OF TERMS AND CONDITIONS'''
-
-== How to Apply These Terms to Your New Programs ==
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-       <one line to give the program's name and a brief idea of what it does.>
-
-       Copyright (C) <year>  <name of author>
-
-       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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-       Gnomovision version 69, Copyright (C) year name of author
-       Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-       This is free software, and you are welcome to redistribute it
-       under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-       Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-       `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-       <signature of Ty Coon>, 1 April 1989
-
-       Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/skins/MonoBook/IE60Fixes.css b/skins/MonoBook/IE60Fixes.css
deleted file mode 100644 (file)
index cd9399f..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* 6.0 - only fixes */
-/* content area */
-/* workaround for various ie float bugs */
-div#column-content {
-       float: none;
-       margin-left: 0;
-       height: 1%;
-}
-
-div#column-content div#content {
-       margin-left: 12.2em;
-       margin-top: 3em;
-       height: 1%;
-}
-
-.rtl div#column-content div#content {
-       margin-right: 12.2em;
-       margin-left: 0;
-}
-
-div#column-one {
-       position: absolute;
-       top: 0;
-       left: 0;
-       z-index: 4;
-}
-
-.rtl div#column-one {
-       left: auto;
-       right: 0;
-}
-
-div#footer {
-       margin-left: 13.6em;
-       border-left: 1px solid #fabd23;
-}
-
-.rtl div#footer {
-       margin-left: 0;
-       margin-right: 13.6em;
-       border-left: none;
-       border-right: 1px solid #fabd23;
-}
-
-/* float/negative margin brokenness */
-* html div#footer {
-       margin-top: 0;
-}
-
-* html div#column-content {
-       display: inline;
-       margin-bottom: 0;
-}
-
-/* the tabs */
-
-#p-cactions {
-       z-index: 3;
-}
-
-#p-cactions li {
-       padding-bottom: 0 !important;
-       border: none;
-       background-color: transparent;
-       cursor: default;
-       float: none !important;
-}
-
-#p-cactions li a {
-       display: inline-block !important;
-       vertical-align: top;
-       padding-bottom: 0;
-       border: solid #aaa;
-       border-width: 1px 1px 0;
-}
-
-#p-cactions li.selected a {
-       border-color: #fabd23;
-       padding-bottom: 0.17em;
-}
-
-#p-cactions li a:hover {
-       padding-bottom: 0.17em;
-}
-
-#p-navigation a {
-       display: inline-block;
-       width: 100%;
-}
-
-#portal-personaltools {
-       padding-bottom: 0.1em;
-}
-
-.rtl a.feedlink {
-       background-position: right;
-       padding-right: 0;
-       padding-left: 16px;
-}
-
-/* show the hand */
-#p-logo a,
-#p-logo a:hover {
-       cursor: pointer;
-}
-
-div.visualClear {
-       width: 100%;
-       line-height: 0;
-}
-
-textarea {
-       width: 96%;
-}
-
-#catlinks,
-div.tright,
-div.tleft {
-       position: relative;
-}
-
-/* bug 12846 */
-body.rtl #preftoc a, body.rtl #preftoc a:active {
-       float: left;
-}
diff --git a/skins/MonoBook/IE70Fixes.css b/skins/MonoBook/IE70Fixes.css
deleted file mode 100644 (file)
index 42f9ce6..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* 7.0 - only fixes */
-/* content area */
-/* workaround for various ie float bugs */
-
-/* This bit is needed to make links clickable... WTF */
-div#column-content div#content {
-       margin-left: 12.2em;
-       margin-top: 3em;
-       height: 1%;
-}
-
-.rtl div#column-content div#content {
-       margin-right: 12.2em;
-       margin-left: 0;
-}
-
-.rtl div#column-one {
-       /* For some reason it tries to inherit the padding-top into every div,
-        * and I can't figure out how to get it back off.
-        * Margin works correctly for this use, though.
-        */
-       padding-top: 0;
-       margin-top: 160px;
-}
-
-/* These elements also have padding-left: 20px; in main.css, but in RTL mode this is flipped.
- * That's good in normal browsers, but in IE7 it needs to not be flipped for some daft reason.
- * Also clear the right margin (originally margin-left: 1em)
- */
-li#pt-userpage, li#pt-anonuserpage, li#pt-login {
-       padding-left: 20px;
-       margin-right: 0;
-}
-
-.rtl a.feedlink {
-       background-position: right;
-       padding-right: 0;
-       padding-left: 16px;
-}
-
-/* the tabs */
-
-#p-cactions {
-       z-index: 3;
-}
-
-#p-cactions li {
-       padding-bottom: 0 !important;
-       border: none;
-       background-color: transparent;
-       cursor: default;
-       float: none !important;
-}
-
-#p-cactions li a {
-       display: inline-block !important;
-       vertical-align: top;
-       padding-bottom: 0;
-       border: solid #aaa;
-       border-width: 1px 1px 0;
-}
-
-#p-cactions li.selected a {
-       border-color: #fabd23;
-       padding-bottom: 0.17em;
-}
-
-#p-cactions li a:hover {
-       padding-bottom: 0.17em;
-}
-
-#p-navigation a {
-       display: inline-block;
-       width: 100%;
-}
-
-#portal-personaltools {
-       padding-bottom: 0.1em;
-}
-
-textarea {
-       width: 96%;
-}
-
-/*
-#catlinks,
-div.tright,
-div.tleft {
-       position: relative;
-}
-*/
-
-div#footer li {
-       /* Work around bug with inline <li> tags with right margins and nowrap */
-       margin-right: 0;
-}
diff --git a/skins/MonoBook/MonoBook.php b/skins/MonoBook/MonoBook.php
deleted file mode 100644 (file)
index 97c0cd8..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-$wgExtensionCredits['skin'][] = array(
-       'path' => __FILE__,
-       'name' => 'MonoBook',
-       'namemsg' => 'skinname-monobook',
-       'descriptionmsg' => 'monobook-desc',
-       'url' => 'https://www.mediawiki.org/wiki/Skin:MonoBook',
-       'author' => array( 'Gabriel Wicke', '...' ),
-       'license-name' => 'GPLv2+',
-);
-
-// Register files
-$wgAutoloadClasses['SkinMonoBook'] = __DIR__ . '/SkinMonoBook.php';
-$wgAutoloadClasses['MonoBookTemplate'] = __DIR__ . '/MonoBookTemplate.php';
-$wgMessagesDirs['MonoBook'] = __DIR__ . '/i18n';
-
-// Register skin
-$wgValidSkinNames['monobook'] = 'MonoBook';
-
-// Register modules
-$wgResourceModules['skins.monobook.styles'] = array(
-       'styles' => array(
-               'main.css' => array( 'media' => 'screen' ),
-       ),
-       'remoteSkinPath' => 'MonoBook',
-       'localBasePath' => __DIR__,
-);
diff --git a/skins/MonoBook/MonoBookTemplate.php b/skins/MonoBook/MonoBookTemplate.php
deleted file mode 100644 (file)
index 373c004..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * @ingroup Skins
- */
-class MonoBookTemplate extends BaseTemplate {
-
-       /**
-        * Template filter callback for MonoBook skin.
-        * Takes an associative array of data set from a SkinTemplate-based
-        * class, and a wrapper for MediaWiki's localization database, and
-        * outputs a formatted page.
-        *
-        * @access private
-        */
-       function execute() {
-               // Suppress warnings to prevent notices about missing indexes in $this->data
-               wfSuppressWarnings();
-
-               $this->html( 'headelement' );
-               ?><div id="globalWrapper">
-               <div id="column-content">
-                       <div id="content" class="mw-body-primary" role="main">
-                               <a id="top"></a>
-                               <?php
-                               if ( $this->data['sitenotice'] ) {
-                                       ?>
-                                       <div id="siteNotice"><?php
-                                       $this->html( 'sitenotice' )
-                                       ?></div><?php
-                               }
-                               ?>
-
-                               <h1 id="firstHeading" class="firstHeading" lang="<?php
-                               $this->data['pageLanguage'] =
-                                       $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
-                               $this->text( 'pageLanguage' );
-                               ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
-
-                               <div id="bodyContent" class="mw-body">
-                                       <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
-                                       <div id="contentSub"<?php
-                                       $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' )
-                                               ?></div>
-                                       <?php if ( $this->data['undelete'] ) { ?>
-                                               <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
-                                       <?php
-}
-                                       ?><?php
-                                       if ( $this->data['newtalk'] ) {
-                                               ?>
-                                               <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
-                                       <?php
-                                       }
-                                       ?>
-                                       <div id="jump-to-nav" class="mw-jump"><?php
-                                               $this->msg( 'jumpto' )
-                                               ?> <a href="#column-one"><?php
-                                                       $this->msg( 'jumptonavigation' )
-                                                       ?></a><?php
-                                               $this->msg( 'comma-separator' )
-                                               ?><a href="#searchInput"><?php
-                                                       $this->msg( 'jumptosearch' )
-                                                       ?></a></div>
-
-                                       <!-- start content -->
-                                       <?php $this->html( 'bodytext' ) ?>
-                                       <?php
-                                       if ( $this->data['catlinks'] ) {
-                                               $this->html( 'catlinks' );
-                                       }
-                                       ?>
-                                       <!-- end content -->
-                                       <?php
-                                       if ( $this->data['dataAfterContent'] ) {
-                                               $this->html( 'dataAfterContent'
-                                               );
-                                       }
-                                       ?>
-                                       <div class="visualClear"></div>
-                               </div>
-                       </div>
-               </div>
-               <div id="column-one"<?php $this->html( 'userlangattributes' ) ?>>
-                       <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
-                       <?php $this->cactions(); ?>
-                       <div class="portlet" id="p-personal" role="navigation">
-                               <h3><?php $this->msg( 'personaltools' ) ?></h3>
-
-                               <div class="pBody">
-                                       <ul<?php $this->html( 'userlangattributes' ) ?>>
-                                               <?php foreach ( $this->getPersonalTools() as $key => $item ) { ?>
-                                                       <?php echo $this->makeListItem( $key, $item ); ?>
-
-                                               <?php
-}
-                                               ?>
-                                       </ul>
-                               </div>
-                       </div>
-                       <div class="portlet" id="p-logo" role="banner">
-                               <?php
-                               echo Html::element( 'a', array(
-                                               'href' => $this->data['nav_urls']['mainpage']['href'],
-                                               'style' => "background-image: url({$this->data['logopath']});" )
-                                       + Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ); ?>
-
-                       </div>
-                       <?php
-                       $this->renderPortals( $this->data['sidebar'] );
-                       ?>
-               </div><!-- end of the left (by default at least) column -->
-               <div class="visualClear"></div>
-               <?php
-               $validFooterIcons = $this->getFooterIcons( "icononly" );
-               $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
-
-               if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) {
-                       ?>
-                       <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>>
-                       <?php
-                       $footerEnd = '</div>';
-               } else {
-                       $footerEnd = '';
-               }
-
-               foreach ( $validFooterIcons as $blockName => $footerIcons ) {
-                       ?>
-                       <div id="f-<?php echo htmlspecialchars( $blockName ); ?>ico">
-                               <?php foreach ( $footerIcons as $icon ) { ?>
-                                       <?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
-
-                               <?php
-}
-                               ?>
-                       </div>
-               <?php
-               }
-
-               if ( count( $validFooterLinks ) > 0 ) {
-                       ?>
-                       <ul id="f-list">
-                               <?php
-                               foreach ( $validFooterLinks as $aLink ) {
-                                       ?>
-                                       <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?></li>
-                               <?php
-                               }
-                               ?>
-                       </ul>
-               <?php
-               }
-
-               echo $footerEnd;
-               ?>
-
-               </div>
-               <?php
-               $this->printTrail();
-               echo Html::closeElement( 'body' );
-               echo Html::closeElement( 'html' );
-               wfRestoreWarnings();
-       } // end of execute() method
-
-       /*************************************************************************************************/
-
-       /**
-        * @param array $sidebar
-        */
-       protected function renderPortals( $sidebar ) {
-               if ( !isset( $sidebar['SEARCH'] ) ) {
-                       $sidebar['SEARCH'] = true;
-               }
-               if ( !isset( $sidebar['TOOLBOX'] ) ) {
-                       $sidebar['TOOLBOX'] = true;
-               }
-               if ( !isset( $sidebar['LANGUAGES'] ) ) {
-                       $sidebar['LANGUAGES'] = true;
-               }
-
-               foreach ( $sidebar as $boxName => $content ) {
-                       if ( $content === false ) {
-                               continue;
-                       }
-
-                       if ( $boxName == 'SEARCH' ) {
-                               $this->searchBox();
-                       } elseif ( $boxName == 'TOOLBOX' ) {
-                               $this->toolbox();
-                       } elseif ( $boxName == 'LANGUAGES' ) {
-                               $this->languageBox();
-                       } else {
-                               $this->customBox( $boxName, $content );
-                       }
-               }
-       }
-
-       function searchBox() {
-               global $wgUseTwoButtonsSearchForm;
-               ?>
-               <div id="p-search" class="portlet" role="search">
-                       <h3><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
-
-                       <div id="searchBody" class="pBody">
-                               <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
-                                       <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
-                                       <?php echo $this->makeSearchInput( array( "id" => "searchInput" ) ); ?>
-
-                                       <?php
-                                       echo $this->makeSearchButton(
-                                               "go",
-                                               array( "id" => "searchGoButton", "class" => "searchButton" )
-                                       );
-
-                                       if ( $wgUseTwoButtonsSearchForm ) {
-                                               ?>&#160;
-                                               <?php echo $this->makeSearchButton(
-                                                       "fulltext",
-                                                       array( "id" => "mw-searchButton", "class" => "searchButton" )
-                                               );
-                                       } else {
-                                               ?>
-
-                                               <div><a href="<?php
-                                               $this->text( 'searchaction' )
-                                               ?>" rel="search"><?php $this->msg( 'powersearch-legend' ) ?></a></div><?php
-                                       } ?>
-
-                               </form>
-
-                               <?php $this->renderAfterPortlet( 'search' ); ?>
-                       </div>
-               </div>
-       <?php
-       }
-
-       /**
-        * Prints the cactions bar.
-        * Shared between MonoBook and Modern
-        */
-       function cactions() {
-               ?>
-               <div id="p-cactions" class="portlet" role="navigation">
-                       <h3><?php $this->msg( 'views' ) ?></h3>
-
-                       <div class="pBody">
-                               <ul><?php
-                                       foreach ( $this->data['content_actions'] as $key => $tab ) {
-                                               echo '
-                               ' . $this->makeListItem( $key, $tab );
-                                       } ?>
-
-                               </ul>
-                               <?php $this->renderAfterPortlet( 'cactions' ); ?>
-                       </div>
-               </div>
-       <?php
-       }
-
-       /*************************************************************************************************/
-       function toolbox() {
-               ?>
-               <div class="portlet" id="p-tb" role="navigation">
-                       <h3><?php $this->msg( 'toolbox' ) ?></h3>
-
-                       <div class="pBody">
-                               <ul>
-                                       <?php
-                                       foreach ( $this->getToolbox() as $key => $tbitem ) {
-                                               ?>
-                                               <?php echo $this->makeListItem( $key, $tbitem ); ?>
-
-                                       <?php
-                                       }
-                                       wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
-                                       wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
-                                       ?>
-                               </ul>
-                               <?php $this->renderAfterPortlet( 'tb' ); ?>
-                       </div>
-               </div>
-       <?php
-       }
-
-       /*************************************************************************************************/
-       function languageBox() {
-               if ( $this->data['language_urls'] !== false ) {
-                       ?>
-                       <div id="p-lang" class="portlet" role="navigation">
-                               <h3<?php $this->html( 'userlangattributes' ) ?>><?php $this->msg( 'otherlanguages' ) ?></h3>
-
-                               <div class="pBody">
-                                       <ul>
-                                               <?php foreach ( $this->data['language_urls'] as $key => $langlink ) { ?>
-                                                       <?php echo $this->makeListItem( $key, $langlink ); ?>
-
-                                               <?php
-}
-                                               ?>
-                                       </ul>
-
-                                       <?php $this->renderAfterPortlet( 'lang' ); ?>
-                               </div>
-                       </div>
-               <?php
-               }
-       }
-
-       /*************************************************************************************************/
-       /**
-        * @param string $bar
-        * @param array|string $cont
-        */
-       function customBox( $bar, $cont ) {
-               $portletAttribs = array(
-                       'class' => 'generated-sidebar portlet',
-                       'id' => Sanitizer::escapeId( "p-$bar" ),
-                       'role' => 'navigation'
-               );
-
-               $tooltip = Linker::titleAttrib( "p-$bar" );
-               if ( $tooltip !== false ) {
-                       $portletAttribs['title'] = $tooltip;
-               }
-               echo '  ' . Html::openElement( 'div', $portletAttribs );
-               $msgObj = wfMessage( $bar );
-               ?>
-
-               <h3><?php echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $bar ); ?></h3>
-               <div class='pBody'>
-                       <?php
-                       if ( is_array( $cont ) ) {
-                               ?>
-                               <ul>
-                                       <?php
-                                       foreach ( $cont as $key => $val ) {
-                                               ?>
-                                               <?php echo $this->makeListItem( $key, $val ); ?>
-
-                                       <?php
-                                       }
-                                       ?>
-                               </ul>
-                       <?php
-                       } else {
-                               # allow raw HTML block to be defined by extensions
-                               print $cont;
-                       }
-
-                       $this->renderAfterPortlet( $bar );
-                       ?>
-               </div>
-               </div>
-       <?php
-       }
-} // end of class
diff --git a/skins/MonoBook/SkinMonoBook.php b/skins/MonoBook/SkinMonoBook.php
deleted file mode 100644 (file)
index 16fbd00..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @ingroup Skins
- */
-class SkinMonoBook extends SkinTemplate {
-       /** Using MonoBook. */
-       public $skinname = 'monobook';
-       public $stylename = 'MonoBook';
-       public $template = 'MonoBookTemplate';
-
-       /**
-        * @param OutputPage $out
-        */
-       function setupSkinUserCss( OutputPage $out ) {
-               parent::setupSkinUserCss( $out );
-
-               $out->addModuleStyles( array( 'mediawiki.skinning.interface', 'skins.monobook.styles' ) );
-
-               // TODO: Migrate all of these
-               $out->addStyle( $this->stylename . '/IE60Fixes.css', 'screen', 'IE 6' );
-               $out->addStyle( $this->stylename . '/IE70Fixes.css', 'screen', 'IE 7' );
-       }
-}
diff --git a/skins/MonoBook/audio.png b/skins/MonoBook/audio.png
deleted file mode 100644 (file)
index 68c8768..0000000
Binary files a/skins/MonoBook/audio.png and /dev/null differ
diff --git a/skins/MonoBook/bullet.gif b/skins/MonoBook/bullet.gif
deleted file mode 100644 (file)
index b43de48..0000000
Binary files a/skins/MonoBook/bullet.gif and /dev/null differ
diff --git a/skins/MonoBook/discussionitem_icon.gif b/skins/MonoBook/discussionitem_icon.gif
deleted file mode 100644 (file)
index e3ca6d9..0000000
Binary files a/skins/MonoBook/discussionitem_icon.gif and /dev/null differ
diff --git a/skins/MonoBook/document.png b/skins/MonoBook/document.png
deleted file mode 100644 (file)
index ee46a50..0000000
Binary files a/skins/MonoBook/document.png and /dev/null differ
diff --git a/skins/MonoBook/external-ltr.png b/skins/MonoBook/external-ltr.png
deleted file mode 100644 (file)
index 6308383..0000000
Binary files a/skins/MonoBook/external-ltr.png and /dev/null differ
diff --git a/skins/MonoBook/external-rtl.png b/skins/MonoBook/external-rtl.png
deleted file mode 100644 (file)
index 5313234..0000000
Binary files a/skins/MonoBook/external-rtl.png and /dev/null differ
diff --git a/skins/MonoBook/file_icon.gif b/skins/MonoBook/file_icon.gif
deleted file mode 100644 (file)
index 69dbeaf..0000000
Binary files a/skins/MonoBook/file_icon.gif and /dev/null differ
diff --git a/skins/MonoBook/headbg.jpg b/skins/MonoBook/headbg.jpg
deleted file mode 100644 (file)
index 5491c6e..0000000
Binary files a/skins/MonoBook/headbg.jpg and /dev/null differ
diff --git a/skins/MonoBook/i18n/aln.json b/skins/MonoBook/i18n/aln.json
deleted file mode 100644 (file)
index b853dde..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bresta"
-               ]
-       },
-       "monobook.css": "/* CSS i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Monobook */",
-       "monobook.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/an.json b/skins/MonoBook/i18n/an.json
deleted file mode 100644 (file)
index f635897..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Juanpabl"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Monobook */",
-       "monobook.js": "/* O codigo Javascript que se meta aquí será cargau por os usuarios faigan servir l'apariencia MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/ar.json b/skins/MonoBook/i18n/ar.json
deleted file mode 100644 (file)
index 05cad21..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Meno25"
-               ]
-       },
-       "skinname-monobook": "مونوبوك",
-       "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */",
-       "monobook.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */"
-}
diff --git a/skins/MonoBook/i18n/arz.json b/skins/MonoBook/i18n/arz.json
deleted file mode 100644 (file)
index a49f003..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Meno25"
-               ]
-       },
-       "skinname-monobook": "مونوبوك",
-       "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة مونوبوك */",
-       "monobook.js": "/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة مونوبوك */"
-}
diff --git a/skins/MonoBook/i18n/ast.json b/skins/MonoBook/i18n/ast.json
deleted file mode 100644 (file)
index 5fadace..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Xuacu"
-               ]
-       },
-       "monobook-desc": "El tema clásicu de MediaWiki dende 2004, llamáu asina pola foto en blanco y negro d'un llibru nel fondu de la páxina",
-       "monobook.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */",
-       "monobook.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/az.json b/skins/MonoBook/i18n/az.json
deleted file mode 100644 (file)
index 55b33d8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Vago",
-                       "Vugar 1981"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */",
-       "monobook.js": "/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */"
-}
diff --git a/skins/MonoBook/i18n/bcc.json b/skins/MonoBook/i18n/bcc.json
deleted file mode 100644 (file)
index 9732382..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mostafadaneshvar"
-               ]
-       },
-       "skinname-monobook": "منوبوک",
-       "monobook.css": "/* CSS که اداننت کابران پوست مونوبوک تاثیر کننت */",
-       "monobook.js": "/* جاوا اسکریپت ادان فقط په کابرانی که چه پوست منوبوک استفاده کننت بار بیت. */"
-}
diff --git a/skins/MonoBook/i18n/bcl.json b/skins/MonoBook/i18n/bcl.json
deleted file mode 100644 (file)
index 1ef08f2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Filipinayzd"
-               ]
-       },
-       "monobook.css": "/* an CSS na pigbugtak digdi makakaapektar sa mga parágamit kan Monobook skin */",
-       "monobook.js": "/* Deprecado; gamiton an [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/be-tarask.json b/skins/MonoBook/i18n/be-tarask.json
deleted file mode 100644 (file)
index 7704a41..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "Монакніга"
-}
diff --git a/skins/MonoBook/i18n/be.json b/skins/MonoBook/i18n/be.json
deleted file mode 100644 (file)
index 684d3d3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Yury Tarasievich",
-                       "Mikalai Udodau"
-               ]
-       },
-       "skinname-monobook": "Манабук",
-       "monobook-desc": "Класічная вокладка MediaWiki з 2004 года, названая ў гонар чорна-белай фатаграфіі кнігі ў фоне старонкі",
-       "monobook.css": "/* CSS, упісаны сюды, будзе дзейнічаць на браўзер кожнага чытача з актыўнай світай Monobook */",
-       "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
diff --git a/skins/MonoBook/i18n/bg.json b/skins/MonoBook/i18n/bg.json
deleted file mode 100644 (file)
index f3e91dd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "Монобук",
-       "monobook.css": "/* Чрез редактиране на този файл можете да промените облика Монобук */",
-       "monobook.js": "/* Остаряла страница; използвайте [[MediaWiki:Common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/bn.json b/skins/MonoBook/i18n/bn.json
deleted file mode 100644 (file)
index d6a4112..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aftab1995"
-               ]
-       },
-       "skinname-monobook": "মনোবুক"
-}
diff --git a/skins/MonoBook/i18n/br.json b/skins/MonoBook/i18n/br.json
deleted file mode 100644 (file)
index 2ba630f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Fulup"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Monobook */",
-       "monobook.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/bs.json b/skins/MonoBook/i18n/bs.json
deleted file mode 100644 (file)
index ddecc4c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "CERminator",
-                       "Kal-El"
-               ]
-       },
-       "skinname-monobook": "MonoKnjiga",
-       "monobook.css": "/* CSS umetnut ovdje uticat će na korisnike koji koriste Monobook skin */",
-       "monobook.js": "/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste MonoBook skin */"
-}
diff --git a/skins/MonoBook/i18n/ca.json b/skins/MonoBook/i18n/ca.json
deleted file mode 100644 (file)
index ba907dd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Martorell",
-                       "Toniher"
-               ]
-       },
-       "monobook-desc": "El tema clàssic de MediaWiki des del 2004, que rep el nom d'una foto en blanc i negre d'un llibre en el fons de la pàgina.",
-       "monobook.css": "/* Editeu aquest fitxer per personalitzar l'aparença del monobook per a tot el lloc sencer */"
-}
diff --git a/skins/MonoBook/i18n/ce.json b/skins/MonoBook/i18n/ce.json
deleted file mode 100644 (file)
index 61515a8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Умар"
-               ]
-       },
-       "monobook.css": "/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */",
-       "monobook.js": "/* Кхузе чу язийна йолу JavaScript код, чу ера ю, массо MonoBook хатl лелош болу декъашхошна */"
-}
diff --git a/skins/MonoBook/i18n/ckb.json b/skins/MonoBook/i18n/ckb.json
deleted file mode 100644 (file)
index 2c42db2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "مۆنۆ"
-}
diff --git a/skins/MonoBook/i18n/crh-cyrl.json b/skins/MonoBook/i18n/crh-cyrl.json
deleted file mode 100644 (file)
index b11125e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* monobook темасынынъ аярларыны (настройкаларыны) денъиштирмек ичюн бу ерини денъиштиринъиз. Бутюн сайтта тесирли олур. */"
-}
diff --git a/skins/MonoBook/i18n/crh-latn.json b/skins/MonoBook/i18n/crh-latn.json
deleted file mode 100644 (file)
index c8f2540..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* monobook temasınıñ ayarlarını (nastroykalarını) deñiştirmek içün bu yerini deñiştiriñiz. Bütün saytta tesirli olur. */"
-}
diff --git a/skins/MonoBook/i18n/cs.json b/skins/MonoBook/i18n/cs.json
deleted file mode 100644 (file)
index 62fcddd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Danny B.",
-                       "Li-sung",
-                       "Mormegil"
-               ]
-       },
-       "monobook-desc": "Klasický vzhled MediaWiki od roku 2004, pojmenovaný po černobílé fotografii knihy v pozadí stránky",
-       "monobook.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Monobook“ */",
-       "monobook.js": "/* JavaScript pro uživatele používající vzhled MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/da.json b/skins/MonoBook/i18n/da.json
deleted file mode 100644 (file)
index bb7745e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Peter Alberti",
-                       "Christian List"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "Den klassiske MediaWiki hud siden 2004, opkaldt efter det sort-hvide foto af en bog i baggrunden af siderne",
-       "monobook.css": "/** CSS inkluderet her vil være aktivt for brugere af Monobook-temaet . */",
-       "monobook.js": "/* JavaScript i denne fil vil indlæses for brugere af udseendet MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/de.json b/skins/MonoBook/i18n/de.json
deleted file mode 100644 (file)
index 047b91d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Geitost",
-                       "Metalhead64"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "Ergänzt die klassische MediaWiki-Benutzeroberfläche seit 2004, benannt nach dem Schwarzweißfoto eines Buches im Seitenhintergrund",
-       "monobook.css": "/* Das folgende CSS wird für Benutzer der MonoBook-Benutzeroberfläche geladen */",
-       "monobook.js": "/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. */"
-}
diff --git a/skins/MonoBook/i18n/diq.json b/skins/MonoBook/i18n/diq.json
deleted file mode 100644 (file)
index ca9696d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Erdemaslancan"
-               ]
-       },
-       "skinname-monobook": "MonoBook"
-}
diff --git a/skins/MonoBook/i18n/dsb.json b/skins/MonoBook/i18n/dsb.json
deleted file mode 100644 (file)
index 6731b7b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Michawiki",
-                       "Nepl1"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* How zaměstnjony CSS wustatkujo se na wužywarje monobook-šata */",
-       "monobook.js": "/* Slědujucy JavaScript zacytajo se za wužywarjow, kótarež skin MonoBook wužywaju */"
-}
diff --git a/skins/MonoBook/i18n/el.json b/skins/MonoBook/i18n/el.json
deleted file mode 100644 (file)
index 1e7f7b8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dead3y3"
-               ]
-       },
-       "monobook.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Monobook skin */",
-       "monobook.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το MonoBook skin */"
-}
diff --git a/skins/MonoBook/i18n/en.json b/skins/MonoBook/i18n/en.json
deleted file mode 100644 (file)
index 0b27e6b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": []
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background",
-       "monobook.css": "/* CSS placed here will affect users of the MonoBook skin */",
-       "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
diff --git a/skins/MonoBook/i18n/eo.json b/skins/MonoBook/i18n/eo.json
deleted file mode 100644 (file)
index 170286a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Objectivesea"
-               ]
-       },
-       "skinname-monobook": "Librejo",
-       "monobook.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Libreja temo. */",
-       "monobook.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Libreja temo. */"
-}
diff --git a/skins/MonoBook/i18n/es.json b/skins/MonoBook/i18n/es.json
deleted file mode 100644 (file)
index 48d424c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sanbec",
-                       "Vivaelcelta",
-                       "Fitoschido"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "El tema clásico de MediaWiki desde 2004, cuyo nombre viene de la foto en blanco y negro de un libro en el fondo",
-       "monobook.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"MonoBook\" */",
-       "monobook.js": "/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/et.json b/skins/MonoBook/i18n/et.json
deleted file mode 100644 (file)
index dd823ee..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Pikne"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Siin asuv kaskaadilaadistik puudutab kõiki MonoBooki-kujunduse kasutajaid. */",
-       "monobook.js": "/* Siin asuv JavaScript laaditakse MonoBooki-kujunduse kasutajate jaoks. */"
-}
diff --git a/skins/MonoBook/i18n/eu.json b/skins/MonoBook/i18n/eu.json
deleted file mode 100644 (file)
index a5f8c39..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* Hemen idatzitako CSS kodeak Monobook itxuran bakarrik izango du eragina */"
-}
diff --git a/skins/MonoBook/i18n/ext.json b/skins/MonoBook/i18n/ext.json
deleted file mode 100644 (file)
index 70d9567..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.js": "/* Antigu; gasta [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/fa.json b/skins/MonoBook/i18n/fa.json
deleted file mode 100644 (file)
index 02a0185..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Reza1615"
-               ]
-       },
-       "skinname-monobook": "مونوبوک",
-       "monobook-desc": "پوسته کلاسیک مدیاویکی از سال ۲۰۰۴ از عکس سیاه و سفید در زمینه صفحه  کتاب نام گرفت",
-       "monobook.css": "/* دستورات این بخش کاربرانی را که از پوستهٔ مونوبوک استفاده کنند تحت تاثیر قرار می‌دهند. */"
-}
diff --git a/skins/MonoBook/i18n/fi.json b/skins/MonoBook/i18n/fi.json
deleted file mode 100644 (file)
index f516bdd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Crt"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook.css": "/* Tämä sivu sisältää Monobook-ulkoasua muuttavia tyylejä. */",
-       "monobook.js": "/* Tämän sivun JavaScript-koodi liitetään Monobook-tyyliin */"
-}
diff --git a/skins/MonoBook/i18n/fr.json b/skins/MonoBook/i18n/fr.json
deleted file mode 100644 (file)
index cedbebb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gomoko",
-                       "Verdy p"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook-desc": "L’habillage classique de MédiaWiki depuis 2004, nommé d’après la photo en noir et blanc d’un livre dans l’arrière-plan de la page",
-       "monobook.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Monobook. */",
-       "monobook.js": "/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage MonoBook uniquement. */"
-}
diff --git a/skins/MonoBook/i18n/frp.json b/skins/MonoBook/i18n/frp.json
deleted file mode 100644 (file)
index 06a705a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "ChrisPtDe"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « MonoBook ». */",
-       "monobook.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « MonoBook ». */"
-}
diff --git a/skins/MonoBook/i18n/fur.json b/skins/MonoBook/i18n/fur.json
deleted file mode 100644 (file)
index 87c1f2c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* modifiche chest file par personalizâ la skin monobook par dut il sît */"
-}
diff --git a/skins/MonoBook/i18n/ga.json b/skins/MonoBook/i18n/ga.json
deleted file mode 100644 (file)
index 695a952..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* athraigh an comhad seo chun an craiceann MonoBook a athrú don suíomh ar fad */"
-}
diff --git a/skins/MonoBook/i18n/gan-hans.json b/skins/MonoBook/i18n/gan-hans.json
deleted file mode 100644 (file)
index bed9f08..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "monobook.css": "/* 个首𠮶 CSS 会碍到正用Monobook皮肤𠮶用户 */",
-       "monobook.js": "/* 伓再使用;请用[[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/gan-hant.json b/skins/MonoBook/i18n/gan-hant.json
deleted file mode 100644 (file)
index 4c98663..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "monobook.css": "/* 箇首嗰 CSS 會礙到正用Monobook皮膚嗰用戶 */",
-       "monobook.js": "/* 伓再使用;請用[[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/gd.json b/skins/MonoBook/i18n/gd.json
deleted file mode 100644 (file)
index f5bd154..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "GunChleoc"
-               ]
-       },
-       "monobook-desc": "Craiceann MediaWiki clasaigeach o 2004 a chaidh ainmeachadh a-rèir dealbh de leabhar ann an dubh 's geal air cùlaibh nan duilleagan"
-}
diff --git a/skins/MonoBook/i18n/gl.json b/skins/MonoBook/i18n/gl.json
deleted file mode 100644 (file)
index 0e53e4a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Toliño",
-                       "Xosé"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "A aparencia clásica de MediaWiki desde 2004; recibe o seu nome pola foto en branco e negro dun libro que aparece no fondo das páxinas",
-       "monobook.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */",
-       "monobook.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/hak.json b/skins/MonoBook/i18n/hak.json
deleted file mode 100644 (file)
index 3253509..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hakka"
-               ]
-       },
-       "monobook.css": "/* Chhṳ́-chhu ke CSS chiông-voi yáng-hióng sṳ́-yung Monobook mien-pán ke yung-fu */",
-       "monobook.js": "/* Yí-kîn put-chai sṳ́-yung; chhiáng-yung [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/he.json b/skins/MonoBook/i18n/he.json
deleted file mode 100644 (file)
index 9e4f058..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Rotemliss",
-                       "Amire80"
-               ]
-       },
-       "skinname-monobook": "מונובוק",
-       "monobook-desc": "העיצוב הקלאסי של מדיה־ויקי מ־2004, שנקרא על שם הצילום השחור־לבן של ספר ברקע",
-       "monobook.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב MonoBook בלבד */",
-       "monobook.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Monobook */"
-}
diff --git a/skins/MonoBook/i18n/hi.json b/skins/MonoBook/i18n/hi.json
deleted file mode 100644 (file)
index e645482..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kaustubh",
-                       "Siddhartha Ghai"
-               ]
-       },
-       "monobook-desc": "2004 से मीडियाविकि की क्लासिक त्वचा, जिसका नाम पृष्ठभूमि में पुस्तक के इकरंगा चित्र से पड़ा।",
-       "monobook.css": "/* यहां रखी गई css मोनोबुक त्वचा का इस्तेमाल करने वाले सभी सदस्योंपर असर करेगी */",
-       "monobook.js": "/* यहाँ पर दी गई जावास्क्रिप्ट मोनोबुक त्वचा का प्रयोग कर रहे सदस्यों के लिए लोड होगी */"
-}
diff --git a/skins/MonoBook/i18n/hr.json b/skins/MonoBook/i18n/hr.json
deleted file mode 100644 (file)
index a56acbd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/** Ovdje idu izmjene monobook stylesheeta */",
-       "monobook.js": "/* Ne rabi se više; molimo rabite [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/hsb.json b/skins/MonoBook/i18n/hsb.json
deleted file mode 100644 (file)
index 2ac24c7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Michawiki"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* CSS wobdźěłać, zo by so skin „monobook” za wšěčh wužiwarjow tutoho skina priměrił */",
-       "monobook.js": "/* Slědowacy JavaScript začita so za wužiwarjow, kotřiž šat MonoBook wužiwaja */"
-}
diff --git a/skins/MonoBook/i18n/hu.json b/skins/MonoBook/i18n/hu.json
deleted file mode 100644 (file)
index 07e3a10..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dani"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */",
-       "monobook.js": "/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */"
-}
diff --git a/skins/MonoBook/i18n/hy.json b/skins/MonoBook/i18n/hy.json
deleted file mode 100644 (file)
index db1d72e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Teak"
-               ]
-       },
-       "skinname-monobook": "ՄիաԳիրք",
-       "monobook.css": "/* Այստեղ տեղադրված CSS կոդը կկիրառվի Monobook տեսքի վրա*/",
-       "monobook.js": "/* Հնացած է. օգտագործեք [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/ia.json b/skins/MonoBook/i18n/ia.json
deleted file mode 100644 (file)
index 39a703c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "McDutchie"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "Le apparentia classic de MediaWiki depost 2004, nominate assi pro le imagine in nigro e blanco (\"mono\") de un libro (\"book\") in le fundo del pagina.",
-       "monobook.css": "/* Le CSS placiate hic afficera le usatores del apparentia MonoBook */",
-       "monobook.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/id.json b/skins/MonoBook/i18n/id.json
deleted file mode 100644 (file)
index d87d663..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iwan Novirion",
-                       "Rex",
-                       "Arifin.wijaya"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "Kulit MediaWiki klasik sejak tahun 2004, dinamai foto hitam-putih dari buku di latar belakang halaman",
-       "monobook.css": "/* CSS yang ada di sini akan diterapkan pada kulit Monobook. */",
-       "monobook.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/ilo.json b/skins/MonoBook/i18n/ilo.json
deleted file mode 100644 (file)
index c59ae5f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lam-ang"
-               ]
-       },
-       "monobook-desc": "Ti klasiko a kudil ti MediaWiki manipud idi 2004, nanaganan manipud ti nangisit-ken-puraw a retrato ti libro iti likudan ti panid"
-}
diff --git a/skins/MonoBook/i18n/is.json b/skins/MonoBook/i18n/is.json
deleted file mode 100644 (file)
index 1539ae1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "לערי ריינהארט"
-               ]
-       },
-       "skinname-monobook": "EinBók",
-       "monobook.css": "/* Það sem sett er hingað er bætt við Monobook stilsniðið fyrir allan vefinn */"
-}
diff --git a/skins/MonoBook/i18n/it.json b/skins/MonoBook/i18n/it.json
deleted file mode 100644 (file)
index ba87cd9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Beta16",
-                       "Darth Kule"
-               ]
-       },
-       "monobook-desc": "La skin classica di MediaWiki dal 2004, prende il nome dall'immagine in bianco e nero del libro usata come sfondo della pagina",
-       "monobook.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Monobook */",
-       "monobook.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/ja.json b/skins/MonoBook/i18n/ja.json
deleted file mode 100644 (file)
index dddc9f8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Fryed-peach",
-                       "青子守歌"
-               ]
-       },
-       "skinname-monobook": "モノブック",
-       "monobook.css": "/* ここに記述したCSSはモノブック外装の利用者に影響します */",
-       "monobook.js": "/* ここにあるすべてのJavaScriptは、モノブック外装を使用している利用者に対して読み込まれます */"
-}
diff --git a/skins/MonoBook/i18n/ka.json b/skins/MonoBook/i18n/ka.json
deleted file mode 100644 (file)
index 0b16b54..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Alsandro",
-                       "David1010"
-               ]
-       },
-       "skinname-monobook": "მონობუკი",
-       "monobook.css": "/* აქ ჩასმული CSS გავლენას იქონიებს Monobook ინტერფეისის მომხმარებლებზე */"
-}
diff --git a/skins/MonoBook/i18n/kk-arab.json b/skins/MonoBook/i18n/kk-arab.json
deleted file mode 100644 (file)
index d37e014..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "دارا كىتاپ (monobook)",
-       "monobook.css": "/* مىندا ورنالاستىرىلعان CSS تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى */",
-       "monobook.js": "/* مىنداعى JavaScript تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */"
-}
diff --git a/skins/MonoBook/i18n/kk-cyrl.json b/skins/MonoBook/i18n/kk-cyrl.json
deleted file mode 100644 (file)
index c964423..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arystanbek"
-               ]
-       },
-       "skinname-monobook": "Жеке кітап (monobook)",
-       "monobook.css": "/* Мында орналастырылған CSS тек «Дара кітап» (monobook) мәнерін пайдаланушыларына ықпал етеді */",
-       "monobook.js": "/* Мындағы JavaScript тек «Дара кітап» (monobook) мәнерін пайдаланушылар үшін жегіледі */"
-}
diff --git a/skins/MonoBook/i18n/kk-latn.json b/skins/MonoBook/i18n/kk-latn.json
deleted file mode 100644 (file)
index 1bc6f64..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "Dara kitap (monobook)",
-       "monobook.css": "/* Mında ornalastırılğan CSS tek «Dara kitap» (monobook) mänerin paýdalanwşılarına ıqpal etedi */",
-       "monobook.js": "/* Mındağı JavaScript tek «Dara kitap» (monobook) mänerin paýdalanwşılar üşin jegiledi */"
-}
diff --git a/skins/MonoBook/i18n/km.json b/skins/MonoBook/i18n/km.json
deleted file mode 100644 (file)
index 162e5a8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "វ័ណថារិទ្ធ"
-               ]
-       },
-       "skinname-monobook": "សៀវភៅឯក",
-       "monobook.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Monobook */"
-}
diff --git a/skins/MonoBook/i18n/ko.json b/skins/MonoBook/i18n/ko.json
deleted file mode 100644 (file)
index 08886f4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "아라"
-               ]
-       },
-       "skinname-monobook": "모노북",
-       "monobook-desc": "문서 배경에서 책의 흑백 사진을 이른, 2004년 이후의 고전 미디어위키 스킨",
-       "monobook.css": "/* 이 CSS 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */",
-       "monobook.js": "/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */"
-}
diff --git a/skins/MonoBook/i18n/krc.json b/skins/MonoBook/i18n/krc.json
deleted file mode 100644 (file)
index 2ec1410..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Къарачайлы"
-               ]
-       },
-       "skinname-monobook": "Моно-китаб"
-}
diff --git a/skins/MonoBook/i18n/ksh.json b/skins/MonoBook/i18n/ksh.json
deleted file mode 100644 (file)
index 6c8c810..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Purodha"
-               ]
-       },
-       "skinname-monobook": "MonoBoch",
-       "monobook.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */",
-       "monobook.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Monnobooch\" jescheck */"
-}
diff --git a/skins/MonoBook/i18n/ku-latn.json b/skins/MonoBook/i18n/ku-latn.json
deleted file mode 100644 (file)
index 7fb824a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Krinkle"
-               ]
-       },
-       "monobook.css": "/* CSS placed here will affect users of the Monobook skin */"
-}
diff --git a/skins/MonoBook/i18n/lb.json b/skins/MonoBook/i18n/lb.json
deleted file mode 100644 (file)
index 95ba71a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Robby"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "De klassesche Look vu MediaWiki zanter 2004, benannt no der Schwaarzwäissfoto vun engem Buch am Hannergrond vun der Säit",
-       "monobook.css": "/* Dës CSS huet nëmmen Afloss op de Skin ''Monobook''  */"
-}
diff --git a/skins/MonoBook/i18n/lt.json b/skins/MonoBook/i18n/lt.json
deleted file mode 100644 (file)
index 82ba416..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Garas"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Čia įdėtas CSS bus rodomas Monobook išvaizdos naudotojams */",
-       "monobook.js": "/* Šis JavaScript bus įkeltas tik „MonoBook“ išvaizdos naudotojams. */"
-}
diff --git a/skins/MonoBook/i18n/lzh.json b/skins/MonoBook/i18n/lzh.json
deleted file mode 100644 (file)
index fd50ed7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "單書",
-       "monobook.css": "/* 此之 CSS 用於單書面之簿也 */",
-       "monobook.js": "/* 此之JavaScript將載於用單書面之簿 */"
-}
diff --git a/skins/MonoBook/i18n/mg.json b/skins/MonoBook/i18n/mg.json
deleted file mode 100644 (file)
index ed7db66..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* Ovay ity rakitra ity raha hampiasa takilan'angaly (stylesheet) anao manokana amin'ny wiki iray manontolo */"
-}
diff --git a/skins/MonoBook/i18n/min.json b/skins/MonoBook/i18n/min.json
deleted file mode 100644 (file)
index 2eb9001..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iwan Novirion"
-               ]
-       },
-       "skinname-monobook": "MonoBook"
-}
diff --git a/skins/MonoBook/i18n/mk.json b/skins/MonoBook/i18n/mk.json
deleted file mode 100644 (file)
index be8e280..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bjankuloski06"
-               ]
-       },
-       "skinname-monobook": "Монобук",
-       "monobook-desc": "Класичното руво на МедијаВики од 2004 г., наречена по црнобелата слика на книга во позадината",
-       "monobook.css": "/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Монобук“ */",
-       "monobook.js": "/* Тука поставениот JavaScript  ќе им се вчитува на корисниците што го користат рувото „Монобук“ */"
-}
diff --git a/skins/MonoBook/i18n/ml.json b/skins/MonoBook/i18n/ml.json
deleted file mode 100644 (file)
index 606cf6c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Praveenp"
-               ]
-       },
-       "skinname-monobook": "മോണോബുക്ക്",
-       "monobook.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */",
-       "monobook.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */"
-}
diff --git a/skins/MonoBook/i18n/mr.json b/skins/MonoBook/i18n/mr.json
deleted file mode 100644 (file)
index 0700112..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "मोनोबुक"
-}
diff --git a/skins/MonoBook/i18n/ms.json b/skins/MonoBook/i18n/ms.json
deleted file mode 100644 (file)
index c01a8cc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Anakmalaysia",
-                       "Pizza1016"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "Kulit MediaWiki yang klasik sejak tahun 2004, dinamakan selepas foto hitam-dan-putih sebuah buku dalam belakang laman.",
-       "monobook.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */"
-}
diff --git a/skins/MonoBook/i18n/mt.json b/skins/MonoBook/i18n/mt.json
deleted file mode 100644 (file)
index 3d4a9b0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Giangian15"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook.css": "/* CSS li tpoġġa hawnhekk se jaffetwa dawk l-utenti li jagħmlu użu mill-iskin ''Monobook'' */",
-       "monobook.js": "/* Kull ''JavaScript'' hawnhekk jiġi mniżżel għal dawk l-utenti li qegħdin jagħmlu użu mill-iskin ''Monobook'' */"
-}
diff --git a/skins/MonoBook/i18n/mwl.json b/skins/MonoBook/i18n/mwl.json
deleted file mode 100644 (file)
index 533e78a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "Lhibro"
-}
diff --git a/skins/MonoBook/i18n/nb.json b/skins/MonoBook/i18n/nb.json
deleted file mode 100644 (file)
index 0318b17..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "Monobook",
-       "monobook.css": "/* CSS i denne fila vil gjelde alle som bruker drakta Monobook */",
-       "monobook.js": "/* Javascript i denne fila vil gjelde for brukere av drakta Monobook */"
-}
diff --git a/skins/MonoBook/i18n/nds-nl.json b/skins/MonoBook/i18n/nds-nl.json
deleted file mode 100644 (file)
index 38e52ec..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Servien"
-               ]
-       },
-       "skinname-monobook": "Monobook"
-}
diff --git a/skins/MonoBook/i18n/nds.json b/skins/MonoBook/i18n/nds.json
deleted file mode 100644 (file)
index dddb393..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* disse Datei ännern üm de Monobook-Stilvörlaag för de ganze Siet antopassen */"
-}
diff --git a/skins/MonoBook/i18n/ne.json b/skins/MonoBook/i18n/ne.json
deleted file mode 100644 (file)
index 04516dd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "सरोज कुमार ढकाल"
-               ]
-       },
-       "skinname-monobook": "मोनोबुक",
-       "monobook.css": "/* यहाँ राखिएको CSS ले मोनोबुक स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ  */"
-}
diff --git a/skins/MonoBook/i18n/new.json b/skins/MonoBook/i18n/new.json
deleted file mode 100644 (file)
index a16deba..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Eukesh"
-               ]
-       },
-       "monobook.css": "/* थन तःगु CSS नं मोनोबुक स्किनया छ्य्‌लामितेत असर याइ */"
-}
diff --git a/skins/MonoBook/i18n/nl.json b/skins/MonoBook/i18n/nl.json
deleted file mode 100644 (file)
index b08e117..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Siebrand",
-                       "Sjoerddebruin"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook-desc": "De klassieke MediaWiki-vormgeving sinds 2004, genoemd naar de zwart-witfoto van een boek op de achtergrond van de pagina",
-       "monobook.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */",
-       "monobook.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */"
-}
diff --git a/skins/MonoBook/i18n/nn.json b/skins/MonoBook/i18n/nn.json
deleted file mode 100644 (file)
index 2655c70..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Eirik",
-                       "Frokor",
-                       "Njardarlogar"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* CSS-tekst som vert plassert her, endrar utsjånaden til sidedrakta Monobook */",
-       "monobook.js": "/* Javascript i denne fila vil gjelde for brukarar av drakta Monobook */"
-}
diff --git a/skins/MonoBook/i18n/nv.json b/skins/MonoBook/i18n/nv.json
deleted file mode 100644 (file)
index ede8a6d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "NaaltsoosŁáa'ígíí"
-}
diff --git a/skins/MonoBook/i18n/oc.json b/skins/MonoBook/i18n/oc.json
deleted file mode 100644 (file)
index 7c1e1f8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Cedric31"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook.css": "/* Lo CSS plaçat aicí afectarà los utilizaires del skin Monobook */",
-       "monobook.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge MonoBook unicament. */"
-}
diff --git a/skins/MonoBook/i18n/os.json b/skins/MonoBook/i18n/os.json
deleted file mode 100644 (file)
index 86efc7f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "Моно-чиныг"
-}
diff --git a/skins/MonoBook/i18n/pa.json b/skins/MonoBook/i18n/pa.json
deleted file mode 100644 (file)
index f9e0833..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "ਮੋਨੋਬੁੱਕ"
-}
diff --git a/skins/MonoBook/i18n/pam.json b/skins/MonoBook/i18n/pam.json
deleted file mode 100644 (file)
index 8b31a7b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* CSS a mikabit keni miapectuan la reng gagamit king Monobook a pabalat */"
-}
diff --git a/skins/MonoBook/i18n/pdt.json b/skins/MonoBook/i18n/pdt.json
deleted file mode 100644 (file)
index 428d91c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Wikipeeta"
-               ]
-       },
-       "monobook.css": "/* CSS opp dise Sted wirtjt opp daut Monobook-Skin */",
-       "monobook.js": "/* Daut neachste JavaScript woat fe Brucka mett Monobook-Skin jelode */"
-}
diff --git a/skins/MonoBook/i18n/pl.json b/skins/MonoBook/i18n/pl.json
deleted file mode 100644 (file)
index 4c7031a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sp5uhe",
-                       "Matma Rex"
-               ]
-       },
-       "skinname-monobook": "Książka",
-       "monobook-desc": "Klasyczna skórka MediaWiki, stworzona w 2004 roku, nazwana od czarno-białego zdjęcia książki w tle strony",
-       "monobook.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Książka */",
-       "monobook.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Książka */"
-}
diff --git a/skins/MonoBook/i18n/pms.json b/skins/MonoBook/i18n/pms.json
deleted file mode 100644 (file)
index 8910d4c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "monobook.css": "/* cangé st'archivi-sì për modifiché la formatassion dël sit antregh */",
-       "monobook.js": "/* Ës messagi-sì as dovrìa pa pì dovrelo; a sò pòst ch'a dòvra [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/ps.json b/skins/MonoBook/i18n/ps.json
deleted file mode 100644 (file)
index d7ee132..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "مونوبوک"
-}
diff --git a/skins/MonoBook/i18n/pt-br.json b/skins/MonoBook/i18n/pt-br.json
deleted file mode 100644 (file)
index b8f05f4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* o código CSS colocado aqui terá efeito nos usuários do tema Monobook */",
-       "monobook.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/pt.json b/skins/MonoBook/i18n/pt.json
deleted file mode 100644 (file)
index df34886..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hamilton Abreu",
-                       "Fúlvio",
-                       "Vitorvicentevalente"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook-desc": "O tema clássico do MediaWiki desde 2004, tendo este nome sido atribuído devido a uma imagem a preto-e-branco de um livro no plano de fundo da página",
-       "monobook.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Monobook */",
-       "monobook.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Monobook */"
-}
diff --git a/skins/MonoBook/i18n/qqq.json b/skins/MonoBook/i18n/qqq.json
deleted file mode 100644 (file)
index 5056ddb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Meno25",
-                       "Umherirrender",
-                       "Matma Rex"
-               ]
-       },
-       "skinname-monobook": "{{optional}}",
-       "monobook-desc": "{{desc|what=skin|name=MonoBook|url=https://www.mediawiki.org/wiki/Skin:MonoBook}}",
-       "monobook.css": "{{optional}}\nCSS applied to users using MonoBook skin.",
-       "monobook.js": "{{optional}}\nJS for users using MonoBook skin."
-}
diff --git a/skins/MonoBook/i18n/qu.json b/skins/MonoBook/i18n/qu.json
deleted file mode 100644 (file)
index 2fdb43c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AlimanRuna"
-               ]
-       },
-       "monobook.css": "/* Kayman churasqa CSS nisqaqa Monobook qaratam hukchanqa tukuy internet tiyanapaq */",
-       "monobook.js": "/* Ima kaypi qillqamusqa JavaScript nisqa wakichi qillqapas MonoBook nisqata llamk'achiq ruraqkunapaq chaqnasqa kanqa */"
-}
diff --git a/skins/MonoBook/i18n/rm.json b/skins/MonoBook/i18n/rm.json
deleted file mode 100644 (file)
index 7eb17f7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gion-andri"
-               ]
-       },
-       "monobook.css": "/* editescha quest file per adattar il skin momobook per l'entira pagina */",
-       "monobook.js": ""
-}
diff --git a/skins/MonoBook/i18n/ro.json b/skins/MonoBook/i18n/ro.json
deleted file mode 100644 (file)
index 2232372..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Firilacroco"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook.css": "/* modificați acest fișier pentru a adapta înfățișarea monobook-ului pentru tot situl*/"
-}
diff --git a/skins/MonoBook/i18n/roa-tara.json b/skins/MonoBook/i18n/roa-tara.json
deleted file mode 100644 (file)
index d7b52b0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Joetaras"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Monobook */",
-       "monobook.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/ru.json b/skins/MonoBook/i18n/ru.json
deleted file mode 100644 (file)
index c3b1d46..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AlexSm",
-                       "Kaganer",
-                       "Okras"
-               ]
-       },
-       "monobook-desc": "Классическая тема оформления MediaWiki, созданная в 2004 году и названая в честь чёрно-белой фотографии книги с фонового изображения страницы",
-       "monobook.css": "/* Размещённый здесь CSS будет применяться к теме оформления Monobook */",
-       "monobook.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/sa.json b/skins/MonoBook/i18n/sa.json
deleted file mode 100644 (file)
index 5f3f966..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "skinname-monobook": "पुस्तक"
-}
diff --git a/skins/MonoBook/i18n/sah.json b/skins/MonoBook/i18n/sah.json
deleted file mode 100644 (file)
index 5f3cbfc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "HalanTul"
-               ]
-       },
-       "monobook.css": "/* Манна оҥоһуллубут CSS Monobook диэн скиҥҥа туһаныллыа */",
-       "monobook.js": "/* Эргэрбит; маны туһан:[[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/scn.json b/skins/MonoBook/i18n/scn.json
deleted file mode 100644 (file)
index cba6acf..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Santu",
-                       "Sarvaturi",
-                       "Tonyfroio"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Li stili CSS nziriti ccà s'àpplicanu a l'utenti chi usanu la skin Monobook */",
-       "monobook.js": "/* Lu còdici JavaScript nzirutu ccà veni carricatu di l'utenti c'ùsanu la skin MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/si.json b/skins/MonoBook/i18n/si.json
deleted file mode 100644 (file)
index 89a6028..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "නන්දිමිතුරු"
-               ]
-       },
-       "monobook.css": "/* මෙහි CSS  බහාලීම ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */",
-       "monobook.js": "/* මෙහි ඕනෑම ජාවාස්ක්‍රිප්ට් එකක් ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්‍රවේශනය කෙරේ */"
-}
diff --git a/skins/MonoBook/i18n/sk.json b/skins/MonoBook/i18n/sk.json
deleted file mode 100644 (file)
index 8865e10..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Helix84",
-                       "Rudko"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Monobook */",
-       "monobook.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Monobook */"
-}
diff --git a/skins/MonoBook/i18n/sq.json b/skins/MonoBook/i18n/sq.json
deleted file mode 100644 (file)
index 2a74455..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dori"
-               ]
-       },
-       "monobook.css": "/* redaktoni këtë faqe për të përshtatur pamjen Monobook për tëra faqet tuaja */"
-}
diff --git a/skins/MonoBook/i18n/sr-ec.json b/skins/MonoBook/i18n/sr-ec.json
deleted file mode 100644 (file)
index 0304c03..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Rancher"
-               ]
-       },
-       "skinname-monobook": "Монобук",
-       "monobook.css": "/* CSS постављен овде ће утицати на све кориснике теме „Монобук“ */",
-       "monobook.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Монобук“ */"
-}
diff --git a/skins/MonoBook/i18n/sr-el.json b/skins/MonoBook/i18n/sr-el.json
deleted file mode 100644 (file)
index 35398b5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Rancher"
-               ]
-       },
-       "skinname-monobook": "Monobuk",
-       "monobook.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Monobuk“ */",
-       "monobook.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Monobuk“ */"
-}
diff --git a/skins/MonoBook/i18n/stq.json b/skins/MonoBook/i18n/stq.json
deleted file mode 100644 (file)
index d21f86d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Maartenvdbent"
-               ]
-       },
-       "monobook.css": "/* Littikschrieuwen nit twinge */",
-       "monobook.js": "/* Ferallerd; benutsje insteede deerfon [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/su.json b/skins/MonoBook/i18n/su.json
deleted file mode 100644 (file)
index 627a97b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* édit koropak ieu pikeun nyaluyukeun kulit ''monobook'' pikeun sakabéh situs */"
-}
diff --git a/skins/MonoBook/i18n/sv.json b/skins/MonoBook/i18n/sv.json
deleted file mode 100644 (file)
index 4c08fd8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lejonel",
-                       "Lokal Profil",
-                       "Skalman"
-               ]
-       },
-       "skinname-monobook": "Monobook",
-       "monobook-desc": "Det klassiska MediaWiki-utseendet sedan 2004, uppkallad efter det svart-vita foto på en bok som syns i bakgrunden på sidan.",
-       "monobook.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Monobook */",
-       "monobook.js": "/* JavaScript här kommer att laddas för dem som använder skalet Monobook */"
-}
diff --git a/skins/MonoBook/i18n/te.json b/skins/MonoBook/i18n/te.json
deleted file mode 100644 (file)
index 71b3dbe..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Veeven"
-               ]
-       },
-       "skinname-monobook": "మోనోబుక్"
-}
diff --git a/skins/MonoBook/i18n/th.json b/skins/MonoBook/i18n/th.json
deleted file mode 100644 (file)
index 38be3f9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Manop",
-                       "Octahedron80"
-               ]
-       },
-       "skinname-monobook": "โมโนบุ๊ก",
-       "monobook.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */",
-       "monobook.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */"
-}
diff --git a/skins/MonoBook/i18n/tl.json b/skins/MonoBook/i18n/tl.json
deleted file mode 100644 (file)
index 5d10527..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AnakngAraw",
-                       "Sky Harbor"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* Ang CSS na inilagay dito ay makakaapekto sa mga tagagamit ng pabalat na Monobook */",
-       "monobook.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/tr.json b/skins/MonoBook/i18n/tr.json
deleted file mode 100644 (file)
index bdb96c8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dbl2010"
-               ]
-       },
-       "monobook.css": "/* Buraya konulacak CSS kodu tüm Monobook teması kullanan tüm kullanıcılarda etkin olur */"
-}
diff --git a/skins/MonoBook/i18n/tt-cyrl.json b/skins/MonoBook/i18n/tt-cyrl.json
deleted file mode 100644 (file)
index 8f84daf..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ильнар"
-               ]
-       },
-       "skinname-monobook": "Китап"
-}
diff --git a/skins/MonoBook/i18n/tt-latn.json b/skins/MonoBook/i18n/tt-latn.json
deleted file mode 100644 (file)
index 53dfaa0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Don Alessandro"
-               ]
-       },
-       "skinname-monobook": "Kitap"
-}
diff --git a/skins/MonoBook/i18n/tyv.json b/skins/MonoBook/i18n/tyv.json
deleted file mode 100644 (file)
index 26936cf..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sborsody"
-               ]
-       },
-       "skinname-monobook": "МоноБук"
-}
diff --git a/skins/MonoBook/i18n/ug-arab.json b/skins/MonoBook/i18n/ug-arab.json
deleted file mode 100644 (file)
index 73e0776..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arlin"
-               ]
-       },
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* CSS placed here will affect users of the Monobook skin */",
-       "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
diff --git a/skins/MonoBook/i18n/uk.json b/skins/MonoBook/i18n/uk.json
deleted file mode 100644 (file)
index 289f50e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dim Grits",
-                       "Matma Rex",
-                       "Ата"
-               ]
-       },
-       "skinname-monobook": "Моно-книга",
-       "monobook-desc": "Класична тема оформлення MediaWiki з 2004 року, названа за чорно-білим фото книги на фоні сторінки",
-       "monobook.css": "/* Розміщений тут CSS буде застосовуватися до всіх тем оформлення Monobook */",
-       "monobook.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Моно-книга */"
-}
diff --git a/skins/MonoBook/i18n/vep.json b/skins/MonoBook/i18n/vep.json
deleted file mode 100644 (file)
index 2213e16..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Игорь Бродский"
-               ]
-       },
-       "skinname-monobook": "MonoBook"
-}
diff --git a/skins/MonoBook/i18n/vi.json b/skins/MonoBook/i18n/vi.json
deleted file mode 100644 (file)
index 67566f6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Minh Nguyen"
-               ]
-       },
-       "monobook-desc": "Giao diện MediaWiki cổ điển năm 2004, được đặt tên theo bức hình nền cuốn sách đen trắng",
-       "monobook.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện MonoBook */",
-       "monobook.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện MonoBook */"
-}
diff --git a/skins/MonoBook/i18n/vmf.json b/skins/MonoBook/i18n/vmf.json
deleted file mode 100644 (file)
index 9b3453b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Silvicola"
-               ]
-       },
-       "monobook.css": "/* CSS hiir beâjflusd nôr dii Monobook-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */"
-}
diff --git a/skins/MonoBook/i18n/vo.json b/skins/MonoBook/i18n/vo.json
deleted file mode 100644 (file)
index 9e4d0f4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "monobook.css": "/* El CSS isio pepladöl otefon gebanis padafomäta: Monobook */"
-}
diff --git a/skins/MonoBook/i18n/vro.json b/skins/MonoBook/i18n/vro.json
deleted file mode 100644 (file)
index 9bc1039..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Võrok"
-               ]
-       },
-       "monobook.css": "/* Taa lehe pääl om Monobook-vällänägemist muutvit kujonduisi. */",
-       "monobook.js": "/* Olõi soovitõt; pruugiq [[MediaWiki:common.js]] */"
-}
diff --git a/skins/MonoBook/i18n/wa.json b/skins/MonoBook/i18n/wa.json
deleted file mode 100644 (file)
index 8ffba09..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Srtxg"
-               ]
-       },
-       "monobook.css": "/* li côde CSS metou chal serè eployî pa tos les uzeus eployant l' pea «monobook» */"
-}
diff --git a/skins/MonoBook/i18n/wo.json b/skins/MonoBook/i18n/wo.json
deleted file mode 100644 (file)
index a01b87e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ibou"
-               ]
-       },
-       "monobook.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Monobook. */",
-       "monobook.js": "/*Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Monobook keppa koy yeb. */"
-}
diff --git a/skins/MonoBook/i18n/yi.json b/skins/MonoBook/i18n/yi.json
deleted file mode 100644 (file)
index 5a7d3e1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "פוילישער"
-               ]
-       },
-       "skinname-monobook": "מאנאבוק",
-       "monobook.css": "/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */"
-}
diff --git a/skins/MonoBook/i18n/yue.json b/skins/MonoBook/i18n/yue.json
deleted file mode 100644 (file)
index b450970..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-       "skinname-monobook": "MonoBook",
-       "monobook.css": "/* 響呢度放 CSS 碼去改用戶用嘅 Monobook 畫面 */",
-       "monobook.js": "/* 響每一次個頁面載入時,用 Monobook 畫面嘅用戶都會載入呢度任何嘅JavaScript */"
-}
diff --git a/skins/MonoBook/i18n/zh-hans.json b/skins/MonoBook/i18n/zh-hans.json
deleted file mode 100644 (file)
index fc3f368..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Xiaomingyan",
-                       "Cwek",
-                       "Liuxinyu970226"
-               ]
-       },
-       "monobook-desc": "自2004年就出现的经典MediaWiki皮肤,命名依据一本书中某页面的黑白照片背景",
-       "monobook.css": "/* 放置于这里的CSS将影响使用MonoBook皮肤的用户 */",
-       "monobook.js": "/* 这里的任何JavaScript将为使用MonoBook皮肤的用户加载 */"
-}
diff --git a/skins/MonoBook/i18n/zh-hant.json b/skins/MonoBook/i18n/zh-hant.json
deleted file mode 100644 (file)
index e6a6a78..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Cwlin0416"
-               ]
-       },
-       "monobook-desc": "MediaWiki 自 2004 年以來的經典外觀,根據頁面背景的書本黑白照命名",
-       "monobook.css": "/* 此 CSS 會影響使用 Monobook 介面外觀的使用者 */",
-       "monobook.js": "/* 此 JavaScript 會用於使用 Monobook 介面外觀使用者 */"
-}
diff --git a/skins/MonoBook/link_icon.gif b/skins/MonoBook/link_icon.gif
deleted file mode 100644 (file)
index 168c1a2..0000000
Binary files a/skins/MonoBook/link_icon.gif and /dev/null differ
diff --git a/skins/MonoBook/lock_icon.gif b/skins/MonoBook/lock_icon.gif
deleted file mode 100644 (file)
index f71cd9b..0000000
Binary files a/skins/MonoBook/lock_icon.gif and /dev/null differ
diff --git a/skins/MonoBook/magnify-clip.png b/skins/MonoBook/magnify-clip.png
deleted file mode 100644 (file)
index ffd7637..0000000
Binary files a/skins/MonoBook/magnify-clip.png and /dev/null differ
diff --git a/skins/MonoBook/mail_icon.gif b/skins/MonoBook/mail_icon.gif
deleted file mode 100644 (file)
index cf5680d..0000000
Binary files a/skins/MonoBook/mail_icon.gif and /dev/null differ
diff --git a/skins/MonoBook/main.css b/skins/MonoBook/main.css
deleted file mode 100644 (file)
index 1fb9ad4..0000000
+++ /dev/null
@@ -1,908 +0,0 @@
-/*
-** MediaWiki 'monobook' style sheet for CSS2-capable browsers.
-** Copyright Gabriel Wicke - http://wikidev.net/
-** License: GPL (http://www.gnu.org/copyleft/gpl.html)
-**
-** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
-** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
-** Michael Zeltner and Geir Bækholt)
-** All you guys rock :)
-*/
-
-div#column-content {
-       width: 100%;
-       float: right;
-       margin: 0 0 .6em -12.2em;
-       padding: 0;
-}
-
-div#content {
-       margin: 2.8em 0 0 12.2em;
-       padding: 1em;
-       position: relative;
-       z-index: 2;
-}
-
-div#column-one {
-       padding-top: 160px;
-}
-
-/* Hide, but keep accessible for screen-readers */
-#column-one h2 {
-       position: absolute;
-       top: -9999px;
-}
-
-div#content {
-       background: white;
-       color: black;
-       border: 1px solid #aaa;
-       border-right: none;
-       line-height: 1.5em;
-}
-
-/* the left column width is specified in class .portlet */
-
-/* Font size:
-** We take advantage of keyword scaling- browsers won't go below 9px
-** More at http://www.w3.org/2003/07/30-font-size
-** http://style.cleverchimp.com/font_size_intervals/altintervals.html
-*/
-
-body {
-       font: x-small sans-serif;
-       /* @embed */
-       background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
-       color: black;
-       margin: 0;
-       padding: 0;
-       direction: ltr; /* Needed for RTL flipping */
-       unicode-bidi: embed;
-}
-
-/* scale back up to a sane default */
-div#globalWrapper {
-       font-size: 127%;
-       width: 100%;
-       margin: 0;
-       padding: 0;
-}
-
-/* general styles */
-a {
-       color: #002bb8;
-}
-
-a:visited {
-       color: #5a3696;
-}
-
-a.new,
-#p-personal a.new {
-       color: #cc2200;
-}
-
-ul {
-       list-style-type: square;
-       /* @embed */
-       list-style-image: url(bullet.gif);
-}
-
-input.historysubmit {
-       padding: 0 .3em .3em .3em !important;
-       font-size: 94%;
-       cursor: pointer;
-       height: 1.7em !important;
-       margin-left: 1.6em;
-}
-
-pre, .mw-code {
-       line-height: 1.1em;
-}
-
-#firstHeading {
-       padding-top: 0;
-}
-
-/*
-** the main content area
-*/
-
-#siteNotice {
-       font-size: 95%;
-       padding: 0 0.9em;
-}
-
-#localNotice {
-       margin: 0;
-}
-
-#siteNotice p {
-       margin: 0;
-       padding: 0;
-}
-
-/*
-** classes for special content elements like town boxes
-** intended to be referenced directly from the wiki src
-*/
-
-/*
-** User styles
-*/
-/* table standards */
-table.rimage {
-       float: right;
-       position: relative;
-       margin-left: 1em;
-       margin-bottom: 1em;
-       text-align: center;
-}
-
-/*
-** edit views etc
-*/
-.special li {
-       line-height: 1.4em;
-       margin: 0;
-       padding: 0;
-}
-
-/*
-** keep the whitespace in front of the ^=, hides rule from konqueror
-** this is css3, the validator doesn't like it when validating as css2
-*/
-#bodyContent a.external {
-       /* @embed */
-       background: url(external-ltr.png) center right no-repeat;
-       padding-right: 13px;
-}
-
-#bodyContent a.external[href ^="https://"],
-.link-https {
-       /* @embed */
-       background: url(lock_icon.gif) center right no-repeat;
-       padding-right: 16px;
-}
-
-#bodyContent a.external[href ^="mailto:"],
-.link-mailto {
-       /* @embed */
-       background: url(mail_icon.gif) center right no-repeat;
-       padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="news:"] {
-       /* @embed */
-       background: url(news_icon.png) center right no-repeat;
-       padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="ftp://"],
-.link-ftp {
-       /* @embed */
-       background: url(file_icon.gif) center right no-repeat;
-       padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="irc://"],
-#bodyContent a.external[href ^="ircs://"],
-.link-irc {
-       /* @embed */
-       background: url(discussionitem_icon.gif) center right no-repeat;
-       padding-right: 18px;
-}
-
-#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"],
-#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"],
-#bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"],
-#bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"],
-#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"],
-#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"],
-.link-audio {
-       /* @embed */
-       background: url(audio.png) center right no-repeat;
-       padding-right: 13px;
-}
-
-#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"],
-#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"],
-#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"],
-#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"],
-.link-video {
-       /* @embed */
-       background: url(video.png) center right no-repeat;
-       padding-right: 13px;
-}
-
-#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"],
-#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"],
-#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"],
-.link-document {
-       /* @embed */
-       background: url(document.png) center right no-repeat;
-       padding-right: 12px;
-}
-
-/* Interwiki Styling */
-#bodyContent a.extiw,
-#bodyContent a.extiw:active {
-       color: #36b;
-}
-
-/* External links */
-#bodyContent a.external {
-       color: #36b;
-}
-
-/*
-** Structural Elements
-*/
-
-/*
-** general portlet styles (elements in the quickbar)
-*/
-.portlet {
-       border: none;
-       margin: 0 0 .5em;
-       padding: 0;
-       float: none;
-       width: 11.6em;
-       overflow: hidden;
-}
-
-.portlet h3 {
-       background: transparent;
-       padding: 0 1em 0 .5em;
-       display: inline;
-       height: 1em;
-       text-transform: lowercase;
-       font-size: 91%;
-       font-weight: normal;
-       white-space: nowrap;
-}
-
-.pBody {
-       font-size: 95%;
-       background-color: white;
-       color: black;
-       border-collapse: collapse;
-       border: 1px solid #aaa;
-       padding: 0 .8em .3em .5em;
-}
-
-/* allows .pBody styles to wrap around content added via BaseTemplateAfterPortlet hook */
-.pBody:after {
-       content: '';
-       clear: both;
-       display: block;
-}
-
-.portlet ul {
-       line-height: 1.5em;
-       font-size: 95%;
-}
-
-.portlet li {
-       padding: 0;
-       margin: 0;
-}
-
-/*
-** Logo properties
-*/
-
-#p-logo {
-       top: 0;
-       left: 0;
-       position: absolute; /*needed to use z-index */
-       z-index: 3;
-       height: 155px;
-       width: 12em;
-       overflow: visible;
-}
-
-#p-logo h3 {
-       display: none;
-}
-
-#p-logo a,
-#p-logo a:hover {
-       display: block;
-       height: 155px;
-       width: 12.2em;
-       background-repeat: no-repeat;
-       background-position: 35% 50% !important;
-       text-decoration: none;
-}
-
-/*
-** Search portlet
-*/
-#p-search {
-       position: relative;
-       z-index: 3;
-}
-
-input.searchButton {
-       margin-top: 1px;
-       font-size: 95%;
-}
-
-#searchGoButton {
-       padding-left: .5em;
-       padding-right: .5em;
-       font-weight: bold;
-}
-
-#searchInput {
-       width: 10.9em;
-       margin: 0;
-       font-size: 95%;
-}
-
-#p-search .pBody {
-       padding: .5em .4em .4em .4em;
-       text-align: center;
-}
-
-#p-search #searchform div div {
-       margin-top: .4em;
-       font-size: 95%;
-}
-
-/*
-** the personal toolbar
-*/
-#p-personal {
-       position: absolute;
-       left: 0;
-       top: 0;
-       z-index: 3;
-}
-
-#p-personal {
-       width: 100%;
-       white-space: nowrap;
-       padding: 0;
-       margin: 0;
-       border: none;
-       background: none;
-       overflow: visible;
-       line-height: 1.2em;
-}
-
-#p-personal h3 {
-       display: none;
-}
-
-#p-personal .portlet,
-#p-personal .pBody {
-       z-index: 0;
-       padding: 0;
-       margin: 0;
-       border: none;
-       overflow: visible;
-       background: none;
-}
-
-/* this is the ul contained in the portlet */
-#p-personal ul {
-       border: none;
-       line-height: 1.4em;
-       color: #2f6fab;
-       padding: 0 2em 0 3em;
-       margin: 0;
-       text-align: right;
-       list-style-type: none;
-       list-style-image: none;
-       z-index: 0;
-       background: none;
-       cursor: default;
-}
-
-#p-personal li {
-       z-index: 0;
-       border: none;
-       padding: 0;
-       display: inline;
-       color: #2f6fab;
-       margin-left: 1em;
-       line-height: 1.2em;
-       background: none;
-}
-
-#p-personal li a {
-       text-decoration: none;
-       color: #005896;
-       padding-bottom: .2em;
-       background: none;
-}
-
-#p-personal li a:hover {
-       background-color: white;
-       padding-bottom: .2em;
-       text-decoration: none;
-}
-
-#p-personal li.active a:hover {
-       background-color: transparent;
-}
-
-/* The icon in front of the username / login link */
-li#pt-userpage,
-li#pt-anonuserpage,
-li#pt-login {
-       /* @embed */
-       background: url(user.gif) top left no-repeat;
-       padding-left: 20px;
-}
-
-#p-personal ul {
-       text-transform: lowercase;
-}
-
-/* Don't lowercase username or IP addresses (IPv6) */
-li#pt-userpage,
-li#pt-anonuserpage {
-       text-transform: none;
-}
-
-#p-personal li.active {
-       font-weight: bold;
-}
-
-/*
-** the page-related actions- page/talk, edit etc
-*/
-#p-cactions {
-       position: absolute;
-       top: 1.3em;
-       left: 11.5em;
-       margin: 0;
-       white-space: nowrap;
-       width: 76%;
-       line-height: 1.1em;
-       overflow: visible;
-       background: none;
-       border-collapse: collapse;
-       padding-left: 1em;
-       font-size: 95%;
-}
-
-#p-cactions ul {
-       list-style-type: none;
-       list-style-image: none;
-}
-
-#p-cactions li {
-       display: inline;
-       border: 1px solid #aaa;
-       border-bottom: none;
-       padding: 0 0 1em 0;
-       margin: 0 .3em 0 0;
-       overflow: visible;
-       background: white;
-}
-
-#p-cactions li.selected {
-       border-color: #fabd23;
-       font-weight: bold;
-}
-
-#p-cactions li a {
-       background-color: #fbfbfb;
-       color: #002bb8;
-       border: none;
-       padding: 0 .8em .3em;
-       position: relative;
-       z-index: 0;
-       margin: 0;
-       text-decoration: none;
-}
-
-#p-cactions li.selected a {
-       z-index: 3;
-       background-color: white;
-}
-
-#p-cactions .new a {
-       color: #ba0000;
-}
-
-#p-cactions li a:hover {
-       z-index: 3;
-       text-decoration: none;
-       background-color: white;
-}
-
-#p-cactions h3 {
-       display: none;
-}
-
-#p-cactions li.istalk {
-       margin-right: 0;
-}
-
-#p-cactions li.istalk a {
-       padding-right: .5em;
-}
-
-#p-cactions #ca-addsection a {
-       padding-left: .4em;
-       padding-right: .4em;
-}
-
-/* offsets to distinguish the tab groups */
-li#ca-talk {
-       margin-right: 1.6em;
-}
-
-li#ca-watch,
-li#ca-unwatch,
-li#ca-varlang-0,
-li#ca-print {
-       margin-left: 1.6em;
-}
-
-#p-cactions .pBody {
-       font-size: 1em;
-       background-color: transparent;
-       color: inherit;
-       border-collapse: inherit;
-       border: 0;
-       padding: 0;
-}
-
-#p-cactions li a {
-       text-transform: lowercase;
-}
-
-#p-lang {
-       position: relative;
-       z-index: 3;
-}
-
-/* Override text-transform on languages where capitalization is significant */
-.capitalize-all-nouns .portlet h3,
-.capitalize-all-nouns #p-personal ul,
-.capitalize-all-nouns #p-cactions ul li a {
-       text-transform: none;
-}
-
-/* TODO: #t-iscite is only used by the Cite extension, come up with some
- * system which allows extensions to add to this file on the fly
- */
-#t-ispermalink, #t-iscite {
-       color: #999;
-}
-
-/*
-** footer
-*/
-div#footer {
-       background-color: white;
-       border-top: 1px solid #fabd23;
-       border-bottom: 1px solid #fabd23;
-       margin: .6em 0 1em 0;
-       overflow: hidden;
-       padding: .4em 0 .3em 0;
-       text-align: center;
-       font-size: 90%;
-}
-
-div#footer li {
-       display: inline;
-       margin: 0 1.3em;
-}
-
-#f-poweredbyico, #f-copyrightico {
-       margin: 0 8px;
-       position: relative;
-       top: -2px; /* Bump it up just a tad */
-}
-
-#f-poweredbyico {
-       float: right;
-       height: 1%;
-}
-
-#f-copyrightico {
-       float: left;
-       height: 1%;
-}
-
-.mw-htmlform-submit {
-       font-weight: bold;
-       padding-left: .3em;
-       padding-right: .3em;
-       margin-right: 2em;
-}
-
-/* js pref toc */
-#preftoc {
-       margin: 0;
-       padding: 0;
-       width: 100%;
-       clear: both;
-}
-
-#preftoc li {
-       background-color: #f0f0f0;
-       color: #000;
-}
-
-#preftoc li {
-       margin: 1px -2px 1px 2px;
-       float: left;
-       padding: 2px 0 3px 0;
-       border: 1px solid #fff;
-       border-right-color: #716f64;
-       border-bottom: 0;
-       position: relative;
-       white-space: nowrap;
-       list-style-type: none;
-       list-style-image: none;
-       z-index: 3;
-}
-
-#preftoc li.selected {
-       font-weight: bold;
-       background-color: #f9f9f9;
-       border: 1px solid #aaa;
-       border-bottom: none;
-       cursor: default;
-       top: 1px;
-       padding-top: 2px;
-       margin-right: -3px;
-}
-
-#preftoc > li.selected {
-       top: 2px;
-}
-
-#preftoc a,
-#preftoc a:active {
-       display: block;
-       color: #000;
-       padding: 0 .7em;
-       position: relative;
-       text-decoration: none;
-}
-
-#preftoc li.selected a {
-       cursor: default;
-       text-decoration: none;
-}
-
-#preferences {
-       margin: 0;
-       border: 1px solid #aaa;
-       clear: both;
-       padding: 1.5em;
-       background-color: #F9F9F9;
-}
-
-.prefsection {
-       border: none;
-       padding: 0;
-       margin: 0;
-}
-
-.prefsection legend {
-       font-weight: bold;
-}
-
-.prefsection table, .prefsection legend {
-       background-color: #F9F9F9;
-}
-
-.mainLegend {
-       display: none;
-}
-
-td.htmlform-tip {
-       font-size: x-small;
-       padding: .2em 2em;
-       color: #666;
-}
-
-.preferences-login {
-       clear: both;
-       margin-bottom: 1.5em;
-}
-
-.prefcache {
-       font-size: 90%;
-       margin-top: 2em;
-}
-
-#userloginprompt, #languagelinks {
-       font-size: 85%;
-}
-
-#login-sectiontip {
-       font-size: 85%;
-       line-height: 1.2;
-       padding-top: 2em;
-}
-
-#userloginlink a, #wpLoginattempt, #wpCreateaccount {
-       font-weight: bold;
-}
-
-/**
- * This was originally added by Gabriel Wicke in r3681 (committed on 25 May 2004)
- * with the commit message "tweaks to page history".
- * Unlike the other IE/Mac fixes that used to be present here, this seems to get
- * applied on more modern browsers, so let's keep it here until someone has the
- * time to properly test it out.
- */
-#pagehistory li.selected {
-       position: relative;
-}
-
-.redirectText {
-       font-size: 150%;
-       margin: 5px;
-}
-
-div.patrollink {
-       clear: both;
-}
-
-.sharedUploadNotice {
-       font-style: italic;
-}
-
-span.updatedmarker {
-       color: black;
-       background-color: #0f0;
-}
-
-.editExternally {
-       border: 1px solid gray;
-       background-color: #ffffff;
-       padding: 3px;
-       margin-top: 0.5em;
-       float: left;
-       font-size: small;
-       text-align: center;
-}
-
-.editExternallyHelp {
-       font-style: italic;
-       color: gray;
-}
-
-.toggle {
-       margin-left: 2em;
-       text-indent: -2em;
-}
-
-/* @bug 1714 */
-input#wpSave,
-input#wpDiff {
-       margin-right: 0.33em;
-}
-
-#wpSave {
-       font-weight: bold;
-}
-
-/* noarticletext */
-div.noarticletext {
-       border: 1px solid #ccc;
-       background: #fff;
-       padding: .2em 1em;
-       color: #000;
-}
-
-div#searchTargetContainer {
-       left: 10px;
-       top: 10px;
-       width: 90%;
-       background: white;
-}
-
-div#searchTarget {
-       padding: 3px;
-       margin: 5px;
-       background: #F0F0F0;
-       border: solid 1px blue;
-}
-
-div#searchTarget ul li {
-       list-style-type: none;
-       list-style-image: none;
-}
-
-div#searchTarget ul li:before {
-       color: orange;
-       content: "\00BB \0020";
-}
-
-div#searchTargetHide {
-       float: right;
-       border: solid 1px black;
-       background: #DCDCDC;
-       padding: 2px;
-}
-
-#powersearch p {
-       margin-top: 0;
-}
-
-div.multipageimagenavbox {
-       border: solid 1px silver;
-       padding: 4px;
-       margin: 1em;
-       background: #f0f0f0;
-}
-
-div.multipageimagenavbox div.thumb {
-       border: none;
-       margin-left: 2em;
-       margin-right: 2em;
-}
-
-div.multipageimagenavbox hr {
-       margin: 6px;
-}
-
-table.multipageimage td {
-       text-align: center;
-}
-
-.templatesUsed {
-       margin-top: 1.5em;
-}
-
-.mw-summary-preview {
-       margin: 0.1em 0;
-}
-
-/* Friendlier slave lag warnings */
-div.mw-lag-warn-normal,
-div.mw-lag-warn-high {
-       padding: 3px;
-       text-align: center;
-       margin: 3px auto;
-}
-
-div.mw-lag-warn-normal {
-       border: 1px solid #FFCC66;
-       background-color: #FFFFCC;
-}
-
-div.mw-lag-warn-high {
-       font-weight: bold;
-       border: 2px solid #FF0033;
-       background-color: #FFCCCC;
-}
-
-.MediaTransformError {
-       background-color: #ccc;
-       padding: 0.1em;
-}
-
-.MediaTransformError td {
-       text-align: center;
-       vertical-align: middle;
-       font-size: 90%;
-}
-
-/* Sometimes people don't want personal tools to be lowercase! */
-.no-text-transform {
-       text-transform: none;
-}
-
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
-       font-size: 127%;
-}
-
-/* mediawiki.notification */
-.skin-monobook .mw-notification {
-       box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.125);
-}
diff --git a/skins/MonoBook/news_icon.png b/skins/MonoBook/news_icon.png
deleted file mode 100644 (file)
index 4d3cb47..0000000
Binary files a/skins/MonoBook/news_icon.png and /dev/null differ
diff --git a/skins/MonoBook/required.gif b/skins/MonoBook/required.gif
deleted file mode 100644 (file)
index bd71976..0000000
Binary files a/skins/MonoBook/required.gif and /dev/null differ
diff --git a/skins/MonoBook/user.gif b/skins/MonoBook/user.gif
deleted file mode 100644 (file)
index 34b4839..0000000
Binary files a/skins/MonoBook/user.gif and /dev/null differ
diff --git a/skins/MonoBook/video.png b/skins/MonoBook/video.png
deleted file mode 100644 (file)
index d86dbe0..0000000
Binary files a/skins/MonoBook/video.png and /dev/null differ
diff --git a/skins/MonoBook/wiki-indexed.png b/skins/MonoBook/wiki-indexed.png
deleted file mode 100644 (file)
index 799ebac..0000000
Binary files a/skins/MonoBook/wiki-indexed.png and /dev/null differ
diff --git a/skins/MonoBook/wiki.png b/skins/MonoBook/wiki.png
deleted file mode 100644 (file)
index 8c42118..0000000
Binary files a/skins/MonoBook/wiki.png and /dev/null differ
diff --git a/skins/Vector/COPYING b/skins/Vector/COPYING
deleted file mode 100644 (file)
index 019694a..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-== GNU GENERAL PUBLIC LICENSE ==
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-=== Preamble ===
-
-The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
-
-'''0.''' This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-'''1.''' You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-'''2.''' You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-       '''a)''' You must cause the modified files to carry prominent notices
-       stating that you changed the files and the date of any change.
-
-       '''b)''' You must cause any work that you distribute or publish, that in
-       whole or in part contains or is derived from the Program or any
-       part thereof, to be licensed as a whole at no charge to all third
-       parties under the terms of this License.
-
-       '''c)''' If the modified program normally reads commands interactively
-       when run, you must cause it, when started running for such
-       interactive use in the most ordinary way, to print or display an
-       announcement including an appropriate copyright notice and a
-       notice that there is no warranty (or else, saying that you provide
-       a warranty) and that users may redistribute the program under
-       these conditions, and telling the user how to view a copy of this
-       License.  (Exception: if the Program itself is interactive but
-       does not normally print such an announcement, your work based on
-       the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-'''3.''' You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-       '''a)''' Accompany it with the complete corresponding machine-readable
-       source code, which must be distributed under the terms of Sections
-       1 and 2 above on a medium customarily used for software interchange; or,
-
-       '''b)''' Accompany it with a written offer, valid for at least three
-       years, to give any third party, for a charge no more than your
-       cost of physically performing source distribution, a complete
-       machine-readable copy of the corresponding source code, to be
-       distributed under the terms of Sections 1 and 2 above on a medium
-       customarily used for software interchange; or,
-
-       '''c)''' Accompany it with the information you received as to the offer
-       to distribute corresponding source code.  (This alternative is
-       allowed only for noncommercial distribution and only if you
-       received the program in object code or executable form with such
-       an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-'''4.''' You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-'''5.''' You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-'''6.''' Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-'''7.''' If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-'''8.''' If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-'''9.''' The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-'''10.''' If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-=== NO WARRANTY ===
-
-'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-       '''END OF TERMS AND CONDITIONS'''
-
-== How to Apply These Terms to Your New Programs ==
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-       <one line to give the program's name and a brief idea of what it does.>
-
-       Copyright (C) <year>  <name of author>
-
-       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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-       Gnomovision version 69, Copyright (C) year name of author
-       Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-       This is free software, and you are welcome to redistribute it
-       under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-       Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-       `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-       <signature of Ty Coon>, 1 April 1989
-
-       Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/skins/Vector/SkinVector.php b/skins/Vector/SkinVector.php
deleted file mode 100644 (file)
index 237a241..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * SkinTemplate class for Vector skin
- * @ingroup Skins
- */
-class SkinVector extends SkinTemplate {
-       public $skinname = 'vector';
-       public $stylename = 'Vector';
-       public $template = 'VectorTemplate';
-
-       protected static $bodyClasses = array( 'vector-animateLayout' );
-
-       /**
-        * Initializes output page and sets up skin-specific parameters
-        * @param OutputPage $out Object to initialize
-        */
-       public function initPage( OutputPage $out ) {
-               global $wgLocalStylePath;
-
-               parent::initPage( $out );
-
-               // Append CSS which includes IE only behavior fixes for hover support -
-               // this is better than including this in a CSS file since it doesn't
-               // wait for the CSS file to load before fetching the HTC file.
-               $min = $this->getRequest()->getFuzzyBool( 'debug' ) ? '' : '.min';
-               $out->addHeadItem( 'csshover',
-                       '<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
-                               htmlspecialchars( $wgLocalStylePath ) .
-                               "/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
-               );
-
-               $out->addModules( array( 'skins.vector.js' ) );
-       }
-
-       /**
-        * Loads skin and user CSS files.
-        * @param OutputPage $out
-        */
-       function setupSkinUserCss( OutputPage $out ) {
-               parent::setupSkinUserCss( $out );
-
-               $styles = array( 'mediawiki.skinning.interface', 'skins.vector.styles' );
-               wfRunHooks( 'SkinVectorStyleModules', array( $this, &$styles ) );
-               $out->addModuleStyles( $styles );
-       }
-
-       /**
-        * Adds classes to the body element.
-        *
-        * @param OutputPage $out
-        * @param array &$bodyAttrs Array of attributes that will be set on the body element
-        */
-       function addToBodyAttributes( $out, &$bodyAttrs ) {
-               if ( isset( $bodyAttrs['class'] ) && strlen( $bodyAttrs['class'] ) > 0 ) {
-                       $bodyAttrs['class'] .= ' ' . implode( ' ', static::$bodyClasses );
-               } else {
-                       $bodyAttrs['class'] = implode( ' ', static::$bodyClasses );
-               }
-       }
-}
diff --git a/skins/Vector/Vector.php b/skins/Vector/Vector.php
deleted file mode 100644 (file)
index a08d121..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-$wgExtensionCredits['skin'][] = array(
-       'path' => __FILE__,
-       'name' => 'Vector',
-       'namemsg' => 'skinname-vector',
-       'descriptionmsg' => 'vector-skin-desc',
-       'url' => 'https://www.mediawiki.org/wiki/Skin:Vector',
-       'author' => array( 'Trevor Parscal', 'Roan Kattouw', '...' ),
-       'license-name' => 'GPLv2+',
-);
-
-// Register files
-$wgAutoloadClasses['SkinVector'] = __DIR__ . '/SkinVector.php';
-$wgAutoloadClasses['VectorTemplate'] = __DIR__ . '/VectorTemplate.php';
-$wgMessagesDirs['Vector'] = __DIR__ . '/i18n';
-
-// Register skin
-$wgValidSkinNames['vector'] = 'Vector';
-
-// Register modules
-$wgResourceModules['skins.vector.styles'] = array(
-       'styles' => array(
-               'screen.less' => array( 'media' => 'screen' ),
-               'screen-hd.less' => array( 'media' => 'screen and (min-width: 982px)' ),
-       ),
-       'remoteSkinPath' => 'Vector',
-       'localBasePath' => __DIR__,
-);
-$wgResourceModules['skins.vector.js'] = array(
-       'scripts' => array(
-               'collapsibleTabs.js',
-               'vector.js',
-       ),
-       'position' => 'top',
-       'dependencies' => array(
-               'jquery.throttle-debounce',
-               'jquery.tabIndex',
-       ),
-       'remoteSkinPath' => 'Vector',
-       'localBasePath' => __DIR__,
-);
-
-// Apply module customizations
-$wgResourceModuleSkinStyles['vector'] = array(
-       'jquery.tipsy' => 'skinStyles/jquery.tipsy.less',
-       'jquery.ui.core' => array(
-               'skinStyles/jquery.ui/jquery.ui.core.css',
-               'skinStyles/jquery.ui/jquery.ui.theme.css',
-       ),
-       'jquery.ui.accordion' => 'skinStyles/jquery.ui/jquery.ui.accordion.css',
-       'jquery.ui.autocomplete' => 'skinStyles/jquery.ui/jquery.ui.autocomplete.css',
-       'jquery.ui.button' => 'skinStyles/jquery.ui/jquery.ui.button.css',
-       'jquery.ui.datepicker' => 'skinStyles/jquery.ui/jquery.ui.datepicker.css',
-       'jquery.ui.dialog' => 'skinStyles/jquery.ui/jquery.ui.dialog.css',
-       'jquery.ui.progressbar' => 'skinStyles/jquery.ui/jquery.ui.progressbar.css',
-       'jquery.ui.resizable' => 'skinStyles/jquery.ui/jquery.ui.resizable.css',
-       'jquery.ui.selectable' => 'skinStyles/jquery.ui/jquery.ui.selectable.css',
-       'jquery.ui.slider' => 'skinStyles/jquery.ui/jquery.ui.slider.css',
-       'jquery.ui.tabs' => 'skinStyles/jquery.ui/jquery.ui.tabs.css',
-       'mediawiki.notification' => 'skinStyles/mediawiki.notification.less',
-       'mediawiki.special' => 'skinStyles/mediawiki.special.less',
-       'mediawiki.special.preferences' => 'skinStyles/mediawiki.special.preferences.less',
-       'remoteSkinPath' => 'Vector',
-       'localBasePath' => __DIR__,
-);
diff --git a/skins/Vector/VectorTemplate.php b/skins/Vector/VectorTemplate.php
deleted file mode 100644 (file)
index 291b761..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * QuickTemplate class for Vector skin
- * @ingroup Skins
- */
-class VectorTemplate extends BaseTemplate {
-       /* Functions */
-
-       /**
-        * Outputs the entire contents of the (X)HTML page
-        */
-       public function execute() {
-               global $wgVectorUseIconWatch;
-
-               // Build additional attributes for navigation urls
-               $nav = $this->data['content_navigation'];
-
-               if ( $wgVectorUseIconWatch ) {
-                       $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() )
-                               ? 'unwatch'
-                               : 'watch';
-
-                       if ( isset( $nav['actions'][$mode] ) ) {
-                               $nav['views'][$mode] = $nav['actions'][$mode];
-                               $nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
-                               $nav['views'][$mode]['primary'] = true;
-                               unset( $nav['actions'][$mode] );
-                       }
-               }
-
-               $xmlID = '';
-               foreach ( $nav as $section => $links ) {
-                       foreach ( $links as $key => $link ) {
-                               if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) {
-                                       $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' );
-                               }
-
-                               $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID;
-                               $nav[$section][$key]['attributes'] =
-                                       ' id="' . Sanitizer::escapeId( $xmlID ) . '"';
-                               if ( $link['class'] ) {
-                                       $nav[$section][$key]['attributes'] .=
-                                               ' class="' . htmlspecialchars( $link['class'] ) . '"';
-                                       unset( $nav[$section][$key]['class'] );
-                               }
-                               if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) {
-                                       $nav[$section][$key]['key'] =
-                                               Linker::tooltip( $xmlID );
-                               } else {
-                                       $nav[$section][$key]['key'] =
-                                               Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) );
-                               }
-                       }
-               }
-               $this->data['namespace_urls'] = $nav['namespaces'];
-               $this->data['view_urls'] = $nav['views'];
-               $this->data['action_urls'] = $nav['actions'];
-               $this->data['variant_urls'] = $nav['variants'];
-
-               // Reverse horizontally rendered navigation elements
-               if ( $this->data['rtl'] ) {
-                       $this->data['view_urls'] =
-                               array_reverse( $this->data['view_urls'] );
-                       $this->data['namespace_urls'] =
-                               array_reverse( $this->data['namespace_urls'] );
-                       $this->data['personal_urls'] =
-                               array_reverse( $this->data['personal_urls'] );
-               }
-               // Output HTML Page
-               $this->html( 'headelement' );
-               ?>
-               <div id="mw-page-base" class="noprint"></div>
-               <div id="mw-head-base" class="noprint"></div>
-               <div id="content" class="mw-body" role="main">
-                       <a id="top"></a>
-
-                       <?php
-                       if ( $this->data['sitenotice'] ) {
-                               ?>
-                               <div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
-                       <?php
-                       }
-                       ?>
-                       <h1 id="firstHeading" class="firstHeading" lang="<?php
-                       $this->data['pageLanguage'] =
-                               $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
-                       $this->text( 'pageLanguage' );
-                       ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
-                       <?php $this->html( 'prebodyhtml' ) ?>
-                       <div id="bodyContent" class="mw-body-content">
-                               <?php
-                               if ( $this->data['isarticle'] ) {
-                                       ?>
-                                       <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
-                               <?php
-                               }
-                               ?>
-                               <div id="contentSub"<?php
-                               $this->html( 'userlangattributes' )
-                               ?>><?php $this->html( 'subtitle' ) ?></div>
-                               <?php
-                               if ( $this->data['undelete'] ) {
-                                       ?>
-                                       <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
-                               <?php
-                               }
-                               ?>
-                               <?php
-                               if ( $this->data['newtalk'] ) {
-                                       ?>
-                                       <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
-                               <?php
-                               }
-                               ?>
-                               <div id="jump-to-nav" class="mw-jump">
-                                       <?php $this->msg( 'jumpto' ) ?>
-                                       <a href="#mw-navigation"><?php
-                                               $this->msg( 'jumptonavigation' )
-                                               ?></a><?php
-                                       $this->msg( 'comma-separator' )
-                                       ?>
-                                       <a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
-                               </div>
-                               <?php $this->html( 'bodycontent' ) ?>
-                               <?php
-                               if ( $this->data['printfooter'] ) {
-                                       ?>
-                                       <div class="printfooter">
-                                               <?php $this->html( 'printfooter' ); ?>
-                                       </div>
-                               <?php
-                               }
-                               ?>
-                               <?php
-                               if ( $this->data['catlinks'] ) {
-                                       ?>
-                                       <?php
-                                       $this->html( 'catlinks' );
-                                       ?>
-                               <?php
-                               }
-                               ?>
-                               <?php
-                               if ( $this->data['dataAfterContent'] ) {
-                                       ?>
-                                       <?php
-                                       $this->html( 'dataAfterContent' );
-                                       ?>
-                               <?php
-                               }
-                               ?>
-                               <div class="visualClear"></div>
-                               <?php $this->html( 'debughtml' ); ?>
-                       </div>
-               </div>
-               <div id="mw-navigation">
-                       <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
-
-                       <div id="mw-head">
-                               <?php $this->renderNavigation( 'PERSONAL' ); ?>
-                               <div id="left-navigation">
-                                       <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
-                               </div>
-                               <div id="right-navigation">
-                                       <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
-                               </div>
-                       </div>
-                       <div id="mw-panel">
-                               <div id="p-logo" role="banner"><a style="background-image: url(<?php
-                                       $this->text( 'logopath' )
-                                       ?>);" href="<?php
-                                       echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] )
-                                       ?>" <?php
-                                       echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) )
-                                       ?>></a></div>
-                               <?php $this->renderPortals( $this->data['sidebar'] ); ?>
-                       </div>
-               </div>
-               <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>>
-                       <?php
-                       foreach ( $this->getFooterLinks() as $category => $links ) {
-                               ?>
-                               <ul id="footer-<?php
-                               echo $category
-                               ?>">
-                                       <?php
-                                       foreach ( $links as $link ) {
-                                               ?>
-                                               <li id="footer-<?php
-                                               echo $category
-                                               ?>-<?php
-                                               echo $link
-                                               ?>"><?php
-                                                       $this->html( $link )
-                                                       ?></li>
-                                       <?php
-                                       }
-                                       ?>
-                               </ul>
-                       <?php
-                       }
-                       ?>
-                       <?php $footericons = $this->getFooterIcons( "icononly" );
-                       if ( count( $footericons ) > 0 ) {
-                               ?>
-                               <ul id="footer-icons" class="noprint">
-                                       <?php
-                                       foreach ( $footericons as $blockName => $footerIcons ) {
-                                               ?>
-                                               <li id="footer-<?php
-                                               echo htmlspecialchars( $blockName ); ?>ico">
-                                                       <?php
-                                                       foreach ( $footerIcons as $icon ) {
-                                                               ?>
-                                                               <?php
-                                                               echo $this->getSkin()->makeFooterIcon( $icon );
-                                                               ?>
-
-                                                       <?php
-                                                       }
-                                                       ?>
-                                               </li>
-                                       <?php
-                                       }
-                                       ?>
-                               </ul>
-                       <?php
-                       }
-                       ?>
-                       <div style="clear:both"></div>
-               </div>
-               <?php $this->printTrail(); ?>
-
-       </body>
-</html>
-       <?php
-       }
-
-       /**
-        * Render a series of portals
-        *
-        * @param array $portals
-        */
-       protected function renderPortals( $portals ) {
-               // Force the rendering of the following portals
-               if ( !isset( $portals['SEARCH'] ) ) {
-                       $portals['SEARCH'] = true;
-               }
-               if ( !isset( $portals['TOOLBOX'] ) ) {
-                       $portals['TOOLBOX'] = true;
-               }
-               if ( !isset( $portals['LANGUAGES'] ) ) {
-                       $portals['LANGUAGES'] = true;
-               }
-               // Render portals
-               foreach ( $portals as $name => $content ) {
-                       if ( $content === false ) {
-                               continue;
-                       }
-
-                       switch ( $name ) {
-                               case 'SEARCH':
-                                       break;
-                               case 'TOOLBOX':
-                                       $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
-                                       break;
-                               case 'LANGUAGES':
-                                       if ( $this->data['language_urls'] !== false ) {
-                                               $this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' );
-                                       }
-                                       break;
-                               default:
-                                       $this->renderPortal( $name, $content );
-                                       break;
-                       }
-               }
-       }
-
-       /**
-        * @param string $name
-        * @param array $content
-        * @param null|string $msg
-        * @param null|string|array $hook
-        */
-       protected function renderPortal( $name, $content, $msg = null, $hook = null ) {
-               if ( $msg === null ) {
-                       $msg = $name;
-               }
-               $msgObj = wfMessage( $msg );
-               ?>
-               <div class="portal" role="navigation" id='<?php
-               echo Sanitizer::escapeId( "p-$name" )
-               ?>'<?php
-               echo Linker::tooltip( 'p-' . $name )
-               ?> aria-labelledby='<?php echo Sanitizer::escapeId( "p-$name-label" ) ?>'>
-                       <h3<?php
-                       $this->html( 'userlangattributes' )
-                       ?> id='<?php
-                       echo Sanitizer::escapeId( "p-$name-label" )
-                       ?>'><?php
-                               echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg );
-                               ?></h3>
-
-                       <div class="body">
-                               <?php
-                               if ( is_array( $content ) ) {
-                                       ?>
-                                       <ul>
-                                               <?php
-                                               foreach ( $content as $key => $val ) {
-                                                       ?>
-                                                       <?php echo $this->makeListItem( $key, $val ); ?>
-
-                                               <?php
-                                               }
-                                               if ( $hook !== null ) {
-                                                       wfRunHooks( $hook, array( &$this, true ) );
-                                               }
-                                               ?>
-                                       </ul>
-                               <?php
-                               } else {
-                                       ?>
-                                       <?php
-                                       echo $content; /* Allow raw HTML block to be defined by extensions */
-                               }
-
-                               $this->renderAfterPortlet( $name );
-                               ?>
-                       </div>
-               </div>
-       <?php
-       }
-
-       /**
-        * Render one or more navigations elements by name, automatically reveresed
-        * when UI is in RTL mode
-        *
-        * @param array $elements
-        */
-       protected function renderNavigation( $elements ) {
-               global $wgVectorUseSimpleSearch;
-
-               // If only one element was given, wrap it in an array, allowing more
-               // flexible arguments
-               if ( !is_array( $elements ) ) {
-                       $elements = array( $elements );
-                       // If there's a series of elements, reverse them when in RTL mode
-               } elseif ( $this->data['rtl'] ) {
-                       $elements = array_reverse( $elements );
-               }
-               // Render elements
-               foreach ( $elements as $name => $element ) {
-                       switch ( $element ) {
-                               case 'NAMESPACES':
-                                       ?>
-                                       <div id="p-namespaces" role="navigation" class="vectorTabs<?php
-                                       if ( count( $this->data['namespace_urls'] ) == 0 ) {
-                                               echo ' emptyPortlet';
-                                       }
-                                       ?>" aria-labelledby="p-namespaces-label">
-                                               <h3 id="p-namespaces-label"><?php $this->msg( 'namespaces' ) ?></h3>
-                                               <ul<?php $this->html( 'userlangattributes' ) ?>>
-                                                       <?php
-                                                       foreach ( $this->data['namespace_urls'] as $link ) {
-                                                               ?>
-                                                               <li <?php
-                                                               echo $link['attributes']
-                                                               ?>><span><a href="<?php
-                                                                               echo htmlspecialchars( $link['href'] )
-                                                                               ?>" <?php
-                                                                               echo $link['key']
-                                                                               ?>><?php
-                                                                                       echo htmlspecialchars( $link['text'] )
-                                                                                       ?></a></span></li>
-                                                       <?php
-                                                       }
-                                                       ?>
-                                               </ul>
-                                       </div>
-                                       <?php
-                                       break;
-                               case 'VARIANTS':
-                                       ?>
-                                       <div id="p-variants" role="navigation" class="vectorMenu<?php
-                                       if ( count( $this->data['variant_urls'] ) == 0 ) {
-                                               echo ' emptyPortlet';
-                                       }
-                                       ?>" aria-labelledby="p-variants-label">
-                                               <?php
-                                               // Replace the label with the name of currently chosen variant, if any
-                                               $variantLabel = $this->getMsg( 'variants' )->text();
-                                               foreach ( $this->data['variant_urls'] as $link ) {
-                                                       if ( stripos( $link['attributes'], 'selected' ) !== false ) {
-                                                               $variantLabel = $link['text'];
-                                                               break;
-                                                       }
-                                               }
-                                               ?>
-                                               <h3 id="p-variants-label"><span
-                                                       style="display: block;" <?php /* Temporary WMF deployment hack, to be removed before 1.24 release */ ?>
-                                                       ><?php echo htmlspecialchars( $variantLabel ) ?></span><a href="#"></a></h3>
-
-                                               <div class="menu">
-                                                       <ul>
-                                                               <?php
-                                                               foreach ( $this->data['variant_urls'] as $link ) {
-                                                                       ?>
-                                                                       <li<?php
-                                                                       echo $link['attributes']
-                                                                       ?>><a href="<?php
-                                                                               echo htmlspecialchars( $link['href'] )
-                                                                               ?>" lang="<?php
-                                                                               echo htmlspecialchars( $link['lang'] )
-                                                                               ?>" hreflang="<?php
-                                                                               echo htmlspecialchars( $link['hreflang'] )
-                                                                               ?>" <?php
-                                                                               echo $link['key']
-                                                                               ?>><?php
-                                                                                       echo htmlspecialchars( $link['text'] )
-                                                                                       ?></a></li>
-                                                               <?php
-                                                               }
-                                                               ?>
-                                                       </ul>
-                                               </div>
-                                       </div>
-                                       <?php
-                                       break;
-                               case 'VIEWS':
-                                       ?>
-                                       <div id="p-views" role="navigation" class="vectorTabs<?php
-                                       if ( count( $this->data['view_urls'] ) == 0 ) {
-                                               echo ' emptyPortlet';
-                                       }
-                                       ?>" aria-labelledby="p-views-label">
-                                               <h3 id="p-views-label"><?php $this->msg( 'views' ) ?></h3>
-                                               <ul<?php
-                                               $this->html( 'userlangattributes' )
-                                               ?>>
-                                                       <?php
-                                                       foreach ( $this->data['view_urls'] as $link ) {
-                                                               ?>
-                                                               <li<?php
-                                                               echo $link['attributes']
-                                                               ?>><span><a href="<?php
-                                                                               echo htmlspecialchars( $link['href'] )
-                                                                               ?>" <?php
-                                                                               echo $link['key']
-                                                                               ?>><?php
-                                                                                       // $link['text'] can be undefined - bug 27764
-                                                                                       if ( array_key_exists( 'text', $link ) ) {
-                                                                                               echo array_key_exists( 'img', $link )
-                                                                                                       ? '<img src="' . $link['img'] . '" alt="' . $link['text'] . '" />'
-                                                                                                       : htmlspecialchars( $link['text'] );
-                                                                                       }
-                                                                                       ?></a></span></li>
-                                                       <?php
-                                                       }
-                                                       ?>
-                                               </ul>
-                                       </div>
-                                       <?php
-                                       break;
-                               case 'ACTIONS':
-                                       ?>
-                                       <div id="p-cactions" role="navigation" class="vectorMenu<?php
-                                       if ( count( $this->data['action_urls'] ) == 0 ) {
-                                               echo ' emptyPortlet';
-                                       }
-                                       ?>" aria-labelledby="p-cactions-label">
-                                               <h3 id="p-cactions-label"><span><?php
-                                                       $this->msg( 'vector-more-actions' )
-                                               ?></span><a href="#"></a></h3>
-
-                                               <div class="menu">
-                                                       <ul<?php $this->html( 'userlangattributes' ) ?>>
-                                                               <?php
-                                                               foreach ( $this->data['action_urls'] as $link ) {
-                                                                       ?>
-                                                                       <li<?php
-                                                                       echo $link['attributes']
-                                                                       ?>>
-                                                                               <a href="<?php
-                                                                               echo htmlspecialchars( $link['href'] )
-                                                                               ?>" <?php
-                                                                               echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] )
-                                                                                       ?></a>
-                                                                       </li>
-                                                               <?php
-                                                               }
-                                                               ?>
-                                                       </ul>
-                                               </div>
-                                       </div>
-                                       <?php
-                                       break;
-                               case 'PERSONAL':
-                                       ?>
-                                       <div id="p-personal" role="navigation" class="<?php
-                                       if ( count( $this->data['personal_urls'] ) == 0 ) {
-                                               echo ' emptyPortlet';
-                                       }
-                                       ?>" aria-labelledby="p-personal-label">
-                                               <h3 id="p-personal-label"><?php $this->msg( 'personaltools' ) ?></h3>
-                                               <ul<?php $this->html( 'userlangattributes' ) ?>>
-                                                       <?php
-                                                       $personalTools = $this->getPersonalTools();
-                                                       foreach ( $personalTools as $key => $item ) {
-                                                               echo $this->makeListItem( $key, $item );
-                                                       }
-                                                       ?>
-                                               </ul>
-                                       </div>
-                                       <?php
-                                       break;
-                               case 'SEARCH':
-                                       ?>
-                                       <div id="p-search" role="search">
-                                               <h3<?php $this->html( 'userlangattributes' ) ?>>
-                                                       <label for="searchInput"><?php $this->msg( 'search' ) ?></label>
-                                               </h3>
-
-                                               <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
-                                                       <?php
-                                                       if ( $wgVectorUseSimpleSearch ) {
-                                                       ?>
-                                                       <div id="simpleSearch">
-                                                               <?php
-                                                       } else {
-                                                       ?>
-                                                               <div>
-                                                                       <?php
-                                                       }
-                                                       ?>
-                                                       <?php
-                                                       echo $this->makeSearchInput( array( 'id' => 'searchInput' ) );
-                                                       echo Html::hidden( 'title', $this->get( 'searchtitle' ) );
-                                                       // We construct two buttons (for 'go' and 'fulltext' search modes),
-                                                       // but only one will be visible and actionable at a time (they are
-                                                       // overlaid on top of each other in CSS).
-                                                       // * Browsers will use the 'fulltext' one by default (as it's the
-                                                       //   first in tree-order), which is desirable when they are unable
-                                                       //   to show search suggestions (either due to being broken or
-                                                       //   having JavaScript turned off).
-                                                       // * The mediawiki.searchSuggest module, after doing tests for the
-                                                       //   broken browsers, removes the 'fulltext' button and handles
-                                                       //   'fulltext' search itself; this will reveal the 'go' button and
-                                                       //   cause it to be used.
-                                                       echo $this->makeSearchButton(
-                                                               'fulltext',
-                                                               array( 'id' => 'mw-searchButton', 'class' => 'searchButton mw-fallbackSearchButton' )
-                                                       );
-                                                       echo $this->makeSearchButton(
-                                                               'go',
-                                                               array( 'id' => 'searchButton', 'class' => 'searchButton' )
-                                                       );
-                                                       ?>
-                                                               </div>
-                                               </form>
-                                       </div>
-                                       <?php
-
-                                       break;
-                       }
-               }
-       }
-}
diff --git a/skins/Vector/collapsibleTabs.js b/skins/Vector/collapsibleTabs.js
deleted file mode 100644 (file)
index e24bea9..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
- * Collapsible tabs jQuery Plugin
- */
-( function ( $ ) {
-       var rtl = $( 'html' ).attr( 'dir' ) === 'rtl';
-       $.fn.collapsibleTabs = function ( options ) {
-               // return if the function is called on an empty jquery object
-               if ( !this.length ) {
-                       return this;
-               }
-               // Merge options into the defaults
-               var settings = $.extend( {}, $.collapsibleTabs.defaults, options );
-
-               this.each( function () {
-                       var $el = $( this );
-                       // add the element to our array of collapsible managers
-                       $.collapsibleTabs.instances = ( $.collapsibleTabs.instances.length === 0 ?
-                               $el : $.collapsibleTabs.instances.add( $el ) );
-                       // attach the settings to the elements
-                       $el.data( 'collapsibleTabsSettings', settings );
-                       // attach data to our collapsible elements
-                       $el.children( settings.collapsible ).each( function () {
-                               $.collapsibleTabs.addData( $( this ) );
-                       } );
-               } );
-
-               // if we haven't already bound our resize handler, bind it now
-               if ( !$.collapsibleTabs.boundEvent ) {
-                       $( window ).on( 'resize', $.debounce( 500, function () {
-                               $.collapsibleTabs.handleResize();
-                       } ) );
-                       $.collapsibleTabs.boundEvent = true;
-               }
-
-               // call our resize handler to setup the page
-               $.collapsibleTabs.handleResize();
-               return this;
-       };
-       $.collapsibleTabs = {
-               instances: [],
-               boundEvent: null,
-               defaults: {
-                       expandedContainer: '#p-views ul',
-                       collapsedContainer: '#p-cactions ul',
-                       collapsible: 'li.collapsible',
-                       shifting: false,
-                       expandCondition: function ( eleWidth ) {
-                               // If there are at least eleWidth + 1 pixels of free space, expand.
-                               // We add 1 because .width() will truncate fractional values but .offset() will not.
-                               return $.collapsibleTabs.calculateTabDistance() >= eleWidth + 1;
-                       },
-                       collapseCondition: function () {
-                               // If there's an overlap, collapse.
-                               return $.collapsibleTabs.calculateTabDistance() < 0;
-                       }
-               },
-               addData: function ( $collapsible ) {
-                       var settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
-                       if ( settings ) {
-                               $collapsible.data( 'collapsibleTabsSettings', {
-                                       expandedContainer: settings.expandedContainer,
-                                       collapsedContainer: settings.collapsedContainer,
-                                       expandedWidth: $collapsible.width(),
-                                       prevElement: $collapsible.prev()
-                               } );
-                       }
-               },
-               getSettings: function ( $collapsible ) {
-                       var settings = $collapsible.data( 'collapsibleTabsSettings' );
-                       if ( !settings ) {
-                               $.collapsibleTabs.addData( $collapsible );
-                               settings = $collapsible.data( 'collapsibleTabsSettings' );
-                       }
-                       return settings;
-               },
-               handleResize: function () {
-                       $.collapsibleTabs.instances.each( function () {
-                               var $el = $( this ),
-                                       data = $.collapsibleTabs.getSettings( $el );
-
-                               if ( data.shifting ) {
-                                       return;
-                               }
-
-                               // if the two navigations are colliding
-                               if ( $el.children( data.collapsible ).length > 0 && data.collapseCondition() ) {
-
-                                       $el.trigger( 'beforeTabCollapse' );
-                                       // move the element to the dropdown menu
-                                       $.collapsibleTabs.moveToCollapsed( $el.children( data.collapsible + ':last' ) );
-                               }
-
-                               // if there are still moveable items in the dropdown menu,
-                               // and there is sufficient space to place them in the tab container
-                               if ( $( data.collapsedContainer + ' ' + data.collapsible ).length > 0 &&
-                                               data.expandCondition( $.collapsibleTabs.getSettings( $( data.collapsedContainer ).children(
-                                                               data.collapsible + ':first' ) ).expandedWidth ) ) {
-                                       //move the element from the dropdown to the tab
-                                       $el.trigger( 'beforeTabExpand' );
-                                       $.collapsibleTabs
-                                               .moveToExpanded( data.collapsedContainer + ' ' + data.collapsible + ':first' );
-                               }
-                       } );
-               },
-               moveToCollapsed: function ( ele ) {
-                       var outerData, expContainerSettings, target,
-                               $moving = $( ele );
-
-                       outerData = $.collapsibleTabs.getSettings( $moving );
-                       if ( !outerData ) {
-                               return;
-                       }
-                       expContainerSettings = $.collapsibleTabs.getSettings( $( outerData.expandedContainer ) );
-                       if ( !expContainerSettings ) {
-                               return;
-                       }
-                       expContainerSettings.shifting = true;
-
-                       // Remove the element from where it's at and put it in the dropdown menu
-                       target = outerData.collapsedContainer;
-                       $moving.css( 'position', 'relative' )
-                               .css( ( rtl ? 'left' : 'right' ), 0 )
-                               .animate( { width: '1px' }, 'normal', function () {
-                                       var data, expContainerSettings;
-                                       $( this ).hide();
-                                       // add the placeholder
-                                       $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
-                                       $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', outerData );
-                                       $( this ).attr( 'style', 'display: list-item;' );
-                                       data = $.collapsibleTabs.getSettings( $( ele ) );
-                                       if ( data ) {
-                                               expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
-                                               if ( expContainerSettings ) {
-                                                       expContainerSettings.shifting = false;
-                                                       $.collapsibleTabs.handleResize();
-                                               }
-                                       }
-                               } );
-               },
-               moveToExpanded: function ( ele ) {
-                       var data, expContainerSettings, $target, expandedWidth,
-                               $moving = $( ele );
-
-                       data = $.collapsibleTabs.getSettings( $moving );
-                       if ( !data ) {
-                               return;
-                       }
-                       expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
-                       if ( !expContainerSettings ) {
-                               return;
-                       }
-                       expContainerSettings.shifting = true;
-
-                       // grab the next appearing placeholder so we can use it for replacing
-                       $target = $( data.expandedContainer ).find( 'span.placeholder:first' );
-                       expandedWidth = data.expandedWidth;
-                       $moving.css( 'position', 'relative' ).css( ( rtl ? 'right' : 'left' ), 0 ).css( 'width', '1px' );
-                       $target.replaceWith(
-                               $moving
-                               .detach()
-                               .css( 'width', '1px' )
-                               .data( 'collapsibleTabsSettings', data )
-                               .animate( { width: expandedWidth + 'px' }, 'normal', function () {
-                                       $( this ).attr( 'style', 'display: block;' );
-                                       var data, expContainerSettings;
-                                       data = $.collapsibleTabs.getSettings( $( this ) );
-                                       if ( data ) {
-                                               expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
-                                               if ( expContainerSettings ) {
-                                                       expContainerSettings.shifting = false;
-                                                       $.collapsibleTabs.handleResize();
-                                               }
-                                       }
-                               } )
-                       );
-               },
-               /**
-                * Returns the amount of horizontal distance between the two tabs groups
-                * (#left-navigation and #right-navigation), in pixels. If negative, this
-                * means that the tabs overlap, and the value is the width of overlapping
-                * parts.
-                *
-                * Used in default expandCondition and collapseCondition.
-                *
-                * @return {Numeric} distance/overlap in pixels
-                */
-               calculateTabDistance: function () {
-                       var $leftTab, $rightTab, leftEnd, rightStart;
-
-                       // In RTL, #right-navigation is actually on the left and vice versa.
-                       // Hooray for descriptive naming.
-                       if ( !rtl ) {
-                               $leftTab = $( '#left-navigation' );
-                               $rightTab = $( '#right-navigation' );
-                       } else {
-                               $leftTab = $( '#right-navigation' );
-                               $rightTab = $( '#left-navigation' );
-                       }
-
-                       leftEnd = $leftTab.offset().left + $leftTab.width();
-                       rightStart = $rightTab.offset().left;
-
-                       return rightStart - leftEnd;
-               }
-       };
-
-}( jQuery ) );
diff --git a/skins/Vector/components/animations.less b/skins/Vector/components/animations.less
deleted file mode 100644 (file)
index 9163779..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Animate between standard and high definition layouts */
-body.vector-animateLayout {
-       div#content,
-       div#footer,
-       #left-navigation {
-               .transition(margin-left 250ms, padding 250ms;);
-       }
-
-       #p-logo {
-               .transition(left 250ms);
-       }
-
-       #mw-panel {
-               .transition(padding-right 250ms);
-       }
-
-       #p-search {
-               .transition(margin-right 250ms);
-       }
-
-       #p-personal {
-               .transition(right 250ms);
-       }
-
-       #mw-head-base {
-               .transition(margin-left 250ms);
-       }
-}
diff --git a/skins/Vector/components/common.less b/skins/Vector/components/common.less
deleted file mode 100644 (file)
index 1aee34d..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Any rules which should not be flipped automatically in right-to-left situations should be
- * prepended with @noflip in a comment block.
- *
- * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
- * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
- * a rule that makes things work in IE6, and then following it with a rule that begins with
- * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
- * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
- * "IGNORED BY IE6" comments.
- */
-@import "mediawiki.mixins";
-
-/* Framework */
-html {
-       font-size: @html-font-size;
-}
-html,
-body {
-       height: 100%;
-       margin: 0;
-       padding: 0;
-       font-family: @content-font-family;
-}
-body {
-       background-color: @menu-background-color;
-}
-
-/* Content */
-div#content {
-       margin-left: 10em;
-       padding: @content-padding;
-       /* Border on top, left, and bottom side */
-       border: 1px solid @content-border-color;
-       border-right-width: 0;
-       /* Merge the border with tabs' one (in their background image) */
-       margin-top: -1px;
-       background-color: @body-background-color;
-       color: @content-font-color;
-       direction: ltr;
-
-       .mw-editsection,
-       .mw-editsection-like {
-               font-family: @content-font-family;
-       }
-
-       p {
-               line-height: inherit;
-               margin: 0.5em 0;
-       }
-
-       h1,
-       h2,
-       #firstHeading {
-               font-family: @content-heading-font-family;
-               line-height: @heading-line-height;
-               margin-bottom: 0.25em;
-               padding: 0;
-       }
-
-       h1,
-       #firstHeading {
-               font-size: @content-heading-font-size;
-       }
-
-       h2 {
-               font-size: 1.5em;
-               margin-top: 1em;
-       }
-
-       h3,
-       h4,
-       h5,
-       h6 {
-               line-height: @content-line-height;
-               margin-top: 0.3em;
-               margin-bottom: 0;
-               padding-bottom: 0;
-       }
-
-       h3 {
-               font-size: 1.17em;
-       }
-
-       h3,
-       h4 {
-               font-weight: bold;
-       }
-
-       h4,
-       h5,
-       h6 {
-               font-size: 100%; /* (reset) */
-       }
-
-       #toc h2,
-       .toc h2 {
-               font-size: 100%; /* (reset) */
-               font-family: @content-font-family;
-       }
-}
-
-/* Hide empty portlets */
-div.emptyPortlet {
-               display: none;
-}
-
-ul {
-       list-style-type: disc;
-       .list-style-image('images/bullet-icon.png');
-}
-
-pre, .mw-code {
-       line-height: 1.3em;
-}
-
-/* Site Notice (includes notices from CentralNotice extension) */
-#siteNotice {
-       font-size: 0.8em;
-}
-
-.redirectText {
-       font-size: 140%;
-}
-
-.redirectMsg img {
-       vertical-align: text-bottom;
-}
-
-.mw-body-content {
-       position: relative;
-       line-height: @content-line-height;
-       font-size: @content-font-size;
-}
diff --git a/skins/Vector/components/externalLinks.less b/skins/Vector/components/externalLinks.less
deleted file mode 100644 (file)
index 91388c6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-@import "mediawiki.mixins.less";
-// External links
-#content {
-       .external {
-               background-position: center right;
-               background-repeat: no-repeat;
-               .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
-               padding-right: 13px;
-       }
-}
diff --git a/skins/Vector/components/footer.less b/skins/Vector/components/footer.less
deleted file mode 100644 (file)
index 3d61b66..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Footer */
-div#footer {
-       margin-left: 10em;
-       margin-top: 0;
-       padding: 0.75em;
-       direction: ltr;
-
-       ul {
-               list-style-type: none;
-               list-style-image: none;
-               margin: 0;
-               padding: 0;
-
-               li {
-                       margin: 0;
-                       padding: 0;
-                       padding-top: 0.5em;
-                       padding-bottom: 0.5em;
-                       color: #333;
-                       font-size: 0.7em;
-               }
-       }
-
-       #footer-icons {
-               float: right;
-
-               li {
-                       float: left;
-                       margin-left: 0.5em;
-                       line-height: 2em;
-                       text-align: right;
-               }
-       }
-
-       #footer-info {
-               li {
-                       line-height: 1.4em;
-               }
-       }
-
-       #footer-places {
-               li {
-                       float: left;
-                       margin-right: 1em;
-                       line-height: 2em;
-               }
-       }
-}
-
-body.ltr {
-       div#footer {
-               #footer-places {
-                       /* @noflip */
-                       float: left;
-               }
-       }
-}
diff --git a/skins/Vector/components/navigation.less b/skins/Vector/components/navigation.less
deleted file mode 100644 (file)
index 8b384ac..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-@import "mediawiki.mixins";
-@import "personalMenu";
-@import "search";
-@import "tabs";
-
-/* Hide, but keep accessible for screen-readers */
-#mw-navigation h2 {
-       position: absolute;
-       top: -9999px;
-}
-
-/* Head */
-#mw-page-base {
-       height: 5em;
-       background-position: bottom left;
-       background-repeat: repeat-x;
-       /* This image is only a fallback (for IE 6-9), so we do not @embed it. */
-       background-image: url('images/page-fade.png');
-       .vertical-gradient(@body-background-color, @menu-background-color, 50%, 100%);
-       background-color: @body-background-color;
-}
-
-#mw-head-base {
-       margin-top: -5em;
-       margin-left: 10em;
-       height: 5em;
-}
-
-div#mw-head {
-       position: absolute;
-       top: 0;
-       right: 0;
-       width: 100%;
-
-       h3 {
-               margin: 0;
-               padding: 0;
-       }
-}
-
-/* Navigation Containers */
-#left-navigation {
-       float: left;
-       margin-left: 10em;
-       margin-top: 2.5em;
-       /* When right nav would overlap left nav, it's placed below it
-          (normal CSS floats behavior). This rule ensures that no empty space
-          is shown between them due to right nav's margin-top. Page layout
-          is still broken, but at least the nav overlaps only the page title
-          instead of half the content. */
-       margin-bottom: -2.5em;
-       /* IE 6 double-margin bug fix */
-       display: inline;
-}
-
-#right-navigation {
-       float: right;
-       margin-top: 2.5em;
-}
-
-/* Logo */
-#p-logo {
-       position: absolute;
-       top: -160px;
-       left: 0;
-       width: 10em;
-       height: 160px;
-
-       a {
-               display: block;
-               width: 10em;
-               height: 160px;
-               background-repeat: no-repeat;
-               background-position: center center;
-               text-decoration: none;
-       }
-}
-
-/* Panel */
-div#mw-panel {
-       font-size: @menu-main-font-size;
-       position: absolute;
-       top: 160px;
-       padding-top: 1em;
-       width: 10em;
-       left: 0;
-
-       div.portal {
-               margin: 0 0.6em 0 0.7em;
-               padding: 0.25em 0;
-               direction: ltr;
-               background-position: top left;
-               background-repeat: no-repeat;
-               .background-image('images/portal-break.png');
-
-               h3 {
-                       font-size: @menu-main-heading-font-size;
-                       color: @menu-main-heading-color;
-                       font-weight: normal;
-                       margin: 0;
-                       padding: @menu-main-heading-padding;
-                       cursor: default;
-                       border: none;
-               }
-
-               div.body {
-                       margin: @menu-main-body-margin;
-                       padding-top: 0;
-
-                       ul {
-                               list-style-type: none;
-                               list-style-image: none;
-                               margin: 0;
-                               padding: @menu-main-body-padding;
-
-                               li {
-                                       line-height: 1.125em;
-                                       margin: 0;
-                                       padding: 0.25em 0;
-                                       font-size: @menu-main-body-font-size;
-                                       word-wrap: break-word;
-
-                                       a {
-                                               color: @menu-main-body-link-color;
-                                               &:visited {
-                                                       color: @menu-main-body-link-visited-color;
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               &.first {
-                       background-image: none;
-                       margin-top: 0;
-                       h3 {
-                               display: none;
-                       }
-                       div.body {
-                               margin-left: 0.5em;
-                       }
-               }
-       }
-}
diff --git a/skins/Vector/components/personalMenu.less b/skins/Vector/components/personalMenu.less
deleted file mode 100644 (file)
index 7256929..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Personal */
-#p-personal {
-       position: absolute;
-       top: 0.33em;
-       right: 0.75em;
-       /* Display on top of page tabs - bugs 37158, 48078 */
-       z-index: 100;
-
-       h3 {
-               display: none;
-       }
-
-       ul {
-               list-style-type: none;
-               list-style-image: none;
-               margin: 0;
-               padding-left: 10em; /* Keep from overlapping logo */
-       }
-
-       li {
-               line-height: 1.125em;
-               /* @noflip */
-               float: left;
-               margin-left: 0.75em;
-               margin-top: 0.5em;
-               font-size: @menu-personal-font-size;
-               white-space: nowrap;
-       }
-}
-
-/* Icon for Usernames */
-#pt-userpage,
-#pt-anonuserpage,
-#pt-login {
-       background-position: left top;
-       background-repeat: no-repeat;
-       /* SVG support using a transparent gradient to guarantee cross-browser
-        * compatibility (browsers able to understand gradient syntax support also SVG) */
-       .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
-       padding-left: 15px !important;
-}
diff --git a/skins/Vector/components/search.less b/skins/Vector/components/search.less
deleted file mode 100644 (file)
index 46c3030..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/* Search */
-#p-search {
-       /* @noflip */
-       float: left;
-       margin-right: 0.5em;
-       margin-left: 0.5em;
-
-       h3 {
-               display: none;
-       }
-
-       form,
-       input {
-               margin: 0;
-               margin-top: 0.4em;
-       }
-}
-
-div#simpleSearch {
-       display: block;
-       width: 14em;
-       height: 1.4em;
-       margin-top: 0.65em;
-       position: relative;
-       min-height: 1px; /* Gotta trigger hasLayout for IE7 */
-       border: solid 1px #aaa;
-       color: black;
-       background-color: white;
-       .background-image('images/search-fade.png');
-       background-position: top left;
-       background-repeat: repeat-x;
-
-       // Styles for both the search input and the button
-       input {
-               position: absolute;
-               margin: 0;
-               padding: 0;
-               border: 0;
-               background-color: transparent;
-               color: black;
-       }
-
-       // The search input
-       #searchInput {
-               top: 0;
-               left: 0;
-               width: 90%;
-               padding: 0.2em 0 0.2em 0.2em;
-               font-size: 13px;
-               direction: ltr;
-
-               &:focus {
-                       outline: none;
-               }
-
-               // These rules MAY NOT be merged because of how CSS requires browsers
-               // to parse unrecognized selectors!
-               // Note these rules ensure that placeholder text can be distinguished from
-               // standard text. In browsers which make this distinction clear these rules
-               // are not necessary.
-               // For inputs that use jquery.placeholder.js e.g. IE9-
-               &.placeholder {
-                       color: #999;
-               }
-               // Distinguish placeholder text in IE10+
-               &:-ms-input-placeholder {
-                       color: #999;
-               }
-               // Distinguish placeholder text in Firefox 18-
-               &:-moz-placeholder {
-                       color: #999;
-               }
-
-               // Undo the styles Webkit browsers apply to type=search fields,
-               // we provide our own
-               -webkit-appearance: textfield;
-
-               &::-webkit-search-decoration,
-               &::-webkit-search-cancel-button,
-               &::-webkit-search-results-button,
-               &::-webkit-search-results-decoration {
-                       -webkit-appearance: textfield;
-               }
-       }
-
-       // The buttons. They are displayed in the same position, and if both are
-       // present the fulltext search one obscures the 'Go' one.
-       #searchButton,
-       #mw-searchButton {
-               top: 0;
-               right: 0;
-               width: 10%;
-               height: 100%;
-               cursor: pointer;
-               /* Hide button text and replace it with the image. */
-               /* This would be 100% if not for Firefox shenanigans (bug 60900). */
-               text-indent: 200%;
-               /* Needed to make IE6 respect the text-indent. */
-               line-height: 1;
-               /* Opera 12 on RTL flips the text in a funny way without this. */
-               /* @noflip */
-               direction: ltr;
-               white-space: nowrap;
-               overflow: hidden;
-               .background-image-svg('images/search-ltr.svg', 'images/search-ltr.png');
-               background-position: center center;
-               background-repeat: no-repeat;
-       }
-
-       #mw-searchButton {
-               z-index: 1;
-       }
-}
diff --git a/skins/Vector/components/tabs.less b/skins/Vector/components/tabs.less
deleted file mode 100644 (file)
index 57fe45f..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
-Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions)
-*/
-
-/* Navigation Labels */
-div.vectorTabs h3 {
-       display: none;
-}
-
-/* Namespaces and Views */
-div.vectorTabs {
-       /* @noflip */
-       float: left;
-       height: 2.5em;
-       .background-image('images/tab-break.png');
-       background-position: bottom left;
-       background-repeat: no-repeat;
-       padding-left: 1px;
-
-       ul {
-               /* @noflip */
-               float: left;
-               height: 100%;
-               list-style-type: none;
-               list-style-image: none;
-               margin: 0;
-               padding: 0;
-               .background-image('images/tab-break.png');
-               background-position: right bottom;
-               background-repeat: no-repeat;
-
-               li {
-                       /* @noflip */
-                       float: left;
-                       line-height: 1.125em;
-                       /* For IE6, overridden later to display:block by modern browsers */
-                       display: inline-block;
-                       height: 100%;
-                       margin: 0;
-                       padding: 0;
-                       background-color: #f3f3f3;
-                       .background-image('images/tab-normal-fade.png');
-                       background-position: bottom left;
-                       background-repeat: repeat-x;
-                       white-space: nowrap;
-               }
-
-               /* IGNORED BY IE6 which doesn't support child selector */
-               > li {
-                       display: block;
-               }
-       }
-
-       li {
-               &.new {
-                       a,
-                       a:visited{
-                               color: #a55858;
-                       }
-               }
-
-               &.selected {
-                       .background-image('images/tab-current-fade.png');
-                       a,
-                       a:visited{
-                               color: #333;
-                               text-decoration: none;
-                       }
-               }
-
-               &.icon {
-                       a {
-                               background-position: bottom right;
-                               background-repeat: no-repeat;
-                       }
-               }
-
-               a {
-                       /* For IE6, overridden later to display:block by modern browsers */
-                       display: inline-block;
-                       height: 1.9em;
-                       padding-left: 0.5em;
-                       padding-right: 0.5em;
-                       color: @menu-link-color;
-                       cursor: pointer;
-                       font-size: 0.8em;
-               }
-
-               /* Ignored by IE6 which doesn't support child selector */
-               > a {
-                       display: block;
-               }
-       }
-
-       span {
-               display: inline-block;
-               .background-image('images/tab-break.png');
-               background-position: bottom right;
-               background-repeat: no-repeat;
-
-               a  {
-                       /* For IE6, overridden later to display:block by modern browsers */
-                       display: inline-block;
-                       padding-top: 1.25em;
-               }
-
-               /* Ignored by IE6 which doesn't support child selector */
-               > a {
-                       /* @noflip */
-                       float: left;
-                       display: block;
-               }
-       }
-}
-
-/* Variants and Actions */
-div.vectorMenu {
-       /* @noflip */
-       direction: ltr;
-       /* @noflip */
-       float: left;
-       cursor: pointer;
-       position: relative;
-}
-
-body.rtl div.vectorMenu {
-       /* @noflip */
-       direction: rtl;
-}
-
-div#mw-head div.vectorMenu h3 {
-       /* @noflip */
-       float: left;
-       .background-image('images/tab-break.png');
-       background-repeat: no-repeat;
-       background-position: bottom right;
-       margin-left: -1px;
-       font-size: 1em;
-       height: 2.5em;
-       // This effectively moves the "background border" outside of the element to act like a real
-       // border. It is necessary for the dropdown (div.vectorMenu div.menu) to align well.
-       padding-right: 1px;
-       margin-right: -1px;
-}
-
-// The "Variants" menu has a really funny structure
-// Temporary WMF deployment hack, to be removed before 1.24 release
-div#mw-head div.vectorMenu#p-variants {
-       #p-variants-label span {
-               display: none;
-       }
-
-       #mw-vector-current-variant {
-               display: inline-block;
-               float: left;
-               padding-right: 20px;
-               font-size: 0.8em;
-               padding-left: 0.5em;
-               padding-top: 1.375em;
-               font-weight: normal;
-               border: none;
-               background-image: none;
-       }
-}
-
-div.vectorMenu h3 span {
-       display: block;
-       font-size: 0.8em;
-       padding-left: 0.7em;
-       padding-top: 1.375em;
-       margin-right: 20px;
-       font-weight: normal;
-       color: @menu-main-heading-color;
-}
-
-div.vectorMenu h3 a {
-       position: absolute;
-       top: 0;
-       right: 0;
-       width: 20px;
-       height: 2.5em;
-       .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
-       background-position: 100% 70%;
-       background-repeat: no-repeat;
-       .transition(background-position 250ms);
-}
-
-div.vectorMenu.menuForceShow h3 a {
-       background-position: 100% 100%;
-}
-
-div.vectorMenuFocus h3 a {
-       .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
-}
-
-div.vectorMenu div.menu {
-       // Match the width of the dropdown "heading" (the tab)
-       min-width: 100%;
-       position: absolute;
-       top: 2.5em;
-       left: -1px;
-       background-color: white;
-       border: solid 1px silver;
-       border-top-width: 0;
-       clear: both;
-       text-align: left;
-       display: none;
-}
-
-/* Enable forcing showing of the menu for accessibility */
-div.vectorMenu:hover div.menu,
-div.vectorMenu.menuForceShow div.menu {
-       display: block;
-}
-
-div.vectorMenu ul {
-       list-style-type: none;
-       list-style-image: none;
-       padding: 0;
-       margin: 0;
-       text-align: left;
-}
-
-/* Fixes old versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link {
-       min-width: 5em;
-}
-
-/* Returns things back to normal in modern versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link,
-x:default {
-       min-width: 0;
-}
-
-div.vectorMenu li {
-       padding: 0;
-       margin: 0;
-       text-align: left;
-       line-height: 1em;
-}
-
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorMenu li a {
-       display: inline-block;
-       padding: 0.5em;
-       white-space: nowrap;
-       color: @menu-link-color;
-       cursor: pointer;
-       font-size: 0.8em;
-}
-
-/* IGNORED BY IE6 */
-div.vectorMenu li > a {
-       display: block;
-}
-
-div.vectorMenu li.selected a,
-div.vectorMenu li.selected a:visited {
-       color: #333;
-       text-decoration: none;
-}
-
-@import 'watchstar.less';
diff --git a/skins/Vector/components/watchstar.less b/skins/Vector/components/watchstar.less
deleted file mode 100644 (file)
index a389ed6..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-@import "mediawiki.mixins.rotation"
-
-/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon a,
-#ca-watch.icon a {
-       margin: 0;
-       padding: 0;
-       display: block;
-       width: 26px;
-       /* This hides the text but shows the background image */
-       padding-top: 3.1em;
-       margin-top: 0;
-       /* Only applied in IE6 */
-       margin-top: -0.8em !ie;
-       height: 0;
-       overflow: hidden;
-       background-position: 5px 60%;
-}
-#ca-unwatch.icon a {
-       .background-image-svg('images/unwatch-icon.svg', 'images/unwatch-icon.png');
-}
-#ca-watch.icon a {
-       .background-image-svg('images/watch-icon.svg', 'images/watch-icon.png');
-}
-#ca-unwatch.icon a:hover,
-#ca-unwatch.icon a:focus {
-       .background-image-svg('images/unwatch-icon-hl.svg', 'images/unwatch-icon-hl.png');
-}
-#ca-watch.icon a:hover,
-#ca-watch.icon a:focus {
-       .background-image-svg('images/watch-icon-hl.svg', 'images/watch-icon-hl.png');
-}
-#ca-unwatch.icon a.loading,
-#ca-watch.icon a.loading {
-       .background-image-svg('images/watch-icon-loading.svg', 'images/watch-icon-loading.png');
-       .rotation(700ms);
-       /* Suppress the hilarious rotating focus outline on Firefox */
-       outline: none;
-       cursor: default;
-       pointer-events: none;
-       background-position: 50% 60%;
-       -webkit-transform-origin: 50% 57%;
-       transform-origin: 50% 57%;
-}
-#ca-unwatch.icon a span,
-#ca-watch.icon a span {
-       display: none;
-}
diff --git a/skins/Vector/csshover.htc b/skins/Vector/csshover.htc
deleted file mode 100644 (file)
index a13ea68..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-<public:attach event="ondocumentready" onevent="CSSHover()" />
-<script>
-/**
- *     Whatever:hover - V3.11
- *     ------------------------------------------------------------
- *     Author  - Peter Nederlof, http://www.xs4all.nl/~peterned
- *     License - http://creativecommons.org/licenses/LGPL/2.1
- *
- *     Special thanks to Sergiu Dumitriu, http://purl.org/net/sergiu,
- *     for fixing the expression loop.
- *
- *     Whatever:hover is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation; either
- *     version 2.1 of the License, or (at your option) any later version.
- *
- *     Whatever:hover 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
- *     Lesser General Public License for more details.
- *
- *     howto: body { behavior:url("csshover3.htc"); }
- *     ------------------------------------------------------------
- */
-
-window.CSSHover = (function(){
-
-       // regular expressions, used and explained later on.
-       var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;
-       var REG_AFFECTED = /(.*?)\:(hover|active|focus)/i;
-       var REG_PSEUDO = /[^:]+:([a-z\-]+).*/i;
-       var REG_SELECT = /(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;
-       var REG_CLASS = /\.([a-z0-9_\-]*on(hover|active|focus))/i;
-       var REG_MSIE = /msie (5|6|7)/i;
-       var REG_COMPAT = /backcompat/i;
-
-       // property mapping, real css properties must be used in order to clear expressions later on...
-       // Uses obscure css properties that no-one is likely to use. The properties are borrowed to
-       // set an expression, and are then restored to the most likely correct value.
-       var Properties = {
-               index: 0,
-               list: ['text-kashida', 'text-kashida-space', 'text-justify'],
-               get: function() {
-                       return this.list[(this.index++)%this.list.length];
-               }
-       };
-
-       // camelize is used to convert css properties from (eg) text-kashida to textKashida
-       var camelize = function(str) {
-               return str.replace(/-(.)/mg, function(result, match){
-                       return match.toUpperCase();
-               });
-       };
-       
-       /**
-        *      Local CSSHover object
-        *      --------------------------
-        */
-       
-       var CSSHover = {
-               
-               // array of CSSHoverElements, used to unload created events
-               elements: [], 
-               
-               // buffer used for checking on duplicate expressions
-               callbacks: {}, 
-               
-               // init, called once ondomcontentready via the exposed window.CSSHover function
-               init:function() {
-                       // don't run in IE8 standards; expressions don't work in standards mode anyway, 
-                       // and the stuff we're trying to fix should already work properly
-                       if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) {
-                               return;
-                       }
-
-                       // start parsing the existing stylesheets
-                       var sheets = window.document.styleSheets, l = sheets.length;
-                       for(var i=0; i<l; i++) {
-                               this.parseStylesheet(sheets[i]);
-                       }
-               },
-
-               // called from init, parses individual stylesheets
-               parseStylesheet:function(sheet) {
-                       // check sheet imports and parse those recursively
-                       if(sheet.imports) {
-                               try {
-                                       var imports = sheet.imports;
-                                       var l = imports.length;
-                                       for(var i=0; i<l; i++) {
-                                               this.parseStylesheet(sheet.imports[i]);
-                                       }
-                               } catch(securityException){
-                                       // trycatch for various possible errors
-                               }
-                       }
-                       
-                       // interate the sheet's rules and send them to the parser
-                       try {
-                               var rules = sheet.rules;
-                               var r = rules.length;
-                               for(var j=0; j<r; j++) {
-                                       this.parseCSSRule(rules[j], sheet);
-                               }
-                       } catch(someException){
-                               // trycatch for various errors, most likely accessing the sheet's rules.
-                       }
-               },
-
-               // magic starts here ...
-               parseCSSRule:function(rule, sheet) {
-                       
-                       // The sheet is used to insert new rules into, this must be the same sheet the rule 
-                       // came from, to ensure that relative paths keep pointing to the right location.
-
-                       // only parse a rule if it contains an interactive pseudo.
-                       var select = rule.selectorText;
-                       if(REG_INTERACTIVE.test(select)) {
-                               var style = rule.style.cssText;
-                                       
-                               // affected elements are found by truncating the selector after the interactive pseudo,
-                               // eg: "div li:hover" >>  "div li"
-                               var affected = REG_AFFECTED.exec(select)[1];
-                                       
-                               // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
-                               // eg: "li:hover" >> "onhover"
-                               var pseudo = select.replace(REG_PSEUDO, 'on$1');
-                                       
-                               // the new selector is going to use that classname in a new css rule,
-                               // since IE6 doesn't support multiple classnames, this is merged into one classname
-                               // eg: "li:hover" >> "li.onhover",  "li.folder:hover" >> "li.folderonhover"
-                               var newSelect = select.replace(REG_SELECT, '.$2' + pseudo);
-                                       
-                               // the classname is needed for the events that are going to be set on affected nodes
-                               // eg: "li.folder:hover" >> "folderonhover"
-                               var className = REG_CLASS.exec(newSelect)[1];
-
-                               // no need to set the same callback more than once when the same selector uses the same classname
-                               var hash = affected + className;
-                               if(!this.callbacks[hash]) {
-                                       
-                                       // affected elements are given an expression under a borrowed css property, because fake properties
-                                       // can't have their expressions cleared. Different properties are used per pseudo, to avoid
-                                       // expressions from overwriting eachother. The expression does a callback to CSSHover.patch, 
-                                       // rerouted via the exposed window.CSSHover function.
-                                       var property = Properties.get();
-                                       var atRuntime = camelize(property);
-
-                                       // because the expression is added to the stylesheet, and styles are always applied to html that is
-                                       // dynamically added to the dom, the expression will also trigger for those new elements (provided
-                                       // they are selected by the affected selector). 
-                                       sheet.addRule(affected, property + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'", "'+atRuntime+'"))');
-                                       
-                                       // hash it, so an identical selector/class combo does not duplicate the expression
-                                       this.callbacks[hash] = true;
-                               }
-                               
-                               // duplicate expressions need not be set, but the style could differ
-                               sheet.addRule(newSelect, style);
-                       }
-               },
-
-               // called via the expression, patches individual nodes
-               patch:function(node, type, className, property) {
-
-                       // restores the borrowed css property to the value of its immediate parent, clearing
-                       // the expression so that it's not repeatedly called. 
-                       try {
-                               var value = node.parentNode.currentStyle[property];
-                               node.style[property] = value;   
-                       } catch(e) {
-                               // the above reset should never fail, but just in case, clear the runtimeStyle if it does.
-                               // this will also stop the expression.
-                               node.runtimeStyle[property] = '';
-                       }                       
-               
-                       // just to make sure, also keep track of patched classnames locally on the node
-                       if(!node.csshover) {
-                               node.csshover = [];
-                       }
-
-                       // and check for it to prevent duplicate events with the same classname from being set
-                       if(!node.csshover[className]) {
-                               node.csshover[className] = true;
-
-                               // create an instance for the given type and class
-                               var element = new CSSHoverElement(node, type, className);
-                               
-                               // and store that instance for unloading later on
-                               this.elements.push(element);
-                       }
-
-                       // returns a dummy value to the expression
-                       return type;
-               },
-
-               // unload stuff onbeforeunload
-               unload:function() {
-                       try {
-                               
-                               // remove events
-                               var l = this.elements.length;
-                               for(var i=0; i<l; i++) {
-                                       this.elements[i].unload();
-                               }
-
-                               // and set properties to null 
-                               this.elements = [];
-                               this.callbacks = {};
-
-                       } catch (e) {
-                       }
-               }
-       };
-
-       /**
-        *      CSSHoverElement
-        *      --------------------------
-        */
-
-       // the event types associated with the interactive pseudos
-       var CSSEvents = {
-               onhover:  { activator: 'onmouseenter', deactivator: 'onmouseleave' },
-               onactive: { activator: 'onmousedown',  deactivator: 'onmouseup' },
-               onfocus:  { activator: 'onfocus',      deactivator: 'onblur' }
-       };
-       
-       // CSSHoverElement constructor, called via CSSHover.patch
-       function CSSHoverElement(node, type, className) {
-
-               // the CSSHoverElement patches individual nodes by manually applying the events that should 
-               // have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover. 
-
-               this.node = node;
-               this.type = type;
-               var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');
-
-               // store event handlers for removal onunload
-               this.activator =   function(){ node.className += ' ' + className; };
-               this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };
-               
-               // add the events
-               node.attachEvent(CSSEvents[type].activator, this.activator);
-               node.attachEvent(CSSEvents[type].deactivator, this.deactivator);
-       }
-       
-       CSSHoverElement.prototype = {
-               // onbeforeunload, called via CSSHover.unload
-               unload:function() {
-
-                       // remove events 
-                       this.node.detachEvent(CSSEvents[this.type].activator, this.activator);
-                       this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);
-
-                       // and set properties to null 
-                       this.activator = null;
-                       this.deactivator = null;
-                       this.node = null;
-                       this.type = null;
-               }
-       };
-
-       // add the unload to the onbeforeunload event
-       window.attachEvent('onbeforeunload', function(){
-               CSSHover.unload();
-       });
-
-       /**
-        *      Public hook
-        *      --------------------------
-        */
-       
-       return function(node, type, className, property) {
-               if(node) {
-                       // called via the css expression; patches individual nodes
-                       return CSSHover.patch(node, type, className, property);
-               } else {
-                       // called ondomcontentready via the public:attach node
-                       CSSHover.init();
-               }
-       };
-
-})();
-</script>
\ No newline at end of file
diff --git a/skins/Vector/csshover.min.htc b/skins/Vector/csshover.min.htc
deleted file mode 100644 (file)
index 7e5c57b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<public:attach event="ondocumentready" onevent="CSSHover()" />
-<script>
-/**
- * Whatever:hover - V3.11
- * http://www.xs4all.nl/~peterned/
- *     
- * Copyright (c) 2009 Peter Nederlof
- * Licensed under the LGPL license
- * http://creativecommons.org/licenses/LGPL/2.1
- */
-window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:['text-kashida','text-kashida-space','text-justify'],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i<l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j<r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=''}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i<l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:'onmouseenter',deactivator:'onmouseleave'},onactive:{activator:'onmousedown',deactivator:'onmouseup'},onfocus:{activator:'onfocus',deactivator:'onblur'}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){a.className+=' '+c};this.deactivator=function(){a.className=a.className.replace(d,' ')};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent('onbeforeunload',function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})();
-</script>
diff --git a/skins/Vector/i18n/ab.json b/skins/Vector/i18n/ab.json
deleted file mode 100644 (file)
index d52ed10..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Temuri rajavi"
-               ]
-       },
-       "vector-action-move": "Ахьӡ аҧсахра",
-       "vector-view-create": "Арҿиара",
-       "vector-view-edit": "Ариашамҭа",
-       "vector-view-history": "Аҭоурых",
-       "vector-view-view": "Аҧхьара",
-       "vector-view-viewsource": "Ахәаҧшра"
-}
diff --git a/skins/Vector/i18n/ace.json b/skins/Vector/i18n/ace.json
deleted file mode 100644 (file)
index befc427..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Fadli Idris",
-                       "Si Gam Acèh"
-               ]
-       },
-       "vector-action-addsection": "Tamah bhaih",
-       "vector-action-delete": "Sampôh",
-       "vector-action-move": "Pupinah",
-       "vector-action-protect": "Peulindông",
-       "vector-action-undelete": "Bateuë sampôh",
-       "vector-action-unprotect": "Gantoe neulindông",
-       "vector-view-create": "Peugöt",
-       "vector-view-edit": "Andam",
-       "vector-view-history": "Eu riwayat",
-       "vector-view-view": "Beuët",
-       "vector-view-viewsource": "Eu nè"
-}
diff --git a/skins/Vector/i18n/ady-cyrl.json b/skins/Vector/i18n/ady-cyrl.json
deleted file mode 100644 (file)
index 77ea233..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Adamsa123",
-                       "Amire80",
-                       "Celekan",
-                       "Siklawy"
-               ]
-       },
-       "vector-action-addsection": "1офтхьабз",
-       "vector-action-delete": "ЛъэкӀ",
-       "vector-action-move": "Хьы",
-       "vector-action-protect": "Иухъумэ",
-       "vector-action-undelete": "Умылъэк1",
-       "vector-action-unprotect": "Умыухъумэ",
-       "vector-view-create": "Игъэхъу",
-       "vector-view-edit": "Гъэтэрэзыжь",
-       "vector-view-history": "Тарихъым eплъ",
-       "vector-view-view": "Едж",
-       "vector-view-viewsource": "Еплъ лъапсэм"
-}
diff --git a/skins/Vector/i18n/aeb.json b/skins/Vector/i18n/aeb.json
deleted file mode 100644 (file)
index b3c71f9..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Csisc",
-                       "Malekbr"
-               ]
-       },
-       "vector-action-addsection": "أضف موضوعا",
-       "vector-action-delete": "احذف",
-       "vector-action-move": "انقل",
-       "vector-action-protect": "احم",
-       "vector-action-undelete": "استرجع الحذف",
-       "vector-action-unprotect": "غير الحماية",
-       "vector-view-create": "أنشئ",
-       "vector-view-edit": "Baddel",
-       "vector-view-history": "Warri l'historique",
-       "vector-view-view": "Aqra",
-       "vector-view-viewsource": "اعرض المصدر"
-}
diff --git a/skins/Vector/i18n/af.json b/skins/Vector/i18n/af.json
deleted file mode 100644 (file)
index 8bd949e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Byeboer",
-                       "Naudefj"
-               ]
-       },
-       "vector-action-addsection": "Nuwe onderwerp",
-       "vector-action-delete": "Skrap",
-       "vector-action-move": "Skuif",
-       "vector-action-protect": "Beskerm",
-       "vector-action-undelete": "Ontskrap",
-       "vector-action-unprotect": "Wysig beskerming",
-       "vector-view-create": "Skep",
-       "vector-view-edit": "Wysig",
-       "vector-view-history": "Wys geskiedenis",
-       "vector-view-view": "Lees",
-       "vector-view-viewsource": "Wys bronteks",
-       "vector-more-actions": "Meer"
-}
diff --git a/skins/Vector/i18n/aln.json b/skins/Vector/i18n/aln.json
deleted file mode 100644 (file)
index a5cc022..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bresta"
-               ]
-       },
-       "vector.css": "/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */",
-       "vector.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */",
-       "vector-action-addsection": "Shto temë",
-       "vector-action-delete": "Fshij",
-       "vector-action-move": "Zhvendos",
-       "vector-action-protect": "Mbroj",
-       "vector-action-undelete": "Kthe fshimjen mbrapsht",
-       "vector-action-unprotect": "Hiq mbrojtjen",
-       "vector-view-create": "Krijo",
-       "vector-view-edit": "Redakto",
-       "vector-view-history": "Shih historinë",
-       "vector-view-view": "Lexo",
-       "vector-view-viewsource": "Shih kodin"
-}
diff --git a/skins/Vector/i18n/am.json b/skins/Vector/i18n/am.json
deleted file mode 100644 (file)
index 55655bb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Codex Sinaiticus",
-                       "Elfalem",
-                       "Hinstein",
-                       "Teferra"
-               ]
-       },
-       "vector-action-addsection": "ርዕስ ጨምር",
-       "vector-action-delete": "አጥፋ",
-       "vector-action-move": "ለማዛወር",
-       "vector-action-protect": "ለመቆለፍ",
-       "vector-action-undelete": "አታጥፋ",
-       "vector-action-unprotect": "አለመቆለፍ",
-       "vector-view-create": "አዲስ ፍጠር",
-       "vector-view-edit": "አርም",
-       "vector-view-history": "ታሪኩን አሳይ",
-       "vector-view-view": "ለማንበብ",
-       "vector-view-viewsource": "ጥሬ ኮድ ለመመልከት",
-       "vector-more-actions": "ተጨማሪ"
-}
diff --git a/skins/Vector/i18n/an.json b/skins/Vector/i18n/an.json
deleted file mode 100644 (file)
index a4b5f0c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Juanpabl"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Vector */",
-       "vector.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios que usen a piel Vector */",
-       "vector-action-addsection": "Adhibir nueva sección",
-       "vector-action-delete": "Borrar",
-       "vector-action-move": "Tresladar",
-       "vector-action-protect": "Protecher",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Cambiar protección",
-       "vector-view-create": "Creyar",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Amostrar l'historial",
-       "vector-view-view": "Leyer",
-       "vector-view-viewsource": "Veyer o codigo fuent"
-}
diff --git a/skins/Vector/i18n/ang.json b/skins/Vector/i18n/ang.json
deleted file mode 100644 (file)
index 56321dc..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gott wisst"
-               ]
-       },
-       "vector-action-addsection": "Besettan mearcunge",
-       "vector-action-delete": "Forlēosan",
-       "vector-action-move": "Wegan",
-       "vector-action-protect": "Beorgan",
-       "vector-action-undelete": "Scieppan tramet eft",
-       "vector-action-unprotect": "Andwendan beorgunge",
-       "vector-view-create": "Scieppan",
-       "vector-view-edit": "Adihtan",
-       "vector-view-history": "Stǣr",
-       "vector-view-view": "Rǣdan",
-       "vector-view-viewsource": "Sēon fruman"
-}
diff --git a/skins/Vector/i18n/ar.json b/skins/Vector/i18n/ar.json
deleted file mode 100644 (file)
index 9c07d9b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Abanima",
-                       "Calak",
-                       "Meno25",
-                       "Mido",
-                       "OsamaK",
-                       "أحمد",
-                       "زكريا"
-               ]
-       },
-       "skinname-vector": "فكتور",
-       "vector.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */",
-       "vector.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */",
-       "vector-action-addsection": "أضف موضوعا",
-       "vector-action-delete": "احذف",
-       "vector-action-move": "انقل",
-       "vector-action-protect": "احم",
-       "vector-action-undelete": "ألغ الحذف",
-       "vector-action-unprotect": "غير الحماية",
-       "vector-view-create": "أنشئ",
-       "vector-view-edit": "عدل",
-       "vector-view-history": "اعرض التاريخ",
-       "vector-view-view": "اقرأ",
-       "vector-view-viewsource": "اعرض المصدر",
-       "vector-more-actions": "مزيد"
-}
diff --git a/skins/Vector/i18n/arc.json b/skins/Vector/i18n/arc.json
deleted file mode 100644 (file)
index 7bb2372..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "334a",
-                       "Basharh",
-                       "Michaelovic"
-               ]
-       },
-       "vector-action-addsection": "ܐܘܣܦ ܡܠܘܐܐ",
-       "vector-action-delete": "ܫܘܦ",
-       "vector-action-move": "ܫܢܝ",
-       "vector-action-protect": "ܛܪ",
-       "vector-action-undelete": "ܠܐ ܫܘܦ",
-       "vector-action-unprotect": "ܫܚܠܦ ܢܛܝܪܘܬܐ",
-       "vector-view-create": "ܒܪܝ",
-       "vector-view-edit": "ܫܚܠܦ",
-       "vector-view-history": "ܚܙܝ ܬܫܥܝܬܐ",
-       "vector-view-view": "ܩܪܝ",
-       "vector-view-viewsource": "ܚܙܝ ܡܒܘܥܐ"
-}
diff --git a/skins/Vector/i18n/arn.json b/skins/Vector/i18n/arn.json
deleted file mode 100644 (file)
index 9ff9636..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Clerc",
-                       "Fiestoforo"
-               ]
-       },
-       "vector-action-addsection": "Püñamtun dungu",
-       "vector-action-delete": "Liftun",
-       "vector-action-move": "Wiñamün",
-       "vector-action-protect": "Nürüfkünun",
-       "vector-action-undelete": "Wüñoñamümün",
-       "vector-action-unprotect": "Kalekünun Nürüfkünun",
-       "vector-view-create": "Dewman",
-       "vector-view-edit": "Kümeelün",
-       "vector-view-history": "Pengelün rupañmael",
-       "vector-view-view": "Chillkatun",
-       "vector-view-viewsource": "Kimam chew küpan chi wirin"
-}
diff --git a/skins/Vector/i18n/aro.json b/skins/Vector/i18n/aro.json
deleted file mode 100644 (file)
index 77dc6c4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ooswesthoesbes"
-               ]
-       },
-       "vector-view-edit": "Imeakie"
-}
diff --git a/skins/Vector/i18n/arq.json b/skins/Vector/i18n/arq.json
deleted file mode 100644 (file)
index 740ab9b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bachounda",
-                       "Oldstoneage"
-               ]
-       },
-       "vector-action-addsection": "زيد موضوع",
-       "vector-action-delete": "امحي",
-       "vector-action-move": "حول",
-       "vector-action-protect": "بروجي",
-       "vector-action-undelete": "ردّ كيما كان",
-       "vector-action-unprotect": "بدّل الـحماية",
-       "vector-view-create": "أصنع",
-       "vector-view-edit": "بدل",
-       "vector-view-history": "روح للتاريخي",
-       "vector-view-view": "أقرى",
-       "vector-view-viewsource": "شوف المصدر"
-}
diff --git a/skins/Vector/i18n/ary.json b/skins/Vector/i18n/ary.json
deleted file mode 100644 (file)
index db687ea..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Enzoreg",
-                       "Zanatos"
-               ]
-       },
-       "vector-action-addsection": "Zid topic",
-       "vector-action-delete": "Suprimi",
-       "vector-action-move": "Neqel",
-       "vector-action-protect": "Ḫami",
-       "vector-action-undelete": "rja lhadf",
-       "vector-action-unprotect": "Ḫiyed l-ḫimaya",
-       "vector-view-create": "Ĥṫareĝ",
-       "vector-view-edit": "Ĝedel",
-       "vector-view-history": "Ṫariĥ l-fiċyé",
-       "vector-view-view": "Qra",
-       "vector-view-viewsource": "Ċof l-masdar"
-}
diff --git a/skins/Vector/i18n/arz.json b/skins/Vector/i18n/arz.json
deleted file mode 100644 (file)
index 3541b15..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ghaly",
-                       "Meno25",
-                       "Ramsis II"
-               ]
-       },
-       "vector.css": "/* CSS اللى هنا حتأثر على اليوزرز اللى بيستخدموا واجهة فكتور */",
-       "vector.js": "/* اى جافاسكريبت هنا حتتحمل لكل يوزر بيستخدم واجهة فكتور */",
-       "vector-action-addsection": "ضيف موضوع",
-       "vector-action-delete": "مسح",
-       "vector-action-move": "نقل",
-       "vector-action-protect": "حمايه",
-       "vector-action-undelete": "الغى المسح",
-       "vector-action-unprotect": "غير الحمايه",
-       "vector-view-create": "اعمل",
-       "vector-view-edit": "تعديل",
-       "vector-view-history": "استعراض التاريخ",
-       "vector-view-view": "قرايه",
-       "vector-view-viewsource": "استعراض المصدر"
-}
diff --git a/skins/Vector/i18n/as.json b/skins/Vector/i18n/as.json
deleted file mode 100644 (file)
index 92efe9f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bishnu Saikia",
-                       "Chaipau",
-                       "Gitartha.bordoloi"
-               ]
-       },
-       "vector-action-addsection": "বিষয় যোগ",
-       "vector-action-delete": "বিলোপ কৰক",
-       "vector-action-move": "স্থানান্তৰ কৰক",
-       "vector-action-protect": "সুৰক্ষিত কৰক",
-       "vector-action-undelete": "পুনৰুদ্ধাৰ কৰক",
-       "vector-action-unprotect": "সুৰক্ষা সলনি কৰক",
-       "vector-view-create": "সৃষ্টি কৰক",
-       "vector-view-edit": "সম্পাদনা",
-       "vector-view-history": "ইতিহাস চাওক",
-       "vector-view-view": "পঢ়ক",
-       "vector-view-viewsource": "উৎস চাওক",
-       "vector-more-actions": "অধিক"
-}
diff --git a/skins/Vector/i18n/ase.json b/skins/Vector/i18n/ase.json
deleted file mode 100644 (file)
index 97a3500..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Icemandeaf"
-               ]
-       },
-       "skinname-vector": "M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545",
-       "vector-skin-desc": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506 M515x598S18d20494x403S17620499x432S11920493x452S17620499x482S14720500x502S17620499x528S17620499x548S14020485x568 M521x508S1f748479x493S1f740501x493 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M534x547S2ff00482x483S10001513x517S2e305488x487 S38700463x496 M535x536S20300516x521S20308470x521S26500516x502S26510470x502S14c30511x465S14c38465x465 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M520x540S37606481x460S15a40508x513S28801499x491S20500488x492",
-       "vector.css": "/* M509x529S16d20492x471S20320493x495S20320493x514 M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M521x508S1f748479x493S1f740501x493 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
-       "vector.js": "/* M520x523S1f540480x477S2a204497x495 M519x527S19220498x489S2a20c482x473S20320498x512 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M524x539S14402493x485S1440a486x461S22b00508x509S22b10476x483 M536x521S2ff00482x483S10011515x491S28108515x461 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
-       "vector-action-addsection": "M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M522x522S15a37478x479S10041485x492S20600500x492",
-       "vector-action-delete": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
-       "vector-action-move": "M552x509S18520488x494S18528449x494S26626522x492",
-       "vector-action-protect": "M512x519S15a19488x482S15a11489x482S20600488x508",
-       "vector-action-undelete": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
-       "vector-action-unprotect": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x519S15a19488x482S15a11489x482S20600488x508",
-       "vector-view-create": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501",
-       "vector-view-edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
-       "vector-view-history": "M525x524S2ff00482x483S10e00507x494S26500511x474 M514x523S11541487x478S22f04489x509",
-       "vector-view-view": "M513x540S15a06486x459S10e50494x474S22b04493x510",
-       "vector-view-viewsource": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
-       "vector-more-actions": "M526x508S18510501x493S18518475x493"
-}
diff --git a/skins/Vector/i18n/ast.json b/skins/Vector/i18n/ast.json
deleted file mode 100644 (file)
index d150812..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Esbardu",
-                       "Xuacu"
-               ]
-       },
-       "vector-skin-desc": "Versión moderna de MonoBook, con un aspeutu frescu y munchos ameyoramientos d'usabilidá",
-       "vector.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */",
-       "vector.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */",
-       "vector-action-addsection": "Amestar seición",
-       "vector-action-delete": "Desaniciar",
-       "vector-action-move": "Treslladar",
-       "vector-action-protect": "Protexer",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Camudar la proteición",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver historial",
-       "vector-view-view": "Lleer",
-       "vector-view-viewsource": "Ver fonte",
-       "vector-more-actions": "Más"
-}
diff --git a/skins/Vector/i18n/av.json b/skins/Vector/i18n/av.json
deleted file mode 100644 (file)
index e7a6452..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Умар"
-               ]
-       },
-       "vector-view-edit": "Хисизабизе"
-}
diff --git a/skins/Vector/i18n/avk.json b/skins/Vector/i18n/avk.json
deleted file mode 100644 (file)
index a0585bd..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Wikimistusik"
-               ]
-       },
-       "vector-action-addsection": "Loplekura va detce",
-       "vector-action-delete": "Sulara",
-       "vector-action-move": "Arrundara",
-       "vector-action-protect": "Nendara",
-       "vector-view-create": "Redura",
-       "vector-view-edit": "Betara",
-       "vector-view-history": "Wira va izvot",
-       "vector-view-view": "Belira",
-       "vector-view-viewsource": "klitawira"
-}
diff --git a/skins/Vector/i18n/az.json b/skins/Vector/i18n/az.json
deleted file mode 100644 (file)
index 48d42e5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AZISS",
-                       "Arystanbek",
-                       "Gulmammad",
-                       "Sortilegus",
-                       "Vago",
-                       "Vugar 1981",
-                       "Wertuose"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */",
-       "vector.js": "/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */",
-       "vector-action-addsection": "Mövzu əlavə et",
-       "vector-action-delete": "Sil",
-       "vector-action-move": "Adını dəyişdir",
-       "vector-action-protect": "Mühafizə et",
-       "vector-action-undelete": "Bərpa et",
-       "vector-action-unprotect": "Mühafizəni kənarlaşdır",
-       "vector-view-create": "Yarat",
-       "vector-view-edit": "Redaktə",
-       "vector-view-history": "Tarixçəyə bax",
-       "vector-view-view": "Oxu",
-       "vector-view-viewsource": "Mənbəyə bax",
-       "vector-more-actions": "Daha"
-}
diff --git a/skins/Vector/i18n/azb.json b/skins/Vector/i18n/azb.json
deleted file mode 100644 (file)
index ae46e1c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "E THP",
-                       "Ebrahimi-amir",
-                       "Mousa"
-               ]
-       },
-       "vector-action-addsection": "قوْنو آرتیر",
-       "vector-action-delete": "سیل",
-       "vector-action-move": "داشی",
-       "vector-action-protect": "قوْرو",
-       "vector-action-undelete": "سیلمگی قایتار",
-       "vector-action-unprotect": "قوْروماغی دَییشدیر",
-       "vector-view-create": "یارات",
-       "vector-view-edit": "دَییشدیر",
-       "vector-view-history": "گئچمیشه باخ",
-       "vector-view-view": "اوْخو",
-       "vector-view-viewsource": "قایناغا باخ"
-}
diff --git a/skins/Vector/i18n/ba.json b/skins/Vector/i18n/ba.json
deleted file mode 100644 (file)
index 30969f7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Assele",
-                       "Haqmar"
-               ]
-       },
-       "skinname-vector": "Векторлы",
-       "vector-action-addsection": "Тема өҫтәргә",
-       "vector-action-delete": "Юйырға",
-       "vector-action-move": "Исемен үҙгәртергә",
-       "vector-action-protect": "Һаҡларға",
-       "vector-action-undelete": "Тергеҙергә",
-       "vector-action-unprotect": "Һаҡлауҙы үҙгәртергә",
-       "vector-view-create": "Яһау",
-       "vector-view-edit": "Үҙгәртергә",
-       "vector-view-history": "Тарихты ҡарау",
-       "vector-view-view": "Уҡыу",
-       "vector-view-viewsource": "Сығанаҡты ҡарарға"
-}
diff --git a/skins/Vector/i18n/ban.json b/skins/Vector/i18n/ban.json
deleted file mode 100644 (file)
index 4641011..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Adi Mayndra",
-                       "BASAbali"
-               ]
-       },
-       "vector-action-addsection": "imbuhin indik wacana",
-       "vector-action-delete": "ngapus",
-       "vector-action-move": "kisidang",
-       "vector-action-protect": "nyaga",
-       "vector-view-create": "ngawe",
-       "vector-view-edit": "mecikang",
-       "vector-view-history": "indik sane lintang",
-       "vector-view-view": "Waca",
-       "vector-view-viewsource": "cingak witnyane"
-}
diff --git a/skins/Vector/i18n/bar.json b/skins/Vector/i18n/bar.json
deleted file mode 100644 (file)
index 0c085b1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bua333",
-                       "Mucalexx"
-               ]
-       },
-       "vector-action-addsection": "An Obschnitt dazua doa",
-       "vector-action-delete": "Leschn",
-       "vector-action-move": "Vaschiabm",
-       "vector-action-protect": "Schitzn",
-       "vector-action-undelete": "Wiederherstön",
-       "vector-action-unprotect": "freigeem",
-       "vector-view-create": "Aufbaun",
-       "vector-view-edit": "Werkln",
-       "vector-view-history": "Gschicht oschaugn",
-       "vector-view-view": "Lesn",
-       "vector-view-viewsource": "Quejtext ozoagn"
-}
diff --git a/skins/Vector/i18n/bbc-latn.json b/skins/Vector/i18n/bbc-latn.json
deleted file mode 100644 (file)
index fe9a284..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Daniel Harahap",
-                       "WBT003Bugari",
-                       "WBT006Hendra",
-                       "WBT009Anju"
-               ]
-       },
-       "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"
-}
diff --git a/skins/Vector/i18n/bcc.json b/skins/Vector/i18n/bcc.json
deleted file mode 100644 (file)
index f6c3c4d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mostafadaneshvar",
-                       "RigiMahnoor"
-               ]
-       },
-       "vector-action-addsection": "هور کتن عنوان",
-       "vector-action-delete": "زورگ",
-       "vector-action-move": "جاه په جاه",
-       "vector-action-protect": "حفاظت",
-       "vector-action-undelete": "ترینگ",
-       "vector-action-unprotect": "پروتکشنء ٹگل بدئ",
-       "vector-view-create": "شرکتن",
-       "vector-view-edit": "اصلاح",
-       "vector-view-history": "چارتن تاریح",
-       "vector-view-view": "وانتن",
-       "vector-view-viewsource": "پیشدارگ بن جاه",
-       "vector-more-actions": "گیشتر"
-}
diff --git a/skins/Vector/i18n/bcl.json b/skins/Vector/i18n/bcl.json
deleted file mode 100644 (file)
index 7e2d73a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Filipinayzd",
-                       "Geopoet"
-               ]
-       },
-       "vector-action-addsection": "Idagdag an topic",
-       "vector-action-delete": "puráon",
-       "vector-action-move": "Ibalyó",
-       "vector-action-protect": "Protektaran",
-       "vector-action-undelete": "Bawion sa pagkapara",
-       "vector-action-unprotect": "Ribayan an proteksyon",
-       "vector-view-create": "Magmukna",
-       "vector-view-edit": "Liwatón",
-       "vector-view-history": "Tanawon sa historiya",
-       "vector-view-view": "Basáha",
-       "vector-view-viewsource": "Hilingón an ginikánan"
-}
diff --git a/skins/Vector/i18n/be-tarask.json b/skins/Vector/i18n/be-tarask.json
deleted file mode 100644 (file)
index 4bbef69..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "EugeneZelenko",
-                       "Red Winged Duck",
-                       "Wizardist"
-               ]
-       },
-       "skinname-vector": "Вэктар",
-       "vector-action-addsection": "Дадаць тэму",
-       "vector-action-delete": "Выдаліць",
-       "vector-action-move": "Перанесьці",
-       "vector-action-protect": "Абараніць",
-       "vector-action-undelete": "Аднавіць",
-       "vector-action-unprotect": "Зьмяніць абарону",
-       "vector-view-create": "Стварыць",
-       "vector-view-edit": "Рэдагаваць",
-       "vector-view-history": "Паказаць гісторыю",
-       "vector-view-view": "Чытаць",
-       "vector-view-viewsource": "Паказаць крыніцу",
-       "vector-more-actions": "Болей"
-}
diff --git a/skins/Vector/i18n/be.json b/skins/Vector/i18n/be.json
deleted file mode 100644 (file)
index 5dbc57c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mikalai Udodau",
-                       "Yury Tarasievich",
-                       "Дзяніс Тутэйшы",
-                       "Хомелка"
-               ]
-       },
-       "vector-skin-desc": "Сучасная версія вокладкі Манабук, з абноўленым відам і шматлікімі зручнымі паляпшэннямі",
-       "vector-action-addsection": "Дадаць тэму",
-       "vector-action-delete": "Сцерці",
-       "vector-action-move": "Перанесці",
-       "vector-action-protect": "Ахова",
-       "vector-action-undelete": "Аднавіць",
-       "vector-action-unprotect": "Змяніць ахову",
-       "vector-view-create": "Стварыць",
-       "vector-view-edit": "Правіць",
-       "vector-view-history": "Паказаць гісторыю",
-       "vector-view-view": "Чытаць",
-       "vector-view-viewsource": "Паказаць зыходны тэкст",
-       "vector-more-actions": "Яшчэ"
-}
diff --git a/skins/Vector/i18n/bew.json b/skins/Vector/i18n/bew.json
deleted file mode 100644 (file)
index ab009b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Naval Scene"
-               ]
-       },
-       "vector-action-delete": "Ngapus",
-       "vector-action-move": "Pindahin",
-       "vector-action-undelete": "Balikin nyang keapus",
-       "vector-view-create": "Bikin"
-}
diff --git a/skins/Vector/i18n/bg.json b/skins/Vector/i18n/bg.json
deleted file mode 100644 (file)
index 9a2858c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Borislav",
-                       "DCLXVI",
-                       "Spiritia"
-               ]
-       },
-       "vector-action-addsection": "Добавяне на тема",
-       "vector-action-delete": "Изтриване",
-       "vector-action-move": "Преместване",
-       "vector-action-protect": "Защита",
-       "vector-action-undelete": "Възстановяване",
-       "vector-action-unprotect": "Промяна на защитата",
-       "vector-view-create": "Създаване",
-       "vector-view-edit": "Редактиране",
-       "vector-view-history": "История",
-       "vector-view-view": "Преглед",
-       "vector-view-viewsource": "Преглед на кода"
-}
diff --git a/skins/Vector/i18n/bho.json b/skins/Vector/i18n/bho.json
deleted file mode 100644 (file)
index e41f332..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ganesh",
-                       "Nepaboy"
-               ]
-       },
-       "vector-action-addsection": "विषय जोड़ीं",
-       "vector-action-delete": "मिटाईं",
-       "vector-action-move": "स्थांतरण",
-       "vector-action-protect": "संरक्षित करीं",
-       "vector-action-undelete": "मत मिटाईं",
-       "vector-action-unprotect": "सुरक्षा बदलीं",
-       "vector-view-create": "बनाईं",
-       "vector-view-edit": "सम्पादन",
-       "vector-view-history": "इतिहास देखीं",
-       "vector-view-view": "पढ़ीं",
-       "vector-view-viewsource": "स्त्रोत देखीं"
-}
diff --git a/skins/Vector/i18n/bi.json b/skins/Vector/i18n/bi.json
deleted file mode 100644 (file)
index a30c41b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sotiale"
-               ]
-       },
-       "vector-action-move": "Muv",
-       "vector-view-history": "Lukluk histri",
-       "vector-view-view": "Rid"
-}
diff --git a/skins/Vector/i18n/bjn.json b/skins/Vector/i18n/bjn.json
deleted file mode 100644 (file)
index 61cb74e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ezagren",
-                       "J Subhi"
-               ]
-       },
-       "vector-action-addsection": "Tambahi tupik",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindahakan",
-       "vector-action-protect": "Lindungi",
-       "vector-action-undelete": "Pawalangan pahapusan",
-       "vector-action-unprotect": "Palindungan",
-       "vector-view-create": "Ulah",
-       "vector-view-edit": "Babak",
-       "vector-view-history": "Tiringi halam",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Tiringi asal mula"
-}
diff --git a/skins/Vector/i18n/bm.json b/skins/Vector/i18n/bm.json
deleted file mode 100644 (file)
index 9164ec8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amadouyoro.thiam"
-               ]
-       },
-       "vector-view-view": "Kalan"
-}
diff --git a/skins/Vector/i18n/bn.json b/skins/Vector/i18n/bn.json
deleted file mode 100644 (file)
index a2c37b3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aftab1995",
-                       "Bellayet",
-                       "Leemon2010",
-                       "Nasir8891",
-                       "Tauhid16",
-                       "Wikitanvir"
-               ]
-       },
-       "skinname-vector": "ভেক্টর",
-       "vector-action-addsection": "বিষয় যোগ",
-       "vector-action-delete": "অপসারণ",
-       "vector-action-move": "স্থানান্তর",
-       "vector-action-protect": "সুরক্ষা",
-       "vector-action-undelete": "পুনরুদ্ধার",
-       "vector-action-unprotect": "সুরক্ষা পরিবর্তন",
-       "vector-view-create": "তৈরি",
-       "vector-view-edit": "সম্পাদনা",
-       "vector-view-history": "ইতিহাস",
-       "vector-view-view": "পড়ুন",
-       "vector-view-viewsource": "উৎস দেখুন",
-       "vector-more-actions": "আরও"
-}
diff --git a/skins/Vector/i18n/bo.json b/skins/Vector/i18n/bo.json
deleted file mode 100644 (file)
index defe396..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Freeyak",
-                       "Phurbutsering"
-               ]
-       },
-       "vector-action-addsection": "བརྗོད་གཞི་ཁ་སྣོན།",
-       "vector-action-delete": "སུབས།",
-       "vector-action-move": "སྤོར་བ།",
-       "vector-action-protect": "འགོག་སྲུང།",
-       "vector-action-undelete": "མི་བསུབས་",
-       "vector-action-unprotect": "སྲུང་སྐྱོབ་གློད་པ།",
-       "vector-view-create": "གསར་བཟོ།",
-       "vector-view-edit": "རྩོམ་སྒྲིག",
-       "vector-view-history": "ལོ་རྒྱུས་ལ་ལྟ་བ།",
-       "vector-view-view": "ཀློག་པ།",
-       "vector-view-viewsource": "ཁུངས་ལ་ལྟ་བ།"
-}
diff --git a/skins/Vector/i18n/bpy.json b/skins/Vector/i18n/bpy.json
deleted file mode 100644 (file)
index 3124363..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Usingha"
-               ]
-       },
-       "vector-action-addsection": "বিষয় তিলকর",
-       "vector-action-delete": "পুসে বেলা",
-       "vector-action-move": "থেইকর",
-       "vector-action-protect": "লুকর",
-       "vector-action-undelete": "নাপুসি",
-       "vector-action-unprotect": "লুকরানিহান সিলকর",
-       "vector-view-create": "হঙকরিক",
-       "vector-view-edit": "পতানি",
-       "vector-view-history": "ইতিহাস চেইক",
-       "vector-view-view": "পাকরিক",
-       "vector-view-viewsource": "সোর্স চেইক"
-}
diff --git a/skins/Vector/i18n/br.json b/skins/Vector/i18n/br.json
deleted file mode 100644 (file)
index 9cf579b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Fulup",
-                       "Y-M D"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Vektor */",
-       "vector.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */",
-       "vector-action-addsection": "Rannbennad nevez",
-       "vector-action-delete": "Diverkañ",
-       "vector-action-move": "Adenvel",
-       "vector-action-protect": "Gwareziñ",
-       "vector-action-undelete": "Diziverkañ",
-       "vector-action-unprotect": "Cheñch gwarez",
-       "vector-view-create": "Krouiñ",
-       "vector-view-edit": "Kemmañ",
-       "vector-view-history": "Gwelet an istor",
-       "vector-view-view": "Lenn",
-       "vector-view-viewsource": "Sellet ouzh tarzh an destenn",
-       "vector-more-actions": "Muioc'h"
-}
diff --git a/skins/Vector/i18n/brh.json b/skins/Vector/i18n/brh.json
deleted file mode 100644 (file)
index ee435e6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Imdadb"
-               ]
-       },
-       "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"
-}
diff --git a/skins/Vector/i18n/bs.json b/skins/Vector/i18n/bs.json
deleted file mode 100644 (file)
index f5e80ac..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "CERminator",
-                       "DzWiki",
-                       "KWiki",
-                       "Edinwiki"
-               ]
-       },
-       "vector-action-addsection": "Dodaj temu",
-       "vector-action-delete": "Izbriši",
-       "vector-action-move": "Preusmjeri",
-       "vector-action-protect": "Zaštiti",
-       "vector-action-undelete": "Vrati obrisano",
-       "vector-action-unprotect": "Promijeni zaštitu",
-       "vector-view-create": "Napravi",
-       "vector-view-edit": "Uredi",
-       "vector-view-history": "Pregled historije",
-       "vector-view-view": "Čitanje",
-       "vector-view-viewsource": "Pogledaj izvor",
-       "vector-more-actions": "Više"
-}
diff --git a/skins/Vector/i18n/bto.json b/skins/Vector/i18n/bto.json
deleted file mode 100644 (file)
index 4dd54b8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Filipinayzd"
-               ]
-       },
-       "vector-action-delete": "Puraon",
-       "vector-action-move": "Ilipat",
-       "vector-action-protect": "Protektaran",
-       "vector-action-undelete": "Ibalik",
-       "vector-action-unprotect": "Ribayan a proteksyon",
-       "vector-view-create": "Gumibo",
-       "vector-view-edit": "Balyowan",
-       "vector-view-history": "Baydon a kasaysayan",
-       "vector-view-view": "Basahon",
-       "vector-view-viewsource": "Baydon a ginikanan",
-       "vector-more-actions": "Dakul pa"
-}
diff --git a/skins/Vector/i18n/bug.json b/skins/Vector/i18n/bug.json
deleted file mode 100644 (file)
index b1b0f9e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kurniasan"
-               ]
-       },
-       "vector-action-move": "Paléccé'",
-       "vector-view-create": "Ebbu",
-       "vector-view-edit": "Padéccéng",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Ita sumber"
-}
diff --git a/skins/Vector/i18n/bxr.json b/skins/Vector/i18n/bxr.json
deleted file mode 100644 (file)
index 64ff413..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bjargal",
-                       "Elvonudinium"
-               ]
-       },
-       "vector-action-addsection": "Һэдэб нэмэхэ",
-       "vector-action-delete": "Усадхаха",
-       "vector-action-move": "Зөөхэ",
-       "vector-view-create": "Үүдхэхэ",
-       "vector-view-edit": "Заһабарилха",
-       "vector-view-history": "Түүхые хараха",
-       "vector-view-view": "Уншаха",
-       "vector-view-viewsource": "эшэ үндэһэндэнь хандаха"
-}
diff --git a/skins/Vector/i18n/ca.json b/skins/Vector/i18n/ca.json
deleted file mode 100644 (file)
index 31d5173..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aleator",
-                       "Anskar",
-                       "Calak",
-                       "Paucabot",
-                       "Ssola",
-                       "Vriullop",
-                       "Toniher"
-               ]
-       },
-       "vector-skin-desc": "Versió moderna del MonoBook amb un nou aspesctes i moltes millores en la usabilitat",
-       "vector-action-addsection": "Nova secció",
-       "vector-action-delete": "Esborra",
-       "vector-action-move": "Reanomena",
-       "vector-action-protect": "Protegeix",
-       "vector-action-undelete": "Restaura",
-       "vector-action-unprotect": "Desprotegeix",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Modifica",
-       "vector-view-history": "Mostra l'historial",
-       "vector-view-view": "Mostra",
-       "vector-view-viewsource": "Mostra el codi",
-       "vector-more-actions": "Més"
-}
diff --git a/skins/Vector/i18n/cdo.json b/skins/Vector/i18n/cdo.json
deleted file mode 100644 (file)
index 2bdcb9f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Yejianfei"
-               ]
-       },
-       "vector-action-addsection": "加話題",
-       "vector-action-delete": "刪掉咯",
-       "vector-action-move": "移動",
-       "vector-action-protect": "保護",
-       "vector-action-undelete": "取消刪除",
-       "vector-action-unprotect": "改變保護",
-       "vector-view-create": "創建",
-       "vector-view-edit": "修改",
-       "vector-view-history": "看歷史",
-       "vector-view-view": "讀",
-       "vector-view-viewsource": "看源代碼"
-}
diff --git a/skins/Vector/i18n/ce.json b/skins/Vector/i18n/ce.json
deleted file mode 100644 (file)
index 75053d7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sasan700",
-                       "Умар"
-               ]
-       },
-       "skinname-vector": "Векторан",
-       "vector-action-addsection": "ТӀетоха хьедар",
-       "vector-action-delete": "ДӀаяккха",
-       "vector-action-move": "ЦӀе хийца",
-       "vector-action-protect": "Гlаролла дé",
-       "vector-action-undelete": "МеттахӀоттае",
-       "vector-action-unprotect": "ГӀароллех къаста",
-       "vector-view-create": "Кхоллар",
-       "vector-view-edit": "Нисъе",
-       "vector-view-history": "АгӀона хийцамаш",
-       "vector-view-view": "Éшар",
-       "vector-view-viewsource": "Билглонашка хьажа",
-       "vector-more-actions": "Кхин"
-}
diff --git a/skins/Vector/i18n/ceb.json b/skins/Vector/i18n/ceb.json
deleted file mode 100644 (file)
index e2c631f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Jordz"
-               ]
-       },
-       "vector-action-addsection": "Pagdugang og topiko",
-       "vector-action-delete": "Papasa",
-       "vector-action-move": "Ibalhin",
-       "vector-action-protect": "Protektahi",
-       "vector-action-undelete": "Ayaw papasa",
-       "vector-action-unprotect": "Ayaw protektahi",
-       "vector-view-create": "Himoa",
-       "vector-view-edit": "Usba",
-       "vector-view-history": "Tan-awa ang kaagi",
-       "vector-view-view": "Basaha",
-       "vector-view-viewsource": "Tan-awa ang ginikanan"
-}
diff --git a/skins/Vector/i18n/ckb.json b/skins/Vector/i18n/ckb.json
deleted file mode 100644 (file)
index 0db4670..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Asoxor",
-                       "Calak"
-               ]
-       },
-       "skinname-vector": "ڤێکتۆر",
-       "vector-action-addsection": "بابەت دابنێ",
-       "vector-action-delete": "بیسڕەوە",
-       "vector-action-move": "بیگوازەوە",
-       "vector-action-protect": "بیپارێزە",
-       "vector-action-undelete": "سڕینەوە بگەڕێنەوە",
-       "vector-action-unprotect": "پاراستن بگۆڕە",
-       "vector-view-create": "دروستکردن",
-       "vector-view-edit": "دەستکاریی بکە",
-       "vector-view-history": "مێژووەکەی ببینە",
-       "vector-view-view": "بیخوێنەوە",
-       "vector-view-viewsource": "سەرچاوەکەی ببینە",
-       "vector-more-actions": "زیاتر"
-}
diff --git a/skins/Vector/i18n/co.json b/skins/Vector/i18n/co.json
deleted file mode 100644 (file)
index ad84420..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Paulu"
-               ]
-       },
-       "vector-action-addsection": "Aghjunghje discussione",
-       "vector-action-delete": "Supprimà",
-       "vector-action-move": "Cullucà",
-       "vector-action-protect": "Pruteghje",
-       "vector-action-unprotect": "Cambià a prutezzione",
-       "vector-view-create": "Creà",
-       "vector-view-edit": "Mudificà",
-       "vector-view-history": "Vede a cronolugia",
-       "vector-view-view": "Leghje",
-       "vector-view-viewsource": "Vede a surghjente"
-}
diff --git a/skins/Vector/i18n/cps.json b/skins/Vector/i18n/cps.json
deleted file mode 100644 (file)
index 5c40641..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Capisano",
-                       "Oxyzen"
-               ]
-       },
-       "vector-action-addsection": "Magdugang sang topiko",
-       "vector-action-delete": "Panason",
-       "vector-action-move": "Isdogon",
-       "vector-action-protect": "Protektahan",
-       "vector-action-undelete": "Indi pag panason",
-       "vector-action-unprotect": "Islan ang proteksyon",
-       "vector-view-create": "Ubrahon",
-       "vector-view-edit": "Bag-uhon",
-       "vector-view-history": "Ipakita ang kasaysayan",
-       "vector-view-view": "Basahon",
-       "vector-view-viewsource": "Lantawon ang ginhalinan"
-}
diff --git a/skins/Vector/i18n/crh-cyrl.json b/skins/Vector/i18n/crh-cyrl.json
deleted file mode 100644 (file)
index b49a884..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Don Alessandro"
-               ]
-       },
-       "vector-action-addsection": "Мевзу къош",
-       "vector-action-delete": "Ёкъ эт",
-       "vector-action-move": "Адыны денъиштир",
-       "vector-action-protect": "Къорчала",
-       "vector-action-undelete": "Янъыдан ярат",
-       "vector-action-unprotect": "Къорчалавны денъиштир",
-       "vector-view-create": "Ярат",
-       "vector-view-edit": "Денъиштир",
-       "vector-view-history": "Кечмишини косьтер",
-       "vector-view-view": "Окъу",
-       "vector-view-viewsource": "Менба кодуны косьтер"
-}
diff --git a/skins/Vector/i18n/crh-latn.json b/skins/Vector/i18n/crh-latn.json
deleted file mode 100644 (file)
index ad8d58a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Don Alessandro"
-               ]
-       },
-       "vector-action-addsection": "Mevzu qoş",
-       "vector-action-delete": "Yoq et",
-       "vector-action-move": "Adını deñiştir",
-       "vector-action-protect": "Qorçala",
-       "vector-action-undelete": "Yañıdan yarat",
-       "vector-action-unprotect": "Qorçalavnı deñiştir",
-       "vector-view-create": "Yarat",
-       "vector-view-edit": "Deñiştir",
-       "vector-view-history": "Keçmişini köster",
-       "vector-view-view": "Oqu",
-       "vector-view-viewsource": "Menba kodunı köster"
-}
diff --git a/skins/Vector/i18n/cs.json b/skins/Vector/i18n/cs.json
deleted file mode 100644 (file)
index 081783b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mormegil"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-skin-desc": "Moderní verze MonoBooku s novějším vzhledem a vylepšenou použitelností",
-       "vector.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */",
-       "vector.js": "/* JavaScript pro uživatele používající vzhled „Vektor“ */",
-       "vector-action-addsection": "Přidat téma",
-       "vector-action-delete": "Smazat",
-       "vector-action-move": "Přesunout",
-       "vector-action-protect": "Zamknout",
-       "vector-action-undelete": "Obnovit",
-       "vector-action-unprotect": "Změnit zámek",
-       "vector-view-create": "Založit",
-       "vector-view-edit": "Editovat",
-       "vector-view-history": "Zobrazit historii",
-       "vector-view-view": "Číst",
-       "vector-view-viewsource": "Zobrazit zdrojový kód",
-       "vector-more-actions": "Další"
-}
diff --git a/skins/Vector/i18n/csb.json b/skins/Vector/i18n/csb.json
deleted file mode 100644 (file)
index 56d0930..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kaszeba",
-                       "Kuvaly"
-               ]
-       },
-       "vector-action-addsection": "Dodôj témã",
-       "vector-action-delete": "Rëmôj",
-       "vector-action-move": "Przeniesë",
-       "vector-action-protect": "Zazychrëjë",
-       "vector-action-undelete": "Doprowôdzë nazôd",
-       "vector-action-unprotect": "Òdzychrëjë",
-       "vector-view-create": "Ùsôdzë",
-       "vector-view-edit": "Edicëjô",
-       "vector-view-history": "Historëjô lopka",
-       "vector-view-view": "Czëtôj",
-       "vector-view-viewsource": "Zdrojowi tekst"
-}
diff --git a/skins/Vector/i18n/cu.json b/skins/Vector/i18n/cu.json
deleted file mode 100644 (file)
index caad73c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "ОйЛ"
-               ]
-       },
-       "vector-action-addsection": "новꙑ бєсѣдꙑ чѧсти сътворѥниѥ",
-       "vector-action-delete": "поничьжєниѥ",
-       "vector-action-move": "прѣимєнованиѥ",
-       "vector-action-protect": "ꙁабранѥниѥ",
-       "vector-action-unprotect": "иꙁмѣни ꙁабранѥниꙗ обраꙁъ",
-       "vector-view-create": "сътворѥниѥ",
-       "vector-view-edit": "исправи",
-       "vector-view-history": "їсторїꙗ",
-       "vector-view-view": "чьтѥниѥ",
-       "vector-view-viewsource": "страницѧ источьнъ обраꙁъ",
-       "vector-more-actions": "вѧщє"
-}
diff --git a/skins/Vector/i18n/cv.json b/skins/Vector/i18n/cv.json
deleted file mode 100644 (file)
index 6206af8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chavash",
-                       "FLAGELLVM DEI"
-               ]
-       },
-       "vector-action-addsection": "Тема хуш",
-       "vector-action-delete": "Кăларса пăрах",
-       "vector-action-move": "Ятне улăштар",
-       "vector-action-protect": "Хӳтĕле",
-       "vector-view-create": "Çĕннине ту",
-       "vector-view-edit": "Тӳрлет",
-       "vector-view-history": "Кун-çул",
-       "vector-view-view": "Вула",
-       "vector-view-viewsource": "пуçламăш текста пăх"
-}
diff --git a/skins/Vector/i18n/cy.json b/skins/Vector/i18n/cy.json
deleted file mode 100644 (file)
index 99d4dc3..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lloffiwr"
-               ]
-       },
-       "vector-action-addsection": "Ychwanegu adran",
-       "vector-action-delete": "Dileu",
-       "vector-action-move": "Symud",
-       "vector-action-protect": "Diogelu",
-       "vector-action-undelete": "Adfer",
-       "vector-action-unprotect": "Newid y diogelwch",
-       "vector-view-create": "Dechrau",
-       "vector-view-edit": "Golygu",
-       "vector-view-history": "Gweld yr hanes",
-       "vector-view-view": "Darllen",
-       "vector-view-viewsource": "Dangos côd y dudalen",
-       "vector-more-actions": "Rhagor"
-}
diff --git a/skins/Vector/i18n/da.json b/skins/Vector/i18n/da.json
deleted file mode 100644 (file)
index 1651d66..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Byrial",
-                       "Christian List",
-                       "Peter Alberti"
-               ]
-       },
-       "vector-skin-desc": "Moderne version af MonoBook med frisk udseende og mange forbedringer af brugervenligheden",
-       "vector-action-addsection": "Nyt emne",
-       "vector-action-delete": "Slet",
-       "vector-action-move": "Flyt",
-       "vector-action-protect": "Beskyt",
-       "vector-action-undelete": "Gendan",
-       "vector-action-unprotect": "Ændr beskyttelse",
-       "vector-view-create": "Opret",
-       "vector-view-edit": "Redigér",
-       "vector-view-history": "Se historik",
-       "vector-view-view": "Læs",
-       "vector-view-viewsource": "Se kilden",
-       "vector-more-actions": "Mere"
-}
diff --git a/skins/Vector/i18n/de.json b/skins/Vector/i18n/de.json
deleted file mode 100644 (file)
index eefc7ab..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kghbln",
-                       "Metalhead64",
-                       "The Evil IP address",
-                       "Umherirrender"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Moderne Version von Monobook mit frischem Aussehen und vielen Verbesserungen an der Benutzerfreundlichkeit",
-       "vector.css": "/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */",
-       "vector.js": "/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */",
-       "vector-action-addsection": "Abschnitt hinzufügen",
-       "vector-action-delete": "Löschen",
-       "vector-action-move": "Verschieben",
-       "vector-action-protect": "Schützen",
-       "vector-action-undelete": "Wiederherstellen",
-       "vector-action-unprotect": "Seitenschutz ändern",
-       "vector-view-create": "Erstellen",
-       "vector-view-edit": "Bearbeiten",
-       "vector-view-history": "Versionsgeschichte",
-       "vector-view-view": "Lesen",
-       "vector-view-viewsource": "Quelltext anzeigen",
-       "vector-more-actions": "Mehr"
-}
diff --git a/skins/Vector/i18n/diq.json b/skins/Vector/i18n/diq.json
deleted file mode 100644 (file)
index 5ba4455..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Asmen",
-                       "Calak",
-                       "Erdemaslancan",
-                       "Mirzali"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-action-addsection": "Mewzu vıraze",
-       "vector-action-delete": "Bestere",
-       "vector-action-move": "Bere",
-       "vector-action-protect": "Bışevekne",
-       "vector-action-undelete": "Esterıtışi peyser bıgê",
-       "vector-action-unprotect": "Starkerdışi bıvurne",
-       "vector-view-create": "Vıraze",
-       "vector-view-edit": "Bıvurne",
-       "vector-view-history": "Tarixê pele bıvêne",
-       "vector-view-view": "Bıwane",
-       "vector-view-viewsource": "Çımey bıvêne",
-       "vector-more-actions": "Zêde"
-}
diff --git a/skins/Vector/i18n/dsb.json b/skins/Vector/i18n/dsb.json
deleted file mode 100644 (file)
index 7220f36..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Michawiki"
-               ]
-       },
-       "vector-action-addsection": "Temu pśidaś",
-       "vector-action-delete": "Wulašowaś",
-       "vector-action-move": "Pśesunuś",
-       "vector-action-protect": "Šćitaś",
-       "vector-action-undelete": "Wótnowiś",
-       "vector-action-unprotect": "Šćit změniś",
-       "vector-view-create": "Napóraś",
-       "vector-view-edit": "Wobźěłaś",
-       "vector-view-history": "Wersije a awtory",
-       "vector-view-view": "Cytaś",
-       "vector-view-viewsource": "Žrědło se woglědaś"
-}
diff --git a/skins/Vector/i18n/dtp.json b/skins/Vector/i18n/dtp.json
deleted file mode 100644 (file)
index a337040..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "FRANCIS5091",
-                       "FRANELYA"
-               ]
-       },
-       "vector-action-addsection": "Ruhangai piboboroson",
-       "vector-action-delete": "Pugaso",
-       "vector-action-move": "Poundoliho",
-       "vector-action-protect": "Tingoligai",
-       "vector-action-undelete": "Kada pugaso",
-       "vector-action-unprotect": "Alanai tingolig",
-       "vector-view-create": "Pomonsoi",
-       "vector-view-edit": "Idito",
-       "vector-view-history": "Intaai susuyan",
-       "vector-view-view": "Basao",
-       "vector-view-viewsource": "Intaai wowonod"
-}
diff --git a/skins/Vector/i18n/dv.json b/skins/Vector/i18n/dv.json
deleted file mode 100644 (file)
index 9e53056..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ushau97"
-               ]
-       },
-       "vector-action-addsection": "ޚިޔާލެއް އިތުރުކުރައްވާ",
-       "vector-action-delete": "ފޮހެލައްވާ",
-       "vector-action-move": "ތަން ބަދަލުކުރައްވާ",
-       "vector-action-protect": "ދިފާޢުކުރައްވާ",
-       "vector-action-unprotect": "ދިފާޢުކުރުން ބަދަލުކުރައްވާ",
-       "vector-view-create": "ފަށްޓަވާ",
-       "vector-view-edit": "އުނިއިތުރު ގެންނަވާ",
-       "vector-view-history": "ޞަފްޙާގެ ތާރީޚް",
-       "vector-view-view": "ކިޔުއްވާ",
-       "vector-view-viewsource": "މަސްދަރު ބައްލަވާ"
-}
diff --git a/skins/Vector/i18n/ee.json b/skins/Vector/i18n/ee.json
deleted file mode 100644 (file)
index 2214755..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Natsubee"
-               ]
-       },
-       "vector-action-delete": "Tutui",
-       "vector-action-move": "Ɖɔli eƒe nɔƒe",
-       "vector-view-create": "Dze egɔme",
-       "vector-view-edit": "Trɔ asi le eŋu",
-       "vector-view-history": "Kpɔ xoxoawo",
-       "vector-view-view": "Xlẽ",
-       "vector-view-viewsource": "Kpɔ alesi woŋlɔe"
-}
diff --git a/skins/Vector/i18n/egl.json b/skins/Vector/i18n/egl.json
deleted file mode 100644 (file)
index a819ab0..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lévi"
-               ]
-       },
-       "vector-action-addsection": "Zûnta discusiòun",
-       "vector-action-delete": "Scanşèla",
-       "vector-action-move": "Spôsta",
-       "vector-action-protect": "Prutēz",
-       "vector-action-undelete": "Fà al recóper",
-       "vector-action-unprotect": "Câmbia la prutesiòun",
-       "vector-view-create": "Invèinta",
-       "vector-view-edit": "Mudéfica",
-       "vector-view-history": "Guêrda la stôria",
-       "vector-view-view": "Lēş",
-       "vector-view-viewsource": "Guêrda la surzéia",
-       "vector-more-actions": "Êter"
-}
diff --git a/skins/Vector/i18n/el.json b/skins/Vector/i18n/el.json
deleted file mode 100644 (file)
index 06fa36b..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Calak",
-                       "Crazymadlover",
-                       "Evropi",
-                       "Omnipaedista",
-                       "Protnet",
-                       "ZaDiak"
-               ]
-       },
-       "vector.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Vector skin */",
-       "vector.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το Vector skin */",
-       "vector-action-addsection": "Προσθήκη θέματος",
-       "vector-action-delete": "Διαγραφή",
-       "vector-action-move": "Μετακίνηση",
-       "vector-action-protect": "Προστασία",
-       "vector-action-undelete": "Επαναφορά",
-       "vector-action-unprotect": "Αλλαγή προστασίας",
-       "vector-view-create": "Δημιουργία",
-       "vector-view-edit": "Επεξεργασία",
-       "vector-view-history": "Προβολή ιστορικού",
-       "vector-view-view": "Ανάγνωση",
-       "vector-view-viewsource": "Προβολή κώδικα",
-       "vector-more-actions": "Περισσότερα"
-}
diff --git a/skins/Vector/i18n/en.json b/skins/Vector/i18n/en.json
deleted file mode 100644 (file)
index 949218e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": []
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Modern version of MonoBook with fresh look and many usability improvements",
-       "vector.css": "/* CSS placed here will affect users of the Vector skin */",
-       "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
-       "vector-action-addsection": "Add topic",
-       "vector-action-delete": "Delete",
-       "vector-action-move": "Move",
-       "vector-action-protect": "Protect",
-       "vector-action-undelete": "Undelete",
-       "vector-action-unprotect": "Change protection",
-       "vector-view-create": "Create",
-       "vector-view-edit": "Edit",
-       "vector-view-history": "View history",
-       "vector-view-view": "Read",
-       "vector-view-viewsource": "View source",
-       "vector-more-actions": "More"
-}
diff --git a/skins/Vector/i18n/eo.json b/skins/Vector/i18n/eo.json
deleted file mode 100644 (file)
index 5f92fe8..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "KuboF",
-                       "Objectivesea",
-                       "Yekrats"
-               ]
-       },
-       "skinname-vector": "Vektoro",
-       "vector.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Vektora temo. */",
-       "vector.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Vektora temo. */",
-       "vector-action-addsection": "Aldoni temon",
-       "vector-action-delete": "Forigi",
-       "vector-action-move": "Alinomigi",
-       "vector-action-protect": "Protekti",
-       "vector-action-undelete": "Malforigi",
-       "vector-action-unprotect": "Ŝanĝi protektadon",
-       "vector-view-create": "Krei",
-       "vector-view-edit": "Redakti",
-       "vector-view-history": "Vidi historion",
-       "vector-view-view": "Legi",
-       "vector-view-viewsource": "Vidi fonton",
-       "vector-more-actions": "Pli"
-}
diff --git a/skins/Vector/i18n/es-formal.json b/skins/Vector/i18n/es-formal.json
deleted file mode 100644 (file)
index a666c05..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "XanaG"
-               ]
-       },
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver historial",
-       "vector-view-view": "Leer"
-}
diff --git a/skins/Vector/i18n/es.json b/skins/Vector/i18n/es.json
deleted file mode 100644 (file)
index 75352a5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Armando-Martin",
-                       "Crazymadlover",
-                       "Dalton2",
-                       "Fitoschido",
-                       "Locos epraix",
-                       "Manuelt15",
-                       "MarcoAurelio",
-                       "Miguel2706",
-                       "Platonides",
-                       "Vivaelcelta"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Versión moderna de MonoBook, con un aspecto actualizado y muchas mejoras de usabilidad",
-       "vector.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"Vector\" */",
-       "vector.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */",
-       "vector-action-addsection": "Sección nueva",
-       "vector-action-delete": "Borrar",
-       "vector-action-move": "Trasladar",
-       "vector-action-protect": "Proteger",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Cambiar protección",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver historial",
-       "vector-view-view": "Leer",
-       "vector-view-viewsource": "Ver código",
-       "vector-more-actions": "Más"
-}
diff --git a/skins/Vector/i18n/esu.json b/skins/Vector/i18n/esu.json
deleted file mode 100644 (file)
index b32ac1d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "82-145"
-               ]
-       },
-       "vector-action-move": "Atra cimirtuq",
-       "vector-view-view": "Naaqe"
-}
diff --git a/skins/Vector/i18n/et.json b/skins/Vector/i18n/et.json
deleted file mode 100644 (file)
index fc01b32..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ker",
-                       "Pikne",
-                       "WikedKentaur"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-skin-desc": "MonoBooki uuem versioon värskema väljanägemise ja mitme kasutajasõbralikuma täiendusega",
-       "vector.css": "/* Siin asuv kaskaadilaadistik puudutab kõiki Vektori-kujunduse kasutajaid. */",
-       "vector.js": "/* Siin asuv JavaScript laaditakse kõigi Vektori-kujunduse kasutajate jaoks. */",
-       "vector-action-addsection": "Lisa teema",
-       "vector-action-delete": "Kustuta",
-       "vector-action-move": "Teisalda",
-       "vector-action-protect": "Kaitse",
-       "vector-action-undelete": "Taasta",
-       "vector-action-unprotect": "Muuda kaitset",
-       "vector-view-create": "Loo",
-       "vector-view-edit": "Muuda",
-       "vector-view-history": "Näita ajalugu",
-       "vector-view-view": "Vaata",
-       "vector-view-viewsource": "Vaata lähteteksti",
-       "vector-more-actions": "Veel"
-}
diff --git a/skins/Vector/i18n/eu.json b/skins/Vector/i18n/eu.json
deleted file mode 100644 (file)
index 856742c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Unai Fdz. de Betoño",
-                       "Xabier Armendaritz",
-                       "Fitoschido"
-               ]
-       },
-       "vector-action-addsection": "Gehitu atala",
-       "vector-action-delete": "Ezabatu",
-       "vector-action-move": "Mugitu",
-       "vector-action-protect": "Babestu",
-       "vector-action-undelete": "Berreskuratu",
-       "vector-action-unprotect": "Babesa aldatu",
-       "vector-view-create": "Sortu",
-       "vector-view-edit": "Aldatu",
-       "vector-view-history": "Ikusi historia",
-       "vector-view-view": "Irakurri",
-       "vector-view-viewsource": "Kodea ikusia",
-       "vector-more-actions": "Gehiago"
-}
diff --git a/skins/Vector/i18n/ext.json b/skins/Vector/i18n/ext.json
deleted file mode 100644 (file)
index 1cf9a4f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Better"
-               ]
-       },
-       "vector-action-addsection": "Añiil tema",
-       "vector-action-delete": "Esborral",
-       "vector-action-move": "Mual",
-       "vector-action-protect": "Protegel",
-       "vector-action-undelete": "Esborral",
-       "vector-action-unprotect": "Esprotegel",
-       "vector-view-create": "Crial",
-       "vector-view-edit": "Eital",
-       "vector-view-history": "Guipal estorial",
-       "vector-view-view": "Leyel",
-       "vector-view-viewsource": "Guipal cóigu"
-}
diff --git a/skins/Vector/i18n/fa.json b/skins/Vector/i18n/fa.json
deleted file mode 100644 (file)
index 1d329ff..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Calak",
-                       "Ebraminio",
-                       "Huji",
-                       "Reza1615",
-                       "Zack90"
-               ]
-       },
-       "skinname-vector": "برداری",
-       "vector-skin-desc": "نسخه مدرن منوبوک با نگاه تازه و بهبود قابلیت استفاده",
-       "vector-action-addsection": "افزودن بخش",
-       "vector-action-delete": "حذف",
-       "vector-action-move": "انتقال",
-       "vector-action-protect": "محافظت",
-       "vector-action-undelete": "احیا",
-       "vector-action-unprotect": "تغییر سطح حفاظت",
-       "vector-view-create": "ایجاد",
-       "vector-view-edit": "ویرایش",
-       "vector-view-history": "نمایش تاریخچه",
-       "vector-view-view": "خواندن",
-       "vector-view-viewsource": "نمایش مبدأ",
-       "vector-more-actions": "بیشتر"
-}
diff --git a/skins/Vector/i18n/ff.json b/skins/Vector/i18n/ff.json
deleted file mode 100644 (file)
index ac3ee5b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ibrahima"
-               ]
-       },
-       "vector-action-addsection": "Ɓeydi toɓɓere",
-       "vector-action-move": "Dirtin",
-       "vector-view-create": "Sos",
-       "vector-view-edit": "Taƴto",
-       "vector-view-history": "Yiyto aslol",
-       "vector-view-view": "Tar",
-       "vector-view-viewsource": "Yiyto ɗaɗol"
-}
diff --git a/skins/Vector/i18n/fi.json b/skins/Vector/i18n/fi.json
deleted file mode 100644 (file)
index 7533689..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Crt",
-                       "Nedergard",
-                       "Nike",
-                       "Pxos"
-               ]
-       },
-       "vector.css": "/* Tämä sivu sisältää Vector-ulkoasua muuttavia tyylejä. */",
-       "vector.js": "/* Tämän sivun JavaScript-koodi liitetään Vector-tyyliin */",
-       "vector-action-addsection": "Lisää aihe",
-       "vector-action-delete": "Poista",
-       "vector-action-move": "Siirrä",
-       "vector-action-protect": "Suojaa",
-       "vector-action-undelete": "Palauta",
-       "vector-action-unprotect": "Muuta suojausta",
-       "vector-view-create": "Luo",
-       "vector-view-edit": "Muokkaa",
-       "vector-view-history": "Näytä historia",
-       "vector-view-view": "Lue",
-       "vector-view-viewsource": "Näytä lähdekoodi",
-       "vector-more-actions": "Muut"
-}
diff --git a/skins/Vector/i18n/fit.json b/skins/Vector/i18n/fit.json
deleted file mode 100644 (file)
index 46089ae..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mestos"
-               ]
-       },
-       "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"
-}
diff --git a/skins/Vector/i18n/fo.json b/skins/Vector/i18n/fo.json
deleted file mode 100644 (file)
index 46f272c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Diupwijk",
-                       "EileenSanda"
-               ]
-       },
-       "vector-action-addsection": "Nýtt evni",
-       "vector-action-delete": "Strika",
-       "vector-action-move": "Flyt",
-       "vector-action-protect": "Friða",
-       "vector-action-undelete": "Endurstovna",
-       "vector-action-unprotect": "Broyt verju",
-       "vector-view-create": "Stovna",
-       "vector-view-edit": "Rætta",
-       "vector-view-history": "Vís søgu",
-       "vector-view-view": "Les",
-       "vector-view-viewsource": "Vís keldu",
-       "vector-more-actions": "Meira"
-}
diff --git a/skins/Vector/i18n/fr.json b/skins/Vector/i18n/fr.json
deleted file mode 100644 (file)
index 623fda8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Akeron",
-                       "Crochet.david",
-                       "DavidL",
-                       "Gomoko",
-                       "Jean-Frédéric",
-                       "Od1n"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Version moderne de MonoBook avec un aspect rajeuni et beaucoup d’améliorations ergonomiques",
-       "vector.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Vector. */",
-       "vector.js": "/* Tout code JavaScript placé ici sera chargé pour les utilisateurs de l’habillage Vector */",
-       "vector-action-addsection": "Ajouter un sujet",
-       "vector-action-delete": "Supprimer",
-       "vector-action-move": "Renommer",
-       "vector-action-protect": "Protéger",
-       "vector-action-undelete": "Rétablir",
-       "vector-action-unprotect": "Changer la protection",
-       "vector-view-create": "Créer",
-       "vector-view-edit": "Modifier",
-       "vector-view-history": "Historique",
-       "vector-view-view": "Lire",
-       "vector-view-viewsource": "Voir la source",
-       "vector-more-actions": "Plus"
-}
diff --git a/skins/Vector/i18n/frc.json b/skins/Vector/i18n/frc.json
deleted file mode 100644 (file)
index f13d8ce..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ebe123"
-               ]
-       },
-       "vector-action-delete": "Supprimer",
-       "vector-action-protect": "Protéger"
-}
diff --git a/skins/Vector/i18n/frp.json b/skins/Vector/i18n/frp.json
deleted file mode 100644 (file)
index 4f0c3bc..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "ChrisPtDe"
-               ]
-       },
-       "skinname-vector": "Vèctor",
-       "vector.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « Vèctor ». */",
-       "vector.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « Vèctor ». */",
-       "vector-action-addsection": "Apondre na chousa",
-       "vector-action-delete": "Suprimar",
-       "vector-action-move": "Dèplaciér",
-       "vector-action-protect": "Protègiér",
-       "vector-action-undelete": "Refâre",
-       "vector-action-unprotect": "Changiér la protèccion",
-       "vector-view-create": "Fâre",
-       "vector-view-edit": "Changiér",
-       "vector-view-history": "Vêre l’historico",
-       "vector-view-view": "Liére",
-       "vector-view-viewsource": "Vêre lo tèxto sôrsa"
-}
diff --git a/skins/Vector/i18n/frr.json b/skins/Vector/i18n/frr.json
deleted file mode 100644 (file)
index f9ff0a3..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Murma174",
-                       "Pyt"
-               ]
-       },
-       "vector-skin-desc": "Modern werjuun faan Monobook mä frisk skak an föl muar mögelkhaiden",
-       "vector-action-addsection": "Nei kirew began",
-       "vector-action-delete": "Strik",
-       "vector-action-move": "Fersküüw",
-       "vector-action-protect": "Seekre",
-       "vector-action-undelete": "Weder iinstel",
-       "vector-action-unprotect": "Sidjenseekerhaid",
-       "vector-view-create": "Maage",
-       "vector-view-edit": "Bewerke",
-       "vector-view-history": "Ferluup uunluke",
-       "vector-view-view": "Lees",
-       "vector-view-viewsource": "Kweltekst uunluke",
-       "vector-more-actions": "Muar"
-}
diff --git a/skins/Vector/i18n/fur.json b/skins/Vector/i18n/fur.json
deleted file mode 100644 (file)
index 9df1846..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Klenje",
-                       "Tocaibon"
-               ]
-       },
-       "vector-action-addsection": "Gnove sezion",
-       "vector-action-delete": "Elimine",
-       "vector-action-move": "Môf",
-       "vector-action-protect": "Protêç",
-       "vector-action-undelete": "Recupere",
-       "vector-action-unprotect": "Gambie la protezion",
-       "vector-view-create": "Cree",
-       "vector-view-edit": "Cambie",
-       "vector-view-history": "Cjale il storic",
-       "vector-view-view": "Lei",
-       "vector-view-viewsource": "Cjale risultive"
-}
diff --git a/skins/Vector/i18n/fy.json b/skins/Vector/i18n/fy.json
deleted file mode 100644 (file)
index 328193d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kening Aldgilles",
-                       "SK-luuut"
-               ]
-       },
-       "vector-action-delete": "Fuortsmite",
-       "vector-action-move": "Werneam",
-       "vector-action-protect": "Beskermje",
-       "vector-action-undelete": "Tebeksette",
-       "vector-action-unprotect": "Beskerming fuorthelje",
-       "vector-view-create": "Oanmeitsje",
-       "vector-view-edit": "Wizigje",
-       "vector-view-history": "Skiednis sjen litte",
-       "vector-view-view": "Lês",
-       "vector-view-viewsource": "Besjoch de boarne"
-}
diff --git a/skins/Vector/i18n/ga.json b/skins/Vector/i18n/ga.json
deleted file mode 100644 (file)
index 81f4caa..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kscanne",
-                       "Kwekubo",
-                       "Moydow"
-               ]
-       },
-       "skinname-vector": "Veicteoir",
-       "vector-action-addsection": "Cuir topaic leis",
-       "vector-action-delete": "Scrios",
-       "vector-action-move": "Athainmnigh",
-       "vector-action-protect": "Glasáil",
-       "vector-action-undelete": "Díscrios",
-       "vector-action-unprotect": "Díghlasáil",
-       "vector-view-create": "Cruthaigh",
-       "vector-view-edit": "Athraigh an lch seo",
-       "vector-view-history": "Féach ar stair",
-       "vector-view-view": "Léigh",
-       "vector-view-viewsource": "Féach ar fhoinse"
-}
diff --git a/skins/Vector/i18n/gag.json b/skins/Vector/i18n/gag.json
deleted file mode 100644 (file)
index 4f45473..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Cuman",
-                       "Emperyan"
-               ]
-       },
-       "vector-view-edit": "Diiştir",
-       "vector-view-view": "Oku"
-}
diff --git a/skins/Vector/i18n/gan-hans.json b/skins/Vector/i18n/gan-hans.json
deleted file mode 100644 (file)
index 5c0db67..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Liangent",
-                       "Xiaomingyan"
-               ]
-       },
-       "vector-action-addsection": "添主题",
-       "vector-action-delete": "删吥",
-       "vector-action-move": "移吥",
-       "vector-action-protect": "护到",
-       "vector-action-undelete": "望下删吥𠮶页面",
-       "vector-action-unprotect": "更改保护",
-       "vector-view-create": "创建",
-       "vector-view-edit": "编辑",
-       "vector-view-history": "望下历史",
-       "vector-view-view": "读",
-       "vector-view-viewsource": "望下原始码"
-}
diff --git a/skins/Vector/i18n/gan-hant.json b/skins/Vector/i18n/gan-hant.json
deleted file mode 100644 (file)
index ceb23b5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Symane"
-               ]
-       },
-       "vector-action-addsection": "添主題",
-       "vector-action-delete": "刪吥",
-       "vector-action-move": "移吥",
-       "vector-action-protect": "護到",
-       "vector-action-undelete": "望下刪吥嗰頁面",
-       "vector-action-unprotect": "解除保護",
-       "vector-view-create": "創建",
-       "vector-view-edit": "編輯",
-       "vector-view-history": "望下歷史",
-       "vector-view-view": "讀",
-       "vector-view-viewsource": "望下原始碼"
-}
diff --git a/skins/Vector/i18n/gd.json b/skins/Vector/i18n/gd.json
deleted file mode 100644 (file)
index 04fa42b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Akerbeltz",
-                       "GunChleoc"
-               ]
-       },
-       "vector-skin-desc": "Tionndadh ùr-nodha de MonoBook le dreach ùr air 's iomadh leasachadh air a sho-chleachdachd",
-       "vector-action-addsection": "Cuir ris cuspair",
-       "vector-action-delete": "Sguab às",
-       "vector-action-move": "Gluais",
-       "vector-action-protect": "Dìon",
-       "vector-action-undelete": "Neo-dhèan an sguabadh às",
-       "vector-action-unprotect": "Atharraich an dìon",
-       "vector-view-create": "Cruthaich",
-       "vector-view-edit": "Deasaich",
-       "vector-view-history": "Seall an eachdraidh",
-       "vector-view-view": "Leugh",
-       "vector-view-viewsource": "Seall an tùs",
-       "vector-more-actions": "Barrachd"
-}
diff --git a/skins/Vector/i18n/gl.json b/skins/Vector/i18n/gl.json
deleted file mode 100644 (file)
index 455b9bd..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Elisardojm",
-                       "Toliño",
-                       "Vivaelcelta"
-               ]
-       },
-       "vector-skin-desc": "Versión moderna da aparencia MonoBook, cun aspecto fresco e moitas melloras na usabilidade",
-       "vector.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */",
-       "vector.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */",
-       "vector-action-addsection": "Nova sección",
-       "vector-action-delete": "Borrar",
-       "vector-action-move": "Mover",
-       "vector-action-protect": "Protexer",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Cambiar a protección",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver o historial",
-       "vector-view-view": "Ler",
-       "vector-view-viewsource": "Ver o código fonte",
-       "vector-more-actions": "Máis"
-}
diff --git a/skins/Vector/i18n/gom-deva.json b/skins/Vector/i18n/gom-deva.json
deleted file mode 100644 (file)
index 044d43c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Darshan kandolkar",
-                       "Pooja tople",
-                       "Sanket.prabhu26",
-                       "Supriya kankumbikar"
-               ]
-       },
-       "vector-action-addsection": "माथाळो दियात",
-       "vector-action-delete": "काडून उडयात",
-       "vector-action-move": "दुसरेकडे व्हरात",
-       "vector-action-protect": "राख",
-       "vector-view-create": "निर्माण कर",
-       "vector-view-edit": "बदल",
-       "vector-view-history": "इतिहास पळेयात",
-       "vector-view-view": "वाचचें",
-       "vector-view-viewsource": "उगम पळेयात"
-}
diff --git a/skins/Vector/i18n/gom-latn.json b/skins/Vector/i18n/gom-latn.json
deleted file mode 100644 (file)
index 37a3117..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Isidore Dantas",
-                       "The Discoverer"
-               ]
-       },
-       "vector-action-addsection": "Vixoi zodd",
-       "vector-action-delete": "Kadd",
-       "vector-action-move": "Zago bodol",
-       "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",
-       "vector-more-actions": "Anik"
-}
diff --git a/skins/Vector/i18n/grc.json b/skins/Vector/i18n/grc.json
deleted file mode 100644 (file)
index c22ebf1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Crazymadlover",
-                       "Omnipaedista"
-               ]
-       },
-       "vector-action-addsection": "Θέμα προστιθέναι",
-       "vector-action-delete": "Σβεννύναι",
-       "vector-action-move": "Κινεῖν",
-       "vector-action-protect": "Φυλάττειν",
-       "vector-action-undelete": "Ἀποκαθιστάναι",
-       "vector-action-unprotect": "Ἄλλαξον τὴν φύλαξιν",
-       "vector-view-create": "Ποιεῖν",
-       "vector-view-edit": "Μεταγράφειν",
-       "vector-view-history": "Ἱστορίαν ὁρᾶν",
-       "vector-view-view": "Ἀναγνῶναι",
-       "vector-view-viewsource": "Ὁρᾶν τὴν πηγήν"
-}
diff --git a/skins/Vector/i18n/gsw.json b/skins/Vector/i18n/gsw.json
deleted file mode 100644 (file)
index 90b3e73..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Als-Holder"
-               ]
-       },
-       "vector-action-addsection": "Abschnitt zuefiege",
-       "vector-action-delete": "Lesche",
-       "vector-action-move": "Verschiebe",
-       "vector-action-protect": "Schitze",
-       "vector-action-undelete": "Widerhärstelle",
-       "vector-action-unprotect": "Syteschutz ändere",
-       "vector-view-create": "Aalege",
-       "vector-view-edit": "Bearbeite",
-       "vector-view-history": "Versionsgschicht",
-       "vector-view-view": "Läse",
-       "vector-view-viewsource": "Quälltext aaluege"
-}
diff --git a/skins/Vector/i18n/gu.json b/skins/Vector/i18n/gu.json
deleted file mode 100644 (file)
index 6d7dc1d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aritra",
-                       "Ashok modhvadia",
-                       "Dsvyas"
-               ]
-       },
-       "vector-action-addsection": "નવી ચર્ચા",
-       "vector-action-delete": "રદ કરો",
-       "vector-action-move": "ખસેડો",
-       "vector-action-protect": "સુરક્ષિત કરો",
-       "vector-action-undelete": "રદ કરેલું પાછું વાળો",
-       "vector-action-unprotect": "સુરક્ષા બદલો",
-       "vector-view-create": "બનાવો",
-       "vector-view-edit": "ફેરફાર કરો",
-       "vector-view-history": "ઇતિહાસ જુઓ",
-       "vector-view-view": "વાંચો",
-       "vector-view-viewsource": "સ્રોત જુઓ"
-}
diff --git a/skins/Vector/i18n/guc.json b/skins/Vector/i18n/guc.json
deleted file mode 100644 (file)
index e69fac5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Maor X"
-               ]
-       },
-       "vector-action-delete": "Ojuichajaa",
-       "vector-action-move": "Ansülaa",
-       "vector-action-protect": "Eisalajaa",
-       "vector-view-create": "Akumajaa",
-       "vector-view-edit": "Anaataa",
-       "vector-view-history": "Achikii a'wanajaayamaajatü",
-       "vector-view-view": "Aashaje'eraa",
-       "vector-view-viewsource": "Anüliaa eejeetülee"
-}
diff --git a/skins/Vector/i18n/gv.json b/skins/Vector/i18n/gv.json
deleted file mode 100644 (file)
index 9be429f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "MacTire02",
-                       "Shimmin Beg"
-               ]
-       },
-       "vector-action-addsection": "Cur cooish noa rish",
-       "vector-action-delete": "Scryss",
-       "vector-action-move": "Scugh",
-       "vector-action-protect": "Coadee",
-       "vector-action-undelete": "Jee-scryss",
-       "vector-action-unprotect": "Caghlaa coadey",
-       "vector-view-create": "Croo",
-       "vector-view-edit": "Reagh",
-       "vector-view-history": "Jeeagh er shennaghys",
-       "vector-view-view": "Lhaih",
-       "vector-view-viewsource": "Jeeagh er bun"
-}
diff --git a/skins/Vector/i18n/ha.json b/skins/Vector/i18n/ha.json
deleted file mode 100644 (file)
index 77e4975..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-       "vector-action-delete": "Soke",
-       "vector-action-move": "Gusarwa",
-       "vector-action-protect": "A kare",
-       "vector-view-create": "Ƙirƙira"
-}
diff --git a/skins/Vector/i18n/hak.json b/skins/Vector/i18n/hak.json
deleted file mode 100644 (file)
index ed0c0cb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Anson2812",
-                       "Jetlag"
-               ]
-       },
-       "vector-action-addsection": "加入話題",
-       "vector-action-delete": "刪除",
-       "vector-action-move": "移動",
-       "vector-action-protect": "保護",
-       "vector-action-undelete": "恢復",
-       "vector-action-unprotect": "更改保護",
-       "vector-view-create": "建立",
-       "vector-view-edit": "編寫",
-       "vector-view-history": "查看歷史",
-       "vector-view-view": "閱讀",
-       "vector-view-viewsource": "查看源碼"
-}
diff --git a/skins/Vector/i18n/haw.json b/skins/Vector/i18n/haw.json
deleted file mode 100644 (file)
index 98e2919..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kolonahe"
-               ]
-       },
-       "vector-action-addsection": "Hoʻohui kumuhana",
-       "vector-action-delete": "Holoi",
-       "vector-action-move": "E hoʻoneʻe",
-       "vector-action-protect": "E hoʻomalu",
-       "vector-action-undelete": "Holoiʻole",
-       "vector-action-unprotect": "E hoʻololi i ka hoʻomalu",
-       "vector-view-create": "Haku",
-       "vector-view-edit": "Hoʻololi",
-       "vector-view-history": "Nānā i ka mōʻaukala",
-       "vector-view-view": "Heluhelu",
-       "vector-view-viewsource": "Nānā i ke kumu"
-}
diff --git a/skins/Vector/i18n/he.json b/skins/Vector/i18n/he.json
deleted file mode 100644 (file)
index 887d86b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amire80",
-                       "Rotemliss"
-               ]
-       },
-       "skinname-vector": "וקטור",
-       "vector-skin-desc": "גרסה מודרנית של מונובוק עם מראה רענן והרבה שיפורי שמישות",
-       "vector.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Vector בלבד */",
-       "vector.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */",
-       "vector-action-addsection": "הוספת נושא",
-       "vector-action-delete": "מחיקה",
-       "vector-action-move": "העברה",
-       "vector-action-protect": "הגנה",
-       "vector-action-undelete": "ביטול מחיקה",
-       "vector-action-unprotect": "שינוי הגנה",
-       "vector-view-create": "יצירה",
-       "vector-view-edit": "עריכה",
-       "vector-view-history": "הצגת היסטוריה",
-       "vector-view-view": "קריאה",
-       "vector-view-viewsource": "הצגת מקור",
-       "vector-more-actions": "עוד"
-}
diff --git a/skins/Vector/i18n/hi.json b/skins/Vector/i18n/hi.json
deleted file mode 100644 (file)
index 6b68d3e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Siddhartha Ghai",
-                       "आलोक",
-                       "रोहित रावत"
-               ]
-       },
-       "vector-action-addsection": "विषय जोड़ें",
-       "vector-action-delete": "हटाएँ",
-       "vector-action-move": "स्थानांतरण करें",
-       "vector-action-protect": "सुरक्षित करें",
-       "vector-action-undelete": "हटाना वापस लें",
-       "vector-action-unprotect": "सुरक्षा बदलें",
-       "vector-view-create": "बनाएँ",
-       "vector-view-edit": "सम्पादन",
-       "vector-view-history": "इतिहास देखें",
-       "vector-view-view": "पढ़ें",
-       "vector-view-viewsource": "स्रोत देखें",
-       "vector-more-actions": "अधिक"
-}
diff --git a/skins/Vector/i18n/hif-latn.json b/skins/Vector/i18n/hif-latn.json
deleted file mode 100644 (file)
index df37b3e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Girmitya",
-                       "Thakurji"
-               ]
-       },
-       "vector-action-addsection": "Topic jorro",
-       "vector-action-delete": "Mitao",
-       "vector-action-move": "Naam badlo",
-       "vector-action-protect": "Bachao",
-       "vector-action-undelete": "Pahile jaise karo",
-       "vector-action-unprotect": "Surakchha ke badlo",
-       "vector-view-create": "Banao",
-       "vector-view-edit": "Badlo",
-       "vector-view-history": "Itihaas dekho",
-       "vector-view-view": "Parrho",
-       "vector-view-viewsource": "Source dekho"
-}
diff --git a/skins/Vector/i18n/hil.json b/skins/Vector/i18n/hil.json
deleted file mode 100644 (file)
index 304f8ac..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Anjoeli9806"
-               ]
-       },
-       "vector-action-addsection": "Magdugang sang topiko",
-       "vector-action-delete": "Panason",
-       "vector-action-move": "Saylohon",
-       "vector-action-protect": "Pangapinan",
-       "vector-action-undelete": "Dulaon ang pagpanas",
-       "vector-action-unprotect": "Ilisan ang pagpangapin",
-       "vector-view-create": "Himuon",
-       "vector-view-edit": "Ilisan",
-       "vector-view-history": "Lantawon ang kasaysayan",
-       "vector-view-view": "Magbasa",
-       "vector-view-viewsource": "Lantawon ang ginhalinan"
-}
diff --git a/skins/Vector/i18n/hr.json b/skins/Vector/i18n/hr.json
deleted file mode 100644 (file)
index 1887ee5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ex13",
-                       "Tivek"
-               ]
-       },
-       "vector-action-addsection": "Dodaj temu",
-       "vector-action-delete": "Izbriši",
-       "vector-action-move": "Premjesti",
-       "vector-action-protect": "Zaštiti",
-       "vector-action-undelete": "Vrati",
-       "vector-action-unprotect": "Promijeni zaštitu",
-       "vector-view-create": "Započni",
-       "vector-view-edit": "Uredi",
-       "vector-view-history": "Vidi stare izmjene",
-       "vector-view-view": "Čitaj",
-       "vector-view-viewsource": "Vidi izvor"
-}
diff --git a/skins/Vector/i18n/hrx.json b/skins/Vector/i18n/hrx.json
deleted file mode 100644 (file)
index 0a45056..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Paul Beppler"
-               ]
-       },
-       "vector-action-addsection": "Abschnitt hinzufüche",
-       "vector-action-delete": "Lösche",
-       "vector-action-move": "Verschiebe",
-       "vector-action-protect": "Schütz",
-       "vector-action-undelete": "Wiederherstelle",
-       "vector-action-unprotect": "Seiteschutz ännre",
-       "vector-view-create": "Erstell",
-       "vector-view-edit": "Beoorbeite",
-       "vector-view-history": "Versionsgeschicht",
-       "vector-view-view": "Lese",
-       "vector-view-viewsource": "Quelltext oonzeiche"
-}
diff --git a/skins/Vector/i18n/hsb.json b/skins/Vector/i18n/hsb.json
deleted file mode 100644 (file)
index a46105c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Michawiki"
-               ]
-       },
-       "vector-action-addsection": "Temu přidać",
-       "vector-action-delete": "wušmórnyć",
-       "vector-action-move": "přesunyć",
-       "vector-action-protect": "škitać",
-       "vector-action-undelete": "Wobnowić",
-       "vector-action-unprotect": "Škit wotstronić",
-       "vector-view-create": "Wutworić",
-       "vector-view-edit": "Wobdźěłać",
-       "vector-view-history": "Stawizny",
-       "vector-view-view": "Čitać",
-       "vector-view-viewsource": "Žórło sej wobhladać",
-       "vector-more-actions": "Wjace"
-}
diff --git a/skins/Vector/i18n/hsn.json b/skins/Vector/i18n/hsn.json
deleted file mode 100644 (file)
index 99d8dec..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "YulouCN"
-               ]
-       },
-       "vector-view-edit": "增改",
-       "vector-view-history": "履歷",
-       "vector-view-view": "讀"
-}
diff --git a/skins/Vector/i18n/ht.json b/skins/Vector/i18n/ht.json
deleted file mode 100644 (file)
index f71167a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Boukman",
-                       "Internoob",
-                       "Masterches"
-               ]
-       },
-       "vector-action-addsection": "Ajoute yon sijè",
-       "vector-action-delete": "Efase",
-       "vector-action-move": "Chanje non",
-       "vector-action-protect": "Pwoteje",
-       "vector-action-undelete": "Retabli",
-       "vector-action-unprotect": "Pa pwoteje",
-       "vector-view-create": "Kreye",
-       "vector-view-edit": "Modifye",
-       "vector-view-history": "Gade istorik",
-       "vector-view-view": "Li",
-       "vector-view-viewsource": "Wè kòd tèks sa a"
-}
diff --git a/skins/Vector/i18n/hu-formal.json b/skins/Vector/i18n/hu-formal.json
deleted file mode 100644 (file)
index 4c9fcad..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Tacsipacsi"
-               ]
-       },
-       "vector-action-addsection": "Új téma nyitása",
-       "vector-action-delete": "Törlés",
-       "vector-action-move": "Átnevezés",
-       "vector-action-protect": "Lapvédelem",
-       "vector-action-undelete": "Visszaállítás",
-       "vector-action-unprotect": "Védelem módosítása",
-       "vector-view-create": "Létrehozás",
-       "vector-view-edit": "Szerkesztés",
-       "vector-view-history": "Laptörténet",
-       "vector-view-view": "Olvasás",
-       "vector-view-viewsource": "A lap forrása"
-}
diff --git a/skins/Vector/i18n/hu.json b/skins/Vector/i18n/hu.json
deleted file mode 100644 (file)
index a144ece..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bdamokos",
-                       "Dani",
-                       "Dj",
-                       "Misibacsi",
-                       "Tacsipacsi",
-                       "Tgr"
-               ]
-       },
-       "vector.css": "/* Az ide elhelyezett CSS hatással lesz a Vector felület használóira */",
-       "vector.js": "/* A Vector felületet használó szerkesztők számára betöltendő JavaScriptek */",
-       "vector-action-addsection": "Új téma nyitása",
-       "vector-action-delete": "Törlés",
-       "vector-action-move": "Átnevezés",
-       "vector-action-protect": "Lapvédelem",
-       "vector-action-undelete": "Visszaállítás",
-       "vector-action-unprotect": "Védelem módosítása",
-       "vector-view-create": "Létrehozás",
-       "vector-view-edit": "Szerkesztés",
-       "vector-view-history": "Laptörténet",
-       "vector-view-view": "Olvasás",
-       "vector-view-viewsource": "A lap forrása",
-       "vector-more-actions": "Több"
-}
diff --git a/skins/Vector/i18n/hy.json b/skins/Vector/i18n/hy.json
deleted file mode 100644 (file)
index 79e4601..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Teak",
-                       "Vadgt",
-                       "Xelgen",
-                       "Arman musikyan"
-               ]
-       },
-       "skinname-vector": "Սովորական",
-       "vector-action-addsection": "Ավելացնել քննարկում",
-       "vector-action-delete": "Ջնջել",
-       "vector-action-move": "Տեղափոխել այս էջը",
-       "vector-action-protect": "Պաշտպանել",
-       "vector-action-undelete": "Վերականգնել",
-       "vector-action-unprotect": "Փոխել պաշտպանումը",
-       "vector-view-create": "Ստեղծել",
-       "vector-view-edit": "Խմբագրել",
-       "vector-view-history": "Դիտել պատմությունը",
-       "vector-view-view": "Կարդալ",
-       "vector-view-viewsource": "Դիտել ելատեքստը",
-       "vector-more-actions": "Ավելին"
-}
diff --git a/skins/Vector/i18n/ia.json b/skins/Vector/i18n/ia.json
deleted file mode 100644 (file)
index c1281fc..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "McDutchie"
-               ]
-       },
-       "vector-skin-desc": "Version moderne de MonoBook con aspecto rejuvenescite e multe meliorationes de usabilitate.",
-       "vector.css": "/* Le CSS placiate hic afficera le usatores del apparentia Vector */",
-       "vector.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */",
-       "vector-action-addsection": "Adder topico",
-       "vector-action-delete": "Deler",
-       "vector-action-move": "Renominar",
-       "vector-action-protect": "Proteger",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Cambiar protection",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Modificar",
-       "vector-view-history": "Vider historia",
-       "vector-view-view": "Leger",
-       "vector-view-viewsource": "Vider texto fonte",
-       "vector-more-actions": "Plus"
-}
diff --git a/skins/Vector/i18n/id.json b/skins/Vector/i18n/id.json
deleted file mode 100644 (file)
index ef439a3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arifin.wijaya",
-                       "Bennylin",
-                       "Farras",
-                       "Iwan Novirion",
-                       "Rex"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-skin-desc": "Versi modern dari MonoBook dengan tampilan segar dan banyak perbaikan kegunaan",
-       "vector.css": "/* CSS nan ado di siko diterapkan pado kulik Vektor. */",
-       "vector.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */",
-       "vector-action-addsection": "Bagian baru",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindahkan",
-       "vector-action-protect": "Lindungi",
-       "vector-action-undelete": "Pembatalan penghapusan",
-       "vector-action-unprotect": "Ubah perlindungan",
-       "vector-view-create": "Buat",
-       "vector-view-edit": "Sunting",
-       "vector-view-history": "Versi terdahulu",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Lihat sumber",
-       "vector-more-actions": "Lainnya"
-}
diff --git a/skins/Vector/i18n/ie.json b/skins/Vector/i18n/ie.json
deleted file mode 100644 (file)
index 259b88b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Makuba",
-                       "Renan"
-               ]
-       },
-       "vector.css": "/* CSS colocat ci va afectar usatores de pelle Vector */",
-       "vector.js": "/* Alquel JavaScript ci va esser cargat por usatores que usa li pelle Vector */",
-       "vector-action-addsection": "Adjunter tema",
-       "vector-action-delete": "Deleter",
-       "vector-action-move": "Mover",
-       "vector-action-protect": "Gardar",
-       "vector-action-undelete": "Restituer",
-       "vector-action-unprotect": "Desgardar",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Redacter",
-       "vector-view-history": "Historie de versiones",
-       "vector-view-view": "Leer",
-       "vector-view-viewsource": "Vider fonte"
-}
diff --git a/skins/Vector/i18n/ig.json b/skins/Vector/i18n/ig.json
deleted file mode 100644 (file)
index 66e93cc..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ukabia"
-               ]
-       },
-       "vector-action-addsection": "Tinyé Okwu",
-       "vector-action-delete": "Kàcha",
-       "vector-action-move": "Páfụ",
-       "vector-action-protect": "Cẹdolu",
-       "vector-action-undelete": "Á gbàkashikwà",
-       "vector-action-unprotect": "Nchẹdo mgbanwe",
-       "vector-view-create": "Ké",
-       "vector-view-edit": "Mèzi",
-       "vector-view-history": "Zí ịta",
-       "vector-view-view": "Gụ́",
-       "vector-view-viewsource": "Zi mkpurụ"
-}
diff --git a/skins/Vector/i18n/ike-latn.json b/skins/Vector/i18n/ike-latn.json
deleted file mode 100644 (file)
index ab22a4a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "vector-view-edit": "Suqusiqpaa"
-}
diff --git a/skins/Vector/i18n/ilo.json b/skins/Vector/i18n/ilo.json
deleted file mode 100644 (file)
index d83586d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lam-ang",
-                       "Saluyot"
-               ]
-       },
-       "vector-skin-desc": "Modernno a bersion ti MonoBook nga addaan iti baro a langa ken adu kadagiti naserbi a panagpasayaat",
-       "vector-action-addsection": "Agnayon ti topiko",
-       "vector-action-delete": "Ikkaten",
-       "vector-action-move": "Iyalis",
-       "vector-action-protect": "Salakniban",
-       "vector-action-undelete": "Isubli ti inikkat",
-       "vector-action-unprotect": "Sukatan ti salaknib",
-       "vector-view-create": "Agaramid",
-       "vector-view-edit": "Urnosen",
-       "vector-view-history": "Kitaen ti pakasaritaan",
-       "vector-view-view": "Basaen",
-       "vector-view-viewsource": "Kitaen ti taudan",
-       "vector-more-actions": "Adu pay"
-}
diff --git a/skins/Vector/i18n/inh.json b/skins/Vector/i18n/inh.json
deleted file mode 100644 (file)
index e50a3ec..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amire80",
-                       "Sapral Mikail"
-               ]
-       },
-       "vector-action-addsection": "БӀагал тӀатоха",
-       "vector-action-delete": "ДӀадаккха",
-       "vector-action-move": "ЦӀи хувца",
-       "vector-action-protect": "Лораде",
-       "vector-action-undelete": "Юхаоттаде",
-       "vector-action-unprotect": "Лорам хувца",
-       "vector-view-create": "Кхолларле",
-       "vector-view-edit": "Хувцам",
-       "vector-view-history": "Искар",
-       "vector-view-view": "Дешар",
-       "vector-view-viewsource": "Зембакхама бӀаргтассам"
-}
diff --git a/skins/Vector/i18n/io.json b/skins/Vector/i18n/io.json
deleted file mode 100644 (file)
index 3bfec4d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Malafaya"
-               ]
-       },
-       "vector-action-addsection": "Adjuntar topiko",
-       "vector-action-delete": "Efacar",
-       "vector-action-move": "Movar",
-       "vector-action-protect": "Protektar",
-       "vector-action-undelete": "Rekuperar",
-       "vector-action-unprotect": "Desprotektar",
-       "vector-view-create": "Krear",
-       "vector-view-edit": "Redaktar",
-       "vector-view-history": "Vidar versionaro",
-       "vector-view-view": "Lektar",
-       "vector-view-viewsource": "Vidar fonto"
-}
diff --git a/skins/Vector/i18n/is.json b/skins/Vector/i18n/is.json
deleted file mode 100644 (file)
index dc54f1b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Friðrik Bragi Dýrfjörð",
-                       "Maxí",
-                       "Snævar",
-                       "Ævar Arnfjörð Bjarmason"
-               ]
-       },
-       "vector-action-addsection": "Bæta við umræðu",
-       "vector-action-delete": "Eyða",
-       "vector-action-move": "Færa",
-       "vector-action-protect": "Vernda",
-       "vector-action-undelete": "Hætta við eyðingu",
-       "vector-action-unprotect": "Breyta verndunarstigi",
-       "vector-view-create": "Skapa",
-       "vector-view-edit": "Breyta",
-       "vector-view-history": "Breytingaskrá",
-       "vector-view-view": "Lesa",
-       "vector-view-viewsource": "Sýna frumkóða"
-}
diff --git a/skins/Vector/i18n/it.json b/skins/Vector/i18n/it.json
deleted file mode 100644 (file)
index 1598efe..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Beta16",
-                       "Darth Kule",
-                       "Gianfranco",
-                       "Melos",
-                       "Pietrodn"
-               ]
-       },
-       "vector-skin-desc": "Versione moderna del MonoBook con un'aspetto nuovo e molti miglioramenti dell'usabilità",
-       "vector.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */",
-       "vector.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */",
-       "vector-action-addsection": "Aggiungi discussione",
-       "vector-action-delete": "Cancella",
-       "vector-action-move": "Sposta",
-       "vector-action-protect": "Proteggi",
-       "vector-action-undelete": "Ripristina",
-       "vector-action-unprotect": "Cambia la protezione",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Modifica",
-       "vector-view-history": "Cronologia",
-       "vector-view-view": "Leggi",
-       "vector-view-viewsource": "Visualizza sorgente",
-       "vector-more-actions": "Altro"
-}
diff --git a/skins/Vector/i18n/izh.json b/skins/Vector/i18n/izh.json
deleted file mode 100644 (file)
index ab41111..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aig mest ei varasta"
-               ]
-       },
-       "vector-view-view": "Lukkiia"
-}
diff --git a/skins/Vector/i18n/ja.json b/skins/Vector/i18n/ja.json
deleted file mode 100644 (file)
index 7bfa57e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Fryed-peach",
-                       "Marine-Blue",
-                       "Penn Station",
-                       "Shirayuki",
-                       "Whym",
-                       "青子守歌"
-               ]
-       },
-       "skinname-vector": "ベクター",
-       "vector.css": "/* ここに記述したCSSはベクター外装の利用者に影響します */",
-       "vector.js": "/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */",
-       "vector-action-addsection": "話題追加",
-       "vector-action-delete": "削除",
-       "vector-action-move": "移動",
-       "vector-action-protect": "保護",
-       "vector-action-undelete": "復元",
-       "vector-action-unprotect": "保護再設定",
-       "vector-view-create": "作成",
-       "vector-view-edit": "編集",
-       "vector-view-history": "履歴表示",
-       "vector-view-view": "閲覧",
-       "vector-view-viewsource": "ソースを閲覧",
-       "vector-more-actions": "その他"
-}
diff --git a/skins/Vector/i18n/jam.json b/skins/Vector/i18n/jam.json
deleted file mode 100644 (file)
index cf84305..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hazard-SJ",
-                       "Yocahuna"
-               ]
-       },
-       "vector-action-addsection": "Ad tapik",
-       "vector-action-delete": "Diliit",
-       "vector-action-move": "Muuv",
-       "vector-action-protect": "Protek",
-       "vector-action-undelete": "Andiliit",
-       "vector-action-unprotect": "Neu protektian",
-       "vector-view-create": "Kriet",
-       "vector-view-edit": "Hedit",
-       "vector-view-history": "Vyuu ischri",
-       "vector-view-view": "Riid",
-       "vector-view-viewsource": "Vyuu Suos"
-}
diff --git a/skins/Vector/i18n/jbo.json b/skins/Vector/i18n/jbo.json
deleted file mode 100644 (file)
index bc1f172..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gleki"
-               ]
-       },
-       "vector-action-addsection": "jmina la'e se casnu",
-       "vector-action-delete": "vimcu",
-       "vector-action-move": "stika lo cmene",
-       "vector-action-protect": "bandu",
-       "vector-view-create": "zbasu",
-       "vector-view-edit": "stika",
-       "vector-view-history": "lo ckupau citri",
-       "vector-view-view": "tcidu",
-       "vector-view-viewsource": "cpacu lo krasi",
-       "vector-more-actions": "ji'a"
-}
diff --git a/skins/Vector/i18n/jv.json b/skins/Vector/i18n/jv.json
deleted file mode 100644 (file)
index 7af6b95..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Pras"
-               ]
-       },
-       "vector-action-addsection": "Tambah topik",
-       "vector-action-delete": "Busak",
-       "vector-action-move": "Pindhahna",
-       "vector-action-protect": "Reksa",
-       "vector-action-undelete": "Batalna pambusakan",
-       "vector-action-unprotect": "Owahi pangreksan",
-       "vector-view-create": "Gawé",
-       "vector-view-edit": "Sunting",
-       "vector-view-history": "Sajarah kaca",
-       "vector-view-view": "Waca",
-       "vector-view-viewsource": "Pirsani sumber"
-}
diff --git a/skins/Vector/i18n/ka.json b/skins/Vector/i18n/ka.json
deleted file mode 100644 (file)
index a08fe71..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Alsandro",
-                       "David1010",
-                       "გიორგიმელა"
-               ]
-       },
-       "skinname-vector": "ვექტორული",
-       "vector.css": "/* აქ ჩასმული CSS გამოყენებული იქნება ვექტორული გაფორმების თემაში */",
-       "vector-action-addsection": "თემის ჩამატება",
-       "vector-action-delete": "წაშლა",
-       "vector-action-move": "გადატანა",
-       "vector-action-protect": "დაცვა",
-       "vector-action-undelete": "აღდგენა",
-       "vector-action-unprotect": "დაცვის შეცვლა",
-       "vector-view-create": "შექმნა",
-       "vector-view-edit": "რედაქტირება",
-       "vector-view-history": "ისტორია",
-       "vector-view-view": "შემოწმებული სტატია",
-       "vector-view-viewsource": "წყაროს ხილვა",
-       "vector-more-actions": "მეტი"
-}
diff --git a/skins/Vector/i18n/kaa.json b/skins/Vector/i18n/kaa.json
deleted file mode 100644 (file)
index 1518526..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Atabek"
-               ]
-       },
-       "vector-action-addsection": "Tema qosıw",
-       "vector-action-delete": "O'shiriw",
-       "vector-action-move": "Ko'shiriw",
-       "vector-action-protect": "Qorg'aw",
-       "vector-action-undelete": "Qayta tiklew",
-       "vector-action-unprotect": "Qorg'awdı o'zgertiw",
-       "vector-view-create": "Jaratıw",
-       "vector-view-edit": "O'zgertiw",
-       "vector-view-history": "Tariyxın ko'riw",
-       "vector-view-view": "Oqıw",
-       "vector-view-viewsource": "Deregin ko'riw"
-}
diff --git a/skins/Vector/i18n/kab.json b/skins/Vector/i18n/kab.json
deleted file mode 100644 (file)
index f233083..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mmistmurt"
-               ]
-       },
-       "vector-action-addsection": "Rnud ameggay",
-       "vector-action-delete": "Mḥu",
-       "vector-action-move": "Smimeḍ",
-       "vector-action-protect": "Mmesten",
-       "vector-action-undelete": "Uɣaled",
-       "vector-action-unprotect": "Beddel amesten",
-       "vector-view-create": "Snulfu",
-       "vector-view-edit": "Ẓẓiẓreg",
-       "vector-view-history": "Ẓeṛ amazray",
-       "vector-view-view": "Ɣer",
-       "vector-view-viewsource": "Ẓer aɣbalu"
-}
diff --git a/skins/Vector/i18n/kbd-cyrl.json b/skins/Vector/i18n/kbd-cyrl.json
deleted file mode 100644 (file)
index efd893e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bogups",
-                       "Тамэ Балъкъэрхэ"
-               ]
-       },
-       "vector-action-addsection": "Теухугъуэ щӀэуэ щӀэдзэн",
-       "vector-action-delete": "Ихын",
-       "vector-action-move": "ЦӀэр хъуэжын",
-       "vector-action-protect": "Хъумэн",
-       "vector-action-undelete": "ЗыфӀэгъэувэжын",
-       "vector-action-unprotect": "Хъумэныр техыжын",
-       "vector-view-create": "ЩӀын",
-       "vector-view-edit": "Гъэтэрэзын",
-       "vector-view-history": "Тхыдэм еплъын",
-       "vector-view-view": "Еджэн",
-       "vector-view-viewsource": "КъызхэкӀам еплъын"
-}
diff --git a/skins/Vector/i18n/kg.json b/skins/Vector/i18n/kg.json
deleted file mode 100644 (file)
index f88430a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Rkupsala"
-               ]
-       },
-       "vector-action-delete": "Kufwa",
-       "vector-action-move": "Nata",
-       "vector-action-protect": "Keba",
-       "vector-view-create": "Tunga",
-       "vector-view-edit": "Soba",
-       "vector-view-history": "Tala bansoba",
-       "vector-view-view": "Tânga"
-}
diff --git a/skins/Vector/i18n/khw.json b/skins/Vector/i18n/khw.json
deleted file mode 100644 (file)
index a0ceaca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Rachitrali"
-               ]
-       },
-       "vector-action-addsection": "نوغ موضوع",
-       "vector-action-delete": "بوغاوے",
-       "vector-action-move": "منتقل کورے",
-       "vector-action-protect": "محفوظ کورے",
-       "vector-action-undelete": "اچی انگیے",
-       "vector-action-unprotect": "غیر محفوظ",
-       "vector-view-create": "ساوزاوے",
-       "vector-view-edit": "ایڈٹ کورے",
-       "vector-view-history": "تاریخچہ",
-       "vector-view-view": "راوے",
-       "vector-view-viewsource": "مسودہ"
-}
diff --git a/skins/Vector/i18n/ki.json b/skins/Vector/i18n/ki.json
deleted file mode 100644 (file)
index 30f6a5f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Stephenwanjau"
-               ]
-       },
-       "vector-action-delete": "Futa"
-}
diff --git a/skins/Vector/i18n/kiu.json b/skins/Vector/i18n/kiu.json
deleted file mode 100644 (file)
index 3d2c3cc..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mirzali"
-               ]
-       },
-       "vector-action-addsection": "Mewzu ilawe ke",
-       "vector-action-delete": "Bestere",
-       "vector-action-move": "Bere",
-       "vector-action-protect": "Bısevekne",
-       "vector-action-undelete": "Esterıtene peyser bıcê",
-       "vector-action-unprotect": "Rake",
-       "vector-view-create": "Vıraze",
-       "vector-view-edit": "Bıvurne",
-       "vector-view-history": "Tarixi basne",
-       "vector-view-view": "Bıwane",
-       "vector-view-viewsource": "Çımey bıvêne"
-}
diff --git a/skins/Vector/i18n/kk-cyrl.json b/skins/Vector/i18n/kk-cyrl.json
deleted file mode 100644 (file)
index 3593350..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arystanbek",
-                       "Daniyar",
-                       "GaiJin",
-                       "Kaztrans"
-               ]
-       },
-       "vector-action-addsection": "Тақырып қосу",
-       "vector-action-delete": "Жою",
-       "vector-action-move": "Атауын өзгерту",
-       "vector-action-protect": "Қорғау",
-       "vector-action-undelete": "Жоймау",
-       "vector-action-unprotect": "Қорғанысын өзгерту",
-       "vector-view-create": "Бастау",
-       "vector-view-edit": "Өңдеу",
-       "vector-view-history": "Өңделу тарихы",
-       "vector-view-view": "Оқу",
-       "vector-view-viewsource": "Қайнарын қарау",
-       "vector-more-actions": "Тағы"
-}
diff --git a/skins/Vector/i18n/kl.json b/skins/Vector/i18n/kl.json
deleted file mode 100644 (file)
index 6a3d7b1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iketsi",
-                       "Qaqqalik"
-               ]
-       },
-       "vector-action-addsection": "Imm. nutaaq",
-       "vector-action-move": "Nuuguk",
-       "vector-view-create": "Pilersiguk",
-       "vector-view-edit": "Aaqqissoruk",
-       "vector-view-history": "Oqalutt.",
-       "vector-view-view": "Takuuk",
-       "vector-view-viewsource": "Toqqavia takuuk"
-}
diff --git a/skins/Vector/i18n/km.json b/skins/Vector/i18n/km.json
deleted file mode 100644 (file)
index 6827117..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "គីមស៊្រុន",
-                       "វ័ណថារិទ្ធ"
-               ]
-       },
-       "skinname-vector": "វ៉ិចទ័រ​​",
-       "vector.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Vector */",
-       "vector-action-addsection": "បន្ថែម​ប្រធានបទ​",
-       "vector-action-delete": "លុបចោល",
-       "vector-action-move": "ប្តូរទីតាំង",
-       "vector-action-protect": "ការពារ",
-       "vector-action-undelete": "ឈប់លុបចោល",
-       "vector-action-unprotect": "ប្ដូរការការពារ",
-       "vector-view-create": "បង្កើត​",
-       "vector-view-edit": "កែប្រែ​",
-       "vector-view-history": "មើល​ប្រវត្តិ​",
-       "vector-view-view": "អាន",
-       "vector-view-viewsource": "មើល​កូដ"
-}
diff --git a/skins/Vector/i18n/kn.json b/skins/Vector/i18n/kn.json
deleted file mode 100644 (file)
index aae7272..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ktkaushik",
-                       "Nayvik",
-                       "VASANTH S.N."
-               ]
-       },
-       "vector-action-addsection": "ವಿಷಯ ಸೇರಿಸಿ",
-       "vector-action-delete": "ಅಳಿಸು",
-       "vector-action-move": "ಸ್ಥಳಾಂತರಿಸಿ",
-       "vector-action-protect": "ಸಂರಕ್ಷಿಸು",
-       "vector-action-undelete": "ಅಳಿಸಬೇಡ",
-       "vector-action-unprotect": "ರಕ್ಷಣೆಯನ್ನು ಬದಲಾವಣೆ",
-       "vector-view-create": "ಸೃಷ್ಟಿಸು",
-       "vector-view-edit": "ಸಂಪಾದಿಸಿ",
-       "vector-view-history": "ಇತಿಹಾಸವನ್ನು ನೋಡಿ",
-       "vector-view-view": "ಓದು",
-       "vector-view-viewsource": "ಆಕರ ವೀಕ್ಷಿಸು"
-}
diff --git a/skins/Vector/i18n/ko.json b/skins/Vector/i18n/ko.json
deleted file mode 100644 (file)
index 038f342..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "ITurtle",
-                       "Kwj2772",
-                       "아라"
-               ]
-       },
-       "skinname-vector": "벡터",
-       "vector-skin-desc": "모노북 스킨을 사용할 때 사용자 인터페이스를 향상합니다",
-       "vector.css": "/* 이 CSS 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
-       "vector.js": "/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
-       "vector-action-addsection": "새 주제",
-       "vector-action-delete": "삭제",
-       "vector-action-move": "옮기기",
-       "vector-action-protect": "보호",
-       "vector-action-undelete": "삭제 취소",
-       "vector-action-unprotect": "보호 설정 바꾸기",
-       "vector-view-create": "만들기",
-       "vector-view-edit": "편집",
-       "vector-view-history": "역사 보기",
-       "vector-view-view": "읽기",
-       "vector-view-viewsource": "원본 보기",
-       "vector-more-actions": "더 보기"
-}
diff --git a/skins/Vector/i18n/koi.json b/skins/Vector/i18n/koi.json
deleted file mode 100644 (file)
index 1753f44..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Enye Lav"
-               ]
-       },
-       "vector-action-delete": "Чышкыны",
-       "vector-view-view": "Лыддьöтны"
-}
diff --git a/skins/Vector/i18n/krc.json b/skins/Vector/i18n/krc.json
deleted file mode 100644 (file)
index cdb2f55..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iltever",
-                       "Къарачайлы"
-               ]
-       },
-       "skinname-vector": "Вектор",
-       "vector-action-addsection": "Джангы тема къош",
-       "vector-action-delete": "Кетер",
-       "vector-action-move": "Атын ауушдур",
-       "vector-action-protect": "Джакъла",
-       "vector-action-undelete": "Къайтар",
-       "vector-action-unprotect": "Джакълауну тюрлендир",
-       "vector-view-create": "Къура",
-       "vector-view-edit": "Тюрлендир",
-       "vector-view-history": "Тарихи",
-       "vector-view-view": "Окъу",
-       "vector-view-viewsource": "Кодха къара",
-       "vector-more-actions": "Энтда"
-}
diff --git a/skins/Vector/i18n/kri.json b/skins/Vector/i18n/kri.json
deleted file mode 100644 (file)
index 056a9e5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Protostar"
-               ]
-       },
-       "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"
-}
diff --git a/skins/Vector/i18n/ks-arab.json b/skins/Vector/i18n/ks-arab.json
deleted file mode 100644 (file)
index 68c34ad..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-       "vector-view-edit": "تَرتیٖب دِیُن",
-       "vector-view-view": "پَرُن"
-}
diff --git a/skins/Vector/i18n/ksh.json b/skins/Vector/i18n/ksh.json
deleted file mode 100644 (file)
index 7d91fae..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Purodha"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */",
-       "vector.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Vector\" jescheck */",
-       "vector-action-addsection": "Ne neue Afschnet onge draan!",
-       "vector-action-delete": "Fottschmiiße!",
-       "vector-action-move": "Ömnänne!",
-       "vector-action-protect": "Schöze!",
-       "vector-action-undelete": "Zerökholle!",
-       "vector-action-unprotect": "Schoz ändere!",
-       "vector-view-create": "Neu Schriive!",
-       "vector-view-edit": "Ändere!",
-       "vector-view-history": "Versione zeije!",
-       "vector-view-view": "Lesse!",
-       "vector-view-viewsource": "Wikitex aanlooere!"
-}
diff --git a/skins/Vector/i18n/ku-latn.json b/skins/Vector/i18n/ku-latn.json
deleted file mode 100644 (file)
index 90e0706..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ferhengvan",
-                       "Gomada"
-               ]
-       },
-       "vector-action-addsection": "Mijarekê lê zêde bike",
-       "vector-action-delete": "Jê bibe",
-       "vector-action-move": "Nav biguherîne",
-       "vector-action-protect": "Biparêze",
-       "vector-action-undelete": "Jê nebe",
-       "vector-action-unprotect": "Parastinê rake",
-       "vector-view-create": "Çêke",
-       "vector-view-edit": "Biguherîne",
-       "vector-view-history": "Dîrokê bibîne",
-       "vector-view-view": "Bixwîne",
-       "vector-view-viewsource": "Çavkaniyan bibîne"
-}
diff --git a/skins/Vector/i18n/kv.json b/skins/Vector/i18n/kv.json
deleted file mode 100644 (file)
index d3df069..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Comp1089"
-               ]
-       },
-       "vector-action-move": "Ним вежны",
-       "vector-view-edit": "Вежны",
-       "vector-view-view": "Лыддьыны"
-}
diff --git a/skins/Vector/i18n/kw.json b/skins/Vector/i18n/kw.json
deleted file mode 100644 (file)
index 4a2975c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kernoweger",
-                       "Kw-Moon",
-                       "Nrowe"
-               ]
-       },
-       "vector-action-addsection": "Keworra testen",
-       "vector-action-delete": "Dilea",
-       "vector-action-move": "Gwaya",
-       "vector-action-protect": "Difres",
-       "vector-action-undelete": "Disdhilea",
-       "vector-action-unprotect": "Chanjya difresans",
-       "vector-view-create": "Gwruthyl",
-       "vector-view-edit": "Chanjya",
-       "vector-view-history": "Gweles an istori",
-       "vector-view-view": "Redya",
-       "vector-view-viewsource": "Gweles an bennfenten"
-}
diff --git a/skins/Vector/i18n/ky.json b/skins/Vector/i18n/ky.json
deleted file mode 100644 (file)
index e536d9b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chorobek",
-                       "Growingup",
-                       "Ztimur",
-                       "Викиней"
-               ]
-       },
-       "vector-action-addsection": "Тема кошуу",
-       "vector-action-delete": "Өчүрүү",
-       "vector-action-move": "Аталышын өзгөртүү",
-       "vector-action-protect": "Коргоо",
-       "vector-action-undelete": "Калыбына келтирүү",
-       "vector-action-unprotect": "Коргоону өзгөртүү",
-       "vector-view-create": "Түзүү",
-       "vector-view-edit": "Оңдоо",
-       "vector-view-history": "Тарыхын кароо",
-       "vector-view-view": "Окуу",
-       "vector-view-viewsource": "Кайнарын кароо"
-}
diff --git a/skins/Vector/i18n/la.json b/skins/Vector/i18n/la.json
deleted file mode 100644 (file)
index 2cc4ad2..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "UV"
-               ]
-       },
-       "vector-action-addsection": "Partem novam addere",
-       "vector-action-delete": "Delere",
-       "vector-action-move": "Movere",
-       "vector-action-protect": "Protegere",
-       "vector-action-undelete": "Restituere",
-       "vector-action-unprotect": "Protectionem mutare",
-       "vector-view-create": "Creare",
-       "vector-view-edit": "Recensere",
-       "vector-view-history": "Historiam inspicere",
-       "vector-view-view": "Legere",
-       "vector-view-viewsource": "Fontem inspicere",
-       "vector-more-actions": "Plus"
-}
diff --git a/skins/Vector/i18n/lad.json b/skins/Vector/i18n/lad.json
deleted file mode 100644 (file)
index 729ec48..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Universal Life"
-               ]
-       },
-       "vector-action-addsection": "Ajustar sujeto",
-       "vector-action-delete": "Efassar",
-       "vector-action-move": "Taşirear",
-       "vector-action-protect": "Guadrar",
-       "vector-action-undelete": "Traer atrás",
-       "vector-action-unprotect": "Trocar proteksyon",
-       "vector-view-create": "Criar",
-       "vector-view-edit": "Trocar",
-       "vector-view-history": "Ver la istoria",
-       "vector-view-view": "Meldar",
-       "vector-view-viewsource": "Ver su manadero"
-}
diff --git a/skins/Vector/i18n/lb.json b/skins/Vector/i18n/lb.json
deleted file mode 100644 (file)
index cb26439..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Robby"
-               ]
-       },
-       "vector-skin-desc": "Modern Versioun vu Monobook mat frëschem Look a ville Verbesserunge vun der Benotzerfrëndlechkeet",
-       "vector-action-addsection": "Sujet derbäisetzen",
-       "vector-action-delete": "Läschen",
-       "vector-action-move": "Réckelen",
-       "vector-action-protect": "Spären",
-       "vector-action-undelete": "Restauréieren",
-       "vector-action-unprotect": "Spär änneren",
-       "vector-view-create": "Uleeën",
-       "vector-view-edit": "Änneren",
-       "vector-view-history": "Versioune weisen",
-       "vector-view-view": "Liesen",
-       "vector-view-viewsource": "Quellcode weisen",
-       "vector-more-actions": "Méi"
-}
diff --git a/skins/Vector/i18n/lez.json b/skins/Vector/i18n/lez.json
deleted file mode 100644 (file)
index d132626..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lezgia",
-                       "Migraghvi",
-                       "Namik",
-                       "Soul Train"
-               ]
-       },
-       "vector-action-addsection": "Тема алава авун",
-       "vector-action-delete": "Алудун",
-       "vector-action-move": "ТӀвар эхцигун",
-       "vector-action-protect": "Хуьн",
-       "vector-action-undelete": "ТуькӀуьр хъувун",
-       "vector-action-unprotect": "Хуьн дегишарун",
-       "vector-view-create": "ТуькӀуьрун",
-       "vector-view-edit": "Дуьзарин",
-       "vector-view-history": "Тарихдиз килигун",
-       "vector-view-view": "КӀелун",
-       "vector-view-viewsource": "Чешме къалурун"
-}
diff --git a/skins/Vector/i18n/lg.json b/skins/Vector/i18n/lg.json
deleted file mode 100644 (file)
index 4282900..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kizito"
-               ]
-       },
-       "vector-action-addsection": "Tandikawo emboozi endala",
-       "vector-action-delete": "Gyawo olupapula luno",
-       "vector-action-move": "Simbuliza",
-       "vector-action-protect": "Ssiba",
-       "vector-action-undelete": "Zawo",
-       "vector-action-unprotect": "Kyusa ebikugizo",
-       "vector-view-create": "Lukolewo",
-       "vector-view-edit": "Kyusa",
-       "vector-view-history": "Ennanda ya fayiro eno",
-       "vector-view-view": "Soma",
-       "vector-view-viewsource": "Kebera obulambike obw'ennono obw'olupapula luno"
-}
diff --git a/skins/Vector/i18n/li.json b/skins/Vector/i18n/li.json
deleted file mode 100644 (file)
index 8fe7e26..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ooswesthoesbes"
-               ]
-       },
-       "vector-action-addsection": "Voog köpke toe",
-       "vector-action-delete": "Ewegsjaffe",
-       "vector-action-move": "Verplaats",
-       "vector-action-protect": "Besjirm",
-       "vector-action-undelete": "Plaats trök",
-       "vector-action-unprotect": "Anger beveiliging",
-       "vector-view-create": "Maak aan",
-       "vector-view-edit": "Bewirk",
-       "vector-view-history": "Bekiek de gesjiedenis",
-       "vector-view-view": "Laes",
-       "vector-view-viewsource": "Bekiek bróntèks"
-}
diff --git a/skins/Vector/i18n/lij.json b/skins/Vector/i18n/lij.json
deleted file mode 100644 (file)
index e73547c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gastaz",
-                       "Giromin Cangiaxo"
-               ]
-       },
-       "vector-action-addsection": "Azónzi discusción",
-       "vector-action-delete": "Scancella",
-       "vector-action-move": "Mescia",
-       "vector-action-protect": "Protezi",
-       "vector-action-undelete": "Recuppera",
-       "vector-action-unprotect": "Cangia a proteçion",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Càngia",
-       "vector-view-history": "Fanni védde a Stöia",
-       "vector-view-view": "Lêzi",
-       "vector-view-viewsource": "Veddi a sorgénte"
-}
diff --git a/skins/Vector/i18n/liv.json b/skins/Vector/i18n/liv.json
deleted file mode 100644 (file)
index 68518e5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Warbola"
-               ]
-       },
-       "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õ"
-}
diff --git a/skins/Vector/i18n/lmo.json b/skins/Vector/i18n/lmo.json
deleted file mode 100644 (file)
index a5c8624..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Insübrich",
-                       "Ninonino"
-               ]
-       },
-       "vector-action-addsection": "Giunta argument",
-       "vector-action-delete": "Scancela",
-       "vector-action-move": "Sposta",
-       "vector-action-protect": "Prutegg",
-       "vector-action-undelete": "Recüpera",
-       "vector-action-unprotect": "Càmbia la protesiù",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Mudifega",
-       "vector-view-history": "Varda la storia",
-       "vector-view-view": "Legg",
-       "vector-view-viewsource": "Varda el codes",
-       "vector-more-actions": "Amò"
-}
diff --git a/skins/Vector/i18n/ln.json b/skins/Vector/i18n/ln.json
deleted file mode 100644 (file)
index 5fb4011..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Eruedin",
-                       "Moyogo"
-               ]
-       },
-       "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"
-}
diff --git a/skins/Vector/i18n/lrc.json b/skins/Vector/i18n/lrc.json
deleted file mode 100644 (file)
index 2f756b5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mogoeilor"
-               ]
-       },
-       "vector-action-addsection": "موضوع اضاف بكيد",
-       "vector-action-delete": "پاکسا کردن",
-       "vector-action-move": "جاوه جا بوئيت",
-       "vector-action-protect": "حمايت بكيد",
-       "vector-action-undelete": "حذف نبيئني",
-       "vector-action-unprotect": "حمايت آلشت بكيد",
-       "vector-view-create": "راس كردن",
-       "vector-view-edit": "ويرايشت",
-       "vector-view-history": "ديئن ويرگار",
-       "vector-view-view": "حنن",
-       "vector-view-viewsource": "سرچشمه نه بوينيت"
-}
diff --git a/skins/Vector/i18n/lt.json b/skins/Vector/i18n/lt.json
deleted file mode 100644 (file)
index 40886a8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Garas",
-                       "Homo",
-                       "Matasg",
-                       "Perkunas"
-               ]
-       },
-       "skinname-vector": "Vektorinė",
-       "vector-action-addsection": "Pridėti temą",
-       "vector-action-delete": "Ištrinti",
-       "vector-action-move": "Pervardyti",
-       "vector-action-protect": "Užrakinti",
-       "vector-action-undelete": "Atkurti",
-       "vector-action-unprotect": "Keisti apsaugą",
-       "vector-view-create": "Kurti",
-       "vector-view-edit": "Redaguoti",
-       "vector-view-history": "Istorija",
-       "vector-view-view": "Skaityti",
-       "vector-view-viewsource": "Žiūrėti kodą"
-}
diff --git a/skins/Vector/i18n/ltg.json b/skins/Vector/i18n/ltg.json
deleted file mode 100644 (file)
index d89d6df..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dark Eagle"
-               ]
-       },
-       "vector-action-addsection": "Dalikt padaļu",
-       "vector-action-delete": "Iztreit",
-       "vector-action-move": "Puorceļt",
-       "vector-action-protect": "Apsorguot",
-       "vector-action-unprotect": "Puormeit apsardzeibu",
-       "vector-view-edit": "Pataiseit",
-       "vector-view-history": "Viesture",
-       "vector-view-view": "Vērtīs"
-}
diff --git a/skins/Vector/i18n/lus.json b/skins/Vector/i18n/lus.json
deleted file mode 100644 (file)
index 4f270de..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "RMizo"
-               ]
-       },
-       "vector-action-addsection": "Thupui belhna",
-       "vector-action-delete": "Paihna",
-       "vector-action-move": "Sawnna",
-       "vector-action-protect": "Venhimna",
-       "vector-action-undelete": "Lak kir lehna",
-       "vector-action-unprotect": "Venhimna dinhmun tidanglam rawh",
-       "vector-view-create": "Siamna",
-       "vector-view-edit": "Siamţhatna",
-       "vector-view-history": "Hunhlui-chanchin",
-       "vector-view-view": "Chhiarna",
-       "vector-view-viewsource": "A hnar enna"
-}
diff --git a/skins/Vector/i18n/luz.json b/skins/Vector/i18n/luz.json
deleted file mode 100644 (file)
index 0670bfd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "علی ساکی لرستانی"
-               ]
-       },
-       "vector-view-history": "دیئن تاریخچه",
-       "vector-view-view": "هوندن"
-}
diff --git a/skins/Vector/i18n/lv.json b/skins/Vector/i18n/lv.json
deleted file mode 100644 (file)
index ccd43c5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Marozols",
-                       "Papuass"
-               ]
-       },
-       "vector-action-addsection": "Jauna sadaļa",
-       "vector-action-delete": "Dzēst",
-       "vector-action-move": "Pārvietot",
-       "vector-action-protect": "Aizsargāt",
-       "vector-action-undelete": "Atjaunot",
-       "vector-action-unprotect": "Mainīt aizsardzību",
-       "vector-view-create": "Izveidot",
-       "vector-view-edit": "Labot",
-       "vector-view-history": "Hronoloģija",
-       "vector-view-view": "Skatīt",
-       "vector-view-viewsource": "Aplūkot kodu",
-       "vector-more-actions": "Vairāk"
-}
diff --git a/skins/Vector/i18n/lzh.json b/skins/Vector/i18n/lzh.json
deleted file mode 100644 (file)
index 6b6ae38..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Justincheng12345"
-               ]
-       },
-       "skinname-vector": "動力",
-       "vector.css": "/* 此之 CSS 用於動力面之簿也 */",
-       "vector.js": "/* 此之JavaScript將載於用動力面之簿 */",
-       "vector-action-addsection": "入題",
-       "vector-action-delete": "刪",
-       "vector-action-move": "遷",
-       "vector-action-protect": "緘",
-       "vector-action-undelete": "覽刪",
-       "vector-action-unprotect": "啟",
-       "vector-view-create": "立",
-       "vector-view-edit": "纂",
-       "vector-view-history": "覽史",
-       "vector-view-view": "閱",
-       "vector-view-viewsource": "覽源"
-}
diff --git a/skins/Vector/i18n/lzz.json b/skins/Vector/i18n/lzz.json
deleted file mode 100644 (file)
index 3563816..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bombola",
-                       "Ceas08",
-                       "Erdemaslancan"
-               ]
-       },
-       "vector-action-delete": "Jili",
-       "vector-action-move": "Tori",
-       "vector-action-protect": "İçvi",
-       "vector-view-create": "dokʼidi",
-       "vector-view-edit": "Doktiri",
-       "vector-view-view": "İǩitxi"
-}
diff --git a/skins/Vector/i18n/mai.json b/skins/Vector/i18n/mai.json
deleted file mode 100644 (file)
index 068e67d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ggajendra",
-                       "Umeshberma"
-               ]
-       },
-       "skinname-vector": "सदिश",
-       "vector-action-addsection": "विचार-बिन्दु जोड़ू",
-       "vector-action-delete": "मेटाउ",
-       "vector-action-move": "घसकाउ",
-       "vector-action-protect": "रक्षण करू",
-       "vector-action-undelete": "आपस लाउ",
-       "vector-action-unprotect": "सुरक्षा बदलू",
-       "vector-view-create": "बनाउ",
-       "vector-view-edit": "सम्पादन करू",
-       "vector-view-history": "इतिहास देखू",
-       "vector-view-view": "पढ़ू",
-       "vector-view-viewsource": "जड़ि देखू"
-}
diff --git a/skins/Vector/i18n/map-bms.json b/skins/Vector/i18n/map-bms.json
deleted file mode 100644 (file)
index 1a08582..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "StefanusRA"
-               ]
-       },
-       "vector-action-addsection": "Nambah topik",
-       "vector-action-delete": "Busek",
-       "vector-action-move": "Pindah",
-       "vector-action-protect": "Reksa",
-       "vector-action-undelete": "Batalna pambusakan",
-       "vector-action-unprotect": "Owahi pangreksan",
-       "vector-view-create": "Gawe",
-       "vector-view-edit": "Sunting",
-       "vector-view-history": "Sajarah kaca",
-       "vector-view-view": "Waca",
-       "vector-view-viewsource": "Deleng sumbere"
-}
diff --git a/skins/Vector/i18n/mdf.json b/skins/Vector/i18n/mdf.json
deleted file mode 100644 (file)
index 91787fc..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Numulunj pilgae"
-               ]
-       },
-       "vector-action-addsection": "Поладомс мезень колга корхтамс",
-       "vector-action-delete": "Нардамс",
-       "vector-action-move": "Шашфтомс",
-       "vector-action-protect": "Араламс",
-       "vector-action-undelete": "Мърдафтомс",
-       "vector-action-unprotect": "Араламать полафтомс",
-       "vector-view-create": "Тиемс",
-       "vector-view-edit": "Петнемс",
-       "vector-view-history": "История няфтемс",
-       "vector-view-view": "Морафтомс",
-       "vector-view-viewsource": "Лисьма няфтемс"
-}
diff --git a/skins/Vector/i18n/mg.json b/skins/Vector/i18n/mg.json
deleted file mode 100644 (file)
index 5c51602..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Jagwar"
-               ]
-       },
-       "vector-action-addsection": "Hanampy lohahevitra",
-       "vector-action-delete": "Fafana",
-       "vector-action-move": "Hanolo anarana",
-       "vector-action-protect": "Arovy",
-       "vector-action-undelete": "Avereno",
-       "vector-action-unprotect": "Hanala ny fiarovana",
-       "vector-view-create": "Foronona",
-       "vector-view-edit": "Hanova",
-       "vector-view-history": "Hijery ny tantara",
-       "vector-view-view": "Hamaky",
-       "vector-view-viewsource": "Hijery fango"
-}
diff --git a/skins/Vector/i18n/mhr.json b/skins/Vector/i18n/mhr.json
deleted file mode 100644 (file)
index efe9d4b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Azim",
-                       "Sergey Ivanov",
-                       "Сай",
-                       "Санюн Вадик"
-               ]
-       },
-       "vector-action-addsection": "У ӱжашым тӱҥалаш",
-       "vector-action-delete": "Шӧраш",
-       "vector-action-move": "Лӱмым вашталташ",
-       "vector-action-protect": "Тӧрлатымаш деч аралаш",
-       "vector-action-undelete": "Шӧрымым пӧртылаш",
-       "vector-action-unprotect": "Оролым вашталташ",
-       "vector-view-create": "Ышташ",
-       "vector-view-edit": "Тӧрлаташ",
-       "vector-view-history": "Эртымгорным ончалаш",
-       "vector-view-view": "Лудаш",
-       "vector-view-viewsource": "Тӱҥалтыш текстым ончалаш"
-}
diff --git a/skins/Vector/i18n/mi.json b/skins/Vector/i18n/mi.json
deleted file mode 100644 (file)
index 0a59489..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Piwaiwaka"
-               ]
-       },
-       "vector-view-view": "Tirohia"
-}
diff --git a/skins/Vector/i18n/mic.json b/skins/Vector/i18n/mic.json
deleted file mode 100644 (file)
index 3079089..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amqui"
-               ]
-       },
-       "vector-action-move": "Ejigliwsit",
-       "vector-view-create": "Etlitoq",
-       "vector-view-view": "Egiljet"
-}
diff --git a/skins/Vector/i18n/min.json b/skins/Vector/i18n/min.json
deleted file mode 100644 (file)
index bf5a735..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iwan Novirion",
-                       "Luthfi94",
-                       "VoteITP"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-action-addsection": "Bagian baru",
-       "vector-action-delete": "Hapuih",
-       "vector-action-move": "Pindahkan",
-       "vector-action-protect": "Linduangkan",
-       "vector-action-undelete": "Pambatalan pangapuihan",
-       "vector-action-unprotect": "Tuka palinduangan",
-       "vector-view-create": "Buek",
-       "vector-view-edit": "Suntiang",
-       "vector-view-history": "Riwayaik",
-       "vector-view-view": "Baco",
-       "vector-view-viewsource": "Caliak sumber"
-}
diff --git a/skins/Vector/i18n/mk.json b/skins/Vector/i18n/mk.json
deleted file mode 100644 (file)
index 1f883ae..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bjankuloski06",
-                       "Brest"
-               ]
-       },
-       "skinname-vector": "Векторско",
-       "vector-skin-desc": "Современа верзија на рувото МоноБук со свеж изглед и многу подобрувања на употребливоста",
-       "vector.css": "/* Тука поставениот CSS се однесува на корисниците на рувото „Векторско“ */",
-       "vector.js": "/* Тука поставениот JavaScript  ќе им се вчитува на корисниците што го користат рувото „Векторско“ */",
-       "vector-action-addsection": "Додај тема",
-       "vector-action-delete": "Избриши",
-       "vector-action-move": "Премести",
-       "vector-action-protect": "Заштити",
-       "vector-action-undelete": "Врати",
-       "vector-action-unprotect": "Измени заштита",
-       "vector-view-create": "Создај",
-       "vector-view-edit": "Уреди",
-       "vector-view-history": "Историја",
-       "vector-view-view": "Читај",
-       "vector-view-viewsource": "Извор",
-       "vector-more-actions": "Повеќе"
-}
diff --git a/skins/Vector/i18n/ml.json b/skins/Vector/i18n/ml.json
deleted file mode 100644 (file)
index 6ca34a1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Anoopan",
-                       "Praveenp"
-               ]
-       },
-       "skinname-vector": "വെക്റ്റർ",
-       "vector.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. വെക്റ്റർ ദൃശ്യരൂപത്തിനു ബാധകമായിരിക്കും*/",
-       "vector.js": "/*ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് വെക്റ്റർ ദൃശ്യരൂപം ഉപയോഗിക്കുന്ന ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും*/",
-       "vector-action-addsection": "വിഷയം ചേർക്കുക",
-       "vector-action-delete": "മായ്ക്കുക",
-       "vector-action-move": "തലക്കെട്ട് മാറ്റുക",
-       "vector-action-protect": "സം‌രക്ഷിക്കുക",
-       "vector-action-undelete": "മായ്ക്കപ്പെട്ടത് പുനഃസ്ഥാപിക്കുക",
-       "vector-action-unprotect": "സംരക്ഷണത്തിൽ മാറ്റംവരുത്തുക",
-       "vector-view-create": "സൃഷ്ടിക്കുക",
-       "vector-view-edit": "തിരുത്തുക",
-       "vector-view-history": "നാൾവഴി കാണുക",
-       "vector-view-view": "വായിക്കുക",
-       "vector-view-viewsource": "മൂലരൂപം കാണുക",
-       "vector-more-actions": "കൂടുതൽ"
-}
diff --git a/skins/Vector/i18n/mn.json b/skins/Vector/i18n/mn.json
deleted file mode 100644 (file)
index ceeafaf..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chinneeb",
-                       "MongolWiki",
-                       "Wisdom"
-               ]
-       },
-       "vector-action-addsection": "Сэдэв нэмэх",
-       "vector-action-delete": "Устгах",
-       "vector-action-move": "Зөөх",
-       "vector-action-protect": "Хамгаалах",
-       "vector-action-undelete": "Үл устгах",
-       "vector-action-unprotect": "Хамгаалалтаа солих",
-       "vector-view-create": "Үүсгэх",
-       "vector-view-edit": "Засварлах",
-       "vector-view-history": "Түүх",
-       "vector-view-view": "Унших",
-       "vector-view-viewsource": "Кодыг харах"
-}
diff --git a/skins/Vector/i18n/mnc.json b/skins/Vector/i18n/mnc.json
deleted file mode 100644 (file)
index 60434d5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Minggantu"
-               ]
-       },
-       "vector-action-delete": "Dabgire",
-       "vector-action-move": "Guribure",
-       "vector-action-protect": "Karmara",
-       "vector-view-create": "Ilibure",
-       "vector-view-edit": "banjibume arara",
-       "vector-view-history": "ere šu wen i suduri be baicara",
-       "vector-view-view": "hūlara",
-       "vector-view-viewsource": "da šu wen be baicara"
-}
diff --git a/skins/Vector/i18n/mr.json b/skins/Vector/i18n/mr.json
deleted file mode 100644 (file)
index ab7e322..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kaajawa",
-                       "V.narsikar"
-               ]
-       },
-       "skinname-vector": "सदिश",
-       "vector-action-addsection": "विषय जोडा",
-       "vector-action-delete": "वगळा",
-       "vector-action-move": "स्थानांतरण",
-       "vector-action-protect": "सुरक्षित करा",
-       "vector-action-undelete": "वगळलेले पुनर्स्थापित करा",
-       "vector-action-unprotect": "सुरक्षितता बदला",
-       "vector-view-create": "तयार करा",
-       "vector-view-edit": "संपादन",
-       "vector-view-history": "इतिहास पहा",
-       "vector-view-view": "वाचा",
-       "vector-view-viewsource": "स्रोत पहा",
-       "vector-more-actions": "अधिक"
-}
diff --git a/skins/Vector/i18n/mrj.json b/skins/Vector/i18n/mrj.json
deleted file mode 100644 (file)
index 72b93b4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amdf"
-               ]
-       },
-       "vector-action-delete": "Карангдаш",
-       "vector-action-move": "Лӹмӹм вашталташ",
-       "vector-action-protect": "Ӹшӹклӓш",
-       "vector-view-create": "Ӹштӓш",
-       "vector-view-edit": "Тӧрлӹмӓш",
-       "vector-view-history": "Историм анжымаш",
-       "vector-view-view": "Лыдмаш",
-       "vector-view-viewsource": "Сек пӹтӓриш кодым анжалаш"
-}
diff --git a/skins/Vector/i18n/ms.json b/skins/Vector/i18n/ms.json
deleted file mode 100644 (file)
index 73c8e05..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Anakmalaysia",
-                       "Aurora",
-                       "Pizza1016"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Versi MonoBook yang moden dengan rupa yang segar dan banyak pembaikan kepada kegunaan.",
-       "vector.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */",
-       "vector.js": "/ * Sebarang JavaScript di sini akan dimuatkan untuk pengguna-pengguna yang menggunakan kulit Vector * /",
-       "vector-action-addsection": "Buka topik",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindah",
-       "vector-action-protect": "Lindung",
-       "vector-action-undelete": "Nyahhapus",
-       "vector-action-unprotect": "Ubah perlindungan",
-       "vector-view-create": "Cipta",
-       "vector-view-edit": "Sunting",
-       "vector-view-history": "Lihat sejarah",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Lihat sumber",
-       "vector-more-actions": "Lain"
-}
diff --git a/skins/Vector/i18n/mt.json b/skins/Vector/i18n/mt.json
deleted file mode 100644 (file)
index 3fab17f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chrisportelli",
-                       "Leli Forte"
-               ]
-       },
-       "vector-action-addsection": "Żid diskussjoni",
-       "vector-action-delete": "Ħassar",
-       "vector-action-move": "Mexxi",
-       "vector-action-protect": "Ipproteġi",
-       "vector-action-undelete": "Irkupra",
-       "vector-action-unprotect": "Biddel il-protezzjoni",
-       "vector-view-create": "Oħloq",
-       "vector-view-edit": "Editja",
-       "vector-view-history": "Ara l-kronoloġija",
-       "vector-view-view": "Aqra",
-       "vector-view-viewsource": "Ara s-sors",
-       "vector-more-actions": "Aktar"
-}
diff --git a/skins/Vector/i18n/mui.json b/skins/Vector/i18n/mui.json
deleted file mode 100644 (file)
index 173eda0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mahali syarifuddin"
-               ]
-       },
-       "vector-view-view": "Baco",
-       "vector-view-viewsource": "Jingok sumber"
-}
diff --git a/skins/Vector/i18n/my.json b/skins/Vector/i18n/my.json
deleted file mode 100644 (file)
index 5cc7802..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lionslayer",
-                       "Myanmars"
-               ]
-       },
-       "vector-action-addsection": "အကြောင်းအရာအသစ် ထပ်ထည့်ရန်",
-       "vector-action-delete": "ဖျက်​ပါ​",
-       "vector-action-move": "ရွှေ့ပါ",
-       "vector-action-protect": "ထိမ်း​သိမ်း​ပါ​",
-       "vector-action-undelete": "မဖျက်တော့ရန်",
-       "vector-action-unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
-       "vector-view-create": "စတင်ရေးသားရန်",
-       "vector-view-edit": "ပြင်ရန်",
-       "vector-view-history": "ရာဇဝင်ကြည့်ရန်",
-       "vector-view-view": "ဖတ်ရန်",
-       "vector-view-viewsource": "ရင်းမြစ်ကို ကြည့်ရန်"
-}
diff --git a/skins/Vector/i18n/myv.json b/skins/Vector/i18n/myv.json
deleted file mode 100644 (file)
index 723d5dd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Botuzhaleny-sodamo"
-               ]
-       },
-       "vector-action-addsection": "Поладомс мезде кортамс",
-       "vector-action-delete": "Нардамс",
-       "vector-action-move": "Печтевтемс",
-       "vector-action-protect": "Аравтомс ванстомас",
-       "vector-action-undelete": "Вельмевтемс нардазенть",
-       "vector-action-unprotect": "Полавтомс ванстоманзо",
-       "vector-view-create": "Теемс-Шкамс",
-       "vector-view-edit": "Витнемс-петнемс",
-       "vector-view-history": "Ваномс юронзо-путовксонзо",
-       "vector-view-view": "Ловномс",
-       "vector-view-viewsource": "Ваномс косто саезь"
-}
diff --git a/skins/Vector/i18n/mzn.json b/skins/Vector/i18n/mzn.json
deleted file mode 100644 (file)
index cf18634..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mjbmr",
-                       "محک"
-               ]
-       },
-       "vector-action-addsection": "ترنه گپ بزوئن",
-       "vector-action-delete": "پاک هاکردن",
-       "vector-action-move": "دکش هاکردن",
-       "vector-action-protect": "زلفن بزوئن",
-       "vector-action-undelete": "دباره بنویشته بیّن",
-       "vector-action-unprotect": "زلفن عوض هاکردن",
-       "vector-view-create": "بساتن",
-       "vector-view-edit": "دچی‌ین",
-       "vector-view-history": "تاریخچه ره بَدی‌ین",
-       "vector-view-view": "بخوندستن",
-       "vector-view-viewsource": "ونه منبع ره هارشائن"
-}
diff --git a/skins/Vector/i18n/nah.json b/skins/Vector/i18n/nah.json
deleted file mode 100644 (file)
index adf8c21..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ricardo gs"
-               ]
-       },
-       "vector-action-delete": "Ticpolōz",
-       "vector-action-move": "Ticzacāz",
-       "vector-action-protect": "Ticquīxtīz",
-       "vector-view-create": "Ticchīhuāz",
-       "vector-view-edit": "Ticpatlāz",
-       "vector-view-history": "Tlahcuilōlli tlahcuilōlloh",
-       "vector-view-view": "Tāmapōhuaz",
-       "vector-view-viewsource": "Tiquittāz in mēyalli"
-}
diff --git a/skins/Vector/i18n/nan.json b/skins/Vector/i18n/nan.json
deleted file mode 100644 (file)
index f1b9045..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ianbu"
-               ]
-       },
-       "vector-action-addsection": "Ke chi̍t-ê toān-lo̍h",
-       "vector-action-delete": "Thâi",
-       "vector-action-move": "Sóa khì",
-       "vector-action-protect": "Pó-hō·",
-       "vector-action-undelete": "chhú-siau thâi tiàu",
-       "vector-action-unprotect": "kái pó-hō·",
-       "vector-view-create": "Khai-sí siá",
-       "vector-view-edit": "Siu-kái",
-       "vector-view-history": "khoàⁿ le̍k-sú",
-       "vector-view-view": "Tha̍k",
-       "vector-view-viewsource": "Khoàⁿ goân-sú lōe-iông",
-       "vector-more-actions": "閣看"
-}
diff --git a/skins/Vector/i18n/nap.json b/skins/Vector/i18n/nap.json
deleted file mode 100644 (file)
index 862f197..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chelin"
-               ]
-       },
-       "vector-action-addsection": "Aggiunge chiacchierata",
-       "vector-action-delete": "Scancèlla",
-       "vector-action-move": "Spusta",
-       "vector-action-protect": "Prutegge",
-       "vector-action-undelete": "Ripristina",
-       "vector-action-unprotect": "Càgna prutezzione",
-       "vector-view-create": "Cria",
-       "vector-view-edit": "Càgna",
-       "vector-view-history": "Vere cronologgia",
-       "vector-view-view": "Legge",
-       "vector-view-viewsource": "Vere sorgente"
-}
diff --git a/skins/Vector/i18n/nb.json b/skins/Vector/i18n/nb.json
deleted file mode 100644 (file)
index 0ef82e0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Danmichaelo",
-                       "Event",
-                       "Nghtwlkr"
-               ]
-       },
-       "vector-skin-desc": "Moderne versjon av MonoBook med et friskt utseende og mange bruksforbedringer",
-       "vector-action-addsection": "Nytt emne",
-       "vector-action-delete": "Slett",
-       "vector-action-move": "Flytt",
-       "vector-action-protect": "Beskytt",
-       "vector-action-undelete": "Gjenopprett",
-       "vector-action-unprotect": "Endre beskyttelse",
-       "vector-view-create": "Opprett",
-       "vector-view-edit": "Rediger",
-       "vector-view-history": "Vis historikk",
-       "vector-view-view": "Les",
-       "vector-view-viewsource": "Vis kilden",
-       "vector-more-actions": "Mer"
-}
diff --git a/skins/Vector/i18n/nds-nl.json b/skins/Vector/i18n/nds-nl.json
deleted file mode 100644 (file)
index be846db..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Servien"
-               ]
-       },
-       "vector-action-addsection": "Niej onderwarp",
-       "vector-action-delete": "Vortdoon",
-       "vector-action-move": "Herneumen",
-       "vector-action-protect": "Beveiligen",
-       "vector-action-undelete": "Weerummeplaotsen",
-       "vector-action-unprotect": "Beveiliging wiezigen",
-       "vector-view-create": "Anmaken",
-       "vector-view-edit": "Bewarken",
-       "vector-view-history": "Geschiedenisse bekieken",
-       "vector-view-view": "Lezen",
-       "vector-view-viewsource": "Brontekste bekieken",
-       "vector-more-actions": "Meer"
-}
diff --git a/skins/Vector/i18n/nds.json b/skins/Vector/i18n/nds.json
deleted file mode 100644 (file)
index 99145b0..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Slomox",
-                       "Zylbath"
-               ]
-       },
-       "vector-action-addsection": "Thema tofögen",
-       "vector-action-delete": "Wegdoon",
-       "vector-action-move": "Schuven",
-       "vector-action-protect": "Schulen",
-       "vector-action-undelete": "Wedderhalen",
-       "vector-action-unprotect": "Siedenschuul ännern",
-       "vector-view-create": "Opstellen",
-       "vector-view-edit": "Ännern",
-       "vector-view-history": "Historie bekieken",
-       "vector-view-view": "Lesen",
-       "vector-view-viewsource": "Borntext bekieken"
-}
diff --git a/skins/Vector/i18n/ne.json b/skins/Vector/i18n/ne.json
deleted file mode 100644 (file)
index 443becb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Bhawani Gautam",
-                       "RajeshPandey",
-                       "सरोज कुमार ढकाल"
-               ]
-       },
-       "skinname-vector": "भेक्टर",
-       "vector.css": "/* यहाँ राखिएको CSS ले भेक्टर स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ  */",
-       "vector-action-addsection": "विषय थप्नुहोस",
-       "vector-action-delete": "हटाउने",
-       "vector-action-move": "सार्ने",
-       "vector-action-protect": "सुरक्षित गर्ने",
-       "vector-action-undelete": "हटाएको रद्द गर्ने",
-       "vector-action-unprotect": "सुरक्षा परिवर्तन गर्ने",
-       "vector-view-create": "सृजना गर्ने",
-       "vector-view-edit": "सम्पादन",
-       "vector-view-history": "इतिहास हेर्ने",
-       "vector-view-view": "पढ्ने",
-       "vector-view-viewsource": "स्रोत हेर्ने"
-}
diff --git a/skins/Vector/i18n/new.json b/skins/Vector/i18n/new.json
deleted file mode 100644 (file)
index f972066..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Eukesh"
-               ]
-       },
-       "vector-action-move": "संकादिसँ",
-       "vector-view-create": "दयेकादिसँ",
-       "vector-view-edit": "सम्पादन",
-       "vector-view-history": "इतिहास स्वयादिसँ",
-       "vector-view-view": "ब्वनादिसँ"
-}
diff --git a/skins/Vector/i18n/nl.json b/skins/Vector/i18n/nl.json
deleted file mode 100644 (file)
index 07c18d9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Calak",
-                       "Romaine",
-                       "SPQRobin",
-                       "Siebrand",
-                       "Troefkaart",
-                       "Sjoerddebruin"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Moderne versie van MonoBook met een fris uiterlijk en verbeteringen op het gebied van gebruiksvriendelijkheid",
-       "vector.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */",
-       "vector.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */",
-       "vector-action-addsection": "Kopje toevoegen",
-       "vector-action-delete": "Verwijderen",
-       "vector-action-move": "Hernoemen",
-       "vector-action-protect": "Beveiligen",
-       "vector-action-undelete": "Terugplaatsen",
-       "vector-action-unprotect": "Beveiliging wijzigen",
-       "vector-view-create": "Aanmaken",
-       "vector-view-edit": "Bewerken",
-       "vector-view-history": "Geschiedenis weergeven",
-       "vector-view-view": "Lezen",
-       "vector-view-viewsource": "Brontekst bekijken",
-       "vector-more-actions": "Meer"
-}
diff --git a/skins/Vector/i18n/nn.json b/skins/Vector/i18n/nn.json
deleted file mode 100644 (file)
index 6fd99f1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gunnernett",
-                       "Njardarlogar"
-               ]
-       },
-       "vector-action-addsection": "Nytt emne",
-       "vector-action-delete": "Slett",
-       "vector-action-move": "Flytt",
-       "vector-action-protect": "Vern",
-       "vector-action-undelete": "Gjenopprett",
-       "vector-action-unprotect": "Endra vern",
-       "vector-view-create": "Opprett",
-       "vector-view-edit": "Endre",
-       "vector-view-history": "Sjå historikken",
-       "vector-view-view": "Les",
-       "vector-view-viewsource": "Sjå kjelda",
-       "vector-more-actions": "Meir"
-}
diff --git a/skins/Vector/i18n/nov.json b/skins/Vector/i18n/nov.json
deleted file mode 100644 (file)
index 66ad923..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Malafaya"
-               ]
-       },
-       "vector-action-delete": "Ekarta",
-       "vector-view-edit": "Modifika",
-       "vector-view-view": "Lekte"
-}
diff --git a/skins/Vector/i18n/nrm.json b/skins/Vector/i18n/nrm.json
deleted file mode 100644 (file)
index 4c332f2..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "WikiEoFrEn"
-               ]
-       },
-       "vector-view-create": "Criyaer",
-       "vector-view-edit": "Amendaer",
-       "vector-view-view": "Luure"
-}
diff --git a/skins/Vector/i18n/nso.json b/skins/Vector/i18n/nso.json
deleted file mode 100644 (file)
index ea729e7..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mohau"
-               ]
-       },
-       "vector-action-addsection": "Lokela sererwa",
-       "vector-action-delete": "Phumula",
-       "vector-action-move": "Huduša",
-       "vector-action-protect": "Lota",
-       "vector-view-create": "Hlola",
-       "vector-view-edit": "Fetola",
-       "vector-view-history": "Laetša histori",
-       "vector-view-view": "Bala",
-       "vector-view-viewsource": "Lebelela mothopo"
-}
diff --git a/skins/Vector/i18n/oc.json b/skins/Vector/i18n/oc.json
deleted file mode 100644 (file)
index 2aa517e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Boulaur",
-                       "Cedric31"
-               ]
-       },
-       "vector.css": "/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Vector */",
-       "vector.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Vector unicament. */",
-       "vector-action-addsection": "Apondre un subjècte",
-       "vector-action-delete": "Suprimir",
-       "vector-action-move": "Tornar nomenar",
-       "vector-action-protect": "Protegir",
-       "vector-action-undelete": "Restablir",
-       "vector-action-unprotect": "Suprimir la proteccion",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Modificar",
-       "vector-view-history": "Veire l'istoric",
-       "vector-view-view": "Legir",
-       "vector-view-viewsource": "Veire la font"
-}
diff --git a/skins/Vector/i18n/or.json b/skins/Vector/i18n/or.json
deleted file mode 100644 (file)
index 289cc3c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Jnanaranjan Sahu",
-                       "Psubhashish"
-               ]
-       },
-       "vector-action-addsection": "ନୂଆ ଯୋଡ଼ନ୍ତୁ",
-       "vector-action-delete": "ଲିଭାଇବେ",
-       "vector-action-move": "ଘୁଞ୍ଚାଇବେ",
-       "vector-action-protect": "କିଳିବେ",
-       "vector-action-undelete": "ଲିଭାଇବେ ନାହିଁ",
-       "vector-action-unprotect": "କିଳିବେ ନାହିଁ",
-       "vector-view-create": "ତିଆରି କରନ୍ତୁ",
-       "vector-view-edit": "ସମ୍ପାଦନା (Edit)",
-       "vector-view-history": "ଇତିହାସ",
-       "vector-view-view": "ପଢ଼ନ୍ତୁ",
-       "vector-view-viewsource": "ସୋର୍ସ ଦେଖନ୍ତୁ"
-}
diff --git a/skins/Vector/i18n/os.json b/skins/Vector/i18n/os.json
deleted file mode 100644 (file)
index a178289..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Amikeco",
-                       "Bouron"
-               ]
-       },
-       "vector-action-addsection": "Нæуæг ныхас бакæнын",
-       "vector-action-delete": "Схафын",
-       "vector-action-move": "Ном ивын",
-       "vector-action-protect": "Сæхгæнын",
-       "vector-action-undelete": "Рацаразын",
-       "vector-action-unprotect": "Ивын хъахъхъæд",
-       "vector-view-create": "Скæнын",
-       "vector-view-edit": "Ивын",
-       "vector-view-history": "Истори",
-       "vector-view-view": "Кæсын",
-       "vector-view-viewsource": "Код кæсын"
-}
diff --git a/skins/Vector/i18n/pa.json b/skins/Vector/i18n/pa.json
deleted file mode 100644 (file)
index 5f15399..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Aalam",
-                       "Babanwalia",
-                       "Raj Singh",
-                       "TariButtar"
-               ]
-       },
-       "vector-action-addsection": "ਵਿਸ਼ਾ ਜੋੜੋ",
-       "vector-action-delete": "ਹਟਾਓ",
-       "vector-action-move": "ਭੇਜੋ",
-       "vector-action-protect": "ਸੁਰੱਖਿਆ",
-       "vector-action-undelete": "ਹਟਾਉਣਾ-ਵਾਪਸ",
-       "vector-action-unprotect": "ਸੁਰੱਖਿਆ ਬਦਲੋ",
-       "vector-view-create": "ਬਣਾਓ",
-       "vector-view-edit": "ਸੋਧੋ",
-       "vector-view-history": "ਅਤੀਤ ਵੇਖੋ",
-       "vector-view-view": "ਪੜ੍ਹੋ",
-       "vector-view-viewsource": "ਸਰੋਤ ਵੇਖੋ"
-}
diff --git a/skins/Vector/i18n/pam.json b/skins/Vector/i18n/pam.json
deleted file mode 100644 (file)
index 09afda5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Katimawan2005",
-                       "Val2397"
-               ]
-       },
-       "vector-action-addsection": "Dagdagan ing pisasabian",
-       "vector-action-delete": "Buran",
-       "vector-action-move": "Iyalis",
-       "vector-action-protect": "Protectan/kambilan",
-       "vector-action-undelete": "Isubli/iurung ya pangabura",
-       "vector-action-unprotect": "Idayu ya panga-protecta",
-       "vector-view-create": "Maglalang",
-       "vector-view-edit": "Alilan",
-       "vector-view-history": "Lawen ya ing amlat",
-       "vector-view-view": "Basan",
-       "vector-view-viewsource": "Lawen ya ing pikuanan"
-}
diff --git a/skins/Vector/i18n/pbb.json b/skins/Vector/i18n/pbb.json
deleted file mode 100644 (file)
index 9ddeada..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sahaquiel9102"
-               ]
-       },
-       "vector-action-delete": "Cjũcj",
-       "vector-action-move": "Quẽese'j",
-       "vector-action-protect": "Pjupj",
-       "vector-view-edit": "Yu'ptjej",
-       "vector-view-view": "Lẽeĩ"
-}
diff --git a/skins/Vector/i18n/pcd.json b/skins/Vector/i18n/pcd.json
deleted file mode 100644 (file)
index 57af67e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Geoleplubo"
-               ]
-       },
-       "vector-action-addsection": "Rajouter un sujeut",
-       "vector-action-delete": "Défacer",
-       "vector-action-move": "Canger ch'nom",
-       "vector-action-protect": "Garantir",
-       "vector-action-undelete": "N'poin défacher",
-       "vector-action-unprotect": "Canger l'garantie",
-       "vector-view-create": "Créer",
-       "vector-view-edit": "Éditer",
-       "vector-view-history": "Vir l'histoère",
-       "vector-view-view": "Lire",
-       "vector-view-viewsource": "Vir l'source"
-}
diff --git a/skins/Vector/i18n/pdc.json b/skins/Vector/i18n/pdc.json
deleted file mode 100644 (file)
index a3903b2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Xqt"
-               ]
-       },
-       "vector-action-delete": "Verwische",
-       "vector-action-move": "Ziehe",
-       "vector-action-protect": "Schitze",
-       "vector-view-create": "Schtaerte",
-       "vector-view-edit": "Ennere",
-       "vector-view-history": "Gschicht zeige",
-       "vector-view-view": "Lese"
-}
diff --git a/skins/Vector/i18n/pfl.json b/skins/Vector/i18n/pfl.json
deleted file mode 100644 (file)
index 419eb4e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Manuae"
-               ]
-       },
-       "vector-action-addsection": "Abschnidd dzufiesche",
-       "vector-action-delete": "Lesche",
-       "vector-action-move": "Vaschiewe",
-       "vector-action-protect": "Schidze",
-       "vector-action-undelete": "Zriggbringe",
-       "vector-view-create": "Õleesche",
-       "vector-view-edit": "Drõ schaffe",
-       "vector-view-history": "Dadaigschischd",
-       "vector-view-view": "Lese",
-       "vector-view-viewsource": "Gwelltegschd zaische"
-}
diff --git a/skins/Vector/i18n/pi.json b/skins/Vector/i18n/pi.json
deleted file mode 100644 (file)
index cc57f67..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hemant wikikosh1"
-               ]
-       },
-       "vector-view-create": "रचेतु"
-}
diff --git a/skins/Vector/i18n/pih.json b/skins/Vector/i18n/pih.json
deleted file mode 100644 (file)
index 81fb2fc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AmaryllisGardener"
-               ]
-       },
-       "vector-view-history": "View histrei"
-}
diff --git a/skins/Vector/i18n/pl.json b/skins/Vector/i18n/pl.json
deleted file mode 100644 (file)
index 5cf2082..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Matma Rex",
-                       "Sp5uhe"
-               ]
-       },
-       "skinname-vector": "Wektor",
-       "vector-skin-desc": "Odświeżona wersja skórki Książka, z nowym wyglądem i usprawnieniami",
-       "vector.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */",
-       "vector.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */",
-       "vector-action-addsection": "Dodaj temat",
-       "vector-action-delete": "Usuń",
-       "vector-action-move": "Przenieś",
-       "vector-action-protect": "Zabezpiecz",
-       "vector-action-undelete": "Odtwórz",
-       "vector-action-unprotect": "Zmień zabezpieczenie",
-       "vector-view-create": "Utwórz",
-       "vector-view-edit": "Edytuj",
-       "vector-view-history": "Wyświetl historię",
-       "vector-view-view": "Czytaj",
-       "vector-view-viewsource": "Tekst źródłowy",
-       "vector-more-actions": "Więcej"
-}
diff --git a/skins/Vector/i18n/pms.json b/skins/Vector/i18n/pms.json
deleted file mode 100644 (file)
index 79627b0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Borichèt"
-               ]
-       },
-       "vector-action-addsection": "Gionté n'argoment",
-       "vector-action-delete": "Scancelé",
-       "vector-action-move": "Tramudé",
-       "vector-action-protect": "Protege",
-       "vector-action-undelete": "Arcuperé",
-       "vector-action-unprotect": "Cangé la protession",
-       "vector-view-create": "Creé",
-       "vector-view-edit": "Modifiché",
-       "vector-view-history": "Smon-e la stòria",
-       "vector-view-view": "Lese",
-       "vector-view-viewsource": "Vëdde la sorgiss"
-}
diff --git a/skins/Vector/i18n/pnb.json b/skins/Vector/i18n/pnb.json
deleted file mode 100644 (file)
index 601f513..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arslan",
-                       "Khalid Mahmood"
-               ]
-       },
-       "vector-action-addsection": "مضمون پاؤ",
-       "vector-action-delete": "مکاؤ",
-       "vector-action-move": "ٹرو",
-       "vector-action-protect": "بچاؤ",
-       "vector-action-undelete": "واپس لیاؤ",
-       "vector-action-unprotect": "تبدیلی بچاؤ",
-       "vector-view-create": "بناؤ",
-       "vector-view-edit": "لکھو",
-       "vector-view-history": "تریخ وکھاؤ",
-       "vector-view-view": "پڑھو",
-       "vector-view-viewsource": "ویکھو"
-}
diff --git a/skins/Vector/i18n/pnt.json b/skins/Vector/i18n/pnt.json
deleted file mode 100644 (file)
index 1e5ecad..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Omnipaedista",
-                       "Sinopeus",
-                       "ZaDiak"
-               ]
-       },
-       "vector-action-delete": "Σβήσον",
-       "vector-action-move": "Ετεροχλάεμαν",
-       "vector-action-protect": "Ασπάλιγμαν",
-       "vector-action-undelete": "Κλώσιμον",
-       "vector-action-unprotect": "Άνοιγμαν",
-       "vector-view-create": "Ποίσον",
-       "vector-view-edit": "Άλλαξον",
-       "vector-view-history": "Τερέστεν ιστορίαν",
-       "vector-view-view": "Δεάβασον",
-       "vector-view-viewsource": "Τερέστεν κωδικόν"
-}
diff --git a/skins/Vector/i18n/ppl.json b/skins/Vector/i18n/ppl.json
deleted file mode 100644 (file)
index 1c80fd8..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "A R King"
-               ]
-       },
-       "vector-action-addsection": "Yankwik temaj",
-       "vector-action-delete": "Shikishti",
-       "vector-action-move": "Shikijkwani",
-       "vector-action-undelete": "Shalkwepa",
-       "vector-view-create": "Shikchiwa",
-       "vector-view-edit": "Shikpata",
-       "vector-view-history": "Ken mupatak",
-       "vector-view-view": "Shiamatachia",
-       "vector-view-viewsource": "Shikita ne codigoj"
-}
diff --git a/skins/Vector/i18n/prg.json b/skins/Vector/i18n/prg.json
deleted file mode 100644 (file)
index dfd71db..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Nertiks",
-                       "Peteris"
-               ]
-       },
-       "vector-action-delete": "Āupausinais",
-       "vector-action-move": "Prapīdais",
-       "vector-action-protect": "Kūnsteis",
-       "vector-action-unprotect": "Etkūnteis",
-       "vector-view-create": "Teīkeis",
-       "vector-view-edit": "Redigīs",
-       "vector-view-history": "Enwaidinnais istōrijan",
-       "vector-view-view": "Skaitāis",
-       "vector-view-viewsource": "Enwaidinnais appun"
-}
diff --git a/skins/Vector/i18n/ps.json b/skins/Vector/i18n/ps.json
deleted file mode 100644 (file)
index 2ccb265..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ahmed-Najib-Biabani-Ibrahimkhel"
-               ]
-       },
-       "skinname-vector": "وېکټور",
-       "vector.css": "/* د CSS هره بڼه چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
-       "vector.js": "/* د جاوا هر يو سکرېپټ چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
-       "vector-action-addsection": "سرليکونه ورگډول",
-       "vector-action-delete": "ړنگول",
-       "vector-action-move": "لېږدول",
-       "vector-action-protect": "ژغورل",
-       "vector-action-undelete": "ناړنگول",
-       "vector-action-unprotect": "ژغورنه بدلول",
-       "vector-view-create": "جوړول",
-       "vector-view-edit": "سمول",
-       "vector-view-history": "پېښليک کتل",
-       "vector-view-view": "لوستل",
-       "vector-view-viewsource": "سرچينه کتل"
-}
diff --git a/skins/Vector/i18n/pt-br.json b/skins/Vector/i18n/pt-br.json
deleted file mode 100644 (file)
index db47675..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Cainamarques",
-                       "Diego Queiroz",
-                       "Giro720",
-                       "Helder.wiki",
-                       555
-               ]
-       },
-       "vector.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */",
-       "vector-action-addsection": "Adicionar tópico",
-       "vector-action-delete": "Eliminar",
-       "vector-action-move": "Mover",
-       "vector-action-protect": "Proteger",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Alterar a proteção",
-       "vector-view-create": "Criar",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver histórico",
-       "vector-view-view": "Ler",
-       "vector-view-viewsource": "Ver código-fonte",
-       "vector-more-actions": "Mais"
-}
diff --git a/skins/Vector/i18n/pt.json b/skins/Vector/i18n/pt.json
deleted file mode 100644 (file)
index 9882289..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Crazymadlover",
-                       "Giro720",
-                       "Hamilton Abreu",
-                       "Malafaya",
-                       "Vitorvicentevalente",
-                       "Waldir"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Versão moderna do MonoBook com um visual fresco e várias melhorias de usabilidade",
-       "vector.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Vector */",
-       "vector.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */",
-       "vector-action-addsection": "Adicionar&nbsp;tópico",
-       "vector-action-delete": "Eliminar",
-       "vector-action-move": "Mover",
-       "vector-action-protect": "Proteger",
-       "vector-action-undelete": "Restaurar",
-       "vector-action-unprotect": "Alterar protecção",
-       "vector-view-create": "Criar",
-       "vector-view-edit": "Editar",
-       "vector-view-history": "Ver histórico",
-       "vector-view-view": "Ler",
-       "vector-view-viewsource": "Ver fonte",
-       "vector-more-actions": "Mais"
-}
diff --git a/skins/Vector/i18n/qqq.json b/skins/Vector/i18n/qqq.json
deleted file mode 100644 (file)
index fea395b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Darth Kule",
-                       "EugeneZelenko",
-                       "Lloffiwr",
-                       "Shirayuki",
-                       "Umherirrender",
-                       "Matma Rex"
-               ]
-       },
-       "skinname-vector": "{{optional}}",
-       "vector-skin-desc": "{{desc|what=skin|name=Vector|url=https://www.mediawiki.org/wiki/Skin:Vector}}",
-       "vector.css": "{{optional}}",
-       "vector.js": "{{optional}}",
-       "vector-action-addsection": "Used in the Vector skin. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}",
-       "vector-action-delete": "Used in the Vector skin, as the name of a tab at the top of the page. See for example {{canonicalurl:Main_Page|useskin=vector}}\n\n{{Identical|Delete}}",
-       "vector-action-move": "Used in the Vector skin, on the tabs at the top of the page. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}\n\n{{Identical|Move}}",
-       "vector-action-protect": "Tab at top of page, in vector skin\n\n{{Identical|Protect}}",
-       "vector-action-undelete": "Tab at top of page, in vector skin.\n{{Identical|Undelete}}",
-       "vector-action-unprotect": "Tab at top of page, in vector skin.\n{{Identical|Change protection}}",
-       "vector-view-create": "Tab label in the Vector skin. See for example {{canonicalurl:Foo|useskin=vector}}\n{{Identical|Create}}",
-       "vector-view-edit": "Tab label in the Vector skin. See for example {{canonicalurl:Main_Page|useskin=vector}}\n{{Identical|Edit}}",
-       "vector-view-history": "Tab label in the Vector skin. See for example {{canonicalurl:Main_Page|useskin=vector}}\n{{Identical|View history}}",
-       "vector-view-view": "Tab label in the Vector skin (verb). See for example {{canonicalurl:Main_Page|useskin=vector}}.\n{{Identical|Read}}",
-       "vector-view-viewsource": "Tab label in the Vector skin.\n{{Identical|View source}}",
-       "vector-more-actions": "Label in the Vector skin's menu for the less-important or rarer actions which are not shown as tabs (like moving the page, or for sysops deleting or protecting the page), as well as (for users with a narrow viewing window in their browser) the less-important tab actions which the user's browser is unable to fit in. {{Identical|More}}"
-}
diff --git a/skins/Vector/i18n/qu.json b/skins/Vector/i18n/qu.json
deleted file mode 100644 (file)
index 789fd27..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AlimanRuna"
-               ]
-       },
-       "vector-action-addsection": "Allwiyta yapay",
-       "vector-action-delete": "Qulluy",
-       "vector-action-move": "Astay",
-       "vector-action-protect": "Amachay",
-       "vector-action-undelete": "Qullusqata paqarichiy",
-       "vector-action-unprotect": "Amachayta wakinchay",
-       "vector-view-create": "Kamariy",
-       "vector-view-edit": "Llamk'apuy",
-       "vector-view-history": "Wiñay kawsayta qhaway",
-       "vector-view-view": "Ñawiriy",
-       "vector-view-viewsource": "Pukyu qillqata qhaway",
-       "vector-more-actions": "Aswan"
-}
diff --git a/skins/Vector/i18n/qug.json b/skins/Vector/i18n/qug.json
deleted file mode 100644 (file)
index 306f4ae..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sylvain2803"
-               ]
-       },
-       "vector-action-addsection": "Shuk mushuk rimanakuyta kallarina",
-       "vector-action-delete": "Pichana",
-       "vector-action-move": "Apakuna",
-       "vector-action-protect": "Harkana",
-       "vector-action-undelete": "Kutin wacharichina",
-       "vector-action-unprotect": "Harkayta shukchina",
-       "vector-view-create": "Kamarina",
-       "vector-view-edit": "Killkana",
-       "vector-view-history": "Wiñay kawsayta rikuna",
-       "vector-view-view": "Killkakatina",
-       "vector-view-viewsource": "Pukyu killkata rikuna"
-}
diff --git a/skins/Vector/i18n/rap.json b/skins/Vector/i18n/rap.json
deleted file mode 100644 (file)
index b1f644c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Clerc",
-                       "MJohnsson"
-               ]
-       },
-       "vector-action-delete": "horo'i",
-       "vector-view-edit": "Haka titika"
-}
diff --git a/skins/Vector/i18n/rgn.json b/skins/Vector/i18n/rgn.json
deleted file mode 100644 (file)
index 784b8c5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "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"
-}
diff --git a/skins/Vector/i18n/rif.json b/skins/Vector/i18n/rif.json
deleted file mode 100644 (file)
index 44de1de..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "MoubarikBelkasim"
-               ]
-       },
-       "vector-action-move": "Smuṭṭi",
-       "vector-view-create": "Seɣnu",
-       "vector-view-edit": "Ẓṛeg",
-       "vector-view-history": "Ẓeṛ amezruy",
-       "vector-view-view": "Ɣeṛ"
-}
diff --git a/skins/Vector/i18n/rm.json b/skins/Vector/i18n/rm.json
deleted file mode 100644 (file)
index 83ce427..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gion-andri"
-               ]
-       },
-       "vector-action-addsection": "Agiuntar chapitel",
-       "vector-action-delete": "Stizzar",
-       "vector-action-move": "Spustar",
-       "vector-action-protect": "Bloccar",
-       "vector-action-undelete": "Restituir",
-       "vector-action-unprotect": "Midar la protecziun",
-       "vector-view-create": "Crear",
-       "vector-view-edit": "Modifitgar",
-       "vector-view-history": "Cronologia",
-       "vector-view-view": "Leger",
-       "vector-view-viewsource": "Mussar il code"
-}
diff --git a/skins/Vector/i18n/rmf.json b/skins/Vector/i18n/rmf.json
deleted file mode 100644 (file)
index 9865a50..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Szonja"
-               ]
-       },
-       "vector-action-addsection": "Tilja topikos",
-       "vector-action-delete": "Tšuu nikki",
-       "vector-action-undelete": "Tšuu paale",
-       "vector-view-create": "Luona",
-       "vector-view-edit": "Muoka",
-       "vector-view-history": "Sik histores",
-       "vector-view-view": "Draba",
-       "vector-view-viewsource": "Sik navasiinako koodos"
-}
diff --git a/skins/Vector/i18n/ro.json b/skins/Vector/i18n/ro.json
deleted file mode 100644 (file)
index 96725c0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AdiJapan",
-                       "Danutz",
-                       "Firilacroco",
-                       "Minisarm",
-                       "Strainu"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* CSS plasate aici vor afecta utilizatorii stilului Vector */",
-       "vector-action-addsection": "Mesaj nou",
-       "vector-action-delete": "Ștergere",
-       "vector-action-move": "Redenumire",
-       "vector-action-protect": "Protejare",
-       "vector-action-undelete": "Recuperare",
-       "vector-action-unprotect": "Modificare protecție",
-       "vector-view-create": "Creare",
-       "vector-view-edit": "Modificare",
-       "vector-view-history": "Istoric",
-       "vector-view-view": "Lectură",
-       "vector-view-viewsource": "Sursă pagină",
-       "vector-more-actions": "Mai mult"
-}
diff --git a/skins/Vector/i18n/roa-tara.json b/skins/Vector/i18n/roa-tara.json
deleted file mode 100644 (file)
index c5721e7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Joetaras"
-               ]
-       },
-       "skinname-vector": "Vettore",
-       "vector.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Vettore */",
-       "vector.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere Vettore */",
-       "vector-action-addsection": "Aggiunge 'na discussiona",
-       "vector-action-delete": "Scangille",
-       "vector-action-move": "Spuèste",
-       "vector-action-protect": "Protegge",
-       "vector-action-undelete": "Repristine",
-       "vector-action-unprotect": "Cange 'a protezione",
-       "vector-view-create": "Ccreje",
-       "vector-view-edit": "Cange",
-       "vector-view-history": "Vide 'u cunde",
-       "vector-view-view": "Ligge",
-       "vector-view-viewsource": "Vide 'u sorgende"
-}
diff --git a/skins/Vector/i18n/ru.json b/skins/Vector/i18n/ru.json
deleted file mode 100644 (file)
index cd344b9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ignatus",
-                       "JenVan",
-                       "Kaganer",
-                       "Nemo bis",
-                       "Okras",
-                       "Александр Сигачёв"
-               ]
-       },
-       "skinname-vector": "Векторное",
-       "vector-skin-desc": "Современная версия MonoBook с обновлённым оформлением и многими улучшениями в юзабилити",
-       "vector.css": "/* Размещённый здесь CSS будет применяться к векторной теме оформления  */",
-       "vector.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Vector */",
-       "vector-action-addsection": "Добавить тему",
-       "vector-action-delete": "Удалить",
-       "vector-action-move": "Переименовать",
-       "vector-action-protect": "Защитить",
-       "vector-action-undelete": "Восстановить",
-       "vector-action-unprotect": "Изменить защиту",
-       "vector-view-create": "Создание",
-       "vector-view-edit": "Править",
-       "vector-view-history": "История",
-       "vector-view-view": "Читать",
-       "vector-view-viewsource": "Просмотр разметки",
-       "vector-more-actions": "Ещё"
-}
diff --git a/skins/Vector/i18n/rue.json b/skins/Vector/i18n/rue.json
deleted file mode 100644 (file)
index 2147f80..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gazeb"
-               ]
-       },
-       "vector-action-addsection": "Придати тему",
-       "vector-action-delete": "Вымазати",
-       "vector-action-move": "Переменовати",
-       "vector-action-protect": "Всокотити",
-       "vector-action-undelete": "Обновити",
-       "vector-action-unprotect": "Змінити замок",
-       "vector-view-create": "Створити",
-       "vector-view-edit": "Едітовати",
-       "vector-view-history": "Видїти історію",
-       "vector-view-view": "Чітати",
-       "vector-view-viewsource": "Видїти код"
-}
diff --git a/skins/Vector/i18n/rup.json b/skins/Vector/i18n/rup.json
deleted file mode 100644 (file)
index 3b0ba68..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "D'AroemenenZullenNiVergaan"
-               ]
-       },
-       "vector-action-addsection": "Dimândari nauâ",
-       "vector-view-history": "Veḑ istoricu"
-}
diff --git a/skins/Vector/i18n/rw.json b/skins/Vector/i18n/rw.json
deleted file mode 100644 (file)
index d151c2d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Vogone"
-               ]
-       },
-       "vector-action-move": "Imura",
-       "vector-view-edit": "Hindura",
-       "vector-view-history": "Reba amateka",
-       "vector-view-view": "Soma"
-}
diff --git a/skins/Vector/i18n/ryu.json b/skins/Vector/i18n/ryu.json
deleted file mode 100644 (file)
index ee1d2c1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kyoww"
-               ]
-       },
-       "vector-view-edit": "直すん",
-       "vector-view-view": "読むん"
-}
diff --git a/skins/Vector/i18n/sa.json b/skins/Vector/i18n/sa.json
deleted file mode 100644 (file)
index 610ba3e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "NehalDaveND",
-                       "Shubha"
-               ]
-       },
-       "vector-action-addsection": "विषयः योज्यताम्",
-       "vector-action-delete": "अपाक्रियताम्",
-       "vector-action-move": "शीर्षकं परिवर्त्यताम्",
-       "vector-action-protect": "संरक्ष्यताम्",
-       "vector-action-undelete": "नापाकृतं",
-       "vector-action-unprotect": "संरक्षणं परिवर्तयतु",
-       "vector-view-create": "सृज्यताम्",
-       "vector-view-edit": "सम्पाद्यताम्",
-       "vector-view-history": "इतिहासः दृश्यताम्",
-       "vector-view-view": "पठ्यताम्",
-       "vector-view-viewsource": "स्रोतः दृश्यताम्"
-}
diff --git a/skins/Vector/i18n/sah.json b/skins/Vector/i18n/sah.json
deleted file mode 100644 (file)
index 9d44db5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "HalanTul"
-               ]
-       },
-       "vector-action-addsection": "Тиэмэ эбии",
-       "vector-action-delete": "Сот",
-       "vector-action-move": "Аатын уларыт",
-       "vector-action-protect": "Уларыйбат гын",
-       "vector-action-undelete": "Төннөр",
-       "vector-action-unprotect": "Көмүскэлин уларыт",
-       "vector-view-create": "Ай",
-       "vector-view-edit": "Уларыт",
-       "vector-view-history": "Устуоруйатын көрүү",
-       "vector-view-view": "Ааҕыы",
-       "vector-view-viewsource": "Бэлиэлэрин көрүү"
-}
diff --git a/skins/Vector/i18n/sat.json b/skins/Vector/i18n/sat.json
deleted file mode 100644 (file)
index d079721..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Albinus",
-                       "Samar88",
-                       "Srabony90"
-               ]
-       },
-       "vector-action-addsection": "Asol katha joṛaome",
-       "vector-action-delete": "Giḍi",
-       "vector-action-move": "Ocoḱ́me",
-       "vector-action-protect": "Bańcao",
-       "vector-action-undelete": "Bań getgiḍi",
-       "vector-action-unprotect": "Bodol rukhiyạ",
-       "vector-view-create": "Tearme",
-       "vector-view-edit": "So̠mpado̠n",
-       "vector-view-history": "Jạṛ ńelme",
-       "vector-view-view": "Paṛhaḱme",
-       "vector-view-viewsource": "Ńamoḱaḱ ńelme"
-}
diff --git a/skins/Vector/i18n/saz.json b/skins/Vector/i18n/saz.json
deleted file mode 100644 (file)
index a3a6ded..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "MooRePrabu"
-               ]
-       },
-       "vector-view-view": "ꢗꢾꢮ꣄ꢣꢶ"
-}
diff --git a/skins/Vector/i18n/sc.json b/skins/Vector/i18n/sc.json
deleted file mode 100644 (file)
index e7876a6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Andria",
-                       "Marzedu",
-                       "Via maxima"
-               ]
-       },
-       "vector-action-addsection": "Giunghe cuntierra",
-       "vector-action-delete": "Cantzella",
-       "vector-action-move": "Move",
-       "vector-action-protect": "Ampara",
-       "vector-action-undelete": "Recùpera",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Acontza",
-       "vector-view-history": "Càstia istòria",
-       "vector-view-view": "Leghe",
-       "vector-view-viewsource": "Càstia mitza",
-       "vector-more-actions": "Prus"
-}
diff --git a/skins/Vector/i18n/scn.json b/skins/Vector/i18n/scn.json
deleted file mode 100644 (file)
index a9483c4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gmelfi",
-                       "Melos"
-               ]
-       },
-       "vector-action-addsection": "Agghiunci argumentu",
-       "vector-action-delete": "Elìmina",
-       "vector-action-move": "Sposta",
-       "vector-action-protect": "Pruteggi",
-       "vector-action-undelete": "Riprìstina",
-       "vector-action-unprotect": "Cancia la prutizzioni",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Cancia",
-       "vector-view-history": "Talìa a storia",
-       "vector-view-view": "Leggi",
-       "vector-view-viewsource": "Talìa la fonti",
-       "vector-more-actions": "Àutri cosi"
-}
diff --git a/skins/Vector/i18n/sco.json b/skins/Vector/i18n/sco.json
deleted file mode 100644 (file)
index acf5387..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Avicennasis",
-                       "John Reid",
-                       "Omnipaedista"
-               ]
-       },
-       "vector-action-addsection": "Eik topic",
-       "vector-action-delete": "Delyte",
-       "vector-action-move": "Muiv",
-       "vector-action-protect": "Fend",
-       "vector-action-undelete": "Ondelyte",
-       "vector-action-unprotect": "Chynge protection",
-       "vector-view-create": "Ceaut",
-       "vector-view-edit": "Eedit",
-       "vector-view-history": "See histerie",
-       "vector-view-view": "Read",
-       "vector-view-viewsource": "See Soorce"
-}
diff --git a/skins/Vector/i18n/sd.json b/skins/Vector/i18n/sd.json
deleted file mode 100644 (file)
index 04a5370..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "vector-action-delete": "ڊاھيو",
-       "vector-action-move": "چوريو",
-       "vector-action-protect": "تحفظيو",
-       "vector-action-unprotect": "اڻتحفظيو",
-       "vector-view-create": "سرجيو",
-       "vector-view-edit": "سنواريو",
-       "vector-view-viewsource": "ڪوڊ ڏسو"
-}
diff --git a/skins/Vector/i18n/sdc.json b/skins/Vector/i18n/sdc.json
deleted file mode 100644 (file)
index c843931..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Felis",
-                       "Jun Misugi"
-               ]
-       },
-       "vector-action-addsection": "Aggiungì oggettu",
-       "vector-action-delete": "Canzella",
-       "vector-action-move": "Ippustha",
-       "vector-action-protect": "Pruteggì",
-       "vector-view-create": "Cria",
-       "vector-view-edit": "Mudifigga",
-       "vector-view-history": "Vèdi isthòria",
-       "vector-view-view": "Leggi",
-       "vector-view-viewsource": "Vèdi fonti"
-}
diff --git a/skins/Vector/i18n/sdh.json b/skins/Vector/i18n/sdh.json
deleted file mode 100644 (file)
index 2f4523f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Paraw2"
-               ]
-       },
-       "vector-action-addsection": "بابەت تازە بدە سەری",
-       "vector-action-delete": "بسڕەوە",
-       "vector-action-move": "جیوەجی بکە",
-       "vector-action-protect": "بپیەرێزەێ",
-       "vector-view-create": "درسکردن",
-       "vector-view-edit": "وێراشتەێ بکە",
-       "vector-view-history": "دیرۆکەگەی بۊن",
-       "vector-view-view": "بخوەنە",
-       "vector-view-viewsource": "سەرچاوەگەێ بۊن"
-}
diff --git a/skins/Vector/i18n/se.json b/skins/Vector/i18n/se.json
deleted file mode 100644 (file)
index bb0a900..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Gálaniitoluodda",
-                       "Jeblad",
-                       "Trondtr"
-               ]
-       },
-       "vector-action-addsection": "Lasit fáttá",
-       "vector-action-delete": "Sihko",
-       "vector-action-move": "Sirdde",
-       "vector-action-protect": "Suodjal",
-       "vector-action-undelete": "Máhcat",
-       "vector-action-unprotect": "Rievdat suodjaleami",
-       "vector-view-create": "Álggat",
-       "vector-view-edit": "Rievdat",
-       "vector-view-history": "Geahča historjjá",
-       "vector-view-view": "Loga",
-       "vector-view-viewsource": "Geahča gáldokoda"
-}
diff --git a/skins/Vector/i18n/sg.json b/skins/Vector/i18n/sg.json
deleted file mode 100644 (file)
index 2f65834..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mdkidiri"
-               ]
-       },
-       "vector-action-addsection": "Zîa mbênî lilö daä",
-       "vector-action-delete": "Lungûla",
-       "vector-action-move": "Sanzêe ïrï",
-       "vector-action-protect": "Funga",
-       "vector-action-undelete": "Kîri na nî",
-       "vector-action-unprotect": "Sanzêe fungä",
-       "vector-view-create": "Seka",
-       "vector-view-edit": "Sepe",
-       "vector-view-history": "Tanda mbai nî",
-       "vector-view-view": "Dîko",
-       "vector-view-viewsource": "Fa ligbî nî"
-}
diff --git a/skins/Vector/i18n/sgs.json b/skins/Vector/i18n/sgs.json
deleted file mode 100644 (file)
index 7b2591c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hugo.arg"
-               ]
-       },
-       "vector-action-addsection": "Pridietė tema",
-       "vector-action-delete": "Trintė",
-       "vector-action-move": "Parvadintė",
-       "vector-action-protect": "Ožrakintė",
-       "vector-action-undelete": "Atkortė",
-       "vector-action-unprotect": "Keistė apsauga",
-       "vector-view-create": "Sokortė",
-       "vector-view-edit": "Taisītė",
-       "vector-view-history": "Veizietė istuorėjė",
-       "vector-view-view": "Skaitītė",
-       "vector-view-viewsource": "Veizietė kuoda"
-}
diff --git a/skins/Vector/i18n/sh.json b/skins/Vector/i18n/sh.json
deleted file mode 100644 (file)
index 21e6153..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "OC Ripper"
-               ]
-       },
-       "vector-action-addsection": "Dodaj temu",
-       "vector-action-delete": "Brisanje",
-       "vector-action-move": "Preusmjeri",
-       "vector-action-protect": "Zaštiti",
-       "vector-action-undelete": "Vrati obrisano",
-       "vector-action-unprotect": "Promijeni zaštitu",
-       "vector-view-create": "Napravi",
-       "vector-view-edit": "Uredi",
-       "vector-view-history": "Pregled historije",
-       "vector-view-view": "Čitaj",
-       "vector-view-viewsource": "Vidi izvor (source)"
-}
diff --git a/skins/Vector/i18n/shi.json b/skins/Vector/i18n/shi.json
deleted file mode 100644 (file)
index 10f48d8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dalinanir"
-               ]
-       },
-       "vector-action-addsection": "Zayd amli",
-       "vector-action-delete": "Ḥiyd",
-       "vector-action-move": "Smmatti",
-       "vector-action-protect": "Ḥbu",
-       "vector-action-undelete": "Rard may mayḥiydn",
-       "vector-action-unprotect": "Ḥiyd aḥbu",
-       "vector-view-create": "Skert",
-       "vector-view-edit": "Ara",
-       "vector-view-history": "Mel amzruy",
-       "vector-view-view": "ɣr",
-       "vector-view-viewsource": "Ẓr asagm"
-}
diff --git a/skins/Vector/i18n/shn.json b/skins/Vector/i18n/shn.json
deleted file mode 100644 (file)
index c2cea6a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Saiddzone"
-               ]
-       },
-       "vector-action-protect": "ႁေႉၵင်ႈ",
-       "vector-view-create": "သၢင်ႈ",
-       "vector-view-edit": "မူၼ်ႉမႄး",
-       "vector-view-history": "တူၺ်းပိုၼ်း",
-       "vector-view-view": "လူတူၺ်း",
-       "vector-view-viewsource": "တူၺ်း ငဝ်ႈငႃႇ"
-}
diff --git a/skins/Vector/i18n/si.json b/skins/Vector/i18n/si.json
deleted file mode 100644 (file)
index 640874f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Thushara",
-                       "දසනැබළයෝ",
-                       "පසිඳු කාවින්ද",
-                       "සුරනිමල"
-               ]
-       },
-       "vector-action-addsection": "මාතෘකාව එක්කරන්න",
-       "vector-action-delete": "මකන්න",
-       "vector-action-move": "ගෙනයන්න",
-       "vector-action-protect": "ආරක්‍ෂණය",
-       "vector-action-undelete": "මකාදැමීම අවලංගු කරන්න",
-       "vector-action-unprotect": "ආරක්ෂණ තත්වය වෙනස් කරන්න",
-       "vector-view-create": "තනන්න",
-       "vector-view-edit": "සංස්කරණය",
-       "vector-view-history": "ඉතිහාසය නරඹන්න",
-       "vector-view-view": "කියවන්න",
-       "vector-view-viewsource": "මූලාශ්‍රය නරඹන්න",
-       "vector-more-actions": "තවත්"
-}
diff --git a/skins/Vector/i18n/sk.json b/skins/Vector/i18n/sk.json
deleted file mode 100644 (file)
index 06bf290..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Helix84",
-                       "Rudko",
-                       "Sudo77(new)"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Vector */",
-       "vector.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Vector */",
-       "vector-action-addsection": "Pridať tému",
-       "vector-action-delete": "Zmazať",
-       "vector-action-move": "Presunúť",
-       "vector-action-protect": "Zamknúť",
-       "vector-action-undelete": "Obnoviť",
-       "vector-action-unprotect": "Zmeniť stav ochrany",
-       "vector-view-create": "Vytvoriť",
-       "vector-view-edit": "Upraviť",
-       "vector-view-history": "Zobraziť históriu",
-       "vector-view-view": "Čítať",
-       "vector-view-viewsource": "Zobraziť zdroj",
-       "vector-more-actions": "Viac"
-}
diff --git a/skins/Vector/i18n/sl.json b/skins/Vector/i18n/sl.json
deleted file mode 100644 (file)
index cfacc3f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dbc334",
-                       "Smihael",
-                       "Yerpo"
-               ]
-       },
-       "vector-skin-desc": "Sodobna različica MonoBook s svežim videzom in mnogimi izboljšavami uporabnosti",
-       "vector-action-addsection": "Dodaj temo",
-       "vector-action-delete": "Izbriši",
-       "vector-action-move": "Prestavi",
-       "vector-action-protect": "Zaščiti",
-       "vector-action-undelete": "Vrni",
-       "vector-action-unprotect": "Spremeni zaščito",
-       "vector-view-create": "Ustvari",
-       "vector-view-edit": "Uredi",
-       "vector-view-history": "Zgodovina",
-       "vector-view-view": "Preberi",
-       "vector-view-viewsource": "Izvorno besedilo",
-       "vector-more-actions": "Več"
-}
diff --git a/skins/Vector/i18n/sli.json b/skins/Vector/i18n/sli.json
deleted file mode 100644 (file)
index e394c5e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Przemub",
-                       "Schläsinger",
-                       "Timpul",
-                       "Äberlausitzer"
-               ]
-       },
-       "vector-action-addsection": "Obschnitt hinzufiega",
-       "vector-action-delete": "Läscha",
-       "vector-action-move": "Verschieba",
-       "vector-action-protect": "Schützen",
-       "vector-action-undelete": "Wiederherstella",
-       "vector-action-unprotect": "Freigahn",
-       "vector-view-create": "Erstella",
-       "vector-view-edit": "Bearbeita",
-       "vector-view-history": "Versionsgeschichte",
-       "vector-view-view": "Lessa",
-       "vector-view-viewsource": "Quelltext siehn"
-}
diff --git a/skins/Vector/i18n/sly.json b/skins/Vector/i18n/sly.json
deleted file mode 100644 (file)
index deb6741..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "ZQheert"
-               ]
-       },
-       "vector-action-delete": "Lelei",
-       "vector-action-move": "Palettei",
-       "vector-view-create": "Bua'",
-       "vector-view-edit": "edi'",
-       "vector-view-view": "Bacai",
-       "vector-view-viewsource": "Tilingi assala'na"
-}
diff --git a/skins/Vector/i18n/so.json b/skins/Vector/i18n/so.json
deleted file mode 100644 (file)
index 1362fd8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Maax"
-               ]
-       },
-       "vector-action-addsection": "Hadal ku dar",
-       "vector-action-delete": "Tirtir",
-       "vector-action-move": "Wareeji",
-       "vector-action-protect": "Difaac",
-       "vector-action-undelete": "Ha tirtirin",
-       "vector-action-unprotect": "Bedel difaacida",
-       "vector-view-create": "Sameey",
-       "vector-view-edit": "Wax ka bedel",
-       "vector-view-history": "Itusi taariikhda",
-       "vector-view-view": "Akhri",
-       "vector-view-viewsource": "Itusi xogta"
-}
diff --git a/skins/Vector/i18n/sq.json b/skins/Vector/i18n/sq.json
deleted file mode 100644 (file)
index fcc3434..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Dasius",
-                       "GretaDoci",
-                       "MicroBoy",
-                       "Mikullovci11",
-                       "Olsi"
-               ]
-       },
-       "vector-action-addsection": "Shto një temë",
-       "vector-action-delete": "Grise",
-       "vector-action-move": "Zhvendose",
-       "vector-action-protect": "Mbroje",
-       "vector-action-undelete": "Anullo fshirjen",
-       "vector-action-unprotect": "Ndrysho mbrojtjen",
-       "vector-view-create": "Krijo",
-       "vector-view-edit": "Redakto",
-       "vector-view-history": "Shiko historikun",
-       "vector-view-view": "Lexo",
-       "vector-view-viewsource": "Shiko tekstin",
-       "vector-more-actions": "Më tepër..."
-}
diff --git a/skins/Vector/i18n/sr-ec.json b/skins/Vector/i18n/sr-ec.json
deleted file mode 100644 (file)
index e33b69c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Milicevic01",
-                       "Rancher",
-                       "Жељко Тодоровић",
-                       "Михајло Анђелковић"
-               ]
-       },
-       "skinname-vector": "Векторско",
-       "vector.css": "/* CSS постављен овде ће утицати на све кориснике теме „Векторско“ */",
-       "vector.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Векторско“ */",
-       "vector-action-addsection": "Додај тему",
-       "vector-action-delete": "Обриши",
-       "vector-action-move": "Премести",
-       "vector-action-protect": "Заштити",
-       "vector-action-undelete": "Врати",
-       "vector-action-unprotect": "Промени заштиту",
-       "vector-view-create": "Направи",
-       "vector-view-edit": "Уреди",
-       "vector-view-history": "Историја",
-       "vector-view-view": "Читај",
-       "vector-view-viewsource": "Изворни код",
-       "vector-more-actions": "Више"
-}
diff --git a/skins/Vector/i18n/sr-el.json b/skins/Vector/i18n/sr-el.json
deleted file mode 100644 (file)
index 38f17ad..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Michaello",
-                       "Milicevic01",
-                       "Rancher",
-                       "Жељко Тодоровић"
-               ]
-       },
-       "skinname-vector": "Vektorsko",
-       "vector.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Vektorsko“ */",
-       "vector.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Vektorsko“ */",
-       "vector-action-addsection": "Dodaj temu",
-       "vector-action-delete": "Obriši",
-       "vector-action-move": "Premesti",
-       "vector-action-protect": "Zaštiti",
-       "vector-action-undelete": "Vrati",
-       "vector-action-unprotect": "Promeni zaštitu",
-       "vector-view-create": "Napravi",
-       "vector-view-edit": "Uredi",
-       "vector-view-history": "Istorija",
-       "vector-view-view": "Čitaj",
-       "vector-view-viewsource": "Izvorni kod",
-       "vector-more-actions": "Više"
-}
diff --git a/skins/Vector/i18n/ss.json b/skins/Vector/i18n/ss.json
deleted file mode 100644 (file)
index 44a5edf..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Sibande"
-               ]
-       },
-       "vector-action-addsection": "Ngeta sihloko",
-       "vector-action-move": "Khweshisa",
-       "vector-view-create": "Create",
-       "vector-view-edit": "Hlela",
-       "vector-view-history": "Bona umlandvo",
-       "vector-view-view": "Fundza"
-}
diff --git a/skins/Vector/i18n/stq.json b/skins/Vector/i18n/stq.json
deleted file mode 100644 (file)
index 1e2da5a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Pyt"
-               ]
-       },
-       "vector-action-addsection": "Ousnit bietouföigje",
-       "vector-action-delete": "Läskje",
-       "vector-action-move": "Ferskuuwe",
-       "vector-action-protect": "Skutsje",
-       "vector-action-undelete": "Wierhäärstaale",
-       "vector-action-unprotect": "Siedenskuts annerje",
-       "vector-view-create": "Moakje",
-       "vector-view-edit": "Beoarbaidje",
-       "vector-view-history": "Versionsgeskichte",
-       "vector-view-view": "Leese",
-       "vector-view-viewsource": "Wältext bekiekje"
-}
diff --git a/skins/Vector/i18n/su.json b/skins/Vector/i18n/su.json
deleted file mode 100644 (file)
index d8a780a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kandar"
-               ]
-       },
-       "vector-action-addsection": "Jieun jejer anyar",
-       "vector-action-delete": "Hapus",
-       "vector-action-move": "Pindahkeun",
-       "vector-action-protect": "Konci",
-       "vector-action-undelete": "Bolaykeun ngahapus",
-       "vector-action-unprotect": "Robah protéksi",
-       "vector-view-create": "Jieun",
-       "vector-view-edit": "Édit",
-       "vector-view-history": "Témbongkeun jujutan",
-       "vector-view-view": "Baca",
-       "vector-view-viewsource": "Témbongkeun sumber"
-}
diff --git a/skins/Vector/i18n/sv.json b/skins/Vector/i18n/sv.json
deleted file mode 100644 (file)
index 930bbce..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Martinwiss",
-                       "Najami",
-                       "Skalman",
-                       "WikiPhoenix",
-                       "Lokal Profil"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-skin-desc": "Modern version av MonoBook med ett nytt utseende och flera användarvänlighetsförbättringar",
-       "vector.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Vector */",
-       "vector.js": "/* JavaScript här kommer att laddas för dem som använder skalet Vector */",
-       "vector-action-addsection": "Nytt ämne",
-       "vector-action-delete": "Radera",
-       "vector-action-move": "Flytta",
-       "vector-action-protect": "Skrivskydda",
-       "vector-action-undelete": "Återställ",
-       "vector-action-unprotect": "Ändra skydd",
-       "vector-view-create": "Skapa",
-       "vector-view-edit": "Redigera",
-       "vector-view-history": "Visa historik",
-       "vector-view-view": "Visa",
-       "vector-view-viewsource": "Visa källa",
-       "vector-more-actions": "Mer"
-}
diff --git a/skins/Vector/i18n/sw.json b/skins/Vector/i18n/sw.json
deleted file mode 100644 (file)
index cb511ba..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Lloffiwr",
-                       "Muddyb Blast Producer"
-               ]
-       },
-       "vector-action-addsection": "Weka mada",
-       "vector-action-delete": "Futa",
-       "vector-action-move": "Hamisha",
-       "vector-action-protect": "Linda",
-       "vector-action-undelete": "Rudisha",
-       "vector-action-unprotect": "Badilisha ulinzi",
-       "vector-view-create": "Anzisha",
-       "vector-view-edit": "Hariri",
-       "vector-view-history": "Fungua historia",
-       "vector-view-view": "Soma",
-       "vector-view-viewsource": "Tazama msimbo"
-}
diff --git a/skins/Vector/i18n/szl.json b/skins/Vector/i18n/szl.json
deleted file mode 100644 (file)
index 9e8c106..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Britscher",
-                       "Gaj777",
-                       "Przemub"
-               ]
-       },
-       "vector-action-addsection": "Nowo tajla",
-       "vector-action-delete": "Wyćepej",
-       "vector-action-move": "Przećep",
-       "vector-action-protect": "Zawrzij",
-       "vector-action-undelete": "Wćep",
-       "vector-action-unprotect": "Uodymkńij",
-       "vector-view-create": "Stwůrz",
-       "vector-view-edit": "Sprowjej",
-       "vector-view-history": "Uobocz gyszichta",
-       "vector-view-view": "Czytej",
-       "vector-view-viewsource": "Zdrzůdłowy tekst"
-}
diff --git a/skins/Vector/i18n/ta.json b/skins/Vector/i18n/ta.json
deleted file mode 100644 (file)
index 21f8501..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Mayooranathan",
-                       "Shanmugamp7",
-                       "Surya Prakash.S.A.",
-                       "TRYPPN"
-               ]
-       },
-       "vector-action-addsection": "தலைப்பைச் சேர்",
-       "vector-action-delete": "நீக்குக",
-       "vector-action-move": "நகர்த்தவும்",
-       "vector-action-protect": "காக்கவும்",
-       "vector-action-undelete": "நீக்கத்தை நிறுத்து",
-       "vector-action-unprotect": "காப்பை மாற்று",
-       "vector-view-create": "உருவாக்கவும்",
-       "vector-view-edit": "தொகு",
-       "vector-view-history": "வரலாற்றைக் காட்டவும்",
-       "vector-view-view": "படிக்கவும்",
-       "vector-view-viewsource": "மூலத்தைக் காட்டவும்"
-}
diff --git a/skins/Vector/i18n/tcy.json b/skins/Vector/i18n/tcy.json
deleted file mode 100644 (file)
index 0001fe5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "NamwikiTL",
-                       "VASANTH S.N."
-               ]
-       },
-       "vector-action-addsection": "ವಿಷಯ ಸೇರಾಲೆ",
-       "vector-action-delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "vector-action-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
-       "vector-action-protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
-       "vector-action-undelete": "ಮಾಜಾವಡೆ",
-       "vector-action-unprotect": "ಬದಲಾವಣೆನ್ ರಕ್ಷಿಸಾಲೆ",
-       "vector-view-create": " ಸುರು ಮಲ್ಪುಲೆ",
-       "vector-view-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "vector-view-history": "ಇತಿಹಾಸೊನು ತೂಲೆ",
-       "vector-view-view": "ಓದ್ಲೇ",
-       "vector-view-viewsource": "ಮೂಲೊನು ತೂಲೆ"
-}
diff --git a/skins/Vector/i18n/te.json b/skins/Vector/i18n/te.json
deleted file mode 100644 (file)
index f32d90e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Chaduvari",
-                       "Kiranmayee",
-                       "Praveen Illa",
-                       "Ravichandra",
-                       "Veeven"
-               ]
-       },
-       "skinname-vector": "వెక్టర్",
-       "vector-action-addsection": "విషయాన్ని చేర్చు",
-       "vector-action-delete": "తొలగించు",
-       "vector-action-move": "తరలించు",
-       "vector-action-protect": "సంరక్షించు",
-       "vector-action-undelete": "తొలగింపును రద్దుచెయ్యి",
-       "vector-action-unprotect": "సంరక్షణను మార్చు",
-       "vector-view-create": "సృష్టించు",
-       "vector-view-edit": "సవరించు",
-       "vector-view-history": "చరిత్రను చూడండి",
-       "vector-view-view": "చదువు",
-       "vector-view-viewsource": "మూలాన్ని చూపించు",
-       "vector-more-actions": "మరిన్ని"
-}
diff --git a/skins/Vector/i18n/tet.json b/skins/Vector/i18n/tet.json
deleted file mode 100644 (file)
index 0cc9b82..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "MF-Warburg"
-               ]
-       },
-       "vector-action-protect": "Proteje",
-       "vector-view-create": "Kria",
-       "vector-view-edit": "Edita",
-       "vector-view-history": "Haree istória",
-       "vector-view-view": "Lee"
-}
diff --git a/skins/Vector/i18n/tg-cyrl.json b/skins/Vector/i18n/tg-cyrl.json
deleted file mode 100644 (file)
index ede0347..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ibrahim"
-               ]
-       },
-       "vector-action-addsection": "Иловаи унвон",
-       "vector-action-delete": "Ҳазф",
-       "vector-action-move": "Кӯчонидан",
-       "vector-action-protect": "Муҳофизат",
-       "vector-action-undelete": "Эҳё",
-       "vector-action-unprotect": "Тағйири муҳофизат",
-       "vector-view-create": "Эҷод",
-       "vector-view-edit": "Вироиш",
-       "vector-view-history": "Намоиши таърих",
-       "vector-view-view": "Хондан",
-       "vector-view-viewsource": "Намоиши манбаъ"
-}
diff --git a/skins/Vector/i18n/tg-latn.json b/skins/Vector/i18n/tg-latn.json
deleted file mode 100644 (file)
index 1ecb038..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Liangent"
-               ]
-       },
-       "vector-action-addsection": "Ilovai unvon",
-       "vector-action-delete": "Hazf",
-       "vector-action-move": "Kūconidan",
-       "vector-action-protect": "Muhofizat",
-       "vector-action-undelete": "Ehjo",
-       "vector-action-unprotect": "Ba dar ovardan az muhofizat",
-       "vector-view-create": "Eçod",
-       "vector-view-edit": "Viroiş",
-       "vector-view-history": "Namoişi ta'rix",
-       "vector-view-view": "Xondan",
-       "vector-view-viewsource": "Namoişi manba'"
-}
diff --git a/skins/Vector/i18n/th.json b/skins/Vector/i18n/th.json
deleted file mode 100644 (file)
index ae4b838..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Horus",
-                       "Octahedron80",
-                       "Woraponboonkerd"
-               ]
-       },
-       "skinname-vector": "เวกเตอร์",
-       "vector.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
-       "vector.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
-       "vector-action-addsection": "เพิ่มหัวข้อ",
-       "vector-action-delete": "ลบ",
-       "vector-action-move": "เปลี่ยนชื่อ",
-       "vector-action-protect": "ล็อก",
-       "vector-action-undelete": "กู้คืน",
-       "vector-action-unprotect": "เปลี่ยนการล็อก",
-       "vector-view-create": "สร้าง",
-       "vector-view-edit": "แก้ไข",
-       "vector-view-history": "ดูประวัติ",
-       "vector-view-view": "อ่าน",
-       "vector-view-viewsource": "ดูโค้ด",
-       "vector-more-actions": "เพิ่มเติม"
-}
diff --git a/skins/Vector/i18n/tk.json b/skins/Vector/i18n/tk.json
deleted file mode 100644 (file)
index f11da23..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hanberke"
-               ]
-       },
-       "vector-action-addsection": "Tema goş",
-       "vector-action-delete": "Öçür",
-       "vector-action-move": "Adyny üýtget",
-       "vector-action-protect": "Goraga al",
-       "vector-action-undelete": "Öçürmäni yzyna al",
-       "vector-action-unprotect": "Goragy üýtget",
-       "vector-view-create": "Döret",
-       "vector-view-edit": "Üýtget",
-       "vector-view-history": "Taryhy gör",
-       "vector-view-view": "Oka",
-       "vector-view-viewsource": "Çeşmäni gör"
-}
diff --git a/skins/Vector/i18n/tl.json b/skins/Vector/i18n/tl.json
deleted file mode 100644 (file)
index 2a0495d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AnakngAraw",
-                       "Sky Harbor"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* Ang inilagay na CSS dito ay makakaapekto sa mga tagagamit ng pabalat na Vector */",
-       "vector.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na Vector */",
-       "vector-action-addsection": "Magdagdag ng paksa",
-       "vector-action-delete": "Burahin",
-       "vector-action-move": "Ilipat",
-       "vector-action-protect": "Ipagsanggalang",
-       "vector-action-undelete": "Alisin ang pagbubura",
-       "vector-action-unprotect": "Baguhin ang pagsasanggalang",
-       "vector-view-create": "Likhain",
-       "vector-view-edit": "Baguhin",
-       "vector-view-history": "Tingnan ang kasaysayan",
-       "vector-view-view": "Basahin",
-       "vector-view-viewsource": "Tingnan ang pinagmulan"
-}
diff --git a/skins/Vector/i18n/tly.json b/skins/Vector/i18n/tly.json
deleted file mode 100644 (file)
index a809d5e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Гусейн"
-               ]
-       },
-       "vector-action-addsection": "Мывзу зијод кардеј",
-       "vector-action-delete": "Рәдд кардеј",
-       "vector-action-move": "Номи дәгиш кардеј",
-       "vector-action-protect": "Мыдофијә кардеј",
-       "vector-action-undelete": "Бәрпо кардеј",
-       "vector-action-unprotect": "Мыдофијә дәгиш кардеј",
-       "vector-view-create": "Офәјеј",
-       "vector-view-edit": "Сәрост кардеј",
-       "vector-view-history": "Тарых",
-       "vector-view-view": "Һандемон",
-       "vector-view-viewsource": "Дијә кардеј"
-}
diff --git a/skins/Vector/i18n/tpi.json b/skins/Vector/i18n/tpi.json
deleted file mode 100644 (file)
index 182aa9a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Iketsi",
-                       "Wantok"
-               ]
-       },
-       "vector-action-delete": "Rausim",
-       "vector-action-move": "Surikim",
-       "vector-action-protect": "Tambuim",
-       "vector-view-create": "Kirapim",
-       "vector-view-edit": "Senisim",
-       "vector-view-history": "Ol senis",
-       "vector-view-view": "Rit",
-       "vector-view-viewsource": "Lukim as tok"
-}
diff --git a/skins/Vector/i18n/tr.json b/skins/Vector/i18n/tr.json
deleted file mode 100644 (file)
index da041a9..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arystanbek",
-                       "Emperyan",
-                       "Joseph",
-                       "Stultiwikia",
-                       "Vito Genovese"
-               ]
-       },
-       "vector-action-addsection": "Konu ekle",
-       "vector-action-delete": "Sil",
-       "vector-action-move": "Taşı",
-       "vector-action-protect": "Koru",
-       "vector-action-undelete": "Silinmeyi geri al",
-       "vector-action-unprotect": "Korumayı değiştir",
-       "vector-view-create": "Oluştur",
-       "vector-view-edit": "Düzenle",
-       "vector-view-history": "Geçmişi gör",
-       "vector-view-view": "Oku",
-       "vector-view-viewsource": "Kaynağı gör",
-       "vector-more-actions": "Diğer"
-}
diff --git a/skins/Vector/i18n/tru.json b/skins/Vector/i18n/tru.json
deleted file mode 100644 (file)
index 1949f25..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ariyo"
-               ]
-       },
-       "vector-action-addsection": "Maḥat Fusoqo ḥaṭo",
-       "vector-action-delete": "Slag",
-       "vector-action-move": "Mtaxar",
-       "vector-action-protect": "Mastar",
-       "vector-view-create": "Xlaq",
-       "vector-view-edit": "Mşaḥlaf",
-       "vector-view-history": "Maktabzabno",
-       "vector-view-view": "Qray",
-       "vector-view-viewsource": "Maḥway li aMabu³e."
-}
diff --git a/skins/Vector/i18n/ts.json b/skins/Vector/i18n/ts.json
deleted file mode 100644 (file)
index c00b029..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Thuvack"
-               ]
-       },
-       "vector-action-addsection": "Veka nholoko ya mhaka",
-       "vector-action-delete": "Sula",
-       "vector-action-move": "Yi sa kunwana",
-       "vector-action-protect": "Sirhelela",
-       "vector-action-undelete": "Cinca kusula",
-       "vector-action-unprotect": "Cinca kusirhelela",
-       "vector-view-create": "Tumbuluxa",
-       "vector-view-edit": "Lulamisa",
-       "vector-view-history": "Languta matimu",
-       "vector-view-view": "Hlaya",
-       "vector-view-viewsource": "Languta xihlovo"
-}
diff --git a/skins/Vector/i18n/tt-cyrl.json b/skins/Vector/i18n/tt-cyrl.json
deleted file mode 100644 (file)
index 606fbe3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Don Alessandro",
-                       "Rinatus",
-                       "Ильнар",
-                       "Рашат Якупов"
-               ]
-       },
-       "skinname-vector": "Сызымлы",
-       "vector-action-addsection": "Яңа тема өстәү",
-       "vector-action-delete": "Бетерү",
-       "vector-action-move": "Күчерү",
-       "vector-action-protect": "Яклау",
-       "vector-action-undelete": "Кайтару",
-       "vector-action-unprotect": "Яклауны үзгәртү",
-       "vector-view-create": "Төзү",
-       "vector-view-edit": "Үзгәртү",
-       "vector-view-history": "Тарихын карау",
-       "vector-view-view": "Уку",
-       "vector-view-viewsource": "Чыганагын карау"
-}
diff --git a/skins/Vector/i18n/tt-latn.json b/skins/Vector/i18n/tt-latn.json
deleted file mode 100644 (file)
index 140768b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Don Alessandro"
-               ]
-       },
-       "skinname-vector": "Sızımlı",
-       "vector-action-addsection": "Yaña tema östäw",
-       "vector-action-delete": "Beterü",
-       "vector-action-move": "Küçerü",
-       "vector-action-protect": "Yaqlaw",
-       "vector-action-undelete": "Qaytaru",
-       "vector-action-unprotect": "Yaqlawnı beterü",
-       "vector-view-create": "Tözü",
-       "vector-view-edit": "Üzgärtü",
-       "vector-view-history": "Tarixın qaraw",
-       "vector-view-view": "Uqu",
-       "vector-view-viewsource": "Çığanağın qaraw"
-}
diff --git a/skins/Vector/i18n/tyv.json b/skins/Vector/i18n/tyv.json
deleted file mode 100644 (file)
index fbfb8e9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Agilight",
-                       "Sborsody"
-               ]
-       },
-       "skinname-vector": "Вектор",
-       "vector-action-addsection": "Кол сөстү немелээри",
-       "vector-action-delete": "Ырадыры",
-       "vector-action-move": "Шимчээри",
-       "vector-action-protect": "Камгалаары",
-       "vector-action-undelete": "Эгидер",
-       "vector-action-unprotect": "Камгалалды өскертири",
-       "vector-view-create": "Чаяары",
-       "vector-view-edit": "Эдер",
-       "vector-view-history": "Төөгүнү көөрү",
-       "vector-view-view": "Номчуур",
-       "vector-view-viewsource": "Дөзү бижиин көөрү"
-}
diff --git a/skins/Vector/i18n/tzm.json b/skins/Vector/i18n/tzm.json
deleted file mode 100644 (file)
index ed7ef13..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Moha",
-                       "Tifinaghes"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ",
-       "vector-action-delete": "ⵓⴽⵓⵙ",
-       "vector-action-move": "ⵙⵎⵓⵜⵜⵉ",
-       "vector-action-undelete": "ⵙⵙⵓⵖⴰⵍ ⵓⴽⵓⵙ",
-       "vector-action-unprotect": "ⴱⴷⴷⴻⵍ ⵜⴰⵙⵜⴰⵏⵜ",
-       "vector-view-create": "ⴰⵔⴰ",
-       "vector-view-edit": "ⴱⴷⴷⴻⵍ",
-       "vector-view-history": "ⵥⵕ ⴰⵎⵣⵔⵓⵢ",
-       "vector-view-view": "ⵖⵔ",
-       "vector-view-viewsource": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ"
-}
diff --git a/skins/Vector/i18n/udm.json b/skins/Vector/i18n/udm.json
deleted file mode 100644 (file)
index a126329..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Andrewboltachev"
-               ]
-       },
-       "vector-action-addsection": "Выль темаез ватсано",
-       "vector-action-delete": "Быдтоно",
-       "vector-action-move": "Мукет интые выжтыны",
-       "vector-action-protect": "Утьыны",
-       "vector-view-create": "Кылдытоно",
-       "vector-view-edit": "Тупатоно",
-       "vector-view-history": "История",
-       "vector-view-view": "Лыдӟоно",
-       "vector-view-viewsource": "Кодзэ учкыны"
-}
diff --git a/skins/Vector/i18n/ug-arab.json b/skins/Vector/i18n/ug-arab.json
deleted file mode 100644 (file)
index 00bf7df..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Arlin",
-                       "Sahran",
-                       "Tel'et"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* CSS placed here will affect users of the Vector skin */",
-       "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
-       "vector-action-addsection": "يېڭى تېما قوش",
-       "vector-action-delete": "ئۆچۈر",
-       "vector-action-move": "يۆتكە",
-       "vector-action-protect": "قوغدا",
-       "vector-action-undelete": "ئەسلىگە قايتۇر",
-       "vector-action-unprotect": "قوغداش ئۆزگەرت",
-       "vector-view-create": "قۇر",
-       "vector-view-edit": "تەھرىر",
-       "vector-view-history": "تارىخ كۆرسەت",
-       "vector-view-view": "ئوقۇ",
-       "vector-view-viewsource": "مەنبەنى كۆرسەت"
-}
diff --git a/skins/Vector/i18n/uk.json b/skins/Vector/i18n/uk.json
deleted file mode 100644 (file)
index 7bd2fd1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "AS",
-                       "Ahonc",
-                       "Base",
-                       "Calak",
-                       "Dim Grits",
-                       "NickK",
-                       "Prima klasy4na",
-                       "Тест",
-                       "Ата"
-               ]
-       },
-       "skinname-vector": "Векторне",
-       "vector-skin-desc": "Сучасна версія MonoBook зі свіжим виглядом і багатьма зручними покращеннями",
-       "vector.css": "/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */",
-       "vector.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */",
-       "vector-action-addsection": "Додати тему",
-       "vector-action-delete": "Вилучити",
-       "vector-action-move": "Перейменувати",
-       "vector-action-protect": "Захистити",
-       "vector-action-undelete": "Відновити",
-       "vector-action-unprotect": "Зміна захисту",
-       "vector-view-create": "Створити",
-       "vector-view-edit": "Редагувати",
-       "vector-view-history": "Переглянути історію",
-       "vector-view-view": "Читати",
-       "vector-view-viewsource": "Переглянути код",
-       "vector-more-actions": "Ще"
-}
diff --git a/skins/Vector/i18n/ur.json b/skins/Vector/i18n/ur.json
deleted file mode 100644 (file)
index 595477e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Calak",
-                       "Istabani",
-                       "Noor2020",
-                       "Tahir mq",
-                       "محبوب عالم"
-               ]
-       },
-       "vector-action-addsection": "نیا موضوع",
-       "vector-action-delete": "حذف کرو",
-       "vector-action-move": "منتقل کرو",
-       "vector-action-protect": "محفوظ کرو",
-       "vector-action-undelete": "بحال",
-       "vector-action-unprotect": "تحفظ میں تبدیلی",
-       "vector-view-create": "تخلیق",
-       "vector-view-edit": "ترمیم",
-       "vector-view-history": "تاریخ",
-       "vector-view-view": "مطالعہ",
-       "vector-view-viewsource": "مسودہ",
-       "vector-more-actions": "زیادہ"
-}
diff --git a/skins/Vector/i18n/uz.json b/skins/Vector/i18n/uz.json
deleted file mode 100644 (file)
index ee75d39..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Abdulla",
-                       "Arystanbek",
-                       "Casual",
-                       "CoderSI",
-                       "Sociologist"
-               ]
-       },
-       "skinname-vector": "Vektor",
-       "vector-action-addsection": "Mavzu qoʻshish",
-       "vector-action-delete": "O‘chirish",
-       "vector-action-move": "Ko‘chirish",
-       "vector-action-protect": "Himoyalash",
-       "vector-action-undelete": "Tiklash",
-       "vector-action-unprotect": "Himoyalashni oʻzgartirish",
-       "vector-view-create": "Yaratish",
-       "vector-view-edit": "Tahrirlash",
-       "vector-view-history": "Tarix",
-       "vector-view-view": "Mutolaa",
-       "vector-view-viewsource": "Manbasini koʻrish",
-       "vector-more-actions": "Yana"
-}
diff --git a/skins/Vector/i18n/vec.json b/skins/Vector/i18n/vec.json
deleted file mode 100644 (file)
index 9622828..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Alunardon90",
-                       "Candalua",
-                       "Frigotoni",
-                       "GatoSelvadego",
-                       "Vajotwo"
-               ]
-       },
-       "vector-action-addsection": "Zonta discusion",
-       "vector-action-delete": "Scanseła",
-       "vector-action-move": "Sposta",
-       "vector-action-protect": "Protezi",
-       "vector-action-undelete": "Recupera",
-       "vector-action-unprotect": "Canbia ła protesion",
-       "vector-view-create": "Crea",
-       "vector-view-edit": "Canbia",
-       "vector-view-history": "Varda ła storia",
-       "vector-view-view": "Lezi",
-       "vector-view-viewsource": "Varda el testo"
-}
diff --git a/skins/Vector/i18n/vep.json b/skins/Vector/i18n/vep.json
deleted file mode 100644 (file)
index 00f876c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Игорь Бродский"
-               ]
-       },
-       "vector-action-addsection": "Ližada tem",
-       "vector-action-delete": "Čuta poiš",
-       "vector-action-move": "Udesnimitada",
-       "vector-action-protect": "Kaita",
-       "vector-action-undelete": "Pördutada",
-       "vector-action-unprotect": "Toižetada kaičend",
-       "vector-view-create": "Säta",
-       "vector-view-edit": "Redaktiruida",
-       "vector-view-history": "Kacta istorii",
-       "vector-view-view": "Lugeda",
-       "vector-view-viewsource": "Kacta purtkehe"
-}
diff --git a/skins/Vector/i18n/vi.json b/skins/Vector/i18n/vi.json
deleted file mode 100644 (file)
index a59d9b4..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Minh Nguyen",
-                       "Vinhtantran",
-                       "Withoutaname"
-               ]
-       },
-       "skinname-vector": "Vectơ",
-       "vector-skin-desc": "Giao diện làm lại từ MonoBook có màu tươi và khả dụng hơn",
-       "vector.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện Vectơ */",
-       "vector.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */",
-       "vector-action-addsection": "Thêm chủ đề",
-       "vector-action-delete": "Xóa",
-       "vector-action-move": "Di chuyển",
-       "vector-action-protect": "Khóa",
-       "vector-action-undelete": "Phục hồi",
-       "vector-action-unprotect": "Đổi mức khóa",
-       "vector-view-create": "Tạo",
-       "vector-view-edit": "Sửa đổi",
-       "vector-view-history": "Xem lịch sử",
-       "vector-view-view": "Đọc",
-       "vector-view-viewsource": "Xem mã nguồn",
-       "vector-more-actions": "Khác"
-}
diff --git a/skins/Vector/i18n/vls.json b/skins/Vector/i18n/vls.json
deleted file mode 100644 (file)
index c2b841c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "DasRakel"
-               ]
-       },
-       "vector-action-delete": "Wegdoen",
-       "vector-action-move": "Ernoemn",
-       "vector-view-create": "Anmoakn",
-       "vector-view-edit": "Bewerkn",
-       "vector-view-history": "Geschiedenisse bekykn",
-       "vector-view-view": "Leezn",
-       "vector-view-viewsource": "Brontekst bekykn"
-}
diff --git a/skins/Vector/i18n/vmf.json b/skins/Vector/i18n/vmf.json
deleted file mode 100644 (file)
index 439e93a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Silvicola"
-               ]
-       },
-       "vector.css": "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
-       "vector-action-addsection": "Ân najn abschnid ôôfangn",
-       "vector-action-delete": "Leschn",
-       "vector-action-move": "Umdaafn",
-       "vector-action-protect": "Schidsn",
-       "vector-action-undelete": "Leschn riggängich machn",
-       "vector-action-unprotect": "Schuds ufgeebn",
-       "vector-view-create": "Ôôleechn",
-       "vector-view-edit": "Bearbajdn",
-       "vector-view-history": "Wärsjoonsfolche",
-       "vector-view-view": "Leesn",
-       "vector-view-viewsource": "Gwäl-dhägsd ôôgugn"
-}
diff --git a/skins/Vector/i18n/vo.json b/skins/Vector/i18n/vo.json
deleted file mode 100644 (file)
index 1bd3042..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Malafaya"
-               ]
-       },
-       "vector-action-addsection": "Lüükön yegädi",
-       "vector-action-delete": "Moükön",
-       "vector-action-move": "Topätükön",
-       "vector-action-protect": "Jelön",
-       "vector-action-undelete": "Sämoükön",
-       "vector-action-unprotect": "Votükön jeli",
-       "vector-view-create": "Jafön",
-       "vector-view-edit": "Redakön",
-       "vector-view-history": "Logön jenotemi",
-       "vector-view-view": "Reidön",
-       "vector-view-viewsource": "Logön fonäti"
-}
diff --git a/skins/Vector/i18n/vot.json b/skins/Vector/i18n/vot.json
deleted file mode 100644 (file)
index 7bdc92d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Paivud"
-               ]
-       },
-       "vector-action-addsection": "Vassõn teema",
-       "vector-action-delete": "Pühi",
-       "vector-action-move": "Liikut",
-       "vector-action-protect": "Varjaa",
-       "vector-view-create": "Loo cülci",
-       "vector-view-edit": "Muuttaa",
-       "vector-view-history": "Istori",
-       "vector-view-view": "Lukõa",
-       "vector-view-viewsource": "Lähtekoodi"
-}
diff --git a/skins/Vector/i18n/vro.json b/skins/Vector/i18n/vro.json
deleted file mode 100644 (file)
index a6c3c06..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Võrok"
-               ]
-       },
-       "vector-action-addsection": "Vahtsõ teema ülespandminõ",
-       "vector-action-delete": "Kistudaq ärq",
-       "vector-action-move": "Nõstaq ümbre",
-       "vector-action-protect": "Kaidsaq",
-       "vector-action-undelete": "Tiiq tagasi",
-       "vector-action-unprotect": "Muudaq kaidsõt",
-       "vector-view-create": "Luuq",
-       "vector-view-edit": "Toimõndaq",
-       "vector-view-history": "Näütäq aoluku",
-       "vector-view-view": "Loeq",
-       "vector-view-viewsource": "Kaeq lätteteksti"
-}
diff --git a/skins/Vector/i18n/wa.json b/skins/Vector/i18n/wa.json
deleted file mode 100644 (file)
index 0401884..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Srtxg"
-               ]
-       },
-       "vector-action-addsection": "Radjouter on sudjet",
-       "vector-action-delete": "Disfacer",
-       "vector-action-move": "Displaecî",
-       "vector-action-protect": "Protedjî",
-       "vector-action-undelete": "Rapexhî",
-       "vector-action-unprotect": "Candjî l' protedjaedje",
-       "vector-view-create": "Ahiver",
-       "vector-view-edit": "Candjî",
-       "vector-view-history": "Vey l' istwere",
-       "vector-view-view": "Lére",
-       "vector-view-viewsource": "Vey côde sourdant"
-}
diff --git a/skins/Vector/i18n/war.json b/skins/Vector/i18n/war.json
deleted file mode 100644 (file)
index 8b2f958..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Harvzsf",
-                       "JinJian"
-               ]
-       },
-       "vector-action-addsection": "Igdugang hin himangrawon",
-       "vector-action-delete": "Para-a",
-       "vector-action-move": "Balhina",
-       "vector-action-protect": "Panalipda",
-       "vector-action-undelete": "Igbalik an ginpara",
-       "vector-action-unprotect": "Liwani an panalipod",
-       "vector-view-create": "Himo-a",
-       "vector-view-edit": "Igliwat",
-       "vector-view-history": "Kitaa an kaagi",
-       "vector-view-view": "Basaha",
-       "vector-view-viewsource": "Kitaa an ginkuhaan",
-       "vector-more-actions": "Damo pa"
-}
diff --git a/skins/Vector/i18n/wo.json b/skins/Vector/i18n/wo.json
deleted file mode 100644 (file)
index 5d248d1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ibou"
-               ]
-       },
-       "vector-action-addsection": "Yokkuw tëriit",
-       "vector-action-delete": "Far",
-       "vector-action-move": "Tuddewaat",
-       "vector-action-protect": "Aar",
-       "vector-action-undelete": "Delloowaat",
-       "vector-action-unprotect": "Aaradi",
-       "vector-view-create": "Sos",
-       "vector-view-edit": "Soppi",
-       "vector-view-history": "Wone jaar-jaaram",
-       "vector-view-view": "Jàng",
-       "vector-view-viewsource": "Wone gongikuwaayam"
-}
diff --git a/skins/Vector/i18n/wuu.json b/skins/Vector/i18n/wuu.json
deleted file mode 100644 (file)
index dade0ff..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Benojan"
-               ]
-       },
-       "vector-action-addsection": "加話題",
-       "vector-action-delete": "刪",
-       "vector-action-move": "移",
-       "vector-action-protect": "保",
-       "vector-action-undelete": "弗刪",
-       "vector-action-unprotect": "换保护状态",
-       "vector-view-create": "建",
-       "vector-view-edit": "编",
-       "vector-view-history": "望页史",
-       "vector-view-view": "读",
-       "vector-view-viewsource": "望源码"
-}
diff --git a/skins/Vector/i18n/xal.json b/skins/Vector/i18n/xal.json
deleted file mode 100644 (file)
index b57aad7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Huuchin"
-               ]
-       },
-       "vector-action-addsection": "Төриг немх",
-       "vector-action-delete": "Һарһх",
-       "vector-action-move": "Көндәх",
-       "vector-action-protect": "Харсх",
-       "vector-action-undelete": "Һарһх биш",
-       "vector-action-unprotect": "Харсх биш",
-       "vector-view-create": "Бүтәх",
-       "vector-view-edit": "Чиклх",
-       "vector-view-history": "Тууҗин хәләвр",
-       "vector-view-view": "Умшлһн",
-       "vector-view-viewsource": "Темдгллһнә хәләвр"
-}
diff --git a/skins/Vector/i18n/xh.json b/skins/Vector/i18n/xh.json
deleted file mode 100644 (file)
index 8cea054..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "vector-view-edit": "Tshintsha"
-}
diff --git a/skins/Vector/i18n/xmf.json b/skins/Vector/i18n/xmf.json
deleted file mode 100644 (file)
index 47cee05..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Kilavagora",
-                       "Lika2672",
-                       "Machirkholi"
-               ]
-       },
-       "vector-action-addsection": "თემაშ მიშაძინა",
-       "vector-action-delete": "ლასუა",
-       "vector-action-move": "გინოღალა",
-       "vector-action-protect": "თხილუა",
-       "vector-view-create": "დორსხუაფა",
-       "vector-view-edit": "რედაქტირაფა",
-       "vector-view-history": "ისტორიაშ ძირაფა",
-       "vector-view-view": "კითხირი",
-       "vector-view-viewsource": "ქიძირე წყუ"
-}
diff --git a/skins/Vector/i18n/yi.json b/skins/Vector/i18n/yi.json
deleted file mode 100644 (file)
index 16907ad..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Joystick",
-                       "פוילישער"
-               ]
-       },
-       "skinname-vector": "וועקטאר",
-       "vector-skin-desc": "מאדערנע ווערסיע פון מאנאבוק מיט פרישן אויסזען און א סך באניצער־פריינדלעכקייט פארבעסערונגען",
-       "vector.css": "/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */",
-       "vector-action-addsection": "צושטעלן טעמע",
-       "vector-action-delete": "אויסמעקן",
-       "vector-action-move": "באַוועגן",
-       "vector-action-protect": "שיצן",
-       "vector-action-undelete": "מבטל זיין אויסמעקן",
-       "vector-action-unprotect": "ענדערונג באַשיצונג",
-       "vector-view-create": "שאַפֿן",
-       "vector-view-edit": "רעדאַקטירן",
-       "vector-view-history": "ווײַזן היסטאָריע",
-       "vector-view-view": "לייענען",
-       "vector-view-viewsource": "ווײַזן מקור",
-       "vector-more-actions": "נאך"
-}
diff --git a/skins/Vector/i18n/yo.json b/skins/Vector/i18n/yo.json
deleted file mode 100644 (file)
index e26e68b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Demmy"
-               ]
-       },
-       "vector-action-addsection": "Àfikún orí-ọ̀rọ̀",
-       "vector-action-delete": "Ìparẹ́",
-       "vector-action-move": "Ìyípòdà",
-       "vector-action-protect": "Àbò",
-       "vector-action-undelete": "Ìmúkúrò ìparẹ́",
-       "vector-action-unprotect": "Ìyípadà àbò",
-       "vector-view-create": "Ṣ'èdá",
-       "vector-view-edit": "Àtúnṣe",
-       "vector-view-history": "Wo ìtàn",
-       "vector-view-view": "Àwòkà",
-       "vector-view-viewsource": "Wo àmìọ̀rọ̀"
-}
diff --git a/skins/Vector/i18n/yue.json b/skins/Vector/i18n/yue.json
deleted file mode 100644 (file)
index 3aa2309..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ktchankt",
-                       "Waihorace"
-               ]
-       },
-       "skinname-vector": "Vector",
-       "vector.css": "/* 響呢度放 CSS 碼去改用戶用嘅域達畫面 */",
-       "vector.js": "/* 響每一次個頁面載入時,用域達畫面嘅用戶都會載入呢度任何嘅JavaScript */",
-       "vector-action-addsection": "加主題",
-       "vector-action-delete": "剷走",
-       "vector-action-move": "搬",
-       "vector-action-protect": "保護",
-       "vector-action-undelete": "取消剷走",
-       "vector-action-unprotect": "改保護",
-       "vector-view-create": "開",
-       "vector-view-edit": "改",
-       "vector-view-history": "睇吓歷史",
-       "vector-view-view": "閱",
-       "vector-view-viewsource": "睇吓原始碼",
-       "vector-more-actions": "更多"
-}
diff --git a/skins/Vector/i18n/za.json b/skins/Vector/i18n/za.json
deleted file mode 100644 (file)
index 72bd20d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Biŋhai"
-               ]
-       },
-       "vector-action-delete": "Ca",
-       "vector-action-move": "Daen",
-       "vector-action-protect": "Bauj",
-       "vector-view-create": "Laeb",
-       "vector-view-edit": "gaij",
-       "vector-view-history": "Cazyawj lizsij"
-}
diff --git a/skins/Vector/i18n/zea.json b/skins/Vector/i18n/zea.json
deleted file mode 100644 (file)
index d0f9aab..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Ooswesthoesbes"
-               ]
-       },
-       "vector-action-addsection": "Voeg kopje toe",
-       "vector-action-delete": "Wissen",
-       "vector-action-move": "Verschuuf",
-       "vector-action-protect": "Bescherm",
-       "vector-action-undelete": "Plaets truhhe",
-       "vector-action-unprotect": "Beveiligienge anpass'n",
-       "vector-view-create": "Anmaeken",
-       "vector-view-edit": "Bewerk",
-       "vector-view-history": "Geschiedenisse bekiek'n",
-       "vector-view-view": "Lezen",
-       "vector-view-viewsource": "Brontekst bekieken"
-}
diff --git a/skins/Vector/i18n/zh-hans.json b/skins/Vector/i18n/zh-hans.json
deleted file mode 100644 (file)
index 8e3536f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Hydra",
-                       "Liangent",
-                       "Liuxinyu970226",
-                       "Xiaomingyan",
-                       "Cwek"
-               ]
-       },
-       "vector-skin-desc": "提供清新的外观和许多可用性改进的现代版MonoBook",
-       "vector.css": "/* 放置于这里的CSS将影响使用Vector皮肤的用户 */",
-       "vector.js": "/* 这里的任何JavaScript将为使用Vector皮肤的用户加载 */",
-       "vector-action-addsection": "添加话题",
-       "vector-action-delete": "删除",
-       "vector-action-move": "移动",
-       "vector-action-protect": "保护",
-       "vector-action-undelete": "还原",
-       "vector-action-unprotect": "更改保护",
-       "vector-view-create": "创建",
-       "vector-view-edit": "编辑",
-       "vector-view-history": "查看历史",
-       "vector-view-view": "阅读",
-       "vector-view-viewsource": "查看源代码",
-       "vector-more-actions": "更多"
-}
diff --git a/skins/Vector/i18n/zh-hant.json b/skins/Vector/i18n/zh-hant.json
deleted file mode 100644 (file)
index 0036c34..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-       "@metadata": {
-               "authors": [
-                       "Cwlin0416",
-                       "Justincheng12345",
-                       "Liuxinyu970226",
-                       "Mark85296341"
-               ]
-       },
-       "vector-skin-desc": "現代版的 MonoBook,有著較新穎的外觀與許多使用性的改進",
-       "vector.css": "/* 此 CSS 會影響使用 Vector 介面外觀的使用者 */",
-       "vector.js": "/* 此 JavaScript 會用於使用 Vector 介面外觀使用者 */",
-       "vector-action-addsection": "加入主題",
-       "vector-action-delete": "刪除",
-       "vector-action-move": "移動",
-       "vector-action-protect": "保護",
-       "vector-action-undelete": "取消刪除",
-       "vector-action-unprotect": "變更保護",
-       "vector-view-create": "建立",
-       "vector-view-edit": "編輯",
-       "vector-view-history": "檢視歷史",
-       "vector-view-view": "閱讀",
-       "vector-view-viewsource": "檢視原始碼",
-       "vector-more-actions": "更多"
-}
diff --git a/skins/Vector/images/arrow-collapsed-ltr.png b/skins/Vector/images/arrow-collapsed-ltr.png
deleted file mode 100644 (file)
index 063ac6f..0000000
Binary files a/skins/Vector/images/arrow-collapsed-ltr.png and /dev/null differ
diff --git a/skins/Vector/images/arrow-collapsed-ltr.svg b/skins/Vector/images/arrow-collapsed-ltr.svg
deleted file mode 100644 (file)
index b943caa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6.001 2.998l5.001 5-5.001 5z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/arrow-collapsed-rtl.png b/skins/Vector/images/arrow-collapsed-rtl.png
deleted file mode 100644 (file)
index c346218..0000000
Binary files a/skins/Vector/images/arrow-collapsed-rtl.png and /dev/null differ
diff --git a/skins/Vector/images/arrow-collapsed-rtl.svg b/skins/Vector/images/arrow-collapsed-rtl.svg
deleted file mode 100644 (file)
index 5faf356..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.999 13.002l-5.001-5 5.001-5z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/arrow-down-focus-icon.png b/skins/Vector/images/arrow-down-focus-icon.png
deleted file mode 100644 (file)
index 7640bd1..0000000
Binary files a/skins/Vector/images/arrow-down-focus-icon.png and /dev/null differ
diff --git a/skins/Vector/images/arrow-down-focus-icon.svg b/skins/Vector/images/arrow-down-focus-icon.svg
deleted file mode 100644 (file)
index 826c280..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#929292"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/arrow-down-icon.png b/skins/Vector/images/arrow-down-icon.png
deleted file mode 100644 (file)
index 12e3b93..0000000
Binary files a/skins/Vector/images/arrow-down-icon.png and /dev/null differ
diff --git a/skins/Vector/images/arrow-down-icon.svg b/skins/Vector/images/arrow-down-icon.svg
deleted file mode 100644 (file)
index 8e31b2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/arrow-expanded.png b/skins/Vector/images/arrow-expanded.png
deleted file mode 100644 (file)
index 0221028..0000000
Binary files a/skins/Vector/images/arrow-expanded.png and /dev/null differ
diff --git a/skins/Vector/images/arrow-expanded.svg b/skins/Vector/images/arrow-expanded.svg
deleted file mode 100644 (file)
index e744ec3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.002 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/bullet-icon.png b/skins/Vector/images/bullet-icon.png
deleted file mode 100644 (file)
index 7bae98f..0000000
Binary files a/skins/Vector/images/bullet-icon.png and /dev/null differ
diff --git a/skins/Vector/images/external-link-ltr-icon.png b/skins/Vector/images/external-link-ltr-icon.png
deleted file mode 100644 (file)
index 6308383..0000000
Binary files a/skins/Vector/images/external-link-ltr-icon.png and /dev/null differ
diff --git a/skins/Vector/images/external-link-ltr-icon.svg b/skins/Vector/images/external-link-ltr-icon.svg
deleted file mode 100644 (file)
index 5969d03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="826.929" y="702.309" fill="#fff" stroke="#06c"/><g><path d="M831.194 698.791h5.234v5.391l-1.571 1.545-1.31-1.31-2.725 2.725-2.689-2.689 2.808-2.808-1.311-1.311z" fill="#06f"/><path d="M835.424 699.795l.022 4.885-1.817-1.817-2.881 2.881-1.228-1.228 2.881-2.881-1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/external-link-rtl-icon.png b/skins/Vector/images/external-link-rtl-icon.png
deleted file mode 100644 (file)
index 5313234..0000000
Binary files a/skins/Vector/images/external-link-rtl-icon.png and /dev/null differ
diff --git a/skins/Vector/images/external-link-rtl-icon.svg b/skins/Vector/images/external-link-rtl-icon.svg
deleted file mode 100644 (file)
index 75a7025..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="-835.929" y="702.309" transform="scale(-1 1)" fill="#fff" stroke="#06c"/><g><path d="M831.663 698.791h-5.234v5.391l1.571 1.545 1.31-1.31 2.725 2.725 2.689-2.689-2.808-2.808 1.311-1.311z" fill="#06f"/><path d="M827.433 699.795l-.022 4.885 1.817-1.817 2.881 2.881 1.228-1.228-2.881-2.881 1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/link-icon.png b/skins/Vector/images/link-icon.png
deleted file mode 100644 (file)
index b70efaa..0000000
Binary files a/skins/Vector/images/link-icon.png and /dev/null differ
diff --git a/skins/Vector/images/magnify-clip.png b/skins/Vector/images/magnify-clip.png
deleted file mode 100644 (file)
index 00a9cee..0000000
Binary files a/skins/Vector/images/magnify-clip.png and /dev/null differ
diff --git a/skins/Vector/images/page-fade.png b/skins/Vector/images/page-fade.png
deleted file mode 100644 (file)
index b4a6034..0000000
Binary files a/skins/Vector/images/page-fade.png and /dev/null differ
diff --git a/skins/Vector/images/portal-break-ltr.png b/skins/Vector/images/portal-break-ltr.png
deleted file mode 100644 (file)
index 20bf366..0000000
Binary files a/skins/Vector/images/portal-break-ltr.png and /dev/null differ
diff --git a/skins/Vector/images/portal-break-rtl.png b/skins/Vector/images/portal-break-rtl.png
deleted file mode 100644 (file)
index e5f6223..0000000
Binary files a/skins/Vector/images/portal-break-rtl.png and /dev/null differ
diff --git a/skins/Vector/images/portal-break.png b/skins/Vector/images/portal-break.png
deleted file mode 100644 (file)
index 90c3918..0000000
Binary files a/skins/Vector/images/portal-break.png and /dev/null differ
diff --git a/skins/Vector/images/preferences/break.png b/skins/Vector/images/preferences/break.png
deleted file mode 100644 (file)
index b529308..0000000
Binary files a/skins/Vector/images/preferences/break.png and /dev/null differ
diff --git a/skins/Vector/images/preferences/fade.png b/skins/Vector/images/preferences/fade.png
deleted file mode 100644 (file)
index 638084d..0000000
Binary files a/skins/Vector/images/preferences/fade.png and /dev/null differ
diff --git a/skins/Vector/images/search-fade.png b/skins/Vector/images/search-fade.png
deleted file mode 100644 (file)
index 6cb7d28..0000000
Binary files a/skins/Vector/images/search-fade.png and /dev/null differ
diff --git a/skins/Vector/images/search-ltr.png b/skins/Vector/images/search-ltr.png
deleted file mode 100644 (file)
index 1db2eb2..0000000
Binary files a/skins/Vector/images/search-ltr.png and /dev/null differ
diff --git a/skins/Vector/images/search-ltr.svg b/skins/Vector/images/search-ltr.svg
deleted file mode 100644 (file)
index 0720f20..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#6c6c6c" fill="none"><path d="M11.29 11.71l-4-4"/><circle cx="5" cy="5" r="4"/></g></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/search-rtl.png b/skins/Vector/images/search-rtl.png
deleted file mode 100644 (file)
index c26c8d0..0000000
Binary files a/skins/Vector/images/search-rtl.png and /dev/null differ
diff --git a/skins/Vector/images/search-rtl.svg b/skins/Vector/images/search-rtl.svg
deleted file mode 100644 (file)
index 622d5f9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#6c6c6c" fill="none"><path d="M.71 11.71l4-4"/><circle cx="7" cy="5" r="4"/></g></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/tab-break.png b/skins/Vector/images/tab-break.png
deleted file mode 100644 (file)
index 6d37af5..0000000
Binary files a/skins/Vector/images/tab-break.png and /dev/null differ
diff --git a/skins/Vector/images/tab-current-fade.png b/skins/Vector/images/tab-current-fade.png
deleted file mode 100644 (file)
index b8f772f..0000000
Binary files a/skins/Vector/images/tab-current-fade.png and /dev/null differ
diff --git a/skins/Vector/images/tab-normal-fade.png b/skins/Vector/images/tab-normal-fade.png
deleted file mode 100644 (file)
index f719a88..0000000
Binary files a/skins/Vector/images/tab-normal-fade.png and /dev/null differ
diff --git a/skins/Vector/images/unwatch-icon-hl.png b/skins/Vector/images/unwatch-icon-hl.png
deleted file mode 100644 (file)
index 6b2b502..0000000
Binary files a/skins/Vector/images/unwatch-icon-hl.png and /dev/null differ
diff --git a/skins/Vector/images/unwatch-icon-hl.svg b/skins/Vector/images/unwatch-icon-hl.svg
deleted file mode 100644 (file)
index d52d547..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><linearGradient id="a"><stop offset="0" stop-color="#c2edff"/><stop offset=".5" stop-color="#68bdff"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient x1="13.47" y1="14.363" x2="4.596" y2="3.397" id="b" xlink:href="#a" gradientUnits="userSpaceOnUse"/></defs><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="url(#b)" stroke="#c8b250" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/unwatch-icon.png b/skins/Vector/images/unwatch-icon.png
deleted file mode 100644 (file)
index 9fd9436..0000000
Binary files a/skins/Vector/images/unwatch-icon.png and /dev/null differ
diff --git a/skins/Vector/images/unwatch-icon.svg b/skins/Vector/images/unwatch-icon.svg
deleted file mode 100644 (file)
index cde7bc5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><linearGradient id="a"><stop offset="0" stop-color="#c2edff"/><stop offset=".5" stop-color="#68bdff"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient x1="13.47" y1="14.363" x2="4.596" y2="3.397" id="b" xlink:href="#a" gradientUnits="userSpaceOnUse"/></defs><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="url(#b)" stroke="#7cb5d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/user-icon.png b/skins/Vector/images/user-icon.png
deleted file mode 100644 (file)
index 57f9f8d..0000000
Binary files a/skins/Vector/images/user-icon.png and /dev/null differ
diff --git a/skins/Vector/images/user-icon.svg b/skins/Vector/images/user-icon.svg
deleted file mode 100644 (file)
index 4335bcf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="13.837"><defs><linearGradient id="e"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#3b74bc"/><stop offset="1" stop-color="#2d5990"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#c9c9c9"/></linearGradient><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#f4d9b1"/><stop offset="1" stop-color="#df9725"/></linearGradient><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="f" xlink:href="#a" gradientUnits="userSpaceOnUse"/><radialGradient cx="28.09" cy="27.203" r="13.565" fx="28.09" fy="27.203" id="g" xlink:href="#b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.298 0 0 .885 -8.359 4.94)"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" id="h" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="i" xlink:href="#a" gradientUnits="userSpaceOnUse"/><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" id="j" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.788 0 0 .788 6.221 3.618)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" id="k" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 6.232 -2.651)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" id="l" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 55.11 -3.945)"/></defs><g color="#000"><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.693 0 0 .374 -15.548 3.481)" fill="url(#f)" fill-rule="evenodd" overflow="visible"/><path d="M4.046 12.398h4.137c1.172 0 2.332-.43 2.758-1.655.404-1.163.069-3.378-2.551-5.171h-4.895c-2.62 1.655-2.947 3.917-2.344 5.24.614 1.347 1.655 1.586 2.896 1.586z" fill="url(#g)" fill-rule="evenodd" stroke="#204a87" stroke-linecap="round" stroke-linejoin="round" overflow="visible" stroke-width="0.39"/><path d="M4.321 6.193c1.241 1.103 1.793 5.102 1.793 5.102s.552-3.999 1.517-5.171l-3.309.069z" fill="url(#h)" fill-rule="evenodd" overflow="visible"/><path d="M5.21 6.607s-.839.648-.767 1.428c-.796-.702-.819-2.048-.819-2.048l1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M4.018 11.992l4.092-.009c1.029 0 2.049-.377 2.422-1.453.355-1.022-.037-2.967-2.338-4.542l-4.495-.095c-2.301 1.453-2.747 3.441-2.208 4.697.538 1.256 1.324 1.393 2.526 1.401z" opacity=".215" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none" stroke-width="0.39"/><path d="M6.941 6.607s.839.648.767 1.428c.796-.702.819-2.048.819-2.048l-1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.39 0 0 .39 -6.138 -2.475)" fill="url(#i)" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" fill="url(#j)" fill-rule="evenodd" stroke="#c17d11" stroke-linecap="round" stroke-linejoin="round" overflow="visible" transform="matrix(.39 0 0 .39 -6.089 -3.84)"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.342 0 0 .342 -4.598 -2.929)" opacity=".196" stroke="#fff" stroke-width="1.14" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none"/><path d="M2.433 12.062c-.487-.213-.704-.725-.704-.725.328-1.587 1.451-2.748 1.451-2.748s-.889 2.5-.746 3.473z" opacity=".228" fill="url(#k)" fill-rule="evenodd" overflow="visible"/><path d="M9.806 11.728c.48-.227.704-.781.704-.781-.374-1.577-1.551-2.669-1.551-2.669s.961 2.474.847 3.45z" opacity=".228" fill="url(#l)" fill-rule="evenodd" overflow="visible"/></g></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/watch-icon-hl.png b/skins/Vector/images/watch-icon-hl.png
deleted file mode 100644 (file)
index 4cb87cd..0000000
Binary files a/skins/Vector/images/watch-icon-hl.png and /dev/null differ
diff --git a/skins/Vector/images/watch-icon-hl.svg b/skins/Vector/images/watch-icon-hl.svg
deleted file mode 100644 (file)
index 664c671..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#c8b250" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/watch-icon-loading.png b/skins/Vector/images/watch-icon-loading.png
deleted file mode 100644 (file)
index 5f0c490..0000000
Binary files a/skins/Vector/images/watch-icon-loading.png and /dev/null differ
diff --git a/skins/Vector/images/watch-icon-loading.svg b/skins/Vector/images/watch-icon-loading.svg
deleted file mode 100644 (file)
index 751eb14..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#d1d1d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/images/watch-icon.png b/skins/Vector/images/watch-icon.png
deleted file mode 100644 (file)
index 39daff2..0000000
Binary files a/skins/Vector/images/watch-icon.png and /dev/null differ
diff --git a/skins/Vector/images/watch-icon.svg b/skins/Vector/images/watch-icon.svg
deleted file mode 100644 (file)
index 907b05b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#7cb5d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
diff --git a/skins/Vector/screen-hd.less b/skins/Vector/screen-hd.less
deleted file mode 100644 (file)
index 8b286f4..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Vector screen styles for high definition displays */
-
-@import "variables.less";
-
-div#content {
-       margin-left: 11em;
-       padding: 1.25em 1.5em 1.5em 1.5em;
-}
-#p-logo {
-       left: @menu-main-logo-left;
-}
-div#footer {
-       margin-left: 11em;
-       padding: 1.25em;
-}
-#mw-panel {
-       padding-left: 0.5em;
-}
-#p-search {
-       margin-right: 1em;
-}
-#left-navigation {
-       margin-left: 11em;
-}
-#p-personal {
-       right: 1em;
-}
-#mw-head-base {
-       margin-left: 11em;
-}
diff --git a/skins/Vector/screen.less b/skins/Vector/screen.less
deleted file mode 100644 (file)
index f7b374f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Vector screen styles */
-
-@import "variables.less";
-
-@import "components/common.less";
-@import "components/animations.less";
-@import "components/navigation.less";
-@import "components/footer.less";
-@import 'components/notifications.less';
-@import "components/externalLinks.less";
diff --git a/skins/Vector/skinStyles/jquery.tipsy.less b/skins/Vector/skinStyles/jquery.tipsy.less
deleted file mode 100644 (file)
index 0e0c8ec..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
-       font-size: 0.8em;
-}
diff --git a/skins/Vector/skinStyles/jquery.ui/images/close.png b/skins/Vector/skinStyles/jquery.ui/images/close.png
deleted file mode 100644 (file)
index ef0dd9e..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/close.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/titlebar-fade.png b/skins/Vector/skinStyles/jquery.ui/images/titlebar-fade.png
deleted file mode 100644 (file)
index 12a80c8..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/titlebar-fade.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-anim_basic_16x16.gif b/skins/Vector/skinStyles/jquery.ui/images/ui-anim_basic_16x16.gif
deleted file mode 100644 (file)
index 085ccae..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-anim_basic_16x16.gif and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_15_cd0a0a_40x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_15_cd0a0a_40x100.png
deleted file mode 100644 (file)
index 09de537..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_15_cd0a0a_40x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_70_000000_40x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_70_000000_40x100.png
deleted file mode 100644 (file)
index c06dd56..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_flat_70_000000_40x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
deleted file mode 100644 (file)
index 5308b46..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png
deleted file mode 100644 (file)
index 0c8997f..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-hard_80_d7ebf9_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png
deleted file mode 100644 (file)
index 3149255..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_e4f1fb_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_ffffff_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_ffffff_1x100.png
deleted file mode 100644 (file)
index 09b2376..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_100_ffffff_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
deleted file mode 100644 (file)
index 66627c1..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_inset-hard_100_f0f0f0_1x100.png b/skins/Vector/skinStyles/jquery.ui/images/ui-bg_inset-hard_100_f0f0f0_1x100.png
deleted file mode 100644 (file)
index ccb6dc0..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-bg_inset-hard_100_f0f0f0_1x100.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2694e8_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2694e8_256x240.png
deleted file mode 100644 (file)
index 998ac3b..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2694e8_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2e83ff_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2e83ff_256x240.png
deleted file mode 100644 (file)
index 84b601b..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_2e83ff_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_3d80b3_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_3d80b3_256x240.png
deleted file mode 100644 (file)
index ec129a8..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_3d80b3_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_666666_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_666666_256x240.png
deleted file mode 100644 (file)
index a32c57d..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_666666_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_72a7cf_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_72a7cf_256x240.png
deleted file mode 100644 (file)
index 88fad1a..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_72a7cf_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_ffffff_256x240.png b/skins/Vector/skinStyles/jquery.ui/images/ui-icons_ffffff_256x240.png
deleted file mode 100644 (file)
index 29ba7d2..0000000
Binary files a/skins/Vector/skinStyles/jquery.ui/images/ui-icons_ffffff_256x240.png and /dev/null differ
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.accordion.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.accordion.css
deleted file mode 100644 (file)
index d429fd2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*!
- * jQuery UI Accordion 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
-.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
-.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.autocomplete.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.autocomplete.css
deleted file mode 100644 (file)
index da6de45..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Autocomplete
-----------------------------------*/
-.ui-autocomplete { position: absolute; cursor: default; }
-.ui-autocomplete-loading { /* @embed */ background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/* Menu
-----------------------------------*/
-.ui-menu {
-       list-style:none;
-       padding: 2px;
-       margin: 0;
-       display:block;
-       float: left;
-}
-.ui-menu .ui-menu {
-       margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-       margin:0;
-       padding: 0;
-       zoom: 1;
-       float: left;
-       clear: left;
-       width: 100%;
-}
-.ui-menu .ui-menu-item a {
-       text-decoration:none;
-       display:block;
-       padding:.2em .4em;
-       line-height:1.5;
-       zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-       font-weight: normal;
-       margin: -1px;
-}
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.button.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.button.css
deleted file mode 100644 (file)
index 8c2286d..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/* Button
-----------------------------------*/
-
-.ui-button {
-       display: inline-block;
-       position: relative;
-       padding: 0;
-       margin-right: .1em;
-       text-decoration: none !important;
-       cursor: pointer;
-       text-align: center;
-       zoom: 1;
-       overflow: visible; /* the overflow property removes extra width in IE */
-}
-
-/*button text element */
-.ui-button .ui-button-text {
-       display: block;
-       line-height: 1.4;
-       text-shadow: 0 1px 1px #fff;
-}
-.ui-button-text-only .ui-button-text {
-       padding: 0.3em 1em 0.25em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
-       padding: 0.3em;
-       text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: 0.3em 1em 0.25em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
-       padding: 0.3em 2.1em 0.25em 1em;
-}
-.ui-button-text-icons .ui-button-text {
-       padding-left: 2.1em;
-       padding-right: 2.1em;
-}
-
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
-       padding: 0.3em 1em;
-}
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-text-icon .ui-icon,
-.ui-button-icons-only .ui-icon {
-       position: absolute;
-       top: 50%;
-       margin-top: -9px;
-}
-.ui-button-icon-only .ui-icon {
-       left: 50%;
-       margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icon .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
-       left: 0.5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icon .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
-       right: 0.5em;
-}
-
-/*button sets*/
-.ui-buttonset {
-       margin-right: 7px;
-}
-.ui-buttonset .ui-button {
-       margin-left: 0;
-       margin-right: -.4em;
-}
-
-/* workarounds */
-button.ui-button::-moz-focus-inner {
-       border: 0;
-       padding: 0; /* reset extra padding in Firefox */
-}
-/* Disables the annoying dashed border Firefox puts on active buttons */
-body button.ui-button::-moz-focus-inner {
-       border: 0;
-}
-/* Give large buttons some extra padding */
-body .ui-button-large {
-       padding: 5px;
-}
-/* Use white icons for colored buttons */
-.ui-button-green .ui-icon,
-.ui-button-blue .ui-icon,
-.ui-button-red .ui-icon,
-.ui-button-orange .ui-icon {
-       /* @embed */
-       background-image: url(images/ui-icons_ffffff_256x240.png) !important;
-}
-
-/* Corner radius */
-/* This is normally handled in jquery.ui.theme.css, but in our case, the corner
-   styling of our buttons doesn't match our default widget corner styling */
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-top,
-.ui-button.ui-corner-left,
-.ui-button.ui-corner-tl {
-       border-top-left-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-top,
-
-.ui-button.ui-corner-right,
-.ui-button.ui-corner-tr {
-       border-top-right-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-bottom,
-.ui-button.ui-corner-left,
-.ui-button.ui-corner-bl {
-       border-bottom-left-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-bottom,
-.ui-button.ui-corner-right,
-.ui-button.ui-corner-br {
-       border-bottom-right-radius: 4px;
-}
-
-body .ui-button {
-       color: #2779aa;
-       margin: 0.5em 0 0.5em 0.4em;
-       border: 1px solid #aaa !important;
-       background: #f0f0f0 !important;
-       background: -moz-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #fff 0%, #ddd 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0); /* IE6-8 */
-       cursor: pointer;
-       font-size: 1em;
-       line-height: 1.4em;
-       width: auto;
-       overflow: visible;
-       box-shadow: 0 1px 3px rgba(0,0,0,.2);
-}
-
-body .ui-button-icon-only {
-       width: 2.2em;
-}
-
-body .ui-button-icons-only {
-       width: 3.4em;
-}
-
-body .ui-button:hover {
-       color: #2779aa;
-       border-color: #bbb !important;
-       background: #fff !important;
-       background: -moz-linear-gradient(top, #fff 0%, #eee 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #fff 0%, #eee 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #fff 0%, #eee 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #fff 0%, #eee 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #fff 0%, #eee 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.1);
-}
-body .ui-button:active,
-body .ui-button:focus {
-       border-color: #8ad !important;
-       box-shadow: 0 0 1px 1px rgba(167,215,249,.5);
-}
-body .ui-button:active {
-       background: #e0e0e0 !important;
-       background: -moz-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #f0f0f0 0%, #d0d0d0 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#d0d0d0', GradientType=0); /* IE6-8 */
-}
-
-/* Green buttons */
-body .ui-button-green,
-body .ui-button-green .ui-button-text {
-       color: white;
-       text-shadow: 0 -1px 1px #072;
-}
-body .ui-button.ui-button-green {
-       border-color: #294 !important;
-       background: #295 !important;
-       background: -moz-linear-gradient(top, #3c8 0%, #295 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #3c8 0%, #295 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #3c8 0%, #295 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #3c8 0%, #295 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #3c8 0%, #295 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33cc88', endColorstr='#229955', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.3);
-}
-body .ui-button.ui-button-green:hover {
-       background: #33a055 !important;
-       background: -moz-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #44d388 0%, #33a055 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#44d388', endColorstr='#33a055', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.25);
-}
-body .ui-button.ui-button-green:active,
-body .ui-button.ui-button-green:focus {
-       border-color: #172 !important;
-       box-shadow: 0 0 2px 2px rgba(167,215,249,.75);
-}
-body .ui-button.ui-button-green:active {
-       background: #338855 !important;
-       background: -moz-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #30c080 0%, #338855 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#30c080', endColorstr='#338855', GradientType=0); /* IE6-8 */
-}
-
-/* Blue buttons */
-body .ui-button-blue,
-body .ui-button-blue .ui-button-text {
-       color: white;
-       text-shadow: 0 -1px 1px #037;
-}
-body .ui-button.ui-button-blue {
-       border-color: #468 !important;
-       background: #36b !important;
-       background: -moz-linear-gradient(top, #48e 0%, #36b 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #48e 0%, #36b 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #48e 0%, #36b 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #48e 0%, #36b 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #48e 0%, #36b 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4488ee', endColorstr='#3366bb', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.35);
-}
-body .ui-button.ui-button-blue:hover {
-       background: #36c !important;
-       background: -moz-linear-gradient(top, #59e 0%, #36c 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #59e 0%, #36c 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #59e 0%, #36c 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #59e 0%, #36c 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #59e 0%, #36c 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5599ee', endColorstr='#3366cc', GradientType=0); /* IE6-8 */
-}
-body .ui-button.ui-button-blue:active,
-body .ui-button.ui-button-blue:focus {
-       border-color: #357 !important;
-       box-shadow: 0 0 2px 2px rgba(167,215,249,.75);
-}
-body .ui-button.ui-button-blue:active {
-       background: #3060a0 !important;
-       background: -moz-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #4080e0 0%, #3060a0 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4080e0', endColorstr='#3060a0', GradientType=0); /* IE6-8 */
-}
-
-/* Red buttons */
-body .ui-button-red,
-body .ui-button-red .ui-button-text {
-       color: white;
-       text-shadow: 0 -1px 1px #700;
-}
-body .ui-button.ui-button-red {
-       border-color: #944 !important;
-       background: #a22 !important;
-       background: -moz-linear-gradient(top, #d44 0%, #a22 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #d44 0%, #a22 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #d44 0%, #a22 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #d44 0%, #a22 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #d44 0%, #a22 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dd4444', endColorstr='#aa2222', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.35);
-}
-body .ui-button.ui-button-red:hover {
-       border-color: #a44 !important;
-       background: #b03333 !important;
-       background: -moz-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #ee4646 0%, #b03333 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee4646', endColorstr='#b03333', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,.3);
-}
-body .ui-button.ui-button-red:active,
-body .ui-button.ui-button-red:focus {
-       border-color: #747 !important;
-       box-shadow: 0 0 2px 2px rgba(167,215,249,.7);
-}
-body .ui-button.ui-button-red:active {
-       background: #952020 !important;
-       background: -moz-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #d04545 0%, #952020 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d04545', endColorstr='#952020', GradientType=0); /* IE6-8 */
-}
-
-/* Disabled buttons */
-body .ui-button-green.disabled,
-body .ui-button-green.disabled:hover,
-body .ui-button-green.disabled:active,
-body .ui-button-green.disabled:focus,
-body .ui-button-blue.disabled,
-body .ui-button-blue.disabled:hover,
-body .ui-button-blue.disabled:active,
-body .ui-button-blue.disabled:focus,
-body .ui-button-red.disabled,
-body .ui-button-red.disabled:hover,
-body .ui-button-red.disabled:active,
-body .ui-button-red.disabled:focus,
-body .ui-button.disabled,
-body .ui-button.disabled:hover {
-       color: #aaa;
-       border-color: #ccc !important;
-       background: #eee !important;
-       background: -moz-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* FF3.6+ */
-       background: -webkit-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* Chrome10+, Safari5.1+ */
-       background: -o-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* Opera 11.10+ */
-       background: -ms-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* IE10+ */
-       background: linear-gradient(to bottom, #f6f6f6 0%, #eee 90%) !important;
-       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#eeeeee', GradientType=0); /* IE6-8 */
-       box-shadow: 0 1px 3px rgba(0,0,0,0);
-}
-body .ui-button-green.disabled .ui-button-text,
-body .ui-button-blue.disabled .ui-button-text,
-body .ui-button-red.disabled .ui-button-text {
-       color: #aaa;
-       text-shadow: 0 1px 1px #fff;
-}
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.core.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.core.css
deleted file mode 100644 (file)
index 2e088ca..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*!
- * jQuery UI CSS Framework 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.datepicker.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.datepicker.css
deleted file mode 100644 (file)
index 871bf69..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Datepicker
-----------------------------------*/
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; padding:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .2em 0 0 0; padding: 0 .2em; border-top: 1px solid #DDDDDD; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-/* @noflip */ .ui-datepicker-rtl { direction: rtl; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}
\ No newline at end of file
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.dialog.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.dialog.css
deleted file mode 100644 (file)
index cd85f14..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Dialog
-----------------------------------*/
-.ui-dialog { position: absolute; padding: 0; width: 300px; }
-.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative;  }
-.ui-dialog .ui-dialog-title { float: left; margin: 0; } 
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .75em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/* Customizations */
-body .ui-dialog .ui-dialog-titlebar-close:hover {
-       text-decoration: none;
-}
-body .ui-dialog .ui-dialog-content .status-invalid input {
-       border: 2px solid red;
-       padding: 2px 1px;
-}
-body .ui-dialog .ui-dialog-titlebar {
-       padding: 0.9em 1.4em 0.6em !important;
-}
-body .ui-dialog .ui-widget-header {
-       /* @embed */
-       background: #f0f0f0 url(images/titlebar-fade.png) repeat-x scroll 50% 100% !important;
-}
-/* FIXME: Should just update the icon sprite if we're keeping this X */
-body .ui-dialog .ui-icon-closethick {
-       /* @embed */
-       background: url(images/close.png) no-repeat 50% 50% !important;
-}
-body .ui-dialog .ui-dialog-buttonpane {
-       margin-top: 0 !important;
-       padding:0.3em 1.4em 0.5em 1.4em !important;
-}
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.progressbar.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.progressbar.css
deleted file mode 100644 (file)
index bd7e403..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*!
- * jQuery UI Progressbar 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.resizable.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.resizable.css
deleted file mode 100644 (file)
index f1bd7c5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Resizable
-----------------------------------*/
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-/* @noflip */
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-/* @noflip */
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-/* @noflip */
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-/* @noflip */
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-/* @noflip */
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-/* @noflip */
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
\ No newline at end of file
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.selectable.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.selectable.css
deleted file mode 100644 (file)
index 5854c41..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*!
- * jQuery UI Selectable 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.slider.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.slider.css
deleted file mode 100644 (file)
index e579478..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*!
- * jQuery UI Slider 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }
\ No newline at end of file
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.tabs.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.tabs.css
deleted file mode 100644 (file)
index 11a000f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * jQuery UI Tabs 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
diff --git a/skins/Vector/skinStyles/jquery.ui/jquery.ui.theme.css b/skins/Vector/skinStyles/jquery.ui/jquery.ui.theme.css
deleted file mode 100644 (file)
index 6bde5d3..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-
-
-/*
-* jQuery UI CSS Framework
-* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
-* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1.0em&cornerRadius=3px&bgColorHeader=ffffff&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=f0f0f0&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=cccccc&fcActive=000000&iconColorActive=666666&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=000000&bgTextureOverlay=21_glow_ball.png&bgImgOpacityOverlay=100&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=70&opacityShadow=20&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
-*/
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: sans-serif; font-size: 0.8em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #cccccc; /* @embed */ background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
-.ui-widget-header { border-bottom: 1px solid #bbbbbb; line-height: 1em; /* @embed */ background: #ffffff url(images/ui-bg_highlight-soft_100_ffffff_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; /* @embed */ background: #d7ebf9 url(images/ui-bg_highlight-hard_80_d7ebf9_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #2779aa; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; /* @embed */ background: #e4f1fb url(images/ui-bg_highlight-soft_100_e4f1fb_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #0070a3; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #cccccc; background: #f0f0f0 /* @embed */ url(images/ui-bg_inset-hard_100_f0f0f0_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #f9dd34; background: #ffef8f /* @embed */ url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a /* @embed */ url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; }
-.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { /* @embed */ background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-state-default .ui-icon { /* @embed */ background-image: url(images/ui-icons_3d80b3_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { /* @embed */ background-image: url(images/ui-icons_2694e8_256x240.png); }
-.ui-state-active .ui-icon { /* @embed */ background-image: url(images/ui-icons_666666_256x240.png); }
-.ui-state-highlight .ui-icon { /* @embed */ background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { /* @embed */ background-image: url(images/ui-icons_ffffff_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { border-top-left-radius: 0; }
-.ui-corner-tr { border-top-right-radius: 0; }
-.ui-corner-bl { border-bottom-left-radius: 0; }
-.ui-corner-br { border-bottom-right-radius: 0; }
-.ui-corner-top { border-top-left-radius: 0; border-top-right-radius: 0; }
-.ui-corner-bottom { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-right {  border-top-right-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
-.ui-corner-all { border-radius: 0; }
-
-/* Overlays */
-.ui-widget-overlay { background: #000000; opacity: .75;filter:Alpha(Opacity=75); }
-.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; /* @embed */ background: #000000 url(images/ui-bg_flat_70_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); border-radius: 8px; }
diff --git a/skins/Vector/skinStyles/mediawiki.notification.less b/skins/Vector/skinStyles/mediawiki.notification.less
deleted file mode 100644 (file)
index 55cfe76..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-@import "../variables";
-
-/* mediawiki.notification */
-
-// This wrapper class is needed to ensure these rules have larger CSS
-// selector specificity than default styles
-.mediawiki {
-       .mw-notification-area {
-               font-size: 0.8em;
-       }
-
-       .mw-notification-area-layout {
-               top: 7em;
-       }
-
-       .mw-notification {
-               background-color: #fff;
-               background-color: rgba(255, 255, 255, 0.93);
-               padding: 0.75em 1.5em;
-               border: solid 1px @content-border-color;
-               border-radius: 0.75em;
-               box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
-       }
-}
diff --git a/skins/Vector/skinStyles/mediawiki.special.less b/skins/Vector/skinStyles/mediawiki.special.less
deleted file mode 100644 (file)
index 6af4b1e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Adjusts for decreased margin-bottom for h2 elements inside #content div
- * introduced in March / April 2014 typography update.
- */
-table.mw-specialpages-table {
-       margin-top: 0;
-}
diff --git a/skins/Vector/skinStyles/mediawiki.special.preferences.less b/skins/Vector/skinStyles/mediawiki.special.preferences.less
deleted file mode 100644 (file)
index 592a64d..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-@import "mediawiki.mixins";
-@import "../variables";
-
-/**
- * The following code is highly modified from monobook. It would be nice if the
- * preftoc id was more human readable like preferences-toc for instance,
- * howerver this would require backporting the other skins.
- */
-
-#preftoc {
-       /* Tabs */
-       width: 100%;
-       float: left;
-       clear: both;
-       margin: 0 !important;
-       padding: 0 !important;
-       .background-image('images/preferences/break.png');
-       background-position: bottom left;
-       background-repeat: no-repeat;
-
-       li {
-               /* Tab */
-               float: left;
-               margin: 0;
-               padding: 0;
-               padding-right: 1px;
-               height: 2.25em;
-               white-space: nowrap;
-               list-style-type: none;
-               list-style-image: none;
-               .background-image('images/preferences/break.png');
-               background-position: bottom right;
-               background-repeat: no-repeat;
-
-               /* Sadly, IE6 won't understand this */
-               &:first-child {
-                       margin-left: 1px;
-               }
-
-               &.selected {
-                       a {
-                               .background-image('images/preferences/fade.png');
-                               background-position: bottom;
-                               background-repeat: repeat-x;
-                               color: #333;
-                               text-decoration: none;
-                       }
-               }
-       }
-
-       a,
-       a:active {
-               display: inline-block;
-               position: relative;
-               color: @menu-link-color;
-               padding: 0.5em;
-               text-decoration: none;
-               background-image: none;
-               font-size: 0.9em;
-       }
-
-       a:hover,
-       a:focus {
-               text-decoration: underline;
-       }
-}
-
-#preferences {
-       float: left;
-       width: 100%;
-       margin: 0;
-       margin-top: -2px;
-       clear: both;
-       border: solid 1px #ccc;
-       background-color: #fafafa;
-
-       fieldset {
-               border: none;
-               border-top: solid 1px #ccc;
-
-               &.prefsection {
-                       border: none;
-                       padding: 0;
-                       margin: 1em;
-
-                       legend.mainLegend {
-                               display: none;
-                       }
-               }
-       }
-
-       legend {
-               color: #666;
-       }
-
-       td {
-               padding-left: 0.5em;
-               padding-right: 0.5em;
-       }
-
-       div.mw-prefs-buttons {
-               padding: 1em;
-
-               input {
-                       margin-right: 0.25em;
-               }
-       }
-}
-
-.htmlform-tip {
-       font-size: x-small;
-       padding: .2em 2em;
-       color: #666;
-}
diff --git a/skins/Vector/variables.less b/skins/Vector/variables.less
deleted file mode 100644 (file)
index b17d15c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-@html-font-size: 100%;
-
-// Page content
-// FIXME: Use global variable since Echo and CentralNotice use this variable
-@content-border-color: #a7d7f9;
-// FIXME: Find an open font that works with this stack and is readable by Windows users
-@content-font-family: sans-serif;
-@content-font-color: #252525;
-@content-font-size: 0.875em;
-@content-line-height: 1.6;
-@content-padding: 1em;
-@content-heading-font-size: 1.8em;
-@content-heading-font-family: "Linux Libertine", Georgia, Times, serif;
-@body-background-color: #fff;
-@heading-line-height: 1.3;
-
-// Navigation
-@menu-background-color: #f6f6f6;
-
-// Common menu
-@menu-link-color: #0645ad;
-
-// Main menu
-@menu-main-font-size: inherit;
-
-@menu-main-heading-font-size: 0.75em;
-@menu-main-heading-padding: 0.25em 0 0.25em 0.25em;
-@menu-main-heading-color: #4d4d4d;
-
-@menu-main-body-font-size: 0.75em;
-@menu-main-body-link-color: #0645ad;
-@menu-main-body-link-visited-color: #0b0080;
-@menu-main-body-margin: 0 0 0 1.25em;
-@menu-main-body-padding: 0;
-
-@menu-main-logo-left: 0.5em;
-
-// Personal menu
-@menu-personal-font-size: 0.75em;
diff --git a/skins/Vector/vector.js b/skins/Vector/vector.js
deleted file mode 100644 (file)
index 7be3535..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Vector-specific scripts
- */
-jQuery( function ( $ ) {
-       /**
-        * Focus search input at the very end
-        */
-       $( '#searchInput' ).attr( 'tabindex', $( document ).lastTabIndex() + 1 );
-
-       /**
-        * Dropdown menu accessibility
-        */
-       $( 'div.vectorMenu' ).each( function () {
-               var $el = $( this );
-               $el.find( '> h3 > a' ).parent()
-                       .attr( 'tabindex', '0' )
-                       // For accessibility, show the menu when the h3 is clicked (bug 24298/46486)
-                       .on( 'click keypress', function ( e ) {
-                               if ( e.type === 'click' || e.which === 13 ) {
-                                       $el.toggleClass( 'menuForceShow' );
-                                       e.preventDefault();
-                               }
-                       } )
-                       // When the heading has focus, also set a class that will change the arrow icon
-                       .focus( function () {
-                               $el.find( '> a' ).addClass( 'vectorMenuFocus' );
-                       } )
-                       .blur( function () {
-                               $el.find( '> a' ).removeClass( 'vectorMenuFocus' );
-                       } )
-                       .find( '> a:first' )
-                       // As the h3 can already be focused there's no need for the link to be focusable
-                       .attr( 'tabindex', '-1' );
-       } );
-
-       /**
-        * Sidebar
-        */
-       $( '#mw-panel > .portal:first' ).addClass( 'first' );
-
-       /**
-        * Collapsible tabs
-        */
-       var $cactions = $( '#p-cactions' ),
-               $tabContainer = $( '#p-views ul' ),
-               originalDropdownWidth = $cactions.width();
-
-       // Bind callback functions to animate our drop down menu in and out
-       // and then call the collapsibleTabs function on the menu
-       $tabContainer
-               .bind( 'beforeTabCollapse', function () {
-                       // If the dropdown was hidden, show it
-                       if ( $cactions.hasClass( 'emptyPortlet' ) ) {
-                               $cactions
-                                       .removeClass( 'emptyPortlet' )
-                                       .find( 'h3' )
-                                               .css( 'width', '1px' ).animate( { 'width': originalDropdownWidth }, 'normal' );
-                       }
-               } )
-               .bind( 'beforeTabExpand', function () {
-                       // If we're removing the last child node right now, hide the dropdown
-                       if ( $cactions.find( 'li' ).length === 1 ) {
-                               $cactions.find( 'h3' ).animate( { 'width': '1px' }, 'normal', function () {
-                                       $( this ).attr( 'style', '' )
-                                               .parent().addClass( 'emptyPortlet' );
-                               });
-                       }
-               } )
-               .collapsibleTabs( {
-                       expandCondition: function ( eleWidth ) {
-                               // (This looks a bit awkward because we're doing expensive queries as late as possible.)
-
-                               var distance = $.collapsibleTabs.calculateTabDistance();
-                               // If there are at least eleWidth + 1 pixels of free space, expand.
-                               // We add 1 because .width() will truncate fractional values but .offset() will not.
-                               if ( distance >= eleWidth + 1 ) {
-                                       return true;
-                               } else {
-                                       // Maybe we can still expand? Account for the width of the "Actions" dropdown if the
-                                       // expansion would hide it.
-                                       if ( $cactions.find( 'li' ).length === 1 ) {
-                                               return distance >= eleWidth + 1 - originalDropdownWidth;
-                                       } else {
-                                               return false;
-                                       }
-                               }
-                       },
-                       collapseCondition: function () {
-                               // (This looks a bit awkward because we're doing expensive queries as late as possible.)
-                               // TODO The dropdown itself should probably "fold" to just the down-arrow (hiding the text)
-                               // if it can't fit on the line?
-
-                               // If there's an overlap, collapse.
-                               if ( $.collapsibleTabs.calculateTabDistance() < 0 ) {
-                                       // But only if the width of the tab to collapse is smaller than the width of the dropdown
-                                       // we would have to insert. An example language where this happens is Lithuanian (lt).
-                                       if ( $cactions.hasClass( 'emptyPortlet' ) ) {
-                                               return $tabContainer.children( 'li.collapsible:last' ).width() > originalDropdownWidth;
-                                       } else {
-                                               return true;
-                                       }
-                               } else {
-                                       return false;
-                               }
-                       }
-               } );
-} );
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js
deleted file mode 100644 (file)
index 545acad..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * IE fixes javascript loaded by wikibits.js for IE <= 6.0
- */
-/*global isMSIE55:true, doneIETransform:true, doneIEAlphaFix:true */
-/*global hookit:true, fixalpha:true */
-( function ( mw, $ ) {
-
-var expandedURLs, hasClass;
-
-// Also returns true for IE6, 7, 8, 9 and 10. createPopup is removed in IE11.
-// Good thing this is only loaded for IE <= 6 by wikibits.
-// Might as well set it to true.
-isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
-doneIETransform = false;
-doneIEAlphaFix = false;
-
-hookit = function () {
-       if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
-               doneIETransform = true;
-               fixalpha();
-       }
-};
-
-if ( document.attachEvent ) {
-       document.attachEvent( 'onreadystatechange', hookit );
-}
-
-// png alpha transparency fixes
-fixalpha = function ( logoId ) {
-       // bg
-       if ( isMSIE55 && !doneIEAlphaFix ) {
-               var bg, imageUrl, linkFix, logoa, logospan, plogo;
-               plogo = document.getElementById( logoId || 'p-logo' );
-               if ( !plogo ) {
-                       return;
-               }
-
-               logoa = plogo.getElementsByTagName('a')[0];
-               if ( !logoa ) {
-                       return;
-               }
-
-               bg = logoa.currentStyle.backgroundImage;
-               imageUrl = bg.substring( 5, bg.length - 2 );
-
-               doneIEAlphaFix = true;
-
-               if ( imageUrl.substr( imageUrl.length - 4 ).toLowerCase() === '.png' ) {
-                       logospan = logoa.appendChild( document.createElement( 'span' ) );
-
-                       logoa.style.backgroundImage = 'none';
-                       logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
-                       logospan.style.height = '100%';
-                       logospan.style.position = 'absolute';
-                       logospan.style.width = logoa.currentStyle.width;
-                       logospan.style.cursor = 'hand';
-                       // Center image with hack for IE5.5
-                       if ( document.documentElement.dir === 'rtl' ) {
-                               logospan.style.right = '50%';
-                               logospan.style.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
-                       } else {
-                               logospan.style.left = '50%';
-                               logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
-                       }
-                       logospan.style.top = '50%';
-                       logospan.style.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
-
-                       linkFix = logoa.appendChild( logoa.cloneNode() );
-                       linkFix.style.position = 'absolute';
-                       linkFix.style.height = '100%';
-                       linkFix.style.width = '100%';
-               }
-       }
-};
-
-if ( isMSIE55 ) {
-       // ondomready
-       $( fixalpha );
-}
-
-// Expand links for printing
-hasClass = function ( classText, classWanted ) {
-       var i = 0, classArr = classText.split(/\s/);
-       for ( i = 0; i < classArr.length; i++ ) {
-               if ( classArr[i].toLowerCase() === classWanted.toLowerCase() ) {
-                       return true;
-               }
-       }
-       return false;
-};
-
-window.onbeforeprint = function () {
-       var allLinks, contentEl, expandedLink, expandedText, i;
-
-       expandedURLs = [];
-       contentEl = document.getElementById( 'content' );
-
-       if ( contentEl ) {
-               allLinks = contentEl.getElementsByTagName( 'a' );
-
-               for ( i = 0; i < allLinks.length; i++ ) {
-                       if ( hasClass( allLinks[i].className, 'external' ) && !hasClass( allLinks[i].className, 'free' ) ) {
-                               expandedLink = document.createElement( 'span' );
-                               expandedText = document.createTextNode( ' (' + allLinks[i].href + ')' );
-                               expandedLink.appendChild( expandedText );
-                               allLinks[i].parentNode.insertBefore( expandedLink, allLinks[i].nextSibling );
-                               expandedURLs[i] = expandedLink;
-                       }
-               }
-       }
-};
-
-window.onafterprint = function () {
-       for ( var i = 0; i < expandedURLs.length; i++ ) {
-               if ( expandedURLs[i] ) {
-                       expandedURLs[i].removeNode( true );
-               }
-       }
-};
-
-}( mediaWiki, jQuery ) );
index b6689f9..5c6e63b 100644 (file)
@@ -5,7 +5,6 @@
        var msg,
                win = window,
                ua = navigator.userAgent.toLowerCase(),
-               isIE6 = ( /msie ([0-9]{1,}[\.0-9]{0,})/.exec( ua ) && parseFloat( RegExp.$1 ) <= 6.0 ),
                onloadFuncts = [];
 
 /**
@@ -199,8 +198,4 @@ win.importStylesheetURI = function ( url, media ) {
        return l;
 };
 
-if ( isIE6 ) {
-       win.importScriptURI( mw.config.get( 'stylepath' ) + '/common/IEFixes.js' );
-}
-
 }( mediaWiki, jQuery ) );
index eee34de..0b7c6cf 100644 (file)
@@ -38,10 +38,8 @@ $wgAutoloadClasses += array(
 
        # tests/phpunit
        'MediaWikiTestCase' => "$testDir/phpunit/MediaWikiTestCase.php",
-       'MediaWikiPHPUnitCommand' => "$testDir/phpunit/MediaWikiPHPUnitCommand.php",
        'MediaWikiPHPUnitTestListener' => "$testDir/phpunit/MediaWikiPHPUnitTestListener.php",
        'MediaWikiLangTestCase' => "$testDir/phpunit/MediaWikiLangTestCase.php",
-       'MediaWikiPasswordTestCase' => "$testDir/phpunit/MediaWikiPasswordTestCase.php",
        'ResourceLoaderTestCase' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'ResourceLoaderTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'ResourceLoaderFileModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
@@ -79,6 +77,9 @@ $wgAutoloadClasses += array(
        'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
        'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
 
+       # tests/phpunit/includes/passwords
+       'PasswordTestCase' => "$testDir/phpunit/includes/password/PasswordTestCase.php",
+
        # tests/phpunit/languages
        'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
 
index 6ebbcb2..62157d2 100644 (file)
@@ -38,7 +38,7 @@ class LessFileCompilationTest extends MediaWikiTestCase {
                        "$thisString must refer to a readable file"
                );
 
-               $compiler = ResourceLoader::getLessCompiler();
+               $compiler = ResourceLoader::getLessCompiler( RequestContext::getMain()->getConfig() );
                $this->assertNotNull( $compiler->compileFile( $this->file ) );
        }
 
diff --git a/tests/phpunit/MediaWikiPHPUnitCommand.php b/tests/phpunit/MediaWikiPHPUnitCommand.php
deleted file mode 100644 (file)
index fa863fc..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-
-class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
-
-       public static $additionalOptions = array(
-               'regex=' => false,
-               'file=' => false,
-               'use-filebackend=' => false,
-               'use-bagostuff=' => false,
-               'use-jobqueue=' => false,
-               'keep-uploads' => false,
-               'use-normal-tables' => false,
-               'reuse-db' => false,
-               'wiki=' => false,
-               'debug-tests' => false,
-       );
-
-       public function __construct() {
-               foreach ( self::$additionalOptions as $option => $default ) {
-                       $this->longOptions[$option] = $option . 'Handler';
-               }
-       }
-
-       protected function handleArguments( array $argv ) {
-               parent::handleArguments( $argv );
-
-               if ( !isset( $this->arguments['listeners'] ) ) {
-                       $this->arguments['listeners'] = array();
-               }
-
-               foreach ( $this->options[0] as $option ) {
-                       switch ( $option[0] ) {
-                               case '--debug-tests':
-                                       $this->arguments['listeners'][] = new MediaWikiPHPUnitTestListener( 'PHPUnitCommand' );
-                                       break;
-                       }
-               }
-       }
-
-       public static function main( $exit = true ) {
-               $command = new self;
-               $command->run( $_SERVER['argv'], $exit );
-       }
-
-       public function __call( $func, $args ) {
-
-               if ( substr( $func, -7 ) == 'Handler' ) {
-                       if ( is_null( $args[0] ) ) {
-                               $args[0] = true;
-                       } //Booleans
-                       self::$additionalOptions[substr( $func, 0, -7 )] = $args[0];
-               }
-       }
-
-       public function showHelp() {
-               parent::showHelp();
-
-               print <<<EOT
-
-ParserTest-specific options:
-  --regex="<regex>"        Only run parser tests that match the given regex
-  --file="<filename>"      File describing parser tests
-  --keep-uploads           Re-use the same upload directory for each test, don't delete it
-
-Database options:
-  --use-normal-tables      Use normal DB tables.
-  --reuse-db               Init DB only if tables are missing and keep after finish.
-
-Debugging options:
-  --debug-tests            Log testing activity to the PHPUnitCommand log channel.
-
-EOT;
-       }
-}
index 8c761b9..08463f1 100644 (file)
@@ -1,14 +1,11 @@
 <?php
 
-class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
+class MediaWikiPHPUnitTestListener extends PHPUnit_TextUI_ResultPrinter implements PHPUnit_Framework_TestListener {
+
        /**
         * @var string
         */
-       protected $logChannel;
-
-       public function __construct( $logChannel ) {
-               $this->logChannel = $logChannel;
-       }
+       protected $logChannel = 'PHPUnitCommand';
 
        protected function getTestName( PHPUnit_Framework_Test $test ) {
                $name = get_class( $test );
@@ -35,6 +32,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param float $time
         */
        public function addError( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+               parent::addError( $test, $e, $time );
                wfDebugLog(
                        $this->logChannel,
                        'ERROR in ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
@@ -51,6 +49,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
        public function addFailure( PHPUnit_Framework_Test $test,
                PHPUnit_Framework_AssertionFailedError $e, $time
        ) {
+               parent::addFailure( $test, $e, $time );
                wfDebugLog(
                        $this->logChannel,
                        'FAILURE in ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
@@ -65,6 +64,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param float $time
         */
        public function addIncompleteTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+               parent::addIncompleteTest( $test, $e, $time );
                wfDebugLog(
                        $this->logChannel,
                        'Incomplete test ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
@@ -79,6 +79,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param float $time
         */
        public function addSkippedTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+               parent::addSkippedTest( $test, $e, $time );
                wfDebugLog(
                        $this->logChannel,
                        'Skipped test ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
@@ -91,6 +92,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param PHPUnit_Framework_TestSuite $suite
         */
        public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+               parent::startTestSuite( $suite );
                wfDebugLog( $this->logChannel, 'START suite ' . $suite->getName() );
        }
 
@@ -100,6 +102,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param PHPUnit_Framework_TestSuite $suite
         */
        public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+               parent::endTestSuite( $suite );
                wfDebugLog( $this->logChannel, 'END suite ' . $suite->getName() );
        }
 
@@ -109,6 +112,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param PHPUnit_Framework_Test $test
         */
        public function startTest( PHPUnit_Framework_Test $test ) {
+               parent::startTest( $test );
                wfDebugLog( $this->logChannel, 'Start test ' . $this->getTestName( $test ) );
        }
 
@@ -119,6 +123,7 @@ class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
         * @param float $time
         */
        public function endTest( PHPUnit_Framework_Test $test, $time ) {
+               parent::endTest( $test, $time );
                wfDebugLog( $this->logChannel, 'End test ' . $this->getTestName( $test ) );
        }
 }
diff --git a/tests/phpunit/MediaWikiPasswordTestCase.php b/tests/phpunit/MediaWikiPasswordTestCase.php
deleted file mode 100644 (file)
index edf944b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * Testing framework for the password hashes
- *
- * 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
- */
-abstract class MediaWikiPasswordTestCase extends MediaWikiTestCase {
-       /**
-        * @var PasswordFactory
-        */
-       protected $passwordFactory;
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->passwordFactory = new PasswordFactory();
-               foreach ( $this->getTypeConfigs() as $type => $config ) {
-                       $this->passwordFactory->register( $type, $config );
-               }
-       }
-
-       /**
-        * Return an array of configs to be used for this class's password type.
-        *
-        * @return array[]
-        */
-       abstract protected function getTypeConfigs();
-
-       /**
-        * An array of tests in the form of (bool, string, string), where the first
-        * element is whether the second parameter (a password hash) and the third
-        * parameter (a password) should match.
-        *
-        * @return array
-        */
-       abstract public function providePasswordTests();
-
-       /**
-        * @dataProvider providePasswordTests
-        */
-       public function testHashing( $shouldMatch, $hash, $password ) {
-               $hash = $this->passwordFactory->newFromCiphertext( $hash );
-               $password = $this->passwordFactory->newFromPlaintext( $password, $hash );
-               $this->assertSame( $shouldMatch, $hash->equals( $password ) );
-       }
-
-       /**
-        * @dataProvider providePasswordTests
-        */
-       public function testStringSerialization( $shouldMatch, $hash, $password ) {
-               $hashObj = $this->passwordFactory->newFromCiphertext( $hash );
-               $serialized = $hashObj->toString();
-               $unserialized = $this->passwordFactory->newFromCiphertext( $serialized );
-               $this->assertTrue( $hashObj->equals( $unserialized ) );
-       }
-
-       /**
-        * @dataProvider providePasswordTests
-        * @covers InvalidPassword::equals
-        * @covers InvalidPassword::toString
-        */
-       public function testInvalidUnequalNormal( $shouldMatch, $hash, $password ) {
-               $invalid = $this->passwordFactory->newFromCiphertext( null );
-               $normal = $this->passwordFactory->newFromCiphertext( $hash );
-
-               $this->assertFalse( $invalid->equals( $normal ) );
-               $this->assertFalse( $normal->equals( $invalid ) );
-       }
-}
index 02330a4..70cc8de 100644 (file)
@@ -668,8 +668,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @return mixed
         */
        public function getCliArg( $offset ) {
-               if ( isset( MediaWikiPHPUnitCommand::$additionalOptions[$offset] ) ) {
-                       return MediaWikiPHPUnitCommand::$additionalOptions[$offset];
+               if ( isset( PHPUnitMaintClass::$additionalOptions[$offset] ) ) {
+                       return PHPUnitMaintClass::$additionalOptions[$offset];
                }
        }
 
@@ -679,7 +679,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @param mixed $value
         */
        public function setCliArg( $offset, $value ) {
-               MediaWikiPHPUnitCommand::$additionalOptions[$offset] = $value;
+               PHPUnitMaintClass::$additionalOptions[$offset] = $value;
        }
 
        /**
index 6a36b4b..c2acec0 100644 (file)
@@ -317,4 +317,52 @@ class MessageTest extends MediaWikiLangTestCase {
        public function testInLanguageThrows() {
                wfMessage( 'foo' )->inLanguage( 123 );
        }
+
+       public function keyProvider() {
+               return array(
+                       'string' => array(
+                               'key' => 'mainpage',
+                               'expected' => array( 'mainpage' ),
+                       ),
+                       'single' => array(
+                               'key' => array( 'mainpage' ),
+                               'expected' => array( 'mainpage' ),
+                       ),
+                       'multi' => array(
+                               'key' => array( 'mainpage-foo', 'mainpage-bar', 'mainpage' ),
+                               'expected' => array( 'mainpage-foo', 'mainpage-bar', 'mainpage' ),
+                       ),
+                       'empty' => array(
+                               'key' => array(),
+                               'expected' => null,
+                               'exception' => 'InvalidArgumentException',
+                       ),
+                       'null' => array(
+                               'key' => null,
+                               'expected' => null,
+                               'exception' => 'InvalidArgumentException',
+                       ),
+                       'bad type' => array(
+                               'key' => 17,
+                               'expected' => null,
+                               'exception' => 'InvalidArgumentException',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider keyProvider()
+        *
+        * @covers Message::getKey
+        */
+       public function testGetKey( $key, $expected, $exception = null ) {
+               if ( $exception ) {
+                       $this->setExpectedException( $exception );
+               }
+
+               $msg = new Message( $key );
+               $this->assertEquals( $expected, $msg->getKeysToTry() );
+               $this->assertEquals( count( $expected ) > 1, $msg->isMultiKey() );
+               $this->assertContains( $msg->getKey(), $expected );
+       }
 }
index 2937790..19746a9 100644 (file)
@@ -12,8 +12,8 @@ class MimeMagicTest extends MediaWikiTestCase {
        /**
         * @dataProvider providerImproveTypeFromExtension
         * @param $ext String File extension (no leading dot)
-        * @param $oldMime String Initially detected mime
-        * @param $expectedMime String Mime type after taking extension into account
+        * @param $oldMime String Initially detected MIME
+        * @param $expectedMime String MIME type after taking extension into account
         */
        function testImproveTypeFromExtension( $ext, $oldMime, $expectedMime ) {
                $actualMime = $this->mimeMagic->improveTypeFromExtension( $oldMime, $ext );
index 2cfdfcd..e866386 100644 (file)
@@ -141,14 +141,14 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load module script only
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=vector&amp;*"></script>
+                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=fallback&amp;*"></script>
 '
                        ),
                        // Load module styles only
                        // This also tests the order the modules are put into the url
                        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=vector&amp;*">
+                               '<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 (combined)
@@ -163,13 +163,13 @@ mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"
                        // Load module script with with ESI
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
-                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=vector&amp;*" /></script>
+                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=fallback&amp;*" /></script>
 '
                        ),
                        // Load module styles with with ESI
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
-                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=vector&amp;*" /></style>
+                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=fallback&amp;*" /></style>
 ',
                        ),
                );
index 0ee335a..245cdff 100644 (file)
@@ -70,32 +70,23 @@ class SpecialPageTest extends MediaWikiTestCase {
 
                $this->setExpectedException( 'UserNotLoggedIn', $expected );
 
-               if ( $reason === 'blank' && $title === 'blank' ) {
-                       $specialPage->requireLogin();
-               } else {
-                       $specialPage->requireLogin( $reason, $title );
-               }
+               // $specialPage->requireLogin( [ $reason [, $title ] ] )
+               call_user_func_array(
+                       array( $specialPage, 'requireLogin' ),
+                       array_filter( array( $reason, $title ) )
+               );
        }
 
        public function requireLoginAnonProvider() {
                $lang = 'en';
 
-               $msg = wfMessage( 'loginreqlink' )->inLanguage( $lang )->escaped();
-               $loginLink = '<a href="/index.php?title=Special:UserLogin&amp;returnto=Special%3AWatchlist"'
-                       . ' title="Special:UserLogin">' . $msg . '</a>';
-
-               $expected1 = wfMessage( 'exception-nologin-text-manual' )
-                       ->params( $loginLink )->inLanguage( $lang )->text();
-
+               $expected1 = wfMessage( 'exception-nologin-text' )->inLanguage( $lang )->text();
                $expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
 
                return array(
                        array( $expected1, null, null ),
                        array( $expected2, 'about', null ),
-                       array( $expected2, wfMessage( 'about' ), null ),
                        array( $expected2, 'about', 'about' ),
-                       array( $expected2, 'about', wfMessage( 'about' ) ),
-                       array( $expected1, 'blank', 'blank' )
                );
        }
 
diff --git a/tests/phpunit/includes/api/ApiModuleManagerTest.php b/tests/phpunit/includes/api/ApiModuleManagerTest.php
new file mode 100644 (file)
index 0000000..1ac9b9d
--- /dev/null
@@ -0,0 +1,274 @@
+<?php
+
+/**
+ * @covers ApiModuleManager
+ *
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiModuleManagerTest extends MediaWikiTestCase {
+
+       private function getModuleManager() {
+               $request = new FauxRequest();
+               $main = new ApiMain( $request );
+               return new ApiModuleManager( $main );
+       }
+
+       public function newApiLogin( $main, $action ) {
+               return new ApiLogin( $main, $action );
+       }
+
+       public function addModuleProvider() {
+               return array(
+                       'plain class' => array(
+                               'login',
+                               'action',
+                               'ApiLogin',
+                               null,
+                       ),
+
+                       'with factory' => array(
+                               'login',
+                               'action',
+                               'ApiLogin',
+                               array( $this, 'newApiLogin' ),
+                       ),
+
+                       'with closure' => array(
+                               'logout',
+                               'action',
+                               'ApiLogout',
+                               function( ApiMain $main, $action ) {
+                                               return new ApiLogout( $main, $action );
+                               },
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider addModuleProvider
+        */
+       public function testAddModule( $name, $group, $class, $factory = null ) {
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModule( $name, $group, $class, $factory );
+
+               $this->assertTrue( $moduleManager->isDefined( $name, $group ), 'isDefined' );
+               $this->assertNotNull( $moduleManager->getModule( $name, $group, true ), 'getModule' );
+       }
+
+       public function addModulesProvider() {
+               return array(
+                       'empty' => array(
+                               array(),
+                               'action',
+                       ),
+
+                       'simple' => array(
+                               array(
+                                       'login' => 'ApiLogin',
+                                       'logout' => 'ApiLogout',
+                               ),
+                               'action',
+                       ),
+
+                       'with factories' => array(
+                               array(
+                                       'login' => array(
+                                               'class' => 'ApiLogin',
+                                               'factory' => array( $this, 'newApiLogin' ),
+                                       ),
+                                       'logout' => array(
+                                               'class' => 'ApiLogout',
+                                               'factory' => function( ApiMain $main, $action ) {
+                                                       return new ApiLogout( $main, $action );
+                                               },
+                                       ),
+                               ),
+                               'action',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider addModulesProvider
+        */
+       public function testAddModules( array $modules, $group ) {
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $modules, $group );
+
+               foreach ( array_keys( $modules ) as $name ) {
+                       $this->assertTrue( $moduleManager->isDefined( $name, $group ), 'isDefined' );
+                       $this->assertNotNull( $moduleManager->getModule( $name, $group, true ), 'getModule' );
+               }
+       }
+
+       public function getModuleProvider() {
+               $modules = array(
+                       'feedrecentchanges' => 'ApiFeedRecentChanges',
+                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+                       'login' => array(
+                               'class' => 'ApiLogin',
+                               'factory' => array( $this, 'newApiLogin' ),
+                       ),
+                       'logout' => array(
+                               'class' => 'ApiLogout',
+                               'factory' => function( ApiMain $main, $action ) {
+                                               return new ApiLogout( $main, $action );
+                                       },
+                       ),
+               );
+
+               return array(
+                       'legacy entry' => array(
+                               $modules,
+                               'feedrecentchanges',
+                               'ApiFeedRecentChanges',
+                       ),
+
+                       'just a class' => array(
+                               $modules,
+                               'feedcontributions',
+                               'ApiFeedContributions',
+                       ),
+
+                       'with factory' => array(
+                               $modules,
+                               'login',
+                               'ApiLogin',
+                       ),
+
+                       'with closure' => array(
+                               $modules,
+                               'logout',
+                               'ApiLogout',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider getModuleProvider
+        */
+       public function testGetModule( $modules, $name, $expectedClass ) {
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $modules, 'test' );
+
+               // should return the right module
+               $module1 = $moduleManager->getModule( $name, null, false );
+               $this->assertInstanceOf( $expectedClass, $module1 );
+
+               // should pass group check (with caching disabled)
+               $module2 = $moduleManager->getModule( $name, 'test', true );
+               $this->assertNotNull( $module2 );
+
+               // should use cached instance
+               $module3 = $moduleManager->getModule( $name, null, false );
+               $this->assertSame( $module1, $module3 );
+
+               // should not use cached instance if caching is disabled
+               $module4 = $moduleManager->getModule( $name, null, true );
+               $this->assertNotSame( $module1, $module4 );
+       }
+
+       public function testGetModule_null() {
+               $modules = array(
+                       'login' => 'ApiLogin',
+                       'logout' => 'ApiLogout',
+               );
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $modules, 'test' );
+
+               $this->assertNull( $moduleManager->getModule( 'quux' ), 'unknown name' );
+               $this->assertNull( $moduleManager->getModule( 'login', 'bla' ), 'wrong group' );
+       }
+
+       public function testGetNames() {
+               $fooModules = array(
+                       'login' => 'ApiLogin',
+                       'logout' => 'ApiLogout',
+               );
+
+               $barModules = array(
+                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+               );
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $fooModules, 'foo' );
+               $moduleManager->addModules( $barModules, 'bar' );
+
+               $fooNames = $moduleManager->getNames( 'foo' );
+               $this->assertArrayEquals( array_keys( $fooModules ), $fooNames );
+
+               $allNames = $moduleManager->getNames();
+               $allModules = array_merge( $fooModules, $barModules );
+               $this->assertArrayEquals( array_keys( $allModules ), $allNames );
+       }
+
+       public function testGetNamesWithClasses() {
+               $fooModules = array(
+                       'login' => 'ApiLogin',
+                       'logout' => 'ApiLogout',
+               );
+
+               $barModules = array(
+                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+               );
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $fooModules, 'foo' );
+               $moduleManager->addModules( $barModules, 'bar' );
+
+               $fooNamesWithClasses = $moduleManager->getNamesWithClasses( 'foo' );
+               $this->assertArrayEquals( $fooModules, $fooNamesWithClasses );
+
+               $allNamesWithClasses = $moduleManager->getNamesWithClasses();
+               $allModules = array_merge( $fooModules, array(
+                       'feedcontributions' => 'ApiFeedContributions',
+                       'feedrecentchanges' => 'ApiFeedRecentChanges',
+               ) );
+               $this->assertArrayEquals( $allModules, $allNamesWithClasses );
+       }
+
+       public function testGetModuleGroup() {
+               $fooModules = array(
+                       'login' => 'ApiLogin',
+                       'logout' => 'ApiLogout',
+               );
+
+               $barModules = array(
+                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+               );
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $fooModules, 'foo' );
+               $moduleManager->addModules( $barModules, 'bar' );
+
+               $this->assertEquals( 'foo', $moduleManager->getModuleGroup( 'login' ) );
+               $this->assertEquals( 'bar', $moduleManager->getModuleGroup( 'feedrecentchanges' ) );
+               $this->assertNull( $moduleManager->getModuleGroup( 'quux' ) );
+       }
+
+       public function testGetGroups() {
+               $fooModules = array(
+                       'login' => 'ApiLogin',
+                       'logout' => 'ApiLogout',
+               );
+
+               $barModules = array(
+                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+               );
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $fooModules, 'foo' );
+               $moduleManager->addModules( $barModules, 'bar' );
+
+               $groups = $moduleManager->getGroups();
+               $this->assertArrayEquals( array( 'foo', 'bar' ), $groups );
+       }
+
+}
diff --git a/tests/phpunit/includes/api/ApiRevisionDeleteTest.php b/tests/phpunit/includes/api/ApiRevisionDeleteTest.php
new file mode 100644 (file)
index 0000000..21f4322
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * Tests for action=revisiondelete
+ * @covers APIRevisionDelete
+ * @group API
+ * @group medium
+ * @group Database
+ */
+class ApiRevisionDeleteTest extends ApiTestCase {
+
+       static $page = 'Help:ApiRevDel_test';
+       var $revs = array();
+
+       protected function setUp() {
+               // Needs to be before setup since this gets cached
+               $this->mergeMwGlobalArrayValue( 'wgGroupPermissions', array( 'sysop' => array( 'deleterevision' => true ) ) );
+               parent::setUp();
+               // Make a few edits for us to play with
+               for ( $i = 1; $i <= 5; $i++ ) {
+                       self::editPage( self::$page, MWCryptRand::generateHex( 10 ), 'summary' );
+                       $this->revs[] = Title::newFromText( self::$page )->getLatestRevID( Title::GAID_FOR_UPDATE );
+               }
+
+       }
+
+       public function testHidingRevisions() {
+               $user = self::$users['sysop']->user;
+               $revid = array_shift( $this->revs );
+               $out = $this->doApiRequest( array(
+                       'action' => 'revisiondelete',
+                       'type' => 'revision',
+                       'target' => self::$page,
+                       'ids' => $revid,
+                       'hide' => 'content|user|comment',
+                       'token' => $user->getEditToken(),
+               ) );
+               // Check the output
+               $out = $out[0]['revisiondelete'];
+               $this->assertEquals( $out['status'], 'Success' );
+               $this->assertArrayHasKey( 'items', $out );
+               $item = $out['items'][0];
+               $this->assertArrayHasKey( 'userhidden', $item );
+               $this->assertArrayHasKey( 'commenthidden', $item );
+               $this->assertArrayHasKey( 'texthidden', $item );
+               $this->assertEquals( $item['id'], $revid );
+
+               // Now check that that revision was actually hidden
+               $rev = Revision::newFromId( $revid );
+               $this->assertEquals( $rev->getContent( Revision::FOR_PUBLIC ), null );
+               $this->assertEquals( $rev->getComment( Revision::FOR_PUBLIC ), '' );
+               $this->assertEquals( $rev->getUser( Revision::FOR_PUBLIC ), 0 );
+
+               // Now test unhiding!
+               $out2 = $this->doApiRequest( array(
+                       'action' => 'revisiondelete',
+                       'type' => 'revision',
+                       'target' => self::$page,
+                       'ids' => $revid,
+                       'show' => 'content|user|comment',
+                       'token' => $user->getEditToken(),
+               ) );
+
+               // Check the output
+               $out2 = $out2[0]['revisiondelete'];
+               $this->assertEquals( $out2['status'], 'Success' );
+               $this->assertArrayHasKey( 'items', $out2 );
+               $item = $out2['items'][0];
+
+               $this->assertArrayNotHasKey( 'userhidden', $item );
+               $this->assertArrayNotHasKey( 'commenthidden', $item );
+               $this->assertArrayNotHasKey( 'texthidden', $item );
+
+               $this->assertEquals( $item['id'], $revid );
+
+               $rev = Revision::newFromId( $revid );
+               $this->assertNotEquals( $rev->getContent( Revision::FOR_PUBLIC ), null );
+               $this->assertNotEquals( $rev->getComment( Revision::FOR_PUBLIC ), '' );
+               $this->assertNotEquals( $rev->getUser( Revision::FOR_PUBLIC ), 0 );
+       }
+
+       public function testUnhidingOutput() {
+               $user = self::$users['sysop']->user;
+               $revid = array_shift( $this->revs );
+               // Hide revisions
+               $this->doApiRequest( array(
+                       'action' => 'revisiondelete',
+                       'type' => 'revision',
+                       'target' => self::$page,
+                       'ids' => $revid,
+                       'hide' => 'content|user|comment',
+                       'token' => $user->getEditToken(),
+               ) );
+
+               $out = $this->doApiRequest( array(
+                       'action' => 'revisiondelete',
+                       'type' => 'revision',
+                       'target' => self::$page,
+                       'ids' => $revid,
+                       'show' => 'comment',
+                       'token' => $user->getEditToken(),
+               ) );
+               $out = $out[0]['revisiondelete'];
+               $this->assertEquals( $out['status'], 'Success' );
+               $this->assertArrayHasKey( 'items', $out );
+               $item = $out['items'][0];
+               // Check it has userhidden & texthidden keys
+               // but no commenthidden key
+               $this->assertArrayHasKey( 'userhidden', $item );
+               $this->assertArrayNotHasKey( 'commenthidden', $item );
+               $this->assertArrayHasKey( 'texthidden', $item );
+               $this->assertEquals( $item['id'], $revid );
+       }
+}
index 40407dc..837becc 100644 (file)
@@ -98,7 +98,7 @@ abstract class ApiTestCaseUpload extends ApiTestCase {
         *
         * @param string $fieldName name this would have in the upload form
         * @param string $fileName name to title this
-        * @param string $type mime type
+        * @param string $type MIME type
         * @param string $filePath path where to find file contents
         *
         * @throws Exception
index 38beb87..13da33c 100644 (file)
@@ -10,12 +10,15 @@ class PrefixUniquenessTest extends MediaWikiTestCase {
        public function testPrefixes() {
                $main = new ApiMain( new FauxRequest() );
                $query = new ApiQuery( $main, 'foo', 'bar' );
-               $modules = $query->getModuleManager()->getNamesWithClasses();
+               $moduleManager = $query->getModuleManager();
+
+               $modules = $moduleManager->getNames();
                $prefixes = array();
 
-               foreach ( $modules as $name => $class ) {
-                       /** @var ApiQueryBase $module */
-                       $module = new $class( $query, $name );
+               foreach ( $modules as $name ) {
+                       $module = $moduleManager->getModule( $name );
+                       $class = get_class( $module );
+
                        $prefix = $module->getModulePrefix();
                        if ( isset( $prefixes[$prefix] ) ) {
                                $this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
index 611d304..3902858 100644 (file)
@@ -2,6 +2,12 @@
 
 class ConfigFactoryTest extends MediaWikiTestCase {
 
+       public function tearDown() {
+               // Reset this since we mess with it a bit
+               ConfigFactory::destroyDefaultInstance();
+               parent::tearDown();
+       }
+
        /**
         * @covers ConfigFactory::register
         */
@@ -43,4 +49,22 @@ class ConfigFactoryTest extends MediaWikiTestCase {
                $this->setExpectedException( 'UnexpectedValueException' );
                $factory->makeConfig( 'unittest' );
        }
+
+       /**
+        * @covers ConfigFactory::getDefaultInstance
+        */
+       public function testGetDefaultInstance() {
+               // Set $wgConfigRegistry, and check the default
+               // instance read from it
+               $this->setMwGlobals( 'wgConfigRegistry', array(
+                       'conf1' => 'GlobalVarConfig::newInstance',
+                       'conf2' => 'GlobalVarConfig::newInstance',
+               ) );
+               ConfigFactory::destroyDefaultInstance();
+               $factory = ConfigFactory::getDefaultInstance();
+               $this->assertInstanceOf( 'Config', $factory->makeConfig( 'conf1' ) );
+               $this->assertInstanceOf( 'Config', $factory->makeConfig( 'conf2' ) );
+               $this->setExpectedException( 'ConfigException' );
+               $factory->makeConfig( 'conf3' );
+       }
 }
diff --git a/tests/phpunit/includes/content/JSONContentTest.php b/tests/phpunit/includes/content/JSONContentTest.php
new file mode 100644 (file)
index 0000000..ec74574
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers JSONContent
+ */
+class JSONContentTest extends MediaWikiLangTestCase {
+
+       /**
+        * @dataProvider provideValidConstruction
+        */
+       public function testValidConstruct( $text, $modelId, $isValid, $expected ) {
+               $obj = new JSONContent( $text, $modelId );
+               $this->assertEquals( $isValid, $obj->isValid() );
+               $this->assertEquals( $expected, $obj->getJsonData() );
+       }
+
+       public function provideValidConstruction() {
+               return array(
+                       array( 'foo', CONTENT_MODEL_JSON, false, null ),
+                       array( FormatJson::encode( array() ), CONTENT_MODEL_JSON, true, array() ),
+                       array( FormatJson::encode( array( 'foo' ) ), CONTENT_MODEL_JSON, true, array( 'foo' ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideDataToEncode
+        */
+       public function testBeautifyUsesFormatJson( $data ) {
+               $obj = new JSONContent( FormatJson::encode( $data) );
+               $this->assertEquals( FormatJson::encode( $data, true ), $obj->beautifyJSON() );
+       }
+
+       public function provideDataToEncode() {
+               return array(
+                       array( array() ),
+                       array( array( 'foo' ) ),
+                       array( array( 'foo', 'bar' ) ),
+                       array( array( 'baz' => 'foo', 'bar' ) ),
+                       array( array( 'baz' => 1000, 'bar' ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideDataToEncode
+        */
+       public function testPreSaveTransform( $data ) {
+               $obj = new JSONContent( FormatJson::encode( $data ) );
+               $newObj = $obj->preSaveTransform( $this->getMockTitle(), $this->getMockUser() , $this->getMockParserOptions() );
+               $this->assertTrue( $newObj->equals( new JSONContent( FormatJson::encode( $data, true ) ) ) );
+       }
+
+       private function getMockTitle() {
+               return $this->getMockBuilder( 'Title' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       private function getMockUser() {
+               return $this->getMockBuilder( 'User' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+       private function getMockParserOptions() {
+               return $this->getMockBuilder( 'ParserOptions' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       /**
+        * @dataProvider provideDataAndParserText
+        */
+       public function testFillParserOutput( $data, $expected ) {
+               $obj = new JSONContent( FormatJson::encode( $data ) );
+               $parserOutput = $obj->getParserOutput( $this->getMockTitle(), null, null, true );
+               $this->assertInstanceOf( 'ParserOutput', $parserOutput );
+//             var_dump( $parserOutput->getText(), "\n" );
+               $this->assertEquals( $expected, $parserOutput->getText() );
+       }
+
+       public function provideDataAndParserText() {
+               return array(
+                       array(
+                               array(),
+                               '<table class="mw-json"><tbody></tbody></table>'
+                       ),
+                       array(
+                               array( 'foo' ),
+                               '<table class="mw-json"><tbody><tr><th>0</th><td class="value">&quot;foo&quot;</td></tr></tbody></table>'
+                       ),
+                       array(
+                               array( 'foo', 'bar' ),
+                               '<table class="mw-json"><tbody><tr><th>0</th><td class="value">&quot;foo&quot;</td></tr>' .
+                               "\n" .
+                               '<tr><th>1</th><td class="value">&quot;bar&quot;</td></tr></tbody></table>'
+                       ),
+                       array(
+                               array( 'baz' => 'foo', 'bar' ),
+                               '<table class="mw-json"><tbody><tr><th>baz</th><td class="value">&quot;foo&quot;</td></tr>' .
+                               "\n" .
+                               '<tr><th>0</th><td class="value">&quot;bar&quot;</td></tr></tbody></table>'
+                       ),
+                       array(
+                               array( 'baz' => 1000, 'bar' ),
+                               '<table class="mw-json"><tbody><tr><th>baz</th><td class="value">1000</td></tr>' .
+                               "\n" .
+                               '<tr><th>0</th><td class="value">&quot;bar&quot;</td></tr></tbody></table>'
+                       ),
+                       array(
+                               array( '<script>alert("evil!")</script>'),
+                               '<table class="mw-json"><tbody><tr><th>0</th><td class="value">&quot;&lt;script&gt;alert(&quot;evil!&quot;)&lt;/script&gt;&quot;</td></tr></tbody></table>',
+                       ),
+               );
+       }
+
+}
\ No newline at end of file
index a7bfbfe..9558cc7 100644 (file)
@@ -21,11 +21,11 @@ class FileBackendTest extends MediaWikiTestCase {
                parent::setUp();
                $uniqueId = time() . '-' . mt_rand();
                $tmpPrefix = wfTempDir() . '/filebackend-unittest-' . $uniqueId;
-               if ( $this->getCliArg( 'use-filebackend=' ) ) {
+               if ( $this->getCliArg( 'use-filebackend' ) ) {
                        if ( self::$backendToUse ) {
                                $this->singleBackend = self::$backendToUse;
                        } else {
-                               $name = $this->getCliArg( 'use-filebackend=' );
+                               $name = $this->getCliArg( 'use-filebackend' );
                                $useConfig = array();
                                foreach ( $wgFileBackends as $conf ) {
                                        if ( $conf['name'] == $name ) {
index a79866e..9cc2efb 100644 (file)
@@ -17,8 +17,8 @@ class StoreBatchTest extends MediaWikiTestCase {
 
                # Forge a FSRepo object to not have to rely on local wiki settings
                $tmpPrefix = wfTempDir() . '/storebatch-test-' . time() . '-' . mt_rand();
-               if ( $this->getCliArg( 'use-filebackend=' ) ) {
-                       $name = $this->getCliArg( 'use-filebackend=' );
+               if ( $this->getCliArg( 'use-filebackend' ) ) {
+                       $name = $this->getCliArg( 'use-filebackend' );
                        $useConfig = array();
                        foreach ( $wgFileBackends as $conf ) {
                                if ( $conf['name'] == $name ) {
index 70374dc..69e4006 100644 (file)
@@ -21,8 +21,8 @@ class JobQueueTest extends MediaWikiTestCase {
 
                $this->setMwGlobals( 'wgMemc', new HashBagOStuff() );
 
-               if ( $this->getCliArg( 'use-jobqueue=' ) ) {
-                       $name = $this->getCliArg( 'use-jobqueue=' );
+               if ( $this->getCliArg( 'use-jobqueue' ) ) {
+                       $name = $this->getCliArg( 'use-jobqueue' );
                        if ( !isset( $wgJobTypeConf[$name] ) ) {
                                throw new MWException( "No \$wgJobTypeConf entry for '$name'." );
                        }
index 1972bb5..160ddad 100644 (file)
@@ -11,8 +11,8 @@ class BagOStuffTest extends MediaWikiTestCase {
                parent::setUp();
 
                // type defined through parameter
-               if ( $this->getCliArg( 'use-bagostuff=' ) ) {
-                       $name = $this->getCliArg( 'use-bagostuff=' );
+               if ( $this->getCliArg( 'use-bagostuff' ) ) {
+                       $name = $this->getCliArg( 'use-bagostuff' );
 
                        $this->cache = ObjectCache::newFromId( $name );
                } else {
@@ -67,7 +67,7 @@ class BagOStuffTest extends MediaWikiTestCase {
                 * - pcntl_fork is supported by the system
                 * - cache type will correctly support calls over forks
                 */
-               $fork = (bool)$this->getCliArg( 'use-bagostuff=' );
+               $fork = (bool)$this->getCliArg( 'use-bagostuff' );
                $fork &= function_exists( 'pcntl_fork' );
                $fork &= !$this->cache instanceof HashBagOStuff;
                $fork &= !$this->cache instanceof EmptyBagOStuff;
index 1dcc4cd..0499f88 100644 (file)
@@ -51,8 +51,8 @@ class NewParserTest extends MediaWikiTestCase {
                parent::setUp();
 
                //Setup CLI arguments
-               if ( $this->getCliArg( 'regex=' ) ) {
-                       $this->regex = $this->getCliArg( 'regex=' );
+               if ( $this->getCliArg( 'regex' ) ) {
+                       $this->regex = $this->getCliArg( 'regex' );
                } else {
                        # Matches anything
                        $this->regex = '';
@@ -353,11 +353,11 @@ class NewParserTest extends MediaWikiTestCase {
                        self::getOptionValue( 'wgLinkHolderBatchSize', $opts, 1000 );
 
                $uploadDir = $this->getUploadDir();
-               if ( $this->getCliArg( 'use-filebackend=' ) ) {
+               if ( $this->getCliArg( 'use-filebackend' ) ) {
                        if ( self::$backendToUse ) {
                                $backend = self::$backendToUse;
                        } else {
-                               $name = $this->getCliArg( 'use-filebackend=' );
+                               $name = $this->getCliArg( 'use-filebackend' );
                                $useConfig = array();
                                foreach ( $wgFileBackends as $conf ) {
                                        if ( $conf['name'] == $name ) {
@@ -780,8 +780,8 @@ class NewParserTest extends MediaWikiTestCase {
 
                $files = $wgParserTestFiles;
 
-               if ( $this->getCliArg( 'file=' ) ) {
-                       $files = array( $this->getCliArg( 'file=' ) );
+               if ( $this->getCliArg( 'file' ) ) {
+                       $files = array( $this->getCliArg( 'file' ) );
                }
 
                $dict = $this->getFuzzInput( $files );
index b4d5f99..4d5c78a 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @group large
  */
-class BcryptPasswordTestCase extends MediaWikiPasswordTestCase {
+class BcryptPasswordTestCase extends PasswordTestCase {
        protected function getTypeConfigs() {
                return array( 'bcrypt' => array(
                        'class' => 'BcryptPassword',
index c552253..03a742b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-class LayeredParameterizedPasswordTest extends MediaWikiPasswordTestCase {
+class LayeredParameterizedPasswordTest extends PasswordTestCase {
        protected function getTypeConfigs() {
                return array(
                        'testLargeLayeredTop' => array(
diff --git a/tests/phpunit/includes/password/PasswordTestCase.php b/tests/phpunit/includes/password/PasswordTestCase.php
new file mode 100644 (file)
index 0000000..7820d53
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Testing framework for the password hashes
+ *
+ * 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
+ */
+abstract class PasswordTestCase extends MediaWikiTestCase {
+       /**
+        * @var PasswordFactory
+        */
+       protected $passwordFactory;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->passwordFactory = new PasswordFactory();
+               foreach ( $this->getTypeConfigs() as $type => $config ) {
+                       $this->passwordFactory->register( $type, $config );
+               }
+       }
+
+       /**
+        * Return an array of configs to be used for this class's password type.
+        *
+        * @return array[]
+        */
+       abstract protected function getTypeConfigs();
+
+       /**
+        * An array of tests in the form of (bool, string, string), where the first
+        * element is whether the second parameter (a password hash) and the third
+        * parameter (a password) should match.
+        *
+        * @return array
+        */
+       abstract public function providePasswordTests();
+
+       /**
+        * @dataProvider providePasswordTests
+        */
+       public function testHashing( $shouldMatch, $hash, $password ) {
+               $hash = $this->passwordFactory->newFromCiphertext( $hash );
+               $password = $this->passwordFactory->newFromPlaintext( $password, $hash );
+               $this->assertSame( $shouldMatch, $hash->equals( $password ) );
+       }
+
+       /**
+        * @dataProvider providePasswordTests
+        */
+       public function testStringSerialization( $shouldMatch, $hash, $password ) {
+               $hashObj = $this->passwordFactory->newFromCiphertext( $hash );
+               $serialized = $hashObj->toString();
+               $unserialized = $this->passwordFactory->newFromCiphertext( $serialized );
+               $this->assertTrue( $hashObj->equals( $unserialized ) );
+       }
+
+       /**
+        * @dataProvider providePasswordTests
+        * @covers InvalidPassword::equals
+        * @covers InvalidPassword::toString
+        */
+       public function testInvalidUnequalNormal( $shouldMatch, $hash, $password ) {
+               $invalid = $this->passwordFactory->newFromCiphertext( null );
+               $normal = $this->passwordFactory->newFromCiphertext( $hash );
+
+               $this->assertFalse( $invalid->equals( $normal ) );
+               $this->assertFalse( $normal->equals( $invalid ) );
+       }
+}
index c1b65d3..ae47120 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @group large
  */
-class Pbkdf2PasswordTest extends MediaWikiPasswordTestCase {
+class Pbkdf2PasswordTest extends PasswordTestCase {
        protected function getTypeConfigs() {
                return array( 'pbkdf2' => array(
                        'class' => 'Pbkdf2Password',
index 75e54d3..a3d73e5 100644 (file)
@@ -22,7 +22,8 @@ class ResourceLoaderLESSTest extends MediaWikiTestCase {
 
                $expect = file_get_contents( $cssFile );
                $content = file_get_contents( $lessFile );
-               $result = ResourceLoader::getLessCompiler()->compile( $content, $lessFile );
+               $result = ResourceLoader::getLessCompiler( RequestContext::getMain()->getConfig() )
+                       ->compile( $content, $lessFile );
                $this->assertEquals( $expect, $result );
        }
 }
index df08972..0c250bd 100644 (file)
@@ -332,9 +332,10 @@ mw.loader.addSource( {
 
                $rl->register( $case['modules'] );
 
+               $module = new ResourceLoaderStartUpModule();
                $this->assertEquals(
                        ltrim( $case['out'], "\n" ),
-                       ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+                       $module->getModuleRegistrations( $context ),
                        $case['msg']
                );
        }
@@ -366,6 +367,7 @@ mw.loader.addSource( {
                $context = self::getResourceLoaderContext();
                $rl = $context->getResourceLoader();
                $rl->register( $modules );
+               $module = new ResourceLoaderStartUpModule();
                $this->assertEquals(
 'mw.loader.addSource({"local":{"loadScript":"/w/load.php","apiScript":"/w/api.php"}});'
 . 'mw.loader.register(['
@@ -373,7 +375,7 @@ mw.loader.addSource( {
 . '["test.min","1388534400",["test.blank"],null,"local",'
 . '"return!!(window.JSON\u0026\u0026JSON.parse\u0026\u0026JSON.stringify);"'
 . ']]);',
-                       ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+                       $module->getModuleRegistrations( $context ),
                        'Minified output'
                );
        }
@@ -385,6 +387,7 @@ mw.loader.addSource( {
                $context = self::getResourceLoaderContext();
                $rl = $context->getResourceLoader();
                $rl->register( $modules );
+               $module = new ResourceLoaderStartUpModule();
                $this->assertEquals(
 'mw.loader.addSource( {
     "local": {
@@ -407,7 +410,7 @@ mw.loader.addSource( {
         "return !!(    window.JSON \u0026\u0026    JSON.parse \u0026\u0026    JSON.stringify);"
     ]
 ] );',
-                       ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+                       $module->getModuleRegistrations( $context ),
                        'Unminified output'
                );
        }
index e7bb35c..aca77be 100644 (file)
@@ -17,8 +17,8 @@ class SpecialMIMESearchTest extends MediaWikiTestCase {
        /**
         * @dataProvider providerMimeFiltering
         * @param $par String subpage for special page
-        * @param $major String Major mime type we expect to look for
-        * @param $minor String Minor mime type we expect to look for
+        * @param $major String Major MIME type we expect to look for
+        * @param $minor String Minor MIME type we expect to look for
         */
        function testMimeFiltering( $par, $major, $minor ) {
                $this->page->run( $par );
diff --git a/tests/phpunit/languages/LanguageArqTest.php b/tests/phpunit/languages/LanguageArqTest.php
new file mode 100644 (file)
index 0000000..3fa56d7
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Based on LanguageMlTest
+ * @author Joel Sahleen
+ * @copyright Copyright © 2014, Joel Sahleen
+ * @file
+ */
+
+/** Tests for MediaWiki languages/LanguageArq.php */
+class LanguageArqTest extends LanguageClassesTestCase {
+       /**
+        * @dataProvider provideNumber
+        * @covers Language::formatNum
+        */
+       public function testFormatNum( $result, $value ) {
+               $this->assertEquals( $result, $this->getLang()->formatNum( $value ) );
+       }
+
+       public static function provideNumber() {
+               return array(
+                       array( '1.234.567', '1234567'),
+                       array( '-12,89', -12.89 ),
+                       );
+       }
+
+}
index c7491d3..1125504 100755 (executable)
@@ -15,6 +15,18 @@ require_once dirname( dirname( __DIR__ ) ) . "/maintenance/Maintenance.php";
 
 class PHPUnitMaintClass extends Maintenance {
 
+       public static $additionalOptions = array(
+               'regex' => false,
+               'file' => false,
+               'use-filebackend' => false,
+               'use-bagostuff' => false,
+               'use-jobqueue' => false,
+               'keep-uploads' => false,
+               'use-normal-tables' => false,
+               'reuse-db' => false,
+               'wiki' => false,
+       );
+
        public function __construct() {
                parent::__construct();
                $this->addOption(
@@ -24,6 +36,20 @@ class PHPUnitMaintClass extends Maintenance {
                        false, # not required
                        true # need arg
                );
+               $this->addOption(
+                       'debug-tests',
+                       'Log testing activity to the PHPUnitCommand log channel.',
+                       false, # not required
+                       false # no arg needed
+               );
+               $this->addOption( 'regex', 'Only run parser tests that match the given regex.', false, true );
+               $this->addOption( 'file', 'File describing parser tests.', false, true );
+               $this->addOption( 'use-filebackend', 'Use filebackend', false, true );
+               $this->addOption( 'use-bagostuff', 'Use bagostuff', false, true );
+               $this->addOption( 'use-jobqueue', 'Use jobqueue', false, true );
+               $this->addOption( 'keep-uploads', 'Re-use the same upload directory for each test, don\'t delete it.', false, false );
+               $this->addOption( 'use-normal-tables', 'Use normal DB tables.', false, false );
+               $this->addOption( 'reuse-db', 'Init DB only if tables are missing and keep after finish.', false, false );
        }
 
        public function finalSetup() {
@@ -67,6 +93,8 @@ class PHPUnitMaintClass extends Maintenance {
        public function execute() {
                global $IP;
 
+               $this->forceFormatServerArgv();
+
                # Make sure we have --configuration or PHPUnit might complain
                if ( !in_array( '--configuration', $_SERVER['argv'] ) ) {
                        //Hack to eliminate the need to use the Makefile (which sucks ATM)
@@ -75,17 +103,12 @@ class PHPUnitMaintClass extends Maintenance {
                }
 
                # --with-phpunitdir let us override the default PHPUnit version
+               # Can use with either or phpunit.phar in the directory or the
+               # full PHPUnit code base.
                if ( $this->hasOption( 'with-phpunitdir' ) ) {
                        $phpunitDir = $this->getOption( 'with-phpunitdir' );
-                       # Sanity checks
-                       if ( !is_dir( $phpunitDir ) ) {
-                               $this->error( "--with-phpunitdir should be set to an existing directory", 1 );
-                       }
-                       if ( !is_readable( $phpunitDir . "/PHPUnit/Runner/Version.php" ) ) {
-                               $this->error( "No usable PHPUnit installation in $phpunitDir.\nAborting.\n", 1 );
-                       }
 
-                       # Now prepends provided PHPUnit directory
+                       # prepends provided PHPUnit directory or phar
                        $this->output( "Will attempt loading PHPUnit from `$phpunitDir`\n" );
                        set_include_path( $phpunitDir . PATH_SEPARATOR . get_include_path() );
 
@@ -123,38 +146,88 @@ class PHPUnitMaintClass extends Maintenance {
                        );
                        array_splice( $_SERVER['argv'], 1, 0, '--include-path' );
                }
+
+               $key = array_search( '--debug-tests', $_SERVER['argv'] );
+               if ( $key !== false && array_search( '--printer', $_SERVER['argv'] ) === false ) {
+                       unset( $_SERVER['argv'][$key] );
+                       array_splice( $_SERVER['argv'], 1, 0, 'MediaWikiPHPUnitTestListener' );
+                       array_splice( $_SERVER['argv'], 1, 0, '--printer' );
+               }
+
+               foreach ( self::$additionalOptions as $option => $default ) {
+                       $key = array_search( '--' . $option, $_SERVER['argv'] );
+                       if ( $key !== false ) {
+                               unset( $_SERVER['argv'][$key] );
+                               if ( $this->mParams[$option]['withArg'] ) {
+                                       self::$additionalOptions[$option] = $_SERVER['argv'][$key + 1];
+                                       unset( $_SERVER['argv'][$key + 1] );
+                               } else {
+                                       self::$additionalOptions[$option] = true;
+                               }
+                       }
+               }
+
        }
 
        public function getDbType() {
                return Maintenance::DB_ADMIN;
        }
+
+       /**
+        * Force the format of elements in $_SERVER['argv']
+        *  - Split args such as "wiki=enwiki" into two separate arg elements "wiki" and "enwiki"
+        */
+       private function forceFormatServerArgv() {
+               $argv = array();
+               foreach ( $_SERVER['argv'] as $key => $arg ) {
+                       if ( $key === 0 ) {
+                               $argv[0] = $arg;
+                       } elseif ( strstr( $arg, '=' ) ) {
+                               foreach ( explode( '=', $arg, 2 ) as $argPart ) {
+                                       $argv[] = $argPart;
+                               }
+                       } else {
+                               $argv[] = $arg;
+                       }
+               }
+               $_SERVER['argv'] = $argv;
+       }
+
 }
 
 $maintClass = 'PHPUnitMaintClass';
 require RUN_MAINTENANCE_IF_MAIN;
 
-if ( !class_exists( 'PHPUnit_Runner_Version' ) ) {
-       require_once 'PHPUnit/Runner/Version.php';
+// Prevent segfault when we have lots of unit tests (bug 62623)
+if ( version_compare( PHP_VERSION, '5.4.0', '<' ) ) {
+       register_shutdown_function( function () {
+               gc_collect_cycles();
+               gc_disable();
+       } );
 }
 
-if ( PHPUnit_Runner_Version::id() !== '@package_version@'
-       && version_compare( PHPUnit_Runner_Version::id(), '3.7.0', '<' )
-) {
-       die( 'PHPUnit 3.7.0 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
+
+$ok = false;
+
+foreach ( array(
+       stream_resolve_include_path( 'phpunit.phar' ),
+       'PHPUnit/Runner/Version.php',
+       'PHPUnit/Autoload.php'
+) as $includePath ) {
+       @include_once $includePath;
+       if ( class_exists( 'PHPUnit_TextUI_Command' ) ) {
+               $ok = true;
+               break;
+       }
 }
 
-if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
-       require_once 'PHPUnit/Autoload.php';
+if ( !$ok ) {
+       die( "Couldn't find a usable PHPUnit.\n" );
 }
 
-// Prevent segfault when we have lots of unit tests (bug 62623)
-if ( version_compare( PHP_VERSION, '5.4.0', '<' )
-       && version_compare( PHP_VERSION, '5.3.0', '>=' )
-) {
-       register_shutdown_function( function () {
-               gc_collect_cycles();
-               gc_disable();
-       } );
+$puVersion = PHPUnit_Runner_Version::id();
+if ( $puVersion !== '@package_version@' && version_compare( $puVersion, '3.7.0', '<' ) ) {
+       die( "PHPUnit 3.7.0 or later required; you have {$puVersion}.\n" );
 }
 
-MediaWikiPHPUnitCommand::main();
+PHPUnit_TextUI_Command::main();
index 9216ac9..2fd3ce9 100644 (file)
                                '</table>'
                );
                $table.tablesorter();
-               assert.equal( 0,
-                       $table.find( '#A2' ).prop( 'headerIndex' ),
-                       'A2 should be a sort header'
+               assert.equal( $table.find( '#A2' ).prop( 'headerIndex' ),
+                       0,
+                       'A2 should not be a sort header'
                );
-               assert.equal( 1, // should be 2
-                       $table.find( '#C1' ).prop( 'headerIndex' ),
+               assert.equal( $table.find( '#C1' ).prop( 'headerIndex' ),
+                       1,
                        'C1 should be a sort header, but will sort the wrong column'
                );
        } );
                        '</tbody></table>' );
 
                        $table.tablesorter();
-                       assert.equal( 2, $table.find( 'tr:eq(1) th:eq(1)').prop('headerIndex'), 'Incorrect index of sort header' );
+                       assert.equal( $table.find( 'tr:eq(1) th:eq(1)').prop('headerIndex'),
+                               2,
+                               'Incorrect index of sort header' );
                }
        );
 
index bc4b253..afa57ee 100644 (file)
        } );
 
 // Tests that {{-transformation vs. general parsing are done as requested
-       QUnit.test( 'Curly brace transformation', 14, function ( assert ) {
+       QUnit.test( 'Curly brace transformation', 16, function ( assert ) {
                var oldUserLang = mw.config.get( 'wgUserLanguage' );
 
                assertBothModes( assert, ['gender-msg', 'Bob', 'male'], 'Bob: blue', 'gender is resolved' );
                        'Foo <a href="http://example.com">bar</a>',
                        'External link message processed when format is \'parse\''
                );
+               assert.htmlEqual(
+                       formatParse( 'external-link-replace', $( '<i>' ) ),
+                       'Foo <i>bar</i>',
+                       'External link message processed as jQuery object when format is \'parse\''
+               );
+               assert.htmlEqual(
+                       formatParse( 'external-link-replace', function () {} ),
+                       'Foo <a href="#">bar</a>',
+                       'External link message processed as function when format is \'parse\''
+               );
 
                mw.config.set( 'wgUserLanguage', oldUserLang );
        } );
index 4e26bdc..dcab387 100644 (file)
@@ -17,8 +17,7 @@
                        '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',
-                       // Internet Explorer 6+
-                       'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
+                       // 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/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
                        'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
                ],
                // Supported: Uncompatible, serve basic content
-               gradeB: [
-                       // Internet Explorer < 6
+               gradeC: [
+                       // Internet Explorer < 7
                        'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
                        'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
                        '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
                        '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',
                );
        } );
 
-       QUnit.test( 'isCompatible( Grade B )', testcases.gradeB.length, function ( assert ) {
-               $.each( testcases.gradeB, function ( i, ua ) {
+       QUnit.test( 'isCompatible( Grade C )', testcases.gradeC.length, function ( assert ) {
+               $.each( testcases.gradeC, function ( i, ua ) {
                                assert.strictEqual( isCompatible( ua ), false, ua );
                        }
                );
index d53c10c..efaa65b 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -24,7 +24,7 @@
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
 require __DIR__ . '/includes/WebStart.php';
 
-// Don't use fancy mime detection, just check the file extension for jpg/gif/png
+// Don't use fancy MIME detection, just check the file extension for jpg/gif/png
 $wgTrivialMimeDetection = true;
 
 if ( defined( 'THUMB_HANDLER' ) ) {
@@ -573,7 +573,7 @@ function wfExtractThumbParams( $file, $params ) {
                return $params; // valid thumbnail URL (via extension or config)
        }
 
-       // FIXME: Files in the temp zone don't set a mime type, which means
+       // FIXME: Files in the temp zone don't set a MIME type, which means
        // they don't have a handler. Which means we can't parse the param
        // string. However, not a big issue as what good is a param string
        // if you have no handler to make use of the param string and